PHOS/DA/CMakeLists.txt
[u/mrichter/AliRoot.git] / PHOS / PHOSbase / CMakeLists.txt
CommitLineData
97e8d2a8 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 PHOSbase)
18
19# Module include folder
427d561c 20include_directories(${AliRoot_SOURCE_DIR}/PHOS/${MODULE})
97e8d2a8 21
22# Additional include folders in alphabetical order except ROOT
f0315837 23include_directories(${ROOT_INCLUDE_DIR}
427d561c 24 ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
25 ${AliRoot_SOURCE_DIR}/RAW/RAWDatarec
00d82de9 26 ${AliRoot_SOURCE_DIR}/RAW/RAWDatasim
427d561c 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
97e8d2a8 32 )
33
34# Sources in alphabetical order
35set(SRCS
00d82de9 36 AliPHOS.cxx
97e8d2a8 37 AliPHOSCalibData.cxx
38 AliPHOSClusterizer.cxx
00d82de9 39 AliPHOSClusterizerv1.cxx
0d931d35 40 AliPHOSCpv3GConnection.cxx
dfd5ff54 41 AliPHOSCpvCalibData.cxx
42 AliPHOSCpvGainCalibDA.cxx
0d931d35 43 AliPHOSCpvParam.cxx
0916ba78 44 AliPHOSCpvPedProducer.cxx
c68c5d05 45 AliPHOSCpvRawDigiProducer.cxx
0d931d35 46 AliPHOSCpvRawStream.cxx
dfd5ff54 47 AliPHOSCpvRecPoint.cxx
97e8d2a8 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
00d82de9 57 AliPHOSLink.cxx
97e8d2a8 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
00d82de9 70 AliPHOSReconstructor.cxx
97e8d2a8 71 AliPHOSRecParticle.cxx
72 AliPHOSRecPoint.cxx
00d82de9 73 AliPHOSPIDv1.cxx
97e8d2a8 74 AliPHOSSDigitizer.cxx
75 AliPHOSSimParam.cxx
76 AliPHOSSurvey1.cxx
77 AliPHOSSurvey.cxx
00d82de9 78 AliPHOSTick.cxx
79 AliPHOSTracker.cxx
97e8d2a8 80 AliPHOSTrackSegment.cxx
81 AliPHOSTrackSegmentMaker.cxx
00d82de9 82 AliPHOSTrackSegmentMakerv1.cxx
97e8d2a8 83 AliPHOSTrigger.cxx
84 AliPHOSTriggerParameters.cxx
00d82de9 85 AliPHOSTriggerRawDigit.cxx
86 AliPHOSTriggerRawDigiProducer.cxx
87 AliPHOSTriggerRawReader.cxx
88 AliPHOSTRURawReader.cxx
89
97e8d2a8 90 )
91
92# Headers from sources
93string(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
97get_directory_property(incdirs INCLUDE_DIRECTORIES)
98generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
99
6af91854 100set(ROOT_DEPENDENCIES Core EG Geom Gpad Graf Hist MathCore Matrix Minuit Physics RIO Tree VMC)
101set(ALIROOT_DEPENDENCIES STEERBase STEER CDB ESD RAWDatabase RAWDatarec RAWDatasim PHOSUtils)
00d82de9 102
97e8d2a8 103# Generate the ROOT map
104# Dependecies
00d82de9 105set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
97e8d2a8 106generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
107
00d82de9 108# Create an object to be reused in case of static libraries
109# Otherwise the sources will be compiled twice
110add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
139cbc46 111# Follow headers dependencies
112add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
00d82de9 113# Add a library to the project using the object
114add_library(${MODULE} SHARED $<TARGET_OBJECTS:PHOSbase-object>)
97e8d2a8 115
00d82de9 116# Linking
6af91854 117target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
97e8d2a8 118
68aeb13b 119# Setting the correct headers for the object as gathered from the dependencies
120target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
121set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
122
97e8d2a8 123# Additional compilation flags
68aeb13b 124set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS " ")
97e8d2a8 125
126# System dependent: Modify the way the library is build
127if(${CMAKE_SYSTEM} MATCHES Darwin)
128 set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
129endif(${CMAKE_SYSTEM} MATCHES Darwin)
130
131# Installation
132install(TARGETS ${MODULE}
133 ARCHIVE DESTINATION lib
134 LIBRARY DESTINATION lib)
135
00d82de9 136install(FILES ${HDRS} DESTINATION include)
137
138# Static version if DA enabled
139if(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)
68aeb13b 146
147 # Public include folders that will be propagated to the dependecies
148 target_include_directories(${MODULE}-static PUBLIC ${incdirs})
149
00d82de9 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)
156endif(ALIROOT_STATIC)