]> git.tdb.fi Git - gldbg.git/blob - Makefile
Move the profiler and inspector tools to the gl flavor
[gldbg.git] / Makefile
1 # $Id$
2
3 ifeq ($(FLAVOR),)
4 FLAVOR := gl
5 endif
6
7 CPPFLAGS := -I. -Isource -Iflavors/$(FLAVOR)/source
8 CFLAGS := -ggdb -Wall -Wextra
9 CXXFLAGS := $(CFLAGS)
10
11 PACKAGES_gldbg := mspcore mspstrings mspio mspfs
12
13 FLAVOR_ROOT := flavors/$(FLAVOR)
14 VPATH := $(FLAVOR_ROOT)
15
16 SOURCES_libgldbg := source/gldecoder.c \
17         source/glprint.c \
18         source/enums.c \
19         source/arraysize.c \
20         source/tmpalloc.c
21 SOURCES_glwrap := source/glwrap.c \
22         source/glwrap_funcs.c \
23         source/arraysize.c
24 SOURCES_gldump := source/gldump.c
25 SOURCES_gldbg := source/gldbg.cpp \
26         source/commandinterpreter.cpp \
27         source/process.cpp \
28         source/tool.cpp
29 SOURCES_tracer := source/tracer.cpp
30 SOURCES_profiler := source/profiler.cpp
31 SOURCES_inspector := source/inspector.cpp \
32         source/glstate.cpp \
33         source/arraystate.cpp \
34         source/texturestate.cpp \
35         source/bufferstate.cpp
36 TEMPLATES := source/functions.enum.t \
37         source/gldecoder.funcs.t \
38         source/gldecoder.struct.t \
39         source/glprint.funcs.t \
40         source/glwrap.funcs.t \
41         source/enums.table.t
42
43 rename = $(addprefix $(1)/,$(addsuffix $(2),$(basename $(notdir $(3)))))
44 objs = $(call rename,temp,.o,$(1))
45 deps = $(call rename,temp,.d,$(1))
46 gen = $(call rename,gensrc,,$(1))
47
48 .PHONY: all
49 all: glwrap.so gldump gldbg
50
51 include flavors/$(FLAVOR)/flavor.mk
52
53 SOURCES_gldbg += $(foreach tool,$(TOOLS),$(SOURCES_$(tool)))
54 GENSOURCES := $(call gen,$(TEMPLATES))
55 SOURCES_all := $(sort $(SOURCES_libgldbg) $(SOURCES_glwrap) $(SOURCES_gldump) $(SOURCES_gldbg))
56
57 OBJECTS_libgldbg := $(call objs,$(SOURCES_libgldbg))
58 OBJECTS_glwrap := $(call objs,$(SOURCES_glwrap))
59 OBJECTS_gldump := $(call objs,$(SOURCES_gldump))
60 OBJECTS_gldbg := $(call objs,$(SOURCES_gldbg))
61
62 OBJECTS_all := $(call objs,$(SOURCES_all))
63 DEPS_all := $(call deps,$(SOURCES_all) $(TEMPLATES))
64
65 $(OBJECTS_gldbg): CXXFLAGS += $(shell pkg-config --cflags $(PACKAGES_gldbg))
66 gldbg: LIBS += $(shell pkg-config --libs $(PACKAGES_gldbg)) -lreadline
67 gldump gldbg: LIBS += ./libgldbg.a
68
69 glwrap.so: $(OBJECTS_glwrap)
70         $(CC) -shared -o $@ $^ $(LIBS) $(LDFLAGS)
71
72 gldump: $(OBJECTS_gldump) libgldbg.a
73         $(CC) -o $@ $^ $(LIBS) $(LDFLAGS)
74
75 gldbg: $(OBJECTS_gldbg) libgldbg.a
76         $(CXX) -o $@ $^ $(LIBS) $(LDFLAGS)
77
78 libgldbg.a: $(OBJECTS_libgldbg)
79         $(AR) rc $@ $^
80
81 temp/%.o: source/%.c temp/.created
82         $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
83
84 temp/%.o: source/%.cpp temp/.created
85         $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
86
87 temp/.created:
88         mkdir -p temp
89         touch $@
90
91 gensrc/%: source/%.t gensrc/.created generate.py
92         python ./generate.py $< $(APIS) >$@
93
94 gensrc/.created:
95         mkdir -p gensrc
96         touch $@
97
98 -include $(DEPS_all)
99
100 temp/%.d: source/%.c temp/.created
101         $(CC) $(CPPFLAGS) -MM -MF $@ -MT $(call rename,temp,.o,$<) -MG $<
102
103 temp/%.d: source/%.cpp temp/.created
104         $(CXX) $(CPPFLAGS) -MM -MF $@ -MT $(call rename,temp,.o,$<) -MG $<
105
106 temp/%.d: source/%.t temp/.created
107         python ./generate.py --depends=$(call rename,gensrc,,$<) $< $(APIS) >$@
108
109 .PHONY: clean
110 clean:
111         $(RM) $(DEPS_all)
112         $(RM) $(OBJECTS_all)
113         $(RM) gensrc/enums.table $(GENSOURCES)
114         $(RM) glwrap.so libgldbg.a gldump gldbg