dont attach, start own instance as otherwise it might be blocked via/proc/sys/kernel...
[LibreOffice.git] / icu / makefile.mk
blob595ed2028354460627ec052721e3e1316f126cfd
1 #*************************************************************************
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 #
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 #*************************************************************************
27 PRJ=.
29 PRJNAME=icu
30 TARGET=so_icu
32 # --- Settings -----------------------------------------------------
34 .INCLUDE : settings.mk
36 # --- Files --------------------------------------------------------
38 .INCLUDE : icuversion.mk
40 TARFILE_NAME=icu4c-4_4_2-src
41 TARFILE_MD5=314e582264c36b3735466c522899aa07
42 TARFILE_ROOTDIR=icu
44 #icu4c.8320.freeserif.crash.patch, see
45 #http://bugs.icu-project.org/trac/ticket/8320 for crash with FreeSerif
47 PATCH_FILES=\
48 icu4c-build.patch \
49 icu4c-rpath.patch \
50 icu4c.8320.freeserif.crash.patch \
51 icu4c-aix.patch \
52 icu4c-4_4_2-wchar_t.patch \
53 icu4c-warnings.patch \
54 icu4c-escapespace.patch \
55 icu4c-strict-c.patch
57 .IF "$(OS)"=="ANDROID"
58 PATCH_FILES+=\
59 icu4c-android.patch
60 .ENDIF
62 .IF "$(GUI)"=="UNX"
64 .IF "$(SYSBASE)"!=""
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
71 # as well
72 icu_LDFLAGS+= -L../lib -L../../lib -L../stubdata -L../../stubdata -L$(SYSBASE)$/usr$/lib
73 .ENDIF # "$(SYSBASE)"!=""
75 .IF "$(OS)"=="MACOSX"
76 .IF "$(EXTRA_CFLAGS)"!=""
77 CPP:=gcc -E $(EXTRA_CFLAGS)
78 CXX:=g++ $(EXTRA_CFLAGS)
79 CC:=gcc $(EXTRA_CFLAGS)
80 .EXPORT : CPP
81 .ENDIF # "$(EXTRA_CFLAGS)"!=""
82 .ENDIF # "$(OS)"=="MACOSX"
84 .IF "$(debug) != ""
85 icu_CFLAGS+=-g $(ARCH_FLAGS)
86 icu_CXXFLAGS+=-g $(ARCH_FLAGS)
87 .ELSE
88 icu_CFLAGS+=-O $(ARCH_FLAGS)
89 icu_CXXFLAGS+=-O $(ARCH_FLAGS)
90 .ENDIF
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"
98 .IF "$(OS)"=="AIX"
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
105 .ENDIF
107 .IF "$(OS)"=="IOS"
108 # Let's try this...
109 icu_CFLAGS+=-DUCONFIG_NO_FILE_IO
110 .ENDIF
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
117 .ENDIF
119 .IF "$(OS)"=="IOS" || "$(OS)"=="ANDROID"
120 # Problems with uint64_t on Android unless disabling strictness
121 DISABLE_DYLOAD=--disable-dyload
122 .ENDIF
124 .IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS)" == "TRUE"
125 LDFLAGSADD += -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo
126 .ENDIF
128 CONFIGURE_DIR=source
130 .IF "$(OS)"=="IOS"
131 STATIC_OR_SHARED=--enable-static --disable-shared
132 .ELSE
133 STATIC_OR_SHARED=--disable-static --enable-shared
134 .ENDIF
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
139 .ENDIF
141 .IF "$(OS)"=="ANDROID"
142 LIBRARY_SUFFIX= --with-library-suffix=lo
143 icu_LDFLAGS+=-lgnustl_shared
144 .ENDIF
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)'
149 CONFIGURE_FLAGS=
151 # Use of
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)
160 .IF "$(OS)"=="IOS"
161 OUT2LIB= \
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"
168 OUT2LIB= \
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
174 .ELSE
175 OUT2LIB= \
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)
192 OUT2BIN= \
193 $(BUILD_DIR)$/bin$/genccode \
194 $(BUILD_DIR)$/bin$/genbrk \
195 $(BUILD_DIR)$/bin$/gencmn
196 .ENDIF
198 .ENDIF
200 .IF "$(GUI)"=="WNT"
201 CONFIGURE_DIR=source
202 .IF "$(COM)"=="GCC"
203 .IF "$(MINGW_SHARED_GCCLIB)"=="YES"
204 icu_LDFLAGS+=-shared-libgcc
205 .ENDIF
206 icu_LDFLAGS+=-L$(COMPATH)$/lib
207 icu_LIBS=
208 .IF "$(MINGW_SHARED_GXXLIB)"=="YES"
209 icu_LIBS+=$(MINGW_SHARED_LIBSTDCPP)
210 .ENDIF
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
216 .ELSE
217 BUILD_AND_HOST=--build=i586-pc-mingw32 --enable-64bit-libs=no
218 .ENDIF
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'
223 CONFIGURE_FLAGS=
225 # Use of
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)
234 OUT2LIB=
236 OUT2BIN= \
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
246 .ELSE
247 BUILD_DIR=source
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
257 # that
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
263 # flag files
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
269 ICU_BUILD_LIBPOST=d
270 .ELSE
271 ICU_BUILD_VERSION=Release
272 ICU_BUILD_LIBPOST=
273 .ENDIF
275 .IF "$(CPU)" == "I"
276 ICU_BUILD_ARCH=Win32
277 .ELSE
278 ICU_BUILD_ARCH=x64
279 .ENDIF
281 .IF "$(CCNUMVER)" >= "001600000000"
282 BUILD_ACTION=cd allinone && MSBuild.exe allinone.sln /p:Configuration=$(ICU_BUILD_VERSION) /p:Platform=$(ICU_BUILD_ARCH)
283 .ELSE
284 BUILD_ACTION=cd allinone && $(COMPATH)$/vcpackages$/vcbuild.exe allinone.sln "$(ICU_BUILD_VERSION)|$(ICU_BUILD_ARCH)"
285 .ENDIF
287 OUT2LIB= \
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
294 OUT2BIN= \
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
304 .ENDIF
305 .ENDIF # "$(GUI)"=="WNT"
307 # --- Targets ------------------------------------------------------
309 .INCLUDE : set_ext.mk
310 .INCLUDE : target.mk
311 .INCLUDE : tg_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
321 .ENDIF
323 .IF "$(GUI)$(COM)"=="WNTGCC"
324 ALLTAR : \
325 $(LB)$/icudata.lib \
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)
332 $(TOUCH) $@
334 $(LB)$/icuin$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
335 $(TOUCH) $@
337 $(LB)$/icuuc$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
338 $(TOUCH) $@
340 $(LB)$/icule$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
341 $(TOUCH) $@
343 $(LB)$/icutu$(ICU_BUILD_LIBPOST).lib : $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE)
344 $(TOUCH) $@
345 .ENDIF
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