--- misc/icu/source/config/mh-aix-gcc 2009-01-15 01:46:10.000000000 -0600 +++ misc/build/icu/source/config/mh-aix-gcc 2010-06-24 20:58:16.000000000 -0500 @@ -1,10 +1,7 @@ ## -*-makefile-*- -## Copyright (c) 2003-2009 IBM, Ken Foskey, and others. All rights reserved. -## -## Aix-specific setup (for gcc) -## -## Please note: AIX does NOT have library versioning per se (there is no 'SONAME' capability). -## So, we are using 'windows' style library names, that is, libicuuc20.1.so instead of libicuuc.so.20.1 +## Linux-specific setup +## Copyright (c) 1999-2006, International Business Machines Corporation and +## others. All Rights Reserved. # Certain files don't compile in -ansi mode (e.g. umutex.c, toolutil.c, and cdatatst.c) CFLAGS += -D_ALL_SOURCE @@ 11,17 +8,13 @@ ## Commands to generate dependency files -GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) -GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) +GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) +GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) -## Commands to link -## We need to use the C++ linker, even when linking C programs, since -## our libraries contain C++ code (C++ static init not called) -LINK.c= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -LINK.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) - -## Shared library options -LD_SOOPTIONS= -Wl,-bsymbolic - -## Commands to make a shared library -SHLIB.c= $(AIX_PREDELETE) $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_OPTIONS) -SHLIB.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_OPTIONS) +## Flags for position independent code +SHAREDLIBCFLAGS = -fPIC +SHAREDLIBCXXFLAGS = -fPIC +SHAREDLIBCPPFLAGS = -DPIC + +## Additional flags when building libraries and with threads +THREADSCPPFLAGS = -D_REENTRANT -D_THREAD_SAFE +LIBCPPFLAGS = @@ -28,40 +21,24 @@ ## Compiler switch to embed a runtime search path -LD_RPATH= -I -LD_RPATH_PRE= +LD_RPATH= +LD_RPATH_PRE = -## enable the shared lib loader -LDFLAGS += -Wl,-bbigtoc +## Force RPATH=$ORIGIN to locate own dependencies w/o need for LD_LIBRARY_PATH +## (incl. the C++ runtime libs potentially found in the URE lib dir): +#ENABLE_RPATH=YES +#RPATHLDFLAGS=${LD_RPATH_PRE}'$$ORIGIN:$$ORIGIN/../ure-link/lib' + +#SH# ENABLE_RPATH=YES +#SH# RPATHLDFLAGS="${LD_RPATH_PRE}'$$ORIGIN:$$ORIGIN/../ure-link/lib'" ## These are the library specific LDFLAGS LDFLAGSICUDT=-nodefaultlibs -nostdlib -## We need to delete things prior to linking, or else we'll get -## SEVERE ERROR: output file in use .. on AIX. -## But, shell script version should NOT delete target as we don't -## have $@ in that context. (SH = only shell script, icu-config) -AIX_PREDELETE=rm -f $@ ; -#SH# AIX_PREDELETE= - ## Environment variable to set a runtime search path LDLIBRARYPATH_ENVVAR = LIBPATH -## Override Versioned target for a shared library. -FINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) -MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) -SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ))) -SHARED_OBJECT_NO_VERSION = $(basename $(SO_TARGET)).$(SOBJ) - -# The following is for Makefile.inc's use. -ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR) - -# this one is for icudefs.mk's use -ifeq ($(ENABLE_SHARED),YES) -SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR) -endif - -## Compiler switch to embed a library name. Not present on AIX. -LD_SONAME = - -## The type of assembly needed when pkgdata is used for generating shared libraries. -GENCCODE_ASSEMBLY=-a xlc +## Compiler switch to embed a library name +# The initial tab in the next line is to prevent icu-config from reading it. + #LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET)) +#SH# # We can't depend on MIDDLE_SO_TARGET being set. +#SH# LD_SONAME= @@ -68,29 +44,8 @@ ## Shared object suffix -SOBJ= so -# without the -brtl option, the library names use .a. AIX is funny that way. -SO= a -A= a - +SO = so ## Non-shared intermediate object suffix -STATIC_O = o - -## Special AIX rules - -## Build archive from shared object -%.a : %.so - ln -f $< $(SHARED_OBJECT_NO_VERSION) - $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) - rm -f $(SHARED_OBJECT_NO_VERSION) -$(LIBDIR)/%.a : %.so - ln -f $< $(SHARED_OBJECT_NO_VERSION) - $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) - rm -f $(SHARED_OBJECT_NO_VERSION) - -## Build import list from export list -%.e : %.exp - @echo "Building an import list for $<" - @$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@" +STATIC_O = ao ## Compilation rules %.$(STATIC_O): $(srcdir)/%.c