Seacas package: add Windows support (#42692)
This commit is contained in:
		| @@ -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), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 John W. Parent
					John W. Parent