# -*- Makefile -*- # # $Id$ # # configuration file for HP aCC on HP-UX # ######################################################################## # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed # with this work for additional information regarding copyright # ownership. The ASF licenses this file to you under the Apache # License, Version 2.0 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. See the License for the specific language governing # permissions and limitations under the License. # # Copyright 1999-2008 Rogue Wave Software, Inc. # ######################################################################## CXX = aCC CCVER := $(shell $(CXX) -V 2>&1 \ | sed "s/.* \(A\.[0-9][0-9]*\.[0-9][0-9]\)[^0-9]*.*/\1/") aCC_MAJOR := $(shell echo $(CCVER) | sed "s/[^.]*\.\([0-9]*\)\..*/\1/") aCC_MINOR := $(shell echo $(CCVER) | sed "s/[^.]*\.[^.]*\.\([0-9]*\)/\1/") WARNFLAGS = +w +W392,655,684,818,819,849 ifeq ($(shell [ $(aCC_MAJOR) -eq 3 -a $(aCC_MINOR) -lt 33 ] && echo 1),1) # disable bogus aCC warnings (aCC prior to 3.32): # 229 Ambiguous overloaded function call # 361 Value-returning function might end without executing a return statement WARNFLAGS += +W229,361 endif ifeq ($(aCC_MAJOR),06) ifeq ($(findstring optimized,$(BUILDMODE)),optimized) ifeq ($(shell [ $(aCC_MINOR) -ge 5 ] && echo 1),1) # enable security warnings for aCC 6.05 and higher # when optimization is enabled (the option implicitly # enables a limited form of cross module analysis and # increases compilation times) WARNFLAGS += +wsecurity endif # aCC >= 6.05 endif # optimization on ifeq ($(shell [ $(aCC_MINOR) -ge 15 ] && echo 1),1) # enable performance suggestions for aCC 6.15 and higher # but disable the pointless info #20302-D: performance # advice: For better performance, consider using profile # based optimization. WARNFLAGS += +wperfadvice +W20302 endif # aCC >= 6.15 # disabled warnings: # 2193 zero used for undefined preprocessing identifier # 2236 controlling expression is constant # 2261 access control not specified (%sq by default) # 2340 value copied to temporary, reference to temporary used # 2401 destructor for base class %t is not virtual # 2487 inline %n cannot be explicitly instantiated # disable aCC 6.x (EDG front end) warnings emitted with +w: WARNFLAGS += +W2193,2236,2261,2340,2401,2487 ifeq ($(shell [ $(aCC_MINOR) -gt 10 ] && echo 1),1) # disabled remarks: # 4227 padding struct with N bytes to align member # 4229 64 bit migration: conversion from "long" to "int" may truncate value # 4231 64 bit migration: conversion between types of different sizes # 4235 conversion from "T" to "U" may lose significant bits # 4237 type cast from "T" to "U" may cause sign extension # 4249 64 bit migration: value could be truncated before cast # 4255 padding size of struct with N bytes to alignment boundary # 4272 conversion from "T" to "unsigned T" may lose sign # 4284 operator= does not return reference to *this # 4285 operator= does not have a check for the source and destination # 4286 return non-const handle to non-public data member # remarks disabled as useless (even according to HP): # 4296 arithmetic operation on boolean type # 4297 boolean value is used as array index WARNFLAGS += +W4227,4229,4231,4235,4237,4249 \ +W4255,4272,4284,4285,4286,4296,4297 ifeq ($(shell [ $(aCC_MINOR) -lt 20 ] && echo 1),1) # disabled due to STDCXX-694 (hopefully fixed by the time 6.20 comes out) # 3348 declaration hides constant or variable WARNFLAGS += +W3348 endif # aCC < 6.20 endif # aCC > 6.10 endif # aCC 6.x ifeq ($(shell [ $(aCC_MAJOR) -ge 6 -o $(aCC_MINOR) -ge 38 ] && echo 1),1) # starting with aCC x.38, the +Md option is deprecated in favor of +Maked DEPENDFLAGS = +Maked -E else DEPENDFLAGS = +Md -E endif PICFLAGS = +Z LDSOFLAGS = +Z -b # the extension of assembly files is .s AS_EXT = .s # $(_CPPOPTS), $(_CXXOPTS), and $(_LDOPTS) provided to allow for modification # of the respective variables w/o underscores on HP-UX where the latter are # used directly by the compiler and linker, respectively # use -AA by default, allow -Aa as an option use_Aa := $(filter -Aa,$(_CXXOPTS)) ifneq ($(use_Aa),-Aa) CXXFLAGS = -AA "$$"(_CXXOPTS) CXXPRELINK = CPPFLAGS = "$$"(_CPPOPTS) LDFLAGS = -AA +nostl -Wl,+s "$$"(_LDOPTS) else # -Aa was specified in _CXXOPTS CXXFLAGS = -Aa +nostl "$$"(_CXXOPTS) CXXPRELINK = CPPFLAGS = -I$(TOPDIR)/include/ansi -I/usr/include "$$"(_CPPOPTS) # -Wl,+s allows the dynamic loader to consider LD_LIBRARY_PATH (LP64) # and SHLIB_PATH when loading an executable into memory LDFLAGS = -Aa +nostl -Wl,+s -Wl,+vnocompatwarnings "$$"(_LDOPTS) endif # The flag(s) to use to embed a library search path into generated executables. RPATH = -Wl,+b # math library to link with LIBM = -lm # debug/optimization options DEBUG_CXXFLAGS = -g +d DEBUG_CPPFLAGS = OPTMZ_CXXFLAGS = +O2 OPTMZ_CPPFLAGS = # shared/static library options SHARED_CXXFLAGS = SHARED_CPPFLAGS = SHARED_LDFLAGS = SHARED_SUFFIX = .sl STATIC_CXXFLAGS = STATIC_CPPFLAGS = STATIC_LDFLAGS = # multi/single thread options; # we use the macros defined by the compiler when the -mt option is used # DCE threads not added since HP-UX versions after 10.20 use POSIX MULTI_CPPFLAGS_POSIX = -mt MULTI_CPPFLAGS_SOLARIS = MULTI_CPPFLAGS_DCE = MULTI_LDFLAGS_POSIX = -mt MULTI_LDFLAGS_SOLARIS = MULTI_LDFLAGS_DCE = # POSIX MULTI_CPPFLAGS = $(MULTI_CPPFLAGS_POSIX) MULTI_LDFLAGS = $(MULTI_LDFLAGS_POSIX) SINGL_CPPFLAGS = SINGL_LDFLAGS = # wide (64-bit, LP64) flags -- must be set explicitly CXXFLAGS.wide = +DD64 LDFLAGS.wide = +DD64 LDSOFLAGS.wide = +DD64 ARFLAGS.wide = # narrow (32-bit, ILP32) flags -- implicit in the default invocation # CXXFLAGS.narrow = +DD32 # LDFLAGS.narrow = +DD32 # LDSOFLAGS.narrow = +DD32 # ARFLAGS.narrow =