| # Make definitions that are shared by the different subprojects of ICU. |
| # |
| # Yves Arrouye. |
| # |
| # Copyright (C) 2016 and later: Unicode, Inc. and others. |
| # License & terms of use: http://www.unicode.org/copyright.html |
| # Copyright (C) 2000-2016, International Business Machines Corporation and others. |
| # All Rights Reserved. |
| |
| # |
| # Some of these variables are overridden in the config/mh-* files. |
| # |
| # Please be sure to update config/Makefile.inc.in if you add something here. |
| # |
| |
| # Shell to use |
| |
| SHELL = @SHELL@ |
| |
| # Instruct Python to never write any byte code to the ICU source tree. |
| export PYTHONDONTWRITEBYTECODE = 1 |
| |
| # Standard directories |
| |
| prefix = @prefix@ |
| exec_prefix = @exec_prefix@ |
| |
| bindir = @bindir@ |
| sbindir = @sbindir@ |
| datarootdir = @datarootdir@ |
| datadir = @datadir@ |
| libdir = @libdir@ |
| includedir = @includedir@ |
| mandir = @mandir@ |
| sysconfdir = @sysconfdir@ |
| # controls the include of $(top_builddir)/icucross.mk at bottom of file |
| cross_compiling = @cross_compiling@ |
| cross_buildroot = @cross_buildroot@ |
| |
| # Package information |
| |
| PACKAGE_ICU_DESCRIPTION = "International Components for Unicode" |
| PACKAGE_ICU_URL = "http://icu-project.org" |
| PACKAGE = @PACKAGE@ |
| VERSION = @VERSION@ |
| UNICODE_VERSION = @UNICODE_VERSION@ |
| SO_TARGET_VERSION = @LIB_VERSION@ |
| SO_TARGET_VERSION_MAJOR = @LIB_VERSION_MAJOR@ |
| |
| # The ICU data external name is usually icudata; the entry point name is |
| # the version-dependent name (for no particular reason except it was easier |
| # to change the build this way). When building in common mode, the data |
| # name is the versioned platform-dependent one. |
| |
| ICUDATA_DIR = @pkgicudatadir@/$(PACKAGE)$(ICULIBSUFFIX)/$(VERSION) |
| |
| ICUDATA_BASENAME_VERSION = $(ICUPREFIX)dt@LIB_VERSION_MAJOR@ |
| # the entry point is almost like the basename, but has the lib suffix. |
| ICUDATA_ENTRY_POINT = $(ICUPREFIX)dt@ICULIBSUFFIXCNAME@@LIB_VERSION_MAJOR@ |
| ICUDATA_CHAR = @ICUDATA_CHAR@ |
| ICUDATA_PLATFORM_NAME = $(ICUDATA_BASENAME_VERSION)$(ICUDATA_CHAR) |
| PKGDATA_LIBSTATICNAME = -L $(STATIC_PREFIX)$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX) |
| ifeq ($(strip $(PKGDATA_MODE)),) |
| PKGDATA_MODE=@DATA_PACKAGING_MODE@ |
| endif |
| ifeq ($(PKGDATA_MODE),common) |
| ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) |
| ICUPKGDATA_DIR = $(ICUDATA_DIR) |
| else |
| ifeq ($(PKGDATA_MODE),dll) |
| ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) |
| PKGDATA_LIBNAME = -L $(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX) |
| ICUPKGDATA_DIR = $(libdir) |
| else |
| ifeq ($(PKGDATA_MODE),static) |
| ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) |
| PKGDATA_LIBNAME = -L $(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX) |
| ICUPKGDATA_DIR = $(libdir) |
| else |
| ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) |
| ICUPKGDATA_DIR = $(ICUDATA_DIR) |
| endif |
| endif |
| endif |
| |
| # These are defined here because mh-cygwin-msvc needs to override these values. |
| ICUPKGDATA_INSTALL_DIR = $(DESTDIR)$(ICUPKGDATA_DIR) |
| ICUPKGDATA_INSTALL_LIBDIR = $(DESTDIR)$(libdir) |
| |
| # If defined to a valid value, pkgdata will generate a data library more quickly |
| GENCCODE_ASSEMBLY = @GENCCODE_ASSEMBLY@ |
| |
| # ICU specific directories |
| |
| pkgdatadir = $(datadir)/$(PACKAGE)$(ICULIBSUFFIX)/$(VERSION) |
| pkglibdir = $(libdir)/$(PACKAGE)$(ICULIBSUFFIX)/$(VERSION) |
| pkgsysconfdir = $(sysconfdir)/$(PACKAGE)$(ICULIBSUFFIX) |
| |
| # Installation programs |
| |
| MKINSTALLDIRS = $(SHELL) $(top_srcdir)/mkinstalldirs |
| |
| INSTALL = @INSTALL@ |
| INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
| INSTALL_DATA = @INSTALL_DATA@ |
| INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
| |
| # Library suffix (to support different C++ compilers) |
| |
| ICULIBSUFFIX=@ICULIBSUFFIX@ |
| |
| # Compiler and tools |
| |
| ENABLE_DEBUG = @ENABLE_DEBUG@ |
| ENABLE_RELEASE = @ENABLE_RELEASE@ |
| EXEEXT = @EXEEXT@ |
| CC = @CC@ |
| CXX = @CXX@ |
| AR = @AR@ |
| ARFLAGS = @ARFLAGS@ r |
| RANLIB = @RANLIB@ |
| COMPILE_LINK_ENVVAR = @COMPILE_LINK_ENVVAR@ |
| UCLN_NO_AUTO_CLEANUP = @UCLN_NO_AUTO_CLEANUP@ |
| SED = @SED@ |
| |
| # Various flags for the tools |
| |
| # DEFS is for common macro definitions. |
| # configure prevents user defined DEFS, and configure's DEFS is not needed |
| # So we ignore the DEFS that comes from configure |
| # U_ATTRIBUTE_DEPRECATED is defined to hide warnings about deprecated API warnings. |
| DEFS = -DU_ATTRIBUTE_DEPRECATED= |
| # CFLAGS is for C only flags |
| CFLAGS = @CFLAGS@ |
| # CXXFLAGS is for C++ only flags |
| CXXFLAGS = @CXXFLAGS@ |
| # CPPFLAGS is for C Pre-Processor flags |
| CPPFLAGS = @CPPFLAGS@ |
| # LIBCFLAGS are the flags for static and shared libraries. |
| LIBCFLAGS = @LIBCFLAGS@ |
| # LIBCXXFLAGS are the flags for static and shared libraries. |
| LIBCXXFLAGS = @LIBCXXFLAGS@ |
| # DEFAULT_LIBS are the default libraries to link against |
| DEFAULT_LIBS = @LIBS@ |
| # LIB_M is for linking against the math library |
| LIB_M = @LIB_M@ |
| # LIB_THREAD is for linking against the threading library |
| LIB_THREAD = @LIB_THREAD@ |
| # OUTOPT is for creating a specific output name |
| OUTOPT = -o # The extra space after the argument is needed. |
| # AR_OUTOPT is for creating a specific output name for static libraries. |
| AR_OUTOPT = |
| |
| ENABLE_RPATH = @ENABLE_RPATH@ |
| ifeq ($(ENABLE_RPATH),YES) |
| RPATHLDFLAGS = $(LD_RPATH)$(LD_RPATH_PRE)$(libdir) |
| endif |
| LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS) |
| |
| # What kind of libraries are we building and linking against? |
| ENABLE_STATIC = @ENABLE_STATIC@ |
| ENABLE_SHARED = @ENABLE_SHARED@ |
| |
| # Echo w/o newline |
| |
| #ECHO_N = @ICU_ECHO_N@ |
| #ECHO_C = @ICU_ECHO_C@ |
| |
| # Commands to compile |
| COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c |
| COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c |
| |
| # Commands to link |
| LINK.c= $(CC) $(CFLAGS) $(LDFLAGS) $(LINKFLAGS) |
| LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) $(LINKFLAGS) |
| |
| # Commands to make a shared library |
| SHLIB.c= $(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) |
| SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) |
| |
| # ICU_MSG |
| ICU_MSG=@echo " $(1) " |
| |
| # Do not show the large compiling arguments by default. |
| # To use: |
| # change |
| # $(CC) -o foo |
| # to |
| # $(call SILENT_COMPILE,$(CC) -o foo) |
| ifndef VERBOSE |
| SILENT_COMPILE=$(call ICU_MSG,$(notdir $(firstword $(1)))) "... " $< && $(1) || \ |
| ( echo "*** Failed compilation command follows: ----------------------------------------------------------" ; \ |
| echo "$(1)" ; \ |
| echo "--- ( rebuild with \"$(MAKE) VERBOSE=1 $(MAKECMDGOALS)\" to show all parameters ) --------" ; \ |
| false ) |
| else |
| SILENT_COMPILE=$(1) |
| endif |
| |
| # Environment variable to set a runtime search path |
| LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH |
| |
| # Versioned target for a shared library. |
| FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION) |
| MIDDLE_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION_MAJOR) |
| SHARED_OBJECT = $(FINAL_SO_TARGET) |
| |
| ## How ICU libraries are named... ex. $(LIBICU)uc$(SO) |
| # Prefix for the ICU library names |
| ICUPREFIX = icu |
| LIBPREFIX = lib |
| LIBICU = $(LIBPREFIX)$(ICUPREFIX) |
| |
| ## If we can't use the shared libraries, use the static libraries |
| ifneq ($(ENABLE_SHARED),YES) |
| STATIC_PREFIX_WHEN_USED = s |
| else |
| STATIC_PREFIX_WHEN_USED = |
| endif |
| |
| # Static library prefix and file extension |
| STATIC_PREFIX = s |
| LIBSICU = $(LIBPREFIX)$(STATIC_PREFIX)$(ICUPREFIX) |
| A = a |
| SOBJ = $(SO) |
| |
| # Force removal [for make clean] |
| RMV = rm -rf |
| |
| # Platform commands to remove or move executable and library targets |
| # INSTALL-L installs libraries. Override in mh-* file to INSTALL_PROGRAM |
| # when the library needs to have executable permissions |
| INSTALL-S = $(INSTALL_PROGRAM) |
| INSTALL-L = $(INSTALL_PROGRAM) |
| #INSTALL-L = $(INSTALL_DATA) |
| |
| # Location of the libraries before "make install" is used |
| LIBDIR=$(top_builddir)/lib |
| |
| # Location of the executables before "make install" is used |
| BINDIR=$(top_builddir)/bin |
| |
| # Defined here so that it can be overriden by mh-mingw*. |
| # For MinGW/MSYS2 we want the DLLs to go into the bin location. |
| MINGW_MOVEDLLSTOBINDIR = NO |
| |
| # overridden by icucross.mk |
| TOOLBINDIR=$(BINDIR) |
| TOOLLIBDIR=$(LIBDIR) |
| |
| # Name flexibility for the library naming scheme. Any modifications should |
| # be made in the mh- file for the specific platform. |
| DATA_STUBNAME = data |
| COMMON_STUBNAME = uc |
| I18N_STUBNAME = i18n |
| LAYOUTEX_STUBNAME = lx |
| IO_STUBNAME = io |
| TOOLUTIL_STUBNAME = tu |
| CTESTFW_STUBNAME = test |
| |
| # get these from pkg-config, if available |
| ICULEHB_CFLAGS=@ICULEHB_CFLAGS@ |
| ICULEHB_LIBS=@ICULEHB_LIBS@ |
| ifneq ($(ICULEHB_CFLAGS),) |
| USING_ICULEHB=yes |
| ICULEHB_TRUE= |
| ICULEHB_FALSE=# |
| ICULIBS_LE=$(ICULEHB_LIBS) |
| ICULE_CFLAGS=$(ICULEHB_CFLAGS) -DUSING_ICULEHB |
| else |
| USING_ICULEHB=no |
| ICULEHB_TRUE=# |
| ICULEHB_FALSE= |
| endif |
| |
| # Just the libs. |
| ICULIBS_DT = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
| ICULIBS_UC = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(COMMON_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
| ICULIBS_I18N = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(I18N_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
| ICULIBS_LX = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(LAYOUTEX_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
| ICULIBS_IO = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(IO_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
| ICULIBS_CTESTFW = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(CTESTFW_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
| ICULIBS_TOOLUTIL = -l$(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)$(TOOLUTIL_STUBNAME)$(ICULIBSUFFIX)$(SO_TARGET_VERSION_SUFFIX) |
| # Link commands to link to ICU libs |
| LLIBDIR = -L$(LIBDIR) |
| LSTUBDIR = -L$(top_builddir)/stubdata |
| LCTESTFW = -L$(top_builddir)/tools/ctestfw |
| |
| LIBICUDT = $(LLIBDIR) $(LSTUBDIR) $(ICULIBS_DT) |
| LIBICUUC = $(LLIBDIR) $(ICULIBS_UC) $(LSTUBDIR) $(ICULIBS_DT) |
| LIBICUI18N = $(LLIBDIR) $(ICULIBS_I18N) |
| LIBICULE = $(ICULEHB_CFLAGS) $(LLIBDIR) $(ICULIBS_LE) |
| LIBICULX = $(LLIBDIR) $(ICULIBS_LX) |
| LIBCTESTFW = $(LCTESTFW) $(ICULIBS_CTESTFW) |
| LIBICUTOOLUTIL = $(LLIBDIR) $(ICULIBS_TOOLUTIL) |
| LIBICUIO = $(LLIBDIR) $(ICULIBS_IO) |
| |
| # Invoke, set library path for all ICU libraries. |
| # overridden by icucross.mk |
| INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(LIBRARY_PATH_PREFIX)$(LIBDIR):$(top_builddir)/stubdata:$(top_builddir)/tools/ctestfw:$$$(LDLIBRARYPATH_ENVVAR) $(LEAK_CHECKER) |
| # prefer stubdata |
| PKGDATA_INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(top_builddir)/stubdata:$(top_builddir)/tools/ctestfw:$(LIBRARY_PATH_PREFIX)$(LIBDIR):$$$(LDLIBRARYPATH_ENVVAR) $(LEAK_CHECKER) |
| INSTALLED_INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(libdir):$$$(LDLIBRARYPATH_ENVVAR) |
| |
| # Current full path directory for cross compilation |
| ifneq ($(strip $(cross_buildroot)),) |
| include $(cross_buildroot)/config/icucross.inc |
| endif |
| |
| # Platform-specific setup |
| include @platform_make_fragment@ |
| |
| # Current full path directory. |
| CURR_FULL_DIR?=$(shell pwd | sed 's/ /\\ /g') |
| # Current full path directory for use in source code in a -D compiler option. |
| CURR_SRCCODE_FULL_DIR?=$(shell pwd | sed 's/ /\\ /') |
| |
| # When shared libraries are disabled and static libraries are enabled, |
| # the C++ compiler must be used to link in the libraries for the tools. |
| ifneq ($(ENABLE_SHARED),YES) |
| LINK.c = $(LINK.cc) |
| endif |
| |
| # some imported things from the cross env |
| TOOLEXEEXT = $(EXEEXT) |
| ifneq ($(strip $(cross_buildroot)),) |
| include $(cross_buildroot)/config/icucross.mk |
| else |
| cross_buildroot = $(top_builddir) |
| endif |
| |
| # for tests |
| ifneq ($(TEST_STATUS_FILE),) |
| TEST_OUTPUT_OPTS="-E$(TEST_STATUS_FILE)" |
| endif |
| |
| # optional include at top |
| -include $(top_builddir)/icudefs.local |