/*
 * Imakefile
 *
 * Author: Jim Zelenka
 */
/*
 * Copyright (c) of Carnegie Mellon University, 1996,1997,1998,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"

#define IHaveSubdirs True
#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'

SUBDIRS = \
	dux \
	freebsd \
	generic \
	irix \
	linux \
	solaris \
	video \
	vxworks

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE
IDLFILES = \
	nasd_base_types.idl \
	nasd_control.idl \
	nasd_drive_types.idl \
	nasd_error.idl \
	nasd_edrfs_error.idl \
	nasd_edrfs_server.idl \
	nasd_edrfs_types.idl \
	nasd_pdrive.idl \
	nasd_types.idl \
	nasd_cheops_types.idl \
	nasd_cheops_mgr.idl
#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE */


FILES = \
	$(RPCDEP_H) \
	mpdrspeed_common.h \
	nasd_cache.h \
	nasd_cheops_cache.h \
	nasd_cheops_common.h \
	nasd_cheops_client.h \
	nasd_cheops_client_internal.h \
	nasd_cheops_ios.h \
	nasd_cheops_locks.h \
	nasd_cheops_mgr_btree.h \
	nasd_cheops_mgr_common.h \
	nasd_cheops_mgr_internal.h \
	nasd_cheops_mgr_sst.h \
	nasd_cheops_mgr_structs.h \
	nasd_cheops_raidmap.h \
	nasd_common.h \
	nasd_drive_defaults.h \
	nasd_drive_io.h \
	nasd_drive_options.h \
	nasd_drive_utils.h \
	nasd_freelist.h \
	nasd_getopt.h \
	nasd_general.h \
	nasd_general_simple.h \
	nasd_idl_types.h \
	nasd_index.h \
	nasd_ioqueue.h \
	nasd_itypes.h \
	nasd_keymgmt_afs.h \
	nasd_keymgmt_dr.h \
	nasd_layout.h \
	nasd_marshall.h \
	nasd_marshall_tester.h \
	nasd_mem.h \
	nasd_mq.h \
	nasd_msg.h \
	nasd_nonce_mgmt.h \
	nasd_edrfs_client.h \
	nasd_edrfs_client_colocate.h \
	nasd_edrfs_client_dce.h \
	nasd_edrfs_client_kpdev.h \
	nasd_edrfs_client_msgq.h \
	nasd_edrfs_client_srpc.h \
	nasd_edrfs_internal.h \
	nasd_edrfs_mq.h \
	nasd_edrfs_pipe.h \
	nasd_edrfs_rpc.h \
	nasd_od.h \
	nasd_od_rpc.h \
	nasd_options.h \
	nasd_pdev.h \
	nasd_pdrive_client.h \
	nasd_pdrive_client_colocate.h \
	nasd_pdrive_client_dce.h \
	nasd_pdrive_client_kpdev.h \
	nasd_pdrive_client_msgq.h \
	nasd_pdrive_client_srpc.h \
	nasd_pipe.h \
	nasd_pipe_dce.h \
	nasd_pipe_shm.h \
	nasd_platform.h \
	nasd_rpcgen_dceidl.idl \
	nasd_security.h \
	nasd_security_cl.h \
	nasd_security_dr.h \
	nasd_shell.h \
	nasd_shell_internal.h \
	nasd_shutdown.h \
	nasd_site.h \
	nasd_srpc.h \
	nasd_sys.h \
	nasd_threads_pthread.h \
	nasd_threadstuff.h \
	nasd_timer.h \
	nasd_timeout.h \
	nasd_trace.h \
	nasd_trace_dr.h \
	nasd_udppipe.h \
	nasd_varargs.h

RPCGEN_FILES = \
	nasd_base_types.rpc \
	nasd_cheops_mgr.rpc \
	nasd_cheops_types.rpc \
	nasd_control.rpc \
	nasd_drive_types.rpc \
	nasd_error.rpc \
	nasd_edrfs_error.rpc \
	nasd_edrfs_server.rpc \
	nasd_edrfs_types.rpc \
	nasd_pdrive.rpc \
	nasd_remote_types.rpc \
	nasd_srpc_types.rpc \
	nasd_types.rpc 


MARSH_GENHFILES = \
	${RPCGEN_FILES:.rpc=_marshall.h}

GENHFILES = \
	${RPCGEN_FILES:.rpc=.h} \
	$(RPC_GENHFILES) \
	$(MARSH_GENHFILES)

NDEST = $(NASD_DESTINC)/nasd

#define GenMarshallHeader(_fn_)	NASD_RPCGenMarshallHeader(_fn_.rpc,NASD_CONCAT(_fn_,_marshall).h,NASD_CONCAT(nasd/,_fn_).h)

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE

RPCDEP_H = nasd_rpcgen_dceidl.h

nasd_control.h:: nasd_base_types.idl nasd_error.idl nasd_types.idl
nasd_drive_types.h:: nasd_base_types.idl nasd_error.idl nasd_types.idl
nasd_error.idl:: nasd_base_types.idl
nasd_pdrive.idl:: nasd_base_types.idl nasd_error.idl nasd_types.idl nasd_drive_types.idl
nasd_types.idl:: nasd_base_types.idl nasd_error.idl
nasd_cheops_mgr.h:: nasd_base_types.idl nasd_error.idl nasd_types.idl nasd_cheops_types.idl
nasd_edrfs_error.idl:: nasd_base_types.idl nasd_types.idl
nasd_edrfs_server.idl:: nasd_base_types.idl nasd_error.idl nasd_types.idl nasd_edrfs_types.idl
nasd_edrfs_types.idl:: nasd_base_types.idl nasd_error.idl nasd_types.idl nasd_edrfs_error.idl

InstallMultiple($(IDLFILES),$(NDEST))

NASD_IDLSimpleGenHeader(nasd_rpcgen_dceidl)

#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE */

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC
RPCDEP_H = \
	nasd_rpcgen_c.h

RPC_GENHFILES = \
	nasd_edrfs_server_cstub.h \
	nasd_edrfs_server_sstub.h \
	nasd_pdrive_cstub.h \
	nasd_pdrive_sstub.h \
	nasd_rpcgen_glob_param.h \
	nasd_srpc_types_marshall.h \
	nasd_cheops_mgr_cstub.h \
	nasd_cheops_mgr_sstub.h

NASD_RPCGenServerHeader(nasd_pdrive.rpc,nasd_pdrive_sstub)
NASD_RPCGenClientHeader(nasd_pdrive.rpc,nasd_pdrive_cstub)
NASD_RPCGenServerHeader(nasd_edrfs_server.rpc,nasd_edrfs_server_sstub)
NASD_RPCGenClientHeader(nasd_edrfs_server.rpc,nasd_edrfs_server_cstub)
NASD_RPCGenServerHeader(nasd_cheops_mgr.rpc,nasd_cheops_mgr_sstub)
NASD_RPCGenClientHeader(nasd_cheops_mgr.rpc,nasd_cheops_mgr_cstub)

nasd_rpcgen_glob_param.h:: $(RPCGEN_FILES) $(NASD_RPCGEN_BIN)
	@echo Generating $@
	@$(RM) -f tmp.$@ $@
	$(NASD_RPCGEN_BIN) ${NASD_RPCGEN_INCLUDES} -S_t -P nasd_ -g tmp.$@ ${RPCGEN_FILES}
	$(MV) tmp.$@ $@
	@echo Generated $@

#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC */

NASD_RPCSimpleGenHeader(nasd_base_types)
NASD_RPCSimpleGenHeader(nasd_cheops_mgr)
NASD_RPCSimpleGenHeader(nasd_cheops_types)
NASD_RPCSimpleGenHeader(nasd_control)
NASD_RPCSimpleGenHeader(nasd_drive_types)
NASD_RPCSimpleGenHeader(nasd_error)
NASD_RPCSimpleGenHeader(nasd_edrfs_error)
NASD_RPCSimpleGenHeader(nasd_edrfs_server)
NASD_RPCSimpleGenHeader(nasd_edrfs_types)
NASD_RPCSimpleGenHeader(nasd_pdrive)
NASD_RPCSimpleGenHeader(nasd_remote_types)
NASD_RPCSimpleGenHeader(nasd_srpc_types)
NASD_RPCSimpleGenHeader(nasd_types)

GenMarshallHeader(nasd_base_types)
GenMarshallHeader(nasd_cheops_mgr)
GenMarshallHeader(nasd_cheops_types)
GenMarshallHeader(nasd_control)
GenMarshallHeader(nasd_drive_types)
GenMarshallHeader(nasd_error)
GenMarshallHeader(nasd_edrfs_error)
GenMarshallHeader(nasd_edrfs_server)
GenMarshallHeader(nasd_edrfs_types)
GenMarshallHeader(nasd_pdrive)
GenMarshallHeader(nasd_remote_types)
GenMarshallHeader(nasd_srpc_types)
GenMarshallHeader(nasd_types)

InstallMultiple($(FILES),$(NDEST))
InstallMultiple($(GENHFILES),$(NDEST))
InstallMultiple($(RPCGEN_FILES),$(NDEST))

depend:: $(GENHFILES)

AllTarget($(GENHFILES))

clean::
	$(RM) $(GENHFILES)

MakeSubdirs($(SUBDIRS))
DependSubdirs($(SUBDIRS))

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