# 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

# rx_event is miscompiled by gcc at -O0, causing panic on startup
.if empty(${CFLAGS:M-O})
CFLAGS+=	-O
.endif

# tell bsd.kmod.mk to build us vnode_if*
SRCS=	vnode_if.h

# We must set SRCS to include at least one .c file if we are also using
# vnode_if.h, due to a bug in the system makefiles where the empty string
# gets expanded to a ".o" entry in OBJS, which there is (correctly) no
# rule to make.  For simplicity, just set this as all of what would
# otherwise be AFS_OS_OBJS so that people have a familiar list to look for.
#
# OS specific "object" files:
SRCS+= \
	osi_crypto.c \
	osi_gcpags.c \
	osi_groups.c \
	osi_file.c \
	osi_inode.c \
	osi_misc.c \
	osi_sleep.c \
	osi_vcache.c \
	osi_vm.c \
	osi_vnodeops.c \
	osi_module.c

#AFS_OS_NFSOBJS = \
#	osi_vfsops_nfs.o

AFS_OS_NONFSOBJS = \
	osi_vfsops.o

# System specific build commands and flags
KSRC = @BSD_KERNEL_PATH@
KBLD = @BSD_KERNEL_BUILD@

# We are not doing very well (WARNS=2 brings in printf format type checking)
WARNS= 1
# We have some sketchy code that redeclares prototypes
CWARNFLAGS+= -Wno-redundant-decls

# setup for bsd.kmod.mk infrastructure
.PATH:	${TOP_SRCDIR}/afs/FBSD
KMODDIR=/boot/modules
KMOD=	libafs
SYSDIR= ${KSRC}

# Name of directory to hold object files and libraries.
KOBJ = MODLOAD

# This tells Makefile.common to use it's single directory build target.
COMPDIRS = single_compdir
INSTDIRS = single_instdir
DESTDIRS = single_destdir

# The common sysincludes code needs the 'h' symlink.
# We cannot include bsd.kmod.mk in this file directly, because it will start
# generating headers and objects in this directory, which we want in $(KOBJ).
# We also need the install target from bsd.kmod.mk in $(KOBJ), but the one
# from Makefile.common in this directory.  A prime candidate for cleanup.
setup:
	-mkdir $(KOBJ)
	-$(RM) $(KOBJ)/Makefile $(KOBJ)/Makefile.common
	$(CP) Makefile $(KOBJ)/Makefile
	echo ".include <bsd.kmod.mk>" >> $(KOBJ)/Makefile
	sed -e 's/^install:/afsinstall:/' Makefile.common > $(KOBJ)/Makefile.common
	-$(RM) -f h
	-ln -fs ${KSRC}/sys h

# Makefile.common sets AFSAOBJS, COMMON_INCLUDE, TOP_{SRC,OBJ}*, and the like.
# We must live with its other pollution of targets and build rules.
include Makefile.common

# we only do the no-NFS case
OBJS=	${AFSAOBJS} ${AFSNONFSOBJS}

LIBAFSNONFS=	libafs.ko
DEFINES= -DAFSDEBUG -DKERNEL -DAFS -DVICE -DNFS -DUFS -DINET -DQUOTA -DGETMOUNT
CFLAGS+= $(DEFINES) ${COMMON_INCLUDE} -I@/sys -Imachine

INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS}
INST_LIBAFSNONFS = ${DESTDIR}${afskerneldir}/${LIBAFSNONFS}

DEST_LIBAFS = ${DEST}/root.client/bin/${LIBAFS}
DEST_LIBAFSNONFS = ${DEST}/root.client/bin/${LIBAFSNONFS}

install_libafs:	$(LIBAFSNONFS) install

dest_libafs: $(LIBAFSNONFS)
	${INSTALL} -d ${DEST}/root.client/bin
	${INSTALL} -m 644 $(LIBAFSNONFS) $(DEST_LIBAFSNONFS)

# This is ugly, but the common infrastructure needs a libafs target.
libafs: depend $(LIBAFSNONFS)

