# CONFIG (overwritable) FC := gfortran ## debug friendly flags, but enable FFLAGS commandline appending FASTFFLAGS := -w -Ofast $(FFLAGS) override FFLAGS += -g -Wall -Og -fbounds-check -ffpe-trap=invalid -fbacktrace \ -ffree-line-length-none --debug \ -I/p/system/packages/libraries/netcdf-fortran/4.6.1-swim/include LDFLAGS := -L/p/system/packages/libraries/netcdf-fortran/4.6.1-swim/lib -lnetcdff IFORTFFLAGS := -extend_source -ipo -O3 -no-prec-div -fp-model fast=2 -xHost $(FASTFFLAGS) PROG := swim ## files other files depend on (in order) DEPENDS := common.f90 mod_snow.f90 mod_reservoir.f90 mod_climncdf.f90 # SOURCES AND OBJECTS FSRCS = ${wildcard *.f} F90SRCS = ${filter-out $(DEPENDS), ${wildcard *.f90}} DEPENDOBJS = ${patsubst %.f90, %.o, $(DEPENDS)} OBJS = ${patsubst %.f, %.o, $(FSRCS)} ${patsubst %.f90, %.o, $(F90SRCS)} # TARGETS default: $(PROG) fast: $(MAKE) FFLAGS="$(FASTFFLAGS)" $(PROG) cluster: $(MAKE) FC=ifort FFLAGS="$(IFORTFFLAGS)" $(PROG) clean: rm -f $(PROG) *.o *.mod # LINKING $(PROG): $(OBJS) $(FC) $(FFLAGS) $(LDFLAGS) $(DEPENDOBJS) $(OBJS) -o $@ # DEPENDENCIES $(OBJS): $(DEPENDOBJS) # COMPILATIONS %.o: %.f $(FC) $(FFLAGS) -c $< %.o: %.f90 $(FC) $(FFLAGS) -c $<