Skip to content

Instantly share code, notes, and snippets.

@ponderomotion
Created February 19, 2013 17:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ponderomotion/4987964 to your computer and use it in GitHub Desktop.
Save ponderomotion/4987964 to your computer and use it in GitHub Desktop.
Generic FORTRAN Makefile
SHELL = /bin/sh
# FORTRAN compiler
FC = mpif90
# Check if we're using ifort or something else
COMPILER = $(shell $(FC) -show | cut -d' ' -f1)
FFLAGS = -Wall
# --------------------------------------------------
TARGET = mainprog
DATADIR = Data
SRCDIR = src
OBJDIR = obj
BINDIR = bin
# ifort and gfortran take different module flags
ifeq ($(COMPILER),ifort)
MODULEFLAG := -module # INTEL
else
MODULEFLAG = -J # GNU etc.
endif
# add any extra objects here
OBJFILES = mainprog.o mod_lib.o
FULLTARGET = $(BINDIR)/$(TARGET)
#vpath %.f90 $(SRCDIR)
#vpath %.F90 $(SRCDIR)
#vpath %.f95 $(SRCDIR)
#vpath %.F95 $(SRCDIR)
#vpath %.o $(OBJDIR)
VPATH = $(SRCDIR):$(OBJDIR)
# Rules to build the fortran files
.SUFFIXES: .f90 .o
.f90.o: ; @mkdir -p $(BINDIR) $(OBJDIR) $(DATADIR)
$(FC) -c $(FFLAGS) $(MODULEFLAG) $(OBJDIR) -o $(OBJDIR)/$@ $<
.SUFFIXES: .F90 .o
.F90.o: ; @mkdir -p $(BINDIR) $(OBJDIR) $(DATADIR)
$(FC) -c $(FFLAGS) $(DFLAGS) $(MODULEFLAG) $(OBJDIR) -o $(OBJDIR)/$@ $<
.SUFFIXES: .f95 .o
.f95.o: ; @mkdir -p $(BINDIR) $(OBJDIR) $(DATADIR)
$(FC) -c $(FFLAGS) $(MODULEFLAG) $(OBJDIR) -o $(OBJDIR)/$@ $<
.SUFFIXES: .F95 .o
.F95.o: ; @mkdir -p $(BINDIR) $(OBJDIR) $(DATADIR)
$(FC) -c $(FFLAGS) $(DFLAGS) $(MODULEFLAG) $(OBJDIR) -o $(OBJDIR)/$@ $<
%.o: %.mod
$(FULLTARGET): $(OBJFILES)
$(FC) $(FFLAGS) $(MODULEFLAG) $(OBJDIR) -o $@ $(addprefix $(OBJDIR)/, $(OBJFILES))
.PHONEY: deepclean
deepclean:
@rm -rf *~ $(BINDIR) $(OBJDIR) $(DATADIR) $(SRCDIR)/*~ *.out *.err *.log *.ipo
.PHONEY: clean
clean:
@rm -rf *~ $(BINDIR) $(OBJDIR) $(SRCDIR)/*~ *.out *.err *.log *.ipo
.PHONEY: tidy
tidy:
@rm -rf $(OBJDIR) $(SRCDIR)/*~ *.out *.err *.log *.ipo
# Add Dependencies here
mainprog.o : mod_lib.o
mod_lib.o :
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment