Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / ACE / include / makeinclude / platform_linux_clang.GNU
blob23cd17cb53eeec7d3990c5aa6dbe7395749542cf
1 # This file should allow ACE to be built on Linux, using the clang compiler.
3 include $(ACE_ROOT)/include/makeinclude/platform_linux_common.GNU
5 ifeq ($(insure),0)
6   ifeq ($(CXX),g++)
7     CC  = clang
8     CXX = clang++
9   endif
10 endif
12 ifndef CXX_VERSION
13   CXX_VERSION := $(shell $(CXX) -dumpversion)
14 endif
15 ifeq (cmd,$(findstring cmd,$(SHELL)))
16 CXX_MAJOR_VERSION := $(firstword $(subst ., ,$(CXX_VERSION)))
17 else
18 CXX_MAJOR_VERSION := $(shell $(CXX) -dumpversion | sed -e 's/[^0-9\.]//g' | sed -e 's/\..*$$//')
19 endif
21 CCFLAGS += $(CFLAGS)
22 DCFLAGS += -g
23 DLD     = $(CXX)
24 LD      = $(CXX)
25 LIBS    += -ldl
27 ifeq ($(threads),1)
28   LIBS += -lpthread
29   LIBS += -lrt
30 endif
32 OCFLAGS += -O3
34 ifeq ($(optimize),0)
35   CPPFLAGS += -O0
36 endif
38 ifeq ($(c++14),1)
39   CCFLAGS += -std=c++14
40 endif
42 ifeq ($(no_deprecated),1)
43   CCFLAGS += -Wno-deprecated-declarations
44 endif
46 SOFLAGS += $(CPPFLAGS) -shared
47 SOBUILD = $(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.so $<; \
48           $(SOLINK.cc) -o $@ $(LDFLAGS) $(VSHDIR)$*.o
49 PRELIB  = @true
51 # Visibility doesn't seem to work with clang 2.8, default to off
52 no_hidden_visibility ?= 1
54 ifeq ($(shared_libs), 1)
55   ifneq ($static_libs_only), 1)
56     LDFLAGS += -Wl,-E
57     ifneq ($(no_hidden_visibility),1)
58       CCFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
59     else
60       CPPFLAGS += -DACE_HAS_CUSTOM_EXPORT_MACROS=0
61     endif # no_hidden_visibility
62   endif
63 endif
65 # Added line below to support "Executable Shared Object" files (as
66 # needed by the service configurator).
67 # Marius Kjeldahl <mariusk@sn.no, marius@funcom.com>
68 ifeq ($(threads),1)
69     ESOBUILD = $(COMPILEESO.cc) $(PIC) -shared -o $(VSHDIR)$*.so $<
70     ifndef PRELIB
71        PRELIB = @true
72     endif # ! PRELIB
73 endif