Newer
Older
Tinny Ng
committed
# Create symbolic link for those ICU libraries
#
if (length($ICUROOT) > 0) {
pchdir ("$targetdir/lib");
#
# copy icudata dll
# on AIX/Solaris, it is called libicudt20b.so
# on HP, it is called libicudt20b.sl
# on Linux, it is called libicudt20l.so
#
Tinny Ng
committed
psystem("rm -f libicudata*");
psystem("find . -name 'libicudt20*.so' -exec ln -s {} libicudata.so \\;");
psystem("find . -name 'libicudt20*.sl' -exec ln -s {} libicudata.sl \\;");
#
# copy icuuc dll
# on AIX, it is called libicuuc20.2.so
# on Solaris/Linux, it is called libicuuc.so.20.2
# on HP, it is called libicuuc.sl.20.2
#
Tinny Ng
committed
psystem("rm -f libicuuc.so");
Tinny Ng
committed
psystem("rm -f libicuuc.so.20");
psystem("rm -f libicuuc.sl");
psystem("rm -f libicuuc.sl.20");
psystem("find . -name 'libicuuc20.2.so' -exec ln -s {} libicuuc.so \\;");
psystem("find . -name 'libicuuc20.2.so' -exec ln -s {} libicuuc20.so \\;");
psystem("find . -name 'libicuuc.so.20.2' -exec ln -s {} libicuuc.so \\;");
psystem("find . -name 'libicuuc.so.20.2' -exec ln -s {} libicuuc.so.20 \\;");
psystem("find . -name 'libicuuc.sl.20.2' -exec ln -s {} libicuuc.sl \\;");
psystem("find . -name 'libicuuc.sl.20.2' -exec ln -s {} libicuuc.sl.20 \\;");
Tinny Ng
committed
}
# Populate the etc output directory like config.status and the map file
print ("\n\nCopying misc output to etc ...\n");
psystem("cp -Rf $XERCESCROOT/src/xercesc/config.status $targetdir/etc");
psystem("cp -Rf $XERCESCROOT/obj/*.map $targetdir/etc");
# 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') {
psystem("cp -f $XERCESCROOT/samples/$iii $targetdir/samples");
psystem("cp -Rf $XERCESCROOT/samples/data/* $targetdir/samples/data");
psystem("cp -Rf $XERCESCROOT/samples/SAXCount/* $targetdir/samples/SAXCount");
psystem("rm -f $targetdir/samples/SAXCount/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/SAX2Count/* $targetdir/samples/SAX2Count");
psystem("rm -f $targetdir/samples/SAX2Count/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/SAXPrint/* $targetdir/samples/SAXPrint");
psystem("rm -f $targetdir/samples/SAXPrint/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/SAX2Print/* $targetdir/samples/SAX2Print");
psystem("rm -f $targetdir/samples/SAX2Print/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/DOMCount/* $targetdir/samples/DOMCount");
psystem("rm -f $targetdir/samples/DOMCount/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/DOMPrint/* $targetdir/samples/DOMPrint");
psystem("rm -f $targetdir/samples/DOMPrint/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/Redirect/* $targetdir/samples/Redirect");
psystem("rm -f $targetdir/samples/Redirect/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/MemParse/* $targetdir/samples/MemParse");
psystem("rm -f $targetdir/samples/MemParse/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/PParse/* $targetdir/samples/PParse");
psystem("rm -f $targetdir/samples/PParse/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/StdInParse/* $targetdir/samples/StdInParse");
psystem("rm -f $targetdir/samples/StdInParse/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/EnumVal/* $targetdir/samples/EnumVal");
psystem("rm -f $targetdir/samples/EnumVal/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/SEnumVal/* $targetdir/samples/SEnumVal");
psystem("rm -f $targetdir/samples/SEnumVal/Makefile");
psystem("cp -Rf $XERCESCROOT/samples/CreateDOMDocument/* $targetdir/samples/CreateDOMDocument");
psystem("rm -f $targetdir/samples/CreateDOMDocument/Makefile");
psystem("rm -f $targetdir/samples/Makefile");
print ("\n\nCopying documentation ...\n");
psystem("cp -Rf $XERCESCROOT/doc/* $targetdir/doc");
psystem("cp $XERCESCROOT/Readme.html $targetdir");
psystem("cp $XERCESCROOT/credits.txt $targetdir");
psystem("cp $XERCESCROOT/LICENSE.txt $targetdir");
psystem("cp $XERCESCROOT/license.html $targetdir");
psystem("rm -f $targetdir/doc/Doxyfile");
psystem("rm -rf $targetdir/doc/dtd");
psystem("rm -f $targetdir/doc/*.xml");
psystem("rm -f $targetdir/doc/*.ent");
psystem("rm -f $targetdir/doc/*.gif");
# Change the directory permissions
psystem ("chmod 644 `find $targetdir -type f`");
Tinny Ng
committed
psystem ("chmod 755 $targetdir/bin/* $targetdir/lib/*");
psystem ("chmod +x $targetdir/samples/runConfigure $targetdir/samples/configure $targetdir/samples/install-sh");
psystem ("chmod +x $targetdir/samples/config.sub $targetdir/samples/config.guess $targetdir/samples/config.status");
psystem ("chmod 755 `find $targetdir -type d`");
# Now package it all up using tar
print ("\n\nTARing up all files ...\n");
pchdir ("$targetdir/..");
$zipname = $targetdir . ".tar";
$platformzipname = $zipname;
psystem ("tar -cvf $platformzipname $zipfiles");
# Finally compress the files
print ("Compressing $platformzipname ...\n");
psystem ("gzip $platformzipname");
# psystem subroutine both prints and executes a system command.
#
sub psystem() {
print("$_[0]\n");
system($_[0]);
}
#
# chdir subroutine both prints and executes a chdir
#
sub pchdir() {
print("chdir $_[0]\n");
chdir $_[0];
}
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>) {
Andy Heninger
committed
if ($line =~ /Win32 Debug/) {
$icuuc = "icuucd";
}
if ($line =~ /Win32 Release/) {
$icuuc = "icuuc";
}
$line =~ s[/D "PROJ_XMLPARSER"][/I "$ICUROOT\\include" /D "PROJ_XMLPARSER"];
$line =~ s[Debug/xerces-c_2D.lib"][Debug/xerces-c_2D.lib" /libpath:"$ICUROOT\\lib" /libpath:"$ICUROOT\\source\\data"];
$line =~ s[Release/xerces-c_2.lib"][Release/xerces-c_2.lib" /libpath:"$ICUROOT\\lib" /libpath:"$ICUROOT\\source\\data"];
$line =~ s/XML_USE_WIN32_TRANSCODER/XML_USE_ICU_TRANSCODER/g;
Andy Heninger
committed
$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);
}