/*
 * Imakefile
 *
 * Imakefile for building NASD common API as a linux kernel module
 *
 * Author: Sean Levy
 */
/*
 * Copyright (c) of Carnegie Mellon University, 1999.
 *
 * Permission to reproduce, use, and prepare derivative works of
 * this software for internal use is granted provided the copyright
 * and "No Warranty" statements are included with all reproductions
 * and derivative works. This software may also be redistributed
 * without charge provided that the copyright and "No Warranty"
 * statements are included in all redistributions.
 *
 * NO WARRANTY. THIS SOFTWARE IS FURNISHED ON AN "AS IS" BASIS.
 * CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER
 * EXPRESSED OR IMPLIED AS TO THE MATTER INCLUDING, BUT NOT LIMITED
 * TO: WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY
 * OF RESULTS OR RESULTS OBTAINED FROM USE OF THIS SOFTWARE. CARNEGIE
 * MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT
 * TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.
 */

#include "NASD.tmpl"

CFLAGS += ${NASD_KMOD_EXTRACFLAGS}
DEPEND_DEFINES += ${NASD_KMOD_EXTRACFLAGS}

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC

RPCSRCS = \
	nasd_linux_sock.c \
	nasd_srpc.c \
	nasd_srpc_client.c \
	nasd_srpc_linux_alloc.c \
	nasd_srpc_linux_client.c \
	nasd_srpc_linux_server.c \
	nasd_srpc_server.c \
	nasd_srpc_types_marshall.c

RPCOBJS = \
	nasd_linux_sock.o \
	nasd_srpc.o \
	nasd_srpc_client.o \
	nasd_srpc_linux_alloc.o \
	nasd_srpc_linux_client.o \
	nasd_srpc_linux_server.o \
	nasd_srpc_server.o \
	nasd_srpc_types_marshall.o

#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC */

NORPCOBJS = \
	nasd_linux_common.o \
	nasd_common.o \
	nasd_mem.o \
	nasd_error.o \
	nasd_nonce_mgmt.o \
	nasd_pipe.o \
	nasd_shutdown.o \
	nasd_security.o \
	nasd_tests.o \
	nasd_timeout.o \
	nasd_threadstuff.o \
	nasd_linux_basic.o \
	nasd_linux_hostlocal_kernel.o \
	nasd_linux_timeout_kernel.o \
	nasd_linux_sys.o \
	nasd_base_types_marshall.o \
	nasd_control_marshall.o \
	nasd_drive_types_marshall.o \
	nasd_error_marshall.o \
	nasd_pdrive_marshall.o \
	nasd_types_marshall.o \
	nasd_rpcc.o \
	incstat.o \
	nasd_generic_addts.o \
	sha1dgst.o \
	hmac_sha1.o \
	des.o \
	desmodes.o

OBJS = ${NORPCOBJS} ${RPCOBJS}

SRCS = ${NORPCOBJS:.o=.c} ${RPCSRCS}

KMOD = nasd.o

/* NASD_NoOverrideCOTarget(nasd_linux_common) */

NASD_SpecialOTarget(des,$(CRYPTOLIB_CFLAGS))
NASD_SpecialOTarget(desmodes,$(CRYPTOLIB_CFLAGS))
NASD_SpecialOTarget(sha1dgst,$(CRYPTOLIB_CFLAGS))
NASD_SpecialOTarget(hmac_sha1,$(CRYPTOLIB_CFLAGS))

NASD_SpecialOTarget(nasd_base_types_marshall,$(CVTTYPES_CFLAGS))
NASD_SpecialOTarget(nasd_control_marshall,$(CVTTYPES_CFLAGS))
NASD_SpecialOTarget(nasd_drive_types_marshall,$(CVTTYPES_CFLAGS))
NASD_SpecialOTarget(nasd_error_marshall,$(CVTTYPES_CFLAGS))
NASD_SpecialOTarget(nasd_pdrive_marshall,$(CVTTYPES_CFLAGS))
NASD_SpecialOTarget(nasd_types_marshall,$(CVTTYPES_CFLAGS))

NASD_LinuxKernelModuleTarget($(KMOD),$(OBJS))

NASD_CloneFile(nasd_common.c,common/nasd_common.c)
NASD_CloneFile(nasd_mem.c,common/nasd_mem.c)
NASD_CloneFile(nasd_error.c,common/nasd_error.c)
NASD_CloneFile(nasd_nonce_mgmt.c,common/nasd_nonce_mgmt.c)
NASD_CloneFile(nasd_pipe.c,common/nasd_pipe.c)
NASD_CloneFile(nasd_shutdown.c,common/nasd_shutdown.c)
NASD_CloneFile(nasd_security.c,common/nasd_security.c)
NASD_CloneFile(nasd_tests.c,common/nasd_tests.c)
NASD_CloneFile(nasd_timeout.c,common/nasd_timeout.c)
NASD_CloneFile(nasd_threadstuff.c,common/nasd_threadstuff.c)
NASD_CloneFile(nasd_linux_basic.c,common/linux/nasd_linux_basic.c)
NASD_CloneFile(nasd_linux_hostlocal_kernel.c,common/linux/nasd_linux_hostlocal_kernel.c)
NASD_CloneFile(nasd_linux_timeout_kernel.c,common/linux/nasd_linux_timeout_kernel.c)
NASD_CloneFile(nasd_linux_sys.c,common/linux/nasd_linux_sys.c)
NASD_CloneFile(nasd_rpcc.c,common/i386/nasd_rpcc.c)
NASD_CloneFile(incstat.c,common/generic/incstat.c)
NASD_CloneFile(nasd_generic_addts.c,common/generic/nasd_generic_addts.c)
NASD_CloneFile(nasd_base_types_marshall.c,common/nasd_base_types_marshall.c)
NASD_CloneFile(nasd_control_marshall.c,common/nasd_control_marshall.c)
NASD_CloneFile(nasd_drive_types_marshall.c,common/nasd_drive_types_marshall.c)
NASD_CloneFile(nasd_error_marshall.c,common/nasd_error_marshall.c)
NASD_CloneFile(nasd_pdrive_marshall.c,common/nasd_pdrive_marshall.c)
NASD_CloneFile(nasd_types_marshall.c,common/nasd_types_marshall.c)
NASD_CloneFile(sha1dgst.c,common/cryptolib/src/sha1dgst.c)
NASD_CloneFile(hmac_sha1.c,common/cryptolib/src/hmac_sha1.c)
NASD_CloneFile(des.c,common/cryptolib/src/des.c)
NASD_CloneFile(desmodes.c,common/cryptolib/src/desmodes.c)

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC
NASD_SpecialOTarget(nasd_srpc_types_marshall,$(CVTTYPES_CFLAGS))

NASD_CloneFile(nasd_srpc.c,common/nasd_srpc.c)
NASD_CloneFile(nasd_srpc_client.c,common/nasd_srpc_client.c)
NASD_CloneFile(nasd_srpc_server.c,common/nasd_srpc_server.c)
NASD_CloneFile(nasd_linux_sock.c,common/linux/nasd_linux_sock.c)
NASD_CloneFile(nasd_srpc_linux_alloc.c,common/linux/nasd_srpc_linux_alloc.c)
NASD_CloneFile(nasd_srpc_linux_client.c,common/linux/nasd_srpc_linux_client.c)
NASD_CloneFile(nasd_srpc_linux_server.c,common/linux/nasd_srpc_linux_server.c)
NASD_CloneFile(nasd_srpc_types_marshall.c,common/nasd_srpc_types_marshall.c)
#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC */


NASD_Depend()

/*
 * Don't put anything past this line
 */
#include "NASD.trailer"
