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

/* LCDEBUGFLAGS = -g -trapuv */

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE
RPCOBJS = \
	nasd_od_dce.o \
	nasd_pdrive_sstub.o
#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE */

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_NONE
RPCOBJS = \
	nasd_od_norpc.o
#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_NONE */

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC
RPCOBJS = \
	nasd_od_srpc.o \
	nasd_pdrive_sstub.o
#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC */

DRIVE_SUPPORT_OBJS = \
	nasd_drive_tunable.o \
	nasd_setup_disk.o

DRIVE_OBJS = \
	$(RPCOBJS) \
	nasd_bmap.o \
	nasd_cbasic.o \
	nasd_cblock.o \
	nasd_check.o \
	nasd_control.o \
	nasd_decompose.o \
	nasd_dirty.o \
	nasd_diskman.o \
	nasd_free.o \
	nasd_ioqueue.o \
	nasd_ioqueue_cscan.o \
	nasd_ioqueue_fifo.o \
	nasd_keymgmt_dr.o \
	nasd_layout.o \
	nasd_layout_reg.o \
	nasd_layout_seq.o \
	nasd_obj.o \
	nasd_od_drive.o \
	nasd_od_mq.o \
	nasd_od_ops.o \
	nasd_od_uio.o \
	nasd_ref.o \
	nasd_remote.o \
	nasd_security_dr.o \
	nasd_trace_dr.o \
	nasd_udppipe.o


PIKDRIVE_OBJS = \
	pikdrive.o 

BP_OBJS = \
	blockparam.o 

SRCS = ${DRIVE_SUPPORT_OBJS:.o=.c} ${DRIVE_OBJS:.o=.c} ${PIKDRIVE_OBJS:.o=.c} ${BP_OBJS:.o=.c}

blockparam.o: blockparam.c
	$(CC) -c $(CFLAGS) -DNASD_CURD=\"`pwd`\" $<

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE
NASD_IDLGenServerNoMepv($(THE_TOP)/include/nasd/nasd_pdrive.idl,nasd_pdrive_sstub,nasd_pdrive.h)

mepv:
	@echo "Generating sstub mepv"
	@$(RM) nasd_pdrive_sstub.c tmp.mepv tmp.no_mepv tmp.mepv_diff
	@$(DCEIDL) -keep c_source -I$(THE_TOP)/include -client none -server stub -sstub tmp.mepv -header XXXNASDREPLACEXXX $(THE_TOP)/include/nasd/nasd_pdrive.idl
	@$(DCEIDL) -no_mepv -keep c_source -I$(THE_TOP)/include -client none -server stub -sstub tmp.no_mepv -header XXXNASDREPLACEXXX $(THE_TOP)/include/nasd/nasd_pdrive.idl
	@sh -c "$(NASD_DIFF) tmp.mepv tmp.no_mepv || exit 0" > tmp.mepv_diff
	@cat tmp.mepv_diff | ${AWK} 'BEGIN {s=0;FS="#";} /^[0123456789]/ { s = s + 1; } ! /^[0123456789]/ { if (s < 2) { print $0 } }' | $(SED) s/IDL_manager_epv/nasd_pdrive_epv/ | sed 's/< //' | sed s/nasd_p_/nasd_sp_/
	@$(RM) XXXNASDREPLACEXXX.h tmp.mepv tmp.no_mepv nasd_pdrive_sstub.c tmp.mepv_diff
#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_DCE */

#if BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC
NASD_RPCSimpleGenServer(nasd_pdrive)
#endif /* BUILD_NASD_RPC_PACKAGE == NASD_RPC_PACKAGE_SRPC */

nasd_drive_build_stamp.c: $(DRIVE_OBJS) 
	@if [ ! -f .version ]; then \
		echo 1 > .version; \
	else \
		expr 0`cat .version` + 1 > .version; \
	fi
	@echo Build number: `cat .version`

	echo "#include <nasd/nasd_drive_build_stamp.h>" > nasd_drive_build_stamp.c
	echo nasd_build_stamp_t nasd_drive_build_stamp=\"Build `cat .version` on `date` from `pwd` \"\; >> nasd_drive_build_stamp.c


NASD_CLibTargetSimple(pikdrive,$(PIKDRIVE_OBJS) nasd_drive_build_stamp.o)

NormalLibraryTarget($(DRIVE_SUPPORT_LIBNAME),$(DRIVE_SUPPORT_OBJS))

NASD_Target(blockparam,$(BP_OBJS))
NASD_CLibTargetSimple(decompose,decompose.o nasd_decompose.o)

#undef InstallManPage
#define InstallManPage(file,dest)

NASD_CDLibTargetSimple(pdrive,$(DRIVE_OBJS) nasd_drive_build_stamp.o)

InstallProgram(pdrive,$(NASD_DESTBIN))

NASD_Pixify(pdrive)

NASD_Depend()

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