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