Skip to content

Commit 09b0786

Browse files
committed
build: Allow out of tree builds.
1 parent ebb38f6 commit 09b0786

File tree

8 files changed

+67
-55
lines changed

8 files changed

+67
-55
lines changed

bsnes/GNUmakefile

+12-10
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
srcdir := $(abspath $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
2+
13
target := bsnes
24
binary := application
35
build := performance
46
openmp := true
57
local := true
6-
flags += -I. -I..
8+
flags += -I$(srcdir)/. -I$(srcdir)/..
79

810
# in order for this to work, obj/lzma.o must be omitted or bsnes will hang on startup.
911
# further, only the X-Video driver works reliably. OpenGL 3.2, OpenGL 2.0, and XShm crash bsnes.
@@ -17,7 +19,7 @@ ifeq ($(local),true)
1719
flags += -march=native
1820
endif
1921

20-
nall.path := ../nall
22+
nall.path := $(srcdir)/../nall
2123
include $(nall.path)/GNUmakefile
2224

2325
ifeq ($(platform),windows)
@@ -46,16 +48,16 @@ endif
4648

4749
objects := libco emulator filter lzma
4850

49-
obj/libco.o: ../libco/libco.c
50-
obj/emulator.o: emulator/emulator.cpp
51-
obj/filter.o: filter/filter.cpp
52-
obj/lzma.o: lzma/lzma.cpp
51+
obj/libco.o: $(srcdir)/../libco/libco.c maketree
52+
obj/emulator.o: $(srcdir)/emulator/emulator.cpp maketree
53+
obj/filter.o: $(srcdir)/filter/filter.cpp maketree
54+
obj/lzma.o: $(srcdir)/lzma/lzma.cpp maketree
5355

54-
include sfc/GNUmakefile
55-
include gb/GNUmakefile
56-
include processor/GNUmakefile
56+
include $(srcdir)/sfc/GNUmakefile
57+
include $(srcdir)/gb/GNUmakefile
58+
include $(srcdir)/processor/GNUmakefile
5759

58-
ui := target-$(target)
60+
ui := $(srcdir)/target-$(target)
5961
include $(ui)/GNUmakefile
6062
-include obj/*.d
6163

bsnes/gb/GNUmakefile

+18-18
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ objects += gb-memory gb-printer gb-random gb-rewind gb-save_state gb-sgb
66
objects += gb-sm83_cpu gb-symbol_hash gb-timing
77
#objects+= gb-debugger gb-sm83_disassembler
88

9-
obj/gb-apu.o: gb/Core/apu.c
10-
obj/gb-camera.o: gb/Core/camera.c
11-
obj/gb-debugger.o: gb/Core/debugger.c
12-
obj/gb-rumble.o: gb/Core/rumble.c
13-
obj/gb-display.o: gb/Core/display.c
14-
obj/gb-gb.o: gb/Core/gb.c
15-
obj/gb-joypad.o: gb/Core/joypad.c
16-
obj/gb-mbc.o: gb/Core/mbc.c
17-
obj/gb-memory.o: gb/Core/memory.c
18-
obj/gb-printer.o: gb/Core/printer.c
19-
obj/gb-random.o: gb/Core/random.c
20-
obj/gb-rewind.o: gb/Core/rewind.c
21-
obj/gb-save_state.o: gb/Core/save_state.c
22-
obj/gb-sgb.o: gb/Core/sgb.c
23-
obj/gb-sm83_cpu.o: gb/Core/sm83_cpu.c
24-
obj/gb-sm83_disassembler.o: gb/Core/sm83_disassembler.c
25-
obj/gb-symbol_hash.o: gb/Core/symbol_hash.c
26-
obj/gb-timing.o: gb/Core/timing.c
9+
obj/gb-apu.o: $(srcdir)/gb/Core/apu.c
10+
obj/gb-camera.o: $(srcdir)/gb/Core/camera.c
11+
obj/gb-debugger.o: $(srcdir)/gb/Core/debugger.c
12+
obj/gb-rumble.o: $(srcdir)/gb/Core/rumble.c
13+
obj/gb-display.o: $(srcdir)/gb/Core/display.c
14+
obj/gb-gb.o: $(srcdir)/gb/Core/gb.c
15+
obj/gb-joypad.o: $(srcdir)/gb/Core/joypad.c
16+
obj/gb-mbc.o: $(srcdir)/gb/Core/mbc.c
17+
obj/gb-memory.o: $(srcdir)/gb/Core/memory.c
18+
obj/gb-printer.o: $(srcdir)/gb/Core/printer.c
19+
obj/gb-random.o: $(srcdir)/gb/Core/random.c
20+
obj/gb-rewind.o: $(srcdir)/gb/Core/rewind.c
21+
obj/gb-save_state.o: $(srcdir)/gb/Core/save_state.c
22+
obj/gb-sgb.o: $(srcdir)/gb/Core/sgb.c
23+
obj/gb-sm83_cpu.o: $(srcdir)/gb/Core/sm83_cpu.c
24+
obj/gb-sm83_disassembler.o: $(srcdir)/gb/Core/sm83_disassembler.c
25+
obj/gb-symbol_hash.o: $(srcdir)/gb/Core/symbol_hash.c
26+
obj/gb-timing.o: $(srcdir)/gb/Core/timing.c

bsnes/processor/GNUmakefile

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ objects += $(if $(findstring spc700,$(processors)),processor-spc700)
88
objects += $(if $(findstring upd96050,$(processors)),processor-upd96050)
99
objects += $(if $(findstring wdc65816,$(processors)),processor-wdc65816)
1010

11-
obj/processor-arm7tdmi.o: processor/arm7tdmi/arm7tdmi.cpp
12-
obj/processor-gsu.o: processor/gsu/gsu.cpp
13-
obj/processor-hg51b.o: processor/hg51b/hg51b.cpp
14-
obj/processor-sm83.o: processor/sm83/sm83.cpp
15-
obj/processor-spc700.o: processor/spc700/spc700.cpp
16-
obj/processor-upd96050.o: processor/upd96050/upd96050.cpp
17-
obj/processor-wdc65816.o: processor/wdc65816/wdc65816.cpp
11+
obj/processor-arm7tdmi.o: $(srcdir)/processor/arm7tdmi/arm7tdmi.cpp
12+
obj/processor-gsu.o: $(srcdir)/processor/gsu/gsu.cpp
13+
obj/processor-hg51b.o: $(srcdir)/processor/hg51b/hg51b.cpp
14+
obj/processor-sm83.o: $(srcdir)/processor/sm83/sm83.cpp
15+
obj/processor-spc700.o: $(srcdir)/processor/spc700/spc700.cpp
16+
obj/processor-upd96050.o: $(srcdir)/processor/upd96050/upd96050.cpp
17+
obj/processor-wdc65816.o: $(srcdir)/processor/wdc65816/wdc65816.cpp

bsnes/sfc/GNUmakefile

+13-13
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ objects += sfc-cartridge sfc-memory
55
objects += sfc-cpu sfc-smp sfc-dsp sfc-ppu sfc-ppu-fast
66
objects += sfc-expansion sfc-coprocessor sfc-slot
77

8-
obj/sfc-interface.o: sfc/interface/interface.cpp
9-
obj/sfc-system.o: sfc/system/system.cpp
10-
obj/sfc-controller.o: sfc/controller/controller.cpp
11-
obj/sfc-cartridge.o: sfc/cartridge/cartridge.cpp
12-
obj/sfc-memory.o: sfc/memory/memory.cpp
8+
obj/sfc-interface.o: $(srcdir)/sfc/interface/interface.cpp maketree
9+
obj/sfc-system.o: $(srcdir)/sfc/system/system.cpp maketree
10+
obj/sfc-controller.o: $(srcdir)/sfc/controller/controller.cpp maketree
11+
obj/sfc-cartridge.o: $(srcdir)/sfc/cartridge/cartridge.cpp maketree
12+
obj/sfc-memory.o: $(srcdir)/sfc/memory/memory.cpp maketree
1313

14-
obj/sfc-cpu.o: sfc/cpu/cpu.cpp
15-
obj/sfc-smp.o: sfc/smp/smp.cpp
16-
obj/sfc-dsp.o: sfc/dsp/dsp.cpp
17-
obj/sfc-ppu.o: sfc/ppu/ppu.cpp
18-
obj/sfc-ppu-fast.o: sfc/ppu-fast/ppu.cpp
14+
obj/sfc-cpu.o: $(srcdir)/sfc/cpu/cpu.cpp maketree
15+
obj/sfc-smp.o: $(srcdir)/sfc/smp/smp.cpp maketree
16+
obj/sfc-dsp.o: $(srcdir)/sfc/dsp/dsp.cpp maketree
17+
obj/sfc-ppu.o: $(srcdir)/sfc/ppu/ppu.cpp maketree
18+
obj/sfc-ppu-fast.o: $(srcdir)/sfc/ppu-fast/ppu.cpp maketree
1919

20-
obj/sfc-expansion.o: sfc/expansion/expansion.cpp
21-
obj/sfc-coprocessor.o: sfc/coprocessor/coprocessor.cpp
22-
obj/sfc-slot.o: sfc/slot/slot.cpp
20+
obj/sfc-expansion.o: $(srcdir)/sfc/expansion/expansion.cpp maketree
21+
obj/sfc-coprocessor.o: $(srcdir)/sfc/coprocessor/coprocessor.cpp maketree
22+
obj/sfc-slot.o: $(srcdir)/sfc/slot/slot.cpp maketree

bsnes/target-bsnes/GNUmakefile

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
name := bsnes
22

3-
hiro.path := ../hiro
3+
hiro.path := $(srcdir)/../hiro
44
hiro.resource := $(ui)/resource/bsnes.rc
55
include $(hiro.path)/GNUmakefile
66

7-
ruby.path := ../ruby
7+
ruby.path := $(srcdir)/../ruby
88
include $(ruby.path)/GNUmakefile
99

1010
objects += ui-bsnes ui-program ui-input ui-presentation
@@ -58,8 +58,8 @@ else ifneq ($(filter $(platform),linux bsd),)
5858
cp $(ui)/resource/$(name).desktop $(DESTDIR)$(datarootdir)/applications/$(name).desktop
5959
cp $(ui)/resource/$(name).png $(DESTDIR)$(datarootdir)/icons/hicolor/256x256/apps/$(name).png
6060
cp $(ui)/resource/$(name).svg $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/apps/$(name).svg
61-
cp Database/* $(DESTDIR)$(datadir)/$(name)/Database/
62-
cp -r ../shaders/* $(DESTDIR)$(datadir)/$(name)/Shaders/
61+
cp $(srcdir)/Database/* $(DESTDIR)$(datadir)/$(name)/Database/
62+
cp -r $(srcdir)/../shaders/* $(DESTDIR)$(datadir)/$(name)/Shaders/
6363
endif
6464

6565
uninstall:

hiro/GNUmakefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,13 @@ hiro.objects := \
6666
$(object.path)/hiro-$(hiro).o \
6767
$(if $(filter windows,$(hiro)),$(object.path)/hiro-resource.o)
6868

69-
$(object.path)/hiro-$(hiro).o: $(hiro.path)/hiro.cpp
69+
$(object.path)/hiro-$(hiro).o: $(hiro.path)/hiro.cpp maketree
7070
$(if $(filter qt%,$(hiro)),$(info Compiling $(hiro.path)/qt/qt.moc ...))
7171
$(if $(filter qt%,$(hiro)),@$(moc) -i -o $(hiro.path)/qt/qt.moc $(hiro.path)/qt/qt.hpp)
7272
$(info Compiling $< ...)
7373
@$(compiler) $(hiro.flags) $(flags) $(flags.deps) -c $< -o $@
7474

75-
$(object.path)/hiro-resource.o: $(hiro.resource)
75+
$(object.path)/hiro-resource.o: $(hiro.resource) maketree
7676
$(info Compiling $< ...)
7777
@$(windres) $< $@
7878

nall/GNUmakefile

+10
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,16 @@ endif
155155
# rules
156156
default: all;
157157
158+
maketree: $(object.path)/.tag out/.tag
159+
160+
$(object.path)/.tag:
161+
@mkdir -p obj
162+
@touch $@
163+
164+
out/.tag:
165+
@mkdir -p out
166+
@touch $@
167+
158168
nall.verbose:
159169
$(info Compiler Flags:)
160170
$(foreach n,$(sort $(call unique,$(flags))),$(if $(filter-out -I%,$n),$(info $([space]) $n)))

ruby/GNUmakefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ endif
7171

7272
ruby.objects := $(object.path)/ruby.o
7373

74-
$(object.path)/ruby.o: $(ruby.path)/ruby.cpp $(call rwildcard,$(ruby.path))
74+
$(object.path)/ruby.o: $(ruby.path)/ruby.cpp $(call rwildcard,$(ruby.path)) maketree
7575
$(info Compiling $< ...)
7676
@$(compiler) $(ruby.flags) $(flags) $(flags.deps) -c $< -o $@
7777

0 commit comments

Comments
 (0)