X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=cmake%2FALICE_CMake.cmake;h=67e3fb84806f0747d9cb9eb2b2395609044a6872;hb=e93f6949ae9649824f74937f87f6dc4ba613996e;hp=5cb5c0e920f5f4403d056e90904026609e8b50e0;hpb=529f129eb1c65a5a6241762b1699ab2d4a3b0e9e;p=u%2Fmrichter%2FAliRoot.git diff --git a/cmake/ALICE_CMake.cmake b/cmake/ALICE_CMake.cmake index 5cb5c0e920f..67e3fb84806 100644 --- a/cmake/ALICE_CMake.cmake +++ b/cmake/ALICE_CMake.cmake @@ -1,3 +1,5 @@ +# -*- mode: cmake -*- + # AliRoot Build System Utility Macro and Function definitions # # Author: Johny Jose (johny.jose@cern.ch) @@ -22,7 +24,7 @@ endmacro(ALICE_DevFlagsOutput) function(ALICE_CleanOutput _output input) - string(REGEX REPLACE "\n" " " clean ${input}) + string(REGEX REPLACE "\n" " " clean "${input}") set(${_output} ${clean} PARENT_SCOPE) endfunction(ALICE_CleanOutput) @@ -32,11 +34,11 @@ function(ALICE_CorrectPaths _output value ) set(corrected) foreach(path ${value}) set(external) - string(REGEX MATCH "^/" external ${path}) + string(REGEX MATCH "^/" external "${path}") if(NOT external) list(APPEND corrected "${CMAKE_SOURCE_DIR}/${path}" ) else() - list(APPEND corrected ${path}) + list(APPEND corrected "${path}") endif(NOT external) endforeach(path) set(${_output} ${corrected} PARENT_SCOPE) @@ -50,10 +52,10 @@ function(ALICE_Format _output prefix suffix input) foreach(arg ${input}) set(item ${arg}) if(prefix) - string(REGEX MATCH "^${prefix}" pre ${arg}) + string(REGEX MATCH "^${prefix}" pre "${arg}") endif(prefix) if(suffix) - string(REGEX MATCH "${suffix}$" suf ${arg}) + string(REGEX MATCH "${suffix}$" suf "${arg}") endif(suffix) if(NOT pre) set(item "${prefix}${item}") @@ -72,7 +74,7 @@ function(ALICE_CheckLibraries _output input) set(format) foreach(arg ${input}) set(item ${arg}) - string(REGEX MATCH "^(/|-)" preformatted ${item}) + string(REGEX MATCH "^(/|-)" preformatted "${item}") if(NOT preformatted) set(item "-l${item}") endif(NOT preformatted) @@ -120,12 +122,12 @@ macro(ALICE_ConfigureCompiler) if(ALIDEBUG STREQUAL "YES") set(ALICE_TARGET ${ALICE_TARGET}DEBUG) message("Befor ${CXXFLAGS}") - string(REGEX MATCHALL "-O[^ ]*" FFLAGS ${FFLAGS}) - string(REGEX MATCHALL "-O[^ ]*" CXXFLAGS ${CXXFLAGS}) + string(REGEX MATCHALL "-O[^ ]*" FFLAGS "${FFLAGS}") + string(REGEX MATCHALL "-O[^ ]*" CXXFLAGS "${CXXFLAGS}") message("After ${CXXFLAGS}") - string(REGEX MATCHALL "-O[^ ]*" CFLAGS ${CFLAGS}) - string(REGEX MATCHALL "-O[^ ]*" SOFLAGS ${SOFLAGS}) - string(REGEX MATCHALL "-O[^ ]*" LDFLAGS ${LDFLAGS}) + string(REGEX MATCHALL "-O[^ ]*" CFLAGS "${CFLAGS}") + string(REGEX MATCHALL "-O[^ ]*" SOFLAGS "${SOFLAGS}") + string(REGEX MATCHALL "-O[^ ]*" LDFLAGS "${LDFLAGS}") set(FFLAGS "-g ${FFLAGS}") set(CXXFLAGS "-g ${CXXFLAGS}") set(CFLAGS "-g ${CFLAGS}") @@ -318,7 +320,6 @@ macro(ALICE_BuildPackage) set(${MODULE}LIBS "${PMLIBS}" PARENT_SCOPE) set(${MODULE}INC "${EINCLUDE}" PARENT_SCOPE) list(APPEND INCLUDEFILES ${PEXPORTDEST}) - ALICE_CopyHeaders() if(WITHDICT) ALICE_SetPackageVariable(PDS "DS" "G__${PACKAGE}.cxx" "G__${PACKAGE}.cxx") ALICE_GenerateDictionary() @@ -327,7 +328,6 @@ macro(ALICE_BuildPackage) message(STATUS "No dictionary generated for ${PACKAGE}") endif(lib) endif(WITHDICT) - if(PS OR PCS OR PFS) if(lib) ALICE_BuildLibrary() @@ -335,6 +335,8 @@ macro(ALICE_BuildPackage) ALICE_BuildExecutable() endif(lib) endif(PS OR PCS OR PFS) + ALICE_CopyHeaders() + ALICE_BuildPAR() endmacro(ALICE_BuildPackage) @@ -345,10 +347,10 @@ macro(ALICE_BuildModule) foreach(PACKAGEFILE ${PACKAGES}) set(lib) set(bin) - string(REGEX MATCH "CMakelib" lib ${PACKAGEFILE}) - string(REGEX MATCH "CMakebin" bin ${PACKAGEFILE}) + string(REGEX MATCH "CMakelib" lib "${PACKAGEFILE}") + string(REGEX MATCH "CMakebin" bin "${PACKAGEFILE}") get_filename_component(PACKAGE ${PACKAGEFILE} NAME) - string(REGEX REPLACE "^CMake(lib|bin)(.*)\\.pkg" "\\2" PACKAGE ${PACKAGE}) + string(REGEX REPLACE "^CMake(lib|bin)(.*)\\.pkg" "\\2" PACKAGE "${PACKAGE}") if(ALICEDEV) message("Adding package ${PACKAGE} in ${MODULE}") endif(ALICEDEV) @@ -359,12 +361,12 @@ macro(ALICE_BuildModule) get_property(EXCLUDEPACKAGE TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL) if(NOT EXCLUDEPACKAGE) install(TARGETS ${PACKAGE} - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION bin) + RUNTIME DESTINATION bin/tgt_${ALICE_TARGET} + LIBRARY DESTINATION lib/tgt_${ALICE_TARGET} + ARCHIVE DESTINATION bin/tgt_${ALICE_TARGET}) endif(NOT EXCLUDEPACKAGE) endforeach(PACKAGEFILE) - + ALICE_CheckModule() endmacro(ALICE_BuildModule) macro(ALICE_GenerateDictionary) @@ -389,6 +391,7 @@ macro(ALICE_GenerateDictionary) # Format neccesary arguments ALICE_Format(DINC "-I" "" "${DINC};${CMAKE_INCLUDE_EXPORT_DIRECTORY}") set_source_files_properties(${PDS} PROPERTIES GENERATED TRUE) + set_source_files_properties(${PDS} PROPERTIES COMPILE_FLAGS "-w") add_custom_command(OUTPUT ${PDS} COMMAND cd ${PROJECT_SOURCE_DIR} && ${ROOTCINT} -f ${CMAKE_CURRENT_BINARY_DIR}/${PDS} -c -D_MODULE=\\\"${MODULE}\\\" ${DEDEFINE} ${DCINTFLAGS} ${DINC} ${DCINTHDRS} ${DDH} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} @@ -429,6 +432,7 @@ macro(ALICE_BuildLibrary) include_directories(${CMAKE_INCLUDE_EXPORT_DIRECTORY}) add_library(${PACKAGE} SHARED ${PCS} ${PFS} ${PS} ${PDS}) + set_target_properties(${PACKAGE} PROPERTIES SUFFIX .so) if(PELIBS OR SHLIB) @@ -454,6 +458,8 @@ macro(ALICE_BuildLibrary) set_property(TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL TRUE) endif(NOT RESULT STREQUAL "-1") + set_target_properties(${PACKAGE} PROPERTIES INSTALL_NAME_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + endmacro(ALICE_BuildLibrary) macro(ALICE_BuildExecutable) @@ -471,10 +477,9 @@ macro(ALICE_BuildExecutable) separate_arguments(PBLIBS) separate_arguments(PELIBS) separate_arguments(SHLIB) - + ALICE_Format(PELIBSDIR "-L" "" "${PELIBSDIR}") ALICE_CheckLibraries(PBLIBS "${PBLIBS}") - #ALICE_CheckLibraries(PELIBS "${PELIBS}") ALICE_CorrectPaths(EINCLUDE "${EINCLUDE}") ALICE_CorrectPaths(PINC "${PINC}") @@ -498,6 +503,46 @@ macro(ALICE_BuildExecutable) add_dependencies(${MODULE}-all ${PACKAGE}) endif(ALIPROFILE STREQUAL "YES") +# AliMDC +# ------------------------------ + if(PACKAGE STREQUAL "alimdc" AND GENERATEPACKAGES) + + add_executable(${PACKAGE}-static ${PFS} ${PCS} ${PS} ${PDS}) + set_target_properties(${PACKAGE}-static PROPERTIES OUTPUT_NAME alimdca) + add_custom_target( libAliMDC + COMMAND rm -rf ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a + COMMAND rm -rf junkmdc + 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 + WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + add_custom_target( root-static-libs + COMMAND make static + WORKING_DIRECTORY ${ROOTSYS} ) + + add_dependencies(libAliMDC RAWDatabase-static STEERBase-static MDC-static ESD-static) + add_dependencies(${PACKAGE}-static libAliMDC root-static-libs) + target_link_libraries(${PACKAGE}-static ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libAliMDC.a ${ROOTLIBDIR}/libRoot.a ${ROOTLIBDIR}/libfreetype.a ${ROOTLIBDIR}/libpcre.a -pthread -ldl -lcurses) + + install(TARGETS ${PACKAGE}-static RUNTIME DESTINATION bin/tgt_${ALICE_TARGET} COMPONENT MDC) + 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) + install(FILES ${PROJECT_SOURCE_DIR}/RAW/mdc.h DESTINATION include COMPONENT MDC) + set(CPACK_RPM_PACKAGE_SUMMARY "AliMDC static libraries") + set(CPACK_RPM_PACKAGE_NAME "alimdc") + set(CPACK_RPM_PACKAGE_VERSION "${ALIMDCVERSION}") + set(CPACK_RPM_PACKAGE_RELEASE "${ALIMDCRELEASE}") + set(CPACK_RPM_PACKAGE_LICENSE "License: CERN ALICE Off-line Group") + set(CPACK_RPM_PACKAGE_VENDOR "ALICE Core Off-line Group") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AliMDC static libraries") + set(CPACK_RPM_PACKAGE_GROUP "Applications/Alice") + set(CPACK_RPM_PACKAGE_REQUIRES "glibc") + set(CPACK_PACKAGE_VERSION "1.0.0") + set(CPACK_PACKAGE_VERSION_MAJOR "1") + set(CPACK_PACKAGE_VERSION_MINOR "0") + set(CPACK_PACKAGE_VERSION_PATCH "0") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "/opt/") + add_component_package(MDC alimdc-rpm) + + endif(PACKAGE STREQUAL "alimdc" AND GENERATEPACKAGES) + list(FIND EXCLUDEMODULES ${MODULE} RESULT) if(NOT RESULT STREQUAL "-1") set_property(TARGET ${PACKAGE} PROPERTY EXCLUDE_FROM_ALL TRUE) @@ -507,15 +552,19 @@ endmacro(ALICE_BuildExecutable) macro(ALICE_CopyHeaders) - if(NOT EXPORT ) - set(HEADERS) - else() + if(EXPORT ) set(HEADERS ${EXPORT}) - endif(NOT EXPORT) - foreach(header ${HEADERS}) - configure_file(${header} ${PEXPORTDEST} COPYONLY) + set(_headersdep) + foreach(header ${HEADERS}) + add_custom_command(OUTPUT ${PEXPORTDEST}/${header} + COMMAND ${CMAKE_COMMAND} -E copy ${ALICE_ROOT}/${MODULE}/${header} ${PEXPORTDEST}/${header} + DEPENDS ${ALICE_ROOT}/${MODULE}/${header}) + list(APPEND _headersdep ${PEXPORTDEST}/${header}) install(FILES ${header} DESTINATION include) - endforeach(header) + endforeach(header) + add_custom_target(${PACKAGE}-headers DEPENDS ${_headersdep}) + add_dependencies(${PACKAGE} ${PACKAGE}-headers) + endif(EXPORT) endmacro(ALICE_CopyHeaders) @@ -534,3 +583,51 @@ macro(ALICE_GenerateLinkDef) endforeach(class) file (APPEND ${PDAL} "#endif\n") endmacro(ALICE_GenerateLinkDef) + +macro(ALICE_BuildPAR) + + # if(EXISTS ${ALICE_ROOT}/${MODULE}/PROOF-INF.${PACKAGE}) + if(EXISTS ${CMAKE_SOURCE_DIR}/${MODULE}/PROOF-INF.${PACKAGE}) + set(PARSRCS) + foreach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR}) + get_filename_component(srcdir ${file} PATH) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file}-par + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${srcdir} + COMMAND cp -pR ${file} ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) + list(APPEND PARSRCS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file}-par) + endforeach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR}) + + add_custom_target(${PACKAGE}.par + 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 + COMMAND cp -pR ${ROOTSYS}/test/Makefile.arch ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile.arch + COMMAND cp -pR PROOF-INF.${PACKAGE} ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/PROOF-INF +# COMMAND cp -pR lib${PACKAGE}.pkg ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE} + COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_BINARY_DIR} tar --exclude=.svn -czhf ${CMAKE_BINARY_DIR}/${PACKAGE}.par ${PACKAGE} + COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE} + COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red --bold "${PACKAGE}.par has been created in ${CMAKE_BINARY_DIR}" + DEPENDS ${PARSRCS} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) + + + add_dependencies(${PACKAGE}.par ${SRCS} ${FSRCS} ${HDRS} ${DHDR}) + add_dependencies(par-all ${PACKAGE}.par) + add_dependencies(${MODULE}-par-all ${PACKAGE}.par) + + add_custom_target(test-${PACKAGE}.par + 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}." + COMMAND ${CMAKE_COMMAND} -E make_directory par-tmp + COMMAND ${CMAKE_COMMAND} -E chdir par-tmp tar xfz ../${PACKAGE}.par && ${CMAKE_COMMAND} -E chdir par-tmp/${PACKAGE} PROOF-INF/BUILD.sh + COMMAND ${CMAKE_COMMAND} -E remove_directory par-tmp + COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green --bold "${PACKAGE}.par testing succeeded" + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + + add_dependencies(test-${PACKAGE}.par ${PACKAGE}.par) + add_dependencies(test-par-all test-${PACKAGE}.par) + add_dependencies(test-${MODULE}-par-all test-${PACKAGE}.par) + + endif(EXISTS ${CMAKE_SOURCE_DIR}/${MODULE}/PROOF-INF.${PACKAGE}) + # endif(EXISTS ${ALICE_ROOT}/${MODULE}/PROOF-INF.${PACKAGE}) + +endmacro(ALICE_BuildPAR) +