view Makefile.win @ 25:2f56bc29a3d6 default tip

Beefed up the cursor a bit. Cleaned up my unused build order array.
author William Morgan <bill@mrgn.org>
date Tue, 14 Jan 2014 00:06:22 -0800
parents 11fbaecc6c5e
children
line wrap: on
line source

BIN= $(GDK)/bin
LIB= $(GDK)/lib

LIBSRC= $(GDK)/src
LIBINCLUDE= $(GDK)/include

SRC= src
RES= res
INCLUDE= include

SHELL=$(BIN)/sh
RM= $(BIN)/rm
AR= $(BIN)/ar
CC= $(BIN)/gcc
LD= $(BIN)/ld
ECHO=echo
OBJCPY= $(BIN)/objcopy
ASMZ80= $(BIN)/sjasm
MACCER= $(BIN)/mac68k
SIZEBND= $(BIN)/sizebnd
BINTOS= $(BIN)/bintos
WAVTORAW= $(BIN)/wavtoraw
PCMTORAW= $(BIN)/pcmtoraw
GENRES= $(BIN)/genres
TFMCOM= $(BIN)/tfmcom
NM= $(BIN)/nm
MKDIR= $(BIN)/mkdir
NM2WCH= $(BIN)/nm2wch
ADDR2LINE=$(BIN)/addr2line
OUT2GSRC=$(BIN)/out2gsrc

OPTION=

SRC_C= $(wildcard *.c)
SRC_C+= $(wildcard $(SRC)/*.c)
SRC_S= $(wildcard *.s)
SRC_S+= $(wildcard $(SRC)/*.s)
SRC_SZ80= $(wildcard *.s80)
SRC_SZ80+= $(wildcard $(SRC)/*.s80)

RES_C= $(wildcard $(RES)/*.c)
RES_S= $(wildcard $(RES)/*.s)
RES_BMP= $(wildcard *.bmp)
RES_BMP+= $(wildcard $(RES)/*.bmp)
RES_WAV= $(wildcard *.wav)
RES_WAV+= $(wildcard $(RES)/*.wav)
RES_WAVPCM= $(wildcard *.wavpcm)
RES_WAVPCM+= $(wildcard $(RES)/*.wavpcm)
RES_DAT= $(wildcard *.dat)
RES_DAT+= $(wildcard $(RES)/*.dat)
RES_RAW= $(wildcard *.raw)
RES_RAW+= $(wildcard $(RES)/*.raw)
RES_PCM= $(wildcard *.pcm)
RES_PCM+= $(wildcard $(RES)/*.pcm)
RES_TFD= $(wildcard *.tfd)
RES_TFD+= $(wildcard $(RES)/*.tfd)
RES_TFC= $(wildcard *.tfc)
RES_TFC+= $(wildcard $(RES)/*.tfc)
RES_MVS= $(wildcard *.mvs)
RES_MVS+= $(wildcard $(RES)/*.mvs)
RES_EIF= $(wildcard *.eif)
RES_EIF+= $(wildcard $(RES)/*.eif)
RES_ESF= $(wildcard *.esf)
RES_ESF+= $(wildcard $(RES)/*.esf)
RES_VGM= $(wildcard *.vgm)
RES_VGM+= $(wildcard $(RES)/*.vgm)
RES_RC= $(wildcard *.rc)
RES_RC+= $(wildcard $(RES)/*.rc)
RES_ASM= $(wildcard *.asm)
RES_ASM+= $(wildcard $(RES)/*.asm)

OBJ= $(RES_BMP:.bmp=.o)
OBJ+= $(RES_WAV:.wav=.o)
OBJ+= $(RES_WAVPCM:.wavpcm=.o)
OBJ+= $(RES_RC:.rc=.o)
OBJ+= $(RES_ASM:.asm=.o)
OBJ+= $(RES_DAT:.dat=.o)
OBJ+= $(RES_RAW:.raw=.o)
OBJ+= $(RES_PCM:.pcm=.o)
OBJ+= $(RES_TFD:.tfd=.o)
OBJ+= $(RES_TFC:.tfc=.o)
OBJ+= $(RES_MVS:.mvs=.o)
OBJ+= $(RES_VGM:.vgm=.o)
OBJ+= $(RES_EIF:.eif=.o)
OBJ+= $(RES_ESF:.esf=.o)
OBJ+= $(RES_S:.s=.o)
OBJ+= $(RES_C:.c=.o)
OBJ+= $(SRC_SZ80:.s80=.o)
OBJ+= $(SRC_S:.s=.o)
OBJ+= $(SRC_C:.c=.o)

OBJS = $(addprefix out/, $(OBJ))

INCS= -I$(LIBINCLUDE) -I$(INCLUDE) -I$(SRC) -I$(RES)
#FLAGS= $(OPTION) -g3 -m68000 -Wall -O1 -fomit-frame-pointer -fno-builtin-memset -fno-builtin-memcpy $(INCS)
FLAGS= $(OPTION) -m68000 -Wall -O1 -fomit-frame-pointer -fno-builtin-memset -fno-builtin-memcpy $(INCS)
#FLAGS= $(OPTION) -m68000 -Wall -O3 -fno-web -fno-gcse -fno-unit-at-a-time -fomit-frame-pointer -fno-builtin-memset -fno-builtin-memcpy $(INCS)
FLAGSZ80= -i$(LIBSRC) -i$(LIBINCLUDE) -i$(SRC) -i$(INCLUDE) -i$(RES)


release: out/rom.bin
debug: out/rom.bin out/rom.wch
debugall: out/rom.bin out/rom.wch out/rom.gsrc

all: release
default: release

.PHONY: clean

clean:
	$(RM) -f $(OBJS) out.lst out/cmd_ out/sega.o out/rom_head.bin out/rom_head.o out/rom.nm out/rom.wch out/rom.out out/rom.bin

cleanobj:
	$(RM) -f $(OBJS) out/sega.o out/rom_head.bin out/rom_head.o out/rom.out

out/rom.bin: out/rom.out
	$(OBJCPY) -O binary out/rom.out out/rom.bin
	$(SIZEBND) out/rom.bin -sizealign 131072

out/rom.wch: out/rom.out
	$(NM) -n -S -t x out/rom.out >out/rom.nm
	$(NM2WCH) out/rom.nm out/rom.wch

out/rom.gsrc: out/rom.bin
	$(OUT2GSRC) i out/rom.bin out/rom.addr
	$(ADDR2LINE) -e out/rom.out < out/rom.addr > out/rom.gsrc

out/rom.out: out/sega.o out/cmd_ $(LIB)/libmd.a
	$(CC) -n -T $(GDK)/md.ld -nostdlib out/sega.o @out/cmd_ $(LIB)/libmd.a $(LIB)/libgcc.a -o out/rom.out
	$(RM) out/cmd_

out/cmd_: $(OBJS)
	$(ECHO) "$(OBJS)" > out/cmd_

out/sega.o: $(LIBSRC)/boot/sega.s out/rom_head.bin
	$(MKDIR) -p out
	$(CC) $(FLAGS) -c $(LIBSRC)/boot/sega.s -o $@

out/rom_head.bin: out/rom_head.o
	$(LD) -T $(GDK)/md.ld -nostdlib --oformat binary -o $@ $<

out/rom_head.o: $(LIBSRC)/boot/rom_head.c
	$(MKDIR) -p out
	$(CC) $(FLAGS) -c $< -o $@


out/%.o: %.c
	$(MKDIR) -p out
	$(MKDIR) -p out/src
	$(MKDIR) -p out/res
	$(CC) $(FLAGS) -c $< -o $@

out/%.o: %.s
	$(MKDIR) -p out
	$(MKDIR) -p out/src
	$(MKDIR) -p out/res
	$(CC) $(FLAGS) -c $< -o $@


%.asm: %.rc
	$(GENRES) $< $@

%.s: %.asm
	$(MACCER) -o $@ $<

%.s: %.bmp
	$(BINTOS) -bmp $<

%.raw: %.wav
	$(WAVTORAW) $< $@ 16000

%.pcm: %.wavpcm
	$(WAVTORAW) $< $@ 22050

%.rawpcm: %.pcm
	$(PCMTORAW) $< $@

%.tfc: %.tfd
	$(TFMCOM) $<

%.o80: %.s80
	$(ASMZ80) $(FLAGSZ80) $< $@ out.lst

%.s: %.tfc
	$(BINTOS) -align 32768 $<

%.s: %.mvs
	$(BINTOS) -align 256 $<

%.s: %.esf
	$(BINTOS) -align 32768 $<

%.s: %.eif
	$(BINTOS) -align 256 $<

%.s: %.vgm
	$(BINTOS) -align 256 $<

%.s: %.raw
	$(BINTOS) -align 256 -sizealign 256 $<

%.s: %.rawpcm
	$(BINTOS) -align 128 -sizealign 128 -nullfill 136 $<

%.s: %.dat
	$(BINTOS) -align 256 -sizealign 256 $<

%.s: %.o80
	$(BINTOS) $<