Merge pull request #113 from gitter-badger/gitter-badge
[sddekit.git] / makefile
bloba78a7ed20daf1c23bd192559930c9ed0bc80736a
1 # copyright 2016 Apache 2 sddekit authors
3 CC=gcc
4 LDFLAGS = -lm
5 VALFLAGS = --error-exitcode=1 --track-origins=yes --leak-check=full
6 CFLAGS = -fPIC -std=c99 -Isrc
7 OBJEXT=o
8 SANFLAGS=-fsanitize=address -fsanitize=float-cast-overflow -fsanitize=undefined
10 # various build types {{{
11 ifeq ($(BUILD),fast)
12 CFLAGS += -Ofast
13 else ifeq ($(BUILD),cov)
14 CFLAGS += -pg -fprofile-arcs -ftest-coverage
15 else ifeq ($(BUILD),js)
16 CFLAGS += -s ALLOW_MEMORY_GROWTH=1 -O2
17 else
18 CFLAGS += -Wall -Wextra $(SANFLAGS) -O0 -g
19 endif
20 # }}}
22 # file lists {{{
23 c_lib=$(wildcard src/*.c)
24 c_test=$(wildcard test/test_*.c)
25 o_lib=$(patsubst src/%.c,%.$(OBJEXT),$(c_lib))
26 o_test=$(patsubst test/%.c,%.$(OBJEXT),$(c_test))
27 # }}}
29 # platform specific stuff (http://stackoverflow.com/q/19928965) {{{
30 ifeq ($(OS),Windows_NT)
31 DLLEXT=dll
32 RM=del /f
33 EXE=.exe
34 else
35 DLLEXT=so
36 RM=rm -fr
37 EXE=
38 endif
39 # except mac
40 ifeq ($(OS),Darwin)
41 DLLEXT=dylib
42 endif
43 ifdef COMSPEC
44 SHELL := $(COMSPEC)
45 endif
47 # }}}
49 # artifacts {{{
51 help:
52 echo "make tests$(EXE) | bench_net_exc$(EXE) | libSDDEKit.$(DLLEXT) | clean"
54 tests$(EXE): $(o_lib) $(o_test)
55 $(CC) $(CFLAGS) test/main.c $^ -o tests$(BUILD)$(EXE) $(LDFLAGS)
57 libSDDEKit.$(DLLEXT): $(o_lib)
58 $(CC) -shared $^ -o libSDDEKit.$(DLLEXT) $(LDFLAGS)
60 clean:
61 $(RM) $(o_lib) $(o_test) bench_* tests* *.dat *.exe *.$(DLLEXT) *.ilk *.pdb
63 gh-pages:
64 git branch -D gh-pages
65 git init docs
66 doxygen
67 cd docs && git add html/* && git mv html/* ./ && git commit -m "add doxygen html"
68 git fetch docs master:gh-pages
69 rm -rf docs
71 # }}}
73 # generic rules {{{
75 %.$(OBJEXT): src/%.c
76 $(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@
78 %.$(OBJEXT): test/%.c
79 $(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@
81 %$(EXE): bench/%.c $(o_lib)
82 $(CC) $(CFLAGS) $< $(o_lib) $(LDFLAGS) -o $@
84 # }}}
86 # vim: foldmethod=marker