]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/MUONcore/CMakeLists.txt
Correct use of ROOT_INCLUDE_DIR
[u/mrichter/AliRoot.git] / MUON / MUONcore / CMakeLists.txt
CommitLineData
b22a7396 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 MUONcore)
18
19# Module include folder
427d561c 20include_directories(${AliRoot_SOURCE_DIR}/MUON/${MODULE})
b22a7396 21
22# Additional include folders in alphabetical order except ROOT
f0315837 23include_directories(${ROOT_INCLUDE_DIR}
427d561c 24 ${AliRoot_SOURCE_DIR}/STEER/STEERBase
b22a7396 25 )
26
27# Sources in alphabetical order
28set(SRCS
29 AliMpArrayI.cxx
30 AliMpExMap.cxx
31 AliMpExMapIterator.cxx
32 AliMpIntPair.cxx
33 AliMpStringObjMap.cxx
34 AliMUON1DArray.cxx
35 AliMUON1DMap.cxx
36 AliMUON2DMap.cxx
37 AliMUON2DMapIteratorByI.cxx
38 AliMUON2DMapIterator.cxx
39 AliMUONCheckItem.cxx
40 AliMUONLogger.cxx
41 AliMUONObjectPair.cxx
42 AliMUONStringIntMap.cxx
43 AliMUONTreeManager.cxx
44 AliMUONVStore.cxx
45 )
46
47# Headers from sources
48string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
49
50# Generate the dictionary
51# It will create G_ARG1.cxx and G_ARG1.h / ARG1 = function first argument
52get_directory_property(incdirs INCLUDE_DIRECTORIES)
53generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
54
c55bd1a6 55
56# Dependencies
57set(ROOT_DEPENDENCIES Core Tree)
58set(ALIROOT_DEPENDENCIES STEERBase)
59
b22a7396 60# Generate the ROOT map
61# Dependecies
c55bd1a6 62set(LIBDEPS ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
b22a7396 63generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
64
c55bd1a6 65# Create an object to be reused in case of static libraries
66# Otherwise the sources will be compiled twice
67add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
139cbc46 68# Follow headers dependencies
69add_dependencies(${MODULE}-object ${ALIROOT_DEPENDENCIES})
c55bd1a6 70# Add a library to the project using the object
71add_library(${MODULE} SHARED $<TARGET_OBJECTS:MUONcore-object>)
b22a7396 72
c55bd1a6 73# linking
74target_link_libraries(${MODULE} ${ALIROOT_DEPENDENCIES} ${ROOT_DEPENDENCIES})
b22a7396 75
68aeb13b 76# Setting the correct headers for the object as gathered from the dependencies
77target_include_directories(${MODULE}-object PUBLIC $<TARGET_PROPERTY:${MODULE},INCLUDE_DIRECTORIES>)
78set_target_properties(${MODULE}-object PROPERTIES COMPILE_DEFINITIONS $<TARGET_PROPERTY:${MODULE},COMPILE_DEFINITIONS>)
79
b22a7396 80# Additional compilation flags
68aeb13b 81set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS " ")
b22a7396 82
83# System dependent: Modify the way the library is build
84if(${CMAKE_SYSTEM} MATCHES Darwin)
85 set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
86endif(${CMAKE_SYSTEM} MATCHES Darwin)
87
88# Installation
89install(TARGETS ${MODULE}
90 ARCHIVE DESTINATION lib
91 LIBRARY DESTINATION lib)
92
c55bd1a6 93install(FILES ${HDRS} DESTINATION include)
94
95# Static version if DA enabled
96if(ALIROOT_STATIC)
97 add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:MUONcore-object>)
98 set_target_properties(${MODULE}-static PROPERTIES OUTPUT_NAME ${MODULE})
99
100 # list of shared dependencies / the name of the variable containing the list of static ones
101 generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES")
102 target_link_libraries(${MODULE}-static ${STATIC_ALIROOT_DEPENDENCIES} Root)
68aeb13b 103
104 # Public include folders that will be propagated to the dependecies
105 target_include_directories(${MODULE}-static PUBLIC ${incdirs})
106
c55bd1a6 107 set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
108
109 # Installation
110 install(TARGETS ${MODULE}-static
111 ARCHIVE DESTINATION lib
112 LIBRARY DESTINATION lib)
113endif(ALIROOT_STATIC)
114