Enable C++14 for clang 5/6/7/8
[ACE_TAO.git] / ACE / include / makeinclude / platform_linux_clang.GNU
blob48a5e3462414bd831f8b90904d0fd3f8835fa06f
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 # clang5/6/7/8 have C++11 as default C++ version, enable this to be C++14
22 ifeq ($(findstring $(CXX_MAJOR_VERSION),5),$(CXX_MAJOR_VERSION))
23   c++14 ?= 1
24 endif
25 ifeq ($(findstring $(CXX_MAJOR_VERSION),6),$(CXX_MAJOR_VERSION))
26   c++14 ?= 1
27 endif
28 ifeq ($(findstring $(CXX_MAJOR_VERSION),7),$(CXX_MAJOR_VERSION))
29   c++14 ?= 1
30 endif
31 ifeq ($(findstring $(CXX_MAJOR_VERSION),8),$(CXX_MAJOR_VERSION))
32   c++14 ?= 1
33 endif
35 CCFLAGS += $(CFLAGS)
36 DCFLAGS += -g
37 DLD     = $(CXX)
38 LD      = $(CXX)
39 LIBS    += -ldl
41 ifeq ($(threads),1)
42   LIBS += -lpthread
43   LIBS += -lrt
44 endif
46 OCFLAGS += -O3
48 ifeq ($(optimize),0)
49   CPPFLAGS += -O0
50 endif
52 ifeq ($(c++11),1)
53   CCFLAGS += -std=c++11
54 endif
56 ifeq ($(c++14),1)
57   CCFLAGS += -std=c++14
58 endif
60 ifeq ($(no_deprecated),1)
61   CCFLAGS += -Wno-deprecated-declarations
62 endif
64 SOFLAGS += $(CPPFLAGS) -shared
65 SOBUILD = $(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.so $<; \
66           $(SOLINK.cc) -o $@ $(LDFLAGS) $(VSHDIR)$*.o
67 PRELIB  = @true
69 # Visibility doesn't seem to work with clang 2.8, default to off
70 no_hidden_visibility ?= 1
72 ifeq ($(shared_libs), 1)
73   ifneq ($static_libs_only), 1)
74     LDFLAGS += -Wl,-E
75     ifneq ($(no_hidden_visibility),1)
76       CCFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
77     else
78       CPPFLAGS += -DACE_HAS_CUSTOM_EXPORT_MACROS=0
79     endif # no_hidden_visibility
80   endif
81 endif
83 # Added line below to support "Executable Shared Object" files (as
84 # needed by the service configurator).
85 # Marius Kjeldahl <mariusk@sn.no, marius@funcom.com>
86 ifeq ($(threads),1)
87     ESOBUILD = $(COMPILEESO.cc) $(PIC) -shared -o $(VSHDIR)$*.so $<
88     ifndef PRELIB
89        PRELIB = @true
90     endif # ! PRELIB
91 endif