+SOURCES_libgldbg := source/gldecoder.c \
+ source/glprint.c \
+ source/enums.c \
+ source/arraysize.c \
+ source/tmpalloc.c
+SOURCES_glwrap := source/glwrap.c \
+ source/glwrap_funcs.c \
+ source/arraysize.c
+SOURCES_gldump := source/gldump.c
+SOURCES_gldbg := source/gldbg.cpp \
+ source/commandinterpreter.cpp \
+ source/tracer.cpp \
+ source/process.cpp \
+ source/glstate.cpp \
+ source/texturestate.cpp \
+ source/bufferstate.cpp \
+ source/profiler.cpp \
+ source/arraystate.cpp
+TEMPLATES := source/functions.enum.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))
+
+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))
+
+.PHONY: all