Seacas package: add Windows support (#42692)
This commit is contained in:
parent
d8b186a381
commit
2066eda3cd
@ -13,6 +13,8 @@
|
|||||||
# KOKKOS support using an external (i.e. spack-supplied) kokkos library.
|
# KOKKOS support using an external (i.e. spack-supplied) kokkos library.
|
||||||
# Data Warehouse (FAODEL) enable/disable
|
# Data Warehouse (FAODEL) enable/disable
|
||||||
|
|
||||||
|
is_windows = sys.platform == "win32"
|
||||||
|
|
||||||
|
|
||||||
class Seacas(CMakePackage):
|
class Seacas(CMakePackage):
|
||||||
"""The SEACAS Project contains the Exodus and IOSS I/O libraries
|
"""The SEACAS Project contains the Exodus and IOSS I/O libraries
|
||||||
@ -125,7 +127,9 @@ class Seacas(CMakePackage):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Build options
|
# Build options
|
||||||
variant("fortran", default=True, description="Compile with Fortran support")
|
variant("fortran", default=not is_windows, description="Compile with Fortran support")
|
||||||
|
# Enable this on Windows at your own risk, SEACAS exports no symbols and so cannot be
|
||||||
|
# meaningfully linked against as a shared library
|
||||||
variant("shared", default=True, description="Enables the build of shared libraries")
|
variant("shared", default=True, description="Enables the build of shared libraries")
|
||||||
variant("mpi", default=True, description="Enables MPI parallelism.")
|
variant("mpi", default=True, description="Enables MPI parallelism.")
|
||||||
|
|
||||||
@ -179,6 +183,15 @@ class Seacas(CMakePackage):
|
|||||||
when="@:2021-01-20",
|
when="@:2021-01-20",
|
||||||
msg="The Faodel TPL is only compatible with @2021-04-05 and later.",
|
msg="The Faodel TPL is only compatible with @2021-04-05 and later.",
|
||||||
)
|
)
|
||||||
|
conflicts("+shared", when="platform=windows")
|
||||||
|
conflicts("+x11", when="platform=windows")
|
||||||
|
# Remove use of variable in array assignment (triggers c2057 on MSVC)
|
||||||
|
# See https://github.com/sandialabs/seacas/issues/438
|
||||||
|
patch(
|
||||||
|
"https://github.com/sandialabs/seacas/commit/29a9ebeccb5a656b4b334fa6af904689da9ffddc.diff?full_index=1",
|
||||||
|
sha256="aedb1fe0af81686f9ed6d511d9b2a3bd52e574eb0ed6363d3f4851280cacde2c",
|
||||||
|
when="@:2023-10-24",
|
||||||
|
)
|
||||||
|
|
||||||
def setup_run_environment(self, env):
|
def setup_run_environment(self, env):
|
||||||
env.prepend_path("PYTHONPATH", self.prefix.lib)
|
env.prepend_path("PYTHONPATH", self.prefix.lib)
|
||||||
@ -203,6 +216,9 @@ def cmake_args(self):
|
|||||||
define(project_name_base + "_ENABLE_CXX11", True),
|
define(project_name_base + "_ENABLE_CXX11", True),
|
||||||
define(project_name_base + "_ENABLE_Kokkos", False),
|
define(project_name_base + "_ENABLE_Kokkos", False),
|
||||||
define(project_name_base + "_HIDE_DEPRECATED_CODE", False),
|
define(project_name_base + "_HIDE_DEPRECATED_CODE", False),
|
||||||
|
# Seacas MSVC tests are not tested with Zoltan
|
||||||
|
# which causes build errors, skip for now
|
||||||
|
define(project_name_base + "_ENABLE_Zoltan", not is_windows),
|
||||||
from_variant("CMAKE_INSTALL_RPATH_USE_LINK_PATH", "shared"),
|
from_variant("CMAKE_INSTALL_RPATH_USE_LINK_PATH", "shared"),
|
||||||
from_variant("BUILD_SHARED_LIBS", "shared"),
|
from_variant("BUILD_SHARED_LIBS", "shared"),
|
||||||
from_variant("SEACASExodus_ENABLE_THREADSAFE", "thread_safe"),
|
from_variant("SEACASExodus_ENABLE_THREADSAFE", "thread_safe"),
|
||||||
@ -211,11 +227,12 @@ def cmake_args(self):
|
|||||||
from_variant("TPL_ENABLE_Pthread", "thread_safe"),
|
from_variant("TPL_ENABLE_Pthread", "thread_safe"),
|
||||||
from_variant("TPL_ENABLE_X11", "x11"),
|
from_variant("TPL_ENABLE_X11", "x11"),
|
||||||
from_variant(project_name_base + "_ENABLE_Fortran", "fortran"),
|
from_variant(project_name_base + "_ENABLE_Fortran", "fortran"),
|
||||||
|
define(project_name_base + "_ENABLE_SEACAS", True),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
options.append(from_variant("TPL_ENABLE_MPI", "mpi"))
|
options.append(from_variant("TPL_ENABLE_MPI", "mpi"))
|
||||||
if "+mpi" in spec:
|
if "+mpi" in spec and not is_windows:
|
||||||
options.extend(
|
options.extend(
|
||||||
[
|
[
|
||||||
define("CMAKE_C_COMPILER", spec["mpi"].mpicc),
|
define("CMAKE_C_COMPILER", spec["mpi"].mpicc),
|
||||||
|
Loading…
Reference in New Issue
Block a user