## Meta-information
PACKAGE = cpm
VERSION = 0.2.1-mod2

# Install prefix
PREFIX = /usr/local

# Data files
LIBDIR = $(PREFIX)/lib/cpm

# Executables
BINDIR = $(PREFIX)/bin

## Uncomment this if you prefer flashes to beeps
# VBELL = '-DVBELL'

## Uncomment this for a 4 MHz Z80 (otherwise 2MHz)
FASTZ80 = '-DFASTZ80'

CFLAGS = -O2 -pipe -ansi -Wall -Wshadow  -Wpointer-arith -Wcast-qual \
      -Wcast-align -Waggregate-return \
      -Wstrict-prototypes -Wmissing-prototypes \
      -Wnested-externs -Wwrite-strings -g -DCPMLIBDIR=\"$(LIBDIR)\" \
      $(VBELL) $(FASTZ80) -D_GNU_SOURCE \
      -DPACKAGE=\"$(PACKAGE)\" -DVERSION=\"$(VERSION)\"
LDFLAGS = -s -N
OBJS = single.o z80emu.o em.o io.o bios.o \
   commands.o running.o main.o disneu.o disz80.o low.o
# old: z80out.o 

TARGETS = cpm cpm-format xcpm fnt2bdf

Z80BIN = cd.com cpm.sys link.com xccp.com

FONTS = kaypro2x.fnt kaypro2x.pcf fonts.dir

all: $(TARGETS) $(FONTS)

install: install.bin install.lib

install.bin: $(TARGETS) $(BINDIR)/.
	install --mode=755 $(TARGETS) $(BINDIR)

install.lib: install.data install.fonts

install.data: $(LIBDIR)/.
	for x in $(Z80BIN); do \
	install --mode=644 z80-binaries/$$x $(LIBDIR); \
	done

install.fonts: $(FONTS) $(LIBDIR)/.
	install --mode=644 $(FONTS) $(LIBDIR)

$(LIBDIR)/.:
	install --mode=755 --directory $(LIBDIR)

$(BINDIR)/.:
	install --mode=755 --directory $(BINDIR)

uninstall: uninstall.bin uninstall.lib
	rmdir $(BINDIR) $(LIBDIR) || :

uninstall.bin:
	for x in $(TARGETS); do rm -f $(BINDIR)/$$x; done

uninstall.lib:
	for x in $(Z80BIN) $(FONTS) fonts.dir; do rm -f $(LIBDIR)/$$x; done

xcpm: xcpm.in
	sed -e 's:{BINDIR}:$(BINDIR):g' \
	    -e 's:{LIBDIR}:$(LIBDIR):g' \
	    $< > $@ && \
	chmod 755 $@

fonts.dir: kaypro2x.pcf
	mkfontdir .

kaypro2x.pcf: kaypro2x.bdf
	bdftopcf $< > $@

kaypro2x.bdf: kaypro2x.fnt
	$(MAKE) fnt2bdf && \
	./fnt2bdf $< > $@

loads.s: makeloads.c
	$(CC) makeloads.c -o makeloads && \
	./makeloads > loads.s

z80emu.o: z80emu.S code.s loads.s code2.s codeix.s codeiy.s

single.o: single.S code.s loads.s code2.s codeix.s codeiy.s

cpm: $(OBJS)
	gcc $(LDFLAGS) -o cpm $(OBJS)

mostlyclean:
	rm -f *~ loads.s makeloads *.o

clean: mostlyclean
	rm -f $(TARGETS)

maintainer-clean: clean
	rm -f kaypro2x.bdf kaypro2x.pcf fonts.dir
