parmmg: add new versions up to 1.5 and new variants (#47387)
* add new versions up to 1.5 and new variants variant vtk: make vtk optional variant shared: build shared libs added patch to fix parmmg cmake so that it can be used by other software with find_package * use +private for mmg@5.8: and parmmg@1.5: * fix style and constraint mmg version * add a condition on patch, use private_headers from mmg PR feelpp/spack#14
This commit is contained in:
parent
8823c57b72
commit
d67afc7191
@ -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
|
||||
|
113
var/spack/repos/builtin/packages/parmmg/parmmg_cmake_patch.diff
Normal file
113
var/spack/repos/builtin/packages/parmmg/parmmg_cmake_patch.diff
Normal file
@ -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 ( )
|
||||
|
Loading…
Reference in New Issue
Block a user