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