-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMakefile
More file actions
58 lines (38 loc) · 1.42 KB
/
Makefile
File metadata and controls
58 lines (38 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
FC = gfortran
FCFLAGS = -Wall
INCLUDE = /usr/include
LDFLAGS = netcdff
SRCDIR = src
OBJDIR = build
TESTDIR = tests
EXAMPLEDIR = examples
TMPDIR = tmp
OBJFILES = $(patsubst $(SRCDIR)/%.f90, $(OBJDIR)/%.o, $(addprefix $(SRCDIR)/, mo_types.f90 mo_netcdf.f90))
TESTOBJFILES = $(patsubst $(TESTDIR)/%.f90, $(TMPDIR)/%.o, $(addprefix $(TESTDIR)/, mo_string.f90 mo_assert.f90 mo_testhelper.f90))
TESTEXE = $(patsubst $(TESTDIR)/%.f90, $(TMPDIR)/%, $(wildcard $(TESTDIR)/test_*.f90))
EXAMPLEXE = $(patsubst $(EXAMPLEDIR)/%.f90, $(TMPDIR)/%, $(wildcard $(EXAMPLEDIR)/*.f90))
all: $(OBJDIR) $(OBJFILES)
test: all $(TMPDIR) $(TESTOBJFILES) $(TESTEXE)
examples: all $(TMPDIR) $(EXAMPLEXE)
clean:
rm -r $(OBJDIR) $(TMPDIR)
# create directory
$(OBJDIR):
mkdir -p $(OBJDIR)
# build the module
$(OBJDIR)/%.o : $(SRCDIR)/%.f90
$(FC) -c $(FCFLAGS) -I$(INCLUDE) -J$(OBJDIR) -o $@ $< -l$(LDFLAGS)
# create directory
$(TMPDIR):
mkdir -p $(TMPDIR)
# build the test dependencies
$(TMPDIR)/%.o : $(TESTDIR)/%.f90
$(FC) -c $(FCFLAGS) -I$(INCLUDE) -I$(OBJDIR) -J$(TMPDIR) -o $@ $< -l$(LDFLAGS)
# build and run the tests
$(TMPDIR)/% : $(TESTDIR)/%.f90
$(FC) $(FCFLAGS) -I$(INCLUDE) -I$(OBJDIR) -I$(TMPDIR) $(OBJFILES) $(TESTOBJFILES) -o $@ $< -l$(LDFLAGS)
./$@
# build and run the examples
$(TMPDIR)/% : $(EXAMPLEDIR)/%.f90
$(FC) $(FCFLAGS) -I$(INCLUDE) -I$(OBJDIR) -I$(TMPDIR) $(OBJFILES) -o $@ $< -l$(LDFLAGS)
./$@