Author: sebor
Date: Tue Mar 6 18:10:03 2007
New Revision: 515423
URL: http://svn.apache.org/viewvc?view=rev&rev=515423
Log:
2007-03-06 Martin Sebor <[EMAIL PROTECTED]>
STDCXX-286
* vacpp.config (PRELINKFLAGS): Used -qmkshrobj only when building
a shared library (including a shared archive), and not an ordinary
archive.
(DEFAULT_SHROBJ): Set only when using -qmkshrobj.
(use_tempinc): Removed a temporary file when done.
Modified:
incubator/stdcxx/trunk/etc/config/vacpp.config
Modified: incubator/stdcxx/trunk/etc/config/vacpp.config
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/vacpp.config?view=diff&rev=515423&r1=515422&r2=515423
==============================================================================
--- incubator/stdcxx/trunk/etc/config/vacpp.config (original)
+++ incubator/stdcxx/trunk/etc/config/vacpp.config Tue Mar 6 18:10:03 2007
@@ -1,32 +1,34 @@
+# -*- Makefile -*-
#
# $Id$
#
-# configuration file for xlc on AIX
+# configuration file for IBM VisualAge and XLC++
#
##############################################################################
# see if the xlCcore command exists and use it in preference to xlC
-# xlCcore, available in VAC++ 6.0 patches released since 4/2004,
-# avoids linking with the native C++ Standard Library (see PR #28212)
+# xlCcore, available in VAC++ 6.0 patches released since 4/2004, and
+# later, avoids linking with the native C++ Standard Library
ifneq ($(shell xlCcore /dev/null >/dev/null 2>&1; echo $$?),127)
CXX := xlCcore
- shared_archive = $(findstring shared,$(BUILDMODE))_$(findstring
archive,$(BUILDMODE))
-
- ifeq ($(shared_archive),shared_archive)
- rtl_enabled = 0
- else
- rtl_enabled = 1
+ # enable Run-Time Linking for true shared libraries
+ # (i.e., .so's but not AIX shared archives)
+ ifneq (,$(findstring shared,$(BUILDMODE)))
+ ifeq (,$(findstring archive,$(BUILDMODE)))
+ rtl_enabled = 1
+ endif
endif
else
ifeq ($(OSNAME),AIX)
CXX := xlC
+ # Run-Time Linking not enabled as its known to cause conflicts
+ # with the native VAC++ C++ Standard Library on AIX, libC.a
else # assume Linux
# use xlc on Linux to prevent linking in the native
# C++ Standard Library (gcc's libstdc++)
CXX := xlc
endif
- rtl_enabled = 0
endif
# _r suffix links with reentrant versions of system libraries
@@ -69,7 +71,26 @@
# enable C++ C library headers (the <cname> kind)
CPPFLAGS = -I$(TOPDIR)/include/ansi
-PRELINKFLAGS = -qmkshrobj
+
+# use -qmkshrobj with VAC++ 6.0 and prior or when building
+# a shared library (either a shared archive or a .so)
+ifneq (,$(findstring shared,$(BUILDMODE)))
+ shared = 1
+else
+ ifneq (,$(findstring |$(BUILDTYPE)|,|8d|8D|11d|11D|12d|12D|15d|15D|))
+ shared = 1
+ endif
+endif
+
+ifneq ($(shared),)
+ PRELINKFLAGS = -qmkshrobj
+else
+ ifeq ($(shell expr $(CXX_MAJOR) \< 7),1)
+ PRELINKFLAGS = -qmkshrobj
+ endif
+endif
+
+
LDFLAGS = $(CPPFLAGS)
ifeq ($(OSNAME),AIX)
@@ -131,8 +152,10 @@
SHARED_LDFLAGS =
ifeq ($(rtl_enabled),1)
+ # Run-Time Loadable shared library
SHARED_SUFFIX = .so
else
+ # archive or shared archive
SHARED_SUFFIX = .a
endif
@@ -179,7 +202,9 @@
ifeq ($(OSNAME),AIX)
# default shared object on AIX (not on Linux)
- DEFAULT_SHROBJ = shr.o
+ ifneq ($(shared),)
+ DEFAULT_SHROBJ = shr.o
+ endif
endif
@@ -187,7 +212,7 @@
use_tempinc=$(shell echo "int i;" >/tmp/foo.$$$$.c \
&& $(CXX) -c -qmaxerr=1:w -qtemplateregistry \
/tmp/foo.$$$$.c >/dev/null 2>&1; \
- echo $$?)
+ echo $$?; rm /tmp/foo.$$$$.c)
# template repository/registry name override