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