Fixes for object target dependencies
[u/mrichter/AliRoot.git] / VZERO / VZERObase / CMakeLists.txt
CommitLineData
17f9c1f8 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 VZERObase)
18
19# Module include folder
427d561c 20include_directories(${AliRoot_SOURCE_DIR}/VZERO/${MODULE})
17f9c1f8 21
22# Additional include folders in alphabetical order except ROOT
23include_directories(${ROOT_INCLUDE_DIRS}
139cbc46 24 ${AliRoot_SOURCE_DIR}/RAW/dateStream
25 ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
26 ${AliRoot_SOURCE_DIR}/RAW/RAWDatarec
427d561c 27 ${AliRoot_SOURCE_DIR}/STEER/CDB
139cbc46 28 ${AliRoot_SOURCE_DIR}/STEER/ESD
427d561c 29 ${AliRoot_SOURCE_DIR}/STEER/STEER
30 ${AliRoot_SOURCE_DIR}/STEER/STEERBase
17f9c1f8 31 )
32
33# Sources in alphabetical order
34set(SRCS
35 AliVZEROCalibData.cxx
36 AliVZERODataDCS.cxx
37 AliVZERODataFEE.cxx
38 AliVZEROdigit.cxx
39 AliVZEROLoader.cxx
40 AliVZEROLogicalSignal.cxx
41 AliVZEROMisAligner.cxx
42 AliVZEROPreprocessor.cxx
43 AliVZEROQAChecker.cxx
139cbc46 44 AliVZEROQADataMakerRec.cxx
45 AliVZERORawStream.cxx
17f9c1f8 46 AliVZEROSDigit.cxx
47 AliVZEROTrending.cxx
48 AliVZEROTriggerData.cxx
49 AliVZEROTriggerSimulator.cxx
50 )
51
52# Headers from sources
53string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
54
55# Generate the dictionary
56# It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
57get_directory_property(incdirs INCLUDE_DIRECTORIES)
58generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
59
139cbc46 60set(ROOT_DEPENDENCIES Core Gpad Graf Hist MathCore RIO Tree)
61set(ALIROOT_DEPENDENCIES STEERBase STEER ESD CDB RAWDatabase RAWDatarec)
62
17f9c1f8 63# Generate the ROOT map
64# Dependecies
139cbc46 65set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
17f9c1f8 66generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
67
139cbc46 68# Create an object to be reused in case of static libraries
69# Otherwise the sources will be compiled twice
70add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
71# Follow headers dependencies
72add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
73# Add a library to the project using the object
74add_library(${MODULE} SHARED $<TARGET_OBJECTS:VZERObase-object>)
75
76# Linking
77target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
17f9c1f8 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
139cbc46 83# Public include folders that will be propagated to the dependecies
84target_include_directories(${MODULE} PUBLIC ${incdirs})
17f9c1f8 85
86# Additional compilation flags
139cbc46 87set_target_properties(${MODULE} PROPERTIES COMPILE_FLAGS "")
17f9c1f8 88
89# System dependent: Modify the way the library is build
90if(${CMAKE_SYSTEM} MATCHES Darwin)
91 set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
92endif(${CMAKE_SYSTEM} MATCHES Darwin)
93
94# Installation
95install(TARGETS ${MODULE}
96 ARCHIVE DESTINATION lib
97 LIBRARY DESTINATION lib)
98
139cbc46 99install(FILES ${HDRS} DESTINATION include)
100
101# Static version if DA enabled
102if(ALIROOT_STATIC)
103 add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:VZERObase-object>)
104 set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
105
106 # list of shared dependencies / the name of the variable containing the list of static ones
107 generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
108 target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root RootExtra)
109
110 # Public include folders that will be propagated to the dependecies
111 target_include_directories(${MODULE}-static PUBLIC ${incdirs})
112
113 set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
114
115 # Installation
116 install(TARGETS ${MODULE}-static
117 ARCHIVE DESTINATION lib
118 LIBRARY DESTINATION lib)
119endif(ALIROOT_STATIC)