Fixes for object target dependencies
[u/mrichter/AliRoot.git] / STEER / ESD / CMakeLists.txt
CommitLineData
e9e48ff1 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
17set(MODULE ESD)
18
19# Module include folders
427d561c 20include_directories(${AliRoot_SOURCE_DIR}/STEER/${MODULE})
e9e48ff1 21
22# Additional include directories - alphabetical order except ROOT
23include_directories(${ROOT_INCLUDE_DIRS}
427d561c 24 ${AliRoot_SOURCE_DIR}/STEER/STEERBase)
e9e48ff1 25
26# Sources - alphabetical order
27set(SRCS
28 AliCascadeVertexer.cxx
29 AliESDACORDE.cxx
30 AliESDAD.cxx
31 AliESDCaloCells.cxx
32 AliESDCaloCluster.cxx
33 AliESDCaloTrigger.cxx
34 AliESDcascade.cxx
35 AliESDCosmicTrack.cxx
36 AliESD.cxx
37 AliESDEvent.cxx
38 AliESDFIT.cxx
39 AliESDFMD.cxx
40 AliESDfriend.cxx
41 AliESDfriendTrack.cxx
42 AliESDHandler.cxx
43 AliESDHeader.cxx
44 AliESDHLTDecision.cxx
45 AliESDHLTtrack.cxx
46 AliESDInputHandler.cxx
47 AliESDInputHandlerRP.cxx
48 AliESDkink.cxx
49 AliESDMultITS.cxx
50 AliESDMuonCluster.cxx
51 AliESDMuonGlobalTrack.cxx
52 AliESDMuonPad.cxx
53 AliESDMuonTrack.cxx
54 AliESDpid.cxx
55 AliESDPmdTrack.cxx
56 AliESDRun.cxx
57 AliESDTOFCluster.cxx
58 AliESDTOFHit.cxx
59 AliESDTOFMatch.cxx
60 AliESDtrack.cxx
61 AliESDTrdTrack.cxx
62 AliESDTrdTracklet.cxx
63 AliESDTrdTrigger.cxx
64 AliESDTZERO.cxx
65 AliESDTZEROfriend.cxx
66 AliESDUtils.cxx
67 AliESDv0.cxx
68 AliESDV0Params.cxx
69 AliESDVertex.cxx
70 AliESDVZERO.cxx
71 AliESDVZEROfriend.cxx
72 AliESDZDC.cxx
73 AliExpression.cxx
74 AliFMDFloatMap.cxx
75 AliFMDMap.cxx
76 AliKalmanTrack.cxx
77 AliKFParticleBase.cxx
78 AliKFParticle.cxx
79 AliKFVertex.cxx
80 AliMeanVertex.cxx
81 AliMultiplicity.cxx
82 AliRawDataErrorLog.cxx
83 AliSelector.cxx
84 AliStrLine.cxx
85 AliTrackerBase.cxx
86 AliTrackPointArray.cxx
87 AliTriggerBCMask.cxx
88 AliTriggerClass.cxx
89 AliTriggerCluster.cxx
90 AliTriggerConfiguration.cxx
91 AliTriggerDescriptor.cxx
92 AliTriggerInput.cxx
93 AliTriggerInteraction.cxx
94 AliTriggerIR.cxx
95 AliTriggerPFProtection.cxx
96 AliTriggerScalersESD.cxx
97 AliTriggerScalersRecordESD.cxx
98 AliV0vertexer.cxx
99 AliVertex.cxx
100 AliVertexerTracks.cxx
101 )
102
103# Headers from sources
104string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
105
106# Generate the dictionary
107# It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
108get_directory_property(incdirs INCLUDE_DIRECTORIES)
f82bfa66 109generate_dictionary("ESD" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
e9e48ff1 110
9cfdd3fd 111set(ROOT_DEPENDENCIES Core EG Geom Gpad Graf3d MathCore Matrix Physics RIO Tree)
112set(ALIROOT_DEPENDENCIES STEERBase)
113
0224bae4 114# Generate the ROOT map
115# Dependecies
9cfdd3fd 116set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
f82bfa66 117generate_rootmap("ESD" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
0224bae4 118
f82bfa66 119# Create an object to be reused in case of static libraries
120# Otherwise the sources will be compiled twice
6929fcdd 121add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
e9e48ff1 122
f82bfa66 123# Add a library to the project using the object
6929fcdd 124add_library(${MODULE} SHARED $<TARGET_OBJECTS:ESD-object>)
125target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
126
68aeb13b 127# Setting the correct headers for the object as gathered from the dependencies
128target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
129set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
130
6929fcdd 131# Public include folders that will be propagated to the dependecies
132target_include_directories(${MODULE} PUBLIC ${incdirs})
f82bfa66 133
134# Additional compilation flags for the object
68aeb13b 135set_target_properties(ESD-object PROPERTIES COMPILE_FLAGS "")
e9e48ff1 136
137# System dependent: Modify the way the library is build
138if(${CMAKE_SYSTEM} MATCHES Darwin)
f82bfa66 139 set_target_properties(ESD PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
e9e48ff1 140endif(${CMAKE_SYSTEM} MATCHES Darwin)
141
142# Installation
143install(TARGETS ${MODULE}
144 ARCHIVE DESTINATION lib
145 LIBRARY DESTINATION lib)
146install(FILES ${HDRS} DESTINATION include)
f82bfa66 147
148# Static version if DA enabled
149if(ALIROOT_STATIC)
150 add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:ESD-object>)
151 set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
152
9cfdd3fd 153 # list of shared dependencies / the name of the variable containing the list of static ones
154 generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
155
d1d7d34a 156 # Public include folders that will be propagated to the dependecies
157 target_include_directories(${MODULE}-static PUBLIC ${incdirs})
158
f82bfa66 159 set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
9cfdd3fd 160 target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root RootExtra)
f82bfa66 161
162 # Installation
163 install(TARGETS ${MODULE}-static
164 ARCHIVE DESTINATION lib
165 LIBRARY DESTINATION lib)
166endif(ALIROOT_STATIC)