## Common -*- makefile -*- for c2n232p

# 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_PAR:yes=-DCOMM_PAR) \
	$(DEFINES) -Icomm

TARGET = cisp
MANPAGES = cisp.1

OPSRCS = spi.c ihex.c srec.c
OPHDRS = $(OPSRCS:.c=.h)
COMMCOMM = comm/commsel.c
COMMSERIAL = comm/serial.c
COMMPAR = comm/par.c
COMMSRCS = $(COMMCOMM) \
	$(COMM_SERIAL:yes=$(COMMSERIAL)) \
	$(COMM_PAR:yes=$(COMMPAR))
COMMHDRS = $(COMMSRCS:.c=.h) comm/comm.h

SRCS = cisp.c $(OPSRCS) $(COMMSRCS)
HDRS = $(OPHDRS) $(COMMHDRS)
OBJS = $(SRCS:.c=.o)

COMMOPT = $(COMMSERIAL) $(COMMPAR)
ALLSRCS = cisp.c $(OPSRCS) $(COMMCOMM) $(COMMOPT)
ALLOBJS = $(ALLSRCS:.c=.o)

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

real-all: $(TARGET)

clean:
	$(RM) $(ALLOBJS)

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 .txt

.c.o:
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
.1.dvi:
	groff -man -Tdvi $< > $@
.dvi.pdf:
	dvipdfm $<
.1.txt:
	groff -man -Tlatin1 $< | sed -e 's/.//g;' > $@

# Dependencies
cisp.o: comm/commsel.h
cisp.o $(OPSRCS:.c=.o): comm/comm.h $(OPHDRS)
comm/commsel.o: $(COMMHDRS)

comm/serial.o: comm/serial.h
comm/par.o: comm/par.h
