-
Julian Garcia Pardinas authoredJulian Garcia Pardinas authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
CMakeLists.txt 4.27 KiB
# set minimum required cmake version
cmake_minimum_required (VERSION 3.2 FATAL_ERROR)
project (UserProject LANGUAGES CXX)
set(Hammer_CompileOptions ;-ansi;-D_FILE_OFFSET_BITS=64;-Wno-unknown-pragmas)
set(Hammer_PIC TRUE)
set(Hammer_Include $ENV{HAMMERSYS}/include)
set(Hammer_Libs )
SET(CMAKE_CXX_STANDARD 17)
set(Hammer_LIBTYPE "STATIC")
set(Boost_NO_BOOST_CMAKE ON)
if(OFF)
set(CMAKE_MODULE_PATH "$ENV{HAMMERSYS}/share/Hammer/examples/CMakeModules" ${CMAKE_MODULE_PATH})
find_package(Sanitizers)
endif()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DROCKSDB_USE_RTTI")
# don't use configuration-specific subdirectories in Xcode
if (CMAKE_GENERATOR STREQUAL "Xcode")
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/lib)
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/lib)
endif (CMAKE_GENERATOR STREQUAL "Xcode")
foreach(libname HammerCore Amplitudes FormFactors HammerTools HammerBase Rates)
message(STATUS "Adding Dependency: ${libname}")
if(Hammer_LIBTYPE STREQUAL "STATIC")
add_library(${libname} STATIC IMPORTED)
set_target_properties(${libname} PROPERTIES
IMPORTED_LOCATION "$ENV{HAMMERSYS}/lib64/Hammer/${CMAKE_STATIC_LIBRARY_PREFIX}${libname}${CMAKE_STATIC_LIBRARY_SUFFIX}"
INTERFACE_INCLUDE_DIRECTORIES "$ENV{HAMMERSYS}/include"
)
else()
add_library(${libname} SHARED IMPORTED)
set_target_properties(${libname} PROPERTIES
IMPORTED_LOCATION "$ENV{HAMMERSYS}/lib64/Hammer/${CMAKE_SHARED_LIBRARY_PREFIX}${libname}${CMAKE_SHARED_LIBRARY_SUFFIX}"
INTERFACE_INCLUDE_DIRECTORIES "$ENV{HAMMERSYS}/include"
)
endif()
endforeach()
add_library(ThirdParty::YamlCpp INTERFACE IMPORTED)
set_property(TARGET ThirdParty::YamlCpp PROPERTY INTERFACE_LINK_LIBRARIES $ENV{HAMMERSYS}/lib64/libyaml-cpp.so)
add_library(Boost::boost INTERFACE IMPORTED)
set_property(TARGET Boost::boost PROPERTY INTERFACE_INCLUDE_DIRECTORIES $ENV{BOOSTFOLDER}/include)
add_library(Boost::thread INTERFACE IMPORTED)
set_property(TARGET Boost::thread PROPERTY INTERFACE_LINK_LIBRARIES $ENV{BOOSTFOLDER}/lib/libboost_thread.so)
if(TRUE)
add_library(ThirdParty::ROOT INTERFACE IMPORTED)
set_property(TARGET ThirdParty::ROOT PROPERTY INTERFACE_INCLUDE_DIRECTORIES $ENV{ROOTSYS}/include)
set_property(TARGET ThirdParty::ROOT PROPERTY INTERFACE_LINK_LIBRARIES -L$ENV{ROOTSYS}/lib -lGui -lCore -lImt -lRIO -lNet -lHist -lGraf -lGraf3d -lROOTVecOps -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lROOTDataFrame -lMathCore -lThread -lMultiProc -lMinuit -pthread -lm -ldl -rdynamic -lFoam -lRooFit -lRooFitCore -lRooStats -lHistFactory -lTreePlayer -lMathMore -lXMLParser)
endif()
find_package(ROOT REQUIRED COMPONENTS ROOTDataFrame ROOTVecOps)
include(${ROOT_USE_FILE})
find_package(OpenMP)
if (OPENMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
ROOT_GENERATE_DICTIONARY(RooHammerModelDict
${PROJECT_SOURCE_DIR}/include/RooHammerModel.h
LINKDEF ${PROJECT_SOURCE_DIR}/include/LinkDef.h)
ROOT_GENERATE_DICTIONARY(RooUnnormalizedHammerModelDict
${PROJECT_SOURCE_DIR}/include/RooUnnormalizedHammerModel.h
LINKDEF ${PROJECT_SOURCE_DIR}/include/LinkDef.h)
add_library(RooHammerModel SHARED ${PROJECT_SOURCE_DIR}/src/RooHammerModel.cxx RooHammerModelDict.cxx
${PROJECT_SOURCE_DIR}/src/RooUnnormalizedHammerModel.cxx RooUnnormalizedHammerModelDict.cxx)
set(LIBS HammerCore Amplitudes FormFactors HammerTools HammerBase Rates ThirdParty::ROOT ThirdParty::YamlCpp Boost::thread)
target_link_libraries(RooHammerModel PUBLIC ${LIBS})
target_link_libraries(RooHammerModel PUBLIC ${ROOT_LIBRARIES} pthread)
target_link_libraries(RooHammerModel PRIVATE ${OpenMP_CXX_FLAGS})
add_executable(Fitter ${PROJECT_SOURCE_DIR}/src/Fitter.cpp)
target_link_libraries(Fitter ThirdParty::ROOT RooHammerModel pthread)
target_include_directories(RooHammerModel PUBLIC ${PROJECT_SOURCE_DIR}/include)