/[PAMELA software]/PamVMC_update/CMakeLists.txt
ViewVC logotype

Contents of /PamVMC_update/CMakeLists.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations) (download)
Thu Mar 26 11:45:07 2015 UTC (9 years, 8 months ago) by pam-fi
Branch: MAIN
Changes since 1.2: +21 -3 lines
File MIME type: text/plain
CMake: add build and install of sp_gen and libPrimaryInfo.so.

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

  ViewVC Help
Powered by ViewVC 1.1.23