Skip to content

Commit

Permalink
Makefile: Reorganize for easier copy/paste
Browse files Browse the repository at this point in the history
  • Loading branch information
ejona86 committed Apr 11, 2020
1 parent f2683da commit 350784a
Showing 1 changed file with 60 additions and 58 deletions.
118 changes: 60 additions & 58 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,42 +1,73 @@
all: tetris taus screens custom handicap twoplayer playerid build/game_palette.pal build/menu_palette.pal build/game_nametable.nam build/level_menu_nametable.nam
test: build/tetris-test build/taus-test.test build/chart-test.test build/twoplayer-test.test
# These are simply aliases
.PHONY: all dis tetris taus screens custom handicap twoplayer playerid

# Manually list prerequisites that are generated. Non-generated files will
# automatically be computed.
build/taus.o: build/tetris.inc build/taus.chrs/fake
build/playerid.o: build/tetris.inc
dis: build/tetris-PRG.s

handicap: build/handicap.nes
# For .o files, manually list prerequisites that are generated. Non-generated
# files will automatically be computed
build/handicap.o: build/tetris.inc
# Detect IPS hunks. These .o files used ips_segments in their .s
build/handicap.ips.cfg: build/handicap.o
# Linker dependencies. There is a corresponding .cfg file
build/handicap.ips: build/handicap.o build/ips.o
# IPS base file. There is a corresponding .ips file
build/handicap.nes: build/tetris.nes

build/highscores.ips.cfg: build/highscores.o
build/highscores.ips: build/highscores.o build/ips.o
build/highscores.nes: build/tetris.nes

playerid: build/playerid.nes
build/playerid.o: build/tetris.inc
build/playerid.ips.cfg: build/playerid.o
build/playerid.ips: build/ips.o build/playerid.o
build/playerid.nes: build/tetris.nes

screens: build/screens.nes
build/screens.o: build/tetris.inc
build/screens.ips.cfg: build/screens.o
build/screens.ips: build/screens.o build/ips.o
build/screens.nes: build/tetris.nes

taus: build/taus.nes
build/chart.o: build/tetris.inc build/taus.chrs/fake
build/taus.o: build/tetris.inc build/taus.chrs/fake
build/taus.ips: build/taus.o build/ips.o build/fastlegal.o build/chart.o
build/taus.nes: build/tetris.nes
build/chart-test.test: chart-test.lua build/taus.nes
build/taus-test.test: taus-test.lua build/taus.nes

tetris: build/tetris.nes
build/tetris-CHR.o: build/tetris-CHR-00.chr build/tetris-CHR-01.chr
build/twoplayer.o: build/tetris.inc build/twoplayer_game.nam.rle build/twoplayer_game_top.nam.rle build/tournament.nam.rle build/tetris-CHR-00.chr build/twoplayer-CHR-01.chr
build/tetris.nes: build/tetris.o build/tetris-CHR.o build/tetris-PRG.o build/tetris-ram.o
build/tetris-test: tetris.nes build/tetris.nes
diff tetris.nes build/tetris.nes
touch $@

twoplayer: build/twoplayer.dist.ips
build/twoplayer-CHR-01.chr.ips.o: build/twoplayer.chrs/fake
# .diff base files. There should be a .diff for each target
build/twoplayer.o: build/tetris.inc build/twoplayer_game.nam.rle build/twoplayer_game_top.nam.rle build/tournament.nam.rle build/tetris-CHR-00.chr build/twoplayer-CHR-01.chr
# Diff base file. There is a corresponding .diff file
build/twoplayer-tetris-PRG.s: build/tetris-PRG.s
# List linker dependencies. There should be a .cfg for each target
build/tetris.nes: build/tetris.o build/tetris-CHR.o build/tetris-PRG.o build/tetris-ram.o
build/taus.ips: build/taus.o build/ips.o build/fastlegal.o build/chart.o
build/playerid.ips.cfg: build/playerid.o
build/playerid.ips: build/ips.o build/playerid.o
build/screens.ips.cfg: build/screens.o
build/screens.ips: build/screens.o build/ips.o
build/highscores.ips.cfg: build/highscores.o
build/highscores.ips: build/highscores.o build/ips.o
build/handicap.ips.cfg: build/handicap.o
build/handicap.ips: build/handicap.o build/ips.o
build/twoplayer.nes: build/tetris.o build/twoplayer-tetris-PRG.o build/tetris-ram.o build/twoplayer.o build/rle.o
build/twoplayer-CHR-01.chr.ips: build/ips.o build/twoplayer-CHR-01.chr.ips.o
# IPS base dependencies. There should be a .ips for each target
build/taus.nes: build/tetris.nes
build/screens.nes: build/tetris.nes
build/highscores.nes: build/tetris.nes
build/handicap.nes: build/tetris.nes
build/playerid.nes: build/tetris.nes
build/twoplayer-CHR-01.chr: build/tetris-CHR-01.chr
# Combine mods
build/custom.nes: build/taus.ips build/highscores.ips build/playerid.ips

build/twoplayer.nes: build/tetris.o build/twoplayer-tetris-PRG.o build/tetris-ram.o build/twoplayer.o build/rle.o
build/twoplayer.dist.ips: build/tetris.nes build/twoplayer.nes
flips --create $^ $@ > /dev/null
build/twoplayer-test.test: twoplayer-test.lua build/twoplayer.nes

custom: build/custom.nes
build/custom.nes: build/taus.ips build/highscores.ips build/playerid.ips
build/custom.nes: build/tetris.nes
cp $< $@.tmp
for ips in $(filter %.ips,$^); do \
flips --apply $$ips $@.tmp > /dev/null; \
done
mv $@.tmp $@
flips --create $< $@ build/custom.dist.ips > /dev/null

# There are tools to split apart the iNES file, like
# https://github.com/taotao54321/ines, but they would require an additional
Expand Down Expand Up @@ -65,44 +96,15 @@ build/tetris.inc: build/tetris.nes
build/tetris-ram.s: tetris-PRG.info tetris-ram.awk | build
awk -f tetris-ram.awk $< > $@

build/custom.nes: build/tetris.nes
cp $< $@.tmp
for ips in $(filter %.ips,$^); do \
flips --apply $$ips $@.tmp > /dev/null; \
done
mv $@.tmp $@
flips --create $< $@ build/custom.dist.ips > /dev/null

build/tetris-test: tetris.nes build/tetris.nes
diff tetris.nes build/tetris.nes
touch $@

build/%.test: %.lua
# Second prerequisite is assumed to be a .nes to run
fceux --no-config 1 --fullscreen 0 --sound 0 --frameskip 100 --loadlua $< $(word 2,$^)
touch $@

build/taus-test.test: taus-test.lua build/taus.nes
build/chart-test.test: chart-test.lua build/taus.nes
build/twoplayer-test.test: twoplayer-test.lua build/twoplayer.nes

test: build/tetris-test build/taus-test.test build/chart-test.test build/twoplayer-test.test
.PHONY: test
test:
# fceux saves some of the configuration, so restore what we can
fceux --no-config 1 --sound 1 --frameskip 0 --loadlua testing-reset.lua build/taus.nes

dis: build/tetris-PRG.s
tetris: build/tetris.nes
taus: build/taus.nes
screens: build/screens.nes
custom: build/custom.nes
handicap: build/handicap.nes
twoplayer: build/twoplayer.nes build/twoplayer.dist.ips
playerid: build/playerid.nes

# These are simply aliases
.PHONY: all dis tetris taus screens custom handicap twoplayer playerid
# These are "true" phonies, and always execute something
.PHONY: test

# include last because it enables SECONDEXPANSION
include nes.mk

0 comments on commit 350784a

Please sign in to comment.