@@ -20,18 +20,95 @@ ifeq ($(F_LOWO_OPTS),)
2020endif
2121# ------------------------------------------------------------------------------------------#
2222
23- ifeq ($(OPT ) ,"dbg")
24- INCLUDES = ""
23+
24+
25+ # ------------------------------------------------------------------------------------------#
26+ # Make variables CMACH and FC_TYPE are correctly set. #
27+ # ------------------------------------------------------------------------------------------#
28+ ifeq ($(CMACH ) ,)
29+ CMACH_ERROR =Y
30+ else ifeq ($(CMACH),$(filter $(CMACH), LINUX MACOS))
31+ CMACH_ERROR =N
32+ else
33+ CMACH_ERROR =Y
34+ endif
35+ ifeq ($(FC_TYPE ) ,)
36+ FCTYPE_ERROR =Y
37+ else ifeq ($(FC_TYPE),$(filter $(FC_TYPE), GNU INTEL PGI))
38+ FCTYPE_ERROR =N
39+ else
40+ FCTYPE_ERROR =Y
41+ endif
42+ # ------------------------------------------------------------------------------------------#
43+
44+
45+ # ------------------------------------------------------------------------------------------#
46+ # Gracefully fail if CMACH and FC_TYPE are not correctly set. This will allow users to #
47+ # make sure they selected a supported version. #
48+ # ------------------------------------------------------------------------------------------#
49+ FATAL_ERROR =N
50+ ifeq ($(CMACH_ERROR ) ,Y)
51+ $(info )
52+ $(info ---~---)
53+ $(info FATAL ERROR!)
54+ $(info ---~---)
55+ $(info Variable CMACH is either not defined or has an invalid value in your)
56+ $(info include.mk.[PLATFORM]. Please set to one of the following values)
57+ $(info )
58+ $(info CMACH=LINUX -- For Linux machines)
59+ $(info CMACH=MACOS -- For MacOS machines)
60+ $(info )
61+ $(info We currently do not support compilation in Windows. If you know how to set)
62+ $(info up ED2 to run on Windows machines, please submit a pull request.)
63+ $(info ---~---)
64+ $(info )
65+ FATAL_ERROR =Y
2566endif
67+ ifeq ($(FCTYPE_ERROR ) ,Y)
68+ $(info )
69+ $(info ---~---)
70+ $(info FATAL ERROR!)
71+ $(info ---~---)
72+ $(info Variable FC_TYPE is either not defined or has an invalid value in your)
73+ $(info include.mk.[PLATFORM]. Please set to one of the following values)
74+ $(info )
75+ $(info FC_TYPE=GNU -- To compile ED2 with gfortran/gcc)
76+ $(info FC_TYPE=INTEL -- To compile ED2 with ifx/icx, or ifort/icc in older systems)
77+ $(info FC_TYPE=PGI -- To compile ED2 with pgfortran/pgcc)
78+ $(info )
79+ $(info New types may be added in the future. Feel free to contribute with other)
80+ $(info compilers.)
81+ $(info ---~---)
82+ $(info )
83+ FATAL_ERROR =Y
84+ endif
85+ ifeq ($(FATAL_ERROR ) ,Y)
86+ $(error CMACH and/or FC_TYPE are not properly set in your include.mk.[PLATFORM] file.)
87+ endif
88+ # ------------------------------------------------------------------------------------------#
89+
90+
91+
92+ # ----- Set parallel flag based on the settings. -------------------------------------------#
93+ ifeq ($(F_COMP ) ,$(filter $(F_COMP ) , mpif90 mpifortran) )
94+ PAR_DEFS =-DRAMS_MPI
95+ else ifdef $(PAR_LIBS)
96+ PAR_DEFS =-DRAMS_MPI
97+ else
98+ PAR_DEFS =
99+ endif
100+ # ------------------------------------------------------------------------------------------#
101+
102+
26103
27104# ----- Compiler commands. -----------------------------------------------------------------#
28105INCLUDES = $(PAR_INCS ) -I$(ED_INCS ) $(HDF5_INCS ) $(MPI_INCS ) $(LAPACK_INCS )
29106F90_COMMAND = $(F_COMP ) -c $(F_OPTS ) $(INCLUDES ) $(PAR_DEFS )
30107F90_LOWO_COMMAND = $(F_COMP ) -c $(F_LOWO_OPTS ) $(INCLUDES ) $(PAR_DEFS )
31- FPP_COMMAND = $(F_COMP ) -c -DUSE_INTERF= $( USE_INTERF ) -DUSENC= $( USENC ) - D$(CMACH ) \
32- -D $( FC_TYPE ) - DUSE_COLLECTIVE_MPIO=$(USE_COLLECTIVE_MPIO ) \
108+ FPP_COMMAND = $(F_COMP ) -c -D $( CMACH ) -D$(FC_TYPE ) \
109+ -DUSE_COLLECTIVE_MPIO=$(USE_COLLECTIVE_MPIO ) \
33110 -DUSE_MPIWTIME=$(USE_MPIWTIME ) $(F_OPTS ) $(INCLUDES ) $(PAR_DEFS )
34- FPP_LOWO_COMMAND = $(F_COMP ) -c -DUSE_INTERF= $( USE_INTERF ) -DUSENC= $( USENC ) - D$(CMACH ) \
111+ FPP_LOWO_COMMAND = $(F_COMP ) -c -D $( CMACH ) -D$(FC_TYPE ) \
35112 -DUSE_COLLECTIVE_MPIO=$(USE_COLLECTIVE_MPIO ) \
36113 -DUSE_MPIWTIME=$(USE_MPIWTIME ) $(F_LOWO_OPTS ) $(INCLUDES ) $(PAR_DEFS )
37114CXX_COMMAND = $(C_COMP ) -c $(C_OPTS ) -D$(CMACH ) $(HDF5_INCS ) $(INCLUDES ) $(PAR_DEFS )
0 commit comments