diff --git a/cmake/CORALBuildFlags.cmake b/cmake/CORALBuildFlags.cmake index 2a3ce7d90d45d24ec3939c269de0490e2cdfb2a5..c7bf9270fb008e0fdcf5a36562582606b186a755 100644 --- a/cmake/CORALBuildFlags.cmake +++ b/cmake/CORALBuildFlags.cmake @@ -2,20 +2,12 @@ option(BUILD_SHARED_LIBS "Set to OFF to build static libraries." ON) # Build flags (C++ std) -# [NB Keep flags passed from outside, e.g. from lcgcmake (CORALCOOL-2854)] -IF(NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+11" AND NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+1y" AND NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+14") - IF(BINARY_TAG MATCHES "clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - ELSEIF(BINARY_TAG MATCHES "gcc6") # CORALCOOL-2895 and CORALCOOL-2913 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - ELSEIF(BINARY_TAG MATCHES "gcc5") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - ELSEIF(BINARY_TAG MATCHES "gcc49") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y") - ELSEIF(BINARY_TAG MATCHES "gcc48") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - ENDIF() -ENDIF() +# [NB Keep flags passed from lcgcmake or setupLCG.sh (CORALCOOL-2854)] +# [NB The -std=c++11 flags must be passed from outside (CORALCOOL-2846)] + +# Build flags (gcc-toolchain options for clang) +# [NB Keep flags passed from lcgcmake or setupLCG.sh (CORALCOOL-2854)] +# [NB The --gcc-toolchain flags must be passed from outside (CORALCOOL-2846)] # Build flags (warnings and other common options) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -fPIC") @@ -23,11 +15,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wno-long-long - # Build flags (other platform-dependent settings) IF(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -ELSEIF(BINARY_TAG MATCHES "clang35") # See CORALCOOL-2821 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.1/x86_64-slc6") # cvmfs instead of AFS, see CORALCOOL-2855 +ELSEIF(BINARY_TAG MATCHES "clang35") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") # CORALCOOL-2871 -ELSEIF(BINARY_TAG MATCHES "clang37") # See CORALCOOL-2821 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.3/x86_64-slc6") # cvmfs instead of AFS, see CORALCOOL-2855 +ELSEIF(BINARY_TAG MATCHES "clang37") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") # CORALCOOL-2871 ELSE() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined") diff --git a/setupLCG.sh b/setupLCG.sh index 69454691b654c2b1cc30fedd1a14f5612dad67ba..1746db4ffdc7ba3d59cd22ff9030e91cd1854ddc 100644 --- a/setupLCG.sh +++ b/setupLCG.sh @@ -172,6 +172,33 @@ else return 1 fi +#------------------------------------------------------------------------------- +# Set up CMAKE_CXX_FLAGS from BINARY_TAG (CORALCOOL-2854 and CORALCOOL-2846) +#------------------------------------------------------------------------------- + +# Build flags (C++ std) +if [[ $BINARY_TAG == *clang* ]]; then + CMAKE_CXX_FLAGS="-std=c++14" +elif [[ $BINARY_TAG == *gcc6* ]]; then # CORALCOOL-2895 and CORALCOOL-2913 + CMAKE_CXX_FLAGS="-std=c++14" +elif [[ $BINARY_TAG == *gcc5* ]]; then + CMAKE_CXX_FLAGS="-std=c++14" +elif [[ $BINARY_TAG == *gcc49* ]]; then + CMAKE_CXX_FLAGS="-std=c++1y" +elif [[ $BINARY_TAG == *gcc48* ]]; then + CMAKE_CXX_FLAGS="-std=c++11" +fi + +# Build flags (gcc-toolchain options for clang) +# [NB These are now no longer passed to lcgcmake (CORALCOOL-2846): is this ok?] +if [[ $BINARY_TAG == *mac* ]]; then + : # noop +elif [[ $BINARY_TAG == *clang35* ]]; then # See CORALCOOL-2821 + CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.1/x86_64-slc6" # cvmfs instead of AFS, see CORALCOOL-2855 +elif [[ $BINARY_TAG == *clang37* ]]; then # See CORALCOOL-2821 + CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.3/x86_64-slc6" # cvmfs instead of AFS, see CORALCOOL-2855 +fi + #------------------------------------------------------------------------------- # Set up Cmake #------------------------------------------------------------------------------- @@ -240,6 +267,9 @@ CMAKEFLAGS="-DBINARY_TAG=$BINARY_TAG $CMAKEFLAGS" # [This is a CMake standard variable] CMAKEFLAGS="-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE $CMAKEFLAGS" +# Set CMAKE_CXX_FLAGS +CMAKEFLAGS="-DCMAKE_CXX_FLAGS=$CMAKE_CXX_FLAGS $CMAKEFLAGS" + # Set CMAKE_VERBOSE_MAKEFILE # ** This is now enabled by default only in lcgcmake and cc-build, not here! ** # [This is a CMake standard variable] @@ -269,9 +299,6 @@ export CMAKEFLAGS ###export CMAKEFLAGS="-DCMAKE_INSTALL_PREFIX=../my.${BINARY_TAG} $CMAKEFLAGS" ###export CMAKEFLAGS="-DCMAKE_INSTALL_PREFIX=/tmp/my.${BINARY_TAG} $CMAKEFLAGS" -# FIXME! Test passing CMAKE_CXX_FLAGS as in lcgcmake -###export CMAKEFLAGS="-DCMAKE_CXX_FLAGS=-std=c++1y $CMAKEFLAGS" - # Add setup overrides if any are present if [ -f $topdir/overrideSetupCMake.sh ]; then echo "INFO: override defaults using $topdir/overrideSetupCMake.sh"