123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- # CMakeLists.txt for FAS package. It creates a library with dictionary and a main program
- cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
- project(PicoDst)
- # You need to tell CMake where to find the ROOT installation. This can be done
- # in a number of ways:
- # - ROOT built with classic configure/make use the provided
- # $ROOTSYS/etc/cmake/FindROOT.cmake
- # - ROOT built with CMake. Add in CMAKE_PREFIX_PATH the installation prefix
- # for ROOT
- find_package(Git)
- list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
- #---Locate the ROOT package and defines a number of variables (e.g. ROOT_INCLUDE_DIRS)
- find_package(ROOT REQUIRED COMPONENTS MathCore RIO Hist Tree Net)
- set(FAIRSOFT_PATH $ENV{FAIRROOTPATH}/share/fairbase/cmake/modules)
- list(APPEND CMAKE_MODULE_PATH ${FAIRSOFT_PATH})
- find_package(FairRoot QUIET COMPONENTS Base)
- if(NOT FAIRROOT_FOUND)
- message(STATUS "FairRoot package NOT found.")
- endif()
- #---Define useful ROOT functions and macros (e.g. ROOT_GENERATE_DICTIONARY)
- include(${ROOT_USE_FILE})
- set (CMAKE_CXX_STANDARD 11)
- add_definitions(${ROOT_CXX_FLAGS})
- set(CMAKE_BUILD_TYPE Debug)
- #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -Wall -pthread")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall")
- set(PICO_DST_INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_SOURCE_DIR}
- "${CMAKE_CURRENT_SOURCE_DIR}/converter"
- "${CMAKE_CURRENT_SOURCE_DIR}/bin"
- "${CMAKE_CURRENT_SOURCE_DIR}/include"
- "${CMAKE_CURRENT_SOURCE_DIR}/src"
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${ROOT_INLCUDE_DIRS}
- )
- include_directories(${PICO_DST_INCLUDE_DIRECTORIES})
- set(PICO_DST_INCLUDE_LIBRARIES
- ${ROOT_LIBRARIES}
- )
- set(PicoDst_h_files
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstBaseEvent.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstMCEvent.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstRecoEvent.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstBaseTrack.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstMCTrack.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstRecoTrack.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstFHCal.h"
- )
- set(PicoDst_cxx_files
- "${CMAKE_CURRENT_SOURCE_DIR}/src/PicoDstBaseEvent.cxx"
- "${CMAKE_CURRENT_SOURCE_DIR}/src/PicoDstMCEvent.cxx"
- "${CMAKE_CURRENT_SOURCE_DIR}/src/PicoDstRecoEvent.cxx"
- "${CMAKE_CURRENT_SOURCE_DIR}/src/PicoDstBaseTrack.cxx"
- "${CMAKE_CURRENT_SOURCE_DIR}/src/PicoDstMCTrack.cxx"
- "${CMAKE_CURRENT_SOURCE_DIR}/src/PicoDstRecoTrack.cxx"
- "${CMAKE_CURRENT_SOURCE_DIR}/src/PicoDstFHCal.cxx"
- )
- set(PicoDst_LinkDef
- "${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDst.LinkDef.h"
- )
- #---Generate dictionary
- ROOT_GENERATE_DICTIONARY(G__PicoDst
- ${PicoDst_h_files}
- LINKDEF ${PicoDst_LinkDef}
- )
- #---Compile library
- add_library(PicoDst SHARED ${PicoDst_cxx_files} G__PicoDst.cxx)
- target_link_libraries(PicoDst ${PICO_DST_INCLUDE_LIBRARIES})
- set(ENV{PICO_DST_BIN} "${CMAKE_CURRENT_BINARY_DIR}")
- set(ENV{PICO_DST_SRC} "${CMAKE_CURRENT_SOURCE_DIR}/src")
- set(ENV{PICO_DST_INC} "${CMAKE_CURRENT_SOURCE_DIR}/include")
- set(PICO_DST_BIN "${CMAKE_CURRENT_BINARY_DIR}")
- set(PICO_DST_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src")
- set(PICO_DST_INC "${CMAKE_CURRENT_SOURCE_DIR}/include")
- message(STATUS "PICO_DST_BIN: " $ENV{PICO_DST_BIN})
- message(STATUS "PICO_DST_INC: " $ENV{PICO_DST_INC})
- message(STATUS "PICO_DST_SRC: " $ENV{PICO_DST_SRC})
- set(BASH $ENV{SHELL})
- file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "#!${BASH}\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "export PICO_DST_BIN=$ENV{PICO_DST_BIN}\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "export PICO_DST_SRC=$ENV{PICO_DST_SRC}\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "export PICO_DST_INC=$ENV{PICO_DST_INC}\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "export LD_LIBRARY_PATH=$PICO_DST_BIN:$LD_LIBRARY_PATH\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "export PATH=$PICO_DST_BIN:$PATH\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "export CPATH=$PICO_DST_INC:$CPATH\n")
- # Get the current working branch
- execute_process(
- COMMAND git rev-parse --abbrev-ref HEAD
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_BRANCH
- RESULT_VARIABLE GIT_BRANCH_ERROR_CODE
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if( GIT_BRANCH_ERROR_CODE )
- set(GIT_BRANCH 0)
- endif()
- # Get the latest abbreviated commit hash of the working branch
- execute_process(
- COMMAND git rev-parse --short HEAD
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_COMMIT_HASH
- RESULT_VARIABLE GIT_COMMIT_HASH_ERROR_CODE
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if( GIT_COMMIT_HASH_ERROR_CODE )
- set(GIT_COMMIT_HASH 0)
- endif()
- # Get the current version
- execute_process(
- COMMAND git describe --tags --match "*"
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_TAG_VERSION
- RESULT_VARIABLE GIT_TAG_VERSION_ERROR_CODE
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if( GIT_TAG_VERSION_ERROR_CODE )
- set(GIT_TAG_VERSION 0.0)
- endif()
- #---If one wants to input those definitions manually, use this commands:
- #add_definitions("-DGIT_COMMIT_HASH=${GIT_COMMIT_HASH}")
- #add_definitions("-DGIT_BRANCH=${GIT_BRANCH}")
- #add_definitions("-DGIT_TAG_VERSION=${GIT_TAG_VERSION}")
- #add_definitions("-DPICO_DST_BIN_DIR=${PICO_DST_BIN}")
- #add_definitions("-DPICO_DST_SRC_DIR=${PICO_DST_SRC}")
- #add_definitions("-DPICO_DST_INC_DIR=${PICO_DST_INC}")
- configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/include/PicoDstVersion.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/generated/PicoDstVersion.h
- )
- include_directories(${CMAKE_CURRENT_BINARY_DIR}/generated)
- set_target_properties (PicoDst
- PROPERTIES
- VERSION ${GIT_TAG_VERSION} SOVERSION ${GIT_BRANCH}-${GIT_COMMIT_HASH}
- PUBLIC_HEADER ${CMAKE_CURRENT_BINARY_DIR}/generated/PicoDstVersion.h
- )
- add_executable(PicoDst-config "${CMAKE_CURRENT_SOURCE_DIR}/bin/PicoDstConfig.cpp")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "\n")
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "alias PicoDst-config='${PICO_DST_BIN}/PicoDst-config'\n")
- if( FAIRROOT_FOUND )
- #---Compile executable
- if(DEFINED ENV{VMCWORKDIR})
- set(MPDROOTDIR $ENV{VMCWORKDIR})
- message(STATUS "MpdRoot environment is found: ${MPDROOTDIR}")
- set(PICODSTCONVERTER_INCLUDE_DIRECTORIES
- ${FAIRROOT_INCLUDE_DIR}
- ${MPDROOTDIR}/tpc
- ${MPDROOTDIR}/kalman
- ${MPDROOTDIR}/lhetrack
- ${MPDROOTDIR}/mcstack
- ${MPDROOTDIR}/generators
- ${MPDROOTDIR}/strawendcap
- ${MPDROOTDIR}/etof
- ${MPDROOTDIR}/tof
- ${MPDROOTDIR}/sft
- ${MPDROOTDIR}/sts
- ${MPDROOTDIR}/zdc
- ${MPDROOTDIR}/mpddst
- ${MPDROOTDIR}/mpdbase
- ${MPDROOTDIR}/mpdpid
- )
- #---Add Needed libraries
- find_library(BASE NAMES Base PATHS ${FAIRROOT_LIBRARY_DIR})
- find_library(MCSTACK NAMES MCStack PATHS $ENV{FAIRLIBDIR})
- if (MCSTACK)
- message(STATUS "MCStack library is found")
- add_definitions("-D_OLD_MCSTACK_")
- endif()
- if (NOT MCSTACK)
- find_library(MPDMCSTACK NAMES MpdMCStack PATHS $ENV{FAIRLIBDIR})
- message(STATUS "MpdMCStack library is found")
- add_definitions("-D_NEW_MCSTACK_")
- endif()
- find_library(PASSIVE NAMES Passive PATHS $ENV{FAIRLIBDIR})
- find_library(MPDFIELD NAMES MpdField PATHS $ENV{FAIRLIBDIR})
- find_library(MPDBASE NAMES MpdBase PATHS $ENV{FAIRLIBDIR})
- find_library(MPDDST NAMES MpdDst PATHS $ENV{FAIRLIBDIR})
- find_library(MPDGENERALGENERATOR NAMES MpdGeneralGenerator PATHS $ENV{FAIRLIBDIR})
- find_library(KALMAN NAMES Kalman PATHS $ENV{FAIRLIBDIR})
- find_library(CLUSTER NAMES Cluster PATHS $ENV{FAIRLIBDIR})
- find_library(TPC NAMES tpc PATHS $ENV{FAIRLIBDIR})
- find_library(TOF NAMES Tof PATHS $ENV{FAIRLIBDIR})
- find_library(ETOF NAMES Etof PATHS $ENV{FAIRLIBDIR})
- find_library(STRAWENDCAP NAMES Strawendcap PATHS $ENV{FAIRLIBDIR})
- find_library(ZDC NAMES Zdc PATHS $ENV{FAIRLIBDIR})
- find_library(FFD NAMES Ffd PATHS $ENV{FAIRLIBDIR})
- find_library(CPC NAMES Cpc PATHS $ENV{FAIRLIBDIR})
- find_library(STRAWECT NAMES StrawECT PATHS $ENV{FAIRLIBDIR})
- find_library(LHETrack NAMES LHETrack PATHS $ENV{FAIRLIBDIR})
- find_library(STS NAMES Sts PATHS $ENV{FAIRLIBDIR})
- find_library(MPDPID NAMES MpdPid PATHS $ENV{FAIRLIBDIR})
- if(MCSTACK)
- set(PICODSTCONVERTER_INCLUDE_LIBRARIES
- PicoDst ${BASE}
- ${MCSTACK} ${PASSIVE} ${KALMAN} ${CLUSTER} ${TPC} ${STS} ${ZDC} ${FFD}
- ${STRAWECT} ${STRAWENDCAP} ${LHETRACK} ${TOF}
- ${MPDFIELD} ${MPDBASE} ${MPDDST} ${MPDGENERALGENERATOR} ${MPDPID}
- )
- elseif(MPDMCSTACK)
- set(PICODSTCONVERTER_INCLUDE_LIBRARIES
- PicoDst ${BASE}
- ${MPDMCSTACK} ${PASSIVE} ${KALMAN} ${CLUSTER} ${TPC} ${STS} ${ZDC} ${FFD}
- ${STRAWECT} ${STRAWENDCAP} ${LHETRACK} ${TOF}
- ${MPDFIELD} ${MPDBASE} ${MPDDST} ${MPDGENERALGENERATOR} ${MPDPID}
- )
- elseif()
- message(FATAL_ERROR "No MCSTACK nor MPDMCSTACK libraries was found!")
- endif()
- add_executable(PicoDstConverter "${CMAKE_CURRENT_SOURCE_DIR}/converter/PicoDstConverter.cpp")
- target_include_directories(PicoDstConverter PUBLIC ${PICODSTCONVERTER_INCLUDE_DIRECTORIES})
- target_link_libraries(PicoDstConverter ${PICODSTCONVERTER_INCLUDE_LIBRARIES})
- file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/setPicoDst.sh "alias PicoDstConverter='${PICO_DST_BIN}/PicoDstConverter'\n")
- else(DEFINED ENV{VMCWORKDIR})
- message(WARNING "MpdRoot environment is NOT found. Skip corresponding step.")
- endif(DEFINED ENV{VMCWORKDIR})
- endif()
|