diff --git a/.dd4hep-ci.d/compile_and_test.sh b/.dd4hep-ci.d/compile_and_test.sh index 1123780b2766f610d9b808505ba380fbcf972f18..44de5e2bce408d14193bdfd470a9e917fe270849 100755 --- a/.dd4hep-ci.d/compile_and_test.sh +++ b/.dd4hep-ci.d/compile_and_test.sh @@ -5,7 +5,7 @@ source /DD4hep/.dd4hep-ci.d/init_x86_64.sh cd /DD4hep mkdir build cd build -cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS -DCMAKE_CXX_FLAGS="-fdiagnostics-color=always -Werror" .. && \ +cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS -DCMAKE_CXX_FLAGS="-fdiagnostics-color=always -Werror" .. && \ ninja && \ ninja install && \ . ../bin/thisdd4hep.sh && \ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 006e4defd18090811c2dffb56af40b553974a286..cddd97f2aecb2a1bf2065b49690fda15ccd0ecda 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ slc6-gcc7-Geant10.2: - source .dd4hep-ci.d/init_x86_64.sh - mkdir build - cd build - - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.3 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. + - cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib64/Geant4-10.2.3 -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. - ninja - ninja install - . ../bin/thisdd4hep.sh @@ -37,7 +37,7 @@ slc6-ggc7-Geant10.3: - source .dd4hep-ci.d/init_x86_64.sh - mkdir build - cd build - - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -D DD4HEP_USE_CXX14=ON -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. + - cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. - ninja - ninja install - . ../bin/thisdd4hep.sh @@ -60,7 +60,7 @@ slc6-gcc7-Geant10.3-XERCESC: - source .dd4hep-ci.d/init_x86_64.sh - mkdir build - cd build - - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DDD4HEP_USE_XERCESC=ON -DXERCESC_ROOT_DIR=${XercesC_HOME} -DROOT_DIR=$ROOTSYS .. + - cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release -DDD4HEP_USE_XERCESC=ON -DXERCESC_ROOT_DIR=${XercesC_HOME} -DROOT_DIR=$ROOTSYS .. - ninja - ninja install - . ../bin/thisdd4hep.sh @@ -84,7 +84,7 @@ slc6-llvm5-Geant10.3: - source .dd4hep-ci.d/init_x86_64.sh - mkdir build - cd build - - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. + - cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. - ninja - ninja install - . ../bin/thisdd4hep.sh @@ -107,7 +107,7 @@ slc6-llvm5-Geant10.3-XERCESC: - source .dd4hep-ci.d/init_x86_64.sh - mkdir build - cd build - - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DDD4HEP_USE_XERCESC=ON -DXERCESC_ROOT_DIR=${XercesC_HOME} -DROOT_DIR=$ROOTSYS .. + - cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib64/Geant4-10.3.3 -DCMAKE_BUILD_TYPE=Release -DDD4HEP_USE_XERCESC=ON -DXERCESC_ROOT_DIR=${XercesC_HOME} -DROOT_DIR=$ROOTSYS .. - ninja - ninja install - . ../bin/thisdd4hep.sh @@ -128,7 +128,7 @@ mac1013-llvm90: - source .dd4hep-ci.d/init_x86_64.sh - mkdir build - cd build - - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib/Geant4-10.3.3 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. + - cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib/Geant4-10.3.3 -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. - ninja - ninja install - . ../bin/thisdd4hep.sh @@ -149,7 +149,7 @@ mac1013-llvm90-XERCESC: - source .dd4hep-ci.d/init_x86_64.sh - mkdir build - cd build - - cmake -GNinja -D DD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON -D Geant4_DIR=$G4INSTALL/lib/Geant4-10.3.3 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DDD4HEP_USE_XERCESC=ON -DXERCESC_ROOT_DIR=${XercesC_HOME} -DROOT_DIR=$ROOTSYS .. + - cmake -GNinja -DDD4HEP_USE_GEANT4=ON -DBoost_NO_BOOST_CMAKE=ON -DDD4HEP_USE_LCIO=ON -DBUILD_TESTING=ON -DGeant4_DIR=$G4INSTALL/lib/Geant4-10.3.3 -DCMAKE_BUILD_TYPE=Release -DDD4HEP_USE_XERCESC=ON -DXERCESC_ROOT_DIR=${XercesC_HOME} -DROOT_DIR=$ROOTSYS .. - ninja - ninja install - . ../bin/thisdd4hep.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 01c0694f71da7d63f27c4d7fa26e10ddc88e6693..c84c38812e82a5fef6fbee22a4c651a1f0013928 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,11 @@ ENDIF() ENABLE_LANGUAGE(CXX) +# Set C++ standard +set(CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard used for compiling") +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + ############################### # Define DD4hep build options # ############################### @@ -53,7 +58,6 @@ option(DD4HEP_USE_GEANT4 "Enable the simulation part based on Geant4" OFF) option(DD4HEP_USE_GEAR "Build gear wrapper for backward compatibility" OFF) option(DD4HEP_USE_LCIO "Build lcio extensions" OFF) option(BUILD_TESTING "Enable and build tests" ON) -option(DD4HEP_USE_CXX14 "Build DD4hep using c++14" OFF) option(CMAKE_MACOSX_RPATH "Build with rpath on macos" ON) ##################### diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake index 668add5481a4b678a42c96db3f71a54c24ea0d31..23291e2fe4ec3c3f2a0863ac214b29e934938658 100644 --- a/cmake/DD4hepBuild.cmake +++ b/cmake/DD4hepBuild.cmake @@ -11,20 +11,16 @@ #================================================================================= ##set(DD4HEP_DEBUG_CMAKE 1) -message ( STATUS "INCLUDING DD4hepBuild.... c++11:${DD4HEP_USE_CXX11} c++14:${DD4HEP_USE_CXX14}" ) - +message ( STATUS "INCLUDING DD4hepBuild.cmake" ) include ( CMakeParseArguments ) set ( DD4hepBuild_included ON ) -##set ( DD4HEP_DEBUG_CMAKE ON ) -##set ( CMAKE_CTEST_COMMAND ${CMAKE_CTEST_COMMAND} --test-output-size-passed 4096 ) + #--------------------------------------------------------------------------------------------------- macro(dd4hep_to_parent_scope val) set ( ${val} ${${val}} PARENT_SCOPE ) endmacro(dd4hep_to_parent_scope) -find_package(Threads REQUIRED) - #--------------------------------------------------------------------------------------------------- # MACRO: dd4hep_set_compiler_flags # @@ -60,29 +56,15 @@ macro(dd4hep_set_compiler_flags) ENDIF() ENDFOREACH() - CHECK_CXX_COMPILER_FLAG("-std=c++14" CXX_FLAG_WORKS_CXX14) - CHECK_CXX_COMPILER_FLAG("-std=c++11" CXX_FLAG_WORKS_CXX11) CHECK_CXX_COMPILER_FLAG("-ftls-model=global-dynamic" CXX_FLAG_WORKS_FTLS_global_dynamic) - if (NOT CXX_FLAG_WORKS_CXX11) - message( FATAL_ERROR "The provided compiler does not support the C++11 standard" ) - endif() - - if (NOT CXX_FLAG_WORKS_FTLS_global_dynamic) + if (CXX_FLAG_WORKS_FTLS_global_dynamic) + set ( CMAKE_CXX_FLAGS "-ftls-model=global-dynamic ${CMAKE_CXX_FLAGS} ") + else() message( FATAL_ERROR "The provided compiler does not support the flag -ftls-model=global-dynamic" ) endif() - if ( DD4HEP_USE_CXX14 ) - set ( CMAKE_CXX_FLAGS "-std=c++14 -ftls-model=global-dynamic ${CMAKE_CXX_FLAGS} ") - set ( DD4HEP_USE_CXX11 OFF ) - set ( DD4HEP_USE_STDCXX 14 ) - add_definitions(-DDD4HEP_USE_STDCXX=14) - else() - set ( CMAKE_CXX_FLAGS "-std=c++11 -ftls-model=global-dynamic ${CMAKE_CXX_FLAGS} ") - set ( DD4HEP_USE_CXX14 OFF ) - set ( DD4HEP_USE_STDCXX 11 ) - add_definitions(-DDD4HEP_USE_STDCXX=11) - endif() + find_package(Threads REQUIRED) if ( THREADS_HAVE_PTHREAD_ARG OR CMAKE_USE_PTHREADS_INIT ) set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") @@ -294,7 +276,6 @@ function( dd4hep_print_cmake_options ) dd4hep_print ( "| Requires LCIO_DIR to be set |") dd4hep_print ( "| or LCIO in CMAKE_MODULE_PATH |") dd4hep_print ( "| DD4HEP_USE_GEAR Build gear wrapper for backward compatibility OFF |") - dd4hep_print ( "| DD4HEP_USE_CXX14 Build DD4hep using c++14 OFF |") dd4hep_print ( "| BUILD_TESTING Enable and build tests ON |") dd4hep_print ( "| DD4HEP_USE_PYROOT Enable 'Detector Builders' based on PyROOT OFF |") dd4hep_print ( "+---------------------------------------------------------------------------+") @@ -1326,7 +1307,7 @@ function( dd4hep_add_dictionary dictionary ) # add_custom_command(OUTPUT ${dictionary}.cxx COMMAND ${ROOT_rootcling_CMD} -cint -f ${dictionary}.cxx - -s ${CMAKE_CURRENT_BINARY_DIR}/../lib/${dictionary} -inlineInputHeader -c -p ${ARG_OPTIONS} ${comp_defs} -std=c++${DD4HEP_USE_STDCXX} ${inc_dirs} ${headers} ${linkdefs} + -s ${CMAKE_CURRENT_BINARY_DIR}/../lib/${dictionary} -inlineInputHeader -c -p ${ARG_OPTIONS} ${comp_defs} -std=c++${CMAKE_CXX_STANDARD} ${inc_dirs} ${headers} ${linkdefs} DEPENDS ${headers} ${linkdefs} ) # Install the binary to the destination directory #set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/../lib/${dictionary}_rdict.pcm PROPERTIES GENERATED TRUE ) diff --git a/cmake/DD4hepConfig.cmake.in b/cmake/DD4hepConfig.cmake.in index 9eb51c03921f14162f1b0691fdb54cccb6422cb7..db5b0bbd400a2ea60d696cc318fae47c7cc66421 100644 --- a/cmake/DD4hepConfig.cmake.in +++ b/cmake/DD4hepConfig.cmake.in @@ -19,8 +19,9 @@ set ( DD4hep_VERSION "@DD4hep_VERSION@" ) set ( DD4hep_SOVERSION "@DD4hep_SOVERSION@" ) set ( DD4HEP_USE_GEANT4 "@DD4HEP_USE_GEANT4@" ) set ( DD4HEP_USE_XERCESC "@DD4HEP_USE_XERCESC@" ) -set ( DD4HEP_USE_CXX11 "@DD4HEP_USE_CXX11@" ) -set ( DD4HEP_USE_CXX14 "@DD4HEP_USE_CXX14@" ) +set ( CMAKE_CXX_STANDARD "@CMAKE_CXX_STANDARD@" ) +set ( CMAKE_CXX_STANDARD_REQUIRED ON ) +set ( CMAKE_CXX_EXTENSIONS OFF ) set ( Geant4_DIR "@Geant4_DIR@" ) set ( GEANT4_USE_CLHEP "@GEANT4_USE_CLHEP@" ) @@ -88,16 +89,6 @@ if( @DD4HEP_USE_XERCESC@ ) endif() INCLUDE( ${DD4hep_DIR}/cmake/DD4hep_XML_setup.cmake ) -# ----------------------------------------- -if( @DD4HEP_USE_CXX14@ ) - SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14" ) - ADD_DEFINITIONs(-DDD4HEP_USE_CXX14) -elseif( @DD4HEP_USE_CXX11@ ) - SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" ) - ADD_DEFINITIONs(-DDD4HEP_USE_CXX11) -else() -endif() - #----- APPLE ? ------- set( USE_DYLD @USE_DYLD@ ) diff --git a/cmake/DD4hepMacros.cmake b/cmake/DD4hepMacros.cmake index edc1dd75dcb333f0910c540bf95ecf695a1e3361..50ccad2061673fa4e83d52a774344deb88d93a4a 100644 --- a/cmake/DD4hepMacros.cmake +++ b/cmake/DD4hepMacros.cmake @@ -26,6 +26,18 @@ MACRO( DISPLAY_STD_VARIABLES ) MESSAGE( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" ) ENDIF() + IF( DEFINED CMAKE_CXX_FLAGS ) + MESSAGE( STATUS "CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}" ) + ENDIF() + + IF( DEFINED CMAKE_CXX_STANDARD ) + MESSAGE( STATUS "CMAKE_CXX_STANDARD = ${CMAKE_CXX_STANDARD}" ) + ENDIF() + + IF( DEFINED CMAKE_SHARED_LINKER_FLAGS ) + MESSAGE( STATUS "CMAKE_SHARED_LINKER_FLAGS = ${CMAKE_SHARED_LINKER_FLAGS}" ) + ENDIF() + IF( DEFINED BUILD_SHARED_LIBS ) MESSAGE( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" ) ENDIF() @@ -34,10 +46,6 @@ MACRO( DISPLAY_STD_VARIABLES ) MESSAGE( STATUS "BUILD_TESTING = ${BUILD_TESTING}" ) ENDIF() - IF( DEFINED INSTALL_DOC ) - MESSAGE( STATUS "INSTALL_DOC = ${INSTALL_DOC}" ) - ENDIF() - IF( DEFINED CMAKE_PREFIX_PATH ) LIST( REMOVE_DUPLICATES CMAKE_PREFIX_PATH ) #MESSAGE( STATUS "CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}" )