]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEERBase/CMakeLists.txt
c7263738440de215fe6dacd1ad91fef5ab8eb3f4
[u/mrichter/AliRoot.git] / STEER / STEERBase / 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 STEERBase)
18
19 # Module include folder
20 include_directories(${AliRoot_SOURCE_DIR}/STEER/${MODULE})
21
22 # Additional includes - alphabetical order except ROOT
23 include_directories(${ROOT_INCLUDE_DIRS}
24                     ${AliRoot_BINARY_DIR}/version
25                    )
26
27 # Sources - alphabetical order
28 set(SRCS
29     AliCentrality.cxx
30     AliCheb3DCalc.cxx
31     AliCheb3D.cxx
32     AliCodeTimer.cxx
33     AliCollisionGeometry.cxx
34     AliCounterCollection.cxx
35     AliDAQ.cxx
36     AliDetectorEventHeader.cxx
37     AliDetectorPID.cxx
38     AliDetectorTagCuts.cxx
39     AliDetectorTag.cxx
40     AliDummyHandler.cxx
41     AliEMCALPIDResponse.cxx
42     AliEventplane.cxx
43     AliEventTagCuts.cxx
44     AliEventTag.cxx
45     AliExternalTrackParam.cxx
46     AliFileTag.cxx
47     AliGenCocktailEventHeader.cxx
48     AliGenDPMjetEventHeader.cxx
49     AliGenEposEventHeader.cxx
50     AliGenEventHeader.cxx
51     AliGenEventHeaderTunedPbPb.cxx
52     AliGenGeVSimEventHeader.cxx
53     AliGenHepMCEventHeader.cxx
54     AliGenHerwigEventHeader.cxx
55     AliGenHijingEventHeader.cxx
56     AliGenPythiaEventHeader.cxx
57     AliHeader.cxx
58     AliHMPIDPIDParams.cxx
59     AliHMPIDPIDResponse.cxx
60     AliInputEventHandler.cxx
61     AliITSPidParams.cxx
62     AliITSPIDResponse.cxx
63     AliLHCTagCuts.cxx
64     AliLHCTag.cxx
65     AliLog.cxx
66     AliMagF.cxx
67     AliMagWrapCheb.cxx
68     AliMathBase.cxx
69     AliMCEvent.cxx
70     AliMCEventHandler.cxx
71     AliMCParticle.cxx
72     AliMCVertex.cxx
73     AliMergeableCollection.cxx
74     AliMixedEvent.cxx
75     AliNeutralTrackParam.cxx
76     AliOADBContainer.cxx
77     AliPDG.cxx
78     AliPIDCombined.cxx
79     AliPID.cxx
80     AliPIDResponse.cxx
81     AliPIDValues.cxx
82     AliProdInfo.cxx
83     AliQA.cxx
84     AliRefArray.cxx
85     AliRunTagCuts.cxx
86     AliRunTag.cxx
87     AliStack.cxx
88     AliSysInfo.cxx
89     AliTagCreator.cxx
90     AliTimeStamp.cxx
91     AliTOFHeader.cxx
92     AliTOFPIDParams.cxx
93     AliTOFPIDResponse.cxx
94     AliTOFTriggerMask.cxx
95     AliTPCdEdxInfo.cxx
96     AliTPCPIDResponse.cxx
97     AliTrackReference.cxx
98     AliTRDdEdxParams.cxx
99     AliTRDNDFast.cxx
100     AliTRDPIDParams.cxx
101     AliTRDPIDReference.cxx
102     AliTRDPIDResponse.cxx
103     AliTRDPIDResponseObject.cxx
104     AliTRDTKDInterpolator.cxx
105     AliTriggerScalers.cxx
106     AliTriggerScalersRecord.cxx
107     AliVAODHeader.cxx
108     AliVCaloCells.cxx
109     AliVCaloTrigger.cxx
110     AliVCluster.cxx
111     AliVCuts.cxx
112     AliVersion.cxx
113     AliVEvent.cxx
114     AliVEventHandler.cxx
115     AliVEventPool.cxx
116     AliVfriendEvent.cxx
117     AliVfriendTrack.cxx
118     AliVHeader.cxx
119     AliVMFT.cxx
120     AliVMisc.cxx
121     AliVMultiplicity.cxx
122     AliVParticle.cxx
123     AliVTOFcluster.cxx
124     AliVTOFHit.cxx
125     AliVTOFMatch.cxx
126     AliVTPCseed.cxx
127     AliVTrack.cxx
128     AliVTrdTrack.cxx
129     AliVTrdTracklet.cxx
130     AliVVertex.cxx
131     AliVVZERO.cxx
132     AliVZDC.cxx
133     TTreeStream.cxx
134    )
135
136 # Headers from sources
137 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
138
139 # Generate the dictionary
140 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
141 get_directory_property(incdirs INCLUDE_DIRECTORIES)
142 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
143
144 # Create an object to be reused in case of static libraries 
145 # Otherwise the sources will be compiled twice
146 add_library(STEERBase-object OBJECT ${SRCS} G__${MODULE}.cxx)
147 # Add a library to the project using the object
148 add_library(STEERBase SHARED $<TARGET_OBJECTS:STEERBase-object>)
149
150 # Generate the ROOT map
151 # Dependecies
152 set(LIBDEPS Core EG Geom Gpad Graf3d Graf Hist MathCore Matrix Minuit Net Physics RIO Tree VMC)
153 generate_rootmap("STEERBase" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
154
155 # Additional compilation flags for the object
156 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "")
157 # Linking the library, not the object
158 target_link_libraries(${MODULE} ${LIBDEPS})
159
160 # Public include folders that will be propagated to the dependecies
161 target_include_directories(${MODULE} PUBLIC ${incdirs})
162
163 # System dependent: Modify the way the library is build
164 if(${CMAKE_SYSTEM} MATCHES Darwin)
165     set_target_properties(STEERBase PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
166 endif(${CMAKE_SYSTEM} MATCHES Darwin)
167
168 # Installation
169 install(TARGETS ${MODULE} 
170   ARCHIVE DESTINATION lib
171   LIBRARY DESTINATION lib)
172 install(FILES ${HDRS} DESTINATION include)
173
174 # Static version if DA enabled
175 if(ALIROOT_STATIC)
176     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:STEERBase-object>)
177     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
178     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
179     target_link_libraries(${MODULE}-static Root RootExtra)
180
181     # Public include folders that will be propagated to the dependecies
182     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
183
184     # Installation
185     install(TARGETS ${MODULE}-static
186             ARCHIVE DESTINATION lib
187             LIBRARY DESTINATION lib)
188 endif(ALIROOT_STATIC)