#
# nasd/kernel_generate/dux/other/nasd/Makefile
#
# Authors: Marc Unangst, 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.
#

THE_TOP=${MAKETOP}/kernel/nasd/.

VPATH = ../../nasd:${THE_TOP}/include/nasd

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_srpc_types.rpc \
	nasd_types.rpc

IDLGENFILES = \
	${RPCGEN_FILES:.rpc=.idl}

MARSH_GENHFILES = ${IDLGENFILES:.idl=_marshall.h}

IDLHFILES = ${IDLGENFILES:.idl=.h} nasd_rpcgen_dceidl.h

DATAFILES = \
	nasd_rpcgen_dceidl.idl \
	nasd_rpcgen_glob_param.h \
	${MARSH_GENHFILES} \
	${IDLGENFILES} \
	${IDLHFILES}

ILIST   = ${DATAFILES}
IDIR    = /usr/sys/include/nasd/
IMODE   = 444
IGROUP  = bin
IOWNER  = bin

NASD_RPCGEN_BIN = ../../../../../bin/nasd_rpcgen
NASD_RPCGEN = ${NASD_RPCGEN_BIN} -S_t
NASD_RPCGEN_INCLUDES = -I${MAKETOP}kernel/nasd/kernel_generate/dux -I${MAKETOP}kernel/nasd/kernel_generate/dux/other

NASD_OPTIONS_H=${MAKETOP}kernel/nasd/include/nasd/nasd_options.h

DCEIDL = /bin/idl
DCEIDLINCLUDES = -I${MAKETOP}kernel/nasd/kernel_generate/dux -I${MAKETOP}kernel/nasd/kernel_generate/dux/other ${GENINC}
DCEIDLIPATH = ${MAKETOP}kernel/nasd/kernel_generate/dux/other

.SUFFIXES: .rpc .idl

${IDLGENFILES}: $${@:.idl=.rpc} $(NASD_RPCGEN_BIN) ${NASD_OPTIONS_H}
	$(RM) -f tmp.$@ $@
	$(NASD_RPCGEN) ${DCEIDLINCLUDES} -i tmp.$@ ${@:.idl=.rpc} 
	$(MV) tmp.$@ $@

${IDLHFILES}: ${IDLGENFILES}
	$(RM) -f tmp1.$@ tmp2.$@ $@
	$(DCEIDL) $(DCEIDLINCLUDES) -client none -server none -header tmp1.$@ ${@:.h=.idl}
	$(SED) "s,<nasd_,<nasd/nasd_," < tmp1.$@ > tmp2.$@
	$(RM) -f tmp1.$@
	$(MV) -f tmp2.$@ $@

${MARSH_GENHFILES}: $${@:_marshall.h=.rpc} $(NASD_RPCGEN_BIN) ${NASD_OPTIONS_H}
	$(RM) -f tmp.$@ $@
	$(NASD_RPCGEN) $(DCEIDLINCLUDES) -e tmp.$@ -P nasd_ -B nasd/${@:_marshall.h=.h} ${@:_marshall.h=.rpc}
	$(MV) tmp.$@ $@

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

include ${MAKEFILEPATH}/standard.mk
include ${MAKEFILEPATH}/datafiles.mk
include ${MAKEFILEPATH}/nasd.mk
