146 lines
3.5 KiB
Makefile
146 lines
3.5 KiB
Makefile
HOST_WARNINGS=-pedantic-errors -Wfatal-errors -Wall -Werror -Wextra -Wno-unused-parameter -Wshadow
|
|
HOST_CFLAGS=$(HOST_WARNINGS)
|
|
SDK_INCLUDE=-I/usr/local/amiga/vgcc/ndk/include/
|
|
MAKEADFDIR=../tools/makeadf/
|
|
MAKEADF=$(MAKEADFDIR)/out/makeadf
|
|
IMAGECONDIR=../tools/imagecon
|
|
IMAGECON=$(IMAGECONDIR)/out/imagecon
|
|
SHRINKLERDIR=../tools/external/shrinkler
|
|
SHRINKLEREXE=$(SHRINKLERDIR)/build/native/Shrinkler
|
|
RESIZEDIR=../tools/resize
|
|
RESIZE=$(RESIZEDIR)/out/resize
|
|
DOYNAMITE68KDIR=../tools/external/doynamite68k
|
|
DOYNAMITE68K=$(DOYNAMITE68KDIR)/out/lz
|
|
A500_RUN_SCRIPT=~/Google\ Drive/Amiga/amiga500.sh
|
|
A600_RUN_SCRIPT=~/Google\ Drive/Amiga/amiga600.sh
|
|
A1200T_RUN_SCRIPT=~/Google\ Drive/Amiga/amiga1200t.sh
|
|
|
|
#VASM_ARGS=-phxass -Fhunk -quiet -spaces
|
|
VASM_ARGS=-Fhunk -quiet -esc
|
|
|
|
ifndef FLOPPY
|
|
FLOPPY=bin/$(EXAMPLE_NAME).adf
|
|
endif
|
|
|
|
ifndef MODULE
|
|
MODULE=$(EXAMPLE_NAME).s
|
|
endif
|
|
|
|
ifndef SHRINKLER
|
|
SHRINKLER=0
|
|
endif
|
|
|
|
ifndef BASE_ADDRESS
|
|
BASE_ADDRESS=70000
|
|
endif
|
|
|
|
ifndef DECOMPRESS_ADDRESS
|
|
DECOMPRESS_ADDRESS=10000
|
|
endif
|
|
|
|
ifndef RUN_SCRIPT
|
|
RUN_SCRIPT=$(A500_RUN_SCRIPT)
|
|
endif
|
|
|
|
|
|
ifeq ($(SHRINKLER),1)
|
|
ifndef BOOTBLOCK_ASM
|
|
BOOTBLOCK_ASM=../shared/shrinkler_bootblock.s
|
|
endif
|
|
PROGRAM_BIN=out/shrunk.bin
|
|
VASM_EXTRA_BOOTBLOCK_ARGS=-DSHRINKLER=$(SHRINKLER) -DDECOMPRESS_ADDRESS="\$$$(DECOMPRESS_ADDRESS)"
|
|
else
|
|
ifndef BOOTBLOCK_ASM
|
|
BOOTBLOCK_ASM=../shared/bootblock.s
|
|
endif
|
|
PROGRAM_BIN=out/main.bin
|
|
VASM_EXTRA_BOOTBLOCK_ARGS=-DSHRINKLER=$(SHRINKLER)
|
|
endif
|
|
|
|
ifndef LINKER_OPTIONS
|
|
LINKER_OPTIONS=-Ttext 0x$(BASE_ADDRESS)
|
|
endif
|
|
|
|
all: bin out $(MAKEADF) $(IMAGECON) $(RESIZE) $(DOYNAMITE68K) $(FLOPPY)
|
|
|
|
gdrive: all
|
|
cp $(FLOPPY) ~/Google\ Drive
|
|
|
|
test: all
|
|
cp $(FLOPPY) ~/Projects/amiga/test.adf
|
|
|
|
go: test
|
|
$(RUN_SCRIPT)
|
|
|
|
goaga: test
|
|
$(A1200T_RUN_SCRIPT)
|
|
|
|
list:
|
|
m68k-amigaos-objdump -b binary --disassemble-all out/bootblock.bin -m m68k > out/bootblock.txt
|
|
|
|
bin:
|
|
mkdir bin
|
|
|
|
out:
|
|
mkdir out
|
|
|
|
ic:
|
|
make -C $(IMAGECONDIR)
|
|
|
|
$(IMAGECON):
|
|
make -C $(IMAGECONDIR)
|
|
|
|
$(SHRINKLEREXE):
|
|
make -C $(SHRINKLERDIR)
|
|
|
|
$(RESIZE):
|
|
make -C $(RESIZEDIR)
|
|
|
|
$(MAKEADF):
|
|
make -C $(MAKEADFDIR)
|
|
|
|
$(DOYNAMITE68K):
|
|
make -C $(DOYNAMITE68KDIR)
|
|
|
|
$(FLOPPY): out/bootblock.bin
|
|
$(MAKEADF) out/bootblock.bin > $(FLOPPY)
|
|
@ls -lh out/bootblock.bin
|
|
|
|
out/bootblock.bin: out/bootblock.o
|
|
vlink -brawbin1 $< -o $@
|
|
|
|
out/bootblock.o: $(BOOTBLOCK_ASM) $(PROGRAM_BIN)
|
|
vasmm68k_mot $(VASM_ARGS) $(VASM_EXTRA_BOOTBLOCK_ARGS) -DUSERSTACK_ADDRESS="\$$$(USERSTACK_ADDRESS)" -DBASE_ADDRESS="\$$$(BASE_ADDRESS)" $< -o $@ $(SDK_INCLUDE) -I../include
|
|
|
|
out/main.o: $(MODULE) $(EXTRA)
|
|
vasmm68k_mot $(VASM_ARGS) $(VASM_EXTRA_ARGS) $< -o $@ $(SDK_INCLUDE)
|
|
@vasmm68k_mot -depend=make $(VASM_ARGS) $(VASM_EXTRA_ARGS) $< -o $@ $(SDK_INCLUDE) > $*.d
|
|
|
|
out/%.o: %.s
|
|
vasmm68k_mot $(VASM_ARGS) $(VASM_EXTRA_ARGS) $< -o $@ $(SDK_INCLUDE)
|
|
@vasmm68k_mot -depend=make $(VASM_ARGS) $(VASM_EXTRA_ARGS) $< -o $@ $(SDK_INCLUDE) > out/$*.d
|
|
|
|
out/%.o: %.c
|
|
m68k-amigaosvasm-gcc -O3 -c $< -o $@
|
|
-@vc -O3 -S $< -o out/$*.s > /dev/null 2> /dev/null
|
|
-@vc -O0 -S $< -o out/$*-noopt.s > /dev/null 2> /dev/null
|
|
|
|
ALL_OBJS=out/main.o $(OBJS)
|
|
ALL_DEPENDS=$(ALL_OBJS:.o=.d)
|
|
|
|
out/main.bin: out/main.o $(OBJS)
|
|
vlink $(LINKER_OPTIONS) -brawbin1 $< $(OBJS) -o $@
|
|
@vlink $(LINKER_OPTIONS) -brawbin1 $< $(OBJS) -M -o /tmp/main.bin | grep ", value " | cut -d " " -f3,7 | cut -d "," -f1 > $@.symbols
|
|
@cp $@.symbols ~/Projects/amiga/debugger.syms
|
|
@echo "RAM USAGE:" $$((16#`cat ~/Projects/amiga/debugger.syms | grep endRam | sed 's/0x//' | sed 's/endRam: //'`)) bytes
|
|
|
|
|
|
out/shrunk.bin: $(SHRINKLER_EXE) out/main.bin
|
|
$(SHRINKLEREXE) -d out/main.bin out/shrunk.bin
|
|
|
|
.PHONE: clean
|
|
clean:
|
|
rm -rf out bin *~
|
|
|
|
-include $(ALL_DEPENDS)
|