diff --git a/var/spack/repos/builtin/packages/parmmg/package.py b/var/spack/repos/builtin/packages/parmmg/package.py index b36b20fc4ad..341f706203a 100644 --- a/var/spack/repos/builtin/packages/parmmg/package.py +++ b/var/spack/repos/builtin/packages/parmmg/package.py @@ -10,23 +10,37 @@ class Parmmg(CMakePackage): homepage = "https://www.mmgtools.org" url = "https://github.com/MmgTools/ParMmg/archive/refs/tags/v1.3.0.tar.gz" + git = "https://github.com/MmgTools/ParMmg.git" maintainers("corentin-dev") license("LGPL-3.0-or-later") + version("master", branch="master") + version("1.5.0", sha256="0baec7914e49a26bdbb849ab64dcd92147eff79ac02ef3b2599cb05104901a7a") + version("1.4.0", sha256="d8053bce9e1cd66077ad8cb86a5a874f47d0d0d2216e4eee4b98990355a0ea7f") version("1.3.0", sha256="d43b73a73b62545b5a31bbe25562f69c9e63ad8a6d416bd459781203e37427cf") version("1.2.0", sha256="99729cc292dcb59c87e3f25d4cabf5a64841e83b624d383e1fd3fb7f960df672") version("1.1.0", sha256="a5904f1f56b7809ab9ec2f6118b03a082ec2b5564355a73c74fc55426cc69600") version("1.0.0", sha256="614feb815ff6cdfc9bced30e8105994f0bf3a812243619d3349203ec1851cf6d") + patch( + "parmmg_cmake_patch.diff", + when="@:1.5.0", + sha256="b6002dc32372b7d78ed5b16e0932ab12049d1dbec5f6389403603af450fd818d", + ) + + variant("vtk", default=False, description="Build with VTK support") + variant("shared", default=True, description="Build shared libraries") + depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated - depends_on("mmg") + depends_on("mmg", when="@:1.4.0") + depends_on("mmg@5.8: +private_headers", when="@1.5.0:") depends_on("metis") - depends_on("vtk") + depends_on("vtk", when="+vtk") depends_on("mpi") variant("pic", default=True, description="Build with position independent code") @@ -34,10 +48,13 @@ class Parmmg(CMakePackage): def cmake_args(self): args = [ self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define("DOWNLOAD_MMG", False), self.define("MMG_DIR", self.spec["mmg"].prefix), self.define("DOWNLOAD_METIS", False), self.define("METIS_DIR", self.spec["metis"].prefix), + self.define("MMG_INCLUDE_DIRS", self.spec["mmg"].headers.directories), + self.define_from_variant("USE_VTK", "vtk"), ] return args diff --git a/var/spack/repos/builtin/packages/parmmg/parmmg_cmake_patch.diff b/var/spack/repos/builtin/packages/parmmg/parmmg_cmake_patch.diff new file mode 100644 index 00000000000..f4a11e92d0e --- /dev/null +++ b/var/spack/repos/builtin/packages/parmmg/parmmg_cmake_patch.diff @@ -0,0 +1,113 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index de46022..8a98e87 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -485,11 +485,14 @@ SET(CMAKE_MACOSX_RPATH 1) + ##### + ############################################################################ + SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) ++add_library( ParMmg INTERFACE ) + + IF ( LIBPARMMG_STATIC ) + ADD_AND_INSTALL_LIBRARY ( lib${PROJECT_NAME}_a STATIC + "${pmmg_library_files}" ${PROJECT_NAME} ) + ++ target_link_libraries( ParMmg INTERFACE lib${PROJECT_NAME}_a ) ++ + IF ( DOWNLOAD_MMG ) + Add_Dependencies(lib${PROJECT_NAME}_a Mmg) + ENDIF ( ) +@@ -505,6 +508,8 @@ IF ( LIBPARMMG_SHARED ) + ADD_AND_INSTALL_LIBRARY ( lib${PROJECT_NAME}_so SHARED + "${pmmg_library_files}" ${PROJECT_NAME} ) + ++ target_link_libraries( ParMmg INTERFACE lib${PROJECT_NAME}_so ) ++ + IF ( DOWNLOAD_MMG ) + Add_Dependencies(lib${PROJECT_NAME}_so Mmg) + ENDIF ( ) +@@ -515,6 +520,14 @@ IF ( LIBPARMMG_SHARED ) + + ENDIF() + ++add_library(ParMmg::ParMmg ALIAS ParMmg) ++install(TARGETS ParMmg EXPORT ParMmgTargets ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/parmmg ++ ) ++ + # parmmg header files needed for library + SET( pmmg_headers + ${PMMG_SOURCE_DIR}/libparmmg.h +@@ -540,12 +553,45 @@ ELSE() + SET(LIBPARMMG_INTERNAL OFF ) + ENDIF() + ++if ( BUILD_SHARED_LIBS ) ++ set(LIBPARMMG lib${PROJECT_NAME}_so) ++else() ++ set(LIBPARMMG lib${PROJECT_NAME}_a) ++endif() ++ + install(EXPORT ParMmgTargets + FILE ParMmgTargets.cmake + NAMESPACE ParMmg:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/parmmg + ) + ++ ++include(CMakePackageConfigHelpers) ++ ++configure_package_config_file( ++ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/ParMmgConfig.cmake.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/ParMmgConfig.cmake" ++ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/parmmg" ++) ++ ++# Install ParMmgConfig.cmake and ParMmgConfigVersion.cmake ++install( ++ FILES "${CMAKE_CURRENT_BINARY_DIR}/ParMmgConfig.cmake" ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/parmmg" ++) ++ ++# Install ParMmgConfigVersion.cmake for version tracking ++write_basic_package_version_file( ++ "${CMAKE_CURRENT_BINARY_DIR}/ParMmgConfigVersion.cmake" ++ VERSION ${CMAKE_RELEASE_VERSION} ++ COMPATIBILITY AnyNewerVersion ++) ++ ++install( ++ FILES "${CMAKE_CURRENT_BINARY_DIR}/ParMmgConfigVersion.cmake" ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/parmmg" ++) ++ + ############################################################################### + ##### + ##### Compile PMMG executable +diff --git a/cmake/modules/ParMmgConfig.cmake.in b/cmake/modules/ParMmgConfig.cmake.in +new file mode 100644 +index 0000000..2765460 +--- /dev/null ++++ b/cmake/modules/ParMmgConfig.cmake.in +@@ -0,0 +1,5 @@ ++@PACKAGE_INIT@ ++ ++include(CMakeFindDependencyMacro) ++ ++include("${CMAKE_CURRENT_LIST_DIR}/ParMmgTargets.cmake") +\ No newline at end of file +diff --git a/cmake/modules/macros.cmake b/cmake/modules/macros.cmake +index bfeb250..616c97d 100644 +--- a/cmake/modules/macros.cmake ++++ b/cmake/modules/macros.cmake +@@ -156,7 +156,6 @@ MACRO ( ADD_AND_INSTALL_LIBRARY + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +- Component lib + ) + ENDMACRO ( ) +