Fixes for object target dependencies
[u/mrichter/AliRoot.git] / STEER / ESD / 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 ESD)
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}/STEER/STEERBase)
25
26 # Sources - alphabetical order
27 set(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
104 string(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
108 get_directory_property(incdirs INCLUDE_DIRECTORIES)
109 generate_dictionary("ESD" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
110
111 set(ROOT_DEPENDENCIES Core EG Geom Gpad Graf3d MathCore Matrix Physics RIO Tree)
112 set(ALIROOT_DEPENDENCIES STEERBase)
113
114 # Generate the ROOT map
115 # Dependecies
116 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
117 generate_rootmap("ESD" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
118
119 # Create an object to be reused in case of static libraries 
120 # Otherwise the sources will be compiled twice
121 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
122
123 # Add a library to the project using the object
124 add_library(${MODULE} SHARED $<TARGET_OBJECTS:ESD-object>)
125 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
126
127 # Setting the correct headers for the object as gathered from the dependencies
128 target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
129 set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
130
131 # Public include folders that will be propagated to the dependecies
132 target_include_directories(${MODULE} PUBLIC ${incdirs})
133
134 # Additional compilation flags for the object
135 set_target_properties(ESD-object PROPERTIES COMPILE_FLAGS "")
136
137 # System dependent: Modify the way the library is build
138 if(${CMAKE_SYSTEM} MATCHES Darwin)
139     set_target_properties(ESD PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
140 endif(${CMAKE_SYSTEM} MATCHES Darwin)
141
142 # Installation
143 install(TARGETS ${MODULE} 
144   ARCHIVE DESTINATION lib
145   LIBRARY DESTINATION lib)
146 install(FILES ${HDRS} DESTINATION include)
147
148 # Static version if DA enabled
149 if(ALIROOT_STATIC)
150     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:ESD-object>)
151     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
152
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
156     # Public include folders that will be propagated to the dependecies
157     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
158
159     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
160     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root RootExtra)
161
162     # Installation
163     install(TARGETS ${MODULE}-static
164             ARCHIVE DESTINATION lib
165             LIBRARY DESTINATION lib)
166 endif(ALIROOT_STATIC)