diff --git a/.gitignore b/.gitignore index b0cd1c35c..474f60804 100644 --- a/.gitignore +++ b/.gitignore @@ -12,11 +12,9 @@ Resources/*.png *.user bin/ obj/ +.obj/ *.opensdf *.pdb -*.o -*.verto -*.frago *.so *.a *.exp diff --git a/Makefile b/Makefile index 63f29fe6e..1e44f4ff9 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,9 @@ +.PHONY: all all: cd renderdoc && make librenderdoc.so cd renderdoccmd && make bin/renderdoccmd +.PHONY: clean clean: cd renderdoc && make clean + cd renderdoccmd && make clean diff --git a/renderdoc/Makefile b/renderdoc/Makefile index ea510187c..a80ca713b 100644 --- a/renderdoc/Makefile +++ b/renderdoc/Makefile @@ -8,6 +8,7 @@ MACROS=-DLINUX \ CFLAGS=-c -Wall -Werror -Wno-unknown-pragmas -Wno-error=format -fPIC $(MACROS) -I. CPPFLAGS=-std=c++11 -g -Wno-unused -Wno-unknown-pragmas -Wno-reorder -fvisibility=hidden -fvisibility-inlines-hidden LDFLAGS=-lpthread -lrt -shared -ldl -lX11 +OBJDIR=.obj OBJECTS=replay/replay_output.o \ replay/replay_renderer.o \ replay/entry_points.o \ @@ -21,13 +22,6 @@ core/replay_proxy.o \ core/remote_replay.o \ core/resource_manager.o \ core/core.o \ -data/glsl/blit.frago \ -data/glsl/blit.verto \ -data/glsl/texdisplay.frago \ -data/glsl/checkerboard.frago \ -data/glsl/generic.frago \ -data/glsl/generic.verto \ -data/glsl/mesh.verto \ maths/camera.o \ maths/matrix.o \ os/os_specific.o \ @@ -61,24 +55,42 @@ os/linux/linux_process.o \ os/linux/linux_stringio.o \ os/linux/linux_threading.o \ hooks/linux_libentry.o +SHADERS=data/glsl/blit.frago \ +data/glsl/blit.verto \ +data/glsl/texdisplay.frago \ +data/glsl/checkerboard.frago \ +data/glsl/generic.frago \ +data/glsl/generic.verto \ +data/glsl/mesh.verto +.PHONY: all all: librenderdoc.so -%.o: %.cpp +$(OBJDIR)/%.o: %.cpp + @mkdir -p $$(dirname $@) $(CPP) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + @$(CPP) $(CFLAGS) $(CPPFLAGS) -MM -MT $(OBJDIR)/$*.o $*.cpp > $(OBJDIR)/$*.d -%.o: %.c +$(OBJDIR)/%.o: %.c + @mkdir -p $$(dirname $@) $(CC) $(CFLAGS) -c -o $@ $< + @$(CC) $(CFLAGS) -MM -MT $(OBJDIR)/$*.o $*.c > $(OBJDIR)/$*.d -%.verto: %.vert - cd $$(dirname $@) && objcopy --input binary --output elf64-x86-64 --binary-architecture i386 $$(basename $<) $$(basename $@) +# objcopy needs to be run in with paths in current directory +# to produce the right symbol names +$(OBJDIR)/%.verto: %.vert + @mkdir -p $$(dirname $@) + cd $$(dirname $<) && objcopy --input binary --output elf64-x86-64 --binary-architecture i386 $$(basename $<) $$(basename $@) + @mv $$(dirname $<)/$$(basename $@) $@ -%.frago: %.frag - cd $$(dirname $@) && objcopy --input binary --output elf64-x86-64 --binary-architecture i386 $$(basename $<) $$(basename $@) +$(OBJDIR)/%.frago: %.frag + @mkdir -p $$(dirname $@) + cd $$(dirname $<) && objcopy --input binary --output elf64-x86-64 --binary-architecture i386 $$(basename $<) $$(basename $@) + @mv $$(dirname $<)/$$(basename $@) $@ -librenderdoc.so: $(OBJECTS) $(SOURCES) - g++ -o librenderdoc.so $(OBJECTS) $(LDFLAGS) +librenderdoc.so: $(addprefix $(OBJDIR)/, $(SHADERS) $(OBJECTS)) + g++ -o librenderdoc.so $^ $(LDFLAGS) +.PHONY: clean clean: - find -type f -iname \*.o -exec rm '{}' \; - rm -f librenderdoc.so + rm -rf librenderdoc.so $(OBJDIR) diff --git a/renderdoccmd/Makefile b/renderdoccmd/Makefile index 402a07c03..f9e9e5817 100644 --- a/renderdoccmd/Makefile +++ b/renderdoccmd/Makefile @@ -8,22 +8,28 @@ MACROS=-DLINUX \ CFLAGS=-c -Wall -Werror -fPIC $(MACROS) -I../renderdoc/ CPPFLAGS=-std=c++11 -g -Wno-unused -Wno-unknown-pragmas -Wno-reorder LDFLAGS=-L../renderdoc -lrenderdoc -lGL +OBJDIR=.obj OBJECTS=renderdoccmd.o renderdoccmd_linux.o +.PHONY: all all: bin/renderdoccmd -%.o: %.cpp +$(OBJDIR)/%.o: %.cpp + @mkdir -p $$(dirname $@) $(CPP) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + @$(CPP) $(CFLAGS) $(CPPFLAGS) -MM -MT $(OBJDIR)/$*.o $*.cpp > $(OBJDIR)/$*.d -%.o: %.c +$(OBJDIR)/%.o: %.c + @mkdir -p $$(dirname $@) $(CC) $(CFLAGS) -c -o $@ $< + @$(CC) $(CFLAGS) -MM -MT $(OBJDIR)/$*.o $*.c > $(OBJDIR)/$*.d -../renderdoc/librenderdoc.so: +OBJDIR_OBJECTS=$(addprefix $(OBJDIR)/, $(SHADERS) $(OBJECTS)) -bin/renderdoccmd: $(OBJECTS) $(SOURCES) ../renderdoc/librenderdoc.so +bin/renderdoccmd: $(OBJDIR_OBJECTS) ../renderdoc/librenderdoc.so mkdir -p bin/ - g++ -o bin/renderdoccmd $(OBJECTS) $(LDFLAGS) + g++ -o bin/renderdoccmd $(OBJDIR_OBJECTS) $(LDFLAGS) +.PHONY: clean clean: - find -type f -iname \*.o -exec rm '{}' \; - rm -f bin/renderdoccmd + rm -rf bin/renderdoccmd $(OBJDIR)