Skip to content
Snippets Groups Projects
Commit 332e7427 authored by Louis Moureaux's avatar Louis Moureaux
Browse files

Build TUnfold with CMake

It looked easier than writing a Find module.
parent 0bbf6a4c
No related branches found
No related tags found
2 merge requests!34Migration,!28Installer changes for the upcoming Core migration to CMake
*/ /*/
!/cmake/
*.swp
...@@ -32,13 +32,8 @@ ExternalProject_Add(TUnfold ...@@ -32,13 +32,8 @@ ExternalProject_Add(TUnfold
URL https://www.desy.de/~sschmitt/TUnfold/TUnfold_V17.9.tgz URL https://www.desy.de/~sschmitt/TUnfold/TUnfold_V17.9.tgz
URL_HASH SHA256=d7f66f6a0e007eb946180643b8879bb2b8918441106bc0305b82a97391a391dc URL_HASH SHA256=d7f66f6a0e007eb946180643b8879bb2b8918441106bc0305b82a97391a391dc
SOURCE_DIR "${CMAKE_SOURCE_DIR}/TUnfold" SOURCE_DIR "${CMAKE_SOURCE_DIR}/TUnfold"
CONFIGURE_COMMAND "" PATCH_COMMAND "${CMAKE_COMMAND}" -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/cmake/TUnfold <SOURCE_DIR>
BUILD_COMMAND make lib TUNFOLDVERSION='V17' CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
BUILD_IN_SOURCE TRUE
INSTALL_COMMAND install -DT libunfold.so <INSTALL_DIR>/${CMAKE_INSTALL_LIBDIR}/libtunfold.so
COMMAND install TUnfoldV17Dict_rdict.pcm <INSTALL_DIR>/${CMAKE_INSTALL_LIBDIR}/
COMMAND install -d <INSTALL_DIR>/${CMAKE_INSTALL_INCLUDEDIR}/TUnfold
COMMAND install ${TUNFOLD_HEADERS} <INSTALL_DIR>/${CMAKE_INSTALL_INCLUDEDIR}/TUnfold/
INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" INSTALL_DIR "${CMAKE_INSTALL_PREFIX}"
) )
configure_file(tunfold.xml.in tunfold.xml) configure_file(tunfold.xml.in tunfold.xml)
......
# SPDX-License-Identifier: GPLv3-or-later
#
# SPDX-FileCopyrightText: Louis Moureaux <louis.moureaux@cern.ch>
cmake_minimum_required(VERSION 3.17..3.26 FATAL_ERROR)
project(TUnfold VERSION 17.9 LANGUAGES CXX)
find_package(ROOT 6.24 REQUIRED)
set(classes
TUnfoldBinning
TUnfoldBinningXML
TUnfoldDensity
TUnfoldIterativeEM
TUnfoldSys
TUnfold)
# Library
set(sources ${classes})
list(TRANSFORM sources APPEND V${TUnfold_VERSION_MAJOR}.cxx)
set(headers ${classes})
list(TRANSFORM headers APPEND .h)
add_library(TUnfold SHARED ${sources})
target_sources(TUnfold PUBLIC FILE_SET HEADERS FILES ${headers})
target_link_libraries(TUnfold PUBLIC ROOT::Hist ROOT::XMLParser)
# Install
include(GNUInstallDirs)
set(include_dir "${CMAKE_INSTALL_INCLUDEDIR}/TUnfold")
install(TARGETS TUnfold
EXPORT TUnfoldTargets
COMPONENT TUnfold
FILE_SET HEADERS DESTINATION "${include_dir}"
RUNTIME DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION "${include_dir}")
# Dictionary
configure_file(LinkDef.h.in LinkDef.h)
# https://github.com/root-project/root/issues/8308#issuecomment-1143791946
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
root_generate_dictionary(TUnfoldV${TUnfold_VERSION_MAJOR}Dict
${headers}
MODULE TUnfold
LINKDEF "${CMAKE_CURRENT_BINARY_DIR}/LinkDef.h")
# Export
include(CMakePackageConfigHelpers)
set(CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/TUnfold")
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/TUnfoldConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/TUnfoldConfig.cmake"
INSTALL_DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
)
write_basic_package_version_file(
TUnfoldConfigVersion.cmake
COMPATIBILITY SameMajorVersion
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/TUnfoldConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/TUnfoldConfigVersion.cmake"
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel)
install(EXPORT TUnfoldTargets
NAMESPACE TUnfold::
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
FILE TUnfoldTargets.cmake)
#ifdef __CLING__
#pragma link C++ class TUnfoldV@TUnfold_VERSION_MAJOR@+;
#pragma link C++ class TUnfoldIterativeEMV@TUnfold_VERSION_MAJOR@+;
#pragma link C++ class TUnfoldSysV@TUnfold_VERSION_MAJOR@+;
#pragma link C++ class TUnfoldDensityV@TUnfold_VERSION_MAJOR@+;
#pragma link C++ class TUnfoldBinningV@TUnfold_VERSION_MAJOR@+;
#pragma link C++ class TUnfoldBinningXMLV@TUnfold_VERSION_MAJOR@+;
#endif
include(CMakeFindDependencyMacro)
find_dependency(ROOT @ROOT_VERSION@)
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment