]>
Commit | Line | Data |
---|---|---|
b75a7d8f A |
1 | # Make definitions that are shared by the different subprojects of ICU. |
2 | # | |
3 | # Yves Arrouye. | |
4 | # | |
2ca993e8 | 5 | # Copyright (C) 2000-2016, International Business Machines Corporation and others. |
b75a7d8f A |
6 | # All Rights Reserved. |
7 | ||
8 | # | |
9 | # Some of these variables are overridden in the config/mh-* files. | |
b331163b | 10 | # |
46f4442e | 11 | # Please be sure to update config/Makefile.inc.in if you add something here. |
b75a7d8f A |
12 | # |
13 | ||
14 | # Shell to use | |
15 | ||
16 | SHELL = @SHELL@ | |
17 | ||
18 | # Standard directories | |
19 | ||
20 | prefix = @prefix@ | |
21 | exec_prefix = @exec_prefix@ | |
22 | ||
23 | bindir = @bindir@ | |
24 | sbindir = @sbindir@ | |
46f4442e | 25 | datarootdir = @datarootdir@ |
b75a7d8f A |
26 | datadir = @datadir@ |
27 | libdir = @libdir@ | |
28 | includedir = @includedir@ | |
29 | mandir = @mandir@ | |
30 | sysconfdir = @sysconfdir@ | |
729e4ab9 A |
31 | # controls the include of $(top_builddir)/icucross.mk at bottom of file |
32 | cross_compiling = @cross_compiling@ | |
33 | cross_buildroot = @cross_buildroot@ | |
b75a7d8f A |
34 | |
35 | # Package information | |
36 | ||
729e4ab9 A |
37 | PACKAGE_ICU_DESCRIPTION = "International Components for Unicode" |
38 | PACKAGE_ICU_URL = "http://icu-project.org" | |
b75a7d8f A |
39 | PACKAGE = @PACKAGE@ |
40 | VERSION = @VERSION@ | |
41 | UNICODE_VERSION = @UNICODE_VERSION@ | |
42 | SO_TARGET_VERSION = @LIB_VERSION@ | |
43 | SO_TARGET_VERSION_MAJOR = @LIB_VERSION_MAJOR@ | |
44 | ||
45 | # The ICU data external name is usually icudata; the entry point name is | |
374ca955 | 46 | # the version-dependent name (for no particular reason except it was easier |
b75a7d8f A |
47 | # to change the build this way). When building in common mode, the data |
48 | # name is the versioned platform-dependent one. | |
49 | ||
50 | ICUDATA_DIR = @pkgicudatadir@/$(PACKAGE)$(ICULIBSUFFIX)/$(VERSION) | |
51 | ||
52 | ICUDATA_BASENAME_VERSION = $(ICUPREFIX)dt@LIB_VERSION_MAJOR@ | |
729e4ab9 A |
53 | # the entry point is almost like the basename, but has the lib suffix. |
54 | ICUDATA_ENTRY_POINT = $(ICUPREFIX)dt@ICULIBSUFFIXCNAME@@LIB_VERSION_MAJOR@ | |
73c04bcf A |
55 | ICUDATA_CHAR = @ICUDATA_CHAR@ |
56 | ICUDATA_PLATFORM_NAME = $(ICUDATA_BASENAME_VERSION)$(ICUDATA_CHAR) | |
374ca955 | 57 | PKGDATA_LIBSTATICNAME = -L $(STATIC_PREFIX)$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX) |
b75a7d8f A |
58 | ifeq ($(strip $(PKGDATA_MODE)),) |
59 | PKGDATA_MODE=@DATA_PACKAGING_MODE@ | |
60 | endif | |
61 | ifeq ($(PKGDATA_MODE),common) | |
62 | ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) | |
63 | ICUPKGDATA_DIR = $(ICUDATA_DIR) | |
64 | else | |
65 | ifeq ($(PKGDATA_MODE),dll) | |
374ca955 A |
66 | ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) |
67 | PKGDATA_LIBNAME = -L $(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX) | |
b75a7d8f A |
68 | ICUPKGDATA_DIR = $(libdir) |
69 | else | |
729e4ab9 A |
70 | ifeq ($(PKGDATA_MODE),static) |
71 | ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) | |
72 | PKGDATA_LIBNAME = -L $(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX) | |
73 | ICUPKGDATA_DIR = $(libdir) | |
74 | else | |
374ca955 | 75 | ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) |
b75a7d8f A |
76 | ICUPKGDATA_DIR = $(ICUDATA_DIR) |
77 | endif | |
78 | endif | |
729e4ab9 | 79 | endif |
b75a7d8f | 80 | |
374ca955 A |
81 | # These are defined here because mh-cygwin-msvc needs to override these values. |
82 | ICUPKGDATA_INSTALL_DIR = $(DESTDIR)$(ICUPKGDATA_DIR) | |
83 | ICUPKGDATA_INSTALL_LIBDIR = $(DESTDIR)$(libdir) | |
84 | ||
85 | # If defined to a valid value, pkgdata will generate a data library more quickly | |
86 | GENCCODE_ASSEMBLY = @GENCCODE_ASSEMBLY@ | |
87 | ||
b75a7d8f A |
88 | # ICU specific directories |
89 | ||
90 | pkgdatadir = $(datadir)/$(PACKAGE)$(ICULIBSUFFIX)/$(VERSION) | |
91 | pkglibdir = $(libdir)/$(PACKAGE)$(ICULIBSUFFIX)/$(VERSION) | |
92 | pkgsysconfdir = $(sysconfdir)/$(PACKAGE)$(ICULIBSUFFIX) | |
93 | ||
94 | # Installation programs | |
95 | ||
96 | MKINSTALLDIRS = $(SHELL) $(top_srcdir)/mkinstalldirs | |
97 | ||
98 | INSTALL = @INSTALL@ | |
99 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ | |
100 | INSTALL_DATA = @INSTALL_DATA@ | |
101 | INSTALL_SCRIPT = @INSTALL_SCRIPT@ | |
102 | ||
103 | # Library suffix (to support different C++ compilers) | |
104 | ||
105 | ICULIBSUFFIX=@ICULIBSUFFIX@ | |
106 | ||
107 | # Compiler and tools | |
108 | ||
374ca955 A |
109 | ENABLE_DEBUG = @ENABLE_DEBUG@ |
110 | ENABLE_RELEASE = @ENABLE_RELEASE@ | |
b75a7d8f A |
111 | EXEEXT = @EXEEXT@ |
112 | CC = @CC@ | |
113 | CXX = @CXX@ | |
b75a7d8f | 114 | AR = @AR@ |
46f4442e | 115 | ARFLAGS = @ARFLAGS@ r |
b75a7d8f A |
116 | RANLIB = @RANLIB@ |
117 | COMPILE_LINK_ENVVAR = @COMPILE_LINK_ENVVAR@ | |
729e4ab9 | 118 | UCLN_NO_AUTO_CLEANUP = @UCLN_NO_AUTO_CLEANUP@ |
b75a7d8f A |
119 | |
120 | # Various flags for the tools | |
121 | ||
374ca955 A |
122 | # DEFS is for common macro definitions. |
123 | # configure prevents user defined DEFS, and configure's DEFS is not needed | |
124 | # So we ignore the DEFS that comes from configure | |
4388f060 A |
125 | # U_ATTRIBUTE_DEPRECATED is defined to hide warnings about deprecated API warnings. |
126 | DEFS = -DU_ATTRIBUTE_DEPRECATED= | |
b75a7d8f A |
127 | # CFLAGS is for C only flags |
128 | CFLAGS = @CFLAGS@ | |
129 | # CXXFLAGS is for C++ only flags | |
130 | CXXFLAGS = @CXXFLAGS@ | |
131 | # CPPFLAGS is for C Pre-Processor flags | |
132 | CPPFLAGS = @CPPFLAGS@ | |
46f4442e A |
133 | # LIBCFLAGS are the flags for static and shared libraries. |
134 | LIBCFLAGS = @LIBCFLAGS@ | |
135 | # LIBCXXFLAGS are the flags for static and shared libraries. | |
136 | LIBCXXFLAGS = @LIBCXXFLAGS@ | |
b75a7d8f A |
137 | # DEFAULT_LIBS are the default libraries to link against |
138 | DEFAULT_LIBS = @LIBS@ | |
139 | # LIB_M is for linking against the math library | |
140 | LIB_M = @LIB_M@ | |
46f4442e A |
141 | # LIB_THREAD is for linking against the threading library |
142 | LIB_THREAD = @LIB_THREAD@ | |
b75a7d8f | 143 | # OUTOPT is for creating a specific output name |
46f4442e A |
144 | OUTOPT = -o # The extra space after the argument is needed. |
145 | # AR_OUTOPT is for creating a specific output name for static libraries. | |
146 | AR_OUTOPT = | |
b75a7d8f A |
147 | |
148 | ENABLE_RPATH = @ENABLE_RPATH@ | |
149 | ifeq ($(ENABLE_RPATH),YES) | |
150 | RPATHLDFLAGS = $(LD_RPATH)$(LD_RPATH_PRE)$(libdir) | |
151 | endif | |
152 | LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS) | |
153 | ||
154 | # What kind of libraries are we building and linking against? | |
155 | ENABLE_STATIC = @ENABLE_STATIC@ | |
156 | ENABLE_SHARED = @ENABLE_SHARED@ | |
157 | ||
158 | # Echo w/o newline | |
159 | ||
729e4ab9 A |
160 | #ECHO_N = @ICU_ECHO_N@ |
161 | #ECHO_C = @ICU_ECHO_C@ | |
b75a7d8f A |
162 | |
163 | # Commands to compile | |
164 | COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c | |
165 | COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c | |
166 | ||
167 | # Commands to link | |
2ca993e8 A |
168 | LINK.c= $(CC) $(CFLAGS) $(LDFLAGS) $(LINKFLAGS) |
169 | LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) $(LINKFLAGS) | |
b75a7d8f A |
170 | |
171 | # Commands to make a shared library | |
729e4ab9 A |
172 | SHLIB.c= $(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) |
173 | SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) | |
b75a7d8f | 174 | |
51004dcb A |
175 | # ICU_MSG |
176 | ICU_MSG=@echo " $(1) " | |
177 | ||
178 | # Do not show the large compiling arguments by default. | |
179 | # To use: | |
180 | # change | |
181 | # $(CC) -o foo | |
182 | # to | |
183 | # $(call SILENT_COMPILE,$(CC) -o foo) | |
184 | ifndef VERBOSE | |
185 | SILENT_COMPILE=$(call ICU_MSG,$(notdir $(firstword $(1)))) "... " $< && $(1) || \ | |
186 | ( echo "*** Failed compilation command follows: ----------------------------------------------------------" ; \ | |
187 | echo "$(1)" ; \ | |
188 | echo "--- ( rebuild with \"$(MAKE) VERBOSE=1 $(MAKECMDGOALS)\" to show all parameters ) --------" ; \ | |
189 | false ) | |
190 | else | |
191 | SILENT_COMPILE=$(1) | |
192 | endif | |
193 | ||
b75a7d8f A |
194 | # Environment variable to set a runtime search path |
195 | LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH | |
196 | ||
197 | # Versioned target for a shared library. | |
198 | FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION) | |
199 | MIDDLE_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION_MAJOR) | |
73c04bcf | 200 | SHARED_OBJECT = $(FINAL_SO_TARGET) |
b75a7d8f A |
201 | |
202 | ## How ICU libraries are named... ex. $(LIBICU)uc$(SO) | |
203 | # Prefix for the ICU library names | |
204 | ICUPREFIX = icu | |
374ca955 A |
205 | LIBPREFIX = lib |
206 | LIBICU = $(LIBPREFIX)$(ICUPREFIX) | |
207 | ||
208 | ## If we can't use the shared libraries, use the static libraries | |
209 | ifneq ($(ENABLE_SHARED),YES) | |
210 | STATIC_PREFIX_WHEN_USED = s | |
211 | else | |
212 | STATIC_PREFIX_WHEN_USED = | |
213 | endif | |
214 | ||
215 | # Static library prefix and file extension | |
216 | STATIC_PREFIX = s | |
217 | LIBSICU = $(LIBPREFIX)$(STATIC_PREFIX)$(ICUPREFIX) | |
218 | A = a | |
73c04bcf | 219 | SOBJ = $(SO) |
b75a7d8f A |
220 | |
221 | # Force removal [for make clean] | |
222 | RMV = rm -rf | |
374ca955 | 223 | |
b75a7d8f | 224 | # Platform commands to remove or move executable and library targets |
374ca955 A |
225 | # INSTALL-L installs libraries. Override in mh-* file to INSTALL_PROGRAM |
226 | # when the library needs to have executable permissions | |
b75a7d8f | 227 | INSTALL-S = $(INSTALL_PROGRAM) |
46f4442e A |
228 | INSTALL-L = $(INSTALL_PROGRAM) |
229 | #INSTALL-L = $(INSTALL_DATA) | |
b75a7d8f | 230 | |
374ca955 A |
231 | # Location of the libraries before "make install" is used |
232 | LIBDIR=$(top_builddir)/lib | |
233 | ||
234 | # Location of the executables before "make install" is used | |
235 | BINDIR=$(top_builddir)/bin | |
236 | ||
729e4ab9 A |
237 | # overridden by icucross.mk |
238 | TOOLBINDIR=$(BINDIR) | |
239 | TOOLLIBDIR=$(LIBDIR) | |
240 | ||
374ca955 A |
241 | # Name flexibility for the library naming scheme. Any modifications should |
242 | # be made in the mh- file for the specific platform. | |
243 | DATA_STUBNAME = data | |
244 | COMMON_STUBNAME = uc | |
245 | I18N_STUBNAME = i18n | |
246 | LAYOUT_STUBNAME = le | |
247 | LAYOUTEX_STUBNAME = lx | |
248 | IO_STUBNAME = io | |
249 | TOOLUTIL_STUBNAME = tu | |
250 | CTESTFW_STUBNAME = test | |
251 | ||
b331163b A |
252 | # get these from pkg-config, if available |
253 | ICULEHB_CFLAGS=@ICULEHB_CFLAGS@ | |
254 | ICULEHB_LIBS=@ICULEHB_LIBS@ | |
255 | ifneq ($(ICULEHB_CFLAGS),) | |
256 | USING_ICULEHB=yes | |
257 | ICULEHB_TRUE= | |
258 | ICULEHB_FALSE=# | |
259 | ICULIBS_LE=$(ICULEHB_LIBS) | |
260 | ICULE_CFLAGS=$(ICULEHB_CFLAGS) -DUSING_ICULEHB | |
261 | else | |
262 | USING_ICULEHB=no | |
263 | ICULEHB_TRUE=# | |
264 | ICULEHB_FALSE= | |
265 | ICULIBS_LE = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(LAYOUT_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) | |
266 | ICULE_CFLAGS=-I$(top_srcdir) | |
267 | endif | |
268 | ||
729e4ab9 A |
269 | # Just the libs. |
270 | ICULIBS_DT = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) | |
271 | ICULIBS_UC = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(COMMON_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) | |
272 | ICULIBS_I18N = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(I18N_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) | |
729e4ab9 A |
273 | ICULIBS_LX = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(LAYOUTEX_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
274 | ICULIBS_IO = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(IO_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) | |
275 | ICULIBS_CTESTFW = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(CTESTFW_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) | |
276 | ICULIBS_TOOLUTIL = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(TOOLUTIL_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) | |
b75a7d8f | 277 | # Link commands to link to ICU libs |
729e4ab9 A |
278 | LLIBDIR = -L$(LIBDIR) |
279 | LSTUBDIR = -L$(top_builddir)/stubdata | |
280 | LCTESTFW = -L$(top_builddir)/tools/ctestfw | |
281 | ||
282 | LIBICUDT = $(LLIBDIR) $(LSTUBDIR) $(ICULIBS_DT) | |
283 | LIBICUUC = $(LLIBDIR) $(ICULIBS_UC) $(LSTUBDIR) $(ICULIBS_DT) | |
284 | LIBICUI18N = $(LLIBDIR) $(ICULIBS_I18N) | |
b331163b | 285 | LIBICULE = $(ICULEHB_CFLAGS) $(LLIBDIR) $(ICULIBS_LE) |
729e4ab9 A |
286 | LIBICULX = $(LLIBDIR) $(ICULIBS_LX) |
287 | LIBCTESTFW = $(LCTESTFW) $(ICULIBS_CTESTFW) | |
288 | LIBICUTOOLUTIL = $(LLIBDIR) $(ICULIBS_TOOLUTIL) | |
289 | LIBICUIO = $(LLIBDIR) $(ICULIBS_IO) | |
b75a7d8f A |
290 | |
291 | # Invoke, set library path for all ICU libraries. | |
729e4ab9 | 292 | # overridden by icucross.mk |
73c04bcf | 293 | INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(LIBRARY_PATH_PREFIX)$(LIBDIR):$(top_builddir)/stubdata:$(top_builddir)/tools/ctestfw:$$$(LDLIBRARYPATH_ENVVAR) $(LEAK_CHECKER) |
729e4ab9 | 294 | # prefer stubdata |
51004dcb | 295 | PKGDATA_INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(top_builddir)/stubdata:$(top_builddir)/tools/ctestfw:$(LIBRARY_PATH_PREFIX)$(LIBDIR):$$$(LDLIBRARYPATH_ENVVAR) $(LEAK_CHECKER) |
4388f060 | 296 | INSTALLED_INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(libdir):$$$(LDLIBRARYPATH_ENVVAR) |
b75a7d8f | 297 | |
51004dcb A |
298 | # Current full path directory for cross compilation |
299 | ifneq ($(strip $(cross_buildroot)),) | |
300 | include $(cross_buildroot)/config/icucross.inc | |
301 | endif | |
302 | ||
b75a7d8f A |
303 | # Platform-specific setup |
304 | include @platform_make_fragment@ | |
305 | ||
4388f060 | 306 | # Current full path directory. |
51004dcb | 307 | CURR_FULL_DIR?=$(shell pwd | sed 's/ /\\ /g') |
4388f060 | 308 | # Current full path directory for use in source code in a -D compiler option. |
51004dcb | 309 | CURR_SRCCODE_FULL_DIR?=$(shell pwd | sed 's/ /\\ /') |
4388f060 | 310 | |
374ca955 A |
311 | # When shared libraries are disabled and static libraries are enabled, |
312 | # the C++ compiler must be used to link in the libraries for the tools. | |
313 | ifneq ($(ENABLE_SHARED),YES) | |
314 | LINK.c = $(LINK.cc) | |
315 | endif | |
316 | ||
729e4ab9 A |
317 | # some imported things from the cross env |
318 | TOOLEXEEXT = $(EXEEXT) | |
319 | ifneq ($(strip $(cross_buildroot)),) | |
320 | include $(cross_buildroot)/config/icucross.mk | |
321 | else | |
322 | cross_buildroot = $(top_builddir) | |
323 | endif | |
324 | ||
57a6839d A |
325 | # for tests |
326 | ifneq ($(TEST_STATUS_FILE),) | |
327 | TEST_OUTPUT_OPTS="-E$(TEST_STATUS_FILE)" | |
328 | endif | |
329 | ||
729e4ab9 A |
330 | # optional include at top |
331 | -include $(top_builddir)/icudefs.local |