1 #*************************************************************************
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 # Copyright 2000, 2010 Oracle and/or its affiliates.
7 # OpenOffice.org - a multi-platform office productivity suite
9 # This file is part of OpenOffice.org.
11 # OpenOffice.org is free software: you can redistribute it and/or modify
12 # it under the terms of the GNU Lesser General Public License version 3
13 # only, as published by the Free Software Foundation.
15 # OpenOffice.org is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU Lesser General Public License version 3 for more details
19 # (a copy is included in the LICENSE file that accompanied this code).
21 # You should have received a copy of the GNU Lesser General Public License
22 # version 3 along with OpenOffice.org. If not, see
23 # <http://www.openoffice.org/license.html>
24 # for a copy of the LGPLv3 License.
26 #*************************************************************************
32 # --- Settings -----------------------------------------------------
34 .INCLUDE
: settings.mk
36 # --- Files --------------------------------------------------------
38 .INCLUDE
: icuversion.mk
40 TARFILE_NAME
=icu4c-4_4_2-src
41 TARFILE_MD5
=314e582264c36b3735466c522899aa07
44 #icu4c.8320.freeserif.crash.patch, see
45 #http://bugs.icu-project.org/trac/ticket/8320 for crash with FreeSerif
50 icu4c
.8320.freeserif.crash.patch \
52 icu4c-4_4_2-wchar_t.patch \
53 icu4c-warnings.patch \
54 icu4c-escapespace.patch \
57 .IF
"$(OS)"=="ANDROID"
65 icu_CFLAGS
+=-I
$(SYSBASE
)$/usr
$/include
66 .IF
"$(COMNAME)"=="sunpro5"
67 icu_CFLAGS
+=$(C_RESTRICTIONFLAGS
)
68 .ENDIF
# "$(COMNAME)"=="sunpro5"
69 # add SYSBASE libraries and make certain that they are found *after* the
70 # icu build internal libraries - in case that icu is available in SYSBASE
72 icu_LDFLAGS
+= -L..
/lib
-L..
/..
/lib
-L..
/stubdata
-L..
/..
/stubdata
-L
$(SYSBASE
)$/usr
$/lib
73 .ENDIF
# "$(SYSBASE)"!=""
76 .IF
"$(EXTRA_CFLAGS)"!=""
77 CPP
:=gcc
-E
$(EXTRA_CFLAGS
)
78 CXX
:=g
++ $(EXTRA_CFLAGS
)
79 CC
:=gcc
$(EXTRA_CFLAGS
)
81 .ENDIF
# "$(EXTRA_CFLAGS)"!=""
82 .ENDIF
# "$(OS)"=="MACOSX"
85 icu_CFLAGS+=-g $(ARCH_FLAGS)
86 icu_CXXFLAGS+=-g $(ARCH_FLAGS)
88 icu_CFLAGS+=-O $(ARCH_FLAGS)
89 icu_CXXFLAGS+=-O $(ARCH_FLAGS)
91 icu_LDFLAGS+=$(EXTRA_LINKFLAGS)
93 # until someone introduces SOLARIS 64-bit builds
94 .IF "$(OS
)"=="SOLARIS
"
95 DISABLE_64BIT=--enable-64bit-libs=no
96 .ENDIF # "$(OS
)"=="SOLARIS
"
99 DISABLE_64BIT=--enable-64bit-libs=no
100 LDFLAGSADD+=$(LINKFLAGS) $(LINKFLAGSRUNPATH_OOO)
101 .ENDIF # "$(OS
)"=="AIX
"
103 .IF "$(HAVE_LD_HASH_STYLE
)" == "TRUE
"
104 LDFLAGSADD += -Wl,--hash-style=both
109 icu_CFLAGS+=-DUCONFIG_NO_FILE_IO
112 .IF "$(OS
)"=="ANDROID
"
113 # Problems with uint64_t on Android unless disabling strictness
114 DISABLE_STRICT=--disable-strict
115 icu_CFLAGS+=-fno-omit-frame-pointer
116 icu_CXXFLAGS+=-fno-omit-frame-pointer
119 .IF "$(OS
)"=="IOS
" || "$(OS
)"=="ANDROID
"
120 # Problems with uint64_t on Android unless disabling strictness
121 DISABLE_DYLOAD=--disable-dyload
124 .IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS
)" == "TRUE
"
125 LDFLAGSADD += -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo
131 STATIC_OR_SHARED=--enable-static --disable-shared
133 STATIC_OR_SHARED=--disable-static --enable-shared
136 .IF "$(CROSS_COMPILING
)"=="YES
"
137 # We require that the cross-build-toolset target from the top Makefile(.in) has bee built
138 BUILD_AND_HOST=--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --with-cross-build=$(posix_PWD)/$(INPATH_FOR_BUILD)/misc/build/icu/source
141 .IF "$(OS
)"=="ANDROID
"
142 LIBRARY_SUFFIX= --with-library-suffix=lo
143 icu_LDFLAGS+=-lgnustl_shared
146 CONFIGURE_ACTION+=sh -c 'CPPFLAGS="$(EXTRA_CDEFS
)" CFLAGS="$(icu_CFLAGS
)" CXXFLAGS="$(icu_CXXFLAGS
)" LDFLAGS="$(icu_LDFLAGS
) $(LDFLAGSADD
)" \
147 ./configure --enable-layout $(STATIC_OR_SHARED) $(BUILD_AND_HOST) $(DISABLE_64BIT) $(DISABLE_STRICT) $(DISABLE_DYLOAD) $(LIBRARY_SUFFIX)'
152 # CONFIGURE_ACTION=sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure'
153 # CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
154 # doesn't work as it would result in
155 # sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure' --enable-layout ...
156 # note the position of the single quotes.
158 BUILD_DIR=$(CONFIGURE_DIR)
159 BUILD_ACTION=$(AUGMENT_LIBRARY_PATH) $(GNUMAKE) -j$(EXTMAXPROCESS)
162 $(BUILD_DIR)$/lib$/libicudata.a \
163 $(BUILD_DIR)$/lib$/libicuuc.a \
164 $(BUILD_DIR)$/lib$/libicui18n.a \
165 $(BUILD_DIR)$/lib$/libicule.a \
166 $(BUILD_DIR)$/lib$/libicutu.a
167 .ELIF "$(OS
)"=="ANDROID
"
169 $(BUILD_DIR)$/lib$/libicudatalo.so \
170 $(BUILD_DIR)$/lib$/libicuuclo.so \
171 $(BUILD_DIR)$/lib$/libicui18nlo.so \
172 $(BUILD_DIR)$/lib$/libiculelo.so \
173 $(BUILD_DIR)$/lib$/libicutulo.so
176 $(BUILD_DIR)$/lib$/libicudata$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
177 $(BUILD_DIR)$/lib$/libicudata$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
178 $(BUILD_DIR)$/lib$/libicudata$(DLLPOST) \
179 $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
180 $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
181 $(BUILD_DIR)$/lib$/libicuuc$(DLLPOST) \
182 $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
183 $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
184 $(BUILD_DIR)$/lib$/libicui18n$(DLLPOST) \
185 $(BUILD_DIR)$/lib$/libicule$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
186 $(BUILD_DIR)$/lib$/libicule$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
187 $(BUILD_DIR)$/lib$/libicule$(DLLPOST) \
188 $(BUILD_DIR)$/lib$/libicutu$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR).$(ICU_MICRO) \
189 $(BUILD_DIR)$/lib$/libicutu$(DLLPOST).$(ICU_MAJOR)$(ICU_MINOR) \
190 $(BUILD_DIR)$/lib$/libicutu$(DLLPOST)
193 $(BUILD_DIR)$/bin$/genccode \
194 $(BUILD_DIR)$/bin$/genbrk \
195 $(BUILD_DIR)$/bin$/gencmn
203 .IF "$(MINGW_SHARED_GCCLIB
)"=="YES
"
204 icu_LDFLAGS+=-shared-libgcc
206 icu_LDFLAGS+=-L$(COMPATH)$/lib
208 .IF "$(MINGW_SHARED_GXXLIB
)"=="YES
"
209 icu_LIBS+=$(MINGW_SHARED_LIBSTDCPP)
211 icu_LDFLAGS+=-Wl,--enable-runtime-pseudo-reloc-v2
213 .IF "$(CROSS_COMPILING
)"=="YES
"
214 # We require that the cross-build-toolset target from the top Makefile(.in) has bee built
215 BUILD_AND_HOST=--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --with-cross-build=$(posix_PWD)/$(INPATH_FOR_BUILD)/misc/build/icu/source
217 BUILD_AND_HOST=--build=i586-pc-mingw32 --enable-64bit-libs=no
220 CONFIGURE_ACTION+=sh -c 'CFLAGS="-O
-D_MT
" CXXFLAGS="-O
-D_MT
" LDFLAGS="$(icu_LDFLAGS
)" LIBS="$(icu_LIBS
)" \
221 ./configure $(BUILD_AND_HOST) --enable-layout --disable-static --enable-shared'
226 # CONFIGURE_ACTION=sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure'
227 # CONFIGURE_FLAGS=--enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no
228 # doesn't work as it would result in
229 # sh -c 'CFLAGS=-O CXXFLAGS=-O ./configure' --enable-layout ...
230 # note the position of the single quotes.
232 BUILD_DIR=$(CONFIGURE_DIR)
233 BUILD_ACTION=$(GNUMAKE)
237 $(BUILD_DIR)$/lib$/icudt$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
238 $(BUILD_DIR)$/lib$/icuuc$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
239 $(BUILD_DIR)$/lib$/icuin$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
240 $(BUILD_DIR)$/lib$/icule$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
241 $(BUILD_DIR)$/lib$/icutu$(ICU_MAJOR)$(ICU_MINOR)$(DLLPOST) \
242 $(BUILD_DIR)$/bin$/genccode.exe \
243 $(BUILD_DIR)$/bin$/genbrk.exe \
244 $(BUILD_DIR)$/bin$/gencmn.exe
248 .IF "full_debug
" == ""
250 # Activating the debug mechanism produces incompatible libraries, you'd have
251 # at least to relink all modules that are directly using ICU. Note that library
252 # names get a 'd' appended and you'd have to edit the solenv/inc/libs.mk
253 # ICU*LIB macros as well. Normally you don't want all this.
255 # Instead, use the normal already existing Release build and edit the
256 # corresponding *.vcproj file of the section you're interested in. Make sure
258 # - for the VCCLCompilerTool section the following line exists:
259 # DebugInformationFormat="3"
260 # - and for the VCLinkerTool the line
261 # GenerateDebugInformation="TRUE
"
262 # Then delete the corresponding Release output directory, and delete the target
264 # $(OUTPATH)/misc/build/so_built_so_icu
265 # $(OUTPATH)/misc/build/so_predeliver_so_icu
266 # and run dmake again, after which you may copy the resulting libraries to your
267 # OOo/SO installation.
268 ICU_BUILD_VERSION=Debug
271 ICU_BUILD_VERSION=Release
281 .IF "$(CCNUMVER
)" >= "001600000000"
282 BUILD_ACTION=cd allinone && MSBuild.exe allinone.sln /p:Configuration=$(ICU_BUILD_VERSION) /p:Platform=$(ICU_BUILD_ARCH)
284 BUILD_ACTION=cd allinone && $(COMPATH)$/vcpackages$/vcbuild.exe allinone.sln "$(ICU_BUILD_VERSION
)|
$(ICU_BUILD_ARCH
)"
288 $(BUILD_DIR)$/..$/lib$/icudt.lib \
289 $(BUILD_DIR)$/..$/lib$/icuin$(ICU_BUILD_LIBPOST).lib \
290 $(BUILD_DIR)$/..$/lib$/icuuc$(ICU_BUILD_LIBPOST).lib \
291 $(BUILD_DIR)$/..$/lib$/icule$(ICU_BUILD_LIBPOST).lib \
292 $(BUILD_DIR)$/..$/lib$/icutu$(ICU_BUILD_LIBPOST).lib
295 $(BUILD_DIR)$/..$/bin$/icudt$(ICU_MAJOR)$(ICU_MINOR).dll \
296 $(BUILD_DIR)$/..$/bin$/icuin$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
297 $(BUILD_DIR)$/..$/bin$/icuuc$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
298 $(BUILD_DIR)$/..$/bin$/icule$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
299 $(BUILD_DIR)$/..$/bin$/icutu$(ICU_MAJOR)$(ICU_MINOR)$(ICU_BUILD_LIBPOST).dll \
300 $(BUILD_DIR)$/..$/bin$/genccode.exe \
301 $(BUILD_DIR)$/..$/bin$/genbrk.exe \
302 $(BUILD_DIR)$/..$/bin$/gencmn.exe
305 .ENDIF # "$(GUI
)"=="WNT
"
307 # --- Targets ------------------------------------------------------
309 .INCLUDE : set_ext.mk
313 .IF "$(BINARY_PATCH_FILES
)"!=""
315 $(PACKAGE_DIR)$/so_add_binary : $(PACKAGE_DIR)$/$(ADD_FILES_FLAG_FILE)
316 cd $(PACKAGE_DIR) && gunzip -c $(BACK_PATH)$(BINARY_PATCH_FILES) | tar -xvf -
317 $(TOUCH) $(PACKAGE_DIR)$/so_add_binary
319 $(PACKAGE_DIR)$/$(CONFIGURE_FLAG_FILE) : $(PACKAGE_DIR)$/so_add_binary
323 .IF "$(GUI
)$(COM
)"=="WNTGCC
"
326 $(LB)$/icuin$(ICU_BUILD_LIBPOST).lib \
327 $(LB)$/icuuc$(ICU_BUILD_LIBPOST).lib \
328 $(LB)$/icule$(ICU_BUILD_LIBPOST).lib \
329 $(LB)$/icutu$(ICU_BUILD_LIBPOST).lib
331 $(LB)$/icudata.lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
334 $(LB)$/icuin$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
337 $(LB)$/icuuc$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
340 $(LB)$/icule$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
343 $(LB)$/icutu$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
347 # Since you never know what will be in a patch (for example, it may already
348 # patch at configure level) or in the case of a binary patch, we remove the
349 # entire package directory if a patch is newer.
350 # Changes in this makefile could also make a complete build necessary if
351 # configure is affected.
352 $(PACKAGE_DIR)$/$(UNTAR_FLAG_FILE) : makefile.mk