ys2-intro/loader/tools/exomizer-3.1/exodecrs/perf/Makefile
2025-11-13 19:07:39 +03:00

177 lines
4.9 KiB
Makefile

#
# Makefile for perf
#
WFLAGS = -std=c89 -Wall -Wstrict-prototypes -D_XOPEN_SOURCE=600 -pedantic
CFLAGS = $(WFLAGS) -O3 -ffast-math -fomit-frame-pointer
LDFLAGS = -s
#CFLAGS = -g -mtune=i686 $(WFLAGS)
#LDFLAGS = -g -mtune=i686
DECR_OBJS = ../exodecrunch.os
DECR_OBJSP+16 = ../exodecrunch.osP+16
DECR_OBJSM256 = ../exodecrunch.osM256
DECR_OBJSi = ../exodecrunch.osi
DECR_OBJSiM256 = ../exodecrunch.osiM256
DECR_OBJSiM256P-32 = ../exodecrunch.osiM256P-32
CRUNCHER = ../../src/exomizer mem -q $<@0x1010 -o $@
CRUNCHERP+16 = ../../src/exomizer mem -P+16 -q $<@0x1010 -o $@
CRUNCHERM256 = ../../src/exomizer mem -M256 -q $<@0x1010 -o $@
CRUNCHERM256P-32 = ../../src/exomizer mem -P-32 -M256 -q $<@0x1010 -o $@
TEST_OBJS = ../testrun.o ../../src/6502emu.o ../../src/exo_util.o ../../src/log.o ../../src/areatrace.o ../../src/vec.o ../../src/buf_io.o ../../src/buf.o ../../src/table.o ../../src/perf.o
OBJS = ../main.os $(DECR_OBJS)
OBJSP+16 = ../main.os $(DECR_OBJSP+16)
OBJSi = ../main.os $(DECR_OBJSi)
OBJSM256 = ../main.os $(DECR_OBJSM256)
OBJSiM256 = ../main.os $(DECR_OBJSiM256)
OBJSiM256P-32 = ../main.os $(DECR_OBJSiM256P-32)
.PHONY: build %.test %.stat
.PRECIOUS: %.cru %.cruM256 %.prg $(TEST_OBJS) %.cru.out %.cruM256.out
#.INTERMEDIATE: %.cru.out
build: data.test
#
# make <prefix>.stat shows statistics for all files that match <prefix>*.raw
# together with average statistics for all files that matched.
#
# use .stat for jsr getbit decruncher
# use .stati for inlined getbit decruncher
# use .statP+16 for a decruncher with separate table for seq len 3
# use .statM256 for a decruncher with sequence length <= 256
# use .statiM256 for inlined getbit decruncher with sequence length <= 256
#
%.stat: test.prg ../testrun
@$(MAKE) $(sort $(patsubst %.raw,%.cru,$(wildcard $**.raw)))
@../testrun $(foreach file, $(sort $(patsubst %.raw,%.cru,$(wildcard $**.raw))), test.prg $(file))
%.statP+16: test.prgP+16 ../testrun
@$(MAKE) $(sort $(patsubst %.raw,%.cruP+16,$(wildcard $**.raw)))
@../testrun $(foreach file, $(sort $(patsubst %.raw,%.cruP+16,$(wildcard $**.raw))), test.prgP+16 $(file))
%.stati: test.prgi ../testrun
@$(MAKE) $(sort $(patsubst %.raw,%.crui,$(wildcard $**.raw)))
@../testrun $(foreach file, $(sort $(patsubst %.raw,%.crui,$(wildcard $**.raw))), test.prgi $(file))
%.statM256: test.prgM256 ../testrun
@$(MAKE) $(sort $(patsubst %.raw,%.cruM256,$(wildcard $**.raw)))
@../testrun $(foreach file, $(sort $(patsubst %.raw,%.cruM256,$(wildcard $**.raw))), test.prgM256 $(file))
%.statiM256: test.prgiM256 ../testrun
@$(MAKE) $(sort $(patsubst %.raw,%.cruiM256,$(wildcard $**.raw)))
@../testrun $(foreach file, $(sort $(patsubst %.raw,%.cruiM256,$(wildcard $**.raw))), test.prgiM256 $(file))
%.statiM256P-32: test.prgiM256P-32 ../testrun
@$(MAKE) $(sort $(patsubst %.raw,%.cruiM256P-32,$(wildcard $**.raw)))
@../testrun $(foreach file, $(sort $(patsubst %.raw,%.cruiM256P-32,$(wildcard $**.raw))), test.prgiM256P-32 $(file))
../testrun: $(TEST_OBJS)
@echo "Linking $@"
@$(CC) $(LDFLAGS) -o $@ $(TEST_OBJS)
%.test: %.cru.out %.raw
cmp $< $*.raw
%.testP+16: %.cruP+16.out %.raw
cmp $< $*.raw
%.testi: %.crui.out %.raw
cmp $< $*.raw
%.testM256: %.cruM256.out %.raw
cmp $< $*.raw
%.testiM256: %.cruiM256.out %.raw
cmp $< $*.raw
%.cru.out: test.prg %.cru ../testrun
../testrun $< $*.cru
%.cruP+16.out: test.prgP+16 %.cruP+16 ../testrun
../testrun $< $*.cruP+16
%.cruM256.out: test.prgM256 %.cruM256 ../testrun
../testrun $< $*.cruM256
%.crui.out: testi.prg %.crui ../testrun
../testrun $< $*.crui
%.cruiM256.out: test.prgiM256 %.cruiM256 ../testrun
../testrun $< $*.cruiM256
%.cruiM256P-32.out: test.prgiM256P-32 %.cruiM256P-32 ../testrun
../testrun $< $*.cruiM256P-32
%.prg: $(OBJS) ../c64.cfg
ld65 $(OBJS) -o $@ -C../c64.cfg
%.prgP+16: $(OBJSP+16) ../c64.cfg
ld65 $(OBJSP+16) -o $@ -C../c64.cfg
%.prgi: $(OBJSi) ../c64.cfg
ld65 $(OBJSi) -o $@ -C../c64.cfg
%.prgM256: $(OBJSM256) ../c64.cfg
ld65 $(OBJSM256) -o $@ -C../c64.cfg
%.prgiM256: $(OBJSiM256) ../c64.cfg
ld65 $(OBJSiM256) -o $@ -C../c64.cfg
%.prgiM256P-32: $(OBJSiM256P-32) ../c64.cfg
ld65 $(OBJSiM256P-32) -o $@ -C../c64.cfg
%.os: %.s
ca65 $< -o $@
%.osP+16: %.s
ca65 -DEXTRA_TABLE_ENTRY_FOR_LENGTH_THREE=1 $< -o $@
%.osi: %.s
ca65 -DINLINE_GET_BITS=1 $< -o $@
%.osM256: %.s
ca65 -DMAX_SEQUENCE_LENGTH_256=1 $< -o $@
%.osiM256: %.s
ca65 -DINLINE_GET_BITS=1 -DMAX_SEQUENCE_LENGTH_256=1 $< -o $@
%.osiM256P-32: %.s
ca65 -DINLINE_GET_BITS=1 -DMAX_SEQUENCE_LENGTH_256=1 -DDONT_REUSE_OFFSET=1 $< -o $@
clean:
$(RM) *.out *.cru* test*.prg*
%.cru: %.raw
$(CRUNCHER)
%.cruP+16: %.raw
$(CRUNCHERP+16)
%.cruM256: %.raw
$(CRUNCHERM256)
%.cruM256P-32: %.raw
$(CRUNCHERM256P-32)
%.crui: %.cru
cp $< $@
%.cruiM256: %.cruM256
cp $< $@
%.cruiM256P-32: %.cruM256P-32
cp $< $@
%.o: %.c
@echo "Compiling $<"
@$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
%: %.o
@$(CC) $(LDFLAGS) $< -o $@
# cancel built in rule that disturb things
%.out: %