Clean up linux Makefile

* Compiler now used to generate dependencies via -MM
* Object files are put into .obj folder rather than loose next to the
  source files
This commit is contained in:
baldurk
2014-09-10 18:20:22 +01:00
parent 48748936ba
commit 2735de8b9a
4 changed files with 46 additions and 27 deletions
+1 -3
View File
@@ -12,11 +12,9 @@ Resources/*.png
*.user
bin/
obj/
.obj/
*.opensdf
*.pdb
*.o
*.verto
*.frago
*.so
*.a
*.exp
+3
View File
@@ -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
+29 -17
View File
@@ -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)
+13 -7
View File
@@ -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)