# 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

srcdir=@srcdir@
include @TOP_OBJDIR@/src/config/Makefile.config
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@


# OS specific object files:
AFS_OS_OBJS = \
	osi_crypto.o \
	osi_gcpags.o \
	osi_groups.o \
	osi_inode.o \
<sunx86_511 sun4x_511>
	osi_ioctl.o \
<all>
	osi_file.o \
	osi_kstat.o \
	osi_sleep.o \
	osi_vcache.o \
	osi_vm.o \
	osi_vnodeops.o \
	rand-fortuna-kernel.o

AFS_OS_NFSOBJS = \
	osi_vfsops_nfs.o

AFS_OS_NONFSOBJS = \
	osi_vfsops.o

# System specific build commands and flags
DEFINES= -DAFSDEBUG -DKERNEL -DAFS -DVICE -DNFS -DUFS -DINET -DQUOTA -DGETMOUNT
#These are redundant
#LD = /usr/ccs/bin/ld
#CC = /opt/SUNWspro/bin/cc
KDEFS= -D_KERNEL -DSYSV -dn ${ARCH_DEFS}
<sunx86_510 sunx86_511>
DBUG= -Wu,-save_args

<sun4x_58 sun4x_59 sun4x_510 sun4x_511>
KDEFS_32 = -xarch=v8
KDEFS_64 = -xarch=v9 

<sunx86_58 sunx86_59 sunx86_510 sunx86_511>
KDEFS_32 = 
KDEFS_64 = -xarch=amd64 -xmodel=kernel

<all>
CFLAGS=-I. -I.. -I${TOP_OBJDIR}/src/config ${FSINCLUDES} $(DEFINES) $(KDEFS) @SOLARIS_CC_KOPTS@ ${DBUG}

<sun4x_58 sunx86_58 sun4x_59 sunx86_59>
LDFLAGS=-r -dy -N drv/ip -N drv/udp -N strmod/rpcmod

<all -sun4x_58 -sunx86_58 -sun4x_59 -sunx86_59>
LDFLAGS=-r -dy -N drv/ip -N drv/udp -N strmod/rpcmod -N fs/ufs

# Name of directory to hold object files and libraries.
<all -sun4x_510 sun4x_511 sunx86_511>
KOBJ = MODLOAD32 MODLOAD64
<sun4x_510 sun4x_511 sunx86_511>
KOBJ = MODLOAD64

# This tells Makefile.common to use it's single directory build target.
<all>
COMPDIRS = solaris_compdirs
INSTDIRS = solaris_instdirs
DESTDIRS = solaris_destdirs

include Makefile.common


setup:
	-$(RM) -f  h net netinet rpc ufs nfs  machine sys inet
	-ln -fs /usr/include/sys h
	-ln -fs /usr/include/net net
	-ln -fs /usr/include/netinet netinet
	-ln -fs /usr/include/rpc rpc
	-ln -fs /usr/include/sys sys
	-ln -fs /usr/include/nfs nfs
	-ln -fs /usr/include/inet inet
	-ln -fs /usr/include/ufs ufs
	for t in ${KOBJ} ; do \
		echo Making directory: $$t; \
		mkdir -p $$t; \
		$(RM) -f $$t/Makefile.common $$t/Makefile $$t/config ; \
		ln -fs ../Makefile.common $$t/Makefile.common ; \
		ln -fs ../Makefile $$t/Makefile ;\
		ln -fs ../config $$t/config ;\
	done


## This is the target for a Solaris 7. Here we build both the 32 bit and
## the 64 bit libafs in MODLOAD32 and MODLOAD64 directories respectively

${COMPDIRS} ${INSTDIRS} ${DESTDIRS}: setup
	for t in ${KOBJ} ; do \
		echo Building directory: $$t ; \
		case $$t in \
			MODLOAD32) \
			 ARCH_DEFS="${KDEFS_32}" ; \
			 BITS="" ;; \
			MODLOAD64) \
			 ARCH_DEFS="${KDEFS_64}" ; \
			 BITS="64" ;; \
		esac ; \
		export ARCH_DEFS ; \
		export BITS ; \
		( cd $$t && $(MAKE) $@_libafs ) || exit $$? ; \
	done

solaris_compdirs_libafs: depsrcs libafs
solaris_instdirs_libafs: install_libafs
solaris_destdirs_libafs: dest_libafs

# Below this line are targets when in the COMMON directory:
LIBAFS = libafs.o
LIBAFSNONFS = libafs.nonfs.o

INST_LIBAFSNONFS = ${DESTDIR}${afskerneldir}/libafs${BITS}.nonfs.o
INST_LIBAFS = ${DESTDIR}${afskerneldir}/libafs${BITS}.o

DEST_LIBAFSNONFS = ${DEST}/root.client/usr/vice/etc/modload/libafs${BITS}.nonfs.o
DEST_LIBAFS = ${DEST}/root.client/usr/vice/etc/modload/libafs${BITS}.o

# Without this line, gmake tries to build libafs.o
.PHONY: libafs

libafs:	$(LIBAFSNONFS) $(LIBAFS)

install_libafs:	$(LIBAFS) $(LIBAFSNONFS)
	${INSTALL} -d ${DESTDIR}${afskerneldir}
	${INSTALL} -m 644 $(LIBAFS) $(INST_LIBAFS)
	${INSTALL} -m 644 $(LIBAFSNONFS) $(INST_LIBAFSNONFS)

dest_libafs: $(LIBAFS) $(LIBAFSNONFS)
	${INSTALL} -d ${DEST}/root.client/usr/vice/etc/modload
	${INSTALL} -m 644 $(LIBAFS) $(DEST_LIBAFS)
	${INSTALL} -m 644 $(LIBAFSNONFS) $(DEST_LIBAFSNONFS)

# See $TOP_SRCDIR/config/cc-wrapper for an explanation/usage of
# OPENAFS_CC_WRAPPER_DEBUG_FLAG

${LIBAFS}: $(AFSAOBJS) $(AFSNFSOBJS)
	$(RM) -f $@
	OPENAFS_CC_WRAPPER_DEBUG_FLAG="$(KERN_DBG)" $(LD_WRAPPER) $(LD) $(LDFLAGS) -o $@ $(AFSAOBJS) ${AFSNFSOBJS}

${LIBAFSNONFS}:  $(AFSAOBJS) $(AFSNONFSOBJS)
	$(RM) -f $@
	OPENAFS_CC_WRAPPER_DEBUG_FLAG="$(KERN_DBG)" $(LD_WRAPPER) $(LD) $(LDFLAGS) -o $@ $(AFSAOBJS) ${AFSNONFSOBJS}
