icudefs.mk.in 10 KB

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