#		Copyright (c) 1986,1987 Motorola Inc.		
#		All Rights Reserved				
#		@(#)Makefile	35.12

RELEASE=R1.1
INCRT=/usr/include
LIBDIR=../cf
CPU=m68k

NAME = sysV68
SYS =

DASHG =
DASHO = -O
DEBUG=
FRC =

KNOWNLIBS = lib.ml lib.os lib.io lib.s5 lib.bpp lib.fpack lib.stub \
	lib.du lib.tcpip lib.nosrc

LIBS = lib.ml lib.os lib.io lib.s5 lib.bpp lib.fpack lib.stub lib.nosrc libme250.a
CFLAGS= $(DASHO) $(DASHG) -I$(INCRT) -DLAI -DINKERNEL -DSTREAMS -DREM $(DEBUG)
XCFLAGS=

NSELIBS = lib.ml lib.os lib.io lib.s5 lib.bpp lib.fpack \
	 lib.du lib.tcpip lib.nosrc lib.stub libme250.a

NSEXCFLAGS= -DDU

MAKEARGS= "MAKE=$(MAKE)" "FRC=$(FRC)" "DASHG=$(DASHG)" "DASHO=$(DASHO)" \
	 "INCRT=$(INCRT)" "LIBDIR=$(LIBDIR)" "SYS=$(SYS)" \
	 "CFLAGS=$(CFLAGS)" "CPU=$(CPU)"

all:
	-@if [ -f Makelock ] ;						\
	then								\
	    echo Make already started by `cat Makelock` ;		\
	    exit 1 ;							\
	fi ;								\
									\
	trap 'rm -f Makelock'  0 1 2 3 15 ;				\
									\
	(echo "$$LOGNAME on \c"; date) >Makelock ;			\
									\
	$(MAKE) kernel ;						\
									\
	rm -f Makelock

kernel:	master dfile libs
	-@if [ "`grep '^du[ 	]' dfile`" != "" ] ;			\
	then								\
		SHLIBS="$(NSELIBS)" ;					\
		SHXCFLAGS="$(NSEXCFLAGS)" ;				\
	else								\
		SHLIBS="$(LIBS)" ;					\
		SHXCFLAGS= ;						\
	fi ;								\
	for i in lib.* ;						\
	do								\
		for j in $(KNOWNLIBS) ;					\
		do							\
			if [ "$$i" = "$$j" ] ;				\
			then						\
				continue 2 ;				\
			fi ;						\
		done ;							\
		SHLIBS="$$SHLIBS $$i" ;					\
	done ;								\
	: search libraries twice to resolve interdependencies ;		\
	SHLIBS="$$SHLIBS $$SHLIBS" ;					\
	: rm -f conf.c conf.o config.h m68kvec.* low.* ;		\
	$(MAKE) $(NAME)$(SYS) $(MAKEARGS) LIBS="$$SHLIBS" XCFLAGS="$$SHXCFLAGS"

$(NAME)$(SYS): $(LIBS) ld.VME131 m68kvec.o low.o conf.o
	-rm -f $(NAME)$(SYS) $(NAME)$(SYS).nm
	$(LD) -o $(NAME)$(SYS) ld.VME131 m68kvec.o low.o conf.o $(LIBS)
	mcs -da "Ferranti System V - $(RELEASE)" $(NAME)$(SYS)
	chmod 755 $(NAME)$(SYS)
	-@if [ -x ../kdb/namelist ] ;					\
	then								\
  	  echo "  ../kdb/namelist -c $(CPU) -L $(NAME)$(SYS) > $(NAME)$(SYS).nm";	\
		../kdb/namelist -c $(CPU) -L $(NAME)$(SYS) > $(NAME)$(SYS).nm ;	\
	fi ;								\
	if [ -f lib.kdb -a -x ../kdb/kdbnm ] ;				\
	then								\
		echo "	../kdb/kdbnm -q $(NAME)$(SYS)" ;		\
		../kdb/kdbnm -q $(NAME)$(SYS) ;				\
	fi ;								\
	if [ -x $(NAME)$(SYS) ] ;					\
	then								\
		echo $(NAME)$(SYS) made. ;				\
	fi

libs:FRC
	-@cd .. ;							\
	for i in * ;							\
	do								\
		if [ $$i != cf -a -d $$i -a -f $$i/$$i.mk ] ;		\
		then							\
			cd $$i ;					\
			echo "	"$(MAKE) -f $$i.mk $(MAKEARGS) ;	\
			$(MAKE) -f $$i.mk $(MAKEARGS) ;			\
			cd .. ;						\
		fi ;							\
	done
			
m68kvec.s low.s config.h conf.c:	master dfile
	sed "/^version[ 	]/s/\".*\"/\"`date +%y%m%d`\"/" master \
	>tmp && mv tmp master
	./config -m master -v m68kvec.s -l low.s dfile

m68kvec.o:	m68kvec.s
	as -o m68kvec.o m68kvec.s

low.o:	low.s
	as -o low.o low.s

conf.o:	conf.c config.h $(INCRT)/sys/conf.h $(INCRT)/sys/param.h\
		$(INCRT)/sys/types.h $(INCRT)/sys/sysmacros.h\
		$(INCRT)/sys/space.h $(INCRT)/sys/tty.h\
		$(INCRT)/sys/buf.h $(INCRT)/sys/file.h\
		$(INCRT)/sys/inode.h $(INCRT)/sys/fs/s5inode.h\
		$(INCRT)/sys/immu.h $(INCRT)/sys/region.h\
		$(INCRT)/sys/proc.h $(INCRT)/sys/getpages.h\
		$(INCRT)/sys/map.h $(INCRT)/sys/smpgmap.h\
		$(INCRT)/sys/callo.h $(INCRT)/sys/mount.h\
		$(INCRT)/sys/elog.h $(INCRT)/sys/err.h\
		$(INCRT)/sys/sysinfo.h $(INCRT)/sys/utsname.h\
		$(INCRT)/sys/var.h $(INCRT)/sys/tuneable.h\
		$(INCRT)/sys/mvmecpu.h\
		$(INCRT)/sys/init.h $(INCRT)/sys/iobuf.h\
		$(INCRT)/sys/bpp.h\
	 	$(INCRT)/sys/space/m320space.h\
	 	$(INCRT)/sys/mvme320.h $(INCRT)/sys/open.h\
	 	$(INCRT)/sys/space/m321space.h\
	 	$(INCRT)/sys/mvme321.h\
	 	$(INCRT)/sys/space/m323space.h\
	 	$(INCRT)/sys/mvme323.h\
	 	$(INCRT)/sys/space/m327space.h\
	 	$(INCRT)/sys/sobpp.h\
	 	$(INCRT)/sys/mvme327.h\
	 	$(INCRT)/sys/space/m147space.h\
	 	$(INCRT)/sys/scsi.h\
	 	$(INCRT)/sys/mvme147s.h\
	 	$(INCRT)/sys/space/m331space.h\
	 	$(INCRT)/sys/mvme331.h\
	 	$(INCRT)/sys/space/m350space.h\
	 	$(INCRT)/sys/space/m360space.h\
	 	$(INCRT)/sys/mvme360.h\
	 	$(INCRT)/sys/space/dbufspace.h\
		$(INCRT)/sys/ipc.h $(INCRT)/sys/msg.h\
		$(INCRT)/sys/sem.h $(INCRT)/sys/shm.h\
		$(INCRT)/sys/flock.h $(INCRT)/sys/gentape.h\
		$(INCRT)/sys/stream.h $(INCRT)/sys/adv.h\
		$(INCRT)/sys/sema.h $(INCRT)/sys/comm.h\
		$(INCRT)/sys/nserve.h $(INCRT)/sys/cirmgr.h\
	 	$(INCRT)/sys/fsid.h $(INCRT)/sys/fstyp.h\
	 	$(INCRT)/sys/linesw.h $(INCRT)/sys/space/ispspace.h\
	 	$(INCRT)/sys/io.h\
	 	$(INCRT)/sys/io/m320io.h $(INCRT)/sys/io/m320io.h\
	 	$(INCRT)/sys/io/m323io.h $(INCRT)/sys/io/m327io.h\
		$(INCRT)/sys/io/m147io.h $(INCRT)/sys/io/m360io.h\
	 	$(INCRT)/sys/io/smd.h $(INCRT)/sys/io/sa800.h\
	 	$(INCRT)/sys/io/sa400.h $(INCRT)/sys/io/ramdio.h
	cc -c $(CFLAGS) $(XCFLAGS) conf.c

clean:
	-@cd .. ;							\
	for i in * ;							\
	do								\
		if [ $$i != cf -a -d $$i -a -f $$i/$$i.mk ] ;		\
		then							\
			cd $$i ;					\
			echo "	"$(MAKE) -f $$i.mk clean $(MAKEARGS) ;	\
			$(MAKE) -f $$i.mk clean $(MAKEARGS) ;		\
			cd .. ;						\
		fi ;							\
	done
	-rm -f m68kvec.s m68kvec.o low.s low.o conf.c config.h conf.o

clobber:	clean
	-@cd .. ;							\
	for i in * ;							\
	do								\
		if [ $$i != cf -a -d $$i -a -f $$i/$$i.mk ] ;		\
		then							\
			cd $$i ;					\
			echo "	"$(MAKE) -f $$i.mk clobber $(MAKEARGS) ;\
			$(MAKE) -f $$i.mk clobber $(MAKEARGS) ;	\
			cd .. ;						\
		fi ;							\
	done
	-rm -f $(NAME)$(SYS) $(NAME)$(SYS).nm

FRC:
