VZERO DAs + Object target dependencies
[u/mrichter/AliRoot.git] / MUON / MUONmapping / 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 MUONmapping)
18
19 # Module include folder
20 include_directories(${AliRoot_SOURCE_DIR}/MUON/${MODULE})
21
22 # Additional include folders in alphabetical order except ROOT
23 include_directories(${ROOT_INCLUDE_DIRS}
24                     ${AliRoot_SOURCE_DIR}/MUON/MUONcore
25                     ${AliRoot_SOURCE_DIR}/STEER/CDB
26                     ${AliRoot_SOURCE_DIR}/STEER/STEERBase
27                    )
28
29 # Sources in alphabetical order
30 set(SRCS
31     AliMpArea.cxx
32     AliMpBusPatch.cxx
33     AliMpCathodType.cxx
34     AliMpCDB.cxx
35     AliMpConnection.cxx
36     AliMpConstants.cxx
37     AliMpDataMap.cxx
38     AliMpDataProcessor.cxx
39     AliMpDataStreams.cxx
40     AliMpDCSNamer.cxx
41     AliMpDDL.cxx
42     AliMpDDLStore.cxx
43     AliMpDEIterator.cxx
44     AliMpDEManager.cxx
45     AliMpDEStore.cxx
46     AliMpDetElement.cxx
47     AliMpEncodePair.cxx
48     AliMpFastSegmentation.cxx
49     AliMpFiles.cxx
50     AliMpFrtCrocusConstants.cxx
51     AliMpHelper.cxx
52     AliMpHVUID.cxx
53     AliMpLocalBoard.cxx
54     AliMpManuIterator.cxx
55     AliMpManuStore.cxx
56     AliMpManuUID.cxx
57     AliMpMotif.cxx
58     AliMpMotifMap.cxx
59     AliMpMotifPosition.cxx
60     AliMpMotifPositionPadIterator.cxx
61     AliMpMotifReader.cxx
62     AliMpMotifSpecial.cxx
63     AliMpMotifType.cxx
64     AliMpMotifTypePadIterator.cxx
65     AliMpPad.cxx
66     AliMpPadRow.cxx
67     AliMpPadRowLSegment.cxx
68     AliMpPadRowRSegment.cxx
69     AliMpPadUID.cxx
70     AliMpPCB.cxx
71     AliMpPCBPadIterator.cxx
72     AliMpPlaneType.cxx
73     AliMpRegionalTrigger.cxx
74     AliMpRow.cxx
75     AliMpRowSegment.cxx
76     AliMpRowSegmentLSpecial.cxx
77     AliMpRowSegmentRSpecial.cxx
78     AliMpSectorAreaHPadIterator.cxx
79     AliMpSectorAreaVPadIterator.cxx
80     AliMpSector.cxx
81     AliMpSectorPadIterator.cxx
82     AliMpSectorReader.cxx
83     AliMpSectorSegmentation.cxx
84     AliMpSegmentation.cxx
85     AliMpSlat.cxx
86     AliMpSlatMotifMap.cxx
87     AliMpSlatPadIterator.cxx
88     AliMpSlatSegmentation.cxx
89     AliMpSt345Reader.cxx
90     AliMpStation12Type.cxx
91     AliMpStationType.cxx
92     AliMpSubZone.cxx
93     AliMpTriggerCrate.cxx
94     AliMpTrigger.cxx
95     AliMpTriggerReader.cxx
96     AliMpTriggerSegmentation.cxx
97     AliMpUID.cxx
98     AliMpVIndexed.cxx
99     AliMpVMotif.cxx
100     AliMpVPadIterator.cxx
101     AliMpVPadRowSegment.cxx
102     AliMpVRowSegment.cxx
103     AliMpVRowSegmentSpecial.cxx
104     AliMpVSegmentation.cxx
105     AliMpZone.cxx
106    )
107
108 # Headers from sources
109 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
110
111 # Generate the dictionary
112 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
113 get_directory_property(incdirs INCLUDE_DIRECTORIES)
114 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
115
116
117 # Dependencies
118 set(ROOT_DEPENDENCIES Core Physics RIO)
119 set(ALIROOT_DEPENDENCIES STEERBase CDB MUONcore)
120
121 # Generate the ROOT map
122 # Dependecies
123 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
124 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
125
126 # Create an object to be reused in case of static libraries 
127 # Otherwise the sources will be compiled twice
128 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
129 # Follow headers dependencies
130 add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
131 # Add a library to the project using the object
132 add_library(${MODULE} SHARED $<TARGET_OBJECTS:MUONmapping-object>)
133
134 # linking
135 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
136
137 # Additional compilation flags
138 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "-O -g -fPIC")
139
140 # System dependent: Modify the way the library is build
141 if(${CMAKE_SYSTEM} MATCHES Darwin)
142     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
143 endif(${CMAKE_SYSTEM} MATCHES Darwin)
144
145 # Installation
146 install(TARGETS ${MODULE}
147         ARCHIVE DESTINATION lib
148         LIBRARY DESTINATION lib)
149
150 install(FILES ${HDRS} DESTINATION include)
151
152 # Static version if DA enabled
153 if(ALIROOT_STATIC)
154     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:MUONmapping-object>)
155     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
156
157     # list of shared dependencies / the name of the variable containing the list of static ones
158     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
159     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
160     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
161
162     # Installation
163     install(TARGETS ${MODULE}-static
164             ARCHIVE DESTINATION lib
165             LIBRARY DESTINATION lib)
166 endif(ALIROOT_STATIC)
167