Skip to content

Commit 6bc26be

Browse files
committed
toolchain updates
1 parent bab9d21 commit 6bc26be

File tree

2 files changed

+47
-25
lines changed

2 files changed

+47
-25
lines changed

toolchain/dependencies/CMakeLists.txt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,27 @@ option(MFC_SILO "Build the SILO dependency" OFF)
2424
option(MFC_HIPFORT "Build the HIPFORT dependency" OFF)
2525

2626

27-
# FFTW3
28-
#if (MFC_FFTW)
29-
# find_package(FFTW QUIET)
30-
# if (FFTW_FOUND)
31-
# message(STATUS "FFTW found.")
32-
# add_custom_target(fftw)
33-
# else()
34-
# if (NOT CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
35-
# ExternalProject_Add(fftw
36-
# URL "http://www.fftw.org/fftw-3.3.10.tar.gz"
37-
# CMAKE_ARGS -DBUILD_TESTS=OFF
38-
# -DBUILD_SHARED_LIBS=OFF
39-
# "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
40-
# -DCMAKE_POLICY_VERSION_MINIMUM=3.5
41-
# )
42-
# else()
43-
# message(WARNING "The Fortran compiler vendor is Cray so FFTW3 will not be built. We will use cray-fftw instead.")
44-
# add_custom_target(fftw)
45-
# endif()
46-
# endif()
47-
#endif()
27+
# FFTW
28+
if (MFC_FFTW)
29+
find_package(FFTW QUIET)
30+
if (FFTW_FOUND)
31+
message(STATUS "FFTW found.")
32+
add_custom_target(fftw)
33+
else()
34+
if (NOT CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
35+
ExternalProject_Add(fftw
36+
URL "http://www.fftw.org/fftw-3.3.10.tar.gz"
37+
CMAKE_ARGS -DBUILD_TESTS=OFF
38+
-DBUILD_SHARED_LIBS=OFF
39+
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
40+
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
41+
)
42+
else()
43+
message(WARNING "The Fortran compiler vendor is Cray so FFTW3 will not be built. We will use cray-fftw instead.")
44+
add_custom_target(fftw)
45+
endif()
46+
endif()
47+
endif()
4848

4949

5050
# HDF5

toolchain/mfc/build.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,18 +180,40 @@ def install(self, case: input.MFCInputFile):
180180

181181
cons.print(no_indent=True)
182182

183+
def safe_deps(*args):
184+
"Flatten, remove None, and return unique dependencies."
185+
deps = []
186+
for item in args:
187+
if item is None:
188+
continue
189+
if isinstance(item, list):
190+
deps.extend(i for i in item if i is not None)
191+
else:
192+
deps.append(item)
193+
return deps
194+
195+
# Default to "ON", but allow override via environment variable
196+
fftw_env = os.environ.get("MFC_FFTW", "ON").strip().upper()
197+
fftw_flag = "OFF" if fftw_env == "OFF" else "ON"
198+
fftw_enabled = fftw_env != "OFF"
199+
TARGETS = set()
183200
# name flags isDep isDef isReq dependencies run order
184-
FFTW = MFCTarget('fftw', ['-DMFC_FFTW=ON'], True, False, False, MFCTarget.Dependencies([], [], []), -1)
201+
if fftw_enabled:
202+
FFTW = MFCTarget('fftw', [f"-DMFC_FFTW={fftw_flag}"], True, False, False, MFCTarget.Dependencies([], [], []), -1)
203+
TARGETS.add( FFTW )
204+
else:
205+
FFTW = None
206+
185207
HDF5 = MFCTarget('hdf5', ['-DMFC_HDF5=ON'], True, False, False, MFCTarget.Dependencies([], [], []), -1)
186208
SILO = MFCTarget('silo', ['-DMFC_SILO=ON'], True, False, False, MFCTarget.Dependencies([HDF5], [], []), -1)
187209
HIPFORT = MFCTarget('hipfort', ['-DMFC_HIPFORT=ON'], True, False, False, MFCTarget.Dependencies([], [], []), -1)
188210
PRE_PROCESS = MFCTarget('pre_process', ['-DMFC_PRE_PROCESS=ON'], False, True, False, MFCTarget.Dependencies([], [], []), 0)
189-
SIMULATION = MFCTarget('simulation', ['-DMFC_SIMULATION=ON'], False, True, False, MFCTarget.Dependencies([], [FFTW], [HIPFORT]), 1)
190-
POST_PROCESS = MFCTarget('post_process', ['-DMFC_POST_PROCESS=ON'], False, True, False, MFCTarget.Dependencies([FFTW, HDF5, SILO], [], []), 2)
211+
SIMULATION = MFCTarget('simulation', ['-DMFC_SIMULATION=ON'], False, True, False, MFCTarget.Dependencies([], safe_deps(FFTW), [HIPFORT]), 1)
212+
POST_PROCESS = MFCTarget('post_process', ['-DMFC_POST_PROCESS=ON'], False, True, False, MFCTarget.Dependencies(safe_deps(FFTW, HDF5, SILO), [], []), 2)
191213
SYSCHECK = MFCTarget('syscheck', ['-DMFC_SYSCHECK=ON'], False, False, True, MFCTarget.Dependencies([], [], [HIPFORT]), -1)
192214
DOCUMENTATION = MFCTarget('documentation', ['-DMFC_DOCUMENTATION=ON'], False, False, False, MFCTarget.Dependencies([], [], []), -1)
193215

194-
TARGETS = { FFTW, HDF5, SILO, HIPFORT, PRE_PROCESS, SIMULATION, POST_PROCESS, SYSCHECK, DOCUMENTATION }
216+
TARGETS.update( {HDF5, SILO, HIPFORT, PRE_PROCESS, SIMULATION, POST_PROCESS, SYSCHECK, DOCUMENTATION} )
195217

196218
DEFAULT_TARGETS = { target for target in TARGETS if target.isDefault }
197219
REQUIRED_TARGETS = { target for target in TARGETS if target.isRequired }

0 commit comments

Comments
 (0)