Below is a script I wrote that patches in support for the Sun WorkShop
5.0 compiler
on the Xerces-C 1.1.0 source tree.

This script does the following:
       Removes NO_NATIVE_BOOL.  (Sun WorkShop 5.0 now has native bool
support.)
       Makes various changes to support the external template instance
placement and linkage method.
       Removes -lC parameter to the linker. Explicitly specifying it
confuses WorkShop.
       Adds -mt as a parameter  to the compiler and linker when
compiling the samples. This is already set up correctly
       in the src directory.

In order to support the external template instance method, Makefile.incl
had to be changed.
Make now directs the compiler to output its object files to
$XERCESCROOT/obj
rather than creating them in the current directory followed by a copy to
$XERCESCROOT/obj.
This is needed to ensure that the template repository is created
properly.

Note: Because object files are directly compiled into $XERCESCROOT you
will see
the following sorts of error messages during the make:
cp: cannot access BinFileInputStream.o
cp: cannot access BinInputStream.o
cp: cannot access BinMemInputStream.o
.
.
.
They can be safely ignored.

I would be willing to be spend some more time to get Xerces-C compiling
out of the box
under the Sun WorkShop 5.0 compiler.


Any questions,
-Eric Yankowitz
[EMAIL PROTECTED]

To run the script modify the "export SRCROOT=....." and  "export
PACKAGE=......"
lines WITHIN the script and ensure that your path points to gnu make,
gnu autoconf,
and gnu m4 ahead of any other versions.


#! /bin/ksh

export SRCROOT=/home/statemnt/libs/xerces
export PACKAGE=/home/statemnt/pack/cpp/xml/xerces-csrc_1_1_0_d05.tar.gz

export XERCESCROOT=$SRCROOT/xerces-csrc_1_1_0_d05
cd $SRCROOT

echo "Attempting to remove any previous installations @ $XERCESCROOT"
echo

rm -rf $XERCESCROOT

echo "Unpacking $PACKAGE"
echo
gzip -dc $PACKAGE | tar xvf -

cd $XERCESCROOT/src
echo "Running: autoconf"
echo
autoconf

echo "Configuring the source tree"
echo
./runConfigure -psolaris -ccc -xCC -d -nfileonly -rpthread

echo "Patching up files for WorkShop Compilers 5.0 98/12/15 C++ 5.0"
echo

echo "Sun WorkShop 5.0 Compiler supports native bools."
echo "Removing NO_NATIVE_BOOL define."
echo
mv util/Compilers/SunCCDefs.hpp util/Compilers/SunCCDefs.hpp.orig
sed -e "s/^#define NO_NATIVE_BOOL$//" util/Compilers/SunCCDefs.hpp.orig
>
util/Compilers/SunCCDefs.hpp

echo "External template instance placement and linkage is prefered, so I
am"
echo "defining XML4C_TMPLSINC."
echo
echo "#define XML4C_TMPLSINC" >> util/Compilers/SunCCDefs.hpp


echo "Patching Makefile.incl for external template instance support."
echo "To ensure creating a correct template repository, Object files"
echo "will now be directly outputed to $XERCESCROOT/obj."
echo "Also, The -lC option is redundant and causes problems, so I am
removing it."
echo
mv Makefile.incl Makefile.incl.orig
sed -e "186s/-lC -lc//" -e "189s/-lC -lc//" \
    -e "180s/-instances=static//" \
    -e  "424s/[EMAIL PROTECTED]/$\(ALL_OBJECTS_DIR\)\/$\(@F\)/" \
    -e  "430s/[EMAIL PROTECTED]/$\(ALL_OBJECTS_DIR\)\/$\(@F\)/" \
    -e  "432s/[EMAIL PROTECTED]/$\(ALL_OBJECTS_DIR\)\/$\(@F\)/" \
    Makefile.incl.orig > Makefile.incl

make

cd ../samples
echo "Removing -lC from the samples/runConfigure"
echo
mv ./runConfigure ./runConfigure.orig
sed -e"247d" ./runConfigure.orig > ./runConfigure
chmod +x ./runConfigure

echo "Setting/Removing the following in samples/Makefile.incl:"
echo "  Removing -lC"
echo "  Setting external template instances"
echo "  Setting multi-threading"
echo
mv Makefile.incl Makefile.incl.orig
sed -e "129s/-lC -lc//" \
    -e "126s/-instances=static//" \
    -e "126,127s/$/ -mt/" \
 Makefile.incl.orig > Makefile.incl

./runConfigure -psolaris -ccc -xCC -d

make

Reply via email to