CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. # CMakeLists.txt for FAS package. It creates a library with dictionary and a main program
  2. cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
  3. project(ModelAtConverter)
  4. # You need to tell CMake where to find the ROOT installation. This can be done
  5. # in a number of ways:
  6. # - ROOT built with classic configure/make use the provided
  7. # $ROOTSYS/etc/cmake/FindROOT.cmake
  8. # - ROOT built with CMake. Add in CMAKE_PREFIX_PATH the installation prefix
  9. # for ROOT
  10. find_package(Git)
  11. list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
  12. #---Locate the ROOT package and defines a number of variables (e.g. ROOT_INCLUDE_DIRS)
  13. find_package(ROOT REQUIRED COMPONENTS MathCore RIO Hist Tree Net EG)
  14. #---Define useful ROOT functions and macros (e.g. ROOT_GENERATE_DICTIONARY)
  15. include(${ROOT_USE_FILE})
  16. add_definitions(${ROOT_CXX_FLAGS})
  17. #---Locate MCINI package
  18. find_library(MCINI NAMES McIniData PATHS $ENV{MCINI}/build)
  19. IF(MCINI)
  20. message(STATUS "mcini is found: ${MCINI}")
  21. add_definitions("-D_MCINI_")
  22. endif()
  23. IF(NOT MCINI)
  24. message(STATUS "mcini is not found. Building without it.")
  25. endif()
  26. #---Locate PHQMDEvent library
  27. find_library(PHQMD NAMES PHQMDEvent PATHS $ENV{PHQMD_PATH}/phqmd2root/lib/)
  28. if(PHQMD)
  29. message(STATUS "libPHQMDEvent is found: ${PHQMD}")
  30. add_definitions("-D_PHQMD_")
  31. add_definitions("-D_HSD_ROOT_")
  32. endif()
  33. if(NOT PHQMD)
  34. message(STATUS "libPHQMDEvent is not found. Building without it.")
  35. endif()
  36. #---Locate AnalysisTree library
  37. find_library(AnalysisTree NAMES AnalysisTreeBase PATHS $ENV{ANALYSISTREE_LIB})
  38. if (AnalysisTree)
  39. message(STATUS "AnalysisTree is found: ${AnalysisTree}")
  40. endif()
  41. if (NOT AnalysisTree)
  42. message(FATAL_ERROR "Error: AnalysisTree library wasn't found!")
  43. endif()
  44. set(CMAKE_BUILD_TYPE Debug)
  45. #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -Wall -pthread")
  46. # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wall -ffast-math")
  47. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wall")
  48. set(MATC_INCLUDE_DIRECTORIES
  49. ${CMAKE_CURRENT_SOURCE_DIR}
  50. # ${CMAKE_CURRENT_SOURCE_DIR}/bin
  51. ${CMAKE_CURRENT_SOURCE_DIR}/format
  52. ${CMAKE_CURRENT_SOURCE_DIR}/readers
  53. ${CMAKE_CURRENT_SOURCE_DIR}/writers
  54. ${CMAKE_CURRENT_SOURCE_DIR}/utility
  55. ${ROOT_INLCUDE_DIRS}
  56. $ENV{ANALYSISTREE_INC}
  57. )
  58. set(MATC_INCLUDE_LIBRARIES
  59. ${ROOT_LIBRARIES} ${AnalysisTree}
  60. )
  61. set(MATC_LIBRARY_h_files
  62. ${CMAKE_CURRENT_SOURCE_DIR}/format/qaParticle.h
  63. ${CMAKE_CURRENT_SOURCE_DIR}/format/qaEvent.h
  64. ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_smash_root.h
  65. ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_mcpico.h
  66. ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_manager.h
  67. ${CMAKE_CURRENT_SOURCE_DIR}/writers/qaWriter_manager.h
  68. ${CMAKE_CURRENT_SOURCE_DIR}/writers/qaWriter_analysistree2.h
  69. ${CMAKE_CURRENT_SOURCE_DIR}/utility/Utility.h
  70. )
  71. set(MATC_LIBRARY_cxx_files
  72. ${CMAKE_CURRENT_SOURCE_DIR}/format/qaParticle.cxx
  73. ${CMAKE_CURRENT_SOURCE_DIR}/format/qaEvent.cxx
  74. ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_smash_root.cxx
  75. ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_mcpico.cxx
  76. ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_manager.cxx
  77. ${CMAKE_CURRENT_SOURCE_DIR}/writers/qaWriter_manager.cxx
  78. ${CMAKE_CURRENT_SOURCE_DIR}/writers/qaWriter_analysistree2.cxx
  79. ${CMAKE_CURRENT_SOURCE_DIR}/utility/Utility.cxx
  80. )
  81. if(MCINI)
  82. list(APPEND MATC_INCLUDE_DIRECTORIES $ENV{MCINI}/include)
  83. list(APPEND MATC_INCLUDE_LIBRARIES ${MCINI})
  84. list(APPEND MATC_LIBRARY_h_files ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_mcini.h)
  85. list(APPEND MATC_LIBRARY_cxx_files ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_mcini.cxx)
  86. endif()
  87. if(PHQMD)
  88. list(APPEND MATC_INCLUDE_DIRECTORIES $ENV{PHQMD_PATH})
  89. list(APPEND MATC_INCLUDE_LIBRARIES ${PHQMD})
  90. list(APPEND MATC_LIBRARY_h_files ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_phqmd.h)
  91. list(APPEND MATC_LIBRARY_cxx_files ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_phqmd.cxx)
  92. list(APPEND MATC_LIBRARY_h_files ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_hsd_root.h)
  93. list(APPEND MATC_LIBRARY_cxx_files ${CMAKE_CURRENT_SOURCE_DIR}/readers/qaReader_hsd_root.cxx)
  94. endif()
  95. include_directories(${MATC_INCLUDE_DIRECTORIES})
  96. set(MATC_LinkDef
  97. ${CMAKE_CURRENT_SOURCE_DIR}/matc.LinkDef.h
  98. )
  99. #---Generate dictionary
  100. ROOT_GENERATE_DICTIONARY(G__matc
  101. ${MATC_LIBRARY_h_files}
  102. LINKDEF ${MATC_LinkDef}
  103. )
  104. #---Compile library
  105. add_library(matc SHARED ${MATC_LIBRARY_cxx_files} G__matc.cxx)
  106. target_link_libraries(matc ${MATC_INCLUDE_LIBRARIES})
  107. # Get the current working branch
  108. execute_process(
  109. COMMAND git rev-parse --abbrev-ref HEAD
  110. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  111. OUTPUT_VARIABLE GIT_BRANCH
  112. RESULT_VARIABLE GIT_BRANCH_ERROR_CODE
  113. OUTPUT_STRIP_TRAILING_WHITESPACE
  114. )
  115. if( GIT_BRANCH_ERROR_CODE )
  116. set(GIT_BRANCH 0)
  117. endif()
  118. # Get the latest abbreviated commit hash of the working branch
  119. execute_process(
  120. COMMAND git rev-parse --short HEAD
  121. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  122. OUTPUT_VARIABLE GIT_COMMIT_HASH
  123. RESULT_VARIABLE GIT_COMMIT_HASH_ERROR_CODE
  124. OUTPUT_STRIP_TRAILING_WHITESPACE
  125. )
  126. if( GIT_COMMIT_HASH_ERROR_CODE )
  127. set(GIT_COMMIT_HASH 0)
  128. endif()
  129. # Get the current version
  130. execute_process(
  131. COMMAND git describe --tags --match "*"
  132. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  133. OUTPUT_VARIABLE GIT_TAG_VERSION
  134. RESULT_VARIABLE GIT_TAG_VERSION_ERROR_CODE
  135. OUTPUT_STRIP_TRAILING_WHITESPACE
  136. )
  137. if( GIT_TAG_VERSION_ERROR_CODE )
  138. set(GIT_TAG_VERSION 0.0)
  139. endif()
  140. set_target_properties (matc
  141. PROPERTIES
  142. VERSION ${GIT_TAG_VERSION} SOVERSION ${GIT_BRANCH}-${GIT_COMMIT_HASH}
  143. )
  144. #---Compile main executable
  145. # add_executable(qaProcess "${CMAKE_CURRENT_SOURCE_DIR}/bin/main.cpp")
  146. # target_link_libraries(qaProcess matc)