X-Git-Url: http://git.tdb.fi/?p=gldbg.git;a=blobdiff_plain;f=Makefile;h=ca938f26fd46ba1bcabfa46c3737f97267cdead3;hp=e6f6d11bb4600c5f939d6cfc125f1d9d8634e754;hb=HEAD;hpb=9d1825d591a7261b1cff620ba535d333352984bf diff --git a/Makefile b/Makefile index e6f6d11..ca938f2 100644 --- a/Makefile +++ b/Makefile @@ -1,23 +1,125 @@ -# $Id$ +ifeq ($(FLAVOR),) +FLAVOR := gl +endif -CFLAGS=-Igensrc -ggdb +CPPFLAGS := -I. -Isource -Iflavors/$(FLAVOR)/source +CFLAGS := -ggdb -Wall -Wextra +CXXFLAGS := $(CFLAGS) -all: glwrap.so gldump +PACKAGES_gldbg := libpng12 -glwrap.so: source/glwrap.o +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: source/gldecoder.o source/gldump.o source/glprint.o +gldump: $(OBJECTS_gldump) libgldbg.a $(CC) -o $@ $^ $(LIBS) $(LDFLAGS) -source/glwrap.o: source/functions.h gensrc/functions.enum gensrc/glwrap.funcs -source/gldecoder.o: source/functions.h gensrc/gldecoder.struct gensrc/gldecoder.funcs gensrc/gldecoder.funcs -source/gldump.o: source/gldecoder.h gensrc/gldecoder.struct source/glprint.h -source/glprint.o: gensrc/glprint.funcs gensrc/gldecoder.struct +gldbg: $(OBJECTS_gldbg) libgldbg.a + $(CXX) -o $@ $^ $(LIBS) $(LDFLAGS) + +libgldbg.a: $(OBJECTS_libgldbg) + $(AR) rc $@ $^ -gensrc/functions.enum gensrc/gldecoder.funcs gensrc/gldecoder.struct gensrc/glwrap.funcs gensrc/glprint.funcs: gensrc/.created genwrap.py gl.spec gl.tm - python ./genwrap.py +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