WARNINGS=-Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual \
	 -Wstrict-prototypes -Wmissing-prototypes \
	 -Wmissing-declarations -Wnested-externs -Winline -Wcast-align

# Linux libc's /usr/include isn't clean with these.
# -Wredundant-decls      (there are a number of such in /usr/include)
# -Wshadow               (this, C++, stat(), and struct stat don't get along)
# -Wwrite-strings        (arpa/telnet.h and protocols/timed.h fail)

CC=gcc
CFLAGS=-O2 -pipe $(WARNINGS) -D__USE_BSD_SIGNAL
LDFLAGS=
LIBS=

YACC=bison -y

DAEMONMODE=755
MANMODE=644
SBINDIR=/usr/sbin
MANDIR=/usr/man

#######################################################
OBJS=ftpd.o ftpcmd.o logutmp.o logwtmp.o popen.o daemon.o setproctitle.o

all: ftpd

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

ftpcmd.c: %.c: %.y
	$(YACC) $<
	-mv -f y.tab.c $@

ftpd: $(OBJS)
	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@

install: ftpd
	install -s -o root -m$(DAEMONMODE) ftpd $(SBINDIR)/in.ftpd
	install -m$(MANMODE) ftpd.8 $(MANDIR)/man8/in.ftpd.8
	ln -sf in.ftpd.8 $(MANDIR)/man8/ftpd.8

clean:
	rm -f *.o ftpcmd.c y.tab.h ftpd


setproctitle.o: setproctitle.h
daemon.o: daemon.h
ftpd.o: pathnames.h
ftpd.o logutmp.o logwtmp.o popen.o ftpcmd.o: extern.h daemon.h setproctitle.h
