diff --git a/Mk/Uses/compiler.mk b/Mk/Uses/compiler.mk index 7f14e43..f7cce90 100644 --- a/Mk/Uses/compiler.mk +++ b/Mk/Uses/compiler.mk @@ -25,6 +25,7 @@ # # COMPILER_FEATURES: the list of features supported by the compiler includes the standard C++ library. # CHOSEN_COMPILER_TYPE: can be gcc or clang (type of compiler chosen by the framework) +# CHOSEN_COMPILER_VERSION: first 2 digits of the version: 33 for clang 3.3.*, 47 for gcc 4.7.* # # MAINTAINER: portmgr@FreeBSD.org @@ -101,11 +102,13 @@ ALT_COMPILER_TYPE= gcc .endif CHOSEN_COMPILER_TYPE= ${COMPILER_TYPE} +CHOSEN_COMPILER_VERSION=${COMPILER_VERSION} .if ${_COMPILER_ARGS:Mopenmp} .if ${COMPILER_TYPE} == clang USE_GCC= yes CHOSEN_COMPILER_TYPE= gcc +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .endif .endif @@ -113,6 +116,7 @@ CHOSEN_COMPILER_TYPE= gcc .if ${COMPILER_TYPE} == clang USE_GCC= any CHOSEN_COMPILER_TYPE= gcc +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .endif .endif @@ -143,9 +147,11 @@ COMPILER_FEATURES+= ${std} .if !${COMPILER_FEATURES:Mc++11} USE_GCC= yes CHOSEN_COMPILER_TYPE= gcc +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .elif ${COMPILER_TYPE} == clang && ${COMPILER_FEATURES:Mlibstdc++} USE_GCC= yes CHOSEN_COMPILER_TYPE= gcc +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .endif .endif @@ -154,18 +160,21 @@ CHOSEN_COMPILER_TYPE= gcc .if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2 USE_GCC= 5+ CHOSEN_COMPILER_TYPE= gcc +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 35) || ${COMPILER_TYPE} == gcc .if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 35 CPP= clang-cpp CC= clang CXX= clang++ CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=${ALT_COMPILER_VERSION} .else BUILD_DEPENDS+= ${LOCALBASE}/bin/clang36:${PORTSDIR}/lang/clang36 CPP= ${LOCALBASE}/bin/clang-cpp36 CC= ${LOCALBASE}/bin/clang36 CXX= ${LOCALBASE}/bin/clang++36 CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=36 .endif .endif .endif @@ -176,18 +185,21 @@ CHOSEN_COMPILER_TYPE= clang .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 +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 34) || ${COMPILER_TYPE} == gcc .if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 34 CPP= clang-cpp CC= clang CXX= clang++ CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=${ALT_COMPILER_VERSION} .else BUILD_DEPENDS+= ${LOCALBASE}/bin/clang34:${PORTSDIR}/lang/clang34 CPP= ${LOCALBASE}/bin/clang-cpp34 CC= ${LOCALBASE}/bin/clang34 CXX= ${LOCALBASE}/bin/clang++34 CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=34 .endif .endif .endif @@ -198,15 +210,18 @@ CHOSEN_COMPILER_TYPE= clang .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 +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 34) || ${COMPILER_TYPE} == gcc .if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 34 CPP= clang-cpp CC= clang CXX= clang++ CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=${ALT_COMPILER_VERSION} .else BUILD_DEPENDS+= ${LOCALBASE}/bin/clang34:${PORTSDIR}/lang/clang34 CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=34 CPP= ${LOCALBASE}/bin/clang-cpp34 CC= ${LOCALBASE}/bin/clang34 CXX= ${LOCALBASE}/bin/clang++34 @@ -220,15 +235,18 @@ CXX= ${LOCALBASE}/bin/clang++34 .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 +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 34) || ${COMPILER_TYPE} == gcc .if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 34 CPP= clang-cpp CC= clang CXX= clang++ CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=${ALT_COMPILER_VERSION} .else BUILD_DEPENDS+= ${LOCALBASE}/bin/clang34:${PORTSDIR}/lang/clang34 CHOSEN_COMPILER_TYPE= clang +CHOSEN_COMPILER_VERSION=34 CPP= ${LOCALBASE}/bin/clang-cpp34 CC= ${LOCALBASE}/bin/clang34 CXX= ${LOCALBASE}/bin/clang++34 @@ -240,6 +258,7 @@ CXX= ${LOCALBASE}/bin/clang++34 .if ${_COMPILER_ARGS:Mgcc-c++11-lib} USE_GCC= yes CHOSEN_COMPILER_TYPE= gcc +CHOSEN_COMPILER_VERSION=${CC:S/gcc//} .if ${COMPILER_FEATURES:Mlibc++} LDFLAGS+= -L${LOCALBASE}/lib/c++ CXXFLAGS+= -nostdinc++ -isystem ${LOCALBASE}/include/c++/v1