From fae85bcc6435544191717079044132ca67f3e7e8 Mon Sep 17 00:00:00 2001 From: agrigora Date: Wed, 3 Dec 2014 14:40:26 +0100 Subject: [PATCH] alimdc rpm --- CMakeLists.txt | 7 ++++- RAW/alimdc/CMakeLists.txt | 56 ++++++++++++++++++++++++++++++++++--- RAW/alimdc/alimdc.spec.in | 6 +++- cmake/CheckGitVersion.cmake | 5 ++-- cmake/da.spec.in | 2 +- 5 files changed, 66 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8789669a47e..af441d68891 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,6 +101,12 @@ if(DA) message(STATUS "DAs enabled") endif(DA) +# MDC rpm creation enables the static build +if(MDCRPM) + set(ALIROOT_STATIC TRUE) + message(STATUS "AliMDC RPM enabled. AliRoot static build enabled") +endif(MDCRPM) + # ROOT configuration mandatory if(ROOTSYS) find_package(ROOT REQUIRED) @@ -132,7 +138,6 @@ else() message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.") endif() - # DATE if(DATE_CONFIG) find_package(DATE) diff --git a/RAW/alimdc/CMakeLists.txt b/RAW/alimdc/CMakeLists.txt index 9ff35299cfb..a04d5f32092 100644 --- a/RAW/alimdc/CMakeLists.txt +++ b/RAW/alimdc/CMakeLists.txt @@ -29,11 +29,15 @@ include_directories(${ROOT_INCLUDE_DIRS} link_directories(${ROOT_LIBDIR}) # ROOT libraries that are not in root-config --libs -set(ROOTEXTRALIBS Geom VMC Minuit) +set(ROOT_DEPENDENCIES Geom VMC Minuit) +set(ALIROOT_DEPENDENCIES STEERBase ESD MDC RAWDatabase RAWDatarec) -# Add an executable to the project using the specified source files -add_executable(${MODULE} alimdc_main.cxx) -target_link_libraries(${MODULE} STEERBase ESD MDC RAWDatabase RAWDatarec ${ROOTEXTRALIBS} ${ROOT_LIBRARIES}) +# Create an object to be reused in case of static libraries +# Otherwise the sources will be compiled twice +add_library(${MODULE}-object OBJECT alimdc_main.cxx) +# Add a library to the project using the object +add_executable(${MODULE} $) +target_link_libraries(${MODULE} STEERBase ESD MDC RAWDatabase RAWDatarec ${ROOT_DEPENDENCIES} ${ROOT_LIBRARIES}) # Compile and link flags set(MODULE_COMPILE_FLAGS) @@ -58,3 +62,47 @@ set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "${MODULE_LINK_FLAGS}") # Installation install(TARGETS ${MODULE} RUNTIME DESTINATION bin) + +# Creating the AliMDC static library and the rpm +if(MDCRPM) + add_library(AliMDC STATIC $) + + # list of shared dependencies / the name of the variable containing the list of static ones + generate_static_dependencies("${ALIROOT_DEPENDENCIES}" "STATIC_ALIROOT_DEPENDENCIES") + target_link_libraries(AliMDC ${STATIC_ALIROOT_DEPENDENCIES} Root RootExtra) + + set_target_properties(AliMDC PROPERTIES LINK_FLAGS "-Wl,--whole-archive") + + # Installation + install(TARGETS AliMDC + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib) + + configure_file("alimdc.spec.in" "alimdc.spec" @ONLY) + + add_custom_command(TARGET alimdc POST_BUILD + COMMAND mkdir ARGS -p alimdc-rpm/root/opt/alimdc/lib + COMMAND mkdir ARGS -p alimdc-rpm/root/opt/alimdc/include + COMMAND cp ARGS libAliMDC.a alimdc-rpm/root/opt/alimdc/lib + COMMAND cp ARGS ${ROOT_LIBDIR}/libRoot.a alimdc-rpm/root/opt/alimdc/lib/ + COMMAND cp ARGS ${CMAKE_BINARY_DIR}/libRootExtra.a alimdc-rpm/root/opt/alimdc/lib/ + COMMAND cp ARGS ${ROOT_LIBDIR}/libpcre.a alimdc-rpm/root/opt/alimdc/lib/ + COMMAND cp ARGS ${ROOT_LIBDIR}/liblzma.a alimdc-rpm/root/opt/alimdc/lib/ + COMMAND cp ARGS ${ROOT_LIBDIR}/libfreetype.a alimdc-rpm/root/opt/alimdc/lib/ + COMMAND cp ARGS ${CMAKE_BINARY_DIR}/libRootExtra.a alimdc-rpm/root/opt/alimdc/lib/ + COMMAND cp ARGS ${AliRoot_SOURCE_DIR}/RAW/MDC/mdc.h alimdc-rpm/root/opt/alimdc/include + COMMAND rpmbuild ARGS --verbose --define "_topdir ${CMAKE_CURRENT_BINARY_DIR}/alimdc-rpm" --define "%buildroot ${CMAKE_CURRENT_BINARY_DIR}/alimdc-rpm/root" -bb alimdc.spec + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM + COMMENT "RPM creation for AliMDC" + ) + + # make clean will remove also the rpm folder + # Retrive the current list of file to be deleted - set_directory_property is overwriting, not adding to the list + get_directory_property(_clean_files ADDITIONAL_MAKE_CLEAN_FILES) + set(_clean_files alimdc-rpm ${_clean_files}) + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${_clean_files}") + + # install RPM into $CMAKE_INSTALL_PREFIX/darpms + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/alimdc-rpm/RPMS/ DESTINATION mdcrpm PATTERN "\\.rpm") + +endif(MDCRPM) \ No newline at end of file diff --git a/RAW/alimdc/alimdc.spec.in b/RAW/alimdc/alimdc.spec.in index b1adb54811a..ed4f874a593 100644 --- a/RAW/alimdc/alimdc.spec.in +++ b/RAW/alimdc/alimdc.spec.in @@ -2,7 +2,7 @@ # RPM Naming Tags Name: alimdc -Version: @ALIROOT_BRANCH_SPEC@ +Version: @ALIROOT_VERSION_RPM@ Release: @GIT_SHORT_SHA1@ Summary: AliRoot MDC static libraries License: CERN Alice Offline @@ -24,10 +24,14 @@ Package contains both ROOT and AliRoot static libs needed by mStreamRecorder in order to ROOT-ify the incoming raw data. The package version correspond to the AliRoot one. +# Turning off the Fascist build policy +%define _unpackaged_files_terminate_build 0 + %files %defattr ( -,root,root ) %{prefix}/lib/libAliMDC.a %{prefix}/lib/libRoot.a +%{prefix}/lib/libRootExtra.a %{prefix}/lib/libpcre.a %{prefix}/lib/liblzma.a %{prefix}/lib/libfreetype.a diff --git a/cmake/CheckGitVersion.cmake b/cmake/CheckGitVersion.cmake index 5fdc1224c6c..61ab6ebe8d1 100644 --- a/cmake/CheckGitVersion.cmake +++ b/cmake/CheckGitVersion.cmake @@ -21,6 +21,7 @@ # - GIT_SHORT_SHA1 - current hash in the short format # # - ALIROOT_VERSION - name of the branch/tag +# - ALIROOT_VERSION_RPM - name of the branch/tag in rpm format, - replaced with . # - ALIROOT_REVISION - short sha1 if(EXISTS ${PROJECT_SOURCE_DIR}/.git/) include(GetGitRevisionDescription) @@ -76,6 +77,4 @@ else() endif(EXISTS ${PROJECT_SOURCE_DIR}/.git/) configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_BINARY_DIR}/version/ARVersion.h @ONLY) -install(FILES ${PROJECT_BINARY_DIR}/version/ARVersion.h DESTINATION include) - -string (REPLACE "-" "." ALIROOT_BRANCH_SPEC "${ALIROOT_BRANCH}") +install(FILES ${PROJECT_BINARY_DIR}/version/ARVersion.h DESTINATION include) \ No newline at end of file diff --git a/cmake/da.spec.in b/cmake/da.spec.in index 3adedef8ae9..1e878082acb 100644 --- a/cmake/da.spec.in +++ b/cmake/da.spec.in @@ -7,7 +7,7 @@ License: CERN Alice DAQ/Offine Group: Applications/Alice Prefix: /opt/%{name} BuildRoot: /@CMAKE_CURRENT_BINARY_DIR@/da-@_ALGORITHM@-rpm/root -# +Packager: Alina Grigoras # automatic dependencies AutoReqProv: yes -- 2.43.0