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 )