CMake: STEER, adding AliConst.h to the installed headers
[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 set(HDRS ${HDRS}
160    AliConst.h
161    )
162
163 # Generate the dictionary
164 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
165 get_directory_property(incdirs INCLUDE_DIRECTORIES)
166 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
167
168 set(ROOT_DEPENDENCIES Core EG GenVector GeomPainter Geom Gpad Graf Hist MathCore Matrix Minuit Net Physics Proof RIO Tree VMC)
169 set(ALIROOT_DEPENDENCIES STEERBase RAWDatabase RAWDatarec CDB ESD ANALYSIS HLTbase)
170
171 # Generate the ROOT map
172 # Dependecies
173 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
174 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
175
176 set(LIBHLTSIM_VERSION "1")
177 add_definitions("-DLIBHLTSIM_VERSION=${LIBHLTSIM_VERSION}")
178
179 # Create an object to be reused in case of static libraries 
180 # Otherwise the sources will be compiled twice
181 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
182 # Add a library to the project using the object
183 add_library(${MODULE} SHARED $<TARGET_OBJECTS:STEER-object>)
184
185 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
186
187 # Setting the correct headers for the object as gathered from the dependencies
188 target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
189 set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
190
191 # Public include folders that will be propagated to the dependecies
192 target_include_directories(${MODULE} PUBLIC ${incdirs})
193
194 # Additional compilation flags
195 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "")
196
197 # System dependent: Modify the way the library is build
198 if(${CMAKE_SYSTEM} MATCHES Darwin)
199     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
200 endif(${CMAKE_SYSTEM} MATCHES Darwin)
201
202 # Installation
203 install(TARGETS ${MODULE}
204   ARCHIVE DESTINATION lib
205   LIBRARY DESTINATION lib)
206 install(FILES ${HDRS} DESTINATION include)
207
208 # Static version if DA enabled
209 if(ALIROOT_STATIC)
210     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:${MODULE}-object>)
211     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
212     
213     # list of shared dependencies / the name of the variable containing the list of static ones
214     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
215     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root RootExtra)
216
217     # Public include folders that will be propagated to the dependecies
218     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
219
220     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
221
222     # Installation
223     install(TARGETS ${MODULE}-static
224             ARCHIVE DESTINATION lib
225             LIBRARY DESTINATION lib)
226 endif(ALIROOT_STATIC)
227