@@ -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+
185207HDF5 = MFCTarget ('hdf5' , ['-DMFC_HDF5=ON' ], True , False , False , MFCTarget .Dependencies ([], [], []), - 1 )
186208SILO = MFCTarget ('silo' , ['-DMFC_SILO=ON' ], True , False , False , MFCTarget .Dependencies ([HDF5 ], [], []), - 1 )
187209HIPFORT = MFCTarget ('hipfort' , ['-DMFC_HIPFORT=ON' ], True , False , False , MFCTarget .Dependencies ([], [], []), - 1 )
188210PRE_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 )
191213SYSCHECK = MFCTarget ('syscheck' , ['-DMFC_SYSCHECK=ON' ], False , False , True , MFCTarget .Dependencies ([], [], [HIPFORT ]), - 1 )
192214DOCUMENTATION = 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
196218DEFAULT_TARGETS = { target for target in TARGETS if target .isDefault }
197219REQUIRED_TARGETS = { target for target in TARGETS if target .isRequired }
0 commit comments