be3e3e8a5588a819f158fb025f622c4e857f4032
[u/mrichter/AliRoot.git] / HLT / BASE / 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 # HLTbase + subfolders (end of the cmake file)
17 # Subfolders have to be includes at the begining otherwise
18 # they will inherit properties from the parent
19 add_subdirectory(HOMER)
20 add_subdirectory(interface)
21 add_subdirectory(util)
22
23 # Module
24 set(MODULE HLTbase)
25
26 # Module include folder
27 include_directories(${AliRoot_SOURCE_DIR}/HLT/BASE
28                    )
29
30 # Additional include folders in alphabetical order except ROOT
31 include_directories(
32                     ${AliRoot_SOURCE_DIR}/HLT/BASE/HOMER
33                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
34                     ${AliRoot_SOURCE_DIR}/STEER/STEERBase
35                    )
36
37 # Sources in alphabetical order
38 set(SRCS
39     AliHLTBlockDataCollection.cxx
40     AliHLTCalibrationProcessor.cxx
41     AliHLT_C_Component_WrapperInterface.cxx
42     AliHLT_C_Component_WrapperInterface.cxx
43     AliHLTComponentBenchmark.cxx
44     AliHLTComponentConfiguration.cxx
45     AliHLTComponent.cxx
46     AliHLTComponentHandler.cxx
47     AliHLTConfiguration.cxx
48     AliHLTConfigurationHandler.cxx
49     AliHLTConsumerDescriptor.cxx
50     AliHLTControlTask.cxx
51     AliHLTCTPData.cxx
52     AliHLTDAQ.cxx
53     AliHLTDataBuffer.cxx
54     AliHLTDataDeflater.cxx
55     AliHLTDataDeflaterHuffman.cxx
56     AliHLTDataDeflaterSimple.cxx
57     AliHLTDataInflater.cxx
58     AliHLTDataInflaterHuffman.cxx
59     AliHLTDataInflaterSimple.cxx
60     AliHLTDataSink.cxx
61     AliHLTDataSource.cxx
62     AliHLTDataTypes.cxx
63     AliHLTDataTypes.cxx
64     AliHLTDimServer.cxx
65     AliHLTDomainEntry.cxx
66     AliHLTDumpTask.cxx
67     AliHLTErrorGuard.cxx
68     AliHLTEsdManager.cxx
69     AliHLTEventStatistics.cxx
70     AliHLTGlobalTriggerDecision.cxx
71     AliHLTHOMERBlockDesc.cxx
72     AliHLTHOMERLibManager.cxx
73     AliHLTHOMERManager.cxx
74     AliHLTHOMERProxyHandler.cxx
75     AliHLTHOMERSourceDesc.cxx
76     AliHLTHuffman.cxx
77     AliHLTLogging.cxx
78     AliHLTMemoryFile.cxx
79     AliHLTMessage.cxx
80     AliHLTMisc.cxx
81     AliHLTModuleAgent.cxx
82     AliHLTModulePreprocessor.cxx
83     AliHLTOfflineDataSource.cxx
84     AliHLTOfflineInterface.cxx
85     AliHLTOnlineConfiguration.cxx
86     AliHLTOUT.cxx
87     AliHLTOUTComponent.cxx
88     AliHLTOUTHandlerChain.cxx
89     AliHLTOUTHandlerDetectorDDL.cxx
90     AliHLTOUTHandlerEquId.cxx
91     AliHLTOUTHandlerEsdBranch.cxx
92     AliHLTOUTHandler.cxx
93     AliHLTOUTHandlerIgnore.cxx
94     AliHLTOUTHomerBuffer.cxx
95     AliHLTOUTTask.cxx
96     AliHLTPluginBase.cxx
97     AliHLTProcessor.cxx
98     AliHLTReadoutList.cxx
99     AliHLTReconstructorBase.cxx
100     AliHLTRunStatistics.cxx
101     AliHLTScalars.cxx
102     AliHLTShuttleInterface.cxx
103     AliHLTSpacePointContainer.cxx
104     AliHLTSystem.cxx
105     AliHLTTask.cxx
106     AliHLTTrackGeometry.cxx
107     AliHLTTriggerDecision.cxx
108     AliHLTTriggerDomain.cxx
109     AliHLTTriggerMenu.cxx
110     AliHLTTriggerMenuItem.cxx
111     AliHLTTriggerMenuSymbol.cxx
112     AliHLTTTreeProcessor.cxx
113    )
114
115 # Headers from sources
116 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
117 set(HDRS ${HDRS}
118     AliHLTCommonCDBEntries.h
119     AliHLTDefinitions.h
120     AliHLTExternalTrackParam.h
121     AliHLTLoggingVariadicFree.h
122     AliHLTStdIncludes.h
123    )
124
125 # Generate the dictionary
126 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
127 get_directory_property(incdirs INCLUDE_DIRECTORIES)
128 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
129
130 set(ROOT_DEPENDENCIES Core Geom Graf Hist MathCore Net RIO Tree XMLParser)
131 set(ALIROOT_DEPENDENCIES STEERBase RAWDatabase AliHLTHOMER)
132 # Generate the ROOT map
133 # Dependecies
134 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
135 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
136
137 # Create an object to be reused in case of static libraries 
138 # Otherwise the sources will be compiled twice
139 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
140 # Add a library to the project using the object
141 add_library(${MODULE} SHARED $<TARGET_OBJECTS:HLTbase-object>)
142 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
143
144 # Additional compilation flags
145 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "-fPIC -O -g")
146
147 # System dependent: Modify the way the library is build
148 if(${CMAKE_SYSTEM} MATCHES Darwin)
149     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
150 endif(${CMAKE_SYSTEM} MATCHES Darwin)
151
152 # Installation
153 install(TARGETS ${MODULE}
154         ARCHIVE DESTINATION lib
155         LIBRARY DESTINATION lib)
156
157 install(FILES ${HDRS} DESTINATION include)
158
159 # Static version if DA enabled
160 if(ALIROOT_STATIC)
161     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:HLTbase-object>)
162     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
163     target_link_libraries(${MODULE}-static STEERBase-static RAWDatabase-static AliHLTHOMER-static HLTbase-static Root RootExtra)
164     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
165     
166     # Installation
167     install(TARGETS ${MODULE}-static
168             ARCHIVE DESTINATION lib
169             LIBRARY DESTINATION lib)
170 endif(ALIROOT_STATIC)