0e2fff5483809411b95fef90ccbc5b7c8e8892fc
[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 # Additional compilation flags
84 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "-O -g -fPIC")
85
86 # System dependent: Modify the way the library is build
87 if(${CMAKE_SYSTEM} MATCHES Darwin)
88     set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
89 endif(${CMAKE_SYSTEM} MATCHES Darwin)
90
91 # Installation
92 install(TARGETS ${MODULE}
93         ARCHIVE DESTINATION lib
94         LIBRARY DESTINATION lib)
95
96 install(FILES ${HDRS} DESTINATION include)
97
98 # Static version if DA enabled
99 if(ALIROOT_STATIC)
100     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:T0base-object>)
101     set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
102
103     # list of shared dependencies / the name of the variable containing the list of static ones
104     generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
105     target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
106     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
107
108     # Installation
109     install(TARGETS ${MODULE}-static
110             ARCHIVE DESTINATION lib
111             LIBRARY DESTINATION lib)
112 endif(ALIROOT_STATIC)