########################################################### #ARCH (fortran) compiler with (C) compiler # serial smpar dmpar dm+sm # # (The last four words on the line above indicate what parallel modes are supported for this build. # Presence of serial indicates the code can be built single-threaded and an option will be presented # by the configure script for this. Likewise, presence of smpar indicates shared-memory parallel (OpenMP), # dmpar indicates distributed memory parallel (MPI), and dm+sm indicates both. The comment character # before the first word is not necessary but it makes the choices neater when the configure script # displays them to the user) # # (The settings below should be all that are needed per architecture/installation. The rest of the # configuration settings are based on these and are done in the postamble (arch/postamble) ) # DMPARALLEL = # 1 OMPCPP = # -D_OPENMP OMP = # (compiler dependent option for openmp, e.g. -mp for pgi; leave commented out) SFC = (serial fortran compiler) SCC = (serial C compiler) DM_FC = (Fortran compile command for mpi, eg: mpif90 -f90=$(SFC)) DM_CC = (C compile comand for mpi, eg: mpicc -cc=$(SCC)) FC = CONFIGURE_FC (leave as is: to be filled in by configure depending on parallel option) CC = CONFIGURE_CC (leave as is: to be filled in by configure depending on parallel option LD = $(FC) (usually leave as is) RWORDSIZE = CONFIGURE_RWORDSIZE # filled in by configure or hard coded to 8 (for var) PROMOTION = (compiler specific option for promotion: e.g. -r$(RWORDSIZE) -i4) ARCH_LOCAL = (local additions to ARCHFLAGS) CFLAGS_LOCAL = (local additions to CFLAGS) LDFLAGS_LOCAL = (local additions to LDFLAGS) FCOPTIM = (optimization options to Fortran compiler) FCREDUCEOPT = (optional: used by noop_exceptsions for certain routines that won't work with full opt on certain compilers) FCNOOPT = (flag that turns off optimization) FCDEBUG = (debug and no optimization options to Fortran compiler) FORMAT_FIXED = (fortran compiler option for fixed format) FORMAT_FREE = (fortran compiler option for free format) FCSUFFIX = (tell the compiler what a fortran file's suffix looks like -- AIX needs) BYTESWAPIO = (option to give bigendian unformatted fortran output, if needed) FCBASEOPTS = $(FCDEBUG) $(FORMAT_FREE) $(BYTESWAPIO) (basic options to fortran compiler, but not optim.) MODULE_SRCH_FLAG = (flag to compiler to tell it where to search for modules -- PGI needs) TRADFLAG = (flag to cpp to tell it to act like it did before script kiddies got hold of it) CPP = (cpp command) AR = (ar command) ARFLAGS = (flags to ar command, want ru capability) M4 = (m4 command) RANLIB = (ranlib command if needed) CC_TOOLS = (the cc command that should be used for compiling in the tools directory. Often just cc or $(SCC) ) #optional (used for BG/L, for example, where the mpi args and paths have to be specified explicitly) MPI_INC = (e.g. -I/bgl/BlueLight/ppcfloor/bglsys/include) MPI_LIB = (e.g. -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts) --- Here is an example: ########################################################### #ARCH Linux x86_64, PGI compiler with gcc # serial smpar dmpar dm+sm # DMPARALLEL = # 1 OMPCPP = # -D_OPENMP OMP = # -mp -Minfo=mp SFC = pgf90 SCC = gcc DM_FC = mpif90 -f90=$(SFC) DM_CC = mpicc -cc=$(SCC) FC = CONFIGURE_FC CC = CONFIGURE_CC LD = $(FC) RWORDSIZE = CONFIGURE_RWORDSIZE PROMOTION = -r$(RWORDSIZE) -i4 ARCH_LOCAL = -DNONSTANDARD_SYSTEM_SUBR # but for ifort compiler, it is -DNONSTANDARD_SYSTEM_FUNC CFLAGS_LOCAL = -w -O3 LDFLAGS_LOCAL = FCOPTIM = -fastsse -Mvect=noaltcode -Msmartalloc -Mprefetch=distance:8 -Mfprelaxed # -Minfo=all =Mneginfo=all FCREDUCEDOPT = $(FCOPTIM) FCNOOPT = -O0 FCDEBUG = # -g $(FCNOOPT) FORMAT_FIXED = -Mfixed FORMAT_FREE = -Mfree FCSUFFIX = BYTESWAPIO = -byteswapio FCBASEOPTS = -w $(FCDEBUG) $(FORMAT_FREE) $(BYTESWAPIO) MODULE_SRCH_FLAG = -module $(WRF_SRC_ROOT_DIR)/main TRADFLAG = -traditional CPP = /lib/cpp -C -P AR = ar ARFLAGS = ru M4 = m4 -B 14000 RANLIB = ranlib CC_TOOLS = $(SCC)