1 |
project(PamVMC) |
2 |
cmake_minimum_required(VERSION 2.6) |
3 |
|
4 |
###### Find external packages |
5 |
# ROOT |
6 |
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR} ${CMAKE_MODULE_PATH}) |
7 |
find_package(ROOT REQUIRED) |
8 |
include_directories(${ROOT_INCLUDE_DIR}) |
9 |
# GEANT4 |
10 |
find_package(Geant4 REQUIRED) |
11 |
include(${Geant4_USE_FILE}) |
12 |
|
13 |
# VGM |
14 |
find_package(VGM REQUIRED) |
15 |
|
16 |
# GEANT4VMC |
17 |
find_package(Geant4VMC REQUIRED) |
18 |
include_directories(${Geant4VMC_INCLUDE_DIRS}) |
19 |
|
20 |
# PAMELA software include directories |
21 |
include_directories($ENV{PAM_INC} $ENV{PAM_INC}/yoda) |
22 |
|
23 |
###### Adjust configuration |
24 |
# Some compiler options have been set by external packages e.g. Geant4. |
25 |
|
26 |
# Remove the -pedantic compiler option introduced by Geant4. |
27 |
# This is necessary in order to avoid to trigger an error when initializing static const float |
28 |
# variables (e.g. trk/include/PamVMCTrkDig.h:97) |
29 |
string(REPLACE " -pedantic" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
30 |
|
31 |
# Automatically recurse over linked linbraries. |
32 |
# For binutils >= 2.22 (http://unix.derkeiler.com/Mailing-Lists/FreeBSD/current/2011-12/msg00257.html) |
33 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--copy-dt-needed-entries" ) |
34 |
|
35 |
# Mute compile warnings (i.e. remove the -Wsomething compiler options). |
36 |
# Warnigns can be shown by adding -DPAMVMC_SHOW_WARNINGS=1 to the invocation of cmake. |
37 |
if(NOT "${PAMVMC_SHOW_WARNINGS}" STREQUAL "1") |
38 |
string(REPLACE " -Wall" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
39 |
string(REPLACE " -W " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
40 |
string(REPLACE " -Wno-non-virtual-dtor" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
41 |
string(REPLACE " -Wno-long-long" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
42 |
string(REPLACE " -Wwrite-strings" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
43 |
string(REPLACE " -Wpointer-arith" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
44 |
string(REPLACE " -Woverloaded-virtual" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
45 |
string(REPLACE " -Wno-variadic-macros" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
46 |
string(REPLACE " -Wshadow" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
47 |
endif() |
48 |
|
49 |
# Enable compilation of Fortran code |
50 |
enable_language(Fortran) |
51 |
|
52 |
##### PamVMC build |
53 |
# Include PamVMC directories |
54 |
include_directories(. |
55 |
include |
56 |
cal/include |
57 |
trk/include |
58 |
trk/include/f77 |
59 |
tof/include |
60 |
ac/include |
61 |
s4/include |
62 |
nd/include |
63 |
PamG4RunConfiguration |
64 |
PamG4RunConfiguration/include |
65 |
) |
66 |
|
67 |
# Build PamG4RunConfiguration library |
68 |
root_generate_dictionary(PamG4RunConfigurationDict |
69 |
PamG4RunConfiguration/include/PamG4RunConfiguration.h |
70 |
LINKDEF PamG4RunConfiguration/include/PamG4RunConfigurationLinkDef.h |
71 |
) |
72 |
add_library(PamG4RunConfiguration SHARED |
73 |
PamG4RunConfiguration/src/PamG4RegionConstruction.cxx |
74 |
PamG4RunConfiguration/src/PamG4RunConfiguration.cxx |
75 |
PamG4RunConfigurationDict.cxx |
76 |
) |
77 |
|
78 |
# Build PamVMC_fc library |
79 |
file(GLOB HDR RELATIVE ${CMAKE_SOURCE_DIR} "include/*.h") |
80 |
list(REMOVE_ITEM HDR "include/PamVMC_fcLinkDef.h") |
81 |
file(GLOB AC_HDR RELATIVE ${CMAKE_SOURCE_DIR} "ac/include/*.h") |
82 |
file(GLOB CAL_HDR RELATIVE ${CMAKE_SOURCE_DIR} "cal/include/*.h") |
83 |
file(GLOB ND_HDR RELATIVE ${CMAKE_SOURCE_DIR} "nd/include/*.h") |
84 |
file(GLOB S4_HDR RELATIVE ${CMAKE_SOURCE_DIR} "s4/include/*.h") |
85 |
file(GLOB TRK_HDR RELATIVE ${CMAKE_SOURCE_DIR} "trk/include/*.h") |
86 |
file(GLOB TOF_HDR RELATIVE ${CMAKE_SOURCE_DIR} "tof/include/*.h") |
87 |
|
88 |
root_generate_dictionary(PamVMC_fcDict |
89 |
${HDR} |
90 |
${AC_HDR} |
91 |
${CAL_HDR} |
92 |
${ND_HDR} |
93 |
${S4_HDR} |
94 |
${TRK_HDR} |
95 |
${TOF_HDR} |
96 |
LINKDEF include/PamVMC_fcLinkDef.h |
97 |
) |
98 |
|
99 |
file(GLOB SRC "src/*.cxx") |
100 |
file(GLOB AC_SRC "ac/src/*.cxx") |
101 |
file(GLOB CAL_SRC "cal/src/*.cxx") |
102 |
file(GLOB ND_SRC "nd/src/*.cxx") |
103 |
file(GLOB S4_SRC "s4/src/*.cxx") |
104 |
file(GLOB TRK_SRC "trk/src/*.cxx") |
105 |
file(GLOB TRK_FSRC "trk/src/f77/*.F") |
106 |
file(GLOB TOF_SRC "tof/src/*.cxx") |
107 |
|
108 |
set(PamVMC_fc_SOURCE |
109 |
${SRC} |
110 |
${AC_SRC} |
111 |
${CAL_SRC} |
112 |
${ND_SRC} |
113 |
${S4_SRC} |
114 |
${TRK_SRC} |
115 |
${TRK_FSRC} |
116 |
${TOF_SRC} |
117 |
PamVMC_fcDict.cxx |
118 |
) |
119 |
|
120 |
|
121 |
add_library(PamVMC_fc SHARED ${PamVMC_fc_SOURCE}) |
122 |
|
123 |
# Build PamVMC.exe |
124 |
link_directories($ENV{PAM_LIB}) |
125 |
add_executable(PamVMC.exe G4main/PamVMCmain.cxx) |
126 |
target_link_libraries(PamVMC.exe |
127 |
PamVMC_fc |
128 |
PamG4RunConfiguration |
129 |
${ROOT_LIBRARIES} |
130 |
XMLParser |
131 |
${Geant4VMC_LIBRARIES} |
132 |
yoda |
133 |
DarthVader |
134 |
gfortran |
135 |
) |