summaryrefslogtreecommitdiff
path: root/ACE/include/makeinclude/platform_clang_common.GNU
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/include/makeinclude/platform_clang_common.GNU')
-rw-r--r--ACE/include/makeinclude/platform_clang_common.GNU115
1 files changed, 115 insertions, 0 deletions
diff --git a/ACE/include/makeinclude/platform_clang_common.GNU b/ACE/include/makeinclude/platform_clang_common.GNU
new file mode 100644
index 00000000000..2ab412828fc
--- /dev/null
+++ b/ACE/include/makeinclude/platform_clang_common.GNU
@@ -0,0 +1,115 @@
+# -*- Makefile -*-
+# $Id$
+#
+# Common file help turn on/off explicit template instantiation
+
+ifeq ($(openmp),1)
+FLAGS_C_CC += -fopenmp
+LDFLAGS += -fopenmp
+endif
+
+ifeq ($(CXX),insure)
+ # insure does not pass through the -dumpversion option.
+ CXX_FOR_VERSION_TEST ?= g++
+else
+ CXX_FOR_VERSION_TEST ?= $(CXX)
+endif
+
+CXX_VERSION := $(shell $(CXX_FOR_VERSION_TEST) -dumpversion)
+
+# If no option has been specified, set templates to automatic
+# version of the compiler.
+#
+templates ?= automatic
+
+# The correct flags to pass to the linker for ELF dynamic shared library
+# versioning.
+# If the platform file didn't already set versioned_so, default to 1.
+versioned_so ?= 1
+with_ld ?=
+ifeq ($(versioned_so),1)
+ ifeq ($(with_ld),hpux)
+ SOFLAGS += -Wl,+h -Wl,$(SONAME)
+ else
+ ifeq ($(with_ld),aix)
+ # What to do here???
+ else
+ SOFLAGS += -Wl,-h -Wl,$(SONAME)
+ endif
+ endif
+endif
+
+static_libs_only ?=
+
+CXX_FULL_VERSION := $(shell $(CXX_FOR_VERSION_TEST) --version)
+gcc_template_instantiation_visibility ?= 0
+
+# Only modify LDFLAGS if DLD has been set.
+ifneq ($(DLD),)
+ ifeq ($(DLD),$(CXX_FOR_VERSION_TEST)) # only try this is we are using ld through gcc
+ LD_FOR_VERSION_TEST = $(shell $(CXX_FOR_VERSION_TEST) -print-prog-name=ld)
+ else
+ LD_FOR_VERSION_TEST = $(DLD)
+ endif # DLD = CXX_FOR_VERSION_TEST
+ # The -E option is GNU ld specific
+ ifneq ($(mingw32),1)
+ GNU_LD := $(shell sh -c '$(LD_FOR_VERSION_TEST) -v 2>&1 | grep -c "GNU ld"')
+ else
+ GNU_LD := $(if $(findstring GNU ld,$(shell $(LD_FOR_VERSION_TEST) -v)), 1, 0)
+ endif # mingw32
+endif # DLD
+
+ifeq ($(GNU_LD),1)
+ STATIC_LINK_FLAG ?= -static
+endif # GNU_LD
+
+ifeq ($(no_strict_aliasing), 1)
+ CCFLAGS += -fno-strict-aliasing
+endif
+
+ifeq ($(shared_libs), 1)
+ ifneq ($(static_libs_only), 1)
+ # Add all symbols to the dynamic symbol table. Needed to enable
+ # dynamic_cast<> for shared libraries. (see
+ # http://gcc.gnu.org/faq.html#dso)
+
+ ifeq ($(GNU_LD),1)
+ # Make sure this version of ld supports the -E option.
+ ifneq ($(mingw32),1)
+ LD_EXPORT_DEFINED := $(shell sh -c '$(LD_FOR_VERSION_TEST) -E 2>&1 | egrep -i "(option|flag)" /dev/null; echo $$?')
+ else
+ LD_EXPORT_DEFINED := $(shell $(LD_FOR_VERSION_TEST) -E 2>&1 | grep -c -i -e '(option|flag)')
+ ifeq ($(LD_EXPORT_DEFINED),0)
+ LD_EXPORT_DEFINED:=1
+ else
+ LD_EXPORT_DEFINED:=0
+ endif
+ endif # mingw32
+ ifeq ($(LD_EXPORT_DEFINED),1)
+ LDFLAGS += -Wl,-E
+ endif # LD_EXPORT_DEFINED = 1
+ endif # GNU ld
+
+ # Take advantage of G++ (>= 4.x) visibility attributes to generate
+ # improved shared library binaries.
+ ifneq ($(no_hidden_visibility),1)
+ CCFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
+ ifeq ($(gcc_template_instantiation_visibility),1)
+ CCFLAGS += -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1
+ endif # gcc_template_instantiation_visibility
+ else
+ CPPFLAGS += -DACE_HAS_CUSTOM_EXPORT_MACROS=0
+ endif # no_hidden_visibility
+ else
+ # Explicitly disable G++ (>= 4.x) visibility attributes since
+ # they are only meant for use when building shared libraries.
+ no_hidden_visibility = 1
+ CPPFLAGS += -DACE_HAS_CUSTOM_EXPORT_MACROS=0
+ endif # static_libs_only
+else
+ # Explicitly disable G++ (>= 4.x) visibility attributes since
+ # they are only meant for use when building shared libraries.
+ no_hidden_visibility = 1
+ CPPFLAGS += -DACE_HAS_CUSTOM_EXPORT_MACROS=0
+endif # shared_libs
+