]> git.tdb.fi Git - gldbg.git/blob - Makefile
Rewrite the Makefile to have proper dependencies and stuff
[gldbg.git] / Makefile
1 # $Id$
2
3 CPPFLAGS := -I.
4 CFLAGS := -ggdb -Wall -Wextra
5 CXXFLAGS := $(CFLAGS)
6
7 PACKAGES_gldbg := mspcore mspstrings mspio mspfs
8
9 SOURCES_libgldbg := source/gldecoder.c \
10         source/glprint.c \
11         source/enums.c \
12         source/arraysize.c \
13         source/tmpalloc.c
14 SOURCES_glwrap := source/glwrap.c \
15         source/glwrap_funcs.c \
16         source/arraysize.c
17 SOURCES_gldump := source/gldump.c
18 SOURCES_gldbg := source/gldbg.cpp \
19         source/commandinterpreter.cpp \
20         source/tracer.cpp \
21         source/process.cpp \
22         source/glstate.cpp \
23         source/texturestate.cpp \
24         source/bufferstate.cpp \
25         source/profiler.cpp \
26         source/arraystate.cpp
27 TEMPLATES := source/functions.enum.t \
28         source/gldecoder.funcs.t \
29         source/gldecoder.struct.t \
30         source/glprint.funcs.t \
31         source/glwrap.funcs.t
32
33 objs = $(patsubst source/%.cpp,temp/%.o,$(patsubst source/%.c,temp/%.o,$(1)))
34 deps = $(patsubst source/%.cpp,temp/%.d,$(patsubst source/%.c,temp/%.d,$(1)))
35 gen = $(patsubst source/%.t,gensrc/%,$(1))
36
37 GENSOURCES := $(call gen,$(TEMPLATES))
38 SOURCES_all := $(sort $(SOURCES_libgldbg) $(SOURCES_glwrap) $(SOURCES_gldump) $(SOURCES_gldbg))
39
40 OBJECTS_libgldbg := $(call objs,$(SOURCES_libgldbg))
41 OBJECTS_glwrap := $(call objs,$(SOURCES_glwrap))
42 OBJECTS_gldump := $(call objs,$(SOURCES_gldump))
43 OBJECTS_gldbg := $(call objs,$(SOURCES_gldbg))
44
45 OBJECTS_all := $(call objs,$(SOURCES_all))
46 DEPS_all := $(call deps,$(SOURCES_all))
47
48 $(OBJECTS_gldbg): CXXFLAGS += $(shell pkg-config --cflags $(PACKAGES_gldbg))
49 gldbg: LIBS += $(shell pkg-config --libs $(PACKAGES_gldbg)) -lreadline
50 gldump gldbg: LIBS += ./libgldbg.a
51
52 all: glwrap.so gldump gldbg
53
54 glwrap.so: $(OBJECTS_glwrap)
55         $(CC) -shared -o $@ $^ $(LIBS) $(LDFLAGS)
56
57 gldump: $(OBJECTS_gldump) libgldbg.a
58         $(CC) -o $@ $^ $(LIBS) $(LDFLAGS)
59
60 gldbg: $(OBJECTS_gldbg) libgldbg.a
61         $(CXX) -o $@ $^ $(LIBS) $(LDFLAGS)
62
63 libgldbg.a: $(OBJECTS_libgldbg)
64         $(AR) rc $@ $^
65
66 temp/%.o: source/%.c temp/.created
67         $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
68
69 temp/%.o: source/%.cpp temp/.created
70         $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
71
72 temp/.created:
73         mkdir -p temp
74         touch $@
75
76 gensrc/%: source/%.t gensrc/.created genwrap.py gl.files gl.tm gl.io gl.spec glx.files glx.tm glx.io glx.spec glxext.spec
77         python ./genwrap.py $< gl.files glx.files >$@
78
79 gensrc/enums.table: gensrc/.created enum.spec genenum.py
80         python ./genenum.py enum.spec >$@
81
82 gensrc/.created:
83         mkdir -p gensrc
84         touch $@
85
86 -include $(DEPS_all)
87
88 temp/%.d: source/%.c temp/.created
89         $(CC) $(CPPFLAGS) -MM -MF $@ -MT $(patsubst source/%.c,temp/%.o,$<) -MG $<
90
91 temp/%.d: source/%.cpp temp/.created
92         $(CXX) $(CPPFLAGS) -MM -MF $@ -MT $(patsubst source/%.cpp,temp/%.o,$<) -MG $<
93
94 .PHONY: clean
95 clean:
96         $(RM) $(DEPS_all)
97         $(RM) $(OBJECTS_all)
98         $(RM) gensrc/enums.table $(GENSOURCES)
99         $(RM) glwrap.so libgldbg.a gldump gldbg