-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmakefile
58 lines (45 loc) · 1.16 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
CC=gcc
OPT=-O2
GPROF=#-pg
GDB=#-g
W= -Wall -Wextra \
-Wformat=0\
-Warray-bounds\
-Wempty-body\
-Wfloat-equal\
-Wimplicit\
-Wmaybe-uninitialized\
-Wmissing-braces\
-Wparentheses\
-Wsequence-point\
-Wswitch\
-Wtype-limits\
-Wundef\
-Wuninitialized\
-Wunused-parameter\
-Wunused\
STDFLAG= -std=gnu11 # -std=gnu99 can be used
VFLAGS= -DVERSION='"$(shell cat version.txt)"'
CFLAGS= -c $(STDFLAG) -MMD $(OPT) $(GPROF) $(W) $(GDB) $(VFLAGS)
OFLAGS= -lm $(GPROF)
INCL= -I$(SRCDIR)/mol -I$(SRCDIR)/math -I$(SRCDIR)/qm
OBJDIR=./build
SRCDIR=./source
molsrc=$(wildcard $(SRCDIR)/mol/*.c)
molobj=$(molsrc:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
mathsrc=$(wildcard $(SRCDIR)/math/*.c)
mathobj=$(mathsrc:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
qmsrc=$(wildcard $(SRCDIR)/qm/*.c)
qmobj=$(qmsrc:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
all : qm
qm : $(qmobj) $(molobj) $(mathobj) $(OBJDIR)/qm.o
$(CC) $^ -o $@ $(OFLAGS)
$(OBJDIR)/%.o : $(SRCDIR)/%.c version.txt
$(CC) $(CFLAGS) $< -o $@ $(INCL)
clean :
rm -f $(OBJDIR)/*/*.o $(OBJDIR)/*.o qm
cleand :
rm -f $(OBJDIR)/*/*.d $(OBJDIR)/*.d
test :
bash test.bash
include $(wildcard $(OBJDIR)/*/*.d wildcard $(OBJDIR)/*.d)