summaryrefslogtreecommitdiff
path: root/icu
diff options
context:
space:
mode:
Diffstat (limited to 'icu')
-rw-r--r--icu/Readme4
-rw-r--r--icu/createmak.cfg455
-rw-r--r--icu/createmak.pl1109
-rw-r--r--icu/icu4c-4_0_1-src.patch247
-rwxr-xr-xicu/icuversion.mk33
-rw-r--r--icu/makefile.mk270
-rw-r--r--icu/prj/build.lst4
-rw-r--r--icu/prj/d.lst36
8 files changed, 2158 insertions, 0 deletions
diff --git a/icu/Readme b/icu/Readme
new file mode 100644
index 000000000000..23c2bfdc5e7b
--- /dev/null
+++ b/icu/Readme
@@ -0,0 +1,4 @@
+This file describes the procedure of creating and maintaining makefiles.zip
+# Obo's part
+
+ The automatically generated makefiles are not necessarily optimal. The build is started from allinone/all directory, and the all.mak file is used to build the entire module through. Each subtarget in this file is going to be made recursively unless there is a switch RECURSE=0. If the switch is available, for each subtarget all its prerequisites should be made earlier than the subtarget itself. Therefore, you should order the ALL target's prerequisites so that they are going to be built in a consistent order. Unfortunately there's no automatic process for it, just prove the prerequisites for each subtarget and push them forward in target's ALL prerequisites list. The changes between generated & optimized all.mak can be seen when comparing the files from v1.5 & v1.6 of makefiles.zip.
diff --git a/icu/createmak.cfg b/icu/createmak.cfg
new file mode 100644
index 000000000000..f2c7c050bdd3
--- /dev/null
+++ b/icu/createmak.cfg
@@ -0,0 +1,455 @@
+[Copy]
+SOURCE=<HEADER>
+InputPath=<INPUTPATH>
+"<TARGET>" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ <<tempfile.bat
+ @echo off
+ <TARGETPATH>
+<<
+
+[Deps]
+SOURCE=.\<SOURCEFILE>.<EXT>
+"$(INTDIR)\<SOURCEFILE>.obj": $(SOURCE) "$(INTDIR)" <HEADER_LIST>
+
+[Cpp]
+CPP=cl.exe
+[Link]
+LINK32=link.exe
+[CDefs_Common]
+
+[RSC_Template]
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\<FILEOUT>.res" /i "..\common" /d "NDEBUG"
+SOURCE=<FILE>
+"$(INTDIR)\<FILEOUT>.res" : $(SOURCE) "$(INTDIR)"
+ $(RSC) $(RSC_PROJ) $(SOURCE)
+
+[General_CFlags]
+CPP_PROJ_INCLUDES=<AddIncDirs>
+CDEFS=<PreProcDefs>
+COPT=-nologo -O2 -Ob2
+CPDBOBJ=-FD -Fo"$(INTDIR)\\" -Fd"$(INTDIR)\\"
+CTOOLSFLAGS=-nologo -W3 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) $(CPDBOBJ) -c
+CDEF1FLAGS= -D "_WINDOWS" -D "_MBCS"
+
+[CFlags_common]
+CPP_PROJ=-nologo -MD -Za -Zi -W3 -GF -O2 -Ob2 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) $(CPDBOBJ) -c
+
+[CFlags_i18n]
+CPP_PROJ=-MD -W3 -Oi -Op -GF -FD -GS -Gy -Za -Zi $(EXCEPTIONSWITCH) $(COPT) $(CPP_PROJ_INCLUDES) $(CDEFS) -Fp".\Release/i18n.pch" $(CPDBOBJ) -c
+
+[CFlags_extra_uconv]
+CPP_PROJ=-MD -W3 -Op -GF -Gy $(EXCEPTIONSWITCH) $(COPT) $(CPP_PROJ_INCLUDES) $(CDEFS) -Fp".\Release/uconv.pch" $(CPDBOBJ) -c
+
+[CFlags_layout]
+CPP_PROJ=-Za -GF -Gy -W3 $(EXCEPTIONSWITCH) -O2 $(CPP_PROJ_INCLUDES) $(CDEFS) -D "LAYOUT_EXPORTS" -D "_WINDOWS" -D "_MBCS" -D "_USRDLL" $(CPDBOBJ) -c
+
+[CFlags_io]
+CPP_PROJ=-Za -GF -Gy -W3 $(EXCEPTIONSWITCH) -O2 $(CPP_PROJ_INCLUDES) $(CDEFS) -D "LAYOUT_EXPORTS" -D "_WINDOWS" -D "_MBCS" -D "_USRDLL" $(CPDBOBJ) -c
+
+[CFlags_layoutex]
+CPP_PROJ=-MT -W3 -Op -GF -Gy $(EXCEPTIONSWITCH) $(COPT) $(CPP_PROJ_INCLUDES) $(CDEFS) -Fp".\Release/layoutex.pch" $(CPDBOBJ) -c
+
+[CFlags_stubdata]
+CPP_PROJ=-MD -W3 -Op -GF -Gy -Za $(EXCEPTIONSWITCH) $(COPT) $(CPP_PROJ_INCLUDES) $(CDEFS) -Fp".\Release/stubdata.pch" $(CPDBOBJ) -c
+
+[CFlags_test_cintltst]
+CPP_PROJ=-MT -Za -O2 -W3 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) $(CPDBOBJ) -c
+
+[CFlags_test_intltest]
+CPP_PROJ=-nologo -MT -Za -Zi -Ox -Ob0 -W3 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) $(CPDBOBJ) -c
+
+[CFlags_test_iotest]
+CPP_PROJ=-nologo -MD -Za -Zi -Ox -Ob0 -W3 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) $(CPDBOBJ) -c
+
+[CFlags_test_letest]
+CPP_PROJ=-nologo -MD -Za -Zi -Ox -Ob0 -W3 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) $(CPDBOBJ) -c
+
+[CFlags_tools_ctestfw]
+CPP_PROJ=-nologo -MD -O2 -Op -FD -Za -W3 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) -Fp".\Release/icutest.pch" $(CPDBOBJ) -c
+
+[CFlags_tools_genbrk]
+CPP_PROJ=-nologo -MD -Za -O2 -W3 $(EXCEPTIONSWITCH) $(CPP_PROJ_INCLUDES) $(CDEFS) $(CPDBOBJ) -c
+
+[CFlags_tools_gencase]
+CPP_PROJ=-nologo -MD -GF -Za -Zi -W3 $(EXCEPTIONSWITCH) $(COPT) $(CPDBOBJ) -c
+
+[CFlags_tools_genccode]
+CPP_PROJ=-MD -O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_gencmn]
+CPP_PROJ=-O2 -Za $(CTOOLSFLAGS)
+
+[CFlags_tools_genctd]
+CPP_PROJ=-MD -O2 -Za $(CTOOLSFLAGS)
+
+[CFlags_tools_gencnval]
+CPP_PROJ=-MD -O2 -Za $(CTOOLSFLAGS)
+
+[CFlags_tools_gennames]
+CPP_PROJ=-MD -O2 -Za $(CTOOLSFLAGS)
+
+[CFlags_tools_gennorm]
+CPP_PROJ=-MD -O2 -Za $(CTOOLSFLAGS)
+
+[CFlags_tools_genpname]
+CPP_PROJ=-MD -O2 -Za $(CTOOLSFLAGS)
+
+[CFlags_tools_genprops]
+CPP_PROJ=-MD -O2 -Za $(CTOOLSFLAGS)
+
+[CFlags_tools_genrb]
+CPP_PROJ=-Za $(CTOOLSFLAGS)
+
+[CFlags_tools_genrb.derb]
+CPP_PROJ=-Za -GX $(CTOOLSFLAGS)
+
+[CFlags_tools_gensprep]
+CPP_PROJ=-Za $(CTOOLSFLAGS)
+
+[CFlags_tools_gentest]
+CPP_PROJ=-Za -O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_genuca]
+CPP_PROJ=-Za -O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_gencase]
+CPP_PROJ=-Za -O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_genbidi]
+CPP_PROJ=-Za -O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_icupkg]
+CPP_PROJ=-O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_icuswap]
+CPP_PROJ=-O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_makeconv]
+CPP_PROJ=-Za $(CTOOLSFLAGS)
+
+[CFlags_tools_pkgdata]
+CPP_PROJ=-Za -O2 $(CTOOLSFLAGS)
+
+[CFlags_tools_toolutil]
+CPP_PROJ=-MD -O2 $(CTOOLSFLAGS)
+
+[CommonLinkFlags]
+PDBOUT=/pdb:"<PDBFILE>" /out:"<OUTFILE>"
+COMMONLINKFLAGS=/incremental:no /machine:I386 /nologo $(PDBOUT)
+COMMONLINKFLAGS_CONSOLE=$(COMMONLINKFLAGS) /subsystem:console
+COMMONLINKFLAGS_DLL=$(COMMONLINKFLAGS) /dll
+
+[LinkFlags_common]
+LINK32_FLAGS=icudata.lib kernel32.lib user32.lib advapi32.lib shell32.lib $(COMMONLINKFLAGS_DLL) /base:"0x4a800000" /implib:"$(OUTDIR)\icuuc.lib" /libpath:"..\..\lib"
+
+[LinkFlags_i18n]
+LINK32_FLAGS=icuuc.lib $(COMMONLINKFLAGS_DLL) /base:"0x4a900000" /implib:"$(OUTDIR)\icuin.lib" /libpath:"..\..\lib"
+
+[LinkFlags_extra_uconv]
+LINK32_FLAGS=icuuc.lib icuin.lib uconvmsg.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\..\..\lib" /libpath:"Release"
+
+[LinkFlags_layout]
+LINK32_FLAGS=..\..\lib\icuuc.lib $(COMMONLINKFLAGS_DLL) /implib:"$(OUTDIR)\icule.lib"
+
+[LinkFlags_io]
+LINK32_FLAGS=icuuc.lib icuin.lib $(COMMONLINKFLAGS_DLL) /libpath:"..\..\lib" /implib:"$(OUTDIR)\icuio.lib"
+
+[LinkFlags_layoutex]
+LINK32_FLAGS=..\..\lib\icuuc.lib ..\..\lib\icule.lib $(COMMONLINKFLAGS_DLL) /implib:"$(OUTDIR)\iculx.lib"
+
+[LinkFlags_stubdata]
+LINK32_FLAGS=kernel32.lib user32.lib /nologo /dll /incremental:yes /machine:I386 $(PDBOUT) /implib:"..\..\lib\icudata.lib"
+
+[LinkFlags_test_cintltst]
+LINK32_FLAGS=icuuc.lib icuin.lib icutest.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\..\..\lib\\"
+
+[LinkFlags_test_intltest]
+LINK32_FLAGS=$(COMMONLINKFLAGS_CONSOLE) /libpath:"..\..\..\lib"
+
+[LinkFlags_test_iotest]
+LINK32_FLAGS=icuuc.lib icuin.lib icutu.lib icuio.lib icutest.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\..\..\lib"
+
+[LinkFlags_test_letest]
+LINK32_FLAGS=icuuc.lib icuin.lib icutu.lib icule.lib iculx.lib icutest.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_ctestfw]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_DLL) /implib:"$(OUTDIR)\icutest.lib" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genbrk]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_gencmn]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genctd]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_gencnval]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genccode]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_gennames]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_gennorm]
+LINK32_FLAGS=icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genpname]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genprops]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genrb]
+LINK32_FLAGS=icuin.lib icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genrb.derb]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_gensprep]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_gentest]
+LINK32_FLAGS=icuuc.lib icutu.lib icutest.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genuca]
+LINK32_FLAGS=icuin.lib icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_gencase]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_genbidi]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_icupkg]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_icuswap]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_makeconv]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_pkgdata]
+LINK32_FLAGS=icuuc.lib icutu.lib $(COMMONLINKFLAGS_CONSOLE) /libpath:"../toolutil/release" /libpath:"..\toolutil\Release" /libpath:"..\..\..\lib"
+
+[LinkFlags_tools_toolutil]
+LINK32_FLAGS=kernel32.lib ..\..\..\lib\icuin.lib $(COMMONLINKFLAGS_DLL) /NODEFAULTLIB:libcmt /implib:"$(OUTDIR)\icutu.lib" /libpath:"..\..\..\lib"
+
+[LinkTemplate]
+<OUTFILE> : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+ if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;<MANIFEST>
+
+[AdditionalLinkObjects_common]
+ $(OUTDIR)\icudata.lib
+
+[AdditionalLinkObjects_i18n]
+ "$(OUTDIR)\icuuc.lib"
+
+[AdditionalLinkObjects_extra_uconv]
+ "$(INTDIR)\uconvmsg.lib" \
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icuin.lib"
+
+[AdditionalLinkObjects_layout]
+ "$(OUTDIR)\icuuc.lib"
+
+[AdditionalLinkObjects_io]
+ "$(OUTDIR)\icuuc.lib"
+
+[AdditionalLinkObjects_layoutex]
+ "$(OUTDIR)\icuuc.lib" \
+ "$(OUTDIR)\icuin.lib" \
+ "$(OUTDIR)\icule.lib"
+
+[AdditionalLinkObjects_test_cintltst]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutest.lib" \
+ "..\..\..\lib\icuin.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_test_intltest]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutest.lib" \
+ "..\..\..\lib\icuin.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_test_letest]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutest.lib" \
+ "..\..\..\lib\icuin.lib" \
+ "..\..\..\lib\icule.lib" \
+ "..\..\..\lib\iculx.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genbrk]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genccode]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_gencmn]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genctd]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_gencnval]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_gennames]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_gennorm]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genpname]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genprops]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genrb]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icuin.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genrb.derb]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icudata.lib"
+
+[AdditionalLinkObjects_tools_gensprep]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_gentest]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genuca]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icuin.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_gencase]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_genbidi]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_icupkg]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_icuswap]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_makeconv]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_pkgdata]
+ "..\..\..\lib\icuuc.lib" \
+ "..\..\..\lib\icutu.lib"
+
+[AdditionalLinkObjects_tools_toolutil]
+ "$(OUTDIR)\icuuc.lib"
+
+
+[Rules]
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+[AllTargetTools]
+ALL : "$(OUTDIR)\<MAKFILE>.exe" ".\<RELPATH>\bin\<MAKFILE>.exe"
+
+[AllInOnePrj]
+<PRJ> :
+ cd "$(MAKEDIR)\<PRJDIR>"
+ $(MAKE) /$(MAKEFLAGS) /F <PRJMAK> EXCEPTIONSWITCH="$(EXFLAGS)"
+ cd "<ALLINONEDIR>"
+
+[HeadSectionCommon]
+NULL=
+!IF "$(CFG)" == "<MAKFILE> - Win32 Release"
+
+OUTDIR=<OUTDIR>
+INTDIR=<INTDIR>
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/\$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+ if not exist "$(INTDIR)/\$(NULL)" mkdir "$(INTDIR)"
+
+!IF "$(CFG)" == "<MAKFILE> - Win32 Release"
+
+ALL : <ALLTARGETS>
+
+[Special_stubdata]
+<OUTFILE> : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ @if not exist "..\..\bin" mkdir "..\..\bin"
+ @if not exist "..\..\lib" mkdir "..\..\lib"
+ @if not exist "..\..\include" mkdir "..\..\include"
+ @if not exist "..\..\include\unicode" mkdir "..\..\include\unicode"
+ @if not exist "..\..\include\layout" mkdir "..\..\include\layout"
+ echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." > .\stubdatabuilt.txt
+ $(LINK32) $(LINK32_FLAGS) $(LINK32_OBJS)
+
+[Special_extra_uconv]
+SOURCE=.\makedata.mak
+InputPath=.\makedata.mak
+
+"$(INTDIR)\uconvmsg.lib" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ <<tempfile.bat
+ @echo off
+ nmake /nologo /f makedata.mak icup=.\..\..\.. CFG=Release
+<<
+
+
+
+[End]
diff --git a/icu/createmak.pl b/icu/createmak.pl
new file mode 100644
index 000000000000..891c5e33a778
--- /dev/null
+++ b/icu/createmak.pl
@@ -0,0 +1,1109 @@
+:
+eval 'exec perl -wS $0 ${1+"$@"}'
+ if 0;
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+#
+use XML::Parser;
+# ------------------------------------------------------------------------
+# Other global stuff
+$is_debug=0;
+my $path = $ENV{'INPATH'} . "/";
+my $quot = '"';
+my %template_hash=();
+my %vcproj_hash=();
+# ------------------------------------------------------------------------
+# Global stuff for parsing the *.vcproj files (XML::Parser)
+#
+my $ConfigurationGlobal = 1; # Release = 1, Debug=0
+my $Configuration = undef;
+my %configelements = ();
+my %files = ();
+my %files2copy = ();
+my %files_special = ();
+my $Release = 1;
+ # Release = 1, Debug = 0, undef = 2
+my $file_tmp = ""; # temporary storage for file name
+my $CustomSection = 0;
+# ------------------------------------------------------------------------
+# ------------------------------------------------------------------------
+# e.g. %object_hash with Key = blabla.cpp
+# contains a Hash:
+# Header: "..\\common\\unicode\\utypes.h ..\\common\\unicode\\uset.h"
+# CFlags: Common (set in templates file) or special sequence
+# CDefs: Common (set in templates file) or special sequence
+# ------------------------------------------------------------------------
+my $configfile = shift;
+my $sourcePath = shift;
+if ( !$configfile ) {
+ $configfile = "createmak.cfg";
+}
+if ( !$sourcePath ) {
+ $inpath = $ENV{"INPATH"};
+ $sourcePath = $inpath . "\\misc\\build\\icu\\source";
+}
+$dir = "";
+$header = "";
+$sep = "\\\\";
+
+%project_by_id =();
+%project_by_name = ();
+%project_dependencies = ();
+my @builddeps = prepare_allinone_all_mak(\%project_by_id,\%project_by_name,\%project_dependencies,$sourcePath);
+
+fillTemplateHash($configfile);
+
+create_allinone_all_mak(\@builddeps,\%project_by_id,$sourcePath);
+my @dirs = ();
+foreach $projectname(keys %project_by_name)
+{
+ my $dir = $project_by_name{$projectname}[1];
+ $dir =~ /\.\.\\(.+)\\(.+)\.vcproj/;
+ my $dir1 = $1;
+ my $dir2 = $2;
+ if ( $dir1 !~ /$dir2$/ ) {
+ $dir1 .= "\.$dir2";
+ }
+ print "$dir1 - $dir2\n" if ($is_debug);
+ push @dirs, $dir1;
+}
+
+# set nonpro switch (linking against debug runtime if nonpro=1)
+my $nonpro = ($ENV{"PROEXT"} ne ".pro");
+print "Non Product Build" if ($nonpro);
+
+foreach $dir(@dirs)
+{
+ next if ($dir eq "data.makedata"); # very special don't overwrite this file
+ # ------------------------------------------------------------------------
+ # Reset global stuff for parsing the *.vcproj files (XML::Parser)
+ #
+ $Configuration = $ConfigurationGlobal; # Release = 1, Debug=0
+ %configelements = ();
+ %files = ();
+ # contains all relevant *.c,*.cpp,*.h,*.rc files
+ %files2copy = ();
+ %files_special = ();
+ $Release = 2;
+ # Release = 1, Debug = 0, undef = 2
+ $file_tmp = ""; # temporary storage for file name
+ $CustomSection = 0;
+ # ------------------------------------------------------------------------
+
+ my $extra_mak = "";
+ ($dir, $extra_mak) = handle_extra_mak_files($dir); # handle e.g. tools/genrb.derb entires
+
+ my @mak=(); # Array for make file *.mak
+ my %deps=();
+ my %object_hash=();
+ my %collected_header=();
+ my %collect_header_target_hash=();
+ my %collect_object_target_hash=();
+ my $vcproj_file = "";
+ my $resource_file = "";
+
+ # $dir : common,i18n,...
+ chomp $dir;
+ next if ( $dir eq "" );
+ my $fullpath = $sourcePath . "\\" . $dir;
+ if ( $extra_mak eq "" ) {
+ if ($dir =~ /(.+)+\\(.+)$/)
+ {
+ $vcproj_file = $fullpath ."\\$2.vcproj";
+ } else
+ {
+ $vcproj_file = $fullpath ."\\$dir.vcproj";
+ }
+ } else
+ {
+ $vcproj_file = $fullpath . "\\" . $extra_mak . ".vcproj";
+ }
+
+
+ # Parse the *.vcproj file
+ my $parser = new XML::Parser(ErrorContext => 2);
+ $parser->setHandlers(Start => \&start_handler,
+ Char => \&char_handler);
+ $parser->parsefile($vcproj_file);
+ if ( $file_tmp ) {
+ # save a file which hasn't been saved yet
+ $files{ $file_tmp } = 1; # save it now
+ $file_tmp = ""; # has been saved now reset it
+ }
+
+ # is there a resource file?
+ foreach $i (keys %files)
+ {
+ if ($i =~ /\.rc/)
+ {
+ $resource_file = $i;
+ }
+ }
+ # Fill hash %deps for dependencies for all files in directory ($testdir)
+ # %files contains all relevant files from *.vcproj
+
+ getAllFilesDeps($fullpath,\%deps,\%files);
+ my $includedir = $configelements{"Release"}{"OutputDirectory"}; # e.g. OutputDirectory = ..\..\lib
+ $includedir =~ s/lib/include/;
+ foreach $file( sort keys %deps)
+ {
+ $file =~ /(.+)\.(.+)/;
+ my $name = $1;
+ my $ext = $2;
+ next if (!defined $name);
+ $object = "\$(INTDIR)\\" . "$name.obj";
+ $collect_object_target_hash{$object}=1;
+
+ createMakDepSection($dir,$name,$ext,$deps{$file},\@mak,\%files_special);
+ }
+ my %all_target_hash=();
+ foreach $header(sort keys %files2copy)
+ {
+ my $dir;
+ my $file;
+ #$pathdepth = "..\\..";
+ $file = $header;
+ $header =~ s/^\.\\//;
+ $inputpath = $file;
+ $target = $includedir . "\\" . $header;
+ $target =~ /.+\\(.+)\\.+$/;
+ $targetpath = $configelements{"Release"}{"CommandLine"};
+ chomp $targetpath;
+ # set %all_target_hash and @mak
+ createCopySection($file,$inputpath,$target,$targetpath,\@mak,\%all_target_hash);
+ $collect_header_target_hash{$target}=1;
+ }
+ my $test = $configelements{"Release"}{"OutputFile"};
+ $all_target_hash{$test}=1;
+
+ # set name of the *.mak file
+ my $mak_file="";
+ if ( $extra_mak eq "" ) {
+ $mak_file = $vcproj_file;
+ $mak_file =~ s/vcproj/mak/;
+ } else
+ {
+ # extra_mak eg. derb, stringperf
+ $mak_file = $fullpath . "\\$extra_mak" . "\.mak";
+ }
+
+ # generate the content of the *.mak file
+ # in @mak array
+ print "extra_mak=$extra_mak\n" if ($is_debug);
+ print "mak_file=$mak_file\n" if ($is_debug);
+ open(MAKFILE, ">$mak_file") || die "Can't open $mak_file\n";
+ print_all_target($fullpath, \%all_target_hash);
+
+ # $extra_mak handles further *.mak files in a directory
+ print_flags($dir,$extra_mak,'CFlags',$nonpro); # depends on directory
+ print_simple_flag("Rules");
+ print_simple_flag("Link");
+ print_common_linkflags();
+# print_flags($fullpath,$extra_mak,'LinkFlags'); # depends on directory
+# print_lib32_objs($fullpath,$extra_mak,\%collect_object_target_hash,$resource_file);
+ print_flags($dir,$extra_mak,'LinkFlags'); # depends on directory
+ print_lib32_objs($dir,$extra_mak,\%collect_object_target_hash,$resource_file);
+
+ # write @mak array into the *.mak file
+ foreach $line(@mak)
+ {
+ print MAKFILE $line;
+ }
+ $|=1;
+ print "."; # user entertainment
+ $|=0;
+}
+print "\ndone\n";
+exit;
+
+############################################################################
+sub getKey #01.04.2008 09:46
+############################################################################
+ {
+ my $line = shift;
+ $line =~ /\[(.+)\]/;
+ return $1;
+} ##getKey
+
+############################################################################
+sub fillTemplateHash #01.04.2008 10:48
+############################################################################
+ {
+ my $file = shift;
+ open (TEMPLATE, "< $file") || die "Can't open template file $file\n";
+ my $key = "";
+ while ( $line=<TEMPLATE> ) {
+ if ( $line =~ /\[.+\]/ ) {
+ print $line if ($is_debug);
+ if ( $key ne "" ) {
+ $template_hash{$key}=[@cmdlines];
+ @cmdlines="";
+ $key="";
+ }
+ $key = getKey( $line );
+ } else
+ {
+ push @cmdlines, $line;
+ }
+ } # while
+} ##fillTemplateHash
+
+############################################################################
+sub createCopySection #01.04.2008 11:37
+############################################################################
+ {
+ my $header = shift;
+ my $inputpath = shift;
+ my $target = shift;
+ my $targetpath = shift;
+ my $ref_make_file = shift; # Array written later to make file *.mak
+ my $ref_all_target_hash = shift; # reference to fill all_target_hash;
+ if ( $target !~ /\\include/ && $target !~ /\\bin/) {
+ return; # $target contains nonsense
+ }
+ if ( !$targetpath ) {
+ # $targetpath is empty! (Due to missing entry in *.vcproj file)
+ # Generate $targetpath here from $target
+ my $t = $target;
+ $t =~ /(.+)\\(.+)$/;
+ $targetpath = "copy \"\$(InputPath)\" " . $1;
+ chomp $targetpath;
+ }
+ $targetpath =~ s/\r$//; # remove x0A from EOL if the is one
+ my @template = @{$template_hash{"Copy"}};
+ my $line = "";
+ foreach $line(@template)
+ {
+ $line =~ s/<HEADER>/$header/g;
+ $line =~ s/<INPUTPATH>/$inputpath/g;
+ $line =~ s/<TARGET>/$target/g;
+ $line =~ s/<TARGETPATH>/$targetpath/;
+ push @{$ref_make_file}, $line; # from template
+ $$ref_all_target_hash{$target} = 1; # "\"$target\" ";
+ # save for target ALL:
+ }
+} ##createCopySection
+
+############################################################################
+sub createMakDepSection #01.04.2008 13:36
+############################################################################
+ {
+ # creates the dependency section in the make file
+ my $dir = shift;
+ my $source = shift;
+ my $extension = shift;
+ my $ref_header_list = shift;
+ my $ref_make_file = shift; # Array written later to make file *.mak
+ my $ref_special_file = shift; # hash for special files (compiler flags, include paths)
+ my $header_list = "";
+ my $special_flag = 0;
+
+ return if ( !defined $source );
+ foreach $header(@{$ref_header_list})
+ {
+ if ( ($header =~ /^\.\.\\.+/) && (-e $header )) {
+ $header_list = $header_list . " " . $header; # this header is located in an other directory
+ } else
+ {
+ $header_list = $header_list . " .\\" . $header;
+ }
+ }
+
+ #special handling
+ # compile this file with other compiler switches
+ my $file = $source . "\." . $extension;
+ $dir =~ s/\\/_/;
+ my @template = @{$template_hash{"CFlags_$dir"}};
+ if ( defined $$ref_special_file{"AdditionalIncludeDirectories"}{$file} ) {
+ $special_flag = 1;
+ my $includepath = $$ref_special_file{"AdditionalIncludeDirectories"}{$file};
+ $includepath =~ s/\;/\/I /g; # subst ; with /I for multiple paths
+ $line = "CPP_SWITCH_INCLUDE=/I $includepath\n";
+ push @{$ref_make_file}, $line;
+ foreach $line(@template)
+ {
+ if ( $line =~ /CPP_PROJ/)
+ {
+ $line =~ s/CPP_PROJ=/CPPX_PROJ=/;
+ $line =~ s/\$\(CDEFS\)/\$\(CDEFS\) \$\(CPP_SWITCH_INCLUDE\)/; # include $(CPP_SWITCH_INCLUDE)
+ push @{$ref_make_file}, $line;
+ }
+ }
+ }
+ if ( $$ref_special_file{"DisableLanguageExtensions"}{$file} )
+ {
+ # FALSE = /Ze
+ $special_flag = 1;
+ foreach $line(@template)
+ {
+ if ( $line =~ /CPP_PROJ/)
+ {
+ $line =~ s/CPP_PROJ=/CPPX_PROJ=/;
+ $line =~ s/-Za/-Ze/;
+ if ( $nonpro )
+ {
+ # if non product link against debug libraries
+ $line =~ s/-MD/-MDd/;
+ $line =~ s/-MT/-MTd/;
+ }
+ push @{$ref_make_file}, $line;
+ }
+ }
+ }
+
+ @template = @{$template_hash{"Deps"}};
+ my $line = "";
+ foreach $line(@template)
+ {
+ $line =~ s/<SOURCEFILE>/$source/g;
+ $line =~ s/<EXT>/$extension/g;
+ $line =~ s/<HEADER_LIST>/$header_list/g;
+ push @{$ref_make_file}, $line;
+ }
+
+ if ( $special_flag )
+ {
+ pop @{$ref_make_file}; # remove empty line
+ push @{$ref_make_file},"\t\$(CPP) @<<\n";
+ push @{$ref_make_file},"\t\$(CPPX_PROJ) \$(SOURCE)\n";
+ push @{$ref_make_file},"<<\n\n";
+ $special_flag = 0;
+ }
+
+} ##createMakDepSection
+
+
+############################################################################
+sub getFilenameFromPath #10.04.2008 13:03
+############################################################################
+{
+ my $path = shift;
+ $path =~ /.+\\(.+)$/;
+ return $1;
+} ##getFilenameFromPath
+
+############################################################################
+sub getAllFilesDeps #08.04.2008 09:39
+############################################################################
+{
+ my $path = shift;
+ my $ref_deps = shift;
+ my $ref_allfiles = shift; # contains all relevant files from *.vcproj
+ my %local_header_hash=(); # contains all local header
+
+ my @all_files = keys %{$ref_allfiles};
+
+ # collect lokal header names in %header_hash
+ foreach $file(@all_files)
+ {
+ if ( $file =~ /.+\.h/ ) {
+ chomp $file;
+ $local_header_hash{$file} = 1;
+ }
+ }
+
+ foreach $file(@all_files)
+ {
+ my @header_deps=();
+ my $skip = 0;
+
+ $file =~ s/^\.\\//; # remove leading .\
+
+ # exclude sub directories and several file extensions
+ # *.dep,*.h,*.in,*.mak,*.pl,*.txt,*.vcproj.*.rc and origs of patch files (*.*~) and
+ # .cvsignore (files beginning with .)
+ next if ( (-d "$path$sep$file") || ($file =~ /.+(_|\~|dep|h|in|mak|pl|txt|vcproj|rc)$/) || ($file =~ /^\.+./));
+ parse_header_deps($path,$file,\@header_deps,\%local_header_hash);
+ handle_dep_to_other_directory($path,$file,\@header_deps,$$ref_vcproj{$file}) if ($$ref_vcproj{$file});
+ $$ref_deps{$file}=[@header_deps];
+ }
+} ##getAllFilesDeps
+
+ ############################################################################
+ sub parse_header_deps #14.06.2006 18:04
+ ############################################################################
+ {
+ # get includes from c/cpp file
+ # call create_deps(path,file,\$link_obj)
+ #
+ my $path = shift;
+ my $cfile = shift;
+ my $ref_header_deps = shift;
+ my $ref_local_header_hash = shift;
+
+ my $fullpath = $path . $sep . $cfile;
+ my $unicodedep="";
+ open(IN, "<$fullpath") || die "can't open $fullpath\n";
+ while ( $line = <IN> ) {
+ next if ($line !~ /^.?\#include.+/); # handle include lines only
+ if ($line =~ /.+?\s(.+)/)
+ {
+ $header = $1;
+ if ( ($header !~ /^<.+/) && ($header !~ /.+\.c.+$/) ) {
+ # no <stdio> etc. header
+ $header =~ s/\s+\/\*.+\*\///; # delete <blanks>/* ... */
+ $header =~ s/\s+\/\/.+//; # delete <blanks>//......
+ $header =~ s/\//\\/; # subst. / with \
+ $header =~ s/^\"/\".\\/;
+ $header =~ s/\"//g;
+ $header =~ s/\.\\//;
+ my $test = $$ref_local_header_hash{$header};
+ my $header_fullpath = $path . "\\" . $header;
+ if ( $test || (($header =~ /\\/) && (-e $header_fullpath))) {
+ push @{$ref_header_deps}, $header;
+ }
+ }
+ }
+ }
+ } ##parse_header_deps
+
+############################################################################
+sub handle_dep_to_other_directory #16.04.2008 15:11
+############################################################################
+{
+ # there has been an additional include directoy detected
+ # now try to find out which header (parsed from c/cpp-file)
+ # comes from this directory by checking: does it exist there?
+ my $path = shift;
+ my $file = shift;
+ my $ref_header_deps = shift;
+ my $path_additional = shift;
+ my $search_path = $path . "\\" . $path_additional;
+ my $counter = 0;
+ foreach $header(@{$ref_header_deps})
+ {
+ my $full_path = $search_path . "\\" . $header;
+ if ( -e "$full_path" )
+ {
+ $$ref_header_deps[$counter] = $path_additional . "\\" . $header;
+ }
+ $counter++
+ }
+} ##handle_dep_to_other_directory
+
+############################################################################
+sub print_lib32_objs #18.04.2008 12:54
+############################################################################
+ {
+ # generate Link section
+ my $path = shift;
+ my $extra_mak = shift;
+ my $ref_objecthash = shift;
+ my $resource_file = shift;
+ # output link objects
+ print MAKFILE "LINK32_OBJS= \\\n";
+ # print objects
+ foreach $object(sort keys %{$ref_objecthash})
+ {
+ print MAKFILE "\t$object \\\n";
+ }
+
+ # print *.res if *.rc exists
+ if ( $resource_file ne "" ) {
+ my $res_file = $resource_file;
+ $res_file =~ s/\.rc/\.res/;
+ $res_file =~ /(.+)\\(.+)$/;
+ $res_file = $2;
+ print MAKFILE "\t\$(INTDIR)\\$res_file \\\n";
+ }
+
+ # add import libs and res files
+ print_flags($path,$extra_mak,"AdditionalLinkObjects");
+ my $outfile = $configelements{"Release"}{"OutputFile"};
+
+ # section for linking
+ print_link_template($path,$outfile);
+
+ # section for creating res files
+ # setting for rsc, res target etc.
+ print "resource_file=$resource_file\n" if ($is_debug);
+ print_rsc_template($resource_file) if ($resource_file);
+ print_simple_flag("Special_extra_uconv") if ($outfile =~ /uconv/);
+} ##print_lib32_objs
+
+############################################################################
+sub print_all_target #26.06.2008 13:27
+############################################################################
+ {
+ my $path = shift;
+ my $ref_all_target_hash = shift;
+ my $filename = getFilenameFromPath($path);
+ my $outdir = $configelements{"Release"}{"OutputDirectory"};
+ print MAKFILE "NULL=\n";
+ print MAKFILE "OUTDIR=$outdir\n";
+ print MAKFILE "OutDir=$outdir\n";
+ print MAKFILE "INTDIR=.\\Release\n\n";
+ print MAKFILE "ALL: ";
+ foreach $target(sort keys %{$ref_all_target_hash})
+ {
+ if ( $target =~ /\.exe/ ) {
+ my $out = $target;
+ $out =~ s/.\\Release/\.\.\\\.\.\\\.\.\\bin/;
+ $out =~ s/\$\(OutDir\)/\.\.\\\.\.\\\.\.\\bin/;
+ $out =~ s/\//\\/; # convert / to \
+ $target = $out;
+ }
+ print MAKFILE "\"$target\" ";
+ }
+
+ # Append [Target_<dir>] item e.g. ../../icuxy36.dll
+ my $targetkey = "Target_" . $filename;
+ my @target = ();
+ if ( exists $template_hash{$targetkey} ) {
+ @target = @{$template_hash{$targetkey}};
+ }
+ my $additional_target="";
+ foreach $additional_target(@target)
+ {
+ print MAKFILE $additional_target if ($additional_target ne "");
+ }
+ print MAKFILE "\n\n";
+ print MAKFILE "\"\$(OUTDIR)\" : \n";
+ print MAKFILE "\tif not exist \"\$(OUTDIR)/\$(NULL)\" mkdir \"\$(OUTDIR)\"\n\n";
+ print MAKFILE "!IF \"\$(OUTDIR)\" != \"\$(INTDIR)\"\n";
+ print MAKFILE "\"\$(INTDIR)\" : \n";
+ print MAKFILE "\tif not exist \"\$(INTDIR)/\$(NULL)\" mkdir \"\$(INTDIR)\"\n";
+ print MAKFILE "!ENDIF\n";
+ print MAKFILE "\n\n";
+} ##print_all_target
+
+############################################################################
+sub print_simple_flag #18.04.2008 13:39
+############################################################################
+{
+ my $simple_flag = shift;
+ my @template = @{$template_hash{$simple_flag}};
+ foreach $line(@template)
+ {
+ print MAKFILE $line;
+ }
+} ##print_rules
+
+############################################################################
+sub print_link_template #18.04.2008 13:39
+############################################################################
+{
+ my $dir = shift;
+ my $outfile = shift;
+ my $manifest;
+ # set resource id for manifest file
+ if ( $outfile =~ /\.exe/ ) {
+ $manifest = 1;
+ } else
+ {
+ $manifest = 2;
+ }
+ my @template = ();
+ if ($dir =~ /stubdata/ ) {
+ @template = @{$template_hash{"Special_stubdata"}};
+ } else
+ {
+ @template = @{$template_hash{"LinkTemplate"}};
+ }
+
+ print MAKFILE "\n"; # insert blank line
+ foreach $line(@template)
+ {
+ $line =~ s/<OUTFILE>/$outfile/;
+ $line =~ s/<MANIFEST>/$manifest/;
+ print MAKFILE $line;
+ }
+
+ # insert special stuff for
+ # extras/uconv/uconv.mak
+ if ( $dir =~ /uconv/ ) {
+ print_flags($dir,"","Special");
+ }
+
+ # for *.exe files an additional
+ # copy section is required to get
+ # the stuff into the global bin directory
+ my %dummy = ();
+ my @mak = ();
+ if( $manifest ==1 )
+ {
+ # source,inputpath,target,action
+ my $out = $outfile;
+ $out =~ s/.\\.*Release/\.\.\\\.\.\\\.\.\\bin/;
+ $out =~ s/\$\(OutDir\)/\.\.\\\.\.\\\.\.\\bin/;
+ $out =~ s/\//\\/; # subst / with \
+ $outfile =~ s/\//\\/; # subst / with \
+ createCopySection($outfile,$outfile,$out,"copy \"\$(InputPath)\" .\\..\\..\\..\\bin",\@mak,\%dummy);
+ foreach $line(@mak)
+ {
+ print MAKFILE $line;
+ }
+ }
+} ##print_rules
+
+############################################################################
+sub print_rsc_template #04.11.2008 14:48
+############################################################################
+ {
+ # print resource compiler setting + resource target
+ my $resourcefile = shift;
+ # skip this if no res file required
+
+ return if (!$resourcefile);
+ $resfile = $resourcefile;
+ #remove file extension (.res)
+ $resfile =~ /(.+)\\(.+)\.(.+)/;
+ $resfile = $2;
+
+ my @template = @{$template_hash{"RSC_Template"}};
+ print MAKFILE "\n"; # insert blank line
+ foreach $line(@template)
+ {
+ $line =~ s/<FILE>/$resourcefile/;
+ $line =~ s/<FILEOUT>/$resfile/;
+ print MAKFILE $line;
+ }
+} ##print_rsc_template
+
+############################################################################
+sub print_flags #18.04.2008 14:19
+############################################################################
+{
+ # CFlags, LinkFlags
+ my $dir = shift;
+ my $extra_mak = shift; # eg. derb.mak, stringperf.mak
+ my $flag = shift;
+ my $nonpro = shift;
+ my @template = ();
+ my $switch = "";
+ $dir =~ s/\\/_/g if ($dir); # change \ to _
+ $switch = "$flag" . "_" . "$dir" if ($dir);
+ handle_CFlags() if ($flag eq "CFlags"); # get and print Preprocessor defines
+ $switch .= "\." . $extra_mak if ( $extra_mak ne "" ) ;
+ if ( exists $template_hash{$switch} ) {
+ @template = @{$template_hash{$switch}};
+ foreach $line(@template)
+ {
+ if ( $nonpro )
+ {
+ # if non product link against debug libraries
+ $line =~ s/-MD/-MDd/;
+ $line =~ s/-MT/-MTd/;
+ }
+ print MAKFILE $line;
+ }
+ }
+} ##print_flags
+
+############################################################################
+sub handle_CFlags #28.01.2009 11:20
+############################################################################
+ {
+
+ my $ppdefs = $configelements{"Release"}{"PreprocessorDefinitions"};
+ my $ppinc = $configelements{"Release"}{"AdditionalIncludeDirectories"};
+ my @template = @{$template_hash{"General_CFlags"}};
+ $ppdefs =~ s/;/ -D/g; # subst ; with -D switch
+ $ppdefs = "-D" . $ppdefs;
+ $ppinc =~ s/(;|,)/ -I/g; # subst ; with -I switch
+ $ppinc = "-I" . $ppinc;
+ print "ppdefs=$ppdefs\n" if ($is_debug);
+ print "ppinc =$ppinc\n" if ($is_debug);
+ foreach $line(@template)
+ {
+ $line =~ s/<AddIncDirs>/$ppinc/;
+ $line =~ s/<PreProcDefs>/$ppdefs/;
+ print MAKFILE $line;
+ }
+} ##handle_CFlags
+
+############################################################################
+sub print_common_linkflags #21.11.2008 11:47
+############################################################################
+ {
+ my @template = @{$template_hash{"CommonLinkFlags"}};
+ my $outfile = $configelements{"Release"}{"OutputFile"};
+ my $pdbfile = $configelements{"Release"}{"ProgramDatabaseFile"};
+ $pdbfile =~ s/\//\\/; # subst / with \
+ $outfile =~ s/\//\\/; # subst / with \
+ print "PATH=$path OUTFILE=$outfile\n" if ($is_debug);
+ foreach $line(@template)
+ {
+ $line =~ s/<OUTFILE>/$outfile/;
+ $line =~ s/<PDBFILE>/$pdbfile/;
+ print MAKFILE $line;
+ }
+} ##print_common_linkflags
+
+############################################################################
+sub handle_extra_mak_files #25.08.2008 14:32
+############################################################################
+{
+ # extract extra filename for *.mak file
+ # e.g input: tools\genrb.derb
+ # output: derb
+ my $direntry = shift;
+ my $out = "";
+ my $dir = "";
+ if ( $direntry =~ /(.+)\.(.+)$/ ) {
+ $dir = $1;
+ $out = $2;
+ } else
+ {
+ $dir = $direntry;
+ }
+ return ($dir,$out);
+} ##handle_extra_mak_files
+
+############################################################################
+sub prepare_allinone_all_mak
+############################################################################
+{
+ # Read in allinone.sln
+ # Fills hashes and returns an array with build order
+ # uses topographical sorting
+
+ my $href_project_by_id = shift;
+ my $href_project_by_name = shift;
+ my $href_project_dependencies = shift;
+ my $sourcePath = shift;
+
+ my $allslnfile = $sourcePath . "\\allinone\\allinone.sln";
+ my @projectdeps;
+ my $projectname;
+ my $projectpath;
+ my $projectid;
+
+ # fill hash tables
+ open (SLN, "< $allslnfile") || die "Can't open $allslnfile\n";
+ while ($line = <SLN>)
+ {
+ my @project = ();
+ if ( $line =~ /^Project\(/ ) {
+ @project = split( /,/, $line);
+ if ( $#project ) {
+ $projectname = "";
+ $projectpath = "";
+ $projectid = "";
+ @projectdeps = ();
+ my @subarray = ();
+ @subarray = split( /=/, $project[0]);
+ $projectname = $subarray[1];
+ $projectname =~ s/\"//g; # remove "
+ $projectpath = $project[1];
+ $projectid = $project[2];
+ $projectid =~ s/\"//g; # remove "
+ $projectid =~ s/.+\{//g; # remove til {
+ $projectid =~ s/\}\n//g; # remove }<CR>
+ my @pnp = ($projectname,$projectpath);
+ my @pip = ($projectid,$projectpath);
+ $$href_project_by_id{$projectid}=[@pnp];
+ $$href_project_by_name{$projectname} =[@pip];
+ }
+ } # $line =~ /^Project\(/
+ if ( $line =~ /ProjectSection\(/ ) {
+ $psect = 1;
+ next;
+ }
+ if ( $line =~ /EndProjectSection/ ) {
+ $psect = 0;
+ $$href_project_dependencies{$projectid}=[@projectdeps];
+ next;
+ }
+ if ( $psect ) {
+ my @tarray = split(/=/, $line);
+ $depends_on_id = $tarray[0];
+ $depends_on_id =~ s/.+\{//g;
+ $depends_on_id =~ s/\}.+//g;
+ print "+$depends_on_id-\n" if ($is_debug);
+
+ push @projectdeps, $depends_on_id;
+ }
+ }
+ ########################################
+ # sort here and generate build order
+ ########################################
+ $objektzahl=0;
+ %hashindex=();
+
+ foreach $projectid(keys %{$href_project_by_id})
+ {
+ if ( $$href_project_dependencies{$projectid} )
+ {
+ @deps = @{$$href_project_dependencies{$projectid}};
+ } else
+ {
+ @deps = ();
+ }
+ for $counter(0..$#deps)
+ {
+ $v = find_or_create_element($deps[$counter]);
+ $n = find_or_create_element($projectid);
+ push @{$nachfolgerliste[$v]},$n;
+ }
+ }
+
+ for $n (0..$objektzahl-1)
+ {
+ $vorgaengerzahl[$n]=0;
+ }
+ for $v (0..$objektzahl-1)
+ {
+ for $n (@{$nachfolgerliste[$v]})
+ {
+ ++$vorgaengerzahl[$n];
+ }
+ }
+
+ @hilfsliste=();
+ for $n (0..$objektzahl-1)
+ {
+ push(@hilfsliste,$n) if ($vorgaengerzahl[$n]==0)
+ }
+
+ $ausgabe=0;
+ @builddep =();
+ while (defined($v=pop(@hilfsliste)))
+ {
+ push @builddep, $name[$v]; # save build order by project_id;
+ ++$ausgabe;
+ for $n (@{$nachfolgerliste[$v]})
+ {
+ --$vorgaengerzahl[$n];
+ push(@hilfsliste,$n) if ($vorgaengerzahl[$n]==0);
+ }
+ } # while
+ die "Cyclic dependencies found! Stopping now.\n" if $ausgabe<$objektzahl;
+ ##############################################################
+ # End of sorting stuff
+ ##############################################################
+
+ return @builddep;
+ ###############################################################
+ ###########################
+ # sub for sorting only
+ ###########################
+ sub find_or_create_element
+ {
+ my ($str)=@_;
+ my ($idx)=$hashindex{$str};
+ if (!defined($idx)) { # new element ...
+ $idx=$objektzahl++;
+ $hashindex{$str}=$idx;
+ $name[$idx]=$str;
+ @{$nachfolgerliste[$idx]}=();
+ }
+ return $idx;
+ } # find_or_create_element
+} # prepare_allinone_all_mak
+
+############################################################################
+sub create_allinone_all_mak #09.02.2009 09:22
+############################################################################
+{
+ my $ref_buildorder = shift;
+ my $href_project_by_id = shift;
+ my $sourcePath = shift;
+ my $allmakfile = $sourcePath . "\\allinone\\all.mak";
+ open (ALLMAK, ">$allmakfile") || die "Can't write to $allmakfile \n";
+ print ALLMAK "ALL: ";
+ foreach $proj(@{$ref_buildorder})
+ {
+ print ALLMAK $$href_project_by_id{$proj}[0];
+ }
+ print ALLMAK "\n\n";
+
+ foreach $proj( @{$ref_buildorder} )
+ {
+ print "$proj $$href_project_by_id{$proj}[0] $$href_project_by_id{$proj}[1]\n";
+ my $prjdir = $$href_project_by_id{$proj}[1];
+ $prjdir =~ /(.+)\\(.+)$/;
+ $prjdir = $1;
+ $prjname = $2;
+ $prjdir =~ s/^.+\"//;
+ $prjname =~ s/\"$//;
+ $prjname =~ s/vcproj/mak/;
+ $allinonehelpstring = $prjdir;
+ $allinonehelpstring =~ s/^\.+\\//; # remove ..\
+ my $backcount = "";
+ while ($allinonehelpstring=~ /.+\\/g) # counts the occuring \
+ {
+ $backcount .= "..\\";
+ }
+ $allinonedir = $backcount . "..\\allinone";
+
+ # write all.mak
+ $$href_project_by_id{$proj}[0] =~ s/^\s+//;
+ if ( $$href_project_by_id{$proj}[0] ne "makedata" )
+ {
+ my @template = @{$template_hash{"AllInOnePrj"}};
+ foreach $line(@template)
+ {
+ $line =~ s/<PRJ>/$$href_project_by_id{$proj}[0]/;
+ $line =~ s/<PRJDIR>/$prjdir/;
+ $line =~ s/<PRJMAK>/$prjname/;
+ $line =~ s/<ALLINONEDIR>/$allinonedir/;
+ print ALLMAK $line;
+ }
+ } else
+ {
+ #special code snippet
+ print ALLMAK "makedata : \n";
+ print ALLMAK " cd \"..\\data\"\n";
+ print ALLMAK " nmake /f makedata.mak icumake=\$(MAKEDIR)\\..\\data cfg=Release\n";
+ print ALLMAK " cd \"..\\allinone\"\n\n";
+ }
+ }
+ close ALLMAK;
+} ##create_allinone_all_mak
+
+############################################################################
+
+# ------------------------------------------------------------------------
+# XML parser handling
+# ------------------------------------------------------------------------
+
+############################################################################
+sub start_handler
+############################################################################
+{
+ my $p = shift; # pointer to parser
+ my $el = shift; # element
+
+ # Deal with attributes
+
+ my $CompilerSection = 0;
+ my $LinkerSection = 0;
+ my $ConfigSection = ($el eq "Configuration");
+
+ while (@_)
+ {
+ # shift if ( $el eq "FileConfiguration" );
+ my $att = shift;
+ my $val = shift;
+ $CustomSection = 0;
+ if ($special_file && defined $att & $att ne "Name")
+ {
+ print "$special_file - $att - $val\n";
+ my @param = ($att,$val);
+ $files_special{ $special_file } = [@param]; # files with special compiler switch
+ @test = @{$files_special{ $special_file }};
+ print "test=@test\n";
+ $special_file="";
+ }
+ if ( $ConfigSection && $att eq "Name" && $val eq "Release|Win32" ) {
+ $Release = 1;
+ $config = "Release"; # Release
+ }
+ if ( $ConfigSection && $att eq "Name" && $val eq "Debug|Win32" ) {
+ $Release = 0; # Debug
+ $config = "Debug";
+ }
+ if ( $att eq "Name" && $val eq "VCCLCompilerTool" ) {
+ $CompilerSection = 1;
+ }
+ if ( $att eq "Name" && $val eq "VCLinkerTool" ) {
+ $LinkerSection = 1;
+ }
+ if ( $att eq "Name" && $val eq "VCCustomBuildTool" ) {
+ $CustomSection = 1;
+ }
+
+ # For Configuration Infos like compiler defines etc.
+ if ( $att eq "PreprocessorDefinitions" && $CompilerSection ) {
+ $configelements{$config}{$att} = $val;
+ }
+ if ( $att eq "AdditionalIncludeDirectories" && $CompilerSection ) {
+ #$configelements{$config}{$att} = $val;
+ if ( ($file_tmp ne "") && ($val ne "") ) {
+ $files{ $file_tmp } = 1; # save it now
+ $file_tmp =~ s/^\.\\//; # remove leading .\
+ $files_special{"AdditionalIncludeDirectories"}{$file_tmp} = $val;
+ print "Include $val: $file_tmp\n" if ($is_debug);
+ $file_tmp = ""; # has been saved now reset it
+ } else
+ {
+ $configelements{$config}{$att} = $val;
+ }
+ }
+ if ( ($att eq "DisableLanguageExtensions") && $CompilerSection ) {
+ #$configelements{$config}{$att} = $val;
+ if ( ($file_tmp ne "") && ($val ne "")) {
+ $files{ $file_tmp } = 1; # save it now
+ $file_tmp =~ s/^\.\\//; # remove leading .\
+ $files_special{"DisableLanguageExtensions"}{$file_tmp} = $val;
+ print "-Ze: $file_tmp\n" if ($is_debug);
+ $file_tmp = ""; # has been saved now reset it
+ }
+ }
+ if ( $att eq "OutputDirectory" ) {
+ $configelements{$config}{$att} = $val;
+ }
+ if ( $att eq "OutputFile" && $LinkerSection ) {
+ $configelements{$config}{$att} = $val;
+ }
+ if ( $att eq "ProgramDatabaseFile" ) {
+ $configelements{$config}{$att} = $val;
+ }
+ if ( $att eq "ImportLibrary" && $LinkerSection ) {
+ $configelements{$config}{$att} = $val;
+ }
+ if ($att eq "CommandLine") {
+ $configelements{$config}{$att} = $val;
+ }
+ if (($att eq "PreprocessorDefinitions") && $ConfigSection) {
+ $configelements{$config}{$att} = $val;
+ }
+
+ # Is the file in the step before a header
+ # which has to be copied into the global
+ # include path?
+ if ( $file_tmp ne "" )
+ {
+ $config = "Release";
+ if ( ($att eq "CommandLine") && ($el eq "Tool") )
+ {
+ if ( $file_tmp =~ /.+\.h$/ ) {
+ $files2copy{ $file_tmp } = $val; # unicode + layout header to copy
+ $file_tmp = ""; # has been saved now reset it
+ }
+ }
+ } # if $file_tmp
+
+ # For files
+ if ( $att eq "RelativePath" ) {
+ if ( $file_tmp ) {
+ # no special file (include dir / compiler switch)
+ $files{ $file_tmp } = 1; # save it now
+ $file_tmp = ""; # has been saved now reset it
+ }
+ # store temporary the file name
+ $file_tmp = $val if ($val !~ /\.mk$/); # no *.mk files
+ }
+ } # while @_
+} # End start_handler
+
+############################################################################
+sub char_handler
+############################################################################
+{
+} # End char_handler
diff --git a/icu/icu4c-4_0_1-src.patch b/icu/icu4c-4_0_1-src.patch
new file mode 100644
index 000000000000..172d6244634c
--- /dev/null
+++ b/icu/icu4c-4_0_1-src.patch
@@ -0,0 +1,247 @@
+--- misc/icu/source/common/putil.c 2008-07-01 03:41:12.000000000 +0200
++++ misc/build/icu/source/common/putil.c 2008-09-02 07:01:29.335795765 +0200
+@@ -52,7 +52,7 @@
+ Poorly upgraded Solaris machines can't have this defined.
+ Cleanly installed Solaris can use this #define.
+ */
+-#if !defined(_XOPEN_SOURCE_EXTENDED) && (!defined(__STDC_VERSION__) || __STDC_VERSION__ >= 199901L)
++#if !defined(_XOPEN_SOURCE_EXTENDED) && (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L)
+ #define _XOPEN_SOURCE_EXTENDED 1
+ #endif
+
+--- misc/icu/source/common/unicode/pwin32.h 2008-07-01 10:41:12.000000000 +0900
++++ misc/build/icu/source/common/unicode/pwin32.h 2008-11-05 22:37:21.479250000 +0900
+@@ -32,6 +32,10 @@
+ #define __STDC_CONSTANT_MACROS
+ #endif
+
++#if defined(__MINGW32__)
++#define U_HAVE_INTTYPES_H 1
++#endif
++
+ /* _MSC_VER is used to detect the Microsoft compiler. */
+ #if defined(_MSC_VER)
+ #define U_INT64_IS_LONG_LONG 0
+--- misc/icu/source/config/mh-darwin Tue Jul 1 03:41:24 2008
++++ misc/build/icu/source/config/mh-darwin Tue Jan 20 18:33:16 2009
+@@ -25,7 +25,7 @@
+ SHLIB.cc= $(CXX) -dynamiclib -dynamic $(CXXFLAGS) $(LDFLAGS)
+
+ ## Compiler switches to embed a library name and version information
+-LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(notdir $(MIDDLE_SO_TARGET))
++LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name @executable_path/$(notdir $(FINAL_SO_TARGET))
+
+ ## Compiler switch to embed a runtime search path
+ LD_RPATH=
+@@ -41,10 +41,6 @@
+ ## Non-shared intermediate object suffix
+ STATIC_O = ao
+
+-## Override Versioned target for a shared library.
+-FINAL_SO_TARGET= $(basename $(SO_TARGET)).$(SO_TARGET_VERSION).$(SO)
+-MIDDLE_SO_TARGET= $(basename $(SO_TARGET)).$(SO_TARGET_VERSION_MAJOR).$(SO)
+-
+ ## Compilation rules
+ %.$(STATIC_O): $(srcdir)/%.c
+ $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
+@@ -76,15 +72,9 @@
+
+ ## Versioned libraries rules
+
+-%.$(SO_TARGET_VERSION_MAJOR).$(SO): %.$(SO_TARGET_VERSION).$(SO)
++%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
+ $(RM) $@ && ln -s ${<F} $@
+-%.$(SO): %.$(SO_TARGET_VERSION_MAJOR).$(SO)
+- $(RM) $@ && ln -s ${*F}.$(SO_TARGET_VERSION).$(SO) $@
+-
+-# tzcode option
+-TZORIG_EXTRA_CFLAGS=-DSTD_INSPIRED
+-
+-# genren opts
+-GENREN_PL_OPTS=-x Mach-O -n '-g' -p '| c++filt'
++%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
++ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
+
+ ## End Darwin-specific setup
+--- misc/icu/source/config/mh-linux 2007-12-12 19:57:36.000000000 +0100
++++ misc/build/icu/source/config/mh-linux 2008-05-21 18:59:13.000000000 +0200
+@@ -20,6 +20,14 @@
+ LD_RPATH=
+ LD_RPATH_PRE = -Wl,-rpath,
+
++## Force RPATH=$ORIGIN to locate own dependencies w/o need for LD_LIBRARY_PATH
++## (incl. the C++ runtime libs potentially found in the URE lib dir):
++ENABLE_RPATH=YES
++RPATHLDFLAGS=${LD_RPATH_PRE}'$$ORIGIN:$$ORIGIN/../ure-link/lib'
++
++#SH# ENABLE_RPATH=YES
++#SH# RPATHLDFLAGS="${LD_RPATH_PRE}'$$ORIGIN:$$ORIGIN/../ure-link/lib'"
++
+ ## These are the library specific LDFLAGS
+ LDFLAGSICUDT=-nodefaultlibs -nostdlib
+
+--- misc/icu/source/config/mh-mingw 2008-07-01 10:41:24.000000000 +0900
++++ misc/build/icu/source/config/mh-mingw 2008-11-06 00:18:30.261250000 +0900
+@@ -72,10 +72,12 @@
+ # The #M# is used to delete lines for icu-config
+ # Current full path directory.
+ #CURR_FULL_DIR=$(shell pwd -W)#M# for MSYS
+-CURR_FULL_DIR=$(subst \,/,$(shell cmd /c cd | tail --bytes=+3))#M# for Cygwin shell
++CURR_FULL_DIR=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell
+ # Current full path directory for use in source code in a -D compiler option.
+ #CURR_SRCCODE_FULL_DIR=$(subst /,\\\\,$(shell pwd -W))#M# for MSYS
+-CURR_SRCCODE_FULL_DIR=$(subst \,/,$(shell cmd /c cd | tail --bytes=+3))#M# for Cygwin shell
++CURR_SRCCODE_FULL_DIR=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell
++SRCDIR_DEPEND=$(shell cd $(SRCDIR) && pwd)
++DATAFILEPATHS_DEPEND=$(foreach p,$(DATAFILEPATHS),$(shell cd $(dir $(p)) && pwd)/$(notdir $(p)))
+
+ ## Compilation rules
+ %.$(STATIC_O): $(srcdir)/%.c
+--- misc/icu/source/config/mh-solaris 2008-07-01 03:41:26.000000000 +0200
++++ misc/build/icu/source/config/mh-solaris 2009-02-17 11:54:45.105890123 +0100
+@@ -18,17 +18,24 @@
+
+ ## Commands to link
+ ## For Sun Workshop, use CC to link to bring in C++ runtime
+-LINK.c= $(CXX) $(CXXFLAGS) $(LDFLAGS)
+-LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS)
++LINK.c= $(CXX) $(CXXFLAGS) $(LDFLAGS) -norunpath
++LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -norunpath
+
+ ## Commands to make a shared library
+ SHLIB.c= $(CC) $(CFLAGS) $(LDFLAGS) -G
+-SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -G
++SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -G -norunpath
+
+ ## Compiler switch to embed a runtime search path
+ LD_RPATH= -R
+ LD_RPATH_PRE=
+
++## Force RPATH=$ORIGIN to locate own dependencies w/o need for LD_LIBRARY_PATH
++ENABLE_RPATH=YES
++RPATHLDFLAGS=${LD_RPATH}'$$ORIGIN'
++
++#SH# ENABLE_RPATH=YES
++#SH# RPATHLDFLAGS="${LD_RPATH}'$$ORIGIN'"
++
+ #LIBRARY_PATH_PREFIX=/usr/lib/lwp:
+
+ ## Compiler switch to embed a library name
+--- misc/icu/source/layout/ArabicShaping.cpp 2008-07-01 03:42:04.000000000 +0200
++++ misc/build/icu/source/layout/ArabicShaping.cpp 2009-02-17 12:04:34.264869737 +0100
+@@ -79,7 +79,6 @@
+ #define markFeatureMask 0x00040000UL
+ #define mkmkFeatureMask 0x00020000UL
+
+-#define NO_FEATURES 0
+ #define ISOL_FEATURES (isolFeatureMask | ligaFeatureMask | msetFeatureMask | markFeatureMask | ccmpFeatureMask | rligFeatureMask | caltFeatureMask | dligFeatureMask | cswhFeatureMask | cursFeatureMask | kernFeatureMask | mkmkFeatureMask)
+
+ #define SHAPE_MASK 0xF0000000UL
+@@ -174,11 +173,7 @@
+ LEUnicode c = chars[in];
+ ShapeType t = getShapeType(c);
+
+- if (t == ST_NOSHAPE_NONE) {
+- glyphStorage.setAuxData(out, NO_FEATURES, success);
+- } else {
+- glyphStorage.setAuxData(out, ISOL_FEATURES, success);
+- }
++ glyphStorage.setAuxData(out, ISOL_FEATURES, success);
+
+ if ((t & MASK_TRANSPARENT) != 0) {
+ continue;
+--- misc/icu/source/layoutex/ParagraphLayout.cpp 2008-07-01 03:42:02.000000000 +0200
++++ misc/build/icu/source/layoutex/ParagraphLayout.cpp 2008-12-01 19:32:58.000000000 +0100
+@@ -868,7 +868,7 @@
+
+ return nullLanguageCode;
+ }
+-#elif
++#else
+
+ // TODO - dummy implementation for right now...
+ le_int32 ParagraphLayout::getLanguageCode(const Locale *locale)
+--- misc/icu/source/tools/pkgdata/cmnmode.c 2008-07-01 10:41:20.000000000 +0900
++++ misc/build/icu/source/tools/pkgdata/cmnmode.c 2008-11-07 00:03:32.393500000 +0900
+@@ -69,7 +69,11 @@
+ sprintf(tmp, "# List file for gencmn:\n"
+ "CMNLIST=%s%s%s_common.lst\n\n",
+ o->tmpDir,
++#ifdef __MINGW32__
++ U_FILE_ALT_SEP_STRING,
++#else
+ U_FILE_SEP_STRING,
++#endif
+ o->shortName);
+ T_FileStream_writeLine(makefile, tmp);
+
+--- misc/icu/source/tools/pkgdata/dllmode.c 2008-07-01 10:41:20.000000000 +0900
++++ misc/build/icu/source/tools/pkgdata/dllmode.c 2008-11-07 06:08:36.016750000 +0900
+@@ -139,7 +139,11 @@
+ sprintf(tmp, "# List file for gencmn:\n"
+ "CMNLIST=%s%s$(NAME)_dll.lst\n\n",
+ o->tmpDir,
++#ifdef __MINGW32__
++ U_FILE_ALT_SEP_STRING);
++#else
+ U_FILE_SEP_STRING);
++#endif
+ T_FileStream_writeLine(makefile, tmp);
+
+ if(o->hadStdin == FALSE) { /* shortcut */
+--- misc/icu/source/tools/pkgdata/make.c 2008-07-01 10:41:20.000000000 +0900
++++ misc/build/icu/source/tools/pkgdata/make.c 2008-11-06 23:23:04.096625000 +0900
+@@ -313,8 +313,13 @@
+ uprv_strcpy(cfile+uprv_strlen(cfile)-uprv_strlen(objSuffix), ".c" ); /* replace .o with .c */
+
+ /* Make up parents.. */
++#ifdef __MINGW32__
++ parentPath = uprv_malloc(1+uprv_strlen(baseName) + uprv_strlen("$(SRCDIR_DEPEND)/"));
++ sprintf(parentPath, "$(SRCDIR_DEPEND)/%s", baseName);
++#else
+ parentPath = uprv_malloc(1+uprv_strlen(baseName) + uprv_strlen("$(SRCDIR)/"));
+ sprintf(parentPath, "$(SRCDIR)/%s", baseName);
++#endif
+ parents = pkg_appendToList(parents, NULL, parentPath);
+
+ /* make up commands.. */
+@@ -379,7 +384,11 @@
+ T_FileStream_writeLine(f, "\n");
+ T_FileStream_writeLine(f, "BASE_OBJECTS=$(NAME)_dat.o\n");
+ T_FileStream_writeLine(f, "\n");
++#ifdef __MINGW32__
++ T_FileStream_writeLine(f, "$(TEMP_DIR)/$(NAME).dat: $(CMNLIST) $(DATAFILEPATHS_DEPEND)\n");
++#else
+ T_FileStream_writeLine(f, "$(TEMP_DIR)/$(NAME).dat: $(CMNLIST) $(DATAFILEPATHS)\n");
++#endif
+ T_FileStream_writeLine(f, "\t$(INVOKE) $(ICUPKG) -t$(ICUDATA_CHAR) -c -s $(SRCDIR) -a $(CMNLIST) new $(TEMP_DIR)/$(CNAME).dat\n");
+ T_FileStream_writeLine(f, "\n");
+ T_FileStream_writeLine(f, "$(TEMP_DIR)/$(NAME)_dat.o : $(TEMP_DIR)/$(NAME).dat\n");
+--- misc/icu/source/tools/pkgdata/pkgdata.c 2008-07-01 10:41:20.000000000 +0900
++++ misc/build/icu/source/tools/pkgdata/pkgdata.c 2008-11-07 05:59:27.110500000 +0900
+@@ -594,7 +594,11 @@
+ exit(U_ILLEGAL_ARGUMENT_ERROR);
+ }
+ uprv_strcpy(tmp, o->srcDir);
++#ifdef __MINGW32__
++ uprv_strcat(tmp, o->srcDir[uprv_strlen(o->srcDir)-1]==U_FILE_SEP_CHAR?"":U_FILE_ALT_SEP_STRING);
++#else
+ uprv_strcat(tmp, o->srcDir[uprv_strlen(o->srcDir)-1]==U_FILE_SEP_CHAR?"":U_FILE_SEP_STRING);
++#endif
+ uprv_strcat(tmp, s);
+ o->filePaths = pkg_appendToList(o->filePaths, &tail2, uprv_strdup(tmp));
+ linePtr = lineNext;
+--- misc/icu/source/tools/pkgdata/sttcmode.c 2008-07-01 10:41:20.000000000 +0900
++++ misc/build/icu/source/tools/pkgdata/sttcmode.c 2008-11-07 00:30:05.690375000 +0900
+@@ -172,7 +172,11 @@
+ sprintf(tmp, "# List file for gencmn:\n"
+ "CMNLIST=%s%s$(NAME)_static.lst\n\n",
+ o->tmpDir,
++#ifdef __MINGW32__
++ U_FILE_ALT_SEP_STRING);
++#else
+ U_FILE_SEP_STRING);
++#endif
+ T_FileStream_writeLine(makefile, tmp);
+
+ if(o->hadStdin == FALSE) { /* shortcut */
diff --git a/icu/icuversion.mk b/icu/icuversion.mk
new file mode 100755
index 000000000000..eedf6276e598
--- /dev/null
+++ b/icu/icuversion.mk
@@ -0,0 +1,33 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# major
+ICU_MAJOR=4
+# minor
+ICU_MINOR=0
+# micro
+ICU_MICRO=1
+
diff --git a/icu/makefile.mk b/icu/makefile.mk
new file mode 100644
index 000000000000..8776ada87979
--- /dev/null
+++ b/icu/makefile.mk
@@ -0,0 +1,270 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=.
+
+PRJNAME=icu
+TARGET=so_icu
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+.INCLUDE : icuversion.mk
+
+.IF "$(ICU_MICRO)"!="0"
+TARFILE_NAME=icu4c-$(ICU_MAJOR)_$(ICU_MINOR)_$(ICU_MICRO)-src
+.ELSE
+TARFILE_NAME=icu4c-$(ICU_MAJOR)_$(ICU_MINOR)-src
+.ENDIF
+TARFILE_ROOTDIR=icu
+
+PATCH_FILES=${TARFILE_NAME}.patch
+
+# ADDITIONAL_FILES=
+
+.IF "$(GUI)"=="UNX"
+.IF "$(COMNAME)"=="sunpro5"
+#.IF "$(BUILD_TOOLS)$/cc"=="$(shell +-which cc)"
+#CC:=$(COMPATH)$/bin$/cc
+#CXX:=$(COMPATH)$/bin$/CC
+#.ENDIF # "$(BUILD_TOOLS)$/cc"=="$(shell +-which cc)"
+.ENDIF # "$(COMNAME)"=="sunpro5"
+
+.IF "$(SYSBASE)"!=""
+icu_CFLAGS+=-I$(SYSBASE)$/usr$/include
+.IF "$(COMNAME)"=="sunpro5"
+icu_CFLAGS+=$(C_RESTRICTIONFLAGS)
+.ENDIF # "$(COMNAME)"=="sunpro5"
+# add SYSBASE libraries and make certain that they are found *after* the
+# icu build internal libraries - in case that icu is available in SYSBASE
+# as well
+icu_LDFLAGS+= -L../lib -L../../lib -L../stubdata -L../../stubdata -L$(SYSBASE)$/usr$/lib
+.ENDIF # "$(SYSBASE)"!=""
+
+.IF "$(OS)"=="MACOSX"
+.IF "$(EXTRA_CFLAGS)"!=""
+CPP:=gcc -E $(EXTRA_CFLAGS)
+CXX:=g++ $(EXTRA_CFLAGS)
+CC:=gcc $(EXTRA_CFLAGS)
+.EXPORT : CPP
+.ENDIF # "$(EXTRA_CFLAGS)"!=""
+.ENDIF # "$(OS)"=="MACOSX"
+
+# Disable executable stack
+.IF "$(OS)$(COM)"=="LINUXGCC"
+icu_LDFLAGS+=-Wl,-z,noexecstack
+.ENDIF
+
+icu_CFLAGS+=-O $(ARCH_FLAGS) $(EXTRA_CDEFS)
+icu_LDFLAGS+=$(EXTRA_LINKFLAGS)
+icu_CXXFLAGS+=-O $(ARCH_FLAGS) $(EXTRA_CDEFS)
+
+BUILD_ACTION_SEP=;
+# remove conversion and transliteration data to reduce binary size.
+CONFIGURE_ACTION=rm data/mappings/ucm*.mk data/translit/trn*.mk $(BUILD_ACTION_SEP)
+
+# until someone introduces SOLARIS 64-bit builds
+.IF "$(OS)"=="SOLARIS"
+DISABLE_64BIT=--enable-64bit-libs=no
+.ENDIF # "$(OS)"=="SOLARIS"
+
+.IF "$(HAVE_LD_HASH_STYLE)" == "TRUE"
+LDFLAGSADD += -Wl,--hash-style=both
+.ENDIF
+
+.IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS)" == "TRUE"
+LDFLAGSADD += -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo
+.ENDIF
+
+CONFIGURE_DIR=source
+
+CONFIGURE_ACTION+=sh -c 'CFLAGS="$(icu_CFLAGS)" CXXFLAGS="$(icu_CXXFLAGS)" LDFLAGS="$(icu_LDFLAGS) $(LDFLAGSADD)" ./configure --enable-layout --enable-static --enable-shared=yes $(DISABLE_64BIT)'
+
+#CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
+CONFIGURE_FLAGS=
+
+# Use of
+# CONFIGURE_ACTION=sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure'
+# CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
+# doesn't work as it would result in
+# sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure' --enable-layout ...
+# note the position of the single quotes.
+
+BUILD_DIR=$(CONFIGURE_DIR)
+BUILD_ACTION=$(AUGMENT_LIBRARY_PATH) $(GNUMAKE)
+OUT2LIB= \
+ $(BUILD_DIR)$/lib$/libicudata$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
+ $(BUILD_DIR)$/lib$/libicudata$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
+ $(BUILD_DIR)$/lib$/libicudata$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
+ $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
+ $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
+ $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
+ $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/libicule$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
+ $(BUILD_DIR)$/lib$/libicule$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
+ $(BUILD_DIR)$/lib$/libicule$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/libicutu$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
+ $(BUILD_DIR)$/lib$/libicutu$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
+ $(BUILD_DIR)$/lib$/libicutu$(DLLPOST)
+
+OUT2BIN= \
+ $(BUILD_DIR)$/bin$/genccode \
+ $(BUILD_DIR)$/bin$/genbrk \
+ $(BUILD_DIR)$/bin$/gencmn
+
+.ENDIF
+
+.IF "$(GUI)"=="WNT"
+CONFIGURE_DIR=source
+.IF "$(COM)"=="GCC"
+CONFIGURE_ACTION=rm data/mappings/ucm*.mk data/translit/trn*.mk ;
+.IF "$(MINGW_SHARED_GCCLIB)"=="YES"
+icu_LDFLAGS+=-shared-libgcc
+.ENDIF
+.IF "$(USE_MINGW)"=="cygwin"
+icu_LDFLAGS+=-L$(COMPATH)/lib/mingw -L$(COMPATH)/lib/w32api
+.ENDIF
+icu_LDFLAGS+=-L$(COMPATH)$/lib
+icu_LIBS=-lmingwthrd
+.IF "$(MINGW_SHARED_GXXLIB)"=="YES"
+icu_LIBS+=-lstdc++_s
+.ENDIF
+CONFIGURE_ACTION+=sh -c 'CFLAGS="-O -D_MT" CXXFLAGS="-O -D_MT" LDFLAGS="$(icu_LDFLAGS)" LIBS="$(icu_LIBS)" ./configure --build=i586-pc-mingw32 --enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no'
+
+#CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
+CONFIGURE_FLAGS=
+
+# Use of
+# CONFIGURE_ACTION=sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure'
+# CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
+# doesn't work as it would result in
+# sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure' --enable-layout ...
+# note the position of the single quotes.
+
+BUILD_DIR=$(CONFIGURE_DIR)
+BUILD_ACTION=$(GNUMAKE)
+OUT2LIB=
+
+OUT2BIN= \
+ $(BUILD_DIR)$/lib$/icudt$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/icuuc$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/icuin$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/icule$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
+ $(BUILD_DIR)$/lib$/icutu$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
+ $(BUILD_DIR)$/bin$/genccode.exe \
+ $(BUILD_DIR)$/bin$/genbrk.exe \
+ $(BUILD_DIR)$/bin$/gencmn.exe
+
+.ELSE
+.IF "$(USE_SHELL)"=="4nt"
+BUILD_ACTION_SEP=^
+.ELSE
+BUILD_ACTION_SEP=;
+.ENDIF # "$(USE_SHELL)"=="4nt"
+BUILD_DIR=source
+.IF "full_debug" == ""
+
+# Activating the debug mechanism produces incompatible libraries, you'd have
+# at least to relink all modules that are directly using ICU. Note that library
+# names get a 'd' appended and you'd have to edit the solenv/inc/libs.mk
+# ICU*LIB macros as well. Normally you don't want all this.
+#
+# Instead, use the normal already existing Release build and edit the
+# corresponding *.vcproj file of the section you're interested in. Make sure
+# that
+# - for the VCCLCompilerTool section the following line exists:
+# DebugInformationFormat="3"
+# - and for the VCLinkerTool the line
+# GenerateDebugInformation="TRUE"
+# Then delete the corresponding Release output directory, and delete the target
+# flag files
+# $(OUTPATH)/misc/build/so_built_so_icu
+# $(OUTPATH)/misc/build/so_predeliver_so_icu
+# and run dmake again, after which you may copy the resulting libraries to your
+# OOo/SO installation.
+ICU_BUILD_VERSION=Debug
+ICU_BUILD_LIBPOST=d
+.ELSE
+ICU_BUILD_VERSION=Release
+ICU_BUILD_LIBPOST=
+.ENDIF
+
+CONFIGURE_ACTION+= $(PERL) ..$/..$/..$/..$/..$/createmak.pl ..$/..$/..$/..$/..$/createmak.cfg .
+
+.IF "$(CCNUMVER)"<="001400000000"
+BUILD_ACTION=cd allinone && nmake /f all.mak EXFLAGS="-EHsc" && cd ..$/..
+.ELSE
+BUILD_ACTION=cd allinone && nmake /f all.mak EXFLAGS="-EHa -Zc:wchar_t-" && cd ..$/..
+.ENDIF
+
+OUT2LIB= \
+ $(BUILD_DIR)$/..$/lib$/icudata.lib \
+ $(BUILD_DIR)$/..$/lib$/icuin$(ICU_BUILD_LIBPOST).lib \
+ $(BUILD_DIR)$/..$/lib$/icuuc$(ICU_BUILD_LIBPOST).lib \
+ $(BUILD_DIR)$/..$/lib$/icule$(ICU_BUILD_LIBPOST).lib \
+ $(BUILD_DIR)$/..$/lib$/icutu$(ICU_BUILD_LIBPOST).lib
+
+OUT2BIN= \
+ $(BUILD_DIR)$/..$/bin$/icudt$(ICU_MAJOR)$(ICU_MINOR).dll \
+ $(BUILD_DIR)$/..$/bin$/icuin$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
+ $(BUILD_DIR)$/..$/bin$/icuuc$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
+ $(BUILD_DIR)$/..$/bin$/icule$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
+ $(BUILD_DIR)$/..$/bin$/icutu$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
+ $(BUILD_DIR)$/..$/bin$/genccode.exe \
+ $(BUILD_DIR)$/..$/bin$/genbrk.exe \
+ $(BUILD_DIR)$/..$/bin$/gencmn.exe
+
+.ENDIF
+.ENDIF # "$(GUI)"=="WNT"
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.INCLUDE : tg_ext.mk
+
+.IF "$(BINARY_PATCH_FILES)"!=""
+
+$(PACKAGE_DIR)$/so_add_binary : $(PACKAGE_DIR)$/$(ADD_FILES_FLAG_FILE)
+ cd $(PACKAGE_DIR) && gunzip -c $(BACK_PATH)$(BINARY_PATCH_FILES) | tar $(TAR_EXCLUDE_SWITCH) -xvf -
+ $(TOUCH) $(PACKAGE_DIR)$/so_add_binary
+
+$(PACKAGE_DIR)$/$(CONFIGURE_FLAG_FILE) : $(PACKAGE_DIR)$/so_add_binary
+
+.ENDIF
+
+# Since you never know what will be in a patch (for example, it may already
+# patch at configure level) or in the case of a binary patch, we remove the
+# entire package directory if a patch is newer.
+# Changes in this makefile could also make a complete build necessary if
+# configure is affected.
+$(PACKAGE_DIR)$/$(UNTAR_FLAG_FILE) : makefile.mk
+
diff --git a/icu/prj/build.lst b/icu/prj/build.lst
new file mode 100644
index 000000000000..c633589000c6
--- /dev/null
+++ b/icu/prj/build.lst
@@ -0,0 +1,4 @@
+ic icu : solenv external NULL
+ic icu usr1 - all ic_mkout NULL
+ic icu nmake - u ic_icu NULL
+ic icu nmake - w,vc7 ic_icu NULL
diff --git a/icu/prj/d.lst b/icu/prj/d.lst
new file mode 100644
index 000000000000..c5d777277ead
--- /dev/null
+++ b/icu/prj/d.lst
@@ -0,0 +1,36 @@
+mkdir: %_DEST%\inc%_EXT%\icu
+mkdir: %_DEST%\inc%_EXT%\external\icu
+mkdir: %_DEST%\inc%_EXT%\external\layout
+mkdir: %_DEST%\inc%_EXT%\external\unicode
+..\%__SRC%\misc\build\icu\source\layout\*.h %_DEST%\inc%_EXT%\external\layout\*.h
+..\%__SRC%\misc\build\icu\source\common\unicode\*.h %_DEST%\inc%_EXT%\external\unicode\*.h
+..\%__SRC%\misc\build\icu\source\i18n\unicode\*.h %_DEST%\inc%_EXT%\external\unicode\*.h
+
+..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
+..\%__SRC%\lib\*.lib %_DEST%\lib%_EXT%\*.lib
+
+..\%__SRC%\bin\icudt40.dll %_DEST%\bin%_EXT%\icudt40.dll
+..\%__SRC%\bin\icuin40.dll %_DEST%\bin%_EXT%\icuin40.dll
+..\%__SRC%\bin\icule40.dll %_DEST%\bin%_EXT%\icule40.dll
+..\%__SRC%\bin\icutu40.dll %_DEST%\bin%_EXT%\icutu40.dll
+..\%__SRC%\bin\icuuc40.dll %_DEST%\bin%_EXT%\icuuc40.dll
+
+..\%__SRC%\bin\genccode %_DEST%\bin%_EXT%\genccode
+..\%__SRC%\bin\genccode.exe %_DEST%\bin%_EXT%\genccode.exe
+..\%__SRC%\bin\genbrk %_DEST%\bin%_EXT%\genbrk
+..\%__SRC%\bin\genbrk.exe %_DEST%\bin%_EXT%\genbrk.exe
+..\%__SRC%\bin\gencmn %_DEST%\bin%_EXT%\gencmn
+..\%__SRC%\bin\gencmn.exe %_DEST%\bin%_EXT%\gencmn.exe
+
+..\%__SRC%\lib\libicudata.*.*.* %_DEST%\lib%_EXT%\
+..\%__SRC%\lib\libicui18n.*.*.* %_DEST%\lib%_EXT%\
+..\%__SRC%\lib\libicule.*.*.* %_DEST%\lib%_EXT%\
+..\%__SRC%\lib\libicuuc.*.*.* %_DEST%\lib%_EXT%\
+..\%__SRC%\lib\libicutu.*.*.* %_DEST%\lib%_EXT%\
+..\icuversion.mk %_DEST%\inc%_EXT%\icuversion.mk
+
+linklib: libicudata.*.*.*
+linklib: libicui18n.*.*.*
+linklib: libicule.*.*.*
+linklib: libicuuc.*.*.*
+linklib: libicutu.*.*.*