# nfs-server.mk - makefile for nfsd and mountd

CC = gcc
RPCGEN = rpcgen

DEFINES = -DEXPORTSFILE=\"/etc/exports\"
CFLAGS = -I. -O2 -fomit-frame-pointer -DDEBUG $(DEFINES)

LDFLAGS = 

PROGS = nfsd mountd

CFILES = hnfsd.c dispatch.c getattr.c fh.c auth_clnt.c \
	logging.c exports.c main.c unfsmntd.c
GENFILES = mount_svc.c mount_xdr.c mount.h nfs_prot_xdr.c nfs_prot.h
XDRFILES = mount.x nfs_prot.x
HFILES = hnfsd.h fh.h

NFS_OFILES = hnfsd.o dispatch.o getattr.o fh.o nfs_prot_xdr.o auth_clnt.o \
	logging.o exports.o main.o utimes.o
MOUNT_OFILES = mount_svc.o mount_xdr.o unfsmntd.o fh.o

LIBS = 

all: $(PROGS)

nfsd: $(NFS_OFILES)
	$(CC) $(LDFLAGS) -o $@ $(NFS_OFILES) $(LIBS)

mountd: $(MOUNT_OFILES)
	$(CC) $(LDFLAGS) -o $@ $(MOUNT_OFILES) $(LIBS)

nfs_prot.x:
	cp /usr/include/rpcsvc/nfs_prot.x .

mount.x:
	cp /usr/include/rpcsvc/mount.x .

nfs_prot.h: nfs_prot.x
	$(RPCGEN) -h $? | \
		sed 's;^\(.*\)nfsproc;/* \1 */ int nfsproc;' > $@

nfs_prot_xdr.c: nfs_prot.x
	$(RPCGEN) -c -o $@ $?

mount.h: mount.x
	$(RPCGEN) -h -o $@ $?

mount_xdr.c: mount.x
	$(RPCGEN) -c -o $@ $?

mount_svc.c: mount.x
	${RPCGEN} -s udp $? | \
	sed \
		-e 's/main()/main(argc,argv) int argc; char **argv;/' \
		-e 's/svc_run();/unfsmntd_init(argc,argv); svc_run();/' \
	    > $@

install: $(PROGS)
	for i in $(PROGS); do install $$i /etc/$$i; done

dep: $(CFILES) $(GENFILES) $(HFILES)
	sed '/^### Dep/q' Makefile >tmp_make
	$(CC) -M $(CFLAGS) $(CFILES) $(GENFILES) >> tmp_make
	cp tmp_make Makefile

clean:
	rm -f *.o *.b *.bak *~ \#* tmp_make $(GENFILES) $(XDRFILES)

clobber: clean
	rm -f $(PROGS)

### Dependencies: do not delete this line
hnfsd.o : hnfsd.c /usr/include/sys/types.h /usr/include/linux/types.h /usr/include/strings.h \
  /usr/include/string.h /usr/include/traditional.h /usr/include/sys/file.h /usr/include/fcntl.h \
  /usr/include/features.h /usr/include/linux/fcntl.h /usr/include/sys/dir.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h hnfsd.h /usr/include/sys/socket.h \
  /usr/include/linux/socket.h /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/linux/time.h \
  /usr/include/time.h /usr/include/rpc/types.h /usr/include/netinet/in.h /usr/include/rpc/xdr.h \
  /usr/include/rpc/auth.h /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h \
  /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h \
  nfs_prot.h libc.h /usr/include/unistd.h /usr/include/sys/stat.h /usr/include/linux/stat.h \
  /usr/include/sys/times.h /usr/include/linux/times.h /usr/include/sys/utsname.h \
  /usr/include/sys/param.h /usr/include/linux/param.h /usr/include/sys/resource.h \
  /usr/include/linux/resource.h /usr/include/utime.h /usr/include/linux/utime.h \
  /usr/include/signal.h /usr/include/linux/signal.h /usr/include/stdio.h /usr/include/_G_config.h \
  /usr/include/errno.h /usr/include/linux/errno.h fh.h 
dispatch.o : dispatch.c /usr/include/stdio.h /usr/include/traditional.h /usr/include/_G_config.h \
  hnfsd.h /usr/include/sys/types.h /usr/include/linux/types.h \
  /usr/include/sys/socket.h /usr/include/linux/socket.h /usr/include/rpc/rpc.h \
  /usr/include/sys/time.h /usr/include/linux/time.h /usr/include/time.h /usr/include/features.h \
  /usr/include/rpc/types.h /usr/include/netinet/in.h /usr/include/rpc/xdr.h /usr/include/rpc/auth.h \
  /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h \
  /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h \
  nfs_prot.h libc.h /usr/include/unistd.h /usr/include/sys/stat.h /usr/include/linux/stat.h \
  /usr/include/sys/times.h /usr/include/linux/times.h /usr/include/sys/utsname.h \
  /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/resource.h /usr/include/linux/resource.h /usr/include/utime.h \
  /usr/include/linux/utime.h /usr/include/signal.h /usr/include/linux/signal.h \
  /usr/include/errno.h /usr/include/linux/errno.h 
getattr.o : getattr.c hnfsd.h /usr/include/sys/types.h /usr/include/linux/types.h \
  /usr/include/sys/socket.h /usr/include/traditional.h /usr/include/linux/socket.h \
  /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/linux/time.h /usr/include/time.h \
  /usr/include/features.h /usr/include/rpc/types.h /usr/include/netinet/in.h /usr/include/rpc/xdr.h \
  /usr/include/rpc/auth.h /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h \
  /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h \
  nfs_prot.h libc.h /usr/include/unistd.h /usr/include/sys/stat.h /usr/include/linux/stat.h \
  /usr/include/sys/times.h /usr/include/linux/times.h /usr/include/sys/utsname.h \
  /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/resource.h /usr/include/linux/resource.h /usr/include/utime.h \
  /usr/include/linux/utime.h /usr/include/signal.h /usr/include/linux/signal.h \
  /usr/include/stdio.h /usr/include/_G_config.h /usr/include/errno.h /usr/include/linux/errno.h \
  fh.h 
fh.o : fh.c /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/types.h /usr/include/linux/types.h /usr/include/sys/file.h \
  /usr/include/fcntl.h /usr/include/features.h /usr/include/traditional.h /usr/include/linux/fcntl.h \
  /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/linux/time.h /usr/include/time.h \
  /usr/include/rpc/types.h /usr/include/netinet/in.h /usr/include/sys/socket.h \
  /usr/include/linux/socket.h /usr/include/rpc/xdr.h /usr/include/rpc/auth.h /usr/include/rpc/clnt.h \
  /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h /usr/include/rpc/svc.h \
  /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h /usr/include/sys/dir.h \
  /usr/include/signal.h /usr/include/linux/signal.h /usr/include/strings.h /usr/include/string.h \
  /usr/include/errno.h /usr/include/linux/errno.h \
  /usr/include/stdio.h /usr/include/_G_config.h nfs_prot.h libc.h /usr/include/unistd.h \
  /usr/include/sys/stat.h /usr/include/linux/stat.h /usr/include/sys/times.h /usr/include/linux/times.h \
  /usr/include/sys/utsname.h /usr/include/sys/resource.h /usr/include/linux/resource.h \
  /usr/include/utime.h /usr/include/linux/utime.h fh.h new_fh.c 
nfs_prot_xdr.o : nfs_prot_xdr.c /usr/include/rpc/rpc.h /usr/include/sys/time.h \
  /usr/include/traditional.h /usr/include/linux/time.h /usr/include/time.h /usr/include/features.h \
  /usr/include/sys/types.h /usr/include/linux/types.h /usr/include/rpc/types.h \
  /usr/include/netinet/in.h /usr/include/sys/socket.h /usr/include/linux/socket.h \
  /usr/include/rpc/xdr.h /usr/include/rpc/auth.h /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h \
  /usr/include/rpc/auth_unix.h /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h \
  /usr/include/rpc/netdb.h nfs_prot.h 
auth_clnt.o : auth_clnt.c /usr/include/netdb.h \
  hnfsd.h /usr/include/sys/types.h /usr/include/linux/types.h /usr/include/sys/socket.h \
  /usr/include/traditional.h /usr/include/linux/socket.h /usr/include/rpc/rpc.h \
  /usr/include/sys/time.h /usr/include/linux/time.h /usr/include/time.h /usr/include/features.h \
  /usr/include/rpc/types.h /usr/include/netinet/in.h /usr/include/rpc/xdr.h /usr/include/rpc/auth.h \
  /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h \
  /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h \
  nfs_prot.h libc.h /usr/include/unistd.h /usr/include/sys/stat.h /usr/include/linux/stat.h \
  /usr/include/sys/times.h /usr/include/linux/times.h /usr/include/sys/utsname.h \
  /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/resource.h /usr/include/linux/resource.h /usr/include/utime.h \
  /usr/include/linux/utime.h /usr/include/signal.h /usr/include/linux/signal.h \
  /usr/include/stdio.h /usr/include/_G_config.h /usr/include/errno.h /usr/include/linux/errno.h 
logging.o : logging.c /usr/include/stdio.h /usr/include/traditional.h /usr/include/_G_config.h \
  hnfsd.h /usr/include/sys/types.h /usr/include/linux/types.h /usr/include/sys/socket.h \
  /usr/include/linux/socket.h /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/linux/time.h \
  /usr/include/time.h /usr/include/features.h /usr/include/rpc/types.h /usr/include/netinet/in.h \
  /usr/include/rpc/xdr.h /usr/include/rpc/auth.h /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h \
  /usr/include/rpc/auth_unix.h /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h \
  /usr/include/rpc/netdb.h nfs_prot.h libc.h /usr/include/unistd.h /usr/include/sys/stat.h \
  /usr/include/linux/stat.h /usr/include/sys/times.h /usr/include/linux/times.h \
  /usr/include/sys/utsname.h /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/resource.h /usr/include/linux/resource.h /usr/include/utime.h \
  /usr/include/linux/utime.h /usr/include/signal.h /usr/include/linux/signal.h \
  /usr/include/errno.h /usr/include/linux/errno.h fh.h 
exports.o : exports.c /usr/include/netdb.h /usr/include/stdio.h /usr/include/traditional.h \
  /usr/include/_G_config.h /usr/include/ctype.h \
  /usr/include/features.h /usr/include/strings.h /usr/include/string.h /usr/include/sys/types.h \
  /usr/include/linux/types.h hnfsd.h /usr/include/sys/socket.h /usr/include/linux/socket.h \
  /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/linux/time.h /usr/include/time.h \
  /usr/include/rpc/types.h /usr/include/netinet/in.h /usr/include/rpc/xdr.h /usr/include/rpc/auth.h \
  /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h \
  /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h \
  nfs_prot.h libc.h /usr/include/unistd.h /usr/include/sys/stat.h /usr/include/linux/stat.h \
  /usr/include/sys/times.h /usr/include/linux/times.h /usr/include/sys/utsname.h \
  /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/resource.h /usr/include/linux/resource.h /usr/include/utime.h \
  /usr/include/linux/utime.h /usr/include/signal.h /usr/include/linux/signal.h \
  /usr/include/errno.h /usr/include/linux/errno.h 
main.o : main.c /usr/include/stdio.h /usr/include/traditional.h /usr/include/_G_config.h \
  /usr/include/sys/ioctl.h /usr/include/unistd.h \
  /usr/include/sys/stat.h /usr/include/sys/types.h /usr/include/linux/types.h \
  /usr/include/linux/stat.h /usr/include/sys/time.h /usr/include/linux/time.h \
  /usr/include/time.h /usr/include/features.h /usr/include/sys/times.h /usr/include/linux/times.h \
  /usr/include/sys/utsname.h /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/resource.h /usr/include/linux/resource.h /usr/include/utime.h \
  /usr/include/linux/utime.h /usr/include/signal.h /usr/include/linux/signal.h \
  /usr/include/termios.h /usr/include/linux/termios.h /usr/include/rpc/rpc.h /usr/include/rpc/types.h \
  /usr/include/netinet/in.h /usr/include/sys/socket.h /usr/include/linux/socket.h \
  /usr/include/rpc/xdr.h /usr/include/rpc/auth.h /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h \
  /usr/include/rpc/auth_unix.h /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h \
  /usr/include/rpc/netdb.h hnfsd.h nfs_prot.h libc.h /usr/include/errno.h /usr/include/linux/errno.h \
  fh.h 
mount_svc.o : mount_svc.c /usr/include/stdio.h /usr/include/traditional.h /usr/include/_G_config.h \
  /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/linux/time.h /usr/include/time.h \
  /usr/include/features.h /usr/include/sys/types.h /usr/include/linux/types.h \
  /usr/include/rpc/types.h /usr/include/netinet/in.h /usr/include/sys/socket.h \
  /usr/include/linux/socket.h /usr/include/rpc/xdr.h /usr/include/rpc/auth.h /usr/include/rpc/clnt.h \
  /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h /usr/include/rpc/svc.h \
  /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h mount.h 
mount_xdr.o : mount_xdr.c /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/traditional.h \
  /usr/include/linux/time.h /usr/include/time.h /usr/include/features.h /usr/include/sys/types.h \
  /usr/include/linux/types.h /usr/include/rpc/types.h /usr/include/netinet/in.h \
  /usr/include/sys/socket.h /usr/include/linux/socket.h /usr/include/rpc/xdr.h \
  /usr/include/rpc/auth.h /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h \
  /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h \
  mount.h 
unfsmntd.o : unfsmntd.c /usr/include/errno.h /usr/include/traditional.h /usr/include/linux/errno.h \
  /usr/include/sys/types.h /usr/include/linux/types.h /usr/include/sys/stat.h \
  /usr/include/linux/stat.h /usr/include/rpc/rpc.h /usr/include/sys/time.h /usr/include/linux/time.h \
  /usr/include/time.h /usr/include/features.h /usr/include/rpc/types.h /usr/include/netinet/in.h \
  /usr/include/sys/socket.h /usr/include/linux/socket.h /usr/include/rpc/xdr.h \
  /usr/include/rpc/auth.h /usr/include/rpc/clnt.h /usr/include/rpc/rpc_msg.h /usr/include/rpc/auth_unix.h \
  /usr/include/rpc/svc.h /usr/include/rpc/svc_auth.h /usr/include/rpc/netdb.h \
  /usr/include/sys/ioctl.h /usr/include/unistd.h /usr/include/sys/times.h /usr/include/linux/times.h \
  /usr/include/sys/utsname.h /usr/include/sys/param.h /usr/lib/gcc-lib/i386-linux/2.2.2d/include/limits.h \
  /usr/include/limits.h /usr/include/linux/limits.h /usr/include/linux/param.h \
  /usr/include/sys/resource.h /usr/include/linux/resource.h /usr/include/utime.h \
  /usr/include/linux/utime.h /usr/include/signal.h /usr/include/linux/signal.h \
  /usr/include/termios.h /usr/include/linux/termios.h mount.h /usr/include/ctype.h \
  /usr/include/stdio.h /usr/include/_G_config.h 
