Fixes for object target dependencies
[u/mrichter/AliRoot.git] / RAW / RAWDatabase / CMakeLists.txt
CommitLineData
0224bae4 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
17set(MODULE RAWDatabase)
18
19# Module include folder
427d561c 20include_directories(${AliRoot_SOURCE_DIR}/RAW/${MODULE})
0224bae4 21
22# Additional include folders in alphabetical order except ROOT
23include_directories(${ROOT_INCLUDE_DIRS}
427d561c 24 ${AliRoot_SOURCE_DIR}/STEER/ESD
25 ${AliRoot_SOURCE_DIR}/STEER/STEERBase
0224bae4 26 )
27
28# Sources in alphabetical order
29set(SRCS
30 AliAltroMapping.cxx
31 AliCaloAltroMapping.cxx
32 AliRawDataArray.cxx
33 AliRawDataArrayV2.cxx
34 AliRawData.cxx
35 AliRawEquipment.cxx
36 AliRawEquipmentHeader.cxx
37 AliRawEquipmentV2.cxx
38 AliRawEvent.cxx
39 AliRawEventHeaderBase.cxx
40 AliRawEventTag.cxx
41 AliRawEventV2.cxx
42 AliRawVEquipment.cxx
43 AliRawVEvent.cxx
44 AliStats.cxx
45 )
46
47# Headers from sources
48string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
49
50# Extra headers in alphabetical order
ca331a9c 51set(HDRS ${HDRS}
52 AliRawDataHeader.h
53 AliRawDataHeaderV3.h
54 AliRawEventHeaderVersions.h
55 )
0224bae4 56
57# Generate the dictionary
58# It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
59get_directory_property(incdirs INCLUDE_DIRECTORIES)
60generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
61
d1d7d34a 62set(ROOT_DEPENDENCIES Core Hist RIO)
63set(ALIROOT_DEPENDENCIES ESD STEERBase)
64
a0f34e87 65# Generate the ROOT map
66# Dependecies
d1d7d34a 67set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
a0f34e87 68generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
69
f82bfa66 70# Create an object to be reused in case of static libraries
71# Otherwise the sources will be compiled twice
d1d7d34a 72add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
139cbc46 73# Follow headers dependencies
74add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
f82bfa66 75# Add a library to the project using the object
d1d7d34a 76add_library(${MODULE} SHARED $<TARGET_OBJECTS:RAWDatabase-object>)
77target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
78
68aeb13b 79# Setting the correct headers for the object as gathered from the dependencies
80target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
81set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
82
d1d7d34a 83# Public include folders that will be propagated to the dependecies
84target_include_directories(${MODULE} PUBLIC ${incdirs})
0224bae4 85
ca331a9c 86set(MODULE_COMPILE_FLAGS)
87set(MODULE_LINK_FLAGS)
88
89if(DATE_FOUND)
90 set(MODULE_COMPILE_FLAGS "${DATE_CFLAGS}")
91 set(MODULE_LINK_FLAGS "${DATE_LDFLAGS} ${DATE_LIBS}")
92endif(DATE_FOUND)
93
94# Additional compilation and linking flags
68aeb13b 95set(MODULE_COMPILE_FLAGS " ${MODULE_COMPILE_FLAGS}")
0224bae4 96
97# System dependent: Modify the way the library is build
98if(${CMAKE_SYSTEM} MATCHES Darwin)
ca331a9c 99 set(MODULE_LINK_FLAGS "-undefined dynamic_lookup ${MODULE_LINK_FLAGS}")
0224bae4 100endif(${CMAKE_SYSTEM} MATCHES Darwin)
101
f82bfa66 102# Setting compilation flags for the object
103set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "${MODULE_COMPILE_FLAGS}")
104# Setting the linking flags for the library
ca331a9c 105set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "${MODULE_LINK_FLAGS}")
106
0224bae4 107# Installation
108install(TARGETS ${MODULE}
109 ARCHIVE DESTINATION lib
110 LIBRARY DESTINATION lib)
111
f82bfa66 112install(FILES ${HDRS} DESTINATION include)
113
114# Static version if DA enabled
115if(ALIROOT_STATIC)
116 add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:RAWDatabase-object>)
d1d7d34a 117
118 # list of shared dependencies / the name of the variable containing the list of static ones
119 generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
120 target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
121
122 # Public include folders that will be propagated to the dependecies
123 target_include_directories(${MODULE}-static PUBLIC ${incdirs})
f82bfa66 124
125 set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
126 set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
127
128 # Installation
129 install(TARGETS ${MODULE}-static
130 ARCHIVE DESTINATION lib
131 LIBRARY DESTINATION lib)
132endif(ALIROOT_STATIC)