# Copyright 2000, International Business Machines Corporation and others.
# All Rights Reserved.
# 
# This software has been released under the terms of the IBM Public
# License.  For details, see the LICENSE file in the top-level source
# directory or online at http://www.openafs.org/dl/license10.html

SHELL=/bin/sh
DEST=@DEST@
TOP_SRCDIR=@TOP_SRCDIR@
TOP_INCDIR=@TOP_INCDIR@
TOP_LIBDIR=@TOP_LIBDIR@
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
sbindir=@sbindir@
libexecdir=@libexecdir@
libdir=@libdir@
includedir=@includedir@
mandir=@mandir@
afskerneldir=@afskerneldir@
afssrvbindir=@afssrvbindir@
afssrvsbindir=@afssrvsbindir@
afssrvlibexecdir=@afssrvlibexecdir@

# Systype-generic items
SYS_NAME=@AFS_SYSNAME@
MKAFS_OSTYPE=@MKAFS_OSTYPE@

# Systype-specific items
LINUX_KERNEL_PATH=@LINUX_KERNEL_PATH@
LINUX_VERSION=@LINUX_VERSION@
DARWIN_INFOFILE=@DARWIN_INFOFILE@

# Other items
LIB_AFSDB=@LIB_AFSDB@

# Enable build+install of obsolete and insecure packages
# Set to anything other than YES, or comment out to disable the build
WITH_OBSOLETE=@WITH_OBSOLETE@
WITH_INSECURE=@WITH_INSECURE@

ENABLE_KERNEL_MODULE=@ENABLE_KERNEL_MODULE@

include src/config/Makefile.${SYS_NAME}

# To compile AFS from scratch in the src tree run "make".
#   This recursively calls "make install ..." and does not depend on the
#   existence of any non-standard programs.
# To compile for the kernel type "make blibafs".  This assumes install, 
#   rxgen, compile_et and others already exist and runs it with
#   "-argument kinstall".

COMPILE_PART1  = cd src; cd
COMPILE_PART2A = ; $(MAKE)
COMPILE_PART2B = all
COMPILE_PART2  = ${COMPILE_PART2A} ${COMPILE_PART2B}
COMPILE_CLEAN  = ${COMPILE_PART2A} clean

all: force ${TOP_INCDIR} ${TOP_INCDIR}/afs ${TOP_LIBDIR}
	$(MAKE) build

all_nolibafs: force ${TOP_INCDIR} ${TOP_INCDIR}/afs ${TOP_LIBDIR}
	$(MAKE) build TARGET=finale_nolibafs

only_libafs: force ${TOP_INCDIR} ${TOP_INCDIR}/afs ${TOP_LIBDIR}
	$(MAKE) build TARGET=libafs

only_libafs_tree: force ${TOP_INCDIR} ${TOP_INCDIR}/afs ${TOP_LIBDIR}
	$(MAKE) build TARGET=libafs_tree

install: all install_dirs
	$(MAKE) build COMPILE_PART2B=install

install_nolibafs: all_nolibafs install_dirs
	$(MAKE) build TARGET=finale_nolibafs COMPILE_PART2B=install

install_only_libafs: only_libafs install_dirs
	$(MAKE) build TARGET=libafs COMPILE_PART2B=install

dest: all dest_dirs
	$(MAKE) build COMPILE_PART2B=dest

dest_nolibafs: all_nolibafs dest_dirs
	$(MAKE) build TARGET=finale_nolibafs COMPILE_PART2B=dest

dest_only_libafs: only_libafs dest_dirs
	$(MAKE) build TARGET=libafs COMPILE_PART2B=dest

${TOP_INCDIR} ${TOP_INCDIR}/afs ${TOP_LIBDIR}:
	mkdir -p $@

install_dirs: force
	mkdir -p ${DESTDIR}${bindir}
	mkdir -p ${DESTDIR}${sbindir}
	mkdir -p ${DESTDIR}${libexecdir}/openafs
	mkdir -p ${DESTDIR}${libdir}/afs
	mkdir -p ${DESTDIR}${includedir}/afs
	mkdir -p ${DESTDIR}${includedir}/rx
	mkdir -p ${DESTDIR}${afskerneldir}
	mkdir -p ${DESTDIR}${afssrvbindir}
	mkdir -p ${DESTDIR}${afssrvsbindir}
	mkdir -p ${DESTDIR}${afssrvlibexecdir}

dest_dirs: force
	mkdir -p ${DEST}/bin
	mkdir -p ${DEST}/etc
	mkdir -p ${DEST}/lib/afs
	mkdir -p ${DEST}/include/afs
	mkdir -p ${DEST}/include/rx
	mkdir -p ${DEST}/root.client/usr/vice/etc/C
	mkdir -p ${DEST}/root.server/etc
	mkdir -p ${DEST}/root.server/usr/afs/bin

project: cmd comerr 

tests: all 
	${COMPILE_PART1} tests ${COMPILE_PART2}

config: 
	${COMPILE_PART1} config ${COMPILE_PART2}

pinstall: config
	${COMPILE_PART1} pinstall ${COMPILE_PART2}

procmgmt: config pinstall
	${COMPILE_PART1} procmgmt ${COMPILE_PART2}

util: pinstall procmgmt
	${COMPILE_PART1} util ${COMPILE_PART2}

audit: pinstall rx rxkad fsint
	${COMPILE_PART1} audit ${COMPILE_PART2}

comerr: util
	${COMPILE_PART1} comerr ${COMPILE_PART2}

cmd: comerr
	@case ${SYS_NAME} in \
	sgi_6* | sun4x_5[789] | hp_ux11* | sparc64_linux* | alpha_linux* ) \
		${COMPILE_PART1} cmd ${COMPILE_PART2}64 ;; \
	*) \
		${COMPILE_PART1} cmd ${COMPILE_PART2} ;; \
	esac

lwp: project util
	${COMPILE_PART1} lwp ${COMPILE_PART2}

rxgen: pinstall
	${COMPILE_PART1} rxgen ${COMPILE_PART2}

rxobj:

kernrx: 
	${COMPILE_PART1} rx ${COMPILE_PART2}

rx: project lwp rxgen
	${COMPILE_PART1} rx ${COMPILE_PART2}

rxstat: rx
	${COMPILE_PART1} rxstat ${COMPILE_PART2}

rxincls: rxobj
	${COMPILE_PART1} rx ${COMPILE_PART2}

rxtests: rxdebug
rxdebug: rx
	${COMPILE_PART1} rxdebug ${COMPILE_PART2}

fsint: project kfsint

kfsint: lwp rxgen rxincls
	${COMPILE_PART1} fsint ${COMPILE_PART2}

export2: project fsint

export: fsint
	@case ${SYS_NAME} in \
	rs_aix*)	\
	    ${COMPILE_PART1} export ${COMPILE_PART2} ;; \
	  * ) echo skipping export for ${SYS_NAME} ;; \
	esac

afs: export
	${COMPILE_PART1} afs ${COMPILE_PART2}

des: config
	${COMPILE_PART1} des ${COMPILE_PART2} 

sys: project des rx rxstat fsint
	${COMPILE_PART1} sys ${COMPILE_PART2}

rxkad: project des
	${COMPILE_PART1} rxkad ${COMPILE_PART2}

kernauth: 
	${COMPILE_PART1} auth ${COMPILE_PART2}

auth: project comerr des lwp rx sys rxkad audit
	${COMPILE_PART1} auth ${COMPILE_PART2}

ubik: project auth 
	${COMPILE_PART1} ubik ${COMPILE_PART2}

ubiktests: ubik

ptserver: project ubik cmd comerr auth audit
	${COMPILE_PART1} ptserver ${COMPILE_PART2}

kauth: project ubik cmd auth comerr ptserver audit libacl
	${COMPILE_PART1} kauth ${COMPILE_PART2}

dauth: project ubik cmd auth comerr
	${COMPILE_PART1} dauth ${COMPILE_PART2}

libacl: project ptserver
	${COMPILE_PART1} libacl ${COMPILE_PART2}

kerndir: 
	${COMPILE_PART1} dir ${COMPILE_PART2}

dir: project libacl
	${COMPILE_PART1} dir ${COMPILE_PART2}

# Removed from sgi_* case below:
# ${COMPILE_PART1} sgiefs ${COMPILE_PART2};;
sgiefs:
	case ${SYS_NAME} in \
	sgi_*) \
                echo "SGI efs not supported" ;; \
	*) \
		echo No efs stuff for ${SYS_NAME};; \
	esac

vol: project dir afs sgiefs
	${COMPILE_PART1} vol ${COMPILE_PART2}

vlserver: project vol audit
	${COMPILE_PART1} vlserver ${COMPILE_PART2}

viced: project vlserver audit
	${COMPILE_PART1} viced  ${COMPILE_PART2}

tviced: project viced vlserver libafsrpc libafsauthent
	case ${SYS_NAME} in \
	alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
		${COMPILE_PART1} tviced  ${COMPILE_PART2} ;; \
	*) \
		echo Not building MT viced for ${SYS_NAME} ;; \
	esac

volser: project tviced usd kauth audit
	${COMPILE_PART1} volser ${COMPILE_PART2}

venus: project volser ptserver
	${COMPILE_PART1} venus ${COMPILE_PART2}
	${COMPILE_PART1} venus/test ${COMPILE_PART2}

afsd: project sys kauth
	${COMPILE_PART1} afsd ${COMPILE_PART2}

null: project
	${COMPILE_PART1} null ${COMPILE_PART2}

gtx: project null auth # kauth rxkad ?
	case ${SYS_NAME} in \
	  rs_aix* | sun4x_5? | sgi_6? | *linux* | ppc_darwin* | *fbsd*) \
		$(RM) -f ${TOP_LIBDIR}/libtermlib.a; \
		ln -s libnull.a ${TOP_LIBDIR}/libtermlib.a; \
		${COMPILE_PART1} gtx ${COMPILE_PART2};; \
	  *) \
		$(RM) -f ${TOP_LIBDIR}/libtermlib.a; \
		ln -s /usr/lib/libtermlib.a ${TOP_LIBDIR}/libtermlib.a; \
		${COMPILE_PART1} gtx ${COMPILE_PART2};; \
	esac

fsprobe: project util fsint
	${COMPILE_PART1} fsprobe ${COMPILE_PART2}

scout: project gtx fsprobe
	${COMPILE_PART1} scout ${COMPILE_PART2}

uss: des kauth project rx vlserver vol
	${COMPILE_PART1} uss ${COMPILE_PART2}

bozo: project ntp audit
	${COMPILE_PART1} bozo ${COMPILE_PART2}


# Removed from respective case statements below:
# ${COMPILE_PART1} vfsckaix42 ${COMPILE_PART2} ;;
# ${COMPILE_PART1} vfscksol25 ${COMPILE_PART2} ;;
# ${COMPILE_PART1} vfscksol26 ${COMPILE_PART2} ;;
# ${COMPILE_PART1} vfscksol27 ${COMPILE_PART2} ;;
vfsck:	vol
	set -x; \
	case ${SYS_NAME} in \
	sgi_* | *linux* | rs_aix42 | ppc_darwin* | hp_ux* | *fbsd* | *_obsd* ) \
		echo skip vfsck for ${SYS_NAME} ;; \
	 * ) \
		${COMPILE_PART1} vfsck ${COMPILE_PART2} ;; \
	esac

login: project kauth rxkad
	set -x; \
	case ${SYS_NAME} in \
	sgi_* ) \
		${COMPILE_PART1} sgistuff ${COMPILE_PART2} ;; \
	rs_aix42 ) \
		${COMPILE_PART1} tsm41 ${COMPILE_PART2} ;; \
	alpha_dux* ) \
		${COMPILE_PART1} sia ${COMPILE_PART2} ;; \
	sun4x_55 ) \
		${COMPILE_PART1} login ${COMPILE_PART2} ;; \
	parisc_linux24) \
		echo Skipping pam/login for parisc_linux24 ;; \
	sun4x_* | hp_ux11* | *linux* | *fbsd* ) \
		${COMPILE_PART1} pam ${COMPILE_PART2} ;; \
	ppc_darwin* | *_obsd* ) \
		echo Skipping login for ${SYS_NAME} ;; \
	* ) \
		${COMPILE_PART1} login ${COMPILE_PART2} ;; \
	esac

KERNELDIR= \
  afs \
  dir \
  rx \
  fsint \
  auth \
  rxkad \
  util \
  libacl \
  vlserver \
  sgiefs  \
  rxstat


UKERNELDIR= \
  afs \
  dir \
  rx \
  fsint \
  util \
  auth \
  rxkad \
  vlserver \
  kauth \
  des \
  afsweb \
  rxstat


libafs: libafs_setup ${KERNELDIR}
	${COMPILE_PART1} libafs ${COMPILE_PART2}

libafs_tree: libafs_setup ${KERNELDIR}
	-/bin/rm -rf libafs_tree
	for d in afs afsint rx config; do \
		[ -d libafs_tree/$$d ] || mkdir -p libafs_tree/$$d; \
	done
	for f in `cd src/libafs; find . -name '*.[ch]'` \
		Makefile.common Makefile.extradefs ${DARWIN_INFOFILE} \
		afs.shutdown afs.startup redhat.sh sgi_master sgi_system \
		; do \
		${INSTALL} -c -f src/libafs/$$f libafs_tree/$$f; \
	done
	for f in config.guess config.sub install-sh missing mkinstalldirs \
		; do \
		${INSTALL} -c -f $$f libafs_tree/$$f; \
	done
	src/config/config src/libafs/MakefileProto.${MKAFS_OSTYPE}.in libafs_tree/Makefile.in ${SYS_NAME}
	${INSTALL} -c src/config/Makefile.${SYS_NAME}.in libafs_tree/config
	${INSTALL} -c src/config/afsconfig.h.in libafs_tree/config
	${INSTALL} -c -f -ns configure-libafs libafs_tree/configure
	case ${SYS_NAME} in \
	*linux*) \
		${INSTALL} -c src/config/make_vnode.pl libafs_tree/config ; \
		${INSTALL} -c src/afs/LINUX/osi_vfs.hin libafs_tree/afs ;; \
	esac

libuafs: libuafs_setup ${UKERNELDIR}
	set -x; \
	case ${SYS_NAME} in \
	hp_ux102* | *_obsd* ) \
		echo Skipping libuafs for ${SYS_NAME} ;; \
	* ) \
		${COMPILE_PART1} libuafs ${COMPILE_PART2} ;; \
	esac

afsweb: kauth dauth 
	${COMPILE_PART1} afsweb ${COMPILE_PART2}

update: project auth
	${COMPILE_PART1} update ${COMPILE_PART2}

log: project auth 
	${COMPILE_PART1} log ${COMPILE_PART2}

bu_utils: project
	${COMPILE_PART1} bu_utils ${COMPILE_PART2}

usd: project
	${COMPILE_PART1} usd ${COMPILE_PART2}

bubasics: project comerr
	${COMPILE_PART1} bubasics ${COMPILE_PART2}

butm: project bubasics usd
	${COMPILE_PART1} butm ${COMPILE_PART2}

butc: project bubasics butm budb bucoord cmd
	${COMPILE_PART1} butc ${COMPILE_PART2}

tbutc: project bubasics butm budb bucoord cmd butc
	case ${SYS_NAME} in \
	alpha_dux*|sgi_*|sun4x_*|rs_aix4*|*linux*|hp_ux110) \
		${COMPILE_PART1} tbutc ${COMPILE_PART2} ;; \
	*) \
		echo Not building MT butc for ${SYS_NAME} ;; \
	esac

budb: project bubasics
	${COMPILE_PART1} budb ${COMPILE_PART2}

bucoord: project bubasics budb volser
	${COMPILE_PART1} bucoord ${COMPILE_PART2}

xstat: project
	${COMPILE_PART1} xstat ${COMPILE_PART2}

afsmonitor: project gtx xstat
	${COMPILE_PART1} afsmonitor ${COMPILE_PART2}

tests: rxtests ubiktests

# pthread based user space RX library
libafsrpc: rx rxkad des
	case ${SYS_NAME} in \
	alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
	${COMPILE_PART1} libafsrpc  ${COMPILE_PART2} ;; \
	*) \
		echo Not building MT libafsrpc for ${SYS_NAME} ;; \
	esac

libafsauthent: ubik auth kauth libafsrpc
	case ${SYS_NAME} in \
	alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
	${COMPILE_PART1} libafsauthent  ${COMPILE_PART2} ;; \
	*) \
		echo Not building MT libafsrpc for ${SYS_NAME} ;; \
	esac

libadmin_real: 
	${COMPILE_PART1} libadmin ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/adminutil ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/vos ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/client ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/kas ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/pts ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/bos ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/cfg ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/test ${COMPILE_PART2}
	${COMPILE_PART1} libadmin/samples ${COMPILE_PART2}

libadmin: libafsauthent bozo
	case ${SYS_NAME} in \
	alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
			$(MAKE) libadmin_real ;; \
	*) \
		echo Not building MT libadmin for ${SYS_NAME} ;; \
	esac

finale: project cmd comerr afsd allrcmds butc tbutc @ENABLE_KERNEL_MODULE@ libuafs audit kauth log package \
	ptserver scout bu_utils ubik uss bozo vfsck volser \
	venus update xstat afsmonitor dauth rxdebug libafsrpc \
	libafsauthent libadmin
	${COMPILE_PART1} finale ${COMPILE_PART2}

finale_nolibafs: project cmd comerr afsd allrcmds butc tbutc libuafs audit kauth log package \
	ptserver scout bu_utils ubik uss bozo vfsck volser \
	venus update xstat afsmonitor dauth rxdebug libafsrpc \
	libafsauthent libadmin
	${COMPILE_PART1} finale ${COMPILE_PART2}

# Use washtool to ensure MakefileProto is current and obj/libafs exists.

libafs_setup: config export
	src/config/config src/libafs/MakefileProto.${MKAFS_OSTYPE} src/libafs/Makefile ${SYS_NAME}

libuafs_setup: config export
	src/config/config src/libuafs/MakefileProto.${MKAFS_OSTYPE} src/libuafs/Makefile ${SYS_NAME}

force:

TARGET=finale
build: force
	$(MAKE) $(TARGET) DEST=$(DEST) COMPILE_PART2B=$(COMPILE_PART2B) DESTDIR=$(DESTDIR)

kupdate: updatekdir libafs_setup libuafs_setup

blibafs:
	$(MAKE) libafs

blibuafs:
	$(MAKE) libuafs

bwebafs: sys
	$(MAKE) libuafs

clean:
	$(MAKE) clean2

clean2:
	-${COMPILE_PART1} config ${COMPILE_CLEAN}
	-${COMPILE_PART1} pinstall ${COMPILE_CLEAN}
	-${COMPILE_PART1} procmgmt ${COMPILE_CLEAN}
	-${COMPILE_PART1} util ${COMPILE_CLEAN}
	-${COMPILE_PART1} audit ${COMPILE_CLEAN}
	-${COMPILE_PART1} comerr ${COMPILE_CLEAN}
	-${COMPILE_PART1} cmd ${COMPILE_CLEAN}
	-${COMPILE_PART1} lwp ${COMPILE_CLEAN}
	-${COMPILE_PART1} rxgen ${COMPILE_CLEAN}
	-${COMPILE_PART1} rx ${COMPILE_CLEAN}
	-${COMPILE_PART1} rxstat ${COMPILE_CLEAN}
	-${COMPILE_PART1} fsint ${COMPILE_CLEAN}
	-${COMPILE_PART1} export ${COMPILE_CLEAN}
	-${COMPILE_PART1} afs ${COMPILE_CLEAN}
	-${COMPILE_PART1} des ${COMPILE_CLEAN}
	-${COMPILE_PART1} sys ${COMPILE_CLEAN}
	-${COMPILE_PART1} rxkad ${COMPILE_CLEAN}
	-${COMPILE_PART1} auth ${COMPILE_CLEAN}
	-${COMPILE_PART1} ubik ${COMPILE_CLEAN}
	-${COMPILE_PART1} ptserver ${COMPILE_CLEAN}
	-${COMPILE_PART1} kauth ${COMPILE_CLEAN}
	-${COMPILE_PART1} dauth ${COMPILE_CLEAN}
	-${COMPILE_PART1} libacl ${COMPILE_CLEAN}
	-${COMPILE_PART1} dir ${COMPILE_CLEAN}
	-${COMPILE_PART1} vol ${COMPILE_CLEAN}
	-${COMPILE_PART1} vlserver ${COMPILE_CLEAN}
	-${COMPILE_PART1} viced ${COMPILE_CLEAN}
	-${COMPILE_PART1} viced ${COMPILE_CLEAN}
	-${COMPILE_PART1} tviced ${COMPILE_CLEAN}
	-${COMPILE_PART1} volser ${COMPILE_CLEAN}
	-${COMPILE_PART1} venus ${COMPILE_CLEAN}
	-${COMPILE_PART1} venus/test ${COMPILE_CLEAN}
	-${COMPILE_PART1} afsd ${COMPILE_CLEAN}
	-${COMPILE_PART1} null ${COMPILE_CLEAN}
	-${COMPILE_PART1} gtx ${COMPILE_CLEAN}
	-${COMPILE_PART1} fsprobe ${COMPILE_CLEAN}
	-${COMPILE_PART1} scout ${COMPILE_CLEAN}
	-${COMPILE_PART1} uss ${COMPILE_CLEAN}
	-${COMPILE_PART1} bozo ${COMPILE_CLEAN}
	-${COMPILE_PART1} vfsck ${COMPILE_CLEAN}
	-${COMPILE_PART1} sgistuff ${COMPILE_CLEAN}
	-${COMPILE_PART1} tsm41 ${COMPILE_CLEAN}
	-${COMPILE_PART1} sia ${COMPILE_CLEAN}
	-${COMPILE_PART1} login ${COMPILE_CLEAN}
	-${COMPILE_PART1} pam ${COMPILE_CLEAN}
	-${COMPILE_PART1} afsweb ${COMPILE_CLEAN}
	-${COMPILE_PART1} update ${COMPILE_CLEAN}
	-${COMPILE_PART1} log ${COMPILE_CLEAN}
	-${COMPILE_PART1} bu_utils ${COMPILE_CLEAN}
	-${COMPILE_PART1} usd ${COMPILE_CLEAN}
	-${COMPILE_PART1} bubasics ${COMPILE_CLEAN}
	-${COMPILE_PART1} butm ${COMPILE_CLEAN}
	-${COMPILE_PART1} butc ${COMPILE_CLEAN}
	-${COMPILE_PART1} tbutc ${COMPILE_CLEAN}
	-${COMPILE_PART1} budb ${COMPILE_CLEAN}
	-${COMPILE_PART1} bucoord ${COMPILE_CLEAN}
	-${COMPILE_PART1} xstat ${COMPILE_CLEAN}
	-${COMPILE_PART1} afsmonitor ${COMPILE_CLEAN}
	-${COMPILE_PART1} tests ${COMPILE_CLEAN}
	-${COMPILE_PART1} rxdebug ${COMPILE_CLEAN}
	-${COMPILE_PART1} libafsrpc ${COMPILE_CLEAN}
	-${COMPILE_PART1} libafsauthent ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/adminutil ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/client ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/vos ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/kas ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/pts ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/bos ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/cfg ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/test ${COMPILE_CLEAN}
	-${COMPILE_PART1} libadmin/samples ${COMPILE_CLEAN}
	-${COMPILE_PART1} finale ${COMPILE_CLEAN}
	-${COMPILE_PART1} mpp ${COMPILE_CLEAN}
	-${COMPILE_PART1} package ${COMPILE_CLEAN}
	-${COMPILE_PART1} ntp ${COMPILE_CLEAN}
	-${COMPILE_PART1} ftpd43+ ${COMPILE_CLEAN}
	-${COMPILE_PART1} inetd ${COMPILE_CLEAN}
	-${COMPILE_PART1} rsh ${COMPILE_CLEAN}
	-${COMPILE_PART1} rlogind ${COMPILE_CLEAN}
	-${COMPILE_PART1} rcp ${COMPILE_CLEAN}
	-${COMPILE_PART1} libafs ${COMPILE_CLEAN}
	-${COMPILE_PART1} libuafs ${COMPILE_CLEAN}
	-(cd src/libafs; /bin/rm -rf afs afsint config rx)
	-(cd src/libuafs; /bin/rm -rf afs afsint config rx des)
	-/bin/rm -rf ${TOP_INCDIR} ${TOP_LIBDIR}
	-/bin/rm -rf libafs_tree ${SYS_NAME}

 
distclean: clean
	/bin/rm -f config.log config.cache config.status \
	src/config/afsconfig.h \
	Makefile \
	src/afs/Makefile \
	src/afsd/Makefile \
	src/afsd/afs.ppc_darwin.plist \
	src/afsmonitor/Makefile \
	src/afsweb/Makefile \
	src/audit/Makefile \
	src/auth/test/Makefile \
	src/auth/Makefile \
	src/bozo/test/Makefile \
	src/bozo/Makefile \
	src/bu_utils/Makefile \
	src/bubasics/Makefile \
	src/bucoord/Makefile \
	src/budb/Makefile \
	src/butc/Makefile \
	src/butm/Makefile \
	src/cmd/test/Makefile \
	src/cmd/Makefile \
	src/comerr/test/Makefile \
	src/comerr/Makefile \
	src/config/Makefile \
	src/config/Makefile.version \
	src/config/Makefile.version-NOCML \
	src/config/Makefile.${SYS_NAME} \
	src/dauth/Makefile \
	src/des/test/Makefile \
	src/des/Makefile \
	src/des_stub/Makefile \
	src/dir/test/Makefile \
	src/dir/Makefile \
	src/export/Makefile \
	src/finale/Makefile \
	src/fsint/Makefile \
	src/fsprobe/Makefile \
	src/ftpd43+/Makefile \
	src/gtx/Makefile \
	src/inetd/Makefile \
	src/kauth/test/Makefile \
	src/kauth/Makefile \
	src/libacl/test/Makefile \
	src/libacl/Makefile \
	src/libadmin/adminutil/Makefile \
	src/libadmin/Makefile \
	src/libadmin/bos/Makefile \
	src/libadmin/cfg/test/Makefile \
	src/libadmin/cfg/Makefile \
	src/libadmin/client/Makefile \
	src/libadmin/kas/Makefile \
	src/libadmin/pts/Makefile \
	src/libadmin/samples/Makefile \
	src/libadmin/test/Makefile \
	src/libadmin/vos/Makefile \
	src/libafs/Makefile \
	src/libafs/MakefileProto.${MKAFS_OSTYPE} \
	src/libafsauthent/Makefile \
	src/libafsrpc/Makefile \
	src/libuafs/Makefile \
	src/libuafs/MakefileProto.${MKAFS_OSTYPE} \
	src/log/test/Makefile \
	src/log/Makefile \
	src/login/Makefile \
	src/lwp/test/Makefile \
	src/lwp/Makefile \
	src/mpp/Makefile \
	src/ntp/Makefile \
	src/null/Makefile \
	src/package/Makefile \
	src/pam/Makefile \
	src/pinstall/test/Makefile \
	src/pinstall/Makefile \
	src/procmgmt/Makefile \
	src/procmgmt/test/Makefile \
	src/ptserver/Makefile \
	src/rcp/Makefile \
	src/rlogind/Makefile \
	src/rsh/Makefile \
	src/rx/Makefile \
	src/rx/bulk.example/Makefile \
	src/rx/bulktest/Makefile \
	src/rx/multi.example/Makefile \
	src/rx/simple.example/Makefile \
	src/rx/test/Makefile \
	src/rxdebug/Makefile \
	src/rxgen/Makefile \
	src/rxkad/Makefile \
	src/rxkad/test/Makefile \
	src/rxstat/Makefile \
	src/scout/Makefile \
	src/sgistuff/Makefile \
	src/sia/Makefile \
	src/sys/Makefile \
	src/tbutc/Makefile \
	src/tests/Makefile \
	src/tests/run-tests \
	src/tests/OpenAFS/Dirpath.pm \
	src/tsm41/Makefile \
	src/tviced/Makefile \
	src/ubik/Makefile \
	src/update/Makefile \
	src/usd/test/Makefile \
	src/usd/Makefile \
	src/uss/Makefile \
	src/util/Makefile \
	src/util/test/Makefile \
	src/venus/test/Makefile \
	src/venus/Makefile \
	src/vfsck/Makefile \
	src/viced/Makefile \
	src/vlserver/Makefile \
	src/vol/Makefile \
	src/vol/test/Makefile \
	src/volser/Makefile \
	src/wsadmin.src/Makefile \
	src/xstat/Makefile 

pristine: distclean
	/bin/rm -f src/config/afsconfig.h.in configure configure-libafs aclocal.m4

#
# Below targets are all deprecated, insecure, or obsolte, 
# see README.OBSOLETE and README.INSECURE for more info
#

mpp: project
	@case ${WITH_OBSOLETE} in \
	YES) 	${COMPILE_PART1} mpp ${COMPILE_PART2} ;; \
	*)	echo skipping deprecated target: mpp ;; \
	esac

package: project mpp
	@case ${WITH_OBSOLETE} in \
	YES) 	${COMPILE_PART1} package ${COMPILE_PART2} ;; \
	*)	echo skipping deprecated target: package ;; \
	esac

package.files: package
	@case ${WITH_OBSOLETE} in \
	YES) 	${DESTDIR}/bin/makepkgfiles afs.dev ;; \
	*)	echo skipping deprecated target: package.files ;; \
	esac

ntp: project volser
	@case ${WITH_OBSOLETE} in \
	YES) 	case ${SYS_NAME} in \
		sun4x_58 | *linux* | *fbsd* | ppc_darwin* ) echo skipping ntp for ${SYS_NAME} ;; \
		* ) ${COMPILE_PART1} ntp ${COMPILE_PART2} ;; \
		esac ;; \
	*)	echo skipping deprecated target: ntp ;; \
	esac

ftpd43+: project kauth rxkad
	@case ${WITH_INSECURE} in \
	YES) 	case ${SYS_NAME} in \
		rs_aix* | sun4x_55 | *linux*) \
			${COMPILE_PART1} ftpd43+ ${COMPILE_PART2} ;; \
		*) echo skip ftpd43+ for ${SYS_NAME} ;; \
		esac ;; \
	*)	echo skipping deprecated target: ftpd43+ ;; \
	esac

inetd: project kauth rxkad
	@case ${WITH_INSECURE} in \
	YES) 	${COMPILE_PART1} inetd ${COMPILE_PART2} ;; \
	*)	echo skipping deprecated target: inetd ;; \
	esac

rsh: project inetd
	@case ${WITH_INSECURE} in \
	YES) 	${COMPILE_PART1} rsh ${COMPILE_PART2} ;; \
	*)	echo skipping deprecated target: rsh ;; \
	esac

rlogind: project rsh ftpd43+ login
	@case ${WITH_INSECURE} in \
	YES) 	case ${SYS_NAME} in \
		rs_aix*) ${COMPILE_PART1} rlogind ${COMPILE_PART2} ;; \
		*) echo skipping rlogind for ${SYS_NAME} ;; \
		esac ;; \
	*)	echo skipping deprecated target: rlogind ;; \
	esac

rcp: project rsh inetd
	@case ${WITH_INSECURE} in \
	YES) 	case ${SYS_NAME} in \
		sgi_* )	echo skip rcp for ${SYS_NAME} ;; \
		*)	${COMPILE_PART1} rcp ${COMPILE_PART2} ;; \
		esac ;; \
	*)	echo skipping deprecated target: rcp ;; \
	esac

allrcmds: project rcp rlogind


