Fixes for object target dependencies
[u/mrichter/AliRoot.git] / ANALYSIS / ANALYSIS / CMakeLists.txt
CommitLineData
7205bde1 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 ANALYSIS)
18
19# Module include folder
427d561c 20include_directories(${AliRoot_SOURCE_DIR}/ANALYSIS/${MODULE})
7205bde1 21
22# Additional include folders in alphabetical order except ROOT
adf1619a 23include_directories(${AliRoot_SOURCE_DIR}/STEER/STEERBase
7205bde1 24 )
25
0224bae4 26# Sources in alphabetical order
7205bde1 27set(SRCS
28 AliAnalysisDataContainer.cxx
29 AliAnalysisDataSlot.cxx
30 AliAnalysisGrid.cxx
31 AliAnalysisManager.cxx
32 AliAnalysisSelector.cxx
33 AliAnalysisStatistics.cxx
34 AliAnalysisTaskCfg.cxx
35 AliAnalysisTask.cxx
36 AliXMLParser.cxx
37 )
38
39# Headers from sources
40string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
41
42# Generate the dictionary
43# It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
44get_directory_property(incdirs INCLUDE_DIRECTORIES)
45generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
46
139cbc46 47set(ROOT_DEPENDENCIES Core Gpad Hist Net RIO Tree XMLParser)
48set(ALIROOT_DEPENDENCIES STEERBase)
49
0224bae4 50# Generate the ROOT map
51# Dependecies
139cbc46 52set(LIBDEPS ${ROOT_DEPENDENCIE} ${ALIROOT_DEPENDENCIES})
0224bae4 53generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
54
f82bfa66 55# Create an object to be reused in case of static libraries
56# Otherwise the sources will be compiled twice
139cbc46 57add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
f82bfa66 58# Add a library to the project using the object
68aeb13b 59add_library(${MODULE} SHARED $<TARGET_OBJECTS:${MODULE}-object>)
f82bfa66 60
61# linking
139cbc46 62target_link_libraries(${MODULE} ${ROOT_DEPENDENCIE} ${ALIROOT_DEPENDENCIES})
7205bde1 63
68aeb13b 64# Setting the correct headers for the object as gathered from the dependencies
65target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
66set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
67
7205bde1 68# Additional compilation flags
139cbc46 69set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "")
7205bde1 70
71# System dependent: Modify the way the library is build
72if(${CMAKE_SYSTEM} MATCHES Darwin)
73 set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
74endif(${CMAKE_SYSTEM} MATCHES Darwin)
75
76# Installation
77install(TARGETS ${MODULE}
234c484d 78 ARCHIVE DESTINATION lib
79 LIBRARY DESTINATION lib)
7205bde1 80
f82bfa66 81install(FILES ${HDRS} DESTINATION include)
82
83# Static version if DA enabled
84if(ALIROOT_STATIC)
68aeb13b 85 add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:${MODULE}-object>)
f82bfa66 86 set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
68aeb13b 87
88 # list of shared dependencies / the name of the variable containing the list of static ones
89 generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
90 target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root RootExtra)
91
92 # Public include folders that will be propagated to the dependecies
93 target_include_directories(${MODULE}-static PUBLIC ${incdirs})
94
f82bfa66 95 set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
96
97 # Installation
98 install(TARGETS ${MODULE}-static
99 ARCHIVE DESTINATION lib
100 LIBRARY DESTINATION lib)
101endif(ALIROOT_STATIC)