#
# Copyright (c) 1988 Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that the above copyright notice and this paragraph are
# duplicated in all such forms and that any documentation,
# advertising materials, and other materials related to such
# distribution and use acknowledge that the software was developed
# by the University of California, Berkeley.  The name of the
# University may not be used to endorse or promote products derived
# from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#	@(#)Makefile	5.8 (Berkeley) 9/22/88
#

#
# Local choices:   -DUSE_PWDAUTH  -- if system supports (SunOS) C2 things,
#				     and especially wants them in action..
#                  -DUSG          -- SVR3
#		   -DISC	  -- ISC 3.0 variant of USG
#		   -DSVR4	  -- Solaris (et.al.?)
#		   -DUSE_SHADOW   -- Shadow password -- SysV(R3/R4)
#				     ( Also needs -lsec on some (all?) cases )
#		   -DUSE_MMAP	  -- Use mmap() for allocing an IPC area
#		   -DUSE_LOCKF	  -- Use lockf()
#		   -DUSE_FLOCK	  -- Use flock() instead of  lockf()..
#		   -DUSE_FCNTL	  -- Use fcntl() instead of  lockf()..
#		   -DUSE_WAITPID  -- Use waitpid()
#		   -DUSE_GETCWD
#		   -DUSE_SYSVIPC  -- Use SysV style semop(), shmctl() stuff
#		   -DSecureWare	  -- OSF/1 Echanged Security..
#

# DEBUGGING_MALLOC=../libmalloc_dgcc.a
# DEBUGGING_MALLOC=-L/l/lib -lcsrimalloc

#CFLAGS= -DSETPROCTITLE -DUSE_GETCWD -DSecureWare -DUSE_SYSVIPC # OSF/1 3.0 Ench.Sec
#CFLAGS= -DSETPROCTITLE -DUSE_GETCWD -DUSE_MMAP -DUSE_FLOCK	# OSF/1 3.x w/o MLS+

#CFLAGS= -DSETPROCTITLE -O -g -DUSE_PWDAUTH -DUSE_MMAP -DUSE_FLOCK	# SunOS 4.1 with C2
#CFLAGS= -O -g -DUSE_SHADOW -DUSE_SYSVIPC -DSVR4 -DUSE_WAITPID # SVR4 (Solaris)
CFLAGS= -O -g -DUSE_SHADOW -DUSE_MMAP -DUSE_LOCKF -DSVR4 -DUSE_WAITPID # SVR4 (Solaris)
#CFLAGS= -g -posix -D_POSIX_SOURCE -DUSG -DISC -DMAXPATHLEN=1024 -DNO_ASM -DUSE_SHADOW # ISC 3.0 (?)
#CFLAGS= -DSETPROCTITLE +O3 -DSVR4 -DUSE_MMAP	# HP-UX 9.X
#CFLAGS= -g -posix -DUSE_WAITPID -DUSE_FCNTL -DUSE_MMAP -O	# Linux
CC=	gcc -g -O -Wall	# Where applicable
#CC=cc -g
#CC=	cc		#  -- " --
#CC=	cc -O -g	# Solaris SunSoft CC 4.2
#CC= gcc -g
#CC=	cc -O -g3	#  -- " -- (OSF/1 3.x)
#CC=	cc -migrate -g3 -O3 -std1 -Olimit 1000 #  -- " -- (OSF/1 3.x)
#CC=	cc -migrate -g1
# NOTICE: HARD-DEFINED YACC/BISON CHANGE FAR BELOW! (Look for ".y.c:")
GCC=	$(CC) # If need be..
#LDFLAGS=   -lsecurity -laud -lresolv		# OSF/1 3.0 Ench.Security
#LDFLAGS=  -lresolv			# SunOS 4.x,
#LDFLAGS=  -lsocket -lnsl -lresolv	# SVR4 (Solaris <  2.6)
LDFLAGS=  -lxnet -lresolv		# SVR4 (Solaris >= 2.6)
#LDFLAGS=   -lsec -linet -lresolv -lcrypt #-lcposix	# ISC 3.0 (SVR3)
#LDFLAGS=				# HP-UX 9.X
#LDFLAGS=				# Linux

FTPD_OUT=ftpd

#LIBC=	/lib/libc.a
SRCS=	ftpd-closure.c ftpd-dataio.c ftpd-main.c ftpd-retr.c ftpd-stat.c  \
	ftpd-store.c ftpd-user.c ftpd-util.c ftpcmd.c glob.c logwtmp.c    \
	popen.c vers.c getusershell.c strpbrk.c strtok.c logftmp.c finder.c  \
	custlocality.c builtin_ls.c rfc821scn.c #extensions.c #traceloc.c
OBJS=	ftpd-closure.o ftpd-dataio.o ftpd-main.o ftpd-retr.o ftpd-stat.o  \
	ftpd-store.o ftpd-user.o ftpd-util.o ftpcmd.o glob.o logwtmp.o    \
	popen.o getusershell.o strpbrk.o strtok.o logftmp.o finder.o	  \
	custlocality.o md5.o md5hash.o ftw.o builtin_ls.o rfc821scn.o	  \
	identuser.o
MAN=	ftpd.0
SAMPLES=	sample.ftpd.conf sample.ftpusers tools documenting.things
ftpdfiles=	ftpd-closure.c ftpd-dataio.c ftpd-main.c ftpd-retr.c      \
		ftpd-stat.c ftpd-store.c ftpd-user.c ftpd-util.c ftpd.c	  \
		ftpcmd.y glob.c logwtmp.c popen.c vers.c getusershell.c   \
		strpbrk.c strtok.c logftmp.c ftmptool.c README Makefile   \
		ftpd.8 newvers.sh syslog-vals.h finder.c version	  \
		custlocality.c custlocality.h md5hash.c md5.c md5.h	  \
		ftw.c ftw.h conversions.h extensions.h builtin_ls.c	  \
		rfc821scn.c identuser.h identuser.c identuser.3		  \
		$(SAMPLES) ftpd-start.sh
all: ftpd ftmptool

test:	ftpd.test ftmptool

.SUFFIXES: .C .s .y

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

.c.C:
	$(CC) -E -o $@ $(CFLAGS) $<
.c.s:
	$(CC) -S -o $@ $(CFLAGS) $<
#.y.c:
#	$(YACC) $<
#	mv y.tab.c $@
.y.c:
	bison -o $@ $<

ftpd.test: ${OBJS} vers.o
	${CC} -o $@.2 ${OBJS} vers.o ${LDFLAGS}
	if [ -f $@ ] ; then mv $@ $@.old ; fi
	mv $@.2 $@
	chmod 755 $@

# OSF/1 AXP ATOM/3rdDegree
ftpd.3rd: ${OBJS} vers.o
	${CC} -Wl,-r -g -non_shared  -o ftpd.rr ${OBJS} vers.o ${LDFLAGS}
	atom  -g ftpd.rr -tool 3rd -o ftpd.3rd

foo_foo1:
	3rd cc  -o ftpd.3rd ${OBJS} vers.o ${DEBUGGING_MALLOC} ${LDFLAGS}
foo_foo2:


ftpd: ${OBJS} vers.o
	${CC} ${CFLAGS} -o ${FTPD_OUT}.2 ${OBJS} vers.o ${DEBUGGING_MALLOC} ${LDFLAGS}
	touch ftpd.2
	if [ -f ${FTPD_OUT} ] ; then mv ${FTPD_OUT} ${FTPD_OUT}.old ; fi
	mv ${FTPD_OUT}.2 ${FTPD_OUT}
	chmod 755 ${FTPD_OUT}

ftmptool: ftmptool.c logftmp.o
	${GCC} $(CFLAGS) -o ftmptool ftmptool.c ${LDFLAGS}

FTPD_DEP=ftpd.c syslog-vals.h custlocality.h
ftpd-closure.o:	ftpd-closure.c ${FTPD_DEP}
ftpd-dataio.o:	ftpd-dataio.c ${FTPD_DEP}
ftpd-main.o:	ftpd-main.c ${FTPD_DEP}
ftpd-retr.o:	ftpd-retr.c ${FTPD_DEP} conversions.h
ftpd-stat.o:	ftpd-stat.c ${FTPD_DEP}
ftpd-store.o:	ftpd-store.c ${FTPD_DEP}
ftpd-user.o:	ftpd-user.c ${FTPD_DEP}
ftpd-util.o:	ftpd-util.c ${FTPD_DEP}
logftmp.o: logftmp.c syslog-vals.h custlocality.h
custlocality.o: custlocality.c custlocality.h

vers.o: ftpd.c ftpcmd.y ${SRCS}
	-sh newvers.sh
	${CC} ${CFLAGS} -c vers.c

clean:
	rm -f ${OBJS} ftpd core ftpcmd.c

cleandir: clean
	rm -f ${MAN} tags .depend

depend: ${SRCS}
	mkdep ${CFLAGS} ${SRCS}

install: install-tool install-ftpd

install-ftpd: ftpd
	: #install -s -o bin -g bin -m 755 ftpd ${DESTDIR}/etc/ftpd
	: #install -c -o bin -g bin -m 755 ftpd.0 ${DESTDIR}/usr/man/cat8
	: # run this FROM ROOT!
	-mv /l/etc/ftpd /l/etc/ftpd.old
	cp ftpd /l/etc/ftpd
	chmod 755 /l/etc/ftpd
	touch install-ftpd

install-tool: ftmptool
	cp ftmptool /l/bin
	chown root /l/bin/ftmptool
	chmod 4111 /l/bin/ftmptool
	touch install-tool

sdb:
	sdb /etc/ftpd /core

lint: ${SRCS}
	lint ${CFLAGS} ${SRCS}

tags: ${SRCS}
	ctags ${SRCS}

dist:
	tar -chf - ${ftpdfiles} | gzip > /pub/local/src/ftpd.funic.tar.gz
	cd /pub/local/src; ls-regen
