-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
64 lines (46 loc) · 1.51 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
-include Makefile.config
LIBDRC_SRCS:=$(wildcard src/*.cpp)
LIBDRC_OBJS:=$(LIBDRC_SRCS:.cpp=.o)
ifeq ($(DEMOS),y)
DEMOS_NAMES:=3dtest tsdraw simpleaudio
DEMOS_SRCS:=demos/framework/framework.cpp \
$(foreach d,$(DEMOS_NAMES),demos/$(d)/main.cpp)
DEMOS_BINS:=$(foreach d,$(DEMOS_NAMES),demos/$(d)/$(d))
endif
ALL_SRCS:=$(LIBDRC_SRCS) $(DEMOS_SRCS)
ALL_OBJS:=$(ALL_SRCS:.cpp=.o)
ALL_DEPENDS:=$(ALL_SRCS:.cpp=.d)
all: libdrc demos
libdrc: libdrc.so libdrc.a
demos: $(DEMOS_BINS)
libdrc.a: $(LIBDRC_OBJS)
rm -f $@
ar rcs $@ $^
libdrc.so: $(LIBDRC_OBJS) Makefile.config
$(CXX) $(LDFLAGS) -shared -o $@ $(LIBDRC_OBJS)
define build_demo
demos/$(1)/$(1): demos/$(1)/main.o demos/framework/framework.o libdrc.a
$$(CXX) -o $$@ $$^ $$(LDFLAGS) $$(LDFLAGS_DEMOS)
endef
$(foreach d,$(DEMOS_NAMES),$(eval $(call build_demo,$(d))))
%.o %.d: %.cpp Makefile.config
$(CXX) -MD -c $(CXXFLAGS) $< -o $(<:.cpp=.o)
clean:
rm -f $(ALL_OBJS) $(ALL_DEPENDS)
distclean: clean
rm -f libdrc.pc Makefile.config libdrc.a libdrc.so $(DEMOS_BINS)
install: all
install -d $(PREFIX)/lib $(PREFIX)/lib/pkgconfig
install -d $(PREFIX)/include/drc $(PREFIX)/include/drc/c
install libdrc.a libdrc.so $(PREFIX)/lib
install libdrc.pc $(PREFIX)/lib/pkgconfig
install include/drc/*.h $(PREFIX)/include/drc
install include/drc/c/*.h $(PREFIX)/include/drc/c
uninstall:
@echo TODO
doc:
make -C doc html
Makefile.config:
$(error You must run ./configure first)
-include $(ALL_DEPENDS)
.PHONY: all libdrc demos clean distclean install uninstall doc