commit: 103de2c760154e00761e76d2529575bdba35190f Author: Alexander Puck Neuwirth <apn-pucky <AT> gentoo <DOT> org> AuthorDate: Thu Aug 7 13:33:58 2025 +0000 Commit: Guilherme Amadio <amadio <AT> gentoo <DOT> org> CommitDate: Sun Sep 7 14:48:17 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=103de2c7
sci-physics/clhep: add static-libs use flag Removing the static-libs is not straightforward since they are included in the installed CMake search, which also searches for the static libraries. Reported that to upstream https://gitlab.cern.ch/CLHEP/CLHEP/-/issues/6 with the patch in https://gitlab.cern.ch/CLHEP/CLHEP/-/merge_requests/27. Closes: https://bugs.gentoo.org/890788 Closes: https://bugs.gentoo.org/959361 Signed-off-by: Alexander Puck Neuwirth <apn-pucky <AT> gentoo.org> Signed-off-by: Guilherme Amadio <amadio <AT> gentoo.org> sci-physics/clhep/clhep-2.4.7.1-r1.ebuild | 62 ++++++ .../files/clhep-2.4.7.1-static-libs-option.patch | 208 +++++++++++++++++++++ 2 files changed, 270 insertions(+) diff --git a/sci-physics/clhep/clhep-2.4.7.1-r1.ebuild b/sci-physics/clhep/clhep-2.4.7.1-r1.ebuild new file mode 100644 index 000000000000..5ec13cc75830 --- /dev/null +++ b/sci-physics/clhep/clhep-2.4.7.1-r1.ebuild @@ -0,0 +1,62 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="High Energy Physics C++ library" +HOMEPAGE=" + http://proj-clhep.web.cern.ch/proj-clhep/ + https://gitlab.cern.ch/CLHEP/CLHEP +" +SRC_URI="http://proj-clhep.web.cern.ch/proj-clhep/dist1/${P}.tgz" + +S="${WORKDIR}/${PV}/CLHEP" + +LICENSE="GPL-3 LGPL-3" +SLOT="2/${PV}" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x64-macos" + +IUSE="doc static-libs test threads" +RESTRICT="!test? ( test )" + +BDEPEND=" + doc? ( + app-text/doxygen + dev-texlive/texlive-bibtexextra + dev-texlive/texlive-fontsextra + dev-texlive/texlive-fontutils + dev-texlive/texlive-latex + dev-texlive/texlive-latexextra + ) +" + +PATCHES=( "${FILESDIR}"/${P}-static-libs-option.patch ) + +src_prepare() { + cmake_src_prepare + + # respect flags + sed -i -e 's:-O::g' cmake/Modules/ClhepVariables.cmake || die + # dont build test if not asked + if ! use test; then + cmake_comment_add_subdirectory test + fi + # gentoo doc directory + if use doc; then + grep -rl 'share/doc/CLHEP' | + xargs sed -i \ + -e "s:share/doc/CLHEP:share/doc/${PF}:" \ + {.,*}/CMakeLists.txt || die + fi +} + +src_configure() { + local mycmakeargs=( + -DCLHEP_BUILD_DOCS=$(usex doc) + -DCLHEP_BUILD_STATIC_LIBS=$(usex static-libs) + -DCLHEP_SINGLE_THREAD=$(usex threads no yes) + ) + cmake_src_configure +} diff --git a/sci-physics/clhep/files/clhep-2.4.7.1-static-libs-option.patch b/sci-physics/clhep/files/clhep-2.4.7.1-static-libs-option.patch new file mode 100644 index 000000000000..50b975b873de --- /dev/null +++ b/sci-physics/clhep/files/clhep-2.4.7.1-static-libs-option.patch @@ -0,0 +1,208 @@ +diff --git c/cmake/Modules/ClhepBuildLibrary.cmake w/cmake/Modules/ClhepBuildLibrary.cmake +index 7f4fcc0f..b7445413 100644 +--- c/cmake/Modules/ClhepBuildLibrary.cmake ++++ w/cmake/Modules/ClhepBuildLibrary.cmake +@@ -20,45 +20,52 @@ macro(clhep_build_library package) + + # check for dependencies + set( package_library_list ) +- set(package_library_list_static) ++ set(package_library_listS) + if( ${PACKAGE}_DEPS ) + foreach ( dep ${${PACKAGE}_DEPS} ) + ##message( STATUS "clhep_build_library ${package} will use ${dep}") + list(APPEND package_library_list ${dep}) +- list(APPEND package_library_list_static ${dep}S) ++ list(APPEND package_library_listS ${dep}S) + endforeach() + endif() + ++ function(make_library package suffix type) ++ ADD_LIBRARY(${package}${suffix} ${type} ${CLHEP_${package}_SOURCES}) ++ SET_TARGET_PROPERTIES(${package}${suffix} ++ PROPERTIES ++ OUTPUT_NAME CLHEP-${package}-${VERSION} ++ ) ++ # Do not add -Dname_EXPORTS to the command-line when building files in this ++ # target. Doing so is actively harmful for the modules build because it ++ # creates extra module variants, and not useful because we don't use these ++ # macros. ++ SET_TARGET_PROPERTIES(${package}${suffix} PROPERTIES DEFINE_SYMBOL "") ++ target_link_libraries(${package}${suffix} ${package_library_list${suffix}} ) ++ ++ endfunction() ++ + # Add the libraries and set properties +- ADD_LIBRARY(${package} SHARED ${CLHEP_${package}_SOURCES}) +- ADD_LIBRARY(${package}S STATIC ${CLHEP_${package}_SOURCES}) +- SET_TARGET_PROPERTIES (${package} +- PROPERTIES +- OUTPUT_NAME CLHEP-${package}-${VERSION} +- ) +- SET_TARGET_PROPERTIES(${package}S +- PROPERTIES +- OUTPUT_NAME CLHEP-${package}-${VERSION} +- ) ++ make_library(${package} "" SHARED) ++ if (CLHEP_BUILD_STATIC_LIBS) ++ make_library(${package} "S" STATIC) ++ endif() + +- # Do not add -Dname_EXPORTS to the command-line when building files in this +- # target. Doing so is actively harmful for the modules build because it +- # creates extra module variants, and not useful because we don't use these +- # macros. +- SET_TARGET_PROPERTIES(${package} PROPERTIES DEFINE_SYMBOL "") +- SET_TARGET_PROPERTIES(${package}S PROPERTIES DEFINE_SYMBOL "") +- +- target_link_libraries(${package} ${package_library_list} ) +- target_link_libraries(${package}S ${package_library_list_static} ) ++ set(CLHEP_library_targets) ++ list(APPEND CLHEP_library_targets ${package}) ++ if (CLHEP_BUILD_STATIC_LIBS) ++ list(APPEND CLHEP_library_targets ${package}S) ++ endif() + + # Install the libraries +- INSTALL (TARGETS ${package} ${package}S +- EXPORT CLHEPLibraryDepends +- RUNTIME DESTINATION bin +- LIBRARY DESTINATION lib${LIB_SUFFIX} +- ARCHIVE DESTINATION lib${LIB_SUFFIX} +- INCLUDES DESTINATION include +- ) ++ INSTALL (TARGETS ${CLHEP_library_targets} ++ EXPORT CLHEPLibraryDepends ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION lib${LIB_SUFFIX} ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} ++ INCLUDES DESTINATION include ++ ) ++ ++ + endmacro(clhep_build_library) + + macro(clhep_build_libclhep ) +@@ -69,48 +76,63 @@ macro(clhep_build_libclhep ) + endforeach() + ##message( STATUS "clheplib source list ${clhep_sources}" ) + +- ADD_LIBRARY (CLHEP SHARED ${clhep_sources}) +- ADD_LIBRARY (CLHEPS STATIC ${clhep_sources}) ++ function(make_clhep suffix type ) ++ ADD_LIBRARY (CLHEP${suffix} ${type} ${clhep_sources}) + +- SET_TARGET_PROPERTIES(CLHEP ++ SET_TARGET_PROPERTIES(CLHEP${suffix} + PROPERTIES + OUTPUT_NAME CLHEP-${VERSION} +- ) +- SET_TARGET_PROPERTIES(CLHEPS +- PROPERTIES +- OUTPUT_NAME CLHEP-${VERSION} +- ) +- # Do not add -Dname_EXPORTS to the command-line when building files in this +- # target. Doing so is actively harmful for the modules build because it +- # creates extra module variants, and not useful because we don't use these +- # macros. +- SET_TARGET_PROPERTIES(CLHEP PROPERTIES DEFINE_SYMBOL "") +- SET_TARGET_PROPERTIES(CLHEPS PROPERTIES DEFINE_SYMBOL "") ++ ) ++ ++ # Do not add -Dname_EXPORTS to the command-line when building files in this ++ # target. Doing so is actively harmful for the modules build because it ++ # creates extra module variants, and not useful because we don't use these ++ # macros. ++ SET_TARGET_PROPERTIES(CLHEP${suffix} PROPERTIES DEFINE_SYMBOL "") ++ ++ endfunction() ++ ++ make_clhep("" SHARED) ++ if (CLHEP_BUILD_STATIC_LIBS) ++ make_clhep("S" STATIC) ++ endif() ++ ++ set(CLHEP_targets) ++ list(APPEND CLHEP_targets CLHEP) ++ if (CLHEP_BUILD_STATIC_LIBS) ++ list(APPEND CLHEP_targets CLHEPS) ++ endif() + + # export creates library dependency files for CLHEPConfig.cmake +- INSTALL(TARGETS CLHEP CLHEPS +- EXPORT CLHEPLibraryDepends +- RUNTIME DESTINATION bin +- LIBRARY DESTINATION lib${LIB_SUFFIX} +- ARCHIVE DESTINATION lib${LIB_SUFFIX} +- INCLUDES DESTINATION include +- ) ++ INSTALL(TARGETS ${CLHEP_targets} ++ EXPORT CLHEPLibraryDepends ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION lib${LIB_SUFFIX} ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} ++ INCLUDES DESTINATION include ++ ) + + if( ${CMAKE_SYSTEM_NAME} MATCHES "Windows" ) + # copy ++ if (CLHEP_BUILD_STATIC_LIBS) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink + "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E copy ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_STATIC_LIBRARY_SUFFIX} ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP${CMAKE_STATIC_LIBRARY_SUFFIX} WORKING_DIRECTORY \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}\" )" ) ++ endif() + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_shared_symlink + "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E copy ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP${CMAKE_SHARED_LIBRARY_SUFFIX} WORKING_DIRECTORY \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin\" )" ) + else() + # create the symbolic links ++ if (CLHEP_BUILD_STATIC_LIBS) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink + "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_STATIC_LIBRARY_SUFFIX} ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP${CMAKE_STATIC_LIBRARY_SUFFIX} WORKING_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}\" )" ) ++ endif() + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_shared_symlink + "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP${CMAKE_SHARED_LIBRARY_SUFFIX} WORKING_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}\" )" ) + endif() + +- INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink ) ++ if (CLHEP_BUILD_STATIC_LIBS) ++ INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink ) ++ endif() + INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/clhep_shared_symlink ) + + endmacro(clhep_build_libclhep ) +diff --git c/cmake/Modules/ClhepToolchain.cmake w/cmake/Modules/ClhepToolchain.cmake +index a7f53c23..428ba3ac 100644 +--- c/cmake/Modules/ClhepToolchain.cmake ++++ w/cmake/Modules/ClhepToolchain.cmake +@@ -57,10 +57,16 @@ configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/Templates/CLHEPConfig. + # First build up list of all modular targets, static and shared + set(CLHEP_libraries_all ${CLHEP_libraries}) + foreach(_lib ${CLHEP_libraries}) +- list(APPEND CLHEP_libraries_all "${_lib}S") ++ if (CLHEP_BUILD_STATIC_LIBS) ++ list(APPEND CLHEP_libraries_all "${_lib}S") ++ endif() + endforeach() + +-export(TARGETS CLHEP CLHEPS ${CLHEP_libraries_all} ++if (CLHEP_BUILD_STATIC_LIBS) ++ list(APPEND CLHEP_libraries_all "CLHEPS") ++endif() ++ ++export(TARGETS CLHEP ${CLHEP_libraries_all} + NAMESPACE "CLHEP::" + FILE ${PROJECT_BINARY_DIR}/CLHEPLibraryDepends.cmake + ) +diff --git c/cmake/Modules/ClhepVariables.cmake w/cmake/Modules/ClhepVariables.cmake +index dc21ceee..00746a51 100644 +--- c/cmake/Modules/ClhepVariables.cmake ++++ w/cmake/Modules/ClhepVariables.cmake +@@ -26,6 +26,9 @@ option(CLHEP_SINGLE_THREAD "Build without multithreading" OFF) + # CLHEP_BUILD_DOCS is OFF (false) by default + option(CLHEP_BUILD_DOCS "Build and install CLHEP documentation" OFF) + ++# CLHEP_BUILD_STATIC_LIBS is ON (true) by default ++option(CLHEP_BUILD_STATIC_LIBS "Build and install CLHEP static libraries" ON) ++ + macro( clhep_check_variable_names ) + # useful if you need to check a variable + message( STATUS "clhep_check_variable_names: CMAKE_SYSTEM_NAME is ${CMAKE_SYSTEM_NAME}" )
