refactoring
[laserbrain_demo] / Makefile
1 src = $(wildcard src/*.cc) $(wildcard src/machine/*.cc)
2 csrc = $(wildcard src/*.c) $(wildcard src/machine/*.c)
3 obj = $(src:.cc=.o) $(csrc:.c=.o)
4 dep = $(obj:.o=.d)
5 bin = demo
6
7 opt = -O0
8 dbg = -g
9
10 incpath = -Isrc -Isrc/machine -I/usr/local/include
11 libpath = -L/usr/local/lib
12
13 warn = -pedantic -Wall
14
15 CFLAGS = $(warn) $(opt) $(dbg) $(incpath)
16 CXXFLAGS = -std=c++11 $(warn) $(opt) $(dbg) $(incpath)
17 LDFLAGS = $(libpath) $(libgl_$(sys)) -lm -lgmath -lvmath -limago -lresman -lpthread
18
19 sys = $(shell uname -s)
20 libgl_Linux = -lGL -lGLU -lglut -lGLEW
21 libgl_Darwin = -framework OpenGL -framework GLUT -lGLEW
22
23 $(bin): .clang_complete $(obj)
24         $(CXX) -o $@ $(obj) $(LDFLAGS)
25
26 .clang_complete: Makefile
27         rm -f $@
28         for i in $(CXXFLAGS); do echo $$i >>$@; done
29
30 -include $(dep)
31
32 %.d: %.c
33         @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@
34
35 %.d: %.cc
36         @$(CPP) $(CXXFLAGS) $< -MM -MT $(@:.d=.o) >$@
37
38 .PHONY: clean
39 clean:
40         rm -f $(obj) $(bin)
41
42 .PHONY: cleandep
43 cleandep:
44         rm -f $(dep)