9f668d34b8e7fc5fee5b4428b7777896f709b9ad
[u/mrichter/AliRoot.git] / RAW / RAWDatarec / 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 RAWDatarec)
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}/RAW/dateStream
25                     ${AliRoot_SOURCE_DIR}/RAW/RAWDatabase
26                     ${AliRoot_SOURCE_DIR}/STEER/ESD
27                     ${AliRoot_SOURCE_DIR}/STEER/STEERBase
28                    )
29 # Sources in alphabetical order
30 set(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
47 string(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
51 get_directory_property(incdirs INCLUDE_DIRECTORIES)
52 generate_dictionary("${MODULE}" "${MODULE}LinkDef.h" "${HDRS}" "${incdirs}")
53
54 set(ROOT_DEPENDENCIES Core Net RIO TreePlayer Tree)
55 set(ALIROOT_DEPENDENCIES ESD RAWDatabase STEERBase)
56
57 # Generate the ROOT map
58 # Dependecies
59 set(LIBDEPS ${ROOT_DEPENDENCIES} ${ALIROOT_DEPENDENCIES})
60 generate_rootmap("${MODULE}" "${LIBDEPS}" "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}LinkDef.h")
61
62 # Create an object to be reused in case of static libraries 
63 # Otherwise the sources will be compiled twice
64 add_library(${MODULE}-object OBJECT ${SRCS} G__${MODULE}.cxx)
65 # Add a library to the project using the object
66 add_library(${MODULE} SHARED $<TARGET_OBJECTS:RAWDatarec-object>)
67 target_link_libraries(${MODULE} ${ROOT_DEPENDENCIES} ${ALIROOT_DEPENDENCIES})
68
69 # Public include folders that will be propagated to the dependecies
70 target_include_directories(${MODULE} PUBLIC ${incdirs})
71
72 # Compile and link flags
73 set(MODULE_COMPILE_FLAGS)
74 set(MODULE_LINK_FLAGS)
75
76 if(DATE_FOUND)
77     set(MODULE_COMPILE_FLAGS "${DATE_CFLAGS}")
78     set(MODULE_LINK_FLAGS "${DATE_LDFLAGS} ${DATE_LIBS}")
79 endif(DATE_FOUND)
80
81 # Additional compilation and linking flags
82 set(MODULE_COMPILE_FLAGS "-O -g ${MODULE_COMPILE_FLAGS}")
83
84 # System dependent: Modify the way the library is build
85 if(${CMAKE_SYSTEM} MATCHES Darwin)
86     set(MODULE_LINK_FLAGS "-undefined dynamic_lookup ${MODULE_LINK_FLAGS}")
87 endif(${CMAKE_SYSTEM} MATCHES Darwin)
88
89 # Setting compile flags for the object
90 set_target_properties(${MODULE}-object PROPERTIES COMPILE_FLAGS "${MODULE_COMPILE_FLAGS}")
91
92 # Setting linking flags for the library
93 set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "${MODULE_LINK_FLAGS}")
94
95 # Installation
96 install(TARGETS ${MODULE}
97         ARCHIVE DESTINATION lib
98         LIBRARY DESTINATION lib)
99
100 install(FILES ${HDRS} DESTINATION include)
101
102 # Static version if DA enabled
103 if(ALIROOT_STATIC)
104     add_library(${MODULE}-static STATIC $<TARGET_OBJECTS:RAWDatarec-object>)
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 OUTPUT_NAME ${MODULE})
114     set_target_properties(${MODULE}-static PROPERTIES LINK_FLAGS "-Wl,--whole-archive")
115     
116     # Installation
117     install(TARGETS ${MODULE}-static
118             ARCHIVE DESTINATION lib
119             LIBRARY DESTINATION lib)
120 endif(ALIROOT_STATIC)