12ec656e41d3012983913f9fd5e3d9dcf6fef79f
[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 # Generate the dictionary
90 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
91 get_directory_property(incdirs INCLUDE_DIRECTORIES)
92 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
93
94 set(ROOT_DEPENDENCIES Core Geom Gpad Hist MathCore Net RIO Tree XMLParser)
95 set(ALIROOT_DEPENDENCIES STEERBase STEER ESD CDB RAWDatabase RAWDatarec RAWDatasim)
96
97 # Generate the ROOT map
98 # Dependecies
99 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
100 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
101
102 # Create an object to be reused in case of static libraries 
103 # Otherwise the sources will be compiled twice
104 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
105 # Add a library to the project using the object
106 add_library(${MODULE} SHARED $<TARGET_OBJECTS:TOFbase-object>)
107
108 # Linking
109 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
110
111 # Public include folders that will be propagated to the dependecies
112 target_include_directories(${MODULE} PUBLIC ${incdirs})
113
114 # Additional compilation flags
115 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "-O -g")
116
117 # System dependent: Modify the way the library is build
118 if(${CMAKE_SYSTEM} MATCHES Darwin)
119     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
120 endif(${CMAKE_SYSTEM} MATCHES Darwin)
121
122 # Installation
123 install(TARGETS ${MODULE}
124         ARCHIVE DESTINATION lib
125         LIBRARY DESTINATION lib)
126
127 install(FILES ${HDRS} DESTINATION include)
128
129 # Static version if DA enabled
130 if(ALIROOT_STATIC)
131     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:TOFbase-object>)
132     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
133
134     # list of shared dependencies / the name of the variable containing the list of static ones
135     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
136     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
137
138     # Public include folders that will be propagated to the dependecies
139     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
140
141     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
142
143     # Installation
144     install(TARGETS ${MODULE}-static
145             ARCHIVE DESTINATION lib
146             LIBRARY DESTINATION lib)
147 endif(ALIROOT_STATIC)