forked from llarsen71/fson
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmakefile
91 lines (68 loc) · 1.93 KB
/
makefile
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
SRC=src
DIST=dist
BUILD=build
TESTSDIR=tests
FUITDIR=tests/fruit
F95=.f90
OBJ=.o
EXE=
LIBTARGET=$(DIST)/fson-lib.so
FRUITTARGET=$(DIST)/fruit-lib.so
FC = gfortran
FCFLAGS = -O2 #-g -fbounds-check
FMFLAGS = -J$(BUILD)
LDFLAGS=
AR = ar
ARFLAGS= r
# "make" builds all
all: lib examples
# List of example programs
EXAMPLES = basic example1 example2
examples: $(patsubst %, $(DIST)/examples/%$(EXE), $(EXAMPLES)) json
# List of tests
TESTS = fruit_driver
tests: $(TESTOBJS) $(patsubst %, $(DIST)/$(TESTSDIR)/%$(EXE), $(TESTS)) json
# List of test object
TESTSRC = fson_test
TESTOBJS = $(patsubst %, $(BUILD)/$(TESTSDIR)/%$(OBJ), $(TESTSRC))
# Fruit module for testing
FRUIT = fruit_util fruit
FRUITOBJS = $(patsubst %, $(BUILD)/$(FUITDIR)/%$(OBJ), $(FRUIT))
JSON = $(shell find src -name '*.json')
json: $(patsubst $(SRC)%, $(DIST)%, $(JSON))
FSON = fson_string_m fson_value_m fson_path_m fson
OBJECTS = $(patsubst %, $(BUILD)/%$(OBJ), $(FSON))
$(LIBTARGET) : $(OBJECTS)
mkdir -p `dirname $@`
$(AR) $(ARFLAGS) $@ $^
lib: $(LIBTARGET)
$(FRUITTARGET) : $(FRUITOBJS)
mkdir -p `dirname $@`
$(AR) $(ARFLAGS) $@ $^
libfruit: $(FRUITTARGET)
$(DIST)/%.json : $(SRC)/%.json
mkdir -p $(@D)
cp -f $< $@
$(DIST)/%$(EXE) : $(BUILD)/%$(OBJ) $(OBJECTS)
mkdir -p `dirname $@`
$(FC) $(FCFLAGS) -o $@ $^ $(LDFLAGS)
# build test program
$(DIST)/$(TESTSDIR)/%$(EXE) : $(TESTOBJS) $(FRUITTARGET) $(BUILD)/$(TESTSDIR)/%$(OBJ) $(LIBTARGET)
mkdir -p `dirname $@`
$(FC) $(FCFLAGS) -I$(BUILD) -o $@ $^ $(LDFLAGS)
# build fson objects
$(BUILD)/%$(OBJ): $(SRC)/%$(F95)
mkdir -p `dirname $@`
$(FC) $(FCFLAGS) $(FMFLAGS) -c $< -o $@
# build fruit library
$(BUILD)/$(FRUITDIR)/%$(OBJ): $(SRC)/$(FRUITDIR)/%$(F95)
mkdir -p `dirname $@`
$(FC) $(FCFLAGS) $(FMFLAGS) -c $< -o $@
# build test objects
$(BUILD)/$(TESTSDIR)/%$(OBJ): $(SRC)/$(TESTSDIR)/%$(F95)
mkdir -p `dirname $@`
$(FC) $(FCFLAGS) $(FMFLAGS) -c $< -o $@
clean:
rm -rf $(BUILD)
clobber: clean
rm -rf $(DIST)