ifeq ($(FLAVOR),) FLAVOR := gl endif CPPFLAGS := -I. -Isource -Iflavors/$(FLAVOR)/source CFLAGS := -ggdb -Wall -Wextra CXXFLAGS := $(CFLAGS) PACKAGES_gldbg := libpng12 FLAVOR_ROOT := flavors/$(FLAVOR) VPATH := $(FLAVOR_ROOT) SOURCES_libgldbg := source/gldecoder.c \ source/glprint.c \ source/enums.c \ source/arraysize.c \ source/tmpalloc.c \ source/packet.c \ source/functions.c SOURCES_glwrap := source/glwrap.c \ source/glwrap_funcs.c \ source/arraysize.c \ source/packet.c \ source/tmpalloc.c SOURCES_gldump := source/gldump.c SOURCES_gldbg := source/main.cpp \ source/gldbg.cpp \ source/commandinterpreter.cpp \ source/process.cpp \ source/strformat.cpp \ source/tool.cpp SOURCES_tracer := source/tracer.cpp SOURCES_profiler := source/profiler.cpp SOURCES_inspector := source/inspector.cpp \ source/glstate.cpp \ source/arraystate.cpp \ source/texturestate.cpp \ source/bufferstate.cpp \ source/programstate.cpp SOURCES_grabber := source/grabber.cpp \ source/grabber_flavor.cpp TEMPLATES := source/functions.enum.t \ source/functions.table.t \ source/gldecoder.funcs.t \ source/gldecoder.struct.t \ source/glprint.funcs.t \ source/glwrap.funcs.t \ source/enums.table.t rename = $(addprefix $(1)/,$(addsuffix $(2),$(basename $(notdir $(3))))) objs = $(call rename,temp,.o,$(1)) deps = $(call rename,temp,.d,$(1)) gen = $(call rename,gensrc,,$(1)) .PHONY: all all: glwrap.so gldump gldbg include flavors/$(FLAVOR)/flavor.mk SOURCES_gldbg += $(foreach tool,$(TOOLS),$(SOURCES_$(tool))) GENSOURCES := $(call gen,$(TEMPLATES)) SOURCES_all := $(sort $(SOURCES_libgldbg) $(SOURCES_glwrap) $(SOURCES_gldump) $(SOURCES_gldbg)) OBJECTS_libgldbg := $(call objs,$(SOURCES_libgldbg)) OBJECTS_glwrap := $(call objs,$(SOURCES_glwrap)) OBJECTS_gldump := $(call objs,$(SOURCES_gldump)) OBJECTS_gldbg := $(call objs,$(SOURCES_gldbg)) OBJECTS_all := $(call objs,$(SOURCES_all)) DEPS_all := $(call deps,$(SOURCES_all) $(TEMPLATES)) $(OBJECTS_gldbg): CXXFLAGS += $(shell pkg-config --cflags $(PACKAGES_gldbg)) gldbg: LIBS += $(shell pkg-config --libs $(PACKAGES_gldbg)) -lreadline -lrt gldump gldbg: LIBS += ./libgldbg.a $(OBJECTS_glwrap): CFLAGS += -fPIC glwrap.so: LDFLAGS += -s glwrap.so: LIBS += -ldl glwrap.so: $(OBJECTS_glwrap) glwrap.ld $(CC) -shared -o $@ $^ $(LIBS) $(LDFLAGS) gldump: $(OBJECTS_gldump) libgldbg.a $(CC) -o $@ $^ $(LIBS) $(LDFLAGS) gldbg: $(OBJECTS_gldbg) libgldbg.a $(CXX) -o $@ $^ $(LIBS) $(LDFLAGS) libgldbg.a: $(OBJECTS_libgldbg) $(AR) rc $@ $^ temp/%.o: source/%.c temp/.created $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< temp/%.o: source/%.cpp temp/.created $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< temp/.created: mkdir -p temp touch $@ gensrc/%: source/%.t gensrc/.created generate.py python ./generate.py $< $(APIS) >$@ gensrc/.created: mkdir -p gensrc touch $@ -include $(DEPS_all) temp/%.d: source/%.c temp/.created $(CC) $(CPPFLAGS) -MM -MF $@ -MT $(call rename,temp,.o,$<) -MG $< temp/%.d: source/%.cpp temp/.created $(CXX) $(CPPFLAGS) -MM -MF $@ -MT $(call rename,temp,.o,$<) -MG $< temp/%.d: source/%.t temp/.created python ./generate.py --depends=$(call rename,gensrc,,$<) $< $(APIS) >$@ .PHONY: clean clean: $(RM) $(DEPS_all) $(RM) $(OBJECTS_all) $(RM) gensrc/enums.table $(GENSOURCES) $(RM) glwrap.so libgldbg.a gldump gldbg