X-Git-Url: http://git.tdb.fi/?p=gldbg.git;a=blobdiff_plain;f=Makefile;h=294618646c0f3f46133aab054430a25955758cf8;hp=c4dedb2484142439f6f193c85223c73e6e651bc8;hb=03c86c2f632b642aa94f721e326787e91aa69c25;hpb=9cdca19aa017ea1711436977855e885d91e78ab0 diff --git a/Makefile b/Makefile index c4dedb2..2946186 100644 --- a/Makefile +++ b/Makefile @@ -1,46 +1,99 @@ # $Id$ -CFLAGS = -Igensrc -ggdb -Wall -Wextra -CXXFLAGS = -Igensrc -ggdb -Wall -Wextra +CPPFLAGS := -I. +CFLAGS := -ggdb -Wall -Wextra +CXXFLAGS := $(CFLAGS) -PACKAGES_gldbg = mspcore mspstrings mspio mspfs -CXXFLAGS_gldbg = $(shell pkg-config --cflags $(PACKAGES_gldbg)) -LIBS_gldbg = $(shell pkg-config --libs $(PACKAGES_gldbg)) -lreadline +PACKAGES_gldbg := mspcore mspstrings mspio mspfs + +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 + +objs = $(patsubst source/%.cpp,temp/%.o,$(patsubst source/%.c,temp/%.o,$(1))) +deps = $(patsubst source/%.cpp,temp/%.d,$(patsubst source/%.c,temp/%.d,$(1))) +gen = $(patsubst source/%.t,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)) + +$(OBJECTS_gldbg): CXXFLAGS += $(shell pkg-config --cflags $(PACKAGES_gldbg)) +gldbg: LIBS += $(shell pkg-config --libs $(PACKAGES_gldbg)) -lreadline +gldump gldbg: LIBS += ./libgldbg.a all: glwrap.so gldump gldbg -glwrap.so: source/glwrap.o source/arraysize.o +glwrap.so: $(OBJECTS_glwrap) $(CC) -shared -o $@ $^ $(LIBS) $(LDFLAGS) -gldump: source/gldecoder.o source/gldump.o source/glprint.o source/enums.o source/arraysize.o source/tmpalloc.o +gldump: $(OBJECTS_gldump) libgldbg.a $(CC) -o $@ $^ $(LIBS) $(LDFLAGS) -gldbg: source/gldbg.o source/gldecoder.o source/glprint.o source/commandinterpreter.o source/tracer.o source/process.o source/enums.o source/arraysize.o source/tmpalloc.o source/glstate.o source/texturestate.o source/bufferstate.o source/profiler.o source/arraystate.o - $(CXX) -o $@ $^ $(LIBS_gldbg) $(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: source/arraysize.h gensrc/glprint.funcs gensrc/gldecoder.struct -source/enums.o: gensrc/enums.table -source/gldbg.o: source/gldbg.h source/gldecoder.h source/tracer.h source/commandinterpreter.h source/glstate.h source/profiler.h -source/tracer.o: source/gldecoder.h source/glprint.h -source/commandinterpreter.o: source/gldbg.h source/glstate.h -source/process.o: source/process.h -source/glstate.o: source/glstate.h source/gldecoder.h source/texturestate.h source/bufferstate.h -source/texturestate.o: source/texturestate.h -source/bufferstate.o: source/arraystate.h source/bufferstate.h source/enums.h -source/arraystate.o: source/arraystate.h source/bufferstate.h - -%.o: %.cpp - $(CXX) -c $(CXXFLAGS) $(CXXFLAGS_gldbg) -o $@ $< +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 genwrap.py gl.files gl.tm gl.io gl.spec glx.files glx.tm glx.io glx.spec glxext.spec python ./genwrap.py $< gl.files glx.files >$@ -gensrc/enums.table: enum.spec genenum.py +gensrc/enums.table: gensrc/.created enum.spec genenum.py python ./genenum.py enum.spec >$@ gensrc/.created: mkdir -p gensrc touch $@ + +-include $(DEPS_all) + +temp/%.d: source/%.c temp/.created + $(CC) $(CPPFLAGS) -MM -MF $@ -MT $(patsubst source/%.c,temp/%.o,$<) -MG $< + +temp/%.d: source/%.cpp temp/.created + $(CXX) $(CPPFLAGS) -MM -MF $@ -MT $(patsubst source/%.cpp,temp/%.o,$<) -MG $< + +.PHONY: clean +clean: + $(RM) $(DEPS_all) + $(RM) $(OBJECTS_all) + $(RM) gensrc/enums.table $(GENSOURCES) + $(RM) glwrap.so libgldbg.a gldump gldbg