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