From b69ab7d324037bb552924c8bbd45781fd9fa84fe Mon Sep 17 00:00:00 2001 From: Roger Leigh Date: Sun, 17 Sep 2017 16:57:03 +0100 Subject: [PATCH] Mk/Uses/compiler.mk: Add c++11-lang option and add c++17 to CXXSTD --- Mk/Uses/compiler.mk | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Mk/Uses/compiler.mk b/Mk/Uses/compiler.mk index b87668b9f3b1..00a595baaa79 100644 --- a/Mk/Uses/compiler.mk +++ b/Mk/Uses/compiler.mk @@ -9,6 +9,7 @@ # c++0x: The port needs a compiler understanding C++0X # c++11-lang: The port needs a compiler understanding C++11 # c++14-lang: The port needs a compiler understanding C++14 +# c++17-lang: The port needs a compiler understanding C++17 # gcc-c++11-lib:The port needs g++ compiler with a C++11 library # c++11-lib: The port needs a compiler understanding C++11 and with a C++11 ready standard library # c11: The port needs a compiler understanding C11 @@ -35,7 +36,7 @@ _INCLUDE_USES_COMPILER_MK= yes compiler_ARGS= env .endif -VALID_ARGS= c++11-lib c++11-lang c++14-lang c11 features openmp env nestedfct c++0x gcc-c++11-lib +VALID_ARGS= c++11-lib c++11-lang c++14-lang c++17-lang c11 features openmp env nestedfct c++0x gcc-c++11-lib .if ${compiler_ARGS} == gcc-c++11-lib _COMPILER_ARGS+= features gcc-c++11-lib @@ -47,6 +48,8 @@ _COMPILER_ARGS+= features c++0x _COMPILER_ARGS+= features c++11-lang .elif ${compiler_ARGS} == c++14-lang _COMPILER_ARGS+= features c++14-lang +.elif ${compiler_ARGS} == c++17-lang +_COMPILER_ARGS+= features c++17-lang .elif ${compiler_ARGS} == c11 _COMPILER_ARGS+= features c11 .elif ${compiler_ARGS} == features @@ -117,7 +120,7 @@ COMPILER_FEATURES= libstdc++ .endif CSTD= c89 c99 c11 gnu89 gnu99 gnu11 -CXXSTD= c++98 c++0x c++11 c++14 gnu++98 gnu++11 +CXXSTD= c++98 c++0x c++11 c++14 c++17 gnu++98 gnu++11 .for std in ${CSTD} ${CXXSTD} _LANG=c @@ -141,6 +144,28 @@ CHOSEN_COMPILER_TYPE= gcc .endif .endif +.if ${_COMPILER_ARGS:Mc++17-lang} +.if !${COMPILER_FEATURES:Mc++17} +.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2 +USE_GCC= yes +CHOSEN_COMPILER_TYPE= gcc +.elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 50) || ${COMPILER_TYPE} == gcc +.if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 50 +CPP= clang-cpp +CC= clang +CXX= clang++ +CHOSEN_COMPILER_TYPE= clang +.else +BUILD_DEPENDS+= ${LOCALBASE}/bin/clang50:devel/llvm50 +CPP= ${LOCALBASE}/bin/clang-cpp50 +CC= ${LOCALBASE}/bin/clang50 +CXX= ${LOCALBASE}/bin/clang++50 +CHOSEN_COMPILER_TYPE= clang +.endif +.endif +.endif +.endif + .if ${_COMPILER_ARGS:Mc++14-lang} .if !${COMPILER_FEATURES:Mc++14} .if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2 -- 2.14.1