]> git.uio.no Git - u/mrichter/AliRoot.git/blob - T0/T0base/CMakeLists.txt
Fixes for object target dependencies
[u/mrichter/AliRoot.git] / T0 / T0base / 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 T0base)
18
19 # Module include folder
20 include_directories(${AliRoot_SOURCE_DIR}/T0/${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     AliT0Align.cxx
36     AliT0CalibData.cxx
37     AliT0CalibLatency.cxx
38     AliT0CalibTimeEq.cxx
39     AliT0CalibWalk.cxx
40     AliT0.cxx
41     AliT0digit.cxx
42     AliT0Digitizer.cxx
43     AliT0hit.cxx
44     AliT0LookUpKey.cxx
45     AliT0LookUpValue.cxx
46     AliT0MisAligner.cxx
47     AliT0Parameters.cxx
48     AliT0QAChecker.cxx
49     AliT0RawData.cxx
50     AliT0RawReader.cxx
51     AliT0RecPoint.cxx
52     AliT0Trigger.cxx
53     AliT0TriggerParameters.cxx
54    )
55
56 # Headers from sources
57 string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
58
59 # Generate the dictionary
60 # It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
61 get_directory_property(incdirs INCLUDE_DIRECTORIES)
62 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
63
64 set(ROOT_DEPENDENCIES Core Hist MathCore RIO Tree)
65 set(ALIROOT_DEPENDENCIES STEERBase STEER CDB ESD RAWDatabase RAWDatarec RAWDatasim)
66
67 # Generate the ROOT map
68 # Dependecies
69 set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
70 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
71
72 # Create an object to be reused in case of static libraries 
73 # Otherwise the sources will be compiled twice
74 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
75 # Follow headers dependencies
76 add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
77 # Add a library to the project using the object
78 add_library(${MODULE} SHARED $<TARGET_OBJECTS:T0base-object>)
79
80 # Linking
81 target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
82
83 # Setting the correct headers for the object as gathered from the dependencies
84 target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
85 set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
86
87 # Additional compilation flags
88 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS " ")
89
90 # System dependent: Modify the way the library is build
91 if(${CMAKE_SYSTEM} MATCHES Darwin)
92     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
93 endif(${CMAKE_SYSTEM} MATCHES Darwin)
94
95 # Installation
96 install(TARGETS ${MODULE}
97         ARCHIVE DESTINATION lib
98         LIBRARY DESTINATION lib)
99
100 install(FILES ${HDRS} DESTINATION include)
101
102 # Static version if DA enabled
103 if(ALIROOT_STATIC)
104     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:T0base-object>)
105     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
106
107     # list of shared dependencies / the name of the variable containing the list of static ones
108     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
109     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
110     
111     # Public include folders that will be propagated to the dependecies
112     target_include_directories(${MODULE}-static PUBLIC ${incdirs})
113
114     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
115
116     # Installation
117     install(TARGETS ${MODULE}-static
118             ARCHIVE DESTINATION lib
119             LIBRARY DESTINATION lib)
120 endif(ALIROOT_STATIC)