# template for the Intel fortran compiler # typical use with mkmf # mkmf -t template.ifc -c"-Duse_libMPI -Duse_netCDF" path_names /usr/local/include ############ # commands # ############ FC = ifort CC = icc LD = ifort ######### # flags # ######### DEBUG = REPRO = on VERBOSE = OPENMP = ############################################## # Need to use at least GNU Make version 3.81 # ############################################## need := 3.81 ok := $(filter $(need),$(firstword $(sort $(MAKE_VERSION) $(need)))) ifneq ($(need),$(ok)) $(error Need at least make version $(need). Load module gmake/3.81) endif MAKEFLAGS += --jobs=2 NETCDF_ROOT = /usr/local/x64/netcdf-4.1.2 MPICH_ROOT = /usr/local/x64/mpich2 HDF5_ROOT = /usr/local/x64/hdf5-1.8.6/lib ZLIB_ROOT = INCLUDE = -I$(NETCDF_ROOT)/include -I$(MPICH_ROOT)/include FPPFLAGS := -fpp -Wp,-w $(INCLUDE) FFLAGS := -fno-alias -automatic -safe-cray-ptr -ftz -assume byterecl -i4 -r8 -nowarn FFLAGS_OPT = -O3 -debug minimal -fp-model precise -override-limits FFLAGS_DEBUG = -g -O0 -check -check noarg_temp_created -check nopointer -warn -warn noerrors -fpe0 -traceback -ftrapuv FFLAGS_REPRO = -O2 -debug minimal -no-vec -fp-model precise -override-limits FFLAGS_OPENMP = -openmp FFLAGS_VERBOSE = -v -V -what CFLAGS := -D__IFC $(INCLUDE) CFLAGS_OPT = -O2 -debug minimal -no-vec CFLAGS_OPENMP = -openmp CFLAGS_DEBUG = -O0 -g -ftrapuv -traceback LDFLAGS := LDFLAGS_VERBOSE := -Wl,-V,--verbose,-cref,-M ifneq ($(REPRO),) CFLAGS += $(CFLAGS_REPRO) FFLAGS += $(FFLAGS_REPRO) endif ifneq ($(DEBUG),) CFLAGS += $(CFLAGS_DEBUG) FFLAGS += $(FFLAGS_DEBUG) #else #CFLAGS += $(CFLAGS_OPT) #FFLAGS += $(FFLAGS_OPT) endif ifneq ($(OPENMP),) CFLAGS += $(CFLAGS_OPENMP) FFLAGS += $(FFLAGS_OPENMP) endif ifneq ($(VERBOSE),) CFLAGS += $(CFLAGS_VERBOSE) FFLAGS += $(FFLAGS_VERBOSE) LDFLAGS += $(LDFLAGS_VERBOSE) endif ifeq ($(NETCDF),3) # add the use_LARGEFILE cppdef ifneq ($(findstring -Duse_netCDF,$(CPPDEFS)),) CPPDEFS += -Duse_LARGEFILE endif endif ifneq ($(findstring netcdf-4.0.1,$(LOADEDMODULES)),) LIBS := -L$(NETCDF_ROOT)/lib -lnetcdf -lnetcdff -L$(HDF5_ROOT)/lib -lhdf5_hl -lhdf5 -lcurl -L$(ZLIB_ROOT)/lib -lz else LIBS := -L$(NETCDF_ROOT)/lib -lnetcdf -lnetcdff endif LIBS += -L$(MPICH_ROOT)/lib -lmpich -lpthread LDFLAGS += $(LIBS) #--------------------------------------------------------------------------- # you should never need to change any lines below. # see the MIPSPro F90 manual for more details on some of the file extensions # discussed here. # this makefile template recognizes fortran sourcefiles with extensions # .f, .f90, .F, .F90. Given a sourcefile ., where is one of # the above, this provides a number of default actions: # make .opt create an optimization report # make .o create an object file # make .s create an assembly listing # make .x create an executable file, assuming standalone # source # make .i create a preprocessed file (for .F) # make .i90 create a preprocessed file (for .F90) # The macro TMPFILES is provided to slate files like the above for removal. RM = rm -f SHELL = /bin/csh -f TMPFILES = .*.m *.B *.L *.i *.i90 *.l *.s *.mod *.opt .SUFFIXES: .F .F90 .H .L .T .f .f90 .h .i .i90 .l .o .s .opt .x .f.L: $(FC) $(FFLAGS) -c -listing $*.f .f.opt: $(FC) $(FFLAGS) -c -opt_report_level max -opt_report_phase all -opt_report_file $*.opt $*.f .f.l: $(FC) $(FFLAGS) -c $(LIST) $*.f .f.T: $(FC) $(FFLAGS) -c -cif $*.f .f.o: $(FC) $(FFLAGS) -c $*.f .f.s: $(FC) $(FFLAGS) -S $*.f .f.x: $(FC) $(FFLAGS) -o $*.x $*.f *.o $(LDFLAGS) .f90.L: $(FC) $(FFLAGS) -c -listing $*.f90 .f90.opt: $(FC) $(FFLAGS) -c -opt_report_level max -opt_report_phase all -opt_report_file $*.opt $*.f90 .f90.l: $(FC) $(FFLAGS) -c $(LIST) $*.f90 .f90.T: $(FC) $(FFLAGS) -c -cif $*.f90 .f90.o: $(FC) $(FFLAGS) -c $*.f90 .f90.s: $(FC) $(FFLAGS) -c -S $*.f90 .f90.x: $(FC) $(FFLAGS) -o $*.x $*.f90 *.o $(LDFLAGS) .F.L: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -listing $*.F .F.opt: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -opt_report_level max -opt_report_phase all -opt_report_file $*.opt $*.F .F.l: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c $(LIST) $*.F .F.T: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -cif $*.F .F.f: $(FC) $(CPPDEFS) $(FPPFLAGS) -EP $*.F > $*.f .F.i: $(FC) $(CPPDEFS) $(FPPFLAGS) -P $*.F .F.o: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c $*.F .F.s: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -S $*.F .F.x: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -o $*.x $*.F *.o $(LDFLAGS) .F90.L: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -listing $*.F90 .F90.opt: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -opt_report_level max -opt_report_phase all -opt_report_file $*.opt $*.F90 .F90.l: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c $(LIST) $*.F90 .F90.T: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -cif $*.F90 .F90.f90: $(FC) $(CPPDEFS) $(FPPFLAGS) -EP $*.F90 > $*.f90 .F90.i90: $(FC) $(CPPDEFS) $(FPPFLAGS) -P $*.F90 .F90.o: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c $*.F90 .F90.s: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -c -S $*.F90 .F90.x: $(FC) $(CPPDEFS) $(FPPFLAGS) $(FFLAGS) -o $*.x $*.F90 *.o $(LDFLAGS)