summaryrefslogtreecommitdiff
path: root/ACE/include/makeinclude/platform_hpux_aCC.GNU
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/include/makeinclude/platform_hpux_aCC.GNU')
-rw-r--r--ACE/include/makeinclude/platform_hpux_aCC.GNU242
1 files changed, 242 insertions, 0 deletions
diff --git a/ACE/include/makeinclude/platform_hpux_aCC.GNU b/ACE/include/makeinclude/platform_hpux_aCC.GNU
new file mode 100644
index 00000000000..a32d995bd36
--- /dev/null
+++ b/ACE/include/makeinclude/platform_hpux_aCC.GNU
@@ -0,0 +1,242 @@
+# $Id$
+#
+# This is for the HP-UX 10.x and 11.x using the aC++ compiler.
+#
+# For 10.x, most of the difference for threaded vs. non-threaded is
+# contained in ace/config-hpux-10.x.h. However, to build without threads,
+# you should run the make with "threads=0" since the default is to build
+# with threads.
+#
+# HP-UX 11 supports both 32-bit and 64-bit builds, regardless of which
+# architecture the build is done on. This file is set up to build native
+# to the machine it's running on. To cross-build for another platform, add
+# "buildbits=32" to make a 32-bit build, and "buildbits=64" to do a 64-bit
+# build. Note that if you explicitly specify a 64-bit build, the option
+# -Wl,+vnocompatwarnings is added to shut up the "At least one PA 2.0 object
+# file detected..." messages.
+
+buildbits ?= 0
+debug ?= 1
+distrib ?= 0
+exceptions ?= 1
+optimize ?= 0
+threads ?= 1
+versioned_so ?= 0
+
+# First, extract the OS version number.
+HPVERS_WORDS := $(subst ., ,$(shell uname -r))
+HPMODEL := $(shell uname -m)
+HPUX_VERS := $(join $(word 2,$(HPVERS_WORDS)),$(word 3,$(HPVERS_WORDS)))
+#
+CC = /bin/cc
+CXX = aCC
+
+# Determine compiler version
+CXXVERS_WORDS := $(subst ., , $(shell $(CXX) -V 2>&1))
+CXXMINORVERS := $(word 8, $(CXXVERS_WORDS))
+CXXMAJORVERS := $(word 7, $(CXXVERS_WORDS))
+
+ifeq (,$(stdcpplib))
+# If the user didn't explicitly set stdcpplib, assume that the compiler
+# can do -AA, unless it's a .2x version (e.g., 03.24). 03.27 can do -AA,
+# so check for that one explicitly and enable it if so.
+ ifeq (,$(filter 2%,$(CXXMINORVERS)))
+ stdcpplib = 1
+ else
+ ifeq (27,$(CXXMINORVERS))
+ stdcpplib = 1
+ else
+ stdcpplib = 0
+ endif
+ endif
+endif
+
+ifeq (1,$(stdcpplib))
+ CCFLAGS += -AA
+ ifeq (03,$(CXXMAJORVERS))
+ # Warning 930 is spurious when new(std::nothrow) is used. Reported to HP
+ # as support call 3201224717. (Steve Huston, 23-Nov-2002)
+ CCFLAGS += +W930
+ # aCC 3.31 has poor member template support.
+ ifeq (31,$(CXXMINORVERS))
+ CCFLAGS += -DACE_LACKS_MEMBER_TEMPLATES
+ endif
+ endif
+# Compile errors using -AA and +noeh together - HP problem report
+# JAGad12608, fix slated for Dec 2001 Release -- Steve Huston, April 10, 2001.
+# If you still have problems with this area, uncomment the following line:
+# exceptions = 1
+endif
+
+# Set the appropriate preprocessor defs for threading based on OS version
+# and specified compiler options.
+ifeq ($(threads),1)
+ THR_DEFS = -DACE_HAS_THREADS
+
+ # x.30 was the first version offering -mt. So, if it's a .2x version,
+ # set the defs by hand; anything else, use -mt. This leaves out .1x
+ # versions, which should be no problem at this point.
+ ifeq (,$(filter 2%,$(CXXMINORVERS)))
+ CC_THR_DEFS += -mt
+ else
+ # Different for v2 vs. v1 C++ library selection.
+ ifeq (1,$(stdcpplib))
+ THR_DEFS += -D_RWSTD_MULTI_THREAD
+ else
+ THR_DEFS += -DRWSTD_MULTI_THREAD -D_THREAD_SAFE
+ endif
+
+ # For HP-UX 11.x, choose kernel threads over CMA (user) threads.
+ ifeq ($(word 2,$(HPVERS_WORDS)), 11)
+ THR_DEFS += -D_POSIX_C_SOURCE=199506L
+ endif
+ endif
+else
+ THR_DEFS = -DACE_HAS_THREADS=0
+ # On HP-UX 11, even without building for threads, the *_r reentrant
+ # functions are available, and _REENTRANT enables them.
+ ifeq ($(word 2,$(HPVERS_WORDS)), 11)
+ THR_DEFS += -D_REENTRANT
+ endif
+endif
+
+ifeq ($(HPMODEL), ia64)
+ itanium = 1
+endif
+
+ifeq (03,$(CXXMAJORVERS))
+ # Suppress Warning 302 ((...) parameter list is a non-portable feature)
+ CCFLAGS += +W302
+
+ ifeq (57,$(CXXMINORVERS))
+ # aCC 3.57 has a bug. When a class has private constructors
+ # and is trying to be created from a friend class we end up with
+ # a compile error. We disable array optimization in the compiler
+ # by setting this environment variable. HP CR JAGaf43094
+ export aCC_ARRAY_OPT=OFF
+ endif
+ ifeq (60,$(CXXMINORVERS))
+ # Same bug as above
+ export aCC_ARRAY_OPT=OFF
+ endif
+endif
+
+ifeq (05,$(CXXMAJORVERS))
+ # Warnings about binary incompatiblity
+ CCFLAGS += +W1016,1031
+endif
+
+CPPFLAGS += $(THR_DEFS) -D_HPUX_SOURCE -DHPUX_VERS=$(HPUX_VERS) -DACE_LACKS_PRAGMA_ONCE
+CCFLAGS += $(CC_THR_DEFS)
+
+# If exception support is explicitly disabled, tell the compiler.
+# This is not recommended since the run-time library can throw exceptions.
+ifneq ($(exceptions),1)
+ CCFLAGS += +noeh
+endif
+
+# Additionally, on HP-UX 10.20, suppress 495 to shut up the warnings from
+# the system header files. 667 is also suppressed, but the compiler still
+# tells you there was a future error, but at least you can pick out any real
+# errors by quickly scanning the output. 829 is suppressed because the
+# system headers have offending string literals assigned to char *.
+ifeq ($(word 2,$(HPVERS_WORDS)), 10)
+CCFLAGS += +W495,667,829,908
+endif
+DCCFLAGS += -g
+DLD = $(CXX) $(CCFLAGS)
+LD = $(CXX)
+OCCFLAGS = -O
+PIC = +Z
+
+PRELIB = $(COMPILE.cc) $^
+AR = /usr/ccs/bin/ar
+ARFLAGS = ruv
+RANLIB = echo
+LDFLAGS = -Wl,+s -z
+SOFLAGS += -b
+
+ifeq ($(distrib),1)
+
+ifeq ($(word 2,$(HPVERS_WORDS)), 10)
+SOFLAGS += -Wl,-x -Wl,+h/usr/lib/$(@F)
+else
+ifeq ($(buildbits),32)
+SOFLAGS += -Wl,-x -Wl,+h$(@F) -Wl,+b/usr/lib
+endif
+ifeq ($(buildbits),64)
+ ifeq ($(itanium),1)
+ SOFLAGS += -Wl,-x -Wl,+h$(@F) -Wl,+b/usr/lib/hpux64
+ else
+ SOFLAGS += -Wl,-x -Wl,+h$(@F) -Wl,+b/usr/lib/pa20_64
+ endif
+endif
+endif
+
+endif
+
+ifeq ($(itanium),1)
+ SOEXT = so
+else
+ SOEXT = sl
+endif
+
+ifeq ($(buildbits),32)
+ ifeq ($(itanium),1)
+ CFLAGS += +DD32
+ CCFLAGS += +DD32
+ else
+ CFLAGS += +DA1.1 +DS1.1
+ CCFLAGS += +DA1.1 +DS1.1
+ endif
+else
+ifeq ($(buildbits),64)
+ ifeq ($(itanium),1)
+ CFLAGS += +DD64
+ CCFLAGS += +DD64
+ else
+ ifeq ($(word 2,$(HPVERS_WORDS)), 11)
+ ## Without the W, it isn't really a 64-bit build
+ CFLAGS += +DA2.0W +DS2.0W
+ CCFLAGS += +DA2.0W +DS2.0W
+ else
+ CFLAGS += +DA2.0 +DS2.0
+ CCFLAGS += +DA2.0 +DS2.0
+ endif
+ endif
+LDFLAGS += -Wl,+vnocompatwarnings
+else
+ ifneq ($(itanium),1)
+ # HP aCC on Itanium doesn't support this option, defaults to 32bit then.
+ CFLAGS += +DAportable
+ CCFLAGS += +DAportable
+ endif
+endif
+endif
+
+#
+# Grab the appropriate libraries based on the version of HP-UX we're building
+# on and whether or not thread support is being used.
+#
+ifeq ($(word 2,$(HPVERS_WORDS)), 11)
+
+ #11.x:
+ ifeq ($(threads),1)
+ # If -mt is in CCFLAGS, we don't need to add anything to LIBS; -mt does it.
+ ifeq ($(findstring -mt,$(CCFLAGS)),)
+ ## -L./ must directly preceed the system libraries for 64-bit builds
+ ## with aCC 3.27. Without this change, libpthread.sl can not be found.
+ LIBS += -L./ -lpthread
+ endif
+ endif
+ LIBS += -lxti -lrt -ldld
+
+else
+
+ # 10.x:
+ LIBS += -lxti -ldld
+ ifeq ($(threads),1)
+ LIBS += -lcma
+ endif
+
+endif