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}" )

Reply via email to