Back to home page

sPhenix code displayed by LXR

 
 

    


Warning, /GenFit/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
0002 if(POLICY CMP0042)
0003    # policies not known to CMake 2.8 ...
0004    cmake_policy(SET CMP0042 NEW) # Mac OS -rpath behavior
0005 endif(POLICY CMP0042)
0006 
0007 # declare the project name
0008 PROJECT(genfit2)
0009 
0010 # set project version
0011 SET( ${PROJECT_NAME}_VERSION_MAJOR 2 )
0012 SET( ${PROJECT_NAME}_VERSION_MINOR 2 )
0013 SET( ${PROJECT_NAME}_VERSION_PATCH 0 )
0014 
0015 include(GNUInstallDirs)
0016 
0017 # install destinations can be passed via the command line:
0018 # cmake -DLIBRARY_OUTPUT_DIRECTORY:PATH=.... -DINCLUDE_OUTPUT_DIRECTORY:PATH=....
0019 # otherwise, set default install destinations
0020 IF(NOT DEFINED LIBRARY_OUTPUT_DIRECTORY)
0021         set( LIBRARY_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR} )
0022 ENDIF()
0023 IF(NOT DEFINED INCLUDE_OUTPUT_DIRECTORY)
0024         set( INCLUDE_OUTPUT_DIRECTORY ${CMAKE_INSTALL_INCLUDEDIR} )
0025 ENDIF()
0026 
0027 # define path to macros and settings
0028 LIST( APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake )
0029 # include the macros and settings
0030 INCLUDE(settings)
0031 INCLUDE(macros)
0032 INCLUDE(genfit)
0033 
0034 FIND_PACKAGE(ROOT REQUIRED COMPONENTS Geom)
0035 IF(${ROOT_found_version} LESS 60000)
0036         MESSAGE(FATAL_ERROR "GenFit requires a ROOT version > 6.00.00")
0037 ENDIF()
0038 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ROOT_CXX_FLAGS}")
0039 
0040 
0041 # either, the environment variable RAVEPATH has to be specified, and RAVE's RaveConfig.cmake will be used to determine everything we need
0042 # or, Rave_LDFLAGS, Rave_INCLUDE_DIRS and Rave_CFLAGS have to be set via the command-line
0043 
0044 
0045 IF(DEFINED ENV{RAVEPATH})
0046         MESSAGE(STATUS "Environment variable RAVEPATH is set. Try to build GFRave.")
0047         # get compiler flags from rave
0048         INCLUDE(FindPkgConfig)
0049         SET(ENV{PKG_CONFIG_PATH} $ENV{RAVEPATH})
0050         find_package(Rave REQUIRED)
0051         
0052         SET(RAVE True)
0053 ELSEIF(DEFINED Rave_LDFLAGS)
0054         IF(DEFINED Rave_INCLUDE_DIRS)
0055                 IF(DEFINED Rave_CFLAGS)
0056                         MESSAGE(STATUS "Rave_LDFLAGS, Rave_INCLUDE_DIRS and Rave_CFLAGS are set. Try to build GFRave.")
0057                         SET(RAVE True)
0058                 ENDIF()
0059         ENDIF()
0060 ELSE()
0061         MESSAGE(STATUS "No RAVEPATH or Rave flags given. GFRave will not be built.")
0062 ENDIF()
0063 
0064 IF(DEFINED RAVE)
0065         # turn comma separated lists into space separated strings
0066         string (REPLACE ";" " " Rave_LDFLAGS_STR "${Rave_LDFLAGS}")
0067         string (REPLACE ";" " " Rave_INCLUDE_DIRS_STR "${Rave_INCLUDE_DIRS}")
0068         string (REPLACE ";" " " Rave_CFLAGS_STR "${Rave_CFLAGS}")
0069 
0070         SET (CMAKE_CXX_FLAGS ${Rave_DEFINITIONS} ${Rave_CFLAGS_STR})
0071         SET(GF_INC_DIRS
0072                 ./GFRave/include/ ${Rave_INCLUDE_DIRS_STR}
0073         )
0074         
0075         AUX_SOURCE_DIRECTORY( ./GFRave/src  library_sources )
0076 ENDIF()
0077 
0078 # Set GENFIT include directories
0079 SET(GF_INC_DIRS
0080                 ./core/include/
0081                 ./eventDisplay/include/
0082                 ./fields/include/
0083                 ./finitePlanes/include/
0084                 ./fitters/include/
0085                 ./GBL/include/
0086                 ./measurements/include/
0087                 ./trackReps/include/
0088                 ./utilities/include/
0089                 ${GF_INC_DIRS}
0090 )
0091 
0092 INSTALL(DIRECTORY ${GF_INC_DIRS}
0093         DESTINATION ${INCLUDE_OUTPUT_DIRECTORY}
0094         PATTERN ".svn" EXCLUDE)
0095 
0096 IF(NOT CMAKE_BUILD_TYPE)
0097   SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
0098       "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
0099       FORCE)
0100 ENDIF(NOT CMAKE_BUILD_TYPE)
0101 
0102 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wpedantic -Wall -Wextra \
0103  -Wno-long-long -Wshadow -Werror=overloaded-virtual -Wunused-parameter -Waddress")
0104 
0105 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g")
0106 SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3")
0107 SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -O3 -g")
0108 
0109 
0110 INCLUDE_DIRECTORIES(
0111                 BEFORE
0112                 ${ROOT_INCLUDE_DIRS}
0113                 SYSTEM ${EIGEN3_INCLUDE_DIR}
0114                 ${GF_INC_DIRS}
0115 )
0116 
0117 FIND_PACKAGE(Doxygen)
0118 IF(DOXYGEN_FOUND)
0119     CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile @ONLY)
0120 
0121     ADD_CUSTOM_TARGET(doc
0122         ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile
0123         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
0124         COMMENT "Generating API documentation with Doxygen" VERBATIM)
0125 ELSE()
0126     MESSAGE( STATUS "Doxygen not installed or found -- API documentation can't be generated!" )
0127 ENDIF(DOXYGEN_FOUND)
0128 
0129 
0130 # declare the ROOT library path
0131 LINK_DIRECTORIES(${ROOT_LIBRARY_DIR})
0132 
0133 
0134 # add the list of source code files -- careful, when a new file is added!
0135 AUX_SOURCE_DIRECTORY( ./core/src          library_sources )
0136 AUX_SOURCE_DIRECTORY( ./eventDisplay/src  library_sources )
0137 AUX_SOURCE_DIRECTORY( ./fields/src        library_sources )
0138 AUX_SOURCE_DIRECTORY( ./finitePlanes/src  library_sources )
0139 AUX_SOURCE_DIRECTORY( ./fitters/src       library_sources )
0140 AUX_SOURCE_DIRECTORY( ./GBL/src           library_sources )
0141 AUX_SOURCE_DIRECTORY( ./measurements/src  library_sources )
0142 AUX_SOURCE_DIRECTORY( ./trackReps/src     library_sources )
0143 AUX_SOURCE_DIRECTORY( ./utilities/src     library_sources )
0144 
0145 # Dictionary generation.  For the time being, we list classes one-by-one.
0146 SET(CORE_DICTIONARY_SOURCES
0147                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/AbsFinitePlane.h
0148                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/AbsFitterInfo.h
0149                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/AbsHMatrix.h
0150                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/AbsTrackRep.h
0151                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/DetPlane.h
0152                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/FitStatus.h
0153                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/IO.h
0154                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/Material.h
0155                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/MeasuredStateOnPlane.h
0156                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/MeasurementFactory.h
0157                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/MeasurementOnPlane.h
0158                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/MeasurementProducer.h
0159                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/StateOnPlane.h
0160                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/AbsMeasurement.h
0161                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/ThinScatterer.h
0162                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/Track.h
0163                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/TrackCand.h
0164                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/TrackCandHit.h
0165                 ${CMAKE_CURRENT_SOURCE_DIR}/core/include/TrackPoint.h
0166                 ${CMAKE_CURRENT_SOURCE_DIR}/finitePlanes/include/RectangularFinitePlane.h
0167 )
0168 ROOT_GENERATE_DICTIONARY(
0169                 "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0170                 "${CORE_DICTIONARY_SOURCES}"
0171                 "${CMAKE_CURRENT_SOURCE_DIR}/core/include"
0172                 "${CMAKE_CURRENT_SOURCE_DIR}/core/src/coreLinkDef.h"
0173                 "${CMAKE_CURRENT_BINARY_DIR}/coreRootDict.cc"
0174 )
0175 SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/coreRootDict.cc" "${library_sources}")
0176 
0177 SET(EVENTDISPLAY_DICTIONARY_SOURCES
0178                 ${CMAKE_CURRENT_SOURCE_DIR}/eventDisplay/include/EventDisplay.h
0179 )
0180 ROOT_GENERATE_DICTIONARY(
0181                 "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0182                 "${EVENTDISPLAY_DICTIONARY_SOURCES}"
0183                 "${CMAKE_CURRENT_SOURCE_DIR}/core/include;${CMAKE_CURRENT_SOURCE_DIR}/fitters/include;${CMAKE_CURRENT_SOURCE_DIR}/eventDisplay/include"
0184                 "${CMAKE_CURRENT_SOURCE_DIR}/eventDisplay/src/eventDisplayLinkDef.h"
0185                 "${CMAKE_CURRENT_BINARY_DIR}/eventDisplayRootDict.cc"
0186 )
0187 SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/eventDisplayRootDict.cc" "${library_sources}")
0188 
0189 SET(FITTERS_DICTIONARY_SOURCES
0190                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/AbsKalmanFitter.h
0191                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/KalmanFittedStateOnPlane.h
0192                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/KalmanFitStatus.h
0193                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/ReferenceStateOnPlane.h
0194                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/KalmanFitterRefTrack.h
0195                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/KalmanFitter.h
0196                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/KalmanFitterInfo.h
0197                 ${CMAKE_CURRENT_SOURCE_DIR}/fitters/include/DAF.h
0198 )
0199 ROOT_GENERATE_DICTIONARY(
0200                 "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0201                 "${FITTERS_DICTIONARY_SOURCES}"
0202                 "${CMAKE_CURRENT_SOURCE_DIR}/core/include;${CMAKE_CURRENT_SOURCE_DIR}/fitters/include"
0203                 "${CMAKE_CURRENT_SOURCE_DIR}/fitters/src/fittersLinkDef.h"
0204                 "${CMAKE_CURRENT_BINARY_DIR}/fittersRootDict.cc"
0205 )
0206 SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/fittersRootDict.cc" "${library_sources}")
0207 
0208 SET(GBL_DICTIONARY_SOURCES
0209                 ${CMAKE_CURRENT_SOURCE_DIR}/GBL/include/GFGbl.h
0210                 ${CMAKE_CURRENT_SOURCE_DIR}/GBL/include/GblFitter.h
0211                 ${CMAKE_CURRENT_SOURCE_DIR}/GBL/include/ICalibrationParametersDerivatives.h
0212                 ${CMAKE_CURRENT_SOURCE_DIR}/GBL/include/GblFitterInfo.h
0213                 ${CMAKE_CURRENT_SOURCE_DIR}/GBL/include/GblFitStatus.h
0214                 ${CMAKE_CURRENT_SOURCE_DIR}/GBL/include/GblData.h
0215 )
0216 ROOT_GENERATE_DICTIONARY(
0217                 "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0218         "${GBL_DICTIONARY_SOURCES}"
0219                 "${CMAKE_CURRENT_SOURCE_DIR}/core/include;${CMAKE_CURRENT_SOURCE_DIR}/GBL/include"
0220                 "${CMAKE_CURRENT_SOURCE_DIR}/GBL/src/GBLLinkDef.h"
0221                 "${CMAKE_CURRENT_BINARY_DIR}/GBLRootDict.cc"
0222 )
0223 SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/GBLRootDict.cc" "${library_sources}")
0224 
0225 SET(MEASUREMENTS_DICTIONARY_SOURCES
0226                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/HMatrixPhi.h
0227                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/HMatrixU.h
0228                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/HMatrixUnit.h
0229                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/HMatrixV.h
0230                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/HMatrixUV.h
0231                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/FullMeasurement.h
0232                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/PlanarMeasurement.h
0233                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/ProlateSpacepointMeasurement.h
0234                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/SpacepointMeasurement.h
0235                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/WireMeasurement.h
0236                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/WireMeasurementNew.h
0237                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/WirePointMeasurement.h
0238                 ${CMAKE_CURRENT_SOURCE_DIR}/measurements/include/WireTrackCandHit.h
0239 )
0240 ROOT_GENERATE_DICTIONARY(
0241                 "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0242                 "${MEASUREMENTS_DICTIONARY_SOURCES}"
0243         "${CMAKE_CURRENT_SOURCE_DIR}/core/include;${CMAKE_CURRENT_SOURCE_DIR}/measurements/include"
0244                 "${CMAKE_CURRENT_SOURCE_DIR}/measurements/src/measurementsLinkDef.h"
0245                 "${CMAKE_CURRENT_BINARY_DIR}/measurementsRootDict.cc"
0246 )
0247 SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/measurementsRootDict.cc" "${library_sources}")
0248 
0249 SET(TRACKREPS_DICTIONARY_SOURCES
0250                 ${CMAKE_CURRENT_SOURCE_DIR}/trackReps/include/RKTrackRep.h
0251                 ${CMAKE_CURRENT_SOURCE_DIR}/trackReps/include/MplTrackRep.h
0252 )
0253 ROOT_GENERATE_DICTIONARY(
0254                 "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0255                 "${TRACKREPS_DICTIONARY_SOURCES}"
0256                 "${CMAKE_CURRENT_SOURCE_DIR}/core/include;${CMAKE_CURRENT_SOURCE_DIR}/trackReps/include"
0257                 "${CMAKE_CURRENT_SOURCE_DIR}/trackReps/src/trackRepsLinkDef.h"
0258                 "${CMAKE_CURRENT_BINARY_DIR}/trackRepsRootDict.cc"
0259 )
0260 SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/trackRepsRootDict.cc" "${library_sources}")
0261 
0262 SET(UTILITIES_DICTIONARY_SOURCES
0263                 ${CMAKE_CURRENT_SOURCE_DIR}/utilities/include/HelixTrackModel.h
0264                 ${CMAKE_CURRENT_SOURCE_DIR}/utilities/include/MeasurementCreator.h
0265                 ${CMAKE_CURRENT_SOURCE_DIR}/utilities/include/mySpacepointDetectorHit.h
0266                 ${CMAKE_CURRENT_SOURCE_DIR}/utilities/include/mySpacepointMeasurement.h
0267 )
0268 ROOT_GENERATE_DICTIONARY(
0269                 "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0270                 "${UTILITIES_DICTIONARY_SOURCES}"
0271                 "${CMAKE_CURRENT_SOURCE_DIR}/core/include;${CMAKE_CURRENT_SOURCE_DIR}/utilities/include;${CMAKE_CURRENT_SOURCE_DIR}/measurements/include"
0272                 "${CMAKE_CURRENT_SOURCE_DIR}/utilities/src/utilitiesLinkDef.h"
0273                 "${CMAKE_CURRENT_BINARY_DIR}/utilitiesRootDict.cc"
0274 )
0275 SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/utilitiesRootDict.cc" "${library_sources}")
0276 
0277 if(DEFINED RAVE)
0278         SET(GFRAVE_DICTIONARY_SOURCES
0279                         ${CMAKE_CURRENT_SOURCE_DIR}/GFRave/include/GFRaveTrackParameters.h
0280                         ${CMAKE_CURRENT_SOURCE_DIR}/GFRave/include/GFRaveVertex.h
0281         )
0282         ROOT_GENERATE_DICTIONARY(
0283                         "${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}"
0284                         "${GFRAVE_DICTIONARY_SOURCES}"
0285                         "${CMAKE_CURRENT_SOURCE_DIR}/core/include;${CMAKE_CURRENT_SOURCE_DIR}/GFRave/include"
0286                         "${CMAKE_CURRENT_SOURCE_DIR}/GFRave/src/GFRaveLinkDef.h"
0287                         "${CMAKE_CURRENT_BINARY_DIR}/GFRaveRootDict.cc"
0288         )
0289         SET(library_sources "${CMAKE_CURRENT_BINARY_DIR}/GFRaveRootDict.cc" "${library_sources}")
0290 endif()
0291 
0292 
0293 # install
0294 ADD_SHARED_LIBRARY( ${PROJECT_NAME} ${library_sources})
0295 INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBRARY_OUTPUT_DIRECTORY})
0296 
0297 # link ROOT libraries
0298 if(DEFINED RAVE)
0299         TARGET_LINK_LIBRARIES(
0300                         ${PROJECT_NAME}
0301                         ${ROOT_LIBS}
0302                         ${Rave_LIB}
0303                         ${Rave_LDFLAGS_STR}
0304         )
0305 else()
0306         TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${ROOT_LIBS})
0307 endif()
0308 
0309 INCLUDE(CTest)
0310 
0311 ADD_CUSTOM_TARGET( tests )
0312 
0313 ADD_GENFIT_TEST( fitterTests               test/fitterTests/main.cc)
0314 ADD_GENFIT_TEST( minimalFittingExample     test/minimalFittingExample/main.cc)
0315 ADD_GENFIT_TEST( minimalFittingExample2    test/minimalFittingExample/main2.cc)
0316 ADD_GENFIT_TEST( measurementFactoryExample test/measurementFactoryExample/main.cc)
0317 ADD_GENFIT_TEST( streamerTest              test/streamerTest/main.cc)
0318 ADD_GENFIT_TEST( unitTests                 test/unitTests/main.cc)
0319 IF(DEFINED RAVE)
0320   ADD_GENFIT_TEST( vertexingTest           test/vertexingTest/main.cc)
0321   ADD_GENFIT_TEST( vertexingTestRead       test/vertexingTest/read.cc)
0322 ENDIF()
0323 
0324 IF(BUILD_TESTING)
0325 
0326         # Run these automatically via ctest since they do not need a GUI. Create the
0327         # necessary geometry first via a dummy test
0328         ADD_TEST(NAME createGeometry COMMAND root -l -b -q ${CMAKE_CURRENT_LIST_DIR}/test/makeGeom.C)
0329 
0330         ADD_TEST(NAME streamerTest COMMAND streamerTest)
0331         SET_PROPERTY(TEST streamerTest PROPERTY DEPENDS createGeometry)
0332 
0333         ADD_TEST(NAME unitTests COMMAND unitTests)
0334         SET_PROPERTY(TEST unitTests PROPERTY DEPENDS createGeometry)
0335 
0336     ENABLE_TESTING()
0337 
0338 
0339         FIND_PACKAGE(GTest REQUIRED)
0340         ADD_EXECUTABLE(gtests
0341                         gtest/TestConstField.cpp
0342                         gtest/TestMaterialEffects.cpp
0343                         gtest/TestRKTrackRep.cpp
0344                         gtest/TestMaterial.cpp
0345                         )
0346         TARGET_LINK_LIBRARIES(gtests ${GTEST_BOTH_LIBRARIES} ${ROOT_LIBS} ${PROJECT_NAME})  # gtest gtest_main
0347         MESSAGE(STATUS  ${GTEST_INCLUDE_DIRS})
0348         TARGET_INCLUDE_DIRECTORIES(gtests PUBLIC ${GTEST_INCLUDE_DIRS})
0349         GTEST_DISCOVER_TESTS(gtests)
0350         INSTALL(TARGETS gtests DESTINATION bin)
0351 ENDIF()
0352 
0353 # generate and install following configuration files
0354 #GENERATE_PACKAGE_CONFIGURATION_FILES( genfitConfig.cmake genfitConfigVersion.cmake )