### General stuff
## Override this if needed
CC = gcc

PROG=	ftpd
MAN=	ftpchroot.5 xferlog.5 ftpd.8

OBJS=	ftpd.o ftpcmd.o logwtmp.o popen.o
CLEANFILES= ftpcmd.c
LIBS= ../port/libbsdport.a -lcrypt

### Common flags and features
OPT_CFLAGS= -Wall -O2 -Wno-unused -Wno-uninitialized
CFLAGS= ${OPT_CFLAGS} -I../port -DLINUX -DVIRTUAL_HOSTING
## Large file support
CFLAGS+= -D_LARGEFILE_SOURCE
CFLAGS+= -D_FILE_OFFSET_BITS=64
## Use sendfile(2). It will increase the performance, but it may be
## incompatible with -D_FILE_OFFSET_BITS=64
#CFLAGS+= -DUSE_SENDFILE
## Support for "SITE MD5" command
CFLAGS+= -DUSE_MD5
## IPv6 support
CFLAGS+= -DINET6
##CFLAGS+= -DSETPROCTITLE -DOLD_SETPROCTITLE
###

### TLS/SSL support
## Comment lines below to disable TLS/SSL support
CFLAGS+= -DUSE_SSL
LIBS+= -lssl -lcrypto
## Next lines must present regardless of TLS/SSL support state
OBJS+= sslapp.o ssl_port.o ssl_port_ftpd.o
CFLAGS+= -I../ssl
###

### Internal LS support
CFLAGS+= -DINTERNAL_LS
LSDIR=	../contrib/ls
LSPATH=	${CURDIR}/${LSDIR}
CFLAGS+= -Dmain=ls_main -I${LSPATH}
OBJS+=	ls.o cmp.o print.o util.o bsdport.o
###

### Support for tcp_wrappers
CFLAGS+=-DTCPWRAPPERS
LIBS+= -lwrap -lnsl
###

### Support for shadow.h
## allow usage of shadow passwd file in some shadow implementations
CFLAGS+= -DHAVE_SHADOW_H
###

### PAM support
## Normally next lines will be included from ./Makefile.inc with help of the
## config.sh script.
#CFLAGS+= -DUSE_PAM
#LIBS+= -lpam
###


### You shouldn't need to edit anything below
include ${CURDIR}/../Makefile.inc
include ${CURDIR}/Makefile.inc

$(PROG):	$(OBJS) $(LIBS) man
	$(CC) -o $(PROG) $(CFLAGS) $(OBJS) $(LIBS)

man:		$(MAN)
	@for i in $(MAN); \
		do (gzip -9 -c $$i>$$i.gz) || exit; \
	done

clean:
	rm -f *.o $(PROG) $(CLEANFILES)
	@for i in $(MAN); \
		do (rm -f $$i.gz) || exit; \
	done

ftpcmd.c:	ftpcmd.y
	@if [ -f /usr/bin/byacc ]; then \
		echo "/usr/bin/byacc ftpcmd.y"; \
		/usr/bin/byacc ftpcmd.y; \
	else \
	if [ -f /usr/local/bin/byacc ]; then \
		echo "/usr/local/bin/byacc ftpcmd.y"; \
		/usr/local/bin/byacc ftpcmd.y; \
	else \
	echo "WARNING: Can not find byacc, trying to use yacc."; \
	echo "WARNING: Please note that Berkeley Yacc is required."; \
	if [ -f /usr/bin/yacc ]; then \
		echo "/usr/bin/yacc ftpcmd.y"; \
		/usr/bin/yacc ftpcmd.y; \
	else \
	if [ -f /usr/local/bin/yacc ]; then \
		echo "/usr/local/bin/yacc ftpcmd.y"; \
		/usr/local/bin/yacc ftpcmd.y; \
	else \
		echo "ERROR: Can not find Berkeley Yacc."; \
	fi; \
	fi; \
	fi; \
	fi;
	mv y.tab.c ftpcmd.c

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

sslapp.o:		../ssl/sslapp.c
	$(CC) -c $(CFLAGS) ../ssl/sslapp.c

ssl_port.o:		../ssl/ssl_port.c
	$(CC) -c $(CFLAGS) ../ssl/ssl_port.c

ssl_port_ftpd.o:	../ssl/ssl_port_ftpd.c
	$(CC) -c $(CFLAGS) ../ssl/ssl_port_ftpd.c

ls.o:		${LSPATH}/ls.c
	$(CC) -c $(CFLAGS) ${LSPATH}/ls.c

cmp.o:		${LSPATH}/cmp.c
	$(CC) -c $(CFLAGS) ${LSPATH}/cmp.c

print.o:		${LSPATH}/print.c
	$(CC) -c $(CFLAGS) ${LSPATH}/print.c

util.o:		${LSPATH}/util.c
	$(CC) -c $(CFLAGS) ${LSPATH}/util.c

bsdport.o:		${LSPATH}/bsdport.c
	$(CC) -c $(CFLAGS) ${LSPATH}/bsdport.c


syntax highlighted by Code2HTML, v. 0.9.1