Newer
Older
push(@INC, "/home/xml4c/bin", "/home/xml4c/bin/perl/perl-RUN/opt/perl5/lib", "/Development2/cupert/bin/perl/perl-RUN/opt/perl5/lib", "/Development/cupert/usr/local/perl/perl-RUN/opt/perl5/lib");
$|=1; # Force a flush after every print
# Extract the source and target directories
&Getopt('sopcxmntr');
$targetdir = $opt_o;
# Check for the environment variables and exit if error
if (!length($XERCESCROOT) || !length($targetdir) || (length($opt_h) > 0) ) {
print ("Usage is: packageBinaries <options>\n");
print (" where options are:\n");
print (" -s <source_directory>\n");
print (" -o <target_directory>\n");
print (" -c <C compiler name> (e.g. gcc, cc or xlc_r)\n");
print (" -x <C++ compiler name> (e.g. g++, CC, aCC, c++ or xlC_r)\n");
print (" -m <message loader> can be 'inmem' \(default\), 'icu' or 'iconv'\n");
print (" -n <net accessor> can be 'fileonly' or 'socket' \(default\)\n");
print (" -t <transcoder> can be 'icu' or 'native' \(default\)\n");
print (" -r <thread option> can be 'pthread' \(default\)or 'dce' (only used on HP-11)\n");
print (" -h to get help on these commands\n\n");
print ("Example: Under unix's\n");
print (" perl packageBinaries.pl -s \$HOME/xerces-c-src_1_2_0");
print (" -o \$HOME/xerces-c_1_2_0-linux -c gcc -x g++ -m inmem -n fileonly -t native\n\n");
print ("Example: Under Windows\n");
print (" perl packageBinaries.pl -s \\xerces-c-src_1_2_0");
print (" -o\\xerces-c_1_2_0-win32 [-n fileonly] [-t icu]\n\n");
print ("Note:\n");
print (" Under Windows, by default the XercesLib project files is\n");
print (" configured to use Win32 resource file based message loader,\n");
print (" WinSocket based net accessor and native Win32 based transcoder.\n");
print (" The two options mentioned in the example above are the only\n");
print (" options relevant under Windows on the command line for this script.\n");
exit(-1);
# As of Version 3, ICU is not a required component of XERCES-C
print "You have not defined your ICU install directory.\n";
print "To build with ICU, you must set an environment variable called ICUROOT\n";
print "Proceeding to build XERCES-C without ICU...\n";
print ("The directory $XERCESCROOT does not exist. Cannot proceed any further.\n");
exit(-1);
}
# Check if the target directory exists, exit if it does
if (-e $targetdir) {
print ("Error: The target directory \'$targetdir\' already exists.\n");
print (" You must start with a clean directory to package your product.\n");
exit(1);
$ICUROOT =~ s/\\/\//g;
$targetdir =~ s/\\/\//g;
# Find out the platform from 'uname -a'
open(PLATFORM, "uname -s|");
$platform = <PLATFORM>;
chomp($platform);
close (PLATFORM);
print "Packaging binaries for \`" . $platform . "\` in " . $targetdir . " ...\n";
#Construct the name of the zip file by extracting the last directory name
$zipfiles = $targetdir;
$zipfiles =~ s/.*\/([\w|-]*)$/$1/g;
$zipfiles = $zipfiles . "/*";
$buildmode = "Release"; # Universally, why do you want to package Debug builds anyway?
if ($platform =~ m/Windows/ || $platform =~ m/CYGWIN/) {
$platformname = 'Win32'; # Needed this way by nmake
if (-e $targetdir.".zip") {
print ("Error: The target file \'$targetdir.zip\' already exists.\n");
print (" You must delete the file \'$targetdir.zip\' to package your product.\n");
exit(1);
}
# Make the target directory and its main subdirectories
mkdir ($targetdir, "0644");
mkdir ($targetdir . "/bin", "0644");
mkdir ($targetdir . "/lib", "0644");
mkdir ($targetdir . "/include", "0644");
mkdir ($targetdir . "/samples", "0644");
mkdir ($targetdir . "/samples/Projects", "0644");
mkdir ($targetdir . "/samples/Projects/Win32", "0644");
mkdir ($targetdir . "/samples/data", "0644");
mkdir ($targetdir . "/samples/SAXCount", "0644");
mkdir ($targetdir . "/samples/SAX2Count", "0644");
mkdir ($targetdir . "/samples/SAXPrint", "0644");
mkdir ($targetdir . "/samples/DOMCount", "0644");
mkdir ($targetdir . "/samples/DOMPrint", "0644");
mkdir ($targetdir . "/samples/Redirect", "0644");
mkdir ($targetdir . "/samples/MemParse", "0644");
mkdir ($targetdir . "/samples/PParse", "0644");
mkdir ($targetdir . "/samples/StdInParse", "0644");
mkdir ($targetdir . "/samples/EnumVal", "0644");
mkdir ($targetdir . "/samples/CreateDOMDocument", "0644");
mkdir ($targetdir . "/doc", "0644");
mkdir ($targetdir . "/doc/html", "0644");
mkdir ($targetdir . "/doc/html/apiDocs", "0644");
# If 'FileOnly' NetAccessor has been specified, then the project files have to be
# changed.
changeWindowsProjectForFileOnlyNA("$XERCESCROOT/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp");
}
if ($opt_t =~ m/icu/i && length($ICUROOT) > 0) {
print ("Building ICU from $ICUROOT ...\n");
#Clean up all the dependency files, causes problems for nmake
chdir ("$ICUROOT");
system ("del /s /f *.dep *.ncb *.plg *.opt");
# Make the icu dlls
chdir ("$ICUROOT/source/allinone");
print "Executing: msdev allinone.dsw /MAKE \"all - $platformname $buildmode\" /REBUILD inside $ICUROOT/source/allinone";
#For nt we ship both debug and release dlls
system("msdev allinone.dsw /MAKE \"all - $platformname Release\" /REBUILD");
system("msdev allinone.dsw /MAKE \"all - $platformname Debug\" /REBUILD");
change_windows_project_for_ICU("$XERCESCROOT/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp");
# Clean up all the dependency files, causes problems for nmake
# Also clean up all MSVC-generated project files that just cache the IDE state
chdir ("$XERCESCROOT");
system ("del /s /f *.dep *.ncb *.plg *.opt");
# Make all files in the Xerces-C system including libraries, samples and tests
chdir ("$XERCESCROOT/Projects/Win32/VC6/xerces-all");
$cmd = "msdev xerces-all.dsw /MAKE \"all - $platformname $buildmode\" /REBUILD";
print "$cmd\n";
system($cmd);
# Build the debug xerces dll. Both debug and release DLLs
# are in the standard binary distribution of Xerces.
if ($buildmode ne "Debug") {
$cmd = "msdev xerces-all.dsw /MAKE \"XercesLib - $platformname Debug\" /REBUILD";
print "$cmd\n";
system($cmd);
}
# Decide where you want the build copied from
chdir ($targetdir);
$BUILDDIR = $XERCESCROOT . "/Build/Win32/VC6/" . $buildmode;
print "\nBuild is being copied from \'" . $BUILDDIR . "\'";
# Populate the include output directory
print ("\n\nCopying headers files ...\n");
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
framework
dom
internal
parsers
util
util/Compilers
util/MsgLoaders
util/MsgLoaders/ICU
util/MsgLoaders/InMemory
util/MsgLoaders/MsgCatalog
util/MsgLoaders/Win32
util/Platforms
util/Platforms/AIX
util/Platforms/HPUX
util/Platforms/Linux
util/Platforms/MacOS
util/Platforms/OS2
util/Platforms/OS390
util/Platforms/PTX
util/Platforms/Solaris
util/Platforms/Tandem
util/Platforms/Win32
util/Transcoders
util/Transcoders/ICU
util/Transcoders/Iconv
util/Transcoders/Win32
validators
validators/DTD';
foreach $dir (@headerDirectories) {
$inclDir = "include/$dir";
if (! (-e $inclDir)) {
mkdir($inclDir, "0644");
}
$srcDir = "$XERCESCROOT/src/$dir";
# Weed out directories that have no files to copy, to avoid a bunch of
# warnings from the cp command in the build output.
opendir(dir, $srcDir);
@allfiles = readdir(dir);
closedir(dir);
foreach $fileKind ("hpp", "c") {
$matches = grep(/\.$fileKind$/, @allfiles);
if ($matches > 0) {
$cmd = "cp -f $srcDir/*.$fileKind $targetdir/$inclDir";
print ($cmd . "\n");
system($cmd);
}
}
}
#
# Remove internal implementation headers from the DOM include directory.
#
Unknown (aruna1)
committed
system ("rm $targetdir/include/dom/*Impl.hpp");
system ("rm $targetdir/include/dom/DS*.hpp");
system("cp -Rfv $ICUROOT/include/* $targetdir/include");
# Populate the binary output directory
print ("\n\nCopying binary outputs ...\n");
system("cp -fv $BUILDDIR/*.dll $targetdir/bin");
system("cp -fv $BUILDDIR/*.exe $targetdir/bin");
if ($opt_t =~ m/icu/i && length($ICUROOT) > 0) {
# Copy the ICU dlls
system("cp -fv $ICUROOT/bin/$buildmode/icuuc.dll $targetdir/bin");
system("cp -fv $ICUROOT/data/icudata.dll $targetdir/bin");
# Copy the ICU libs
system("cp -fv $ICUROOT/lib/$buildmode/icuuc.lib $targetdir/lib");
system("cp -fv $ICUROOT/data/icudata.lib $targetdir/lib");
}
system("cp -fv $BUILDDIR/xerces-c_*.lib $targetdir/lib");
if ($buildmode ne "Debug") {
$DEBUGBUILDDIR = "$XERCESCROOT/Build/Win32/VC6/Debug";
system("cp -fv $DEBUGBUILDDIR/xerces-c_*D.lib $targetdir/lib");
system("cp -fv $DEBUGBUILDDIR/xerces*D.dll $targetdir/bin");
# Populate the samples directory
print ("\n\nCopying sample files ...\n");
system("cp $XERCESCROOT/version.incl $targetdir");
system("cp -Rfv $XERCESCROOT/samples/Projects/* $targetdir/samples/Projects");
system("cp -Rfv $XERCESCROOT/samples/SAXCount/* $targetdir/samples/SAXCount");
system("rm -f $targetdir/samples/SAXCount/Makefile");
system("cp -Rfv $XERCESCROOT/samples/SAX2Count/* $targetdir/samples/SAX2Count");
system("rm -f $targetdir/samples/SAX2Count/Makefile");
system("cp -Rfv $XERCESCROOT/samples/SAXPrint/* $targetdir/samples/SAXPrint");
system("rm -f $targetdir/samples/SAXPrint/Makefile");
system("cp -Rfv $XERCESCROOT/samples/SAX2Print/* $targetdir/samples/SAX2Print");
system("rm -f $targetdir/samples/SAX2Print/Makefile");
system("cp -Rfv $XERCESCROOT/samples/DOMCount/* $targetdir/samples/DOMCount");
system("rm -f $targetdir/samples/DOMCount/Makefile");
system("cp -Rfv $XERCESCROOT/samples/DOMPrint/* $targetdir/samples/DOMPrint");
system("rm -f $targetdir/samples/DOMPrint/Makefile");
system("cp -Rfv $XERCESCROOT/samples/Redirect/* $targetdir/samples/Redirect");
system("rm -f $targetdir/samples/Redirect/Makefile");
system("cp -Rfv $XERCESCROOT/samples/MemParse/* $targetdir/samples/MemParse");
system("rm -f $targetdir/samples/MemParse/Makefile");
system("cp -Rfv $XERCESCROOT/samples/PParse/* $targetdir/samples/PParse");
system("rm -f $targetdir/samples/PParse/Makefile");
system("cp -Rfv $XERCESCROOT/samples/StdInParse/* $targetdir/samples/StdInParse");
system("rm -f $targetdir/samples/StdInParse/Makefile");
system("cp -Rfv $XERCESCROOT/samples/EnumVal/* $targetdir/samples/EnumVal");
system("rm -f $targetdir/samples/EnumVal/Makefile");
system("cp -Rfv $XERCESCROOT/samples/CreateDOMDocument/* $targetdir/samples/CreateDOMDocument");
system("rm -f $targetdir/samples/CreateDOMDocument/Makefile");
system("cp -Rfv $XERCESCROOT/samples/data/* $targetdir/samples/data");
# Populate the docs directory
print ("\n\nCopying documentation ...\n");
system("cp -Rfv $XERCESCROOT/doc/* $targetdir/doc");
system("cp $XERCESCROOT/Readme.html $targetdir");
system("cp $XERCESCROOT/LICENSE.txt $targetdir");
system("cp $XERCESCROOT/license.html $targetdir");
system("cp $XERCESCROOT/license-IBM-public-source.html $targetdir");
system("rm -f $targetdir/doc/Doxyfile");
system("rm -rf $targetdir/doc/dtd");
system("rm -f $targetdir/doc/*.xml");
system("rm -f $targetdir/doc/*.ent");
system("rm -f $targetdir/doc/*.gif");
# Now package it all up using ZIP
chdir ("$targetdir/..");
print ("\n\nZIPping up all files ...\n");
$zipname = $targetdir . ".zip";
print ("zip -r $zipname $zipfiles");
system ("zip -r $zipname $zipfiles");
if ( ($platform =~ m/AIX/i) || ($platform =~ m/HP-UX/i) ||
($platform =~ m/SunOS/i) || ($platform =~ m/Linux/i) || ($platform =~ m/ptx/i) ) {
# Decide on the platform specific stuff first
if ($platform =~ m/AIX/i) {
$icuCompileFlags = 'CXX="xlC_r -L/usr/lpp/xlC/lib" CC="xlc_r -L/usr/lpp/xlC/lib" C_FLAGS="-w -O" CXX_FLAGS="-w -O"';
}
if ($platform eq 'HP-UX') {
if ($opt_x eq 'CC') {
$icuCompileFlags = 'CC=cc CXX=CC CXXFLAGS="+eh +DAportable -w -O" CFLAGS="+DAportable -w -O"';
$icuCompileFlags = 'CC=cc CXX=aCC CXXFLAGS="+DAportable -w -O" CFLAGS="+DAportable -w -O"';
}
# Find out the operating system version from 'uname -r'
open(OSVERSION, "uname -r|");
$osversion = <OSVERSION>;
chomp($osversion);
close (OSVERSION);
$platform = 'hp-11' if ($osversion =~ m/11\./);
$platform = 'hp-10' if ($osversion =~ m/10\./);
$opt_r = 'dce' if ($opt_r eq ''); # By default, use dce threads if not specified
}
if ($platform =~ m/Linux/i) {
$icuCompileFlags = 'CC=gcc CXX=g++ CXXFLAGS="-w -O" CFLAGS="-w -O"';
$platform =~ tr/A-Z/a-z/;
}
if ($platform =~ m/SunOS/i) {
$icuCompileFlags = 'CC=cc CXX=CC CXXFLAGS="-w -O" CFLAGS="-w -O"';
}
if ($platform =~ m/ptx/i) {
# Check if the patches have been applied or not
if (!(-d "$XERCESCROOT/src/util/Platforms/PTX")) {
print ("Error: Could not locate PTX-specific XML4C directory.\n");
print (" The PTX-specific patches must be applied to both XML4C and ICU before a build can succeed.\n");
exit(-1);
# Generally speaking, ICU must be built, before XML4C can be built, for ptx.
# If this case causes problems, we can revisit it in the future. Right now,
# we fail only if ICUROOT is defined but mh-ptx is not present.
if (length($ICUROOT)) {
if (!(-e "$ICUROOT/source/config/mh-ptx")) {
print ("Error: Could not locate PTX-specific ICU files.\n");
print (" The PTX-specific patches must be applied to both XML4C and ICU before a build can succeed.\n");
exit(-1);
$icuCompileFlags = 'CC=cc CXX=c++ CXXFLAGS="-w -0" CFLAGS="-w -0"';
# XMLINSTALL is a ptx-port-specific variable used for manipulating where the files are installed.
if (!length($ENV{'XMLINSTALL'})) {
print ("XMLINSTALL has not been explicitly defined. Setting it to \'$targetdir\'.\n");
$ENV{'XMLINSTALL'} = $targetdir;
$XMLINSTALL = $ENV{'XMLINSTALL'};
}
# Check if the target directories already exist or not
if (-e $targetdir.".tar") {
print ("Error: The target file \'$targetdir.tar\' already exists.\n");
print (" You must delete the file \'$targetdir.tar\' to package your product.\n");
exit(1);
}
if (-e $srctargetdir.".tar") {
print ("Error: The target file \'$srctargetdir.tar\' already exists.\n");
print (" You must delete the file \'$srctargetdir.tar\' to package your product.\n");
exit(1);
}
$platform =~ tr/A-Z/a-z/;
# Make the target directory and its main subdirectories
system ("mkdir $targetdir");
system ("mkdir $targetdir/bin");
system ("mkdir $targetdir/lib");
system ("mkdir $targetdir/include");
if (length($ICUROOT) > 0) {
system ("mkdir $targetdir/include/unicode");
}
system ("mkdir $targetdir/include/sax");
system ("mkdir $targetdir/include/framework");
system ("mkdir $targetdir/include/internal");
system ("mkdir $targetdir/include/parsers");
system ("mkdir $targetdir/include/util");
system ("mkdir $targetdir/include/util/Compilers");
system ("mkdir $targetdir/include/util/MsgLoaders");
system ("mkdir $targetdir/include/util/MsgLoaders/ICU");
system ("mkdir $targetdir/include/util/MsgLoaders/InMemory");
system ("mkdir $targetdir/include/util/MsgLoaders/MsgCatalog");
system ("mkdir $targetdir/include/util/MsgLoaders/Win32");
system ("mkdir $targetdir/include/util/Platforms");
system ("mkdir $targetdir/include/util/Platforms/AIX");
system ("mkdir $targetdir/include/util/Platforms/HPUX");
system ("mkdir $targetdir/include/util/Platforms/Linux");
system ("mkdir $targetdir/include/util/Platforms/MacOS");
system ("mkdir $targetdir/include/util/Platforms/OS2");
system ("mkdir $targetdir/include/util/Platforms/OS390");
system ("mkdir $targetdir/include/util/Platforms/PTX");
system ("mkdir $targetdir/include/util/Platforms/Solaris");
system ("mkdir $targetdir/include/util/Platforms/Tandem");
system ("mkdir $targetdir/include/util/Platforms/Win32");
system ("mkdir $targetdir/include/util/Transcoders");
system ("mkdir $targetdir/include/util/Transcoders/ICU");
system ("mkdir $targetdir/include/util/Transcoders/Iconv");
system ("mkdir $targetdir/include/util/Transcoders/Win32");
system ("mkdir $targetdir/include/dom");
system ("mkdir $targetdir/include/validators");
system ("mkdir $targetdir/include/validators/DTD");
system ("mkdir $targetdir/samples");
system ("mkdir $targetdir/samples/data");
system ("mkdir $targetdir/samples/SAXCount");
system ("mkdir $targetdir/samples/SAX2Count");
system ("mkdir $targetdir/samples/SAXPrint");
system ("mkdir $targetdir/samples/DOMCount");
system ("mkdir $targetdir/samples/DOMPrint");
system ("mkdir $targetdir/samples/Redirect");
system ("mkdir $targetdir/samples/MemParse");
system ("mkdir $targetdir/samples/PParse");
system ("mkdir $targetdir/samples/StdInParse");
system ("mkdir $targetdir/samples/EnumVal");
system ("mkdir $targetdir/samples/CreateDOMDocument");
system ("mkdir $targetdir/doc");
system ("mkdir $targetdir/doc/html");
system ("mkdir $targetdir/doc/html/apiDocs");
# Build ICU if needed
if (length($ICUROOT) > 0) {
# First make the ICU files
chdir ("$ICUROOT/source");
system ("chmod 777 configure");
system ("chmod 777 install-sh");
if ($platform =~ m/ptx/i) {
system ("chmod 777 runConfigureICU");
system ("runConfigureICU PTX");
} else {
print ("$icuCompileFlags configure --prefix=$ICUROOT\n");
system ("$icuCompileFlags configure --prefix=$ICUROOT");
}
system ("gmake clean"); # Clean up the build, may want to comment this line out!
system ("rm -f $ICUROOT/data/*.o"); # gmake clean is not enough
system ("rm -f $ICUROOT/data/*.c"); # same for .c files
system ("gmake"); # This will take a long time!
system ("gmake install"); # Make this separate since this breaks on Solaris
# Please check if the following needs any change in Version 1.4
# For the antiquated CC compiler under HPUX, we need to invoke
# gmake one extra time to generate the .cnv files.
# if ( ($platform =~ m/hp-/i) && ($opt_x eq 'CC') ) {
# system ("gmake");
# }
}
# For ptx, ICUROOT must now be set to XMLINSTALL for further work.
if ($platform =~ m/ptx/i) {
$ENV{'ICUROOT'} = $ENV{'XMLINSTALL'};
}
# make the source files
chdir ("$XERCESCROOT/src");
$platform = "solaris";
}
$platform = "aix";
}
if ( $platform =~ m/ptx/i ) {
$platform = "ptx";
}
system ("chmod +x run* con* install-sh");
if (length($opt_r) > 0) {
system ("runConfigure -p$platform -c$opt_c -x$opt_x -m$opt_m -n$opt_n -t$opt_t -r$opt_r");
system ("runConfigure -p$platform -c$opt_c -x$opt_x -m$opt_m -n$opt_n -t$opt_t");
}
system ("gmake clean"); # May want to comment this line out to speed up
system ("gmake");
# Now build the samples
chdir ("$XERCESCROOT/samples");
system ("runConfigure -p$platform -c$opt_c -x$opt_x");
system ("gmake clean"); # May want to comment this line out to speed up
system ("gmake");
# Next build the tests
chdir ("$XERCESCROOT/tests");
system ("runConfigure -p$platform -c$opt_c -x$opt_x");
system ("gmake clean"); # May want to comment this line out to speed up
system ("gmake");
chdir ($targetdir);
# Populate the include output directory
print ("\n\nCopying headers files ...\n");
system("cp -Rf $XERCESCROOT/src/sax/*.hpp $targetdir/include/sax");
system("cp -Rf $XERCESCROOT/src/sax2/*.hpp $targetdir/include/sax2");
system("cp -Rf $XERCESCROOT/src/framework/*.hpp $targetdir/include/framework");
system("cp -Rf $XERCESCROOT/src/dom/D*.hpp $targetdir/include/dom");
system("cp -Rf $XERCESCROOT/version.incl $targetdir");
Unknown (aruna1)
committed
system("rm -f $targetdir/include/dom/*Impl.hpp");
system("rm -f $targetdir/include/dom/DS*.hpp");
system("cp -Rf $XERCESCROOT/src/internal/*.hpp $targetdir/include/internal");
system("cp -Rf $XERCESCROOT/src/internal/*.c $targetdir/include/internal");
system("cp -Rf $XERCESCROOT/src/parsers/*.hpp $targetdir/include/parsers");
system("cp -Rf $XERCESCROOT/src/parsers/*.c $targetdir/include/parsers");
system("cp -Rf $XERCESCROOT/src/util/*.hpp $targetdir/include/util");
system("cp -Rf $XERCESCROOT/src/util/*.c $targetdir/include/util");
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
system("cp -Rf $XERCESCROOT/src/util/Compilers/*.hpp $targetdir/include/util/Compilers");
system("cp -Rf $XERCESCROOT/src/util/MsgLoaders/*.hpp $targetdir/include/util/MsgLoaders");
system("cp -Rf $XERCESCROOT/src/util/MsgLoaders/ICU/*.hpp $targetdir/include/util/MsgLoaders/ICU");
system("cp -Rf $XERCESCROOT/src/util/MsgLoaders/InMemory/*.hpp $targetdir/include/util/MsgLoaders/InMemory");
system("cp -Rf $XERCESCROOT/src/util/MsgLoaders/MsgCatalog/*.hpp $targetdir/include/util/MsgLoaders/MsgCatalog");
system("cp -Rf $XERCESCROOT/src/util/MsgLoaders/Win32/*.hpp $targetdir/include/util/MsgLoaders/Win32");
system("cp -Rf $XERCESCROOT/src/util/Platforms/*.hpp $targetdir/include/util/Platforms");
system("cp -Rf $XERCESCROOT/src/util/Platforms/AIX/*.hpp $targetdir/include/util/Platforms/AIX");
system("cp -Rf $XERCESCROOT/src/util/Platforms/HPUX/*.hpp $targetdir/include/util/Platforms/HPUX");
system("cp -Rf $XERCESCROOT/src/util/Platforms/Linux/*.hpp $targetdir/include/util/Platforms/Linux");
system("cp -Rf $XERCESCROOT/src/util/Platforms/MacOS/*.hpp $targetdir/include/util/Platforms/MacOS");
system("cp -Rf $XERCESCROOT/src/util/Platforms/OS2/*.hpp $targetdir/include/util/Platforms/OS2");
system("cp -Rf $XERCESCROOT/src/util/Platforms/OS390/*.hpp $targetdir/include/util/Platforms/OS390");
system("cp -Rf $XERCESCROOT/src/util/Platforms/PTX/*.hpp $targetdir/include/util/Platforms/PTX");
system("cp -Rf $XERCESCROOT/src/util/Platforms/Solaris/*.hpp $targetdir/include/util/Platforms/Solaris");
system("cp -Rf $XERCESCROOT/src/util/Platforms/Tandem/*.hpp $targetdir/include/util/Platforms/Tandem");
system("cp -Rf $XERCESCROOT/src/util/Platforms/Win32/*.hpp $targetdir/include/util/Platforms/Win32");
system("cp -Rf $XERCESCROOT/src/util/Transcoders/*.hpp $targetdir/include/util/Transcoders");
system("cp -Rf $XERCESCROOT/src/util/Transcoders/ICU/*.hpp $targetdir/include/util/Transcoders/ICU");
system("cp -Rf $XERCESCROOT/src/util/Transcoders/Iconv/*.hpp $targetdir/include/util/Transcoders/Iconv");
system("cp -Rf $XERCESCROOT/src/util/Transcoders/Win32/*.hpp $targetdir/include/util/Transcoders/Win32");
system("cp -Rf $XERCESCROOT/src/validators/DTD/*.hpp $targetdir/include/validators/DTD");
if (length($ICUROOT) > 0) {
print "\nICU files are being copied from \'" . $ICUROOT . "\'";
system("cp -Rf $ICUROOT/include/* $targetdir/include");
}
# Populate the binary output directory
print ("\n\nCopying binary outputs ...\n");
system("cp -Rf $XERCESCROOT/bin/* $targetdir/bin");
if (length($ICUROOT) > 0) {
system("cp -f $ICUROOT/lib/libicu-uc.* $targetdir/lib");
system("cp -f $ICUROOT/data/libicudata.* $targetdir/lib");
}
system("cp -f $XERCESCROOT/lib/*.a $targetdir/lib");
system("cp -f $XERCESCROOT/lib/*.so $targetdir/lib");
system("cp -f $XERCESCROOT/lib/*.sl $targetdir/lib");
system("rm -rf $targetdir/bin/obj");
# Populate the samples directory
print ("\n\nCopying sample files ...\n");
foreach $iii ('config.guess', 'config.h.in', 'config.sub', 'configure', 'configure.in',
'install-sh', 'runConfigure', 'Makefile.in', 'Makefile.incl', 'Makefile') {
system("cp -f $XERCESCROOT/samples/$iii $targetdir/samples");
}
system("cp -Rf $XERCESCROOT/samples/data/* $targetdir/samples/data");
system("cp -Rf $XERCESCROOT/samples/SAXCount/* $targetdir/samples/SAXCount");
system("rm -f $targetdir/samples/SAXCount/Makefile");
system("cp -Rf $XERCESCROOT/samples/SAX2Count/* $targetdir/samples/SAX2Count");
system("rm -f $targetdir/samples/SAX2Count/Makefile");
system("cp -Rf $XERCESCROOT/samples/SAXPrint/* $targetdir/samples/SAXPrint");
system("rm -f $targetdir/samples/SAXPrint/Makefile");
system("cp -Rf $XERCESCROOT/samples/SAX2Print/* $targetdir/samples/SAX2Print");
system("rm -f $targetdir/samples/SAX2Print/Makefile");
system("cp -Rf $XERCESCROOT/samples/DOMCount/* $targetdir/samples/DOMCount");
system("rm -f $targetdir/samples/DOMCount/Makefile");
system("cp -Rf $XERCESCROOT/samples/DOMPrint/* $targetdir/samples/DOMPrint");
system("rm -f $targetdir/samples/DOMPrint/Makefile");
system("cp -Rf $XERCESCROOT/samples/Redirect/* $targetdir/samples/Redirect");
system("rm -f $targetdir/samples/Redirect/Makefile");
system("cp -Rf $XERCESCROOT/samples/MemParse/* $targetdir/samples/MemParse");
system("rm -f $targetdir/samples/MemParse/Makefile");
system("cp -Rf $XERCESCROOT/samples/PParse/* $targetdir/samples/PParse");
system("rm -f $targetdir/samples/PParse/Makefile");
system("cp -Rf $XERCESCROOT/samples/StdInParse/* $targetdir/samples/StdInParse");
system("rm -f $targetdir/samples/StdInParse/Makefile");
system("cp -Rf $XERCESCROOT/samples/EnumVal/* $targetdir/samples/EnumVal");
system("rm -f $targetdir/samples/EnumVal/Makefile");
system("cp -Rf $XERCESCROOT/samples/CreateDOMDocument/* $targetdir/samples/CreateDOMDocument");
system("rm -f $targetdir/samples/CreateDOMDocument/Makefile");
system("rm -f $targetdir/samples/Makefile");
print ("\n\nCopying documentation ...\n");
system("cp -Rf $XERCESCROOT/doc/* $targetdir/doc");
system("cp $XERCESCROOT/Readme.html $targetdir");
system("cp $XERCESCROOT/LICENSE.txt $targetdir");
system("cp $XERCESCROOT/license.html $targetdir");
system("cp $XERCESCROOT/license-IBM-public-source.html $targetdir");
system("rm -f $targetdir/doc/Doxyfile");
system("rm -rf $targetdir/doc/dtd");
system("rm -f $targetdir/doc/*.xml");
system("rm -f $targetdir/doc/*.ent");
system("rm -f $targetdir/doc/*.gif");
# Change the directory permissions
system ("chmod 644 `find $targetdir -type f`");
system ("chmod 755 $targetdir/bin/* $targetdir/lib/*.sl $targetdir/lib/*.so $targetdir/lib/*.a");
system ("chmod +x $targetdir/samples/runConfigure $targetdir/samples/configure $targetdir/samples/install-sh");
system ("chmod +x $targetdir/samples/config.sub $targetdir/samples/config.guess $targetdir/samples/config.status");
system ("chmod 755 `find $targetdir -type d`");
# Now package it all up using tar
print ("\n\nTARing up all files ...\n");
chdir ("$targetdir/..");
$zipname = $targetdir . ".tar";
$platformzipname = $zipname;
print ("tar -cvf $platformzipname $zipfiles\n");
system ("tar -cvf $platformzipname $zipfiles");
# Finally compress the files
print ("Compressing $platformzipname ...\n");
system ("gzip $platformzipname");
my ($thefile) = @_;
print "\nConverting Windows Xerces library project ($thefile) for ICU usage...";
my $thefiledotbak = $thefile . ".bak";
rename ($thefile, $thefiledotbak);
open (FIZZLE, $thefiledotbak);
open (FIZZLEOUT, ">$thefile");
while ($line = <FIZZLE>) {
$line =~ s/\/D "PROJ_XMLPARSER"/\/I \"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\include" \/D "PROJ_XMLPARSER"/g;
$line =~ s/XML_USE_WIN32_TRANSCODER/XML_USE_ICU_TRANSCODER/g;
$line =~ s/Debug\/xerces-c_1D.lib"/Debug\/xerces-c_1D.lib" \/libpath:"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\lib\\Debug" \/libpath:"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\data"/g;
$line =~ s/Release\/xerces-c_1.lib"/Release\/xerces-c_1.lib" \/libpath:"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\lib\\Release" \/libpath:"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\data"/g;
$line =~ s/user32\.lib/user32\.lib icuuc\.lib icudata\.lib/g;
$line =~ s/Transcoders\\Win32\\Win32TransService\.cpp/Transcoders\\ICU\\ICUTransService\.cpp/g;
$line =~ s/Transcoders\\Win32\\Win32TransService\.hpp/Transcoders\\ICU\\ICUTransService\.hpp/g;
print FIZZLEOUT $line;
}
close (FIZZLEOUT);
close (FIZZLE);
unlink ($thefiledotbak);
#
# This subroutine is used to munge the XercesLib project file to remove all
# traces of WinSock based NetAccessor. Once no NetAccessor is specified, the
# project file is configured for using the 'FileOnly' NetAccessor.
#
# For this function to work the assumption is that project file in CMVC is
# preconfigured to already use the WinSock based NetAccessor. So, the changes
# that need to be done are:
# - to remove references to any #defines
# - to remove references to wsock32.lib
# - to remove references to the source files for the WinSock based NetAccessor.
#
my ($thefile) = @_;
print "\nConfiguring Xerces library project ($thefile) for FileOnly NetAccessor...";
my $thefiledotbak = $thefile . ".bak";
rename ($thefile, $thefiledotbak);
open (PROJFILEIN, $thefiledotbak);
open (PROJFILEOUT, ">$thefile");
while ($aline = <PROJFILEIN>) {
# By skipping over lines between the NetAccessors group
# we can references to the WinSock based NetAccessor files.
if ($aline =~ m/^# Begin Group \"NetAccessors\"/g) {
# ...found it. Write out the line as a place holder. Also...
print PROJFILEOUT $aline;
# ...preserve the next two lines.
$aline = <PROJFILEIN>;
print PROJFILEOUT $aline;
$aline = <PROJFILEIN>;
print PROJFILEOUT $aline;
# Skip over the lines till you hit the WinSock NetAccessor 'End Group'.
while ($aline = <PROJFILEIN>) { # read the next line
last if ($aline =~ m/^# End Group/g);
}
# We need to preserve the 'End Group' line. The last statement of the
# enclosing while loop prints it out.
}
# From the remaining lines, remove any references to the #defines and
# the WinSock library.
$aline =~ s/\/D \"XML_USE_NETACCESSOR_WINSOCK\" //g;
$aline =~ s/wsock32.lib //g;
print PROJFILEOUT $aline;
}
close (PROJFILEOUT);
close (PROJFILEIN);
unlink ($thefiledotbak);
}