## Common -*- makefile -*- for cbmlink

# Installation directory prefix for Debian GNU/Linux
DESTDIR =
# Installation directory prefix for other systems
PREFIX = $(DESTDIR)/usr
#PREFIX = $(DESTDIR)/usr/local

# Where to put binaries on 'make install'?
BINDIR = $(PREFIX)/bin
# Where to put manual pages on 'make installman'?
MANDIR = $(PREFIX)/share/man/man1

## Installation commands
RM = rm -f
INSTALLDIR = install -d
INSTALLDATA = install -m 444
INSTALLBIN = install

## C compiler options
CPPFLAGS = \
	$(COMM_SERIAL:yes=-DCOMM_SERIAL) \
	$(COMM_PC:yes=-DCOMM_PC) \
	$(COMM_AMIGA:yes=-DCOMM_AMIGA) \
	$(DEFINES) -Iext -Iop -Icomm# -DCOMM_DEBUG

MANPAGES = cbmlink.1

EXTSRCS = ext/ext.c ext/rdfile.c ext/wrfile.c ext/disk.c
EXTHDRS = $(EXTSRCS:.c=.h)
OPSRCS = op/mem.c op/run.c
OPHDRS = $(OPSRCS:.c=.h)
COMMCOMM = comm/info.c comm/commsel.c
COMMSERIAL = comm/c2n232.c comm/serial.c
COMMPC = comm/pcpar.c comm/kontros.c comm/pc64.c comm/prlink.c \
	comm/x1541.c comm/c64net.c
COMMAMIGA = comm/amigapar.c comm/prlink88.c comm/prlink48.c \
	comm/transnib.c comm/emul1541.c comm/em1541.c
COMMSRCS = $(COMMCOMM) $(COMM_SERIAL:yes=$(COMMSERIAL)) \
	$(COMM_PC:yes=$(COMMPC)) $(COMM_AMIGA:yes=$(COMMAMIGA))
COMMHDRS = $(COMMSRCS:.c=.h) comm/comm.h

SRCS = cbmlink.c $(EXTSRCS) $(OPSRCS) $(COMMSRCS)
HDRS = $(EXTHDRS) $(OPHDRS) $(COMMHDRS)
OBJS = $(SRCS:.c=.o)

bugger:
	@echo Choose the target system, e.g.: make -f Makefile.unix
	@exit 1

real-all: $(TARGET)

clean:
	$(RM) $(OBJS)

reallyclean: clean
	$(RM) $(TARGET)

install: $(TARGET)
	$(INSTALLDIR) $(BINDIR)
	$(INSTALLBIN) $(TARGET) $(BINDIR)

installman: $(MANPAGES)
	$(INSTALLDIR) $(MANDIR)
	$(INSTALLDATA) $(MANPAGES) $(MANDIR)

$(TARGET): $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)

.phony: all clean reallyclean install installman

.SUFFIXES:
.SUFFIXES: .c .h .o .1 .dvi .pdf

.c.o:
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
.1.dvi:
	groff -man -Tdvi $< > $@
.dvi.pdf:
	dvipdfm $<

# Dependencies
cbmlink.o: comm/commsel.h $(EXTHDRS) $(OPHDRS)
cbmlink.o $(OPSRCS:.c=.o): comm/info.h comm/comm.h
ext/ext.o: $(OPHDRS)
$(EXTSRCS:.c=.o): comm/info.h comm/comm.h
comm/commsel.o: $(COMMHDRS)
$(COMMSRCS:.c=.o): comm/info.h
$(COMMPC:.c=.o): comm/pcpar.h
$(COMMAMIGA:.c=.o): comm/amigapar.h

ext/ext.o: ext/ext.h
ext/rdfile.o: ext/rdfile-o.h
ext/wrfile.o: ext/wrfile-o.h
ext/disk.o: ext/disk-o.h
op/mem.o: op/mem.h
op/run.o: op/run.h

comm/pcpar.o: comm/pcpar.h
comm/kontros.o: comm/kontros.h
comm/pc64.o: comm/pc64.h
comm/prlink.o: comm/prlink.h
comm/x1541.o: comm/x1541.h
comm/c64net.o: comm/c64net.h

comm/amigapar.o: comm/amigapar.h
comm/prlink88.o: comm/prlink88.h
comm/prlink48.o: comm/prlink48.h
comm/transnib.o: comm/transnib.h
comm/emul1541.o: comm/emul1541.h
comm/em1541.o: comm/em1541.h
