]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TOF/TOFbase/CMakeLists.txt
2dd88c8dff3316141ffe3d70ced9db70bb590415
[u/mrichter/AliRoot.git] / TOF / TOFbase / 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 TOFbase)
18
19 # Module include folder
20 include_directories(${AliRoot_SOURCE_DIR}/TOF/${MODULE})
21
22 # Additional include folders in alphabetical order except ROOT
23 include_directories(${ROOT_INCLUDE_DIRS}
24                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
25                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatarec
26                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatasim
27                     ${AliRoot_SOURCE_DIR}/STEER/CDB
28                     ${AliRoot_SOURCE_DIR}/STEER/ESD
29                     ${AliRoot_SOURCE_DIR}/STEER/STEER
30                     ${AliRoot_SOURCE_DIR}/STEER/STEERBase
31                    )
32
33 # Sources in alphabetical order
34 set(SRCS
35     AliTOFAlignment.cxx
36     AliTOFArray.cxx
37     AliTOFCableLengthMap.cxx
38     AliTOFcalib.cxx
39     AliTOFcalibHisto.cxx
40     AliTOFChainSummaryData.cxx
41     AliTOFChannelOffline.cxx
42     AliTOFChannelOnlineArray.cxx
43     AliTOFChannelOnline.cxx
44     AliTOFChannelOnlineStatusArray.cxx
45     AliTOFChannelOnlineStatus.cxx
46     AliTOFCTPLatency.cxx
47     AliTOFDaConfigHandler.cxx
48     AliTOFDataDCS.cxx
49     AliTOFDCSmaps.cxx
50     AliTOFDecoder.cxx
51     AliTOFDecoderSummaryData.cxx
52     AliTOFDecoderV2.cxx
53     AliTOFDeltaBCOffset.cxx
54     AliTOFdigit.cxx
55     AliTOFDigitMap.cxx
56     AliTOFDRMSummaryData.cxx
57     AliTOFFEEDump.cxx
58     AliTOFFEEReader.cxx
59     AliTOFFormatDCS.cxx
60     AliTOFGeometry.cxx
61     AliTOFHitDataBuffer.cxx
62     AliTOFHitData.cxx
63     AliTOFHitField.cxx
64     AliTOFLTMSummaryData.cxx
65     AliTOFLvHvDataPoints.cxx
66     AliTOFNoiseConfigHandler.cxx
67     AliTOFPreprocessor.cxx
68     AliTOFPreprocessorFDR.cxx
69     AliTOFrawData.cxx
70     AliTOFRawMap.cxx
71     AliTOFRawStream.cxx
72     AliTOFReadoutInfo.cxx
73     AliTOFRecoParam.cxx
74     AliTOFResponseParams.cxx
75     AliTOFRunParams.cxx
76     AliTOFSDigit.cxx
77     AliTOFT0Fill.cxx
78     AliTOFT0FillOnlineCalib.cxx
79     AliTOFTDCErrorBuffer.cxx
80     AliTOFTDCError.cxx
81     AliTOFTDCHitBuffer.cxx
82     AliTOFTDCHit.cxx
83     AliTOFTRMSummaryData.cxx
84    )
85
86 # Headers from sources
87 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
88
89 # Additional headers, with no corresponding sources
90 list(APPEND HDRS "AliTOFDRMEventCRC.h"
91                  "AliTOFDRMGlobalHeader.h"
92                  "AliTOFDRMGlobalTrailer.h"
93                  "AliTOFDRMStatusHeader1.h"
94                  "AliTOFDRMStatusHeader2.h"
95                  "AliTOFDRMStatusHeader3.h"
96                  "AliTOFDRMStatusHeader4.h"
97                  "AliTOFFEEConfig.h"
98                  "AliTOFFEElightConfig.h"
99                  "AliTOFLTMADCData.h"
100                  "AliTOFLTMGlobalHeader.h"
101                  "AliTOFLTMGlobalTrailer.h"
102                  "AliTOFLTMORData.h"
103                  "AliTOFLTMPDLData.h"
104                  "AliTOFPreprocessor.h"
105                  "AliTOFRawDataFormat.h"
106                  "AliTOFTDCPackedHit.h"
107                  "AliTOFTDCUnpackedHit.h"
108                  "AliTOFTRMChainHeader.h"
109                  "AliTOFTRMChainTrailer.h"
110                  "AliTOFTRMDiagnosticErrorWord1.h"
111                  "AliTOFTRMDiagnosticErrorWord2.h"
112                  "AliTOFTRMGlobalHeader.h"
113                  "AliTOFTRMGlobalTrailer.h"
114                  "AliTOFTRMTDCError.h"
115     )
116
117 # Generate the dictionary
118 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
119 get_directory_property(incdirs INCLUDE_DIRECTORIES)
120 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
121
122 set(ROOT_DEPENDENCIES Core Geom Gpad Hist MathCore Net RIO Tree XMLParser)
123 set(ALIROOT_DEPENDENCIES STEERBase STEER ESD CDB RAWDatabase RAWDatarec RAWDatasim)
124
125 # Generate the ROOT map
126 # Dependecies
127 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
128 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
129
130 # Create an object to be reused in case of static libraries 
131 # Otherwise the sources will be compiled twice
132 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
133 # Follow headers dependencies
134 add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
135 # Add a library to the project using the object
136 add_library(${MODULE} SHARED $<TARGET_OBJECTS:TOFbase-object>)
137
138 # Linking
139 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
140
141 # Setting the correct headers for the object as gathered from the dependencies
142 target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
143 set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
144
145 # Public include folders that will be propagated to the dependecies
146 target_include_directories(${MODULE} PUBLIC ${incdirs})
147
148 # Additional compilation flags
149 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "")
150
151 # System dependent: Modify the way the library is build
152 if(${CMAKE_SYSTEM} MATCHES Darwin)
153     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
154 endif(${CMAKE_SYSTEM} MATCHES Darwin)
155
156 # Installation
157 install(TARGETS ${MODULE}
158         ARCHIVE DESTINATION lib
159         LIBRARY DESTINATION lib)
160
161 install(FILES ${HDRS} DESTINATION include)
162
163 # Static version if DA enabled
164 if(ALIROOT_STATIC)
165     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:TOFbase-object>)
166     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
167
168     # list of shared dependencies / the name of the variable containing the list of static ones
169     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
170     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
171
172     # Public include folders that will be propagated to the dependecies
173     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
174
175     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
176
177     # Installation
178     install(TARGETS ${MODULE}-static
179             ARCHIVE DESTINATION lib
180             LIBRARY DESTINATION lib)
181 endif(ALIROOT_STATIC)