In AliMUONLocalTriggerBoard:
[u/mrichter/AliRoot.git] / cmake / ALICE_CMake.cmake
CommitLineData
6db31708 1# AliRoot Build System Utility Macro and Function definitions
2#
3# Author: Johny Jose (johny.jose@cern.ch)
4# Port of previous Makefile build to cmake
5
6cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
7
8macro(ALICE_DevFlagsOutput)
9
10 if(ALICEDEV STREQUAL "YES")
11 message(STATUS "FFLAGS : ${FFLAGS}")
12 message(STATUS "CXXFLAGS : ${CXXFLAGS}")
13 message(STATUS "CFLAGS : ${CFLAGS}")
14 message(STATUS "SOFLAGS : ${SOFLAGS}")
15 message(STATUS "LDFLAGS : ${LDFLAGS}")
16 message(STATUS "SHLIB : ${SHLIB}")
17 message(STATUS "SYSLIBS : ${SYSLIBS}")
18 message(STATUS "CINTFLAGS : ${CINTFLAGS}")
19 endif(ALICEDEV STREQUAL "YES")
20
21endmacro(ALICE_DevFlagsOutput)
22
23function(ALICE_CleanOutput _output input)
24
25 string(REGEX REPLACE "\n" " " clean ${input})
26 set(${_output} ${clean} PARENT_SCOPE)
27
28endfunction(ALICE_CleanOutput)
29
30function(ALICE_CorrectPaths _output value )
31
32 set(corrected)
33 foreach(path ${value})
34 set(external)
35 string(REGEX MATCH "^/" external ${path})
36 if(NOT external)
37 list(APPEND corrected "${CMAKE_SOURCE_DIR}/${path}" )
38 else()
39 list(APPEND corrected ${path})
40 endif(NOT external)
41 endforeach(path)
42 set(${_output} ${corrected} PARENT_SCOPE)
43
44endfunction(ALICE_CorrectPaths)
45
46function(ALICE_Format _output prefix suffix input)
47
48# DevNotes - input should be put in quotes or the complete list does not get passed to the function
49 set(format)
50 foreach(arg ${input})
51 set(item ${arg})
52 if(prefix)
53 string(REGEX MATCH "^${prefix}" pre ${arg})
54 endif(prefix)
55 if(suffix)
56 string(REGEX MATCH "${suffix}$" suf ${arg})
57 endif(suffix)
58 if(NOT pre)
59 set(item "${prefix}${item}")
60 endif(NOT pre)
61 if(NOT suf)
62 set(item "${item}${suffix}")
63 endif(NOT suf)
64 list(APPEND format ${item})
65 endforeach(arg)
66 set(${_output} ${format} PARENT_SCOPE)
67
68endfunction(ALICE_Format)
69
70function(ALICE_CheckLibraries _output input)
71
72 set(format)
73 foreach(arg ${input})
74 set(item ${arg})
75 string(REGEX MATCH "^(/|-)" preformatted ${item})
76 if(NOT preformatted)
77 set(item "-l${item}")
78 endif(NOT preformatted)
79 list(APPEND format ${item})
80 endforeach(arg)
81 set(${_output} ${format} PARENT_SCOPE)
82
83endfunction(ALICE_CheckLibraries)
84
85function(ALICE_RootConfig _output parameters)
86
87 if(ROOT_CONFIG)
88 execute_process(COMMAND ${ROOT_CONFIG} ${parameters} OUTPUT_VARIABLE result ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
89 if(error)
90 message(FATAL_ERROR "root-config ERROR : ${error}")
91 endif(error)
92 ALICE_CleanOutput(result "${result}")
93 set(${_output} "${result}" PARENT_SCOPE)
94 else()
95 message(FATAL_ERROR "root-config not found")
96 endif(ROOT_CONFIG)
97
98endfunction(ALICE_RootConfig)
99
100macro(ALICE_CheckOutOfSourceBuild)
101
102 #Check if previous in-source build failed
103 if(EXISTS ${CMAKE_SOURCE_DIR}/CMakeCache.txt OR EXISTS ${CMAKE_SOURCE_DIR}/CMakeFiles)
104 message(FATAL_ERROR "CMakeCache.txt or CMakeFiles exists in source directory! Please remove them before running cmake $ALICE_ROOT")
105 endif(EXISTS ${CMAKE_SOURCE_DIR}/CMakeCache.txt OR EXISTS ${CMAKE_SOURCE_DIR}/CMakeFiles)
106
107 #Get Real Paths of the source and binary directories
108 get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH)
109 get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH)
110
111 #Check for in-source builds
112 if(${srcdir} STREQUAL ${bindir})
113 message(FATAL_ERROR "AliRoot cannot be built in-source! Please run cmake $ALICE_ROOT outside the source directory")
114 endif(${srcdir} STREQUAL ${bindir})
115
116endmacro(ALICE_CheckOutOfSourceBuild)
117
118macro(ALICE_ConfigureCompiler)
119
120 if(ALIDEBUG STREQUAL "YES")
121 set(ALICE_TARGET ${ALICE_TARGET}DEBUG)
122 message("Befor ${CXXFLAGS}")
123 string(REGEX MATCHALL "-O[^ ]*" FFLAGS ${FFLAGS})
124 string(REGEX MATCHALL "-O[^ ]*" CXXFLAGS ${CXXFLAGS})
125 message("After ${CXXFLAGS}")
126 string(REGEX MATCHALL "-O[^ ]*" CFLAGS ${CFLAGS})
127 string(REGEX MATCHALL "-O[^ ]*" SOFLAGS ${SOFLAGS})
128 string(REGEX MATCHALL "-O[^ ]*" LDFLAGS ${LDFLAGS})
129 set(FFLAGS "-g ${FFLAGS}")
130 set(CXXFLAGS "-g ${CXXFLAGS}")
131 set(CFLAGS "-g ${CFLAGS}")
132 set(SOFLAGS "-g ${SOFLAGS}")
133 set(LDFLAGS "-g ${LDFLAGS}")
134 endif(ALIDEBUG STREQUAL "YES")
135
136 if(ALIPROFILE STREQUAL "YES")
137 set(ALICE_TARGET ${ALICE_TARGET}PROF)
138 set(FFLAGS "-pg ${FFLAGS}")
139 set(CXXFLAGS "-pg ${CXXFLAGS}")
140 set(CFLAGS "-pg ${CFLAGS}")
141 set(SOFLAGS "-pg ${SOFLAGS}")
142 set(LDFLAGS "-pg ${LDFLAGS}")
143 endif(ALIPROFILE STREQUAL "YES")
144
145 ALICE_RootConfig(RCFLAGS --auxcflags)
146 ALICE_RootConfig(RLFLAGS --ldflags)
147
148 set(CXXFLAGS "${CXXFLAGS} ${RCFLAGS}")
149 set(CFLAGS "${CFLAGS} ${RCFLAGS}")
150 set(SOFLAGS "${SOFLAGS} ${RLFLAGS}")
151 set(LDFLAGS "${LDFLAGS} ${RLFLAGS}")
152
153 if(NOT ALICXXWARN STREQUAL "NO")
154 set(CXXFLAGS "${CXXFLAGS} ${CXXWARN}")
155 endif(NOT ALICXXWARN STREQUAL "NO")
156
157 set(CXXFLAGS "${DATEFLAGS} ${CXXFLAGS}")
158 set(CFLAGS "${DATEFLAGS} ${CFLAGS}")
159 set(CINTFLAGS "${DATEFLAGS}")
160
161endmacro(ALICE_ConfigureCompiler)
162
163macro(ALICE_ConfigurePlatform)
164
165 ALICE_GetTarget()
166 include("CMake${ALICE_TARGET}")
167
168endmacro(ALICE_ConfigurePlatform)
169
170macro(ALICE_GetTarget)
171
172 #Set ALICE_TARGET if it has not been set yet
173 if(NOT ALICE_TARGET)
174 set(ALICE_TARGET $ENV{ALICE_TARGET})
175 #If ALICE_TARGET is not defined assign default values
176 if(NOT ALICE_TARGET)
177 message(WARNING "Environment variable ALICE_TARGET is not set ! Setting to default value.")
178 ALICE_RootConfig(ALICE_TARGET --arch)
179 message("ALICE_TARGET set to ${ALICE_TARGET}")
180 endif(NOT ALICE_TARGET)
181 endif(NOT ALICE_TARGET)
182
183endmacro(ALICE_GetTarget)
184
185macro(ALICE_ResetPackage)
186
187 set(MODDIR ${MODULE})
188 set(MODDIRI ${PROJECT_SOURCE_DIR}/${MODULE})
189
190 set(SRCS)
191 set(HDRS)
192 set(FSRCS)
193 set(DHDR)
194 set(CSRCS)
195 set(CHDRS)
196 set(EINCLUDE)
197 set(EDEFINE)
198 set(ELIBS)
199 set(ELIBSDIR)
200 set(PACKFFLAGS)
201 set(PACKCXXFLAGS)
202 set(PACKCFLAGS)
203 set(PACKDYFLAGS)
204 set(PACKSOFLAGS)
205 set(PACKLDFLAGS)
206 set(PACKBLIBS)
207 set(EXPORT)
208 set(EHDRS)
209 set(CINTHDRS)
210 set(CINTAUTOLINK)
211 set(ARLIBS)
212 set(SHLIBS)
213
214 #HLT Variables
215 set(MODULE_HDRS)
216 set(MODULE_SRCS)
217 set(MODULE_DHDR)
218 set(CLASS_HDRS)
219 set(LIBRARY_DEP)
220 set(HLTDEFS)
221 set(HLTSOFLAGS)
222
223
224 set(PSRCS)
225 set(PHDRS)
226 set(PFSRCS)
227 set(PDHDR)
228 set(PCSRCS)
229 set(PCHDRS)
230 set(PEINCLUDE)
231 set(PEDEFINE)
232 set(PELIBS)
233 set(PELIBSDIR)
234 set(PPACKFFLAGS)
235 set(PPACKCXXFLAGS)
236 set(PPACKCFLAGS)
237 set(PPACKDYFLAGS)
238 set(PPACKSOFLAGS)
239 set(PPACKLDFLAGS)
240 set(PPACKBLIBS)
241 set(PEXPORT)
242 set(PEHDRS)
243 set(PCINTHDRS)
244 set(PCINTAUTOLINK)
245 set(PARLIBS)
246 set(PSHLIBS)
247 set(PDS)
248
249endmacro(ALICE_ResetPackage)
250
251function(ALICE_SetPackageVariable _var ext setvalue unsetvalue )
252
253#DevNotes - setvalue and unsetcalue should both be put in quotes or cmake throws an error if they have undefined values
254 if(setvalue)
255 set(${_var} ${setvalue} PARENT_SCOPE)
256 set(${PACKAGE}${ext} ${setvalue} PARENT_SCOPE)
257 else()
258 set(${_var} ${unsetvalue} PARENT_SCOPE)
259 set(${PACKAGE}${ext} ${unsetvalue} PARENT_SCOPE)
260 endif(setvalue)
261
262endfunction(ALICE_SetPackageVariable)
263
264macro(ALICE_BuildPackage)
265
266 list(APPEND EINCLUDE STEER)
267
268 ALICE_SetPackageVariable(PFFLAGS "FFLAGS" "${PACKFFLAGS}" "${FFLAGS}")
269 ALICE_SetPackageVariable(PCFLAGS "CFLAGS" "${PACKCFLAGS}" "${CFLAGS}")
270 ALICE_SetPackageVariable(PCXXFLAGS "CXXFLAGS" "${PACKCXXFLAGS}" "${CXXFLAGS}")
271 ALICE_SetPackageVariable(PSOFLAGS "SOFLAGS" "${PACKSOFLAGS}" "${SOFLAGS}")
272 ALICE_SetPackageVariable(PLDFLAGS "LDFLAGS" "${PACKLDFLAGS}" "${LDFLAGS}")
273 ALICE_SetPackageVariable(PDCXXFLAGS "DCXXFLAGS" "${PACKDCXXFLAGS}" "${CXXFLAGSNO}")
274 ALICE_SetPackageVariable(PBLIBS "BLIBS" "${PACKBLIBS}" "${LIBS}")
275
276 set(WITHDICT)
277 if(DHDR OR CINTAUTOLINK)
278 set(WITHDICT TRUE)
279 endif(DHDR OR CINTAUTOLINK)
280
281 ALICE_SetPackageVariable(PEDEFINE "EDEFINE" "${EDEFINE}" "${EDEFINE}")
282 ALICE_SetPackageVariable(PEXPORT "EXPORT" "${EXPORT}" "${EXPORT}")
283 ALICE_SetPackageVariable(PEXPORTDEST "EXPORTDEST" "${CMAKE_INCLUDE_EXPORT_DIRECTORY}" "${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
284 ALICE_SetPackageVariable(PINC "INC" "${EINCLUDE};${MODULE}" "${EINCLUDE};${MODULE}")
285 ALICE_SetPackageVariable(PELIBS "ELIBS" "${ELIBS}" "${ELIBS}")
286 ALICE_SetPackageVariable(PELIBSDIR "ELIBSDIR" "${ELIBSDIR}" "${ELIBSDIR}")
287
288 ALICE_SetPackageVariable(PCS "CS" "${CSRCS}" "${CSRCS}")
289 ALICE_SetPackageVariable(PCH "CH" "${CHDRS}" "${CHDRS}")
290
291 ALICE_SetPackageVariable(PFS "FS" "${FSRCS}" "${FSRCS}")
292
293 ALICE_SetPackageVariable(PS "S" "${SRCS}" "${SRCS}")
294 ALICE_SetPackageVariable(PH "H" "${HDRS} ${EHDRS}" "${HDRS} ${EHDRS}")
295 ALICE_SetPackageVariable(PCINTHDRS "CINTHDRS" "${CINTHDRS}" "${PH}")
296
297 string( REPLACE ".h" "" PCINTCLASSES "${PCINTHDRS}")
298 set ( ${PACKAGE}CINTCLASSES ${PCINTCLASSES})
299
300 ALICE_SetPackageVariable(PDH "DH" "${DHDR}" "")
301
302 if(CINTAUTOLINK)
303 ALICE_SetPackageVariable(PDAL "DAL" "${CMAKE_CURRENT_BINARY_DIR}/G__${PACKAGE}AutoLinkDef.h" "${CMAKE_CURRENT_BINARY_DIR}/G__${PACKAGE}AutoLinkDef.h")
304 ALICE_SetPackageVariable(PDH "DH" "${PDAL}" "${PDAL}")
305 ALICE_GenerateLinkDef()
306 endif(CINTAUTOLINK)
307
308 if(lib)
45526b5e 309 list(APPEND PMLIBS ${PACKAGE})
6db31708 310 list(APPEND ALLLIBS ${PACKAGE})
529f129e 311 list(APPEND PMALIBS ${PACKAGE}-static)
312 list(APPEND ALLALIBS ${PACKAGE}-static)
6db31708 313 list(APPEND BINLIBS ${PACKAGE})
314 else()
315 list(APPEND ALLEXECS ${PACKAGE})
316 endif(lib)
45526b5e 317 set(${MODULE}ALIBS "${PMALIBS}" PARENT_SCOPE)
318 set(${MODULE}LIBS "${PMLIBS}" PARENT_SCOPE)
319 set(${MODULE}INC "${EINCLUDE}" PARENT_SCOPE)
6db31708 320 list(APPEND INCLUDEFILES ${PEXPORTDEST})
321 ALICE_CopyHeaders()
322 if(WITHDICT)
323 ALICE_SetPackageVariable(PDS "DS" "G__${PACKAGE}.cxx" "G__${PACKAGE}.cxx")
324 ALICE_GenerateDictionary()
325 else()
326 if(lib)
327 message(STATUS "No dictionary generated for ${PACKAGE}")
328 endif(lib)
329 endif(WITHDICT)
6db31708 330 if(PS OR PCS OR PFS)
331 if(lib)
332 ALICE_BuildLibrary()
333 elseif(bin)
334 ALICE_BuildExecutable()
335 endif(lib)
336 endif(PS OR PCS OR PFS)
c2a2c0b8 337 ALICE_CheckModule()
6db31708 338
339endmacro(ALICE_BuildPackage)
340
341
342macro(ALICE_BuildModule)
343
344 add_definitions(-D_MODULE="${MODULE}")
345 foreach(PACKAGEFILE ${PACKAGES})
346 set(lib)
347 set(bin)
348 string(REGEX MATCH "CMakelib" lib ${PACKAGEFILE})
349 string(REGEX MATCH "CMakebin" bin ${PACKAGEFILE})
350 get_filename_component(PACKAGE ${PACKAGEFILE} NAME)
351 string(REGEX REPLACE "^CMake(lib|bin)(.*)\\.pkg" "\\2" PACKAGE ${PACKAGE})
352 if(ALICEDEV)
353 message("Adding package ${PACKAGE} in ${MODULE}")
354 endif(ALICEDEV)
355 ALICE_ResetPackage()
356 include(${PACKAGEFILE})
357 ALICE_BuildPackage()
358
359 get_property(EXCLUDEPACKAGE TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL)
360 if(NOT EXCLUDEPACKAGE)
361 install(TARGETS ${PACKAGE}
362 RUNTIME DESTINATION bin
363 LIBRARY DESTINATION lib
364 ARCHIVE DESTINATION bin)
365 endif(NOT EXCLUDEPACKAGE)
366 endforeach(PACKAGEFILE)
367
368endmacro(ALICE_BuildModule)
369
370macro(ALICE_GenerateDictionary)
371
372 if(ALICEDEV STREQUAL "YES")
373 message("Generating Dictionary rule for ${PACKAGE}")
374 message("${ROOTCINT} -f ${PDS} -c ${PEDEFINE} ${CINTFLAGS} ${PINC} ${PCINTHDRS} ${PDH}")
375 endif(ALICEDEV STREQUAL "YES")
376
377 # Split up all arguments
378
379 set(DEDEFINE ${PEDEFINE})
380 set(DCINTFLAGS ${CINTFLAGS})
381 set(DINC ${PINC})
382 set(DCINTHDRS ${PCINTHDRS})
383 set(DDH ${PDH})
384 separate_arguments(DEDEFINE)
385 separate_arguments(DCINTFLAGS)
386 separate_arguments(DINC)
387 separate_arguments(DCINTHDRS)
388 separate_arguments(DDH)
389 # Format neccesary arguments
390 ALICE_Format(DINC "-I" "" "${DINC};${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
391 set_source_files_properties(${PDS} PROPERTIES GENERATED TRUE)
392 add_custom_command(OUTPUT ${PDS}
393 COMMAND cd ${PROJECT_SOURCE_DIR} && ${ROOTCINT} -f ${CMAKE_CURRENT_BINARY_DIR}/${PDS} -c -D_MODULE=\\\"${MODULE}\\\" ${DEDEFINE} ${DCINTFLAGS} ${DINC} ${DCINTHDRS} ${DDH}
394 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
395 DEPENDS ${DCINTHDRS} ${DDH}
396 )
397 add_custom_target(G${PACKAGE})
398 add_dependencies(G${PACKAGE} ${PDS})
399
400endmacro(ALICE_GenerateDictionary)
401
402macro(ALICE_BuildLibrary)
403
404 ALICE_DevFlagsOutput()
405 set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS}")
406 set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS}")
407 set(CMAKE_Fortran_FLAGS ${PEDEFINE} ${PFFLAGS})
408 set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS})
409 set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
410
411
412 separate_arguments(PINC)
413 separate_arguments(EINCLUDE)
414 separate_arguments(PELIBSDIR)
415 separate_arguments(PBLIBS)
416 separate_arguments(PELIBS)
417 separate_arguments(SHLIB)
418
419 ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}")
420 ALICE_CheckLibraries(PBLIBS "${PBLIBS}")
421 ALICE_CheckLibraries(PELIBS "${PELIBS}")
422
423 ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}")
424 ALICE_CorrectPaths(PINC "${PINC}")
425
426 include_directories(SYSTEM ${ROOTINCDIR})
427 include_directories(${PINC})
428 include_directories(${EINCLUDE})
429 include_directories(${CMAKE_INCLUDE_EXPORT_DIRECTORY})
430
431 add_library(${PACKAGE} SHARED ${PCS} ${PFS} ${PS} ${PDS})
432
433
434 if(PELIBS OR SHLIB)
435 target_link_libraries(${PACKAGE} ${PELIBSDIR} ${PELIBS} ${SHLIB})
436 endif(PELIBS OR SHLIB)
437
438 add_dependencies(${MODULE}-all ${PACKAGE})
439
529f129e 440 add_library(${PACKAGE}-static STATIC EXCLUDE_FROM_ALL ${PCS} ${PFS} ${PS} ${PDS})
441 set_target_properties(${PACKAGE}-static PROPERTIES OUTPUT_NAME ${PACKAGE})
6db31708 442 if(PELIBS OR ALLIB)
529f129e 443 target_link_libraries(${PACKAGE}-static ${PELIBSDIR} ${PELIBS} ${ALLIB})
6db31708 444 endif(PELIBS OR ALLIB)
445
529f129e 446 add_dependencies(${MODULE}-all-static ${PACKAGE}-static)
6db31708 447 if(ALIPROFILE STREQUAL "YES")
448 add_dependencies(${MODULE}-all ${MODULE}-static)
449 endif(ALIPROFILE STREQUAL "YES")
450
451 list(FIND EXCLUDEMODULES ${MODULE} RESULT)
452 if(NOT RESULT STREQUAL "-1")
453 message(STATUS "${MODULE} will not be built by default. Type make ${MODULE}-all to build.")
454 set_property(TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL TRUE)
455 endif(NOT RESULT STREQUAL "-1")
456
457endmacro(ALICE_BuildLibrary)
458
459macro(ALICE_BuildExecutable)
460
461 ALICE_DevFlagsOutput()
462 set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS} ${EXEFLAGS}")
463 set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS} ${EXEFLAGS}")
464 set(CMAKE_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS} ${EXEFLAGS}")
465 set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS})
466 set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
467
468 separate_arguments(PINC)
469 separate_arguments(EINCLUDE)
470 separate_arguments(PELIBSDIR)
471 separate_arguments(PBLIBS)
472 separate_arguments(PELIBS)
473 separate_arguments(SHLIB)
474
475 ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}")
476 ALICE_CheckLibraries(PBLIBS "${PBLIBS}")
477 #ALICE_CheckLibraries(PELIBS "${PELIBS}")
478
479 ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}")
480 ALICE_CorrectPaths(PINC "${PINC}")
481
482 include_directories(SYSTEM ${ROOTINCDIR})
483 include_directories(${PINC})
484 include_directories(${EINCLUDE})
485 include_directories(${CMAKE_INCLUDE_EXPORT_DIRECTORY})
486
487 if(ALIPROFILE STREQUAL "YES")
488 add_executable(${PACKAGE} ${PFS} ${PCS} ${PS} ${PDS})
489 if(ARLIBS OR SHLIBS OR PBLIBS OR EXEFLAGS)
490 target_link_libraries(${PACKAGE} ${ARLIBS} ${SHLIBS} ${PBLIBS} ${EXEFLAGS})
491 endif(ARLIBS OR SHLIBS OR PBLIBS OR EXEFLAGS)
492 add_dependencies(${MODULE}-all ${PACKAGE})
493 else()
494 add_executable(${PACKAGE} ${PFS} ${PCS} ${PS} ${PDS})
495 if(PELIBS OR PBLIBS OR EXEFLAGS)
496 target_link_libraries(${PACKAGE} ${BINLIBDIRS} ${PELIBSDIR} ${PELIBS} ${PBLIBS} ${EXEFLAGS})
497 endif(PELIBS OR PBLIBS OR EXEFLAGS)
498 add_dependencies(${MODULE}-all ${PACKAGE})
499 endif(ALIPROFILE STREQUAL "YES")
500
7531a2ac 501# AliMDC
502# ------------------------------
0742852a 503 if(PACKAGE STREQUAL "alimdc" AND GENERATEPACKAGES)
7531a2ac 504
0742852a 505 add_executable(${PACKAGE}-static ${PFS} ${PCS} ${PS} ${PDS})
7531a2ac 506 set_target_properties(${PACKAGE}-static PROPERTIES OUTPUT_NAME alimdca)
507 add_custom_target( libAliMDC
508 COMMAND rm -rf ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a
509 COMMAND rm -rf junkmdc
510 COMMAND mkdir junkmdc && cd junkmdc && ar x ../libRAWDatabase.a && ar x ../libMDC.a && ar x ../libESD.a && ar x ../libSTEERBase.a && ar r ../libAliMDC.a *.o && cd .. && rm -rf junkmdc
7531a2ac 511 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
dad683d0 512 add_custom_target( root-static-libs
513 COMMAND make static
514 WORKING_DIRECTORY ${ROOTSYS} )
515
7531a2ac 516 add_dependencies(libAliMDC RAWDatabase-static STEERBase-static MDC-static ESD-static)
dad683d0 517 add_dependencies(${PACKAGE}-static libAliMDC root-static-libs)
7531a2ac 518 target_link_libraries(${PACKAGE}-static ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a ${ROOTLIBDIR}/libRoot.a ${ROOTLIBDIR}/libfreetype.a ${ROOTLIBDIR}/libpcre.a -pthread -ldl -lcurses)
7531a2ac 519
0742852a 520 install(TARGETS ${PACKAGE}-static RUNTIME DESTINATION bin COMPONENT MDC)
521 install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a ${ROOTLIBDIR}/libRoot.a ${ROOTLIBDIR}/libfreetype.a ${ROOTLIBDIR}/libpcre.a DESTINATION lib COMPONENT MDC)
522 install(FILES ${PROJECT_SOURCE_DIR}/RAW/mdc.h DESTINATION include COMPONENT MDC)
523 set(CPACK_RPM_PACKAGE_SUMMARY "AliMDC static libraries")
524 set(CPACK_RPM_PACKAGE_NAME "alimdc")
525 set(CPACK_RPM_PACKAGE_VERSION "${ALIMDCVERSION}")
526 set(CPACK_RPM_PACKAGE_RELEASE "${ALIMDCRELEASE}")
527 set(CPACK_RPM_PACKAGE_LICENSE "Copyright: CERN ALICE Off-line Group")
528 set(CPACK_RPM_PACKAGE_VENDOR "ALICE Core Off-line Group")
529 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AliMDC static libraries")
530 set(CPACK_RPM_PACKAGE_GROUP "Applications/Alice")
531 set(CPACK_RPM_PACKAGE_REQUIRES "glibc")
532 set(CPACK_PACKAGE_VERSION "1.0.0")
533 set(CPACK_PACKAGE_VERSION_MAJOR "1")
534 set(CPACK_PACKAGE_VERSION_MINOR "0")
535 set(CPACK_PACKAGE_VERSION_PATCH "0")
536 set(CPACK_PACKAGE_INSTALL_DIRECTORY "/opt/")
537 add_component_package(MDC alimdc-rpm)
538
539 endif(PACKAGE STREQUAL "alimdc" AND GENERATEPACKAGES)
7531a2ac 540
6db31708 541 list(FIND EXCLUDEMODULES ${MODULE} RESULT)
542 if(NOT RESULT STREQUAL "-1")
543 set_property(TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL TRUE)
544 endif(NOT RESULT STREQUAL "-1")
545
546endmacro(ALICE_BuildExecutable)
547
548macro(ALICE_CopyHeaders)
549
550 if(NOT EXPORT )
551 set(HEADERS)
552 else()
553 set(HEADERS ${EXPORT})
554 endif(NOT EXPORT)
555 foreach(header ${HEADERS})
556 configure_file(${header} ${PEXPORTDEST} COPYONLY)
557 install(FILES ${header} DESTINATION include)
558 endforeach(header)
559
560endmacro(ALICE_CopyHeaders)
561
562macro(ALICE_GenerateLinkDef)
563
564 file (WRITE ${PDAL} "//--------------------------------------------------------------------------------\n")
565 file (APPEND ${PDAL} "// This is an automatically generated Root Dictionary Linkdef file for ${PACKAGE}\n")
566 file (APPEND ${PDAL} "// !!! DO NOT EDIT THIS FILE !!!\n")
567 file (APPEND ${PDAL} "#ifdef __CINT__\n")
568 file (APPEND ${PDAL} "#pragma link off all globals;\n")
569 file (APPEND ${PDAL} "#pragma link off all classes;\n")
570 file (APPEND ${PDAL} "#pragma link off all functions;\n")
571 foreach (class ${PCINTCLASSES})
572 get_filename_component(classname ${class} NAME)
573 file(APPEND ${PDAL} "#pragma link C++ class ${classname}+;\n")
574 endforeach(class)
575 file (APPEND ${PDAL} "#endif\n")
576endmacro(ALICE_GenerateLinkDef)
0742852a 577
578