#! /bin/sh # # cpp11-clang # # Detect compatible Clang version and add c++11/14 flags # CXXMAJOR := $(shell $(CXX) -x c++ /dev/null -dM -E | grep __clang_major__ | sed -e 's/^.* //g') CXXMINOR := $(shell $(CXX) -x c++ /dev/null -dM -E | grep __clang_minor__ | sed -e 's/^.* //g') CXXPATCH := $(shell $(CXX) -x c++ /dev/null -dM -E | grep __clang_patchlevel__ | sed -e 's/^.* //g') CXXVERSION := $(CXXMAJOR)$(CXXMINOR)$(CXXPATCH) # # Clang 3.4 doesn't accept -std=c++14, only -std=c++1y. # # C++14 needs Clang 3.4 ifeq ($(shell test $(CXXVERSION) -ge 340 && echo 1), 1) CXXFLAGS += -std=c++1y # C++11 needs Clang 3.3 else ifeq ($(shell test $(CXXVERSION) -ge 330 && echo 1), 1) CXXFLAGS += -std=c++0x endif