4b7f05c7e9debbd77b4990c4b4e6cd9c9772142a
[u/mrichter/AliRoot.git] / STEER / STEER / CMakeLists.txt
1 # **************************************************************************
2 # * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
3 # *                                                                        *
4 # * Author: The ALICE Off-line Project.                                    *
5 # * Contributors are mentioned in the code where appropriate.              *
6 # *                                                                        *
7 # * Permission to use, copy, modify and distribute this software and its   *
8 # * documentation strictly for non-commercial purposes is hereby granted   *
9 # * without fee, provided that the above copyright notice appears in all   *
10 # * copies and that both the copyright notice and this permission notice   *
11 # * appear in the supporting documentation. The authors make no claims     *
12 # * about the suitability of this software for any purpose. It is          *
13 # * provided "as is" without express or implied warranty.                  *
14 # **************************************************************************
15
16 # Module
17 set(MODULE STEER)
18
19 # Module include folders
20 include_directories(${AliRoot_SOURCE_DIR}/STEER/${MODULE})
21
22 # Additional include directories - alphabetical order except ROOT
23 include_directories(${ROOT_INCLUDE_DIRS}
24                     ${AliRoot_SOURCE_DIR}/ANALYSIS/ANALYSIS
25                     ${AliRoot_SOURCE_DIR}/HLT/BASE
26                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
27                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatarec
28                     ${AliRoot_SOURCE_DIR}/STEER/CDB
29                     ${AliRoot_SOURCE_DIR}/STEER/ESD
30                     ${AliRoot_SOURCE_DIR}/STEER/STEERBase
31                     ${CMAKE_BINARY_DIR}/version/
32                    )
33
34 # Sources - alphabetical order
35 set(SRCS
36     AliAlignmentTracks.cxx
37     AliAlignObj.cxx
38     AliAlignObjMatrix.cxx
39     AliAlignObjParams.cxx
40     AliBaseLoader.cxx
41     AliCentralTrigger.cxx
42     AliCluster3D.cxx
43     AliCluster.cxx
44     AliConfig.cxx
45     AliCorrQAChecker.cxx
46     AliCorrQADataMakerRec.cxx
47     AliCTPInputTimeParams.cxx
48     AliCTPRawData.cxx
49     AliCTPRawStream.cxx
50     AliCTPTimeParams.cxx
51     AliDataLoader.cxx
52     AliDCSArray.cxx
53     AliDebugVolume.cxx
54     AliDetector.cxx
55     AliDetectorRecoParam.cxx
56     AliDigit.cxx
57     AliDigitizationInput.cxx
58     AliDigitizer.cxx
59     AliDigitNew.cxx
60     AliESDTagCreator.cxx
61     AliEventInfo.cxx
62     AliFstream.cxx
63     AliGausCorr.cxx
64     AliGenerator.cxx
65     AliGeometry.cxx
66     AliGeomManager.cxx
67     AliGlobalQAChecker.cxx
68     AliGlobalQADataMaker.cxx
69     AliGRPManager.cxx
70     AliGRPObject.cxx
71     AliGRPPreprocessor.cxx
72     AliGRPRecoParam.cxx
73     AliHelix.cxx
74     AliHit.cxx
75     AliHitMap.cxx
76     AliHLTSimulation.cxx
77     AliHLTTestInputHandler.cxx
78     AliKink.cxx
79     AliLego.cxx
80     AliLegoGenerator.cxx
81     AliLegoGeneratorEta.cxx
82     AliLegoGeneratorEtaR.cxx
83     AliLegoGeneratorPhiZ.cxx
84     AliLegoGeneratorXYZ.cxx
85     AliLHCClockPhase.cxx
86     AliLHCData.cxx
87     AliLHCDipValT.cxx
88     AliLHCReader.cxx
89     AliLoader.cxx
90     AliLTUConfig.cxx
91     AliMatrixSparse.cxx
92     AliMatrixSq.cxx
93     AliMC.cxx
94     AliMCGenHandler.cxx
95     AliMergeCombi.cxx
96     AliMillePede2.cxx
97     AliMillepede.cxx
98     AliMillePedeRecord.cxx
99     AliMinResSolve.cxx
100     AliMisAligner.cxx
101     AliModule.cxx
102     AliObjectLoader.cxx
103     AliParamList.cxx
104     AliParamSolver.cxx
105     AliPlaneEff.cxx
106     AliQACheckerBase.cxx
107     AliQAChecker.cxx
108     AliQADataMaker.cxx
109     AliQADataMakerRec.cxx
110     AliQADataMakerSim.cxx
111     AliQAManager.cxx
112     AliQAThresholds.cxx
113     AliQAv1.cxx
114     AliRecoInputHandler.cxx
115     AliReconstruction.cxx
116     AliReconstructor.cxx
117     AliRecoParam.cxx
118     AliRecPoint.cxx
119     AliRectMatrix.cxx
120     AliRelAlignerKalman.cxx
121     AliRieman.cxx
122     AliRndm.cxx
123     AliRun.cxx
124     AliRunInfo.cxx
125     AliRunLoader.cxx
126     AliSelectorRL.cxx
127     AliSignalProcesor.cxx
128     AliSimulation.cxx
129     AliStream.cxx
130     AliSurveyObj.cxx
131     AliSurveyPoint.cxx
132     AliSurveyToAlignObjs.cxx
133     AliSymBDMatrix.cxx
134     AliSymMatrix.cxx
135     AliTracker.cxx
136     AliTrackFitter.cxx
137     AliTrackFitterKalman.cxx
138     AliTrackFitterRieman.cxx
139     AliTrackFitterStraight.cxx
140     AliTrackleter.cxx
141     AliTrackResidualsChi2.cxx
142     AliTrackResiduals.cxx
143     AliTrackResidualsFast.cxx
144     AliTrackResidualsLinear.cxx
145     AliTransportMonitor.cxx
146     AliTreeLoader.cxx
147     AliTriggerDetector.cxx
148     AliTriggerRunScalers.cxx
149     AliTriggerUtils.cxx
150     AliV0.cxx
151     AliVectorSparse.cxx
152     AliVertexer.cxx
153     AliVertexGenerator.cxx
154     AliVertexGenFile.cxx
155    )
156
157 # Headers from sources
158 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
159
160 # Generate the dictionary
161 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
162 get_directory_property(incdirs INCLUDE_DIRECTORIES)
163 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
164
165 set(ROOT_DEPENDENCIES Core EG GenVector GeomPainter Geom Gpad Graf Hist MathCore Matrix Minuit Net Physics Proof RIO Tree VMC)
166 set(ALIROOT_DEPENDENCIES STEERBase RAWDatabase RAWDatarec CDB ESD ANALYSIS HLTbase)
167
168 # Generate the ROOT map
169 # Dependecies
170 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
171 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
172
173 set(LIBHLTSIM_VERSION "1")
174 add_definitions("-DLIBHLTSIM_VERSION=${LIBHLTSIM_VERSION}")
175
176 # Create an object to be reused in case of static libraries 
177 # Otherwise the sources will be compiled twice
178 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
179 # Dependencies for the object
180 add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
181 # Add a library to the project using the object
182 add_library(${MODULE} SHARED $<TARGET_OBJECTS:STEER-object>)
183
184 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
185
186 # Public include folders that will be propagated to the dependecies
187 target_include_directories(${MODULE} PUBLIC ${incdirs})
188
189 # Additional compilation flags
190 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "-O -g")
191
192 # System dependent: Modify the way the library is build
193 if(${CMAKE_SYSTEM} MATCHES Darwin)
194     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
195 endif(${CMAKE_SYSTEM} MATCHES Darwin)
196
197 # Installation
198 install(TARGETS ${MODULE}
199   ARCHIVE DESTINATION lib
200   LIBRARY DESTINATION lib)
201 install(FILES ${HDRS} DESTINATION include)
202
203 # Static version if DA enabled
204 if(ALIROOT_STATIC)
205     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:STEER-object>)
206     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
207     
208     # list of shared dependencies / the name of the variable containing the list of static ones
209     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
210     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root RootExtra)
211
212     # Public include folders that will be propagated to the dependecies
213     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
214
215     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
216
217     # Installation
218     install(TARGETS ${MODULE}-static
219             ARCHIVE DESTINATION lib
220             LIBRARY DESTINATION lib)
221 endif(ALIROOT_STATIC)