PHOS/DA/CMakeLists.txt
[u/mrichter/AliRoot.git] / PHOS / PHOSbase / 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 PHOSbase)
18
19 # Module include folder
20 include_directories(${AliRoot_SOURCE_DIR}/PHOS/${MODULE})
21
22 # Additional include folders in alphabetical order except ROOT
23 include_directories(${ROOT_INCLUDE_DIR}
24                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
25                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatarec
26                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatasim
27                     ${AliRoot_SOURCE_DIR}/PHOS/PHOSUtils
28                     ${AliRoot_SOURCE_DIR}/STEER/CDB
29                     ${AliRoot_SOURCE_DIR}/STEER/ESD
30                     ${AliRoot_SOURCE_DIR}/STEER/STEER
31                     ${AliRoot_SOURCE_DIR}/STEER/STEERBase
32                    )
33
34 # Sources in alphabetical order
35 set(SRCS
36     AliPHOS.cxx
37     AliPHOSCalibData.cxx
38     AliPHOSClusterizer.cxx
39     AliPHOSClusterizerv1.cxx
40     AliPHOSCpv3GConnection.cxx
41     AliPHOSCpvCalibData.cxx
42     AliPHOSCpvGainCalibDA.cxx
43     AliPHOSCpvParam.cxx
44     AliPHOSCpvPedProducer.cxx
45     AliPHOSCpvRawDigiProducer.cxx
46     AliPHOSCpvRawStream.cxx
47     AliPHOSCpvRecPoint.cxx
48     AliPHOSDigit.cxx
49     AliPHOSDigitizer.cxx
50     AliPHOSEmcBadChannelsMap.cxx
51     AliPHOSEmcCalibData.cxx
52     AliPHOSEmcRecPoint.cxx
53     AliPHOSFastRecParticle.cxx
54     AliPHOSGeometry.cxx
55     AliPHOSHit.cxx
56     AliPHOSImpact.cxx
57     AliPHOSLink.cxx
58     AliPHOSLoader.cxx
59     AliPHOSModuleMisalignment.cxx
60     AliPHOSPID.cxx
61     AliPHOSPulseGenerator.cxx
62     AliPHOSQAChecker.cxx
63     AliPHOSRawDigiProducer.cxx
64     AliPHOSRawFitterv0.cxx
65     AliPHOSRawFitterv1.cxx
66     AliPHOSRawFitterv2.cxx
67     AliPHOSRawFitterv3.cxx
68     AliPHOSRawFitterv4.cxx
69     AliPHOSRecoParam.cxx
70     AliPHOSReconstructor.cxx
71     AliPHOSRecParticle.cxx
72     AliPHOSRecPoint.cxx
73     AliPHOSPIDv1.cxx
74     AliPHOSSDigitizer.cxx
75     AliPHOSSimParam.cxx
76     AliPHOSSurvey1.cxx
77     AliPHOSSurvey.cxx
78     AliPHOSTick.cxx
79     AliPHOSTracker.cxx
80     AliPHOSTrackSegment.cxx
81     AliPHOSTrackSegmentMaker.cxx
82     AliPHOSTrackSegmentMakerv1.cxx
83     AliPHOSTrigger.cxx
84     AliPHOSTriggerParameters.cxx
85     AliPHOSTriggerRawDigit.cxx
86     AliPHOSTriggerRawDigiProducer.cxx
87     AliPHOSTriggerRawReader.cxx
88     AliPHOSTRURawReader.cxx
89
90    )
91
92 # Headers from sources
93 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
94
95 # Generate the dictionary
96 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
97 get_directory_property(incdirs INCLUDE_DIRECTORIES)
98 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
99
100 set(ROOT_DEPENDENCIES Core EG Geom Gpad Graf Hist MathCore Matrix Minuit Physics RIO Tree VMC)
101 set(ALIROOT_DEPENDENCIES STEERBase STEER CDB ESD RAWDatabase RAWDatarec RAWDatasim PHOSUtils)
102
103 # Generate the ROOT map
104 # Dependecies
105 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
106 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
107
108 # Create an object to be reused in case of static libraries 
109 # Otherwise the sources will be compiled twice
110 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
111 # Follow headers dependencies
112 add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
113 # Add a library to the project using the object
114 add_library(${MODULE} SHARED $<TARGET_OBJECTS:PHOSbase-object>)
115
116 # Linking
117 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
118
119 # Setting the correct headers for the object as gathered from the dependencies
120 target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
121 set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
122
123 # Additional compilation flags
124 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS " ")
125
126 # System dependent: Modify the way the library is build
127 if(${CMAKE_SYSTEM} MATCHES Darwin)
128     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
129 endif(${CMAKE_SYSTEM} MATCHES Darwin)
130
131 # Installation
132 install(TARGETS ${MODULE}
133         ARCHIVE DESTINATION lib
134         LIBRARY DESTINATION lib)
135
136 install(FILES ${HDRS} DESTINATION include)
137
138 # Static version if DA enabled
139 if(ALIROOT_STATIC)
140     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:PHOSbase-object>)
141     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
142
143     # list of shared dependencies / the name of the variable containing the list of static ones
144     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
145     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
146
147     # Public include folders that will be propagated to the dependecies
148     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
149
150     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
151
152     # Installation
153     install(TARGETS ${MODULE}-static
154             ARCHIVE DESTINATION lib
155             LIBRARY DESTINATION lib)
156 endif(ALIROOT_STATIC)