CC = gcc
CFLAGS = -O2 -DDEBIAN
LDFLAGS = -s
LDLIBS = 

INSTALL = install
LS = ls

bindir = /bin
devdir = /dev
sbindir = /sbin
usrbindir = /usr/bin
usrsbindir = /usr/sbin
libdir = /usr/lib
mandir = /usr/man
man1dir = $(mandir)/man1
man8dir = $(mandir)/man8

# Programs that are installed to $(bindir).
BINPROGS = arch dmesg login more run-parts sync

# Programs that are installed to $(sbindir).
SBINPROGS = clock fsck.minix getty installkernel kbdrate \
            mkfs mkfs.minix mkswap update cfdisk fdisk

# Programs that are installed to $(usrbindir).
USRBINPROGS = fdformat getopt newgrp passwd setfdprm tunelp

# Programs that are installed to $(usrsbindir).
USRSBINPROGS = mkboot rdev

.c.o:
	$(CC) $(CFLAGS) -c $<

.o:
	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)

all: $(BINPROGS) $(SBINPROGS) $(USRBINPROGS) $(USRSBINPROGS)

clean:
	rm -f $(BINPROGS) $(SBINPROGS) $(USRBINPROGS) $(USRSBINPROGS)
	rm -f *.o *.s core

install: all
	./mkinstalldirs $(bindir) $(sbindir) $(usrbindir) $(usrsbindir) \
	  $(libdir) $(man1dir) $(man8dir)
	-$(INSTALL) -d $(devdir)
	-$(INSTALL) MAKEDEV $(devdir)/MAKEDEV
	for f in $(BINPROGS); \
	do \
	  $(INSTALL) $$f $(bindir)/$$f; \
	done
	for f in $(SBINPROGS); \
	do \
	  $(INSTALL) $$f $(sbindir)/$$f; \
	done
	for f in $(USRBINPROGS); \
	do \
	  $(INSTALL) $$f $(usrbindir)/$$f; \
	done
	chmod 4755 $(usrbindir)/newgrp $(usrbindir)/passwd
	for f in $(USRSBINPROGS); \
	do \
	  $(INSTALL) $$f $(usrsbindir)/$$f; \
	done
	-$(INSTALL) -d $(libdir)
	$(INSTALL) -m 644 more.help $(libdir)/more.help
	for f in *.1; \
	do \
	  $(INSTALL) -m 644 $$f $(man1dir)/$$f; \
	done
	for f in `ls *.8 | sed /bdflush.8/d`; \
	do \
	  $(INSTALL) -m 644 $$f $(man8dir)/$$f; \
	done
	install -m 644 bdflush.8 $(man8dir)/update.8

arch:       arch.o
cfdisk:     cfdisk.o llseek.o
	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) -lcurses
clock:      clock.o
dmesg:      dmesg.o
fdformat:   fdformat.o
fdisk:      fdisk.o llseek.o
fsck.minix: fsck.minix.o
getopt:     getopt.o get_opt.o
getty:      getty.o
getty.o:    pathnames.h
kbdrate:    kbdrate.o
login:      login.o
login.o:    pathnames.h
mkboot:     mkboot.sh
mkfs:       mkfs.o
mkfs.minix: mkfs.minix.o
mkswap:     mkswap.o
more:       more.o
	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) -ltermcap
newgrp:     newgrp.o
newgrp.o:   pathnames.h
passwd:     islocal.o passwd.o
rdev:       rdev.o
run-parts:  run-parts.pl
	cat run-parts.pl >run-parts
	chmod a+x run-parts
setfdprm:   setfdprm.o
sync:       sync.o
	ld -s -N -e _main -o $@ $^
sync.o:     sync.S
	cpp sync.S > sync.s
	as -o sync.o sync.s
tunelp:     tunelp.o
update:     bdflush.o
	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
