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