0078ff01d3367e499f3e3f79afd5d2065e9606b6
[u/mrichter/AliRoot.git] / ITS / ITSbase / 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 ITSbase)
18
19 # Module include folder
20 include_directories(${AliRoot_SOURCE_DIR}/ITS/${MODULE})
21
22 # Additional include folders in alphabetical order except ROOT
23 include_directories(${ROOT_INCLUDE_DIRS}
24                     ${AliRoot_SOURCE_DIR}/ITS/ITSrec
25                     ${AliRoot_SOURCE_DIR}/ITS/ITSsim
26                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
27                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatarec
28                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatasim
29                     ${AliRoot_SOURCE_DIR}/RAW/dateStream
30                     ${AliRoot_SOURCE_DIR}/STEER/CDB
31                     ${AliRoot_SOURCE_DIR}/STEER/ESD
32                     ${AliRoot_SOURCE_DIR}/STEER/STEERBase
33                     ${AliRoot_SOURCE_DIR}/STEER/STEER
34                     ${AliRoot_SOURCE_DIR}/TPC
35                    )
36
37 # Sources in alphabetical order
38 set(SRCS
39     AliITSBadChannelsSSD.cxx
40     AliITSBadChannelsSSDv2.cxx
41     AliITSCalibration.cxx
42     AliITSCalibrationSDD.cxx
43     AliITSCalibrationSPD.cxx
44     AliITSCalibrationSSD.cxx
45     AliITSChannelDaSSD.cxx
46     AliITSChannelStatus.cxx
47     AliITSclusterV2.cxx
48     AliITSCompressRawDataSDD.cxx
49     AliITSCorrMap1DSDD.cxx
50     AliITSCorrMap2DSDD.cxx
51     AliITSCorrMapSDD.cxx
52     AliITSDCSAnalyzerSDD.cxx
53     AliITSDCSDataSDD.cxx
54     AliITSDDLModuleMapSDD.cxx
55     AliITSDDLRawData.cxx
56     AliITSdEdxSamples.cxx
57     AliITSdigit.cxx
58     AliITSdigitSDD.cxx
59     AliITSdigitSPD.cxx
60     AliITSdigitSSD.cxx
61     AliITSDriftSpeedArraySDD.cxx
62     AliITSDriftSpeedSDD.cxx
63     AliITSEventHeader.cxx
64     AliITSGainSSD.cxx
65     AliITSGainSSDv2.cxx
66     AliITSgeom.cxx
67     AliITSgeomMatrix.cxx
68     AliITSgeomTGeo.cxx
69     AliITSHLTforSDD.cxx
70     AliITSInitGeometry.cxx
71     AliITSIntMap.cxx
72     AliITSIntMapNode.cxx
73     AliITSLoader.cxx
74     AliITSMapA1.cxx
75     AliITSMapA2.cxx
76     AliITSMap.cxx
77     AliITSMapSDD.cxx
78     AliITSMisAligner.cxx
79     AliITSModuleDaSSD.cxx
80     AliITSNoiseSSD.cxx
81     AliITSNoiseSSDv2.cxx
82     AliITSPedestalSSD.cxx
83     AliITSPedestalSSDv2.cxx
84     AliITSPlaneEff.cxx
85     AliITSPlaneEffSDD.cxx
86     AliITSPlaneEffSPD.cxx
87     AliITSPlaneEffSSD.cxx
88     AliITSpList.cxx
89     AliITSpListItem.cxx
90     AliITSRawStream.cxx
91     AliITSRawStreamSDDCompressed.cxx
92     AliITSRawStreamSDD.cxx
93     AliITSRawStreamSPD.cxx
94     AliITSRawStreamSPDErrorLog.cxx
95     AliITSRawStreamSSD.cxx
96     AliITSRawStreamSSDv1.cxx
97     AliITSRecPoint.cxx
98     AliITSresponse.cxx
99     AliITSresponseSDD.cxx
100     AliITSresponseSPD.cxx
101     AliITSsegmentation.cxx
102     AliITSsegmentationSDD.cxx
103     AliITSsegmentationSPD.cxx
104     AliITSsegmentationSSD.cxx
105     AliITSSurveyToAlign.cxx
106     AliITSTransientDigit.cxx
107     AliITSTriggerAlgorithmConditions.cxx
108     AliITSTriggerConditions.cxx
109    )
110 if (DATE_FOUND)
111     set (SRCS ${SRCS} "AliITSHandleDaSSD.cxx")
112 endif (DATE_FOUND)
113
114 # Headers from sources
115 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
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 # Setting the dependencies
123 set(ROOT_DEPENDENCIES GenVector Gui)
124 set(ALIROOT_DEPENDENCIES CDB ESD STEERBase STEER ITSrec ITSsim RAWDatabase RAWDatarec RAWDatasim)
125
126 # Generate the ROOT map
127 # Dependecies
128 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
129 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
130
131 # Create an object to be reused in case of static libraries 
132 # Otherwise the sources will be compiled twice
133 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
134 # Add a library to the project using the object
135 add_library(${MODULE} SHARED $<TARGET_OBJECTS:ITSbase-object>)
136 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
137
138 # Additional compilation flags
139 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "-O -g -fPIC")
140
141 # System dependent: Modify the way the library is build
142 if(${CMAKE_SYSTEM} MATCHES Darwin)
143     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
144 endif(${CMAKE_SYSTEM} MATCHES Darwin)
145
146 # Installation
147 install(TARGETS ${MODULE}
148         ARCHIVE DESTINATION lib
149         LIBRARY DESTINATION lib)
150
151 install(FILES ${HDRS} DESTINATION include)
152
153 # Static version if DA enabled
154 if(ALIROOT_STATIC)
155     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:ITSbase-object>)
156     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
157
158     # list of shared dependencies / the name of the variable containing the list of static ones
159     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
160     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
161     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
162
163     # Installation
164     install(TARGETS ${MODULE}-static
165             ARCHIVE DESTINATION lib
166             LIBRARY DESTINATION lib)
167 endif(ALIROOT_STATIC)