IAP GITLAB

CMakeLists.txt 6.35 KB
Newer Older
1 2 3
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
PROJECT (crmc)

4 5
######################################ONLY EDIT THIS######################################
SET (CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR})
6

7
# Enable/Disable models to be built
8 9 10 11 12 13
OPTION (__QGSJET01__   "Build with model" ON)
OPTION (__GHEISHA__    "Build with model" OFF)
OPTION (__PYTHIA__     "Build with model" OFF)
OPTION (__HIJING__     "Build with model" OFF)
OPTION (__SIBYLL__     "Build with model" ON)
OPTION (__PHOJET__     "Build with model" OFF)
Colin Baus's avatar
Colin Baus committed
14
OPTION (__DPMJET__     "Build with model" ON)
15
OPTION (__QGSJETII03__ "Build with model" ON)
Colin Baus's avatar
Colin Baus committed
16
OPTION (__QGSJETII04__ "Build with model" ON)
17 18
######################################ONLY EDIT THIS######################################

19
## The version number
20 21
SET (CRMC_VERSION_MAJOR 1)
SET (CRMC_VERSION_MINOR 0)
22

23
##Compiler options
24
# hotfix for lxbatch not sure why he selects wrong compiler
Colin Baus's avatar
Colin Baus committed
25
#SET (CMAKE_Fortran_COMPILER gfortran)
26 27 28 29

# comprehensible compiler languages (default c cxx)
ENABLE_LANGUAGE (Fortran)

30 31 32
#add some warning to the compiler flags
FOREACH(lang C CXX Fortran)
   IF(CMAKE_${lang}_COMPILER_ID STREQUAL GNU)
Colin Baus's avatar
Colin Baus committed
33
     SET (CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wunused")
34
     SET (CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -O -Wuninitialized")
Colin Baus's avatar
Colin Baus committed
35
     #SET (CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wall")
36 37 38
   ENDIF()
ENDFOREACH()

39 40 41 42 43 44
## RPATH (where to find library)
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH  FALSE)

# when building, don't use the install RPATH already
# (but later on when installing)
Colin Baus's avatar
Colin Baus committed
45
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
46 47 48 49 50 51 52 53 54 55 56

SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
  SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
ENDIF("${isSystemDir}" STREQUAL "-1")
57 58 59

## find packages
SET (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" CACHE PATH "Module Path" FORCE)
60
# TODO ROOT NOT REQUIRED
61
FIND_PACKAGE (Root REQUIRED)
62
# SET(Boost_DEBUG TRUE)
63
FIND_PACKAGE (Boost 1.35 REQUIRED COMPONENTS filesystem iostreams system program_options)
64
# TODO HepMC NOT REQUIRED
65 66 67 68
FIND_PACKAGE (HepMC REQUIRED COMPONENTS HepMC HepMCfio)

## configure a header file to pass some of the CMake settings to the source code
CONFIGURE_FILE (
Ralf Ulrich's avatar
Ralf Ulrich committed
69 70
  "${PROJECT_SOURCE_DIR}/src/CRMCconfig.h.in"
  "${PROJECT_BINARY_DIR}/src/CRMCconfig.h"
71 72 73 74 75
  )

#add epos (must!)
INCLUDE_DIRECTORIES ("${PROJECT_SOURCE_DIR}/src")
ADD_SUBDIRECTORY (src/epos)
76
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __EPOS__")
77

Ralf Ulrich's avatar
Ralf Ulrich committed
78 79 80 81 82 83 84 85 86 87 88
SET (TABS "")

# data tables for epos
LIST(APPEND TABS epos.inics)
LIST(APPEND TABS epos.inics.lhc)
LIST(APPEND TABS epos.inidi)
LIST(APPEND TABS epos.iniev)
LIST(APPEND TABS epos.inirj)
LIST(APPEND TABS epos.inirj.lhc)
LIST(APPEND TABS epos.initl)

89 90
IF (__QGSJET01__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/qgsjet")
Ralf Ulrich's avatar
Ralf Ulrich committed
91 92
LIST(APPEND TABS qgsjet.dat)
LIST(APPEND TABS qgsjet.ncs)
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
ENDIF (__QGSJET01__)

IF (__GHEISHA__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/gheisha")
ENDIF (__GHEISHA__)

IF (__PYTHIA__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/pythia")
ENDIF (__PYTHIA__)

IF (__HIJING__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/hijing")
ENDIF (__HIJING__)

IF (__SIBYLL__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/sibyll")
ENDIF (__SIBYLL__)

Colin Baus's avatar
Colin Baus committed
111 112 113 114
IF (__PHOJET__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/phojet")
ENDIF (__PHOJET__)

Colin Baus's avatar
Colin Baus committed
115 116 117 118 119
IF (__DPMJET__)
LIST(APPEND TABS dpmjet.dat)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/dpmjet/3.0-6")
ENDIF (__DPMJET__)

120 121
#put definition outside "if" because it is always is crmc.param file
SET (QGSJETII_TABS "03")
122
IF (__QGSJETII03__)
123
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/qgsjetII")
Ralf Ulrich's avatar
Ralf Ulrich committed
124 125
LIST(APPEND TABS qgsdat-II-03.lzma)
LIST(APPEND TABS sectnu-II-03)
126
ENDIF (__QGSJETII03__)
127

128 129 130
IF (__QGSJETII04__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/qgsjetII-04")
SET (QGSJETII_TABS "04")
Ralf Ulrich's avatar
Ralf Ulrich committed
131 132
LIST(APPEND TABS qgsdat-II-04.lzma)
LIST(APPEND TABS sectnu-II-04)
133 134
ENDIF (__QGSJETII04__)

Colin Baus's avatar
Colin Baus committed
135 136 137 138 139 140 141 142 143 144 145
#Dummy library which includes epos.inc file so HEPMC will find the symbol for hepevt_
#with fPIC linker option it should always point to right symbol also for other libs
add_library(HepEvtDummy SHARED src/dummy.f)
INSTALL (TARGETS HepEvtDummy
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib/static
        )

#include directories for headers
INCLUDE_DIRECTORIES ("${PROJECT_BINARY_DIR}/src")
146 147 148
INCLUDE_DIRECTORIES ("${HepMC_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES ("${Boost_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES ("${ROOT_INCLUDE_DIR}")
Colin Baus's avatar
Colin Baus committed
149
# the executable
Ralf Ulrich's avatar
Ralf Ulrich committed
150
ADD_EXECUTABLE(crmc src/crmcMain.cc src/CRMC.cc src/CRMCinterface.cc src/CRMCoptions.cc src/OutputPolicyROOT.cc src/OutputPolicyHepMC.cc src/OutputPolicyLHE.cc src/CRMCtrapfpe.c)
151

152
# linking of modules
153 154 155
TARGET_LINK_LIBRARIES (crmc ${HepMC_LIBRARIES})
TARGET_LINK_LIBRARIES (crmc ${Boost_LIBRARIES})
TARGET_LINK_LIBRARIES (crmc ${ROOT_LIBRARIES})
Colin Baus's avatar
Colin Baus committed
156
TARGET_LINK_LIBRARIES (crmc HepEvtDummy)
157 158 159 160

## installation
# configure the parameter file
install(CODE "SET (CRMCROOT \"${PROJECT_BINARY_DIR}\")")
161
install(CODE "SET (QIITAB \"${QGSJETII_TABS}\")")
162 163 164 165
install(CODE "
             IF(NOT EXISTS ${PROJECT_BINARY_DIR}/crmc.param)
             MESSAGE (STATUS \"(Re)creating crmc.param\")
             CONFIGURE_FILE (\"${PROJECT_SOURCE_DIR}/src/crmc.param.in\" \"${PROJECT_BINARY_DIR}/crmc.param\" @ONLY IMMEDIATE)
Colin Baus's avatar
Colin Baus committed
166
             ENDIF(NOT EXISTS ${PROJECT_BINARY_DIR}/crmc.param)
167
             ")
168 169

# install tabs
Ralf Ulrich's avatar
Ralf Ulrich committed
170 171 172 173 174 175
SET (TABSDIR "")
foreach(theTab ${TABS})
  list(APPEND TABSDIR ${PROJECT_SOURCE_DIR}/tabs/${theTab} )
endforeach()
INSTALL (FILES ${TABSDIR} DESTINATION ${PROJECT_BINARY_DIR}/tabs)
#    install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/tabs ${PROJECT_BINARY_DIR}/tabs)")
176 177

# install executable
Colin Baus's avatar
Colin Baus committed
178 179
INSTALL (PROGRAMS ${PROJECT_BINARY_DIR}/crmc
         DESTINATION bin)
180 181 182

# enable dashboard scripting
include (CTest)
Tanguy Pierog's avatar
Tanguy Pierog committed
183 184 185
ADD_TEST (crmcRuns bin/crmc -o hepmc -f ctest.hepmc -T 1)
#ADD_TEST (crmcCheckFile md5sum "ctest.hepmc")
#SET_TESTS_PROPERTIES (crmcCheckFile PROPERTIES PASS_REGULAR_EXPRESSION ".*777cb7e60b7c8104393a4fb22b137538  ctest.hepmc")
186
ADD_TEST (crmcRemoveFile rm "ctest.hepmc")
187