3 # AliRoot Build System Utility Macro and Function definitions
5 # Author: Johny Jose (johny.jose@cern.ch)
6 # Port of previous Makefile build to cmake
8 cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
10 macro(ALICE_DevFlagsOutput)
12 if(ALICEDEV STREQUAL "YES")
13 message(STATUS "FFLAGS : ${FFLAGS}")
14 message(STATUS "CXXFLAGS : ${CXXFLAGS}")
15 message(STATUS "CFLAGS : ${CFLAGS}")
16 message(STATUS "SOFLAGS : ${SOFLAGS}")
17 message(STATUS "LDFLAGS : ${LDFLAGS}")
18 message(STATUS "SHLIB : ${SHLIB}")
19 message(STATUS "SYSLIBS : ${SYSLIBS}")
20 message(STATUS "CINTFLAGS : ${CINTFLAGS}")
21 endif(ALICEDEV STREQUAL "YES")
23 endmacro(ALICE_DevFlagsOutput)
25 function(ALICE_CleanOutput _output input)
27 string(REGEX REPLACE "\n" " " clean "${input}")
28 set(${_output} ${clean} PARENT_SCOPE)
30 endfunction(ALICE_CleanOutput)
32 function(ALICE_CorrectPaths _output value )
35 foreach(path ${value})
37 string(REGEX MATCH "^/" external "${path}")
39 list(APPEND corrected "${CMAKE_SOURCE_DIR}/${path}" )
41 list(APPEND corrected "${path}")
44 set(${_output} ${corrected} PARENT_SCOPE)
46 endfunction(ALICE_CorrectPaths)
48 function(ALICE_Format _output prefix suffix input)
50 # DevNotes - input should be put in quotes or the complete list does not get passed to the function
55 string(REGEX MATCH "^${prefix}" pre "${arg}")
58 string(REGEX MATCH "${suffix}$" suf "${arg}")
61 set(item "${prefix}${item}")
64 set(item "${item}${suffix}")
66 list(APPEND format ${item})
68 set(${_output} ${format} PARENT_SCOPE)
70 endfunction(ALICE_Format)
72 function(ALICE_CheckLibraries _output input)
77 string(REGEX MATCH "^(/|-)" preformatted "${item}")
80 endif(NOT preformatted)
81 list(APPEND format ${item})
83 set(${_output} ${format} PARENT_SCOPE)
85 endfunction(ALICE_CheckLibraries)
87 function(ALICE_RootConfig _output parameters)
90 execute_process(COMMAND ${ROOT_CONFIG} ${parameters} OUTPUT_VARIABLE result ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
92 message(FATAL_ERROR "root-config ERROR : ${error}")
94 ALICE_CleanOutput(result "${result}")
95 set(${_output} "${result}" PARENT_SCOPE)
97 message(FATAL_ERROR "root-config not found")
100 endfunction(ALICE_RootConfig)
102 macro(ALICE_CheckOutOfSourceBuild)
104 #Check if previous in-source build failed
105 if(EXISTS ${CMAKE_SOURCE_DIR}/CMakeCache.txt OR EXISTS ${CMAKE_SOURCE_DIR}/CMakeFiles)
106 message(FATAL_ERROR "CMakeCache.txt or CMakeFiles exists in source directory! Please remove them before running cmake $ALICE_ROOT")
107 endif(EXISTS ${CMAKE_SOURCE_DIR}/CMakeCache.txt OR EXISTS ${CMAKE_SOURCE_DIR}/CMakeFiles)
109 #Get Real Paths of the source and binary directories
110 get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH)
111 get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH)
113 #Check for in-source builds
114 if(${srcdir} STREQUAL ${bindir})
115 message(FATAL_ERROR "AliRoot cannot be built in-source! Please run cmake $ALICE_ROOT outside the source directory")
116 endif(${srcdir} STREQUAL ${bindir})
118 endmacro(ALICE_CheckOutOfSourceBuild)
120 macro(ALICE_ConfigureCompiler)
122 if(ALIPROFILE STREQUAL "YES")
123 set(ALICE_TARGET ${ALICE_TARGET}PROF)
124 set(FFLAGS "-pg ${FFLAGS}")
125 set(CXXFLAGS "-pg ${CXXFLAGS}")
126 set(CFLAGS "-pg ${CFLAGS}")
127 set(SOFLAGS "-pg ${SOFLAGS}")
128 set(LDFLAGS "-pg ${LDFLAGS}")
129 endif(ALIPROFILE STREQUAL "YES")
131 ALICE_RootConfig(RCFLAGS --auxcflags)
132 ALICE_RootConfig(RLFLAGS --ldflags)
134 set(CXXFLAGS "${CXXFLAGS} ${RCFLAGS}")
135 set(CFLAGS "${CFLAGS} ${RCFLAGS}")
136 set(SOFLAGS "${SOFLAGS} ${RLFLAGS}")
137 set(LDFLAGS "${LDFLAGS} ${RLFLAGS}")
139 if(NOT ALICXXWARN STREQUAL "NO")
140 set(CXXFLAGS "${CXXFLAGS} ${CXXWARN}")
141 endif(NOT ALICXXWARN STREQUAL "NO")
143 set(CXXFLAGS "${DATEFLAGS} ${CXXFLAGS}")
144 set(CFLAGS "${DATEFLAGS} ${CFLAGS}")
145 set(CINTFLAGS "${DATEFLAGS}")
147 endmacro(ALICE_ConfigureCompiler)
149 macro(ALICE_ConfigurePlatform)
152 include("CMake${ALICE_TARGET}")
154 endmacro(ALICE_ConfigurePlatform)
156 macro(ALICE_GetTarget)
158 #Set ALICE_TARGET if it has not been set yet
160 set(ALICE_TARGET $ENV{ALICE_TARGET})
161 #If ALICE_TARGET is not defined assign default values
163 message(WARNING "Environment variable ALICE_TARGET is not set ! Setting to default value.")
164 ALICE_RootConfig(ALICE_TARGET --arch)
165 message("ALICE_TARGET set to ${ALICE_TARGET}")
166 endif(NOT ALICE_TARGET)
167 endif(NOT ALICE_TARGET)
169 endmacro(ALICE_GetTarget)
171 macro(ALICE_ResetPackage)
173 set(MODDIR ${MODULE})
174 set(MODDIRI ${PROJECT_SOURCE_DIR}/${MODULE})
235 endmacro(ALICE_ResetPackage)
237 function(ALICE_SetPackageVariable _var ext setvalue unsetvalue )
239 #DevNotes - setvalue and unsetcalue should both be put in quotes or cmake throws an error if they have undefined values
241 set(${_var} ${setvalue} PARENT_SCOPE)
242 set(${PACKAGE}${ext} ${setvalue} PARENT_SCOPE)
244 set(${_var} ${unsetvalue} PARENT_SCOPE)
245 set(${PACKAGE}${ext} ${unsetvalue} PARENT_SCOPE)
248 endfunction(ALICE_SetPackageVariable)
250 macro(ALICE_BuildPackage)
252 list(APPEND EINCLUDE STEER)
254 ALICE_SetPackageVariable(PFFLAGS "FFLAGS" "${PACKFFLAGS}" "${FFLAGS}")
255 ALICE_SetPackageVariable(PCFLAGS "CFLAGS" "${PACKCFLAGS}" "${CFLAGS}")
256 ALICE_SetPackageVariable(PCXXFLAGS "CXXFLAGS" "${PACKCXXFLAGS}" "${CXXFLAGS}")
257 ALICE_SetPackageVariable(PSOFLAGS "SOFLAGS" "${PACKSOFLAGS}" "${SOFLAGS}")
258 ALICE_SetPackageVariable(PLDFLAGS "LDFLAGS" "${PACKLDFLAGS}" "${LDFLAGS}")
259 ALICE_SetPackageVariable(PDCXXFLAGS "DCXXFLAGS" "${PACKDCXXFLAGS}" "${CXXFLAGSNO}")
260 ALICE_SetPackageVariable(PBLIBS "BLIBS" "${PACKBLIBS}" "${LIBS}")
263 if(DHDR OR CINTAUTOLINK)
265 endif(DHDR OR CINTAUTOLINK)
267 ALICE_SetPackageVariable(PEDEFINE "EDEFINE" "${EDEFINE}" "${EDEFINE}")
268 ALICE_SetPackageVariable(PEXPORT "EXPORT" "${EXPORT}" "${EXPORT}")
269 # message(${CMAKE_INCLUDE_EXPORT_DIRECTORY})
270 ALICE_SetPackageVariable(PEXPORTDEST "EXPORTDEST" "${CMAKE_INCLUDE_EXPORT_DIRECTORY}" "${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
271 ALICE_SetPackageVariable(PINC "INC" "${EINCLUDE};${MODULE}" "${EINCLUDE};${MODULE}")
272 ALICE_SetPackageVariable(PELIBS "ELIBS" "${ELIBS}" "${ELIBS}")
273 ALICE_SetPackageVariable(PELIBSDIR "ELIBSDIR" "${ELIBSDIR}" "${ELIBSDIR}")
275 ALICE_SetPackageVariable(PCS "CS" "${CSRCS}" "${CSRCS}")
276 ALICE_SetPackageVariable(PCH "CH" "${CHDRS}" "${CHDRS}")
278 ALICE_SetPackageVariable(PFS "FS" "${FSRCS}" "${FSRCS}")
280 ALICE_SetPackageVariable(PS "S" "${SRCS}" "${SRCS}")
281 ALICE_SetPackageVariable(PH "H" "${HDRS} ${EHDRS}" "${HDRS} ${EHDRS}")
282 ALICE_SetPackageVariable(PCINTHDRS "CINTHDRS" "${CINTHDRS}" "${PH}")
284 string( REPLACE ".h" "" PCINTCLASSES "${PCINTHDRS}")
285 set ( ${PACKAGE}CINTCLASSES ${PCINTCLASSES})
287 ALICE_SetPackageVariable(PDH "DH" "${DHDR}" "")
290 ALICE_SetPackageVariable(PDAL "DAL" "${CMAKE_CURRENT_BINARY_DIR}/G__${PACKAGE}AutoLinkDef.h" "${CMAKE_CURRENT_BINARY_DIR}/G__${PACKAGE}AutoLinkDef.h")
291 ALICE_SetPackageVariable(PDH "DH" "${PDAL}" "${PDAL}")
292 ALICE_GenerateLinkDef()
296 list(APPEND PMLIBS ${PACKAGE})
297 list(APPEND ALLLIBS ${PACKAGE})
298 list(APPEND PMALIBS ${PACKAGE}-static)
299 list(APPEND ALLALIBS ${PACKAGE}-static)
300 list(APPEND BINLIBS ${PACKAGE})
302 list(APPEND ALLEXECS ${PACKAGE})
304 set(${MODULE}ALIBS "${PMALIBS}" PARENT_SCOPE)
305 set(${MODULE}LIBS "${PMLIBS}" PARENT_SCOPE)
306 set(${MODULE}INC "${EINCLUDE}" PARENT_SCOPE)
307 list(APPEND INCLUDEFILES ${PEXPORTDEST})
309 ALICE_SetPackageVariable(PDS "DS" "G__${PACKAGE}.cxx" "G__${PACKAGE}.cxx")
310 ALICE_GenerateDictionary()
313 message(STATUS "No dictionary generated for ${PACKAGE}")
320 ALICE_BuildExecutable()
322 endif(PS OR PCS OR PFS)
326 endmacro(ALICE_BuildPackage)
329 macro(ALICE_BuildModule)
331 add_definitions(-D_MODULE_="${MODULE}")
332 foreach(PACKAGEFILE ${PACKAGES})
335 string(REGEX MATCH "CMakelib" lib "${PACKAGEFILE}")
336 string(REGEX MATCH "CMakebin" bin "${PACKAGEFILE}")
337 get_filename_component(PACKAGE ${PACKAGEFILE} NAME)
338 string(REGEX REPLACE "^CMake(lib|bin)(.*)\\.pkg" "\\2" PACKAGE "${PACKAGE}")
340 message("Adding package ${PACKAGE} in ${MODULE}")
343 include(${PACKAGEFILE})
346 get_property(EXCLUDEPACKAGE TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL)
347 if(NOT EXCLUDEPACKAGE)
348 install(TARGETS ${PACKAGE}
349 RUNTIME DESTINATION bin/tgt_${ALICE_TARGET}
350 LIBRARY DESTINATION lib/tgt_${ALICE_TARGET}
351 ARCHIVE DESTINATION bin/tgt_${ALICE_TARGET})
352 endif(NOT EXCLUDEPACKAGE)
353 endforeach(PACKAGEFILE)
355 endmacro(ALICE_BuildModule)
357 macro(ALICE_GenerateDictionary)
359 if(ALICEDEV STREQUAL "YES")
360 message("Generating Dictionary rule for ${PACKAGE}")
361 message("${ROOTCINT} -f ${PDS} -c ${PEDEFINE} ${CINTFLAGS} ${PINC} ${PCINTHDRS} ${PDH}")
362 endif(ALICEDEV STREQUAL "YES")
364 # Split up all arguments
366 set(DEDEFINE ${PEDEFINE})
367 set(DCINTFLAGS ${CINTFLAGS})
369 set(DCINTHDRS ${PCINTHDRS})
371 separate_arguments(DEDEFINE)
372 separate_arguments(DCINTFLAGS)
373 separate_arguments(DINC)
374 separate_arguments(DCINTHDRS)
375 separate_arguments(DDH)
376 # Format neccesary arguments
377 ALICE_Format(DINC "-I" "" "${DINC};${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
378 set_source_files_properties(${PDS} PROPERTIES GENERATED TRUE)
379 set_source_files_properties(${PDS} PROPERTIES COMPILE_FLAGS "-w")
380 add_custom_command(OUTPUT ${PDS}
381 COMMAND cd ${PROJECT_SOURCE_DIR} && ${ROOTCINT} -f ${CMAKE_CURRENT_BINARY_DIR}/${PDS} -c -D_MODULE=\\\"${MODULE}\\\" ${DEDEFINE} ${DCINTFLAGS} ${DINC} ${DCINTHDRS} ${DDH}
382 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
383 DEPENDS ${DCINTHDRS} ${DDH}
385 add_custom_target(G${PACKAGE})
386 add_dependencies(G${PACKAGE} ${PDS})
388 endmacro(ALICE_GenerateDictionary)
390 macro(ALICE_BuildLibrary)
392 ALICE_DevFlagsOutput()
393 set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS}")
394 set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS}")
395 set(CMAKE_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS}")
396 set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS})
397 set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
400 separate_arguments(PINC)
401 separate_arguments(EINCLUDE)
402 separate_arguments(PELIBSDIR)
403 separate_arguments(PBLIBS)
404 separate_arguments(PELIBS)
405 separate_arguments(SHLIB)
407 ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}")
408 ALICE_CheckLibraries(PBLIBS "${PBLIBS}")
410 ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}")
411 ALICE_CorrectPaths(PINC "${PINC}")
413 include_directories(SYSTEM ${ROOTINCDIR})
414 include_directories(${PINC})
415 include_directories(${EINCLUDE})
416 include_directories(${CMAKE_INCLUDE_EXPORT_DIRECTORY})
418 add_library(${PACKAGE} SHARED ${PCS} ${PFS} ${PS} ${PDS})
419 set_target_properties(${PACKAGE} PROPERTIES SUFFIX .so)
423 target_link_libraries(${PACKAGE} ${PELIBSDIR} ${PELIBS} ${SHLIB})
424 endif(PELIBS OR SHLIB)
426 add_dependencies(${MODULE}-all ${PACKAGE})
428 add_library(${PACKAGE}-static STATIC EXCLUDE_FROM_ALL ${PCS} ${PFS} ${PS} ${PDS})
429 set_target_properties(${PACKAGE}-static PROPERTIES OUTPUT_NAME ${PACKAGE})
431 target_link_libraries(${PACKAGE}-static ${PELIBSDIR} ${PELIBS} ${ALLIB})
432 endif(PELIBS OR ALLIB)
434 add_dependencies(${MODULE}-all-static ${PACKAGE}-static)
435 if(ALIPROFILE STREQUAL "YES")
436 add_dependencies(${MODULE}-all ${MODULE}-static)
437 endif(ALIPROFILE STREQUAL "YES")
439 list(FIND EXCLUDEMODULES ${MODULE} RESULT)
440 if(NOT RESULT STREQUAL "-1")
441 message(STATUS "${MODULE} will not be built by default. Type make ${MODULE}-all to build.")
442 set_property(TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL TRUE)
443 endif(NOT RESULT STREQUAL "-1")
445 set_target_properties(${PACKAGE} PROPERTIES INSTALL_NAME_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
447 endmacro(ALICE_BuildLibrary)
449 macro(ALICE_BuildExecutable)
451 ALICE_DevFlagsOutput()
452 set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS} ${EXEFLAGS}")
453 set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS} ${EXEFLAGS}")
454 set(CMAKE_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS} ${EXEFLAGS}")
455 set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS})
456 set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
458 separate_arguments(PINC)
459 separate_arguments(EINCLUDE)
460 separate_arguments(PELIBSDIR)
461 separate_arguments(PBLIBS)
462 separate_arguments(PELIBS)
463 separate_arguments(SHLIB)
465 ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}")
466 ALICE_CheckLibraries(PBLIBS "${PBLIBS}")
468 ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}")
469 ALICE_CorrectPaths(PINC "${PINC}")
471 include_directories(SYSTEM ${ROOTINCDIR})
472 include_directories(${PINC})
473 include_directories(${EINCLUDE})
474 include_directories(${CMAKE_INCLUDE_EXPORT_DIRECTORY})
476 if(ALIPROFILE STREQUAL "YES")
477 add_executable(${PACKAGE} ${PFS} ${PCS} ${PS} ${PDS})
478 if(ARLIBS OR SHLIBS OR PBLIBS OR EXEFLAGS)
479 target_link_libraries(${PACKAGE} ${ARLIBS} ${SHLIBS} ${PBLIBS} ${EXEFLAGS})
480 endif(ARLIBS OR SHLIBS OR PBLIBS OR EXEFLAGS)
481 add_dependencies(${MODULE}-all ${PACKAGE})
483 add_executable(${PACKAGE} ${PFS} ${PCS} ${PS} ${PDS})
484 if(PELIBS OR PBLIBS OR EXEFLAGS)
485 target_link_libraries(${PACKAGE} ${BINLIBDIRS} ${PELIBSDIR} ${PELIBS} ${PBLIBS} ${EXEFLAGS})
486 endif(PELIBS OR PBLIBS OR EXEFLAGS)
487 add_dependencies(${MODULE}-all ${PACKAGE})
488 endif(ALIPROFILE STREQUAL "YES")
491 # ------------------------------
492 if(PACKAGE STREQUAL "alimdc" AND GENERATEPACKAGES)
494 add_executable(${PACKAGE}-static ${PFS} ${PCS} ${PS} ${PDS})
495 set_target_properties(${PACKAGE}-static PROPERTIES OUTPUT_NAME alimdca)
496 add_custom_target( libAliMDC
497 COMMAND rm -rf ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a
498 COMMAND rm -rf junkmdc
499 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
500 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
501 add_custom_target( root-static-libs
503 WORKING_DIRECTORY ${ROOTSYS} )
505 add_dependencies(libAliMDC RAWDatabase-static STEERBase-static MDC-static ESD-static)
506 add_dependencies(${PACKAGE}-static libAliMDC root-static-libs)
507 target_link_libraries(${PACKAGE}-static ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a ${ROOTLIBDIR}/libRoot.a ${ROOTLIBDIR}/libfreetype.a ${ROOTLIBDIR}/libpcre.a -pthread -ldl -lcurses)
509 install(TARGETS ${PACKAGE}-static RUNTIME DESTINATION bin/tgt_${ALICE_TARGET} COMPONENT MDC)
510 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/tgt_${ALICE_TARGET} COMPONENT MDC)
511 install(FILES ${PROJECT_SOURCE_DIR}/RAW/mdc.h DESTINATION include COMPONENT MDC)
512 set(CPACK_RPM_PACKAGE_SUMMARY "AliMDC static libraries")
513 set(CPACK_RPM_PACKAGE_NAME "alimdc")
514 set(CPACK_RPM_PACKAGE_VERSION "${ALIMDCVERSION}")
515 set(CPACK_RPM_PACKAGE_RELEASE "${ALIMDCRELEASE}")
516 set(CPACK_RPM_PACKAGE_LICENSE "License: CERN ALICE Off-line Group")
517 set(CPACK_RPM_PACKAGE_VENDOR "ALICE Core Off-line Group")
518 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AliMDC static libraries")
519 set(CPACK_RPM_PACKAGE_GROUP "Applications/Alice")
520 set(CPACK_RPM_PACKAGE_REQUIRES "glibc")
521 set(CPACK_PACKAGE_VERSION "1.0.0")
522 set(CPACK_PACKAGE_VERSION_MAJOR "1")
523 set(CPACK_PACKAGE_VERSION_MINOR "0")
524 set(CPACK_PACKAGE_VERSION_PATCH "0")
525 set(CPACK_PACKAGE_INSTALL_DIRECTORY "/opt/")
526 add_component_package(MDC alimdc-rpm)
528 endif(PACKAGE STREQUAL "alimdc" AND GENERATEPACKAGES)
530 list(FIND EXCLUDEMODULES ${MODULE} RESULT)
531 if(NOT RESULT STREQUAL "-1")
532 set_property(TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL TRUE)
533 endif(NOT RESULT STREQUAL "-1")
535 endmacro(ALICE_BuildExecutable)
537 macro(ALICE_CopyHeaders)
540 set(HEADERS ${EXPORT})
542 foreach(header ${HEADERS})
543 get_filename_component( header_name ${header} NAME )
544 add_custom_command(OUTPUT ${PEXPORTDEST}/${header_name}
545 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${MODULE}/${header} ${PEXPORTDEST}/${header_name}
546 DEPENDS ${CMAKE_SOURCE_DIR}/${MODULE}/${header})
547 list(APPEND _headersdep ${PEXPORTDEST}/${header_name})
548 install(FILES ${header} DESTINATION include)
550 add_custom_target(${PACKAGE}-headers DEPENDS ${_headersdep})
551 add_dependencies(${PACKAGE} ${PACKAGE}-headers)
554 endmacro(ALICE_CopyHeaders)
556 macro(ALICE_GenerateLinkDef)
558 foreach (class ${PCINTCLASSES})
559 get_filename_component(classname ${class} NAME)
560 # set(PCLASSES ${PCLASSES} "\\n#pragma link C++ class ${classname}+;")
561 set(PCLASSES ${PCLASSES} "${classname}")
564 add_custom_command(OUTPUT ${PDAL}
565 COMMAND sh ${CMAKE_SOURCE_DIR}/cmake/GenerateLinkDef.sh ${PCLASSES} > ${PDAL}
566 DEPENDS ${PCINTHDRS} ${CMAKE_SOURCE_DIR}/cmake/GenerateLinkDef.sh)
567 endmacro(ALICE_GenerateLinkDef)
569 macro(ALICE_BuildPAR)
571 if(EXISTS ${CMAKE_SOURCE_DIR}/${MODULE}/PROOF-INF.${PACKAGE})
573 foreach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR})
574 get_filename_component(srcdir ${file} PATH)
575 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file}-par
576 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${srcdir}
577 COMMAND cp -pR ${file} ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file}
578 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
579 list(APPEND PARSRCS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file}-par)
580 endforeach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR})
582 add_custom_target(${PACKAGE}.par
583 COMMAND sed -e 's/include .\(ROOTSYS\)\\/test\\/Makefile.arch/include Makefile.arch/\; s/PACKAGE = .*/PACKAGE = ${PACKAGE}/\; s,SRCS *=.*,SRCS = ${SRCS},\;' < Makefile | sed -e 's,HDRS *=.*,HDRS = ${HDRS},\; s,FSRCS *=.*,FSRCS = ${FSRCS},\; s,DHDR *=.*,DHDR = ${DHDR},' > ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile
584 COMMAND cp -pR ${ROOTSYS}/test/Makefile.arch ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile.arch
585 COMMAND cp -pR PROOF-INF.${PACKAGE} ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/PROOF-INF
586 # COMMAND cp -pR lib${PACKAGE}.pkg ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}
587 COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_BINARY_DIR} tar --exclude=.svn -czhf ${CMAKE_BINARY_DIR}/${PACKAGE}.par ${PACKAGE}
588 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}
589 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red --bold "${PACKAGE}.par has been created in ${CMAKE_BINARY_DIR}"
591 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
594 add_dependencies(${PACKAGE}.par ${SRCS} ${FSRCS} ${HDRS} ${DHDR})
595 add_dependencies(par-all ${PACKAGE}.par)
596 add_dependencies(${MODULE}-par-all ${PACKAGE}.par)
598 add_custom_target(test-${PACKAGE}.par
599 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red --bold "The file ${PACKAGE}.par is now being tested, in case of an error check in par-tmp/${PACKAGE}."
600 COMMAND ${CMAKE_COMMAND} -E make_directory par-tmp
601 COMMAND ${CMAKE_COMMAND} -E chdir par-tmp tar xfz ../${PACKAGE}.par && ${CMAKE_COMMAND} -E chdir par-tmp/${PACKAGE} PROOF-INF/BUILD.sh
602 COMMAND ${CMAKE_COMMAND} -E remove_directory par-tmp
603 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green --bold "${PACKAGE}.par testing succeeded"
604 WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
606 add_dependencies(test-${PACKAGE}.par ${PACKAGE}.par)
607 add_dependencies(test-par-all test-${PACKAGE}.par)
608 add_dependencies(test-${MODULE}-par-all test-${PACKAGE}.par)
610 endif(EXISTS ${CMAKE_SOURCE_DIR}/${MODULE}/PROOF-INF.${PACKAGE})
611 # endif(EXISTS ${ALICE_ROOT}/${MODULE}/PROOF-INF.${PACKAGE})
613 endmacro(ALICE_BuildPAR)