# $Copyright:	$
# Copyright (c) 1984, 1985, 1986, 1987, 1988, 1989, 1990 
# Sequent Computer Systems, Inc.   All rights reserved.
#  
# This software is furnished under a license and may be used
# only in accordance with the terms of that license and with the
# inclusion of the above copyright notice.   This software may not
# be provided or otherwise made available to, or used by, any
# other person.  No title to or ownership of the software is
# hereby transferred.

# $Header: Makefile 1.27 90/04/24 $
#
# Makefile for standalone programs
#
C	= ../common
#
BINDIR	= $(ROOT)/stand
SRCDIR	= $(ROOT)/etc/conf/stand
MOPTS   =
COPTS	= -DSTANDALONE -I. -I$C
CFLAGS	= -O $(MOPTS) $(COPTS) -W2,-Ksz -Wc,-seq
EXPFLAGS	= $(CFLAGS) -DSCED_DIAGS
XCFLAGS	= -Wc,SO -DBOOTXX $(CFLAGS)
LDFLAGS	= -e start ifile
INSOPTS = -u root -g sys
# <-u symbol> causes undefined symbol to FORCE loading module from a library
XLDFLAGS= -u putchar -e start xifile
BLDFLAGS= -e start bifile
H	= $C/scsiioctl.h $C/mbad.h $C/saio.h $C/scsi.h $C/sdreg.h $C/sec.h \
	  $C/sec_ctl.h $C/sec_diag.h $C/ssm.h $C/ssm_cons.h $C/ssm_misc.h \
	  $C/ssm_scsi.h $C/tsreg.h $C/wd.h $C/tm.h $C/xt.h $C/zdc.h \
	  $C/zdc_ucode.h
LIBC	= libCMDS.a
LIBCO	= zdformat.o CCSformat.o boot.o \
	  bootxx.o copy.o dump.o formatscsi.o prtvtoc.o \
	  zdaddbad.o zdlists.o zdverify.o zdwrdgn.o
MACHDEP	= gets.o putchar.o rtt.o slic_error.o slic_init.o slic_mIntr.o \
	  slic_setGM.o slic_wrAddr.o slic_wrData.o slic_wrslave.o \
	  slic_rdData.o slic_rdslave.o mbadinit.o bcopy.o bzero.o \
	  gsp.o bcmp.o rindex.o strcat.o getchar.o ovbcopy.o \
	  16start.o 
DRIVERS	= sec.o sd.o ssm.o ts.o wd.o tm.o xt.o zd.o
PORTABLE= calloc.o vtoc.o conf.o conf_devsw.o conf_scsi.o conf_xt.o \
	  conf_zd.o sys.o prf.o prompt.o stop.o exit.o clearbss.o atoi.o \
	  atol.o index.o qsort.o strcmp.o strcpy.o strlen.o strncmp.o R0.o \
	  at386_stubs.o
LIBA	= libsa.a
LIBAO	= $(MACHDEP) $(DRIVERS) $(PORTABLE) crt0.o
LIBX	= libsax.a
LIBXO	= sys_x.o mbad_x.o sec_x.o sd_x.o zd_x.o conf_x.o \
	  putchar_x.o conf_zd_x.o ts_x.o vtoc_x.o prf_x.o
LIB	= $(LIBC) $(LIBA) $(LIBX)
CMDS	= copy dump formatscsi CCSformat prtvtoc
BOOT8K_SB8000 = bootsd bootts bootzd
BOOT8K	= $(BOOT8K_SB8000)
CONF8K	= confsd.o confzd.o confts.o

.s.o: 		; $(CPP) $(COPTS) $< |(echo '.file	"$<"'; cat)| $(AS) -o $@

all install 	: objs $(LIB) cmds bootstraps
objs		: $& $(LIBCO) $(LIBXO) $(CONF8K) $(LIBAO)
cmds		: $& zdformat $(CMDS) boot
bootstraps	: $(BOOT8K)
exports		: 
		$(MAKE) CFLAGS="$(EXPFLAGS)" $(LIBA)

$(LIBA)		: $& $(LIBAO)
		  @echo '	Fixing modes, groups, and owner'
		  @-chown root $? > /dev/null 2>&1
		  @-chgrp sys $? > /dev/null 2>&1
		  @chmod 644 $?
		  $(AR) cr $(LIBA) $(LIBAO)
$(LIBC)		: $& $(LIBCO)
		  @echo '	Fixing modes, groups, and owner'
		  @-chown root $? > /dev/null 2>&1
		  @-chgrp sys $? > /dev/null 2>&1
		  @chmod 644 $?
		  $(AR) cr $(LIBC) $(LIBCO)
$(LIBX)		: $& $(LIBXO)
		  @echo '	Fixing modes, groups, and owner'
		  @-chown root $(LIBXO) > /dev/null 2>&1
		  @-chgrp sys $(LIBXO) > /dev/null 2>&1
		  @chmod 644 $(LIBXO)
		  $(AR) cr $(LIBX) $(LIBXO)

16start.o	: 16start.s
crt0.o		: crt0.s assym.h
bcopy.o		: bcopy.s assym.h
ovbcopy.o	: ovbcopy.s assym.h
bzero.o		: bzero.s assym.h
gsp.o		: gsp.s assym.h
bcmp.o		: bcmp.s assym.h
rindex.o	: rindex.s assym.h
strcat.o	: strcat.s assym.h
assym.h		: genassym ; genassym.cross >assym.h
genassym	: genassym.c
		  cc -S $(INCLUDE) genassym.c; as -o genassym.O genassym.s; rm -rf genassym.s
		  $(CC) $(COPTS) -o genassym genassym.c & wait
		  cc -o genassym.cross genassym.O ; rm -f genassym.O
$(CMDS)		: $(LIBA) ifile
		  $(LD) $(LDFLAGS) $@.o $(LIBA) -o $@ && chmod 644 $@
boot		: $(LIBA) bifile
		  $(LD) $(BLDFLAGS) crt0.o $@.o $(LIBA) -o $@ && chmod 644 $@

boot		: boot.o
copy		: copy.o
dump		: dump.o
prtvtoc		: prtvtoc.o
CCSformat	: CCSformat.o
formatscsi	: formatscsi.o

boot.o		: $C/boot.c ; $(CC) $(CFLAGS) -c $C/boot.c
copy.o		: $C/copy.c ; $(CC) $(CFLAGS) -c $C/copy.c
dump.o		: $C/dump.c ; $(CC) $(CFLAGS) -c $C/dump.c
prtvtoc.o	: $C/prtvtoc.c ; $(CC) $(CFLAGS) -c $C/prtvtoc.c
CCSformat.o	: $C/CCSformat.c ; $(CC) $(CFLAGS) -c $C/CCSformat.c
formatscsi.o	: $C/formatscsi.c ; $(CC) $(CFLAGS) -c $C/formatscsi.c

zdformat	: $& zdformat.o zdaddbad.o zdlists.o zdverify.o zdwrdgn.o $(LIBA) ifile
		  $(LD) $(LDFLAGS) -o zdformat \
		  zdformat.o zdaddbad.o zdlists.o zdverify.o zdwrdgn.o $(LIBA)
zdformat.o	: $C/zdformat/zdformat.c ; \
		  $(CC) -Wc,SO $(CFLAGS) $C/zdformat/zdformat.c | \
			  $(AS) -dl -o zdformat.o
zdaddbad.o	: $C/zdformat/zdaddbad.c ; \
		  $(CC) $(CFLAGS) -c $C/zdformat/zdaddbad.c
zdlists.o	: $C/zdformat/zdlists.c ; \
		  $(CC) $(CFLAGS) -c $C/zdformat/zdlists.c
zdverify.o	: $C/zdformat/zdverify.c ; \
		  $(CC) $(CFLAGS) -c $C/zdformat/zdverify.c
zdwrdgn.o	: $C/zdformat/zdwrdgn.c ; \
		  $(CC) $(CFLAGS) -c $C/zdformat/zdwrdgn.c

zdcdbg		: $& zdcdbg.o zdcdbg_u.o $(LIBA)
		  $(LD) $(LDFLAGS) -o zdcdbg \
		  zdcdbg.o zdcdbg_u.o $(LIBA)
zdcdbg.o	: $C/zdcdbg.c ; $(CC) $(CFLAGS) -c $C/zdcdbg.c
zdcdbg_u.o	: $C/zdcdbg_u.c ; $(CC) $(CFLAGS) -c $C/zdcdbg_u.c

zdceeld		: $& zdceeld.o $(LIBA)
		  $(LD) $(LDFLAGS) -o zdceeld zdceeld.o $(LIBA) && \
		  chmod 644 zdceeld
zdceeld.o	: $C/zdceeld.c ; $(CC) $(CFLAGS) -c $C/zdceeld.c

bootsd		: confsd.o
confsd.o	: $C/conf_devsw.c
		  sed -e '/"sd",/p' -e '/"..",/d'< $C/conf_devsw.c >confsd.c ; \
		  $(CC) $(XCFLAGS) confsd.c | $(AS) -dl -o confsd.o
bootzd		: confzd.o
confzd.o	: $C/conf_devsw.c
		  sed -e '/"zd",/p' -e '/"..",/d'< $C/conf_devsw.c >confzd.c; \
		  $(CC) $(XCFLAGS) -c confzd.c | $(AS) -dl -o confzd.o
bootts		: confts.o
confts.o	: $C/conf_devsw.c
		  sed -e '/"ts",/p' -e '/"..",/d'< $C/conf_devsw.c >confts.c ; \
		  $(CC) $(XCFLAGS) confts.c | $(AS) -dl -o confts.o
$(BOOT8K_SB8000): bootxx.o $(LIBX) $(LIBA) striphdr xifile
		  @xx="`expr $@ : 'boot\(.*\)'`" && \
		  $(LD) $(XLDFLAGS) -o $@.symbols crt0.o bootxx.o \
		    conf$${xx}.o $(LIBX) $(LIBA) && \
		  $(SIZE) $@.symbols | tail -1 | sed 's/ +//g' | \
		  awk '{ sz = $$1 + $$2 ; \
		    printf "\t%s: %d bytes (%d%%)\n", \
		    "$@", sz, ((sz * 100) + 8191)/8192; \
		    if (sz < 0 || sz > 8192) exit 1; exit 0; }' && \
		  striphdr.cross $@.symbols $@.stripped
		  dd if=$@.stripped of=tmp bs=8k count=1 2>/dev/null && \
		  rm -f $@ && mv tmp $@'
bootxx.o	: $C/bootxx.c ; $(CC) $(CFLAGS) -c $C/bootxx.c
striphdr	: striphdr.c
		  cc -S $(INCLUDE) striphdr.c; as -o striphdr.O striphdr.s; rm -rf striphdr.s
		  $(CC) $(COPTS) -o striphdr striphdr.c & wait
		  cc -o striphdr.cross striphdr.O ; rm -f striphdr.O

R0.o		: $C/R0.c ; $(CC) $(CFLAGS) -c $C/R0.c
at386_stubs.o	: $C/at386_stubs.c ; $(CC) $(CFLAGS) -c $C/at386_stubs.c
atoi.o		: $C/atoi.c ; $(CC) $(CFLAGS) -c $C/atoi.c
atol.o		: $C/atol.c ; $(CC) $(CFLAGS) -c $C/atol.c
calloc.o	: $C/calloc.c ; $(CC) $(CFLAGS) -c $C/calloc.c
clearbss.o	: $C/clearbss.c ; $(CC) $(CFLAGS) -c $C/clearbss.c
conf.o		: $C/conf.c ; $(CC) $(CFLAGS) -c $C/conf.c
conf_devsw.o	: $C/conf_devsw.c ; $(CC) $(CFLAGS) -c $C/conf_devsw.c
conf_scsi.o	: $C/conf_scsi.c ; $(CC) $(CFLAGS) -c $C/conf_scsi.c
conf_xt.o	: $C/conf_xt.c ; $(CC) $(CFLAGS) -c $C/conf_xt.c
conf_zd.o	: $C/conf_zd.c ; $(CC) $(CFLAGS) -c $C/conf_zd.c
exit.o		: $C/exit.c ; $(CC) $(CFLAGS) -c $C/exit.c
index.o		: $C/index.c ; $(CC) $(CFLAGS) -c $C/index.c
prf.o		: $C/prf.c ; $(CC) $(CFLAGS) -c $C/prf.c
prompt.o	: $C/prompt.c ; $(CC) $(CFLAGS) -c $C/prompt.c
qsort.o		: $C/qsort.c ; $(CC) $(CFLAGS) -c $C/qsort.c
stop.o		: $C/stop.c ; $(CC) $(CFLAGS) -c $C/stop.c
strcmp.o	: $C/strcmp.c ; $(CC) $(CFLAGS) -c $C/strcmp.c
strcpy.o	: $C/strcpy.c ; $(CC) $(CFLAGS) -c $C/strcpy.c
strlen.o	: $C/strlen.c ; $(CC) $(CFLAGS) -c $C/strlen.c
strncmp.o	: $C/strncmp.c ; $(CC) $(CFLAGS) -c $C/strncmp.c
sys.o		: $C/sys.c ; $(CC) $(CFLAGS) -c $C/sys.c
vtoc.o		: $C/vtoc.c ; $(CC) $(CFLAGS) -c $C/vtoc.c

sd.o		: $C/sd.c ; $(CC) $(CFLAGS) -c $C/sd.c
sec.o		: $C/sec.c ; $(CC) $(CFLAGS) -Wc,-i -c $C/sec.c
ssm.o		: $C/ssm.c ; $(CC) $(CFLAGS) -Wc,-i -c $C/ssm.c
ts.o		: $C/ts.c ; $(CC) $(CFLAGS)  -c $C/ts.c
wd.o		: $C/wd.c ; $(CC) $(CFLAGS) -Wc,-i -c $C/wd.c
tm.o		: $C/tm.c ; $(CC) $(CFLAGS) -Wc,-i -c $C/tm.c
xt.o		: $C/xt.c ; $(CC) $(CFLAGS) -Wc,-i -c $C/xt.c
zd.o		: $C/zd.c ; $(CC) $(CFLAGS) -c $C/zd.c

getchar.o	: $C/getchar.c ; $(CC) $(CFLAGS) -c $C/getchar.c
gets.o		: $C/gets.c ; $(CC) $(CFLAGS) -c $C/gets.c
mbadinit.o	: $C/mbadinit.c ; $(CC) $(CFLAGS) -c $C/mbadinit.c
putchar.o	: $C/putchar.c
		  $(CC) $(CFLAGS) -DSB8000 -c $C/putchar.c
rtt.o		: $C/rtt.c ; $(CC) $(CFLAGS) -c $C/rtt.c
slic_error.o	: $C/slic_error.c ; $(CC) $(CFLAGS) -c $C/slic_error.c
slic_init.o	: $C/slic_init.c ; $(CC) $(CFLAGS) -c $C/slic_init.c
slic_mIntr.o	: $C/slic_mIntr.c ; $(CC) $(CFLAGS) -c $C/slic_mIntr.c
slic_rdData.o	: $C/slic_rdData.c ; $(CC) $(CFLAGS) -c $C/slic_rdData.c
slic_rdslave.o	: $C/slic_rdslave.c ; $(CC) $(CFLAGS) -c $C/slic_rdslave.c
slic_setGM.o	: $C/slic_setGM.c ; $(CC) $(CFLAGS) -c $C/slic_setGM.c
slic_wrAddr.o	: $C/slic_wrAddr.c ; $(CC) $(CFLAGS) -c $C/slic_wrAddr.c
slic_wrData.o	: $C/slic_wrData.c ; $(CC) $(CFLAGS) -c $C/slic_wrData.c
slic_wrslave.o	: $C/slic_wrslave.c ; $(CC) $(CFLAGS) -c $C/slic_wrslave.c

conf_x.o	: $C/conf.c ; $(CC) $(XCFLAGS) $C/conf.c | $(AS) -dl -o $@
conf_zd_x.o	: $C/conf_zd.c ; $(CC) $(XCFLAGS) $C/conf_zd.c | $(AS) -dl -o $@
mbad_x.o	: $C/mbadinit.c
		  $(CC) $(XCFLAGS) $C/mbadinit.c | $(AS) -dl -o $@
putchar_x.o	: $C/putchar.c
		  $(CC) $(XCFLAGS) -DSB8000 $C/putchar.c | $(AS) -dl -o $@
prf_x.o		: $C/prf.c ; $(CC) $(XCFLAGS) $C/prf.c | $(AS) -dl -o $@
sd_x.o		: $C/sd.c ; $(CC) $(XCFLAGS) $C/sd.c | $(AS) -dl -o $@
sec_x.o		: $C/sec.c ; $(CC) $(XCFLAGS) -Wc,-i $C/sec.c | $(AS) -dl -o $@
sys_x.o		: $C/sys.c ; $(CC) $(XCFLAGS) $C/sys.c |  $(AS) -dl -o $@
zd_x.o		: $C/zd.c ; $(CC) $(XCFLAGS) $C/zd.c | $(AS) -dl -o $@
ts_x.o		: $C/ts.c ; $(CC) $(XCFLAGS)  $C/ts.c | $(AS) -dl -o $@
vtoc_x.o	: $C/vtoc.c ; $(CC) $(XCFLAGS)  $C/vtoc.c | $(AS) -dl -o $@

clobber		:  clean
clean		:; rm -f zdformat $(CMDS) boot genassym \
		   $(LIBA) $(LIBAO) $(LIBC) $(LIBCO) $(BOOT8K) \
		   $(LIBX) $(LIBXO) \
		   genassym.cross conf??.c conf??.o boot??.c boot??.o assym.h \
		   zdcdbg zdcdbg.o zdcdbg_u.o zdceeld zdceeld.o depend \
		   *.symbols *.stripped striphdr striphdr.cross

install		:; cd $C && (for f in conf_*.c; \
			do install $(INSOPTS) -m 644 -f $(SRCDIR) $$f; done)
		   cd $C && (for i in *.h; \
			do install $(INSOPTS) -m 444 -f $(SRCDIR) $$i; done)
		   install $(INSOPTS) -m 555 -f $(SRCDIR) genassym
		   install $(INSOPTS) -m 555 -f $(SRCDIR) striphdr
		   install $(INSOPTS) -m 444 -f $(SRCDIR) ifile
		   install $(INSOPTS) -m 444 -f $(SRCDIR) bifile
		   install $(INSOPTS) -m 444 -f $(SRCDIR) xifile
		   install $(INSOPTS) -m 444 -f $(ROOT) boot
		   install $(INSOPTS) -m 444 -f $(ROOT)/usr boot
		   (for i in zdformat $(CMDS) $(BOOT8K);\
			   do install $(INSOPTS) -m 444 -f $(BINDIR) $$i; done)
		   (for i in $(LIBC) $(LIBX) $(LIBA); \
		   	do install $(INSOPTS) -m 644 -f $(SRCDIR) $$i; done)
		   (install $(INSOPTS) -m 444 -f $(SRCDIR) Makefile.obj; \
		      mv $(SRCDIR)/Makefile.obj $(SRCDIR)/Makefile)
		   install -m 664 -f $(ROOT)/usr/lib $(LIBA)
depend		:; $(CC) -H $(COPTS) *.c $C/*.c $C/zdformat/*.c 2> depend
#
#
# Macro for vi to generate local header dependencies
#  :r!grep -v tmpos depend | grep -v 'c$' | sed 's;\.\./common;$C;' | sort
#
boot.o: $C/saio.h
bootxx.o: $C/saio.h
conf.o: $C/saio.h
conf_devsw.o: $C/saio.h
conf_scsi.o: $C/ccs.h
conf_scsi.o: $C/saio.h
conf_scsi.o: $C/scsi.h
conf_scsi.o: $C/sdreg.h
conf_xt.o: $C/mbad.h
conf_zd.o: $C/zdc.h
dump.o: $C/saio.h
dump.o: $C/sec.h
exit.o: $C/saio.h
formatscsi.o	: $C/saio.h
formatscsi.o	: $C/scsi.h
formatscsi.o	: $C/sec_diag.h
mbadinit.o: $C/mbad.h
rtt.o: $C/sec.h
sd.o: $C/ccs.h
sd.o: $C/saio.h
sd.o: $C/scsi.h
sd.o: $C/sdreg.h
sd.o: $C/sec.h
sd.o: $C/sec_ctl.h
CCSformat.o: $C/ccs.h
CCSformat.o: $C/saio.h
CCSformat.o: $C/scsi.h
CCSformat.o: $C/CCSformat.h
CCSformat.o: $C/sdreg.h
CCSformat.o: $C/scsiioctl.h
prtvtoc.o: $C/saio.h
sec.o: $C/saio.h
sec.o: $C/scsi.h
sec.o: $C/sec.h
sec.o: $C/sec_ctl.h
slic_error.o: $C/saio.h
slic_mIntr.o: $C/saio.h
slic_rdData.o: $C/saio.h
slic_rdslave.o: $C/saio.h
slic_setGM.o: $C/saio.h
slic_wrAddr.o: $C/saio.h
slic_wrData.o: $C/saio.h
slic_wrslave.o: $C/saio.h
ssm.o: $C/ssm.h
ssm.o: $C/scsi.h
ssm.o: $C/ssm_scsi.h
ssm.o: $C/ssm_cons.h
ssm.o: $C/ssm_misc.h
stop.o: $C/saio.h
sys.o: $C/saio.h
ts.o: $C/saio.h
ts.o: $C/scsi.h
ts.o: $C/sec.h
ts.o: $C/sec_ctl.h
ts.o: $C/tsreg.h
wd.o: $C/saio.h
wd.o: $C/scsi.h
wd.o: $C/ssm.h
wd.o: $C/ccs.h
wd.o: $C/ssm_scsi.h
wd.o: $C/scsiioctl.h
wd.o: $C/wd.h
tm.o: $C/ssm.h
tm.o: $C/saio.h
tm.o: $C/scsi.h
tm.o: $C/ssm_scsi.h
tm.o: $C/tm.h
vtoc.o: $C/saio.h
xt.o: $C/mbad.h
xt.o: $C/saio.h
xt.o: $C/xt.h
zd.o: $C/saio.h
zd.o: $C/zdc.h
zdaddbad.o: $C/zdformat/../saio.h
zdaddbad.o: $C/zdformat/zdformat.h
zdcdbg.o: $C/zdc_ucode.h
zdformat.o: $C/zdformat/../saio.h
zdformat.o: $C/zdformat/../zdc.h
zdformat.o: $C/zdformat/zdformat.h
zdlists.o: $C/zdformat/../saio.h
zdlists.o: $C/zdformat/zdformat.h
zdverify.o: $C/zdformat/../saio.h
zdverify.o: $C/zdformat/zdformat.h
zdwrdgn.o: $C/zdformat/../saio.h
zdwrdgn.o: $C/zdformat/zdformat.h
