From c9adc753a9dd4eb534d81507ae24f4ed30ad3937 Mon Sep 17 00:00:00 2001 From: Andrea Valassi <avalassi@cern.ch> Date: Mon, 18 Jan 2016 20:47:50 +0000 Subject: [PATCH] Add c++1y for gcc49 and c++14 for clang and gcc5x as agreed in the LCG build policies (CORALCOOL-2854). Allow the specification of build flags from outside cmake via CMAKE_CXX_FLAGS (e.g. by lcgcmake); use the c++xx build option specified in CMAKE_CXX_FLAGS if any, otherwise use c++1y for gcc49, c++14 for clang and gcc5x, and c++11 in all other cases. git-svn-id: file:///git/lcgcool.svndb/cool/trunk@19881 4525493e-7705-40b1-a816-d608a930855b --- cmake/CORALBuildFlags.cmake | 31 ++++++++++++++++++++++++------- setupCMake.sh | 3 +++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/cmake/CORALBuildFlags.cmake b/cmake/CORALBuildFlags.cmake index 6d151bace..a7770aedb 100644 --- a/cmake/CORALBuildFlags.cmake +++ b/cmake/CORALBuildFlags.cmake @@ -1,15 +1,32 @@ # Build options option(BUILD_SHARED_LIBS "Set to OFF to build static libraries." ON) -# Build flags +# 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 "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() + +# Build flags (warnings and other common options) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -fPIC") + +# Build flags (other platform-dependent settings) IF(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") - set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") ELSEIF(BINARY_TAG MATCHES "clang35") # See CORALCOOL-2821 - ###set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/afs/cern.ch/sw/lcg/external/gcc/4.9.1/x86_64-slc6") - set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.1/x86_64-slc6") + 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 "clang37") # See CORALCOOL-2821 - ###set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/afs/cern.ch/sw/lcg/external/gcc/4.9.3/x86_64-slc6") - set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.3/x86_64-slc6") # use cvmfs, see CORALCOOL-2855 + 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 ELSE() - set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -std=c++11 -fPIC -Wl,--no-undefined") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined") ENDIF() + +message(STATUS "Using CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}") diff --git a/setupCMake.sh b/setupCMake.sh index 84ee61db3..e0f3fe59e 100644 --- a/setupCMake.sh +++ b/setupCMake.sh @@ -96,6 +96,9 @@ export CCACHE_DIR=$topdir/.ccache # keep this here to allow interactive queries export LCG_releases_base=/cvmfs/sft.cern.ch/lcg/releases/LCG_${lcg_xx} export CORALCOOL_CMAKE_LCGSUMMARY=${LCG_releases_base}/LCG_externals_${BINARY_TAG}.txt +# 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" -- GitLab