IAP GITLAB

CMakeLists.txt 6.23 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
OPTION (__QGSJET01__ "Build with model" ON)
9 10 11
OPTION (__GHEISHA__  "Build with model" OFF)
OPTION (__PYTHIA__   "Build with model" OFF)
OPTION (__HIJING__   "Build with model" OFF)
12
OPTION (__SIBYLL__   "Build with model" ON)
13
OPTION (__PHOJET__   "Build with model" OFF)
14
OPTION (__PYTHIA__   "Build with model" OFF)
15 16 17
OPTION (__QGSJETII__ "Build with model" OFF)
OPTION (__QGSJETII04__ "Build with model" ON)
# TODO want to disable epos, too <-- from TP : not completely possible without rewritting a lot (it is done in CONEX)
18
# TODO better support for model versions
19 20 21 22
######################################ONLY EDIT THIS######################################

# The version number
SET (CRMC_VERSION_MAJOR 0)
23
SET (CRMC_VERSION_MINOR 3)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

# hotfix for lxbatch not sure why he selects wrong compiler
#SET (CMAKE_Fortran_COMPILER gfortran)

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

## 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)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)

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")
49 50 51

## find packages
SET (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" CACHE PATH "Module Path" FORCE)
52
# TODO ROOT NOT REQUIRED
53
FIND_PACKAGE (Root REQUIRED)
54
# SET(Boost_DEBUG TRUE)
55
FIND_PACKAGE (Boost 1.35 REQUIRED COMPONENTS filesystem iostreams system program_options)
56
# TODO HepMC NOT REQUIRED
57 58 59 60
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
61 62
  "${PROJECT_SOURCE_DIR}/src/CRMCconfig.h.in"
  "${PROJECT_BINARY_DIR}/src/CRMCconfig.h"
63 64 65 66 67 68
  )

#add epos (must!)
INCLUDE_DIRECTORIES ("${PROJECT_SOURCE_DIR}/src")
ADD_SUBDIRECTORY (src/epos)
SET (EXTRA_MODELS ${EXTRA_MODELS} Epos)
69
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __EPOS__")
70 71 72 73

IF (__QGSJET01__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/qgsjet")
SET (EXTRA_MODELS ${EXTRA_MODELS} Qgsjet01)
74
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __QGSJET01__")
75 76 77 78 79
ENDIF (__QGSJET01__)

IF (__GHEISHA__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/gheisha")
SET (EXTRA_MODELS ${EXTRA_MODELS} Gheisha)
80
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __GHEISHA__")
81 82 83 84 85
ENDIF (__GHEISHA__)

IF (__PYTHIA__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/pythia")
SET (EXTRA_MODELS ${EXTRA_MODELS} Pythia)
86
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __PYTHIA__")
87 88 89 90 91
ENDIF (__PYTHIA__)

IF (__HIJING__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/hijing")
SET (EXTRA_MODELS ${EXTRA_MODELS} Hijing)
92
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __HIJING__")
93 94 95 96 97
ENDIF (__HIJING__)

IF (__SIBYLL__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/sibyll")
SET (EXTRA_MODELS ${EXTRA_MODELS} Sibyll)
98
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __SIBYLL__")
99 100
ENDIF (__SIBYLL__)

Colin Baus's avatar
Colin Baus committed
101
IF (__PHOJET__)
102 103 104 105 106 107 108
IF (__PYTHIA__)
ELSE (__PYTHIA__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/pythia")
SET (EXTRA_MODELS ${EXTRA_MODELS} Pythia)
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __PYTHIA__")
ENDIF (__PYTHIA__)

Colin Baus's avatar
Colin Baus committed
109 110 111 112 113
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/phojet")
SET (EXTRA_MODELS ${EXTRA_MODELS} Phojet)
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __PHOJET__")
ENDIF (__PHOJET__)

114 115
#put definition outside "if" because it is always is crmc.param file
SET (QGSJETII_TABS "03")
116 117 118
IF (__QGSJETII__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/qgsjetII")
SET (EXTRA_MODELS ${EXTRA_MODELS} QgsjetII)
119
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __QGSJETII__")
120 121
ENDIF (__QGSJETII__)

122 123 124 125 126 127 128
IF (__QGSJETII04__)
ADD_SUBDIRECTORY ("${PROJECT_SOURCE_DIR}/src/qgsjetII-04")
SET (EXTRA_MODELS ${EXTRA_MODELS} QgsjetII04)
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D __QGSJETII__")
SET (QGSJETII_TABS "04")
ENDIF (__QGSJETII04__)

129

130 131 132 133 134
# add the executable
INCLUDE_DIRECTORIES ("${PROJECT_BINARY_DIR}/src") #cmake config file
INCLUDE_DIRECTORIES ("${HepMC_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES ("${Boost_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES ("${ROOT_INCLUDE_DIR}")
135
ADD_EXECUTABLE(crmc src/crmc.cc src/CRMC.cc src/CRMCinterface.cc src/CRMCoptions.cc src/OutputPolicyROOT.cc src/OutputPolicyHepMC.cc src/OutputPolicyLHE.cc src/CRMCtrapfpe.c src/crmc-aaa.f src/models.F)
136

137
# linking of modules
138 139 140 141
TARGET_LINK_LIBRARIES (crmc ${HepMC_LIBRARIES})
TARGET_LINK_LIBRARIES (crmc ${Boost_LIBRARIES})
TARGET_LINK_LIBRARIES (crmc ${ROOT_LIBRARIES})
TARGET_LINK_LIBRARIES (crmc ${EXTRA_MODELS})
142 143 144 145

## installation
# configure the parameter file
install(CODE "SET (CRMCROOT \"${PROJECT_BINARY_DIR}\")")
146
install(CODE "SET (QIITAB \"${QGSJETII_TABS}\")")
147 148 149 150 151 152
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)
             ENDIF(NOT EXISTS ${PROJECT_BINARY_DIR}/crmc.param)                
             ")
153 154 155 156 157 158 159

# install tabs
if(CMAKE_HOST_UNIX)
    install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/tabs ${PROJECT_BINARY_DIR}/tabs)")
endif(CMAKE_HOST_UNIX)

# install executable
Ralf Ulrich's avatar
Ralf Ulrich committed
160
INSTALL (PROGRAMS ${PROJECT_BINARY_DIR}/crmc DESTINATION bin)
161 162 163

# enable dashboard scripting
include (CTest)
Tanguy Pierog's avatar
Tanguy Pierog committed
164 165 166
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")
167
ADD_TEST (crmcRemoveFile rm "ctest.hepmc")
168