 # $Header: makemeta.nostrip,v 36.33 89/07/17 11:56:18 kodiak Exp $
VERNUM=		36
VERDIR=		/usr/commodore/amiga/V${VERNUM}
ASM=		asm
ASMTAGS=	${VERDIR}/tools/sh/asmtags
ATOM=		atom
BCPL=		${VERDIR}/tools/bin/bcpl
BUMPREV=	${VERDIR}/tools/sh/bumprev
CKRCS=		${VERDIR}/tools/sh/ckrcs
LDRCS=		${VERDIR}/tools/sh/ldrcs
LINK=		blink
MAKEINCLUDE=	${VERDIR}/tools/bin/makeinclude
MMINSTALL=	${VERDIR}/tools/sh/mminstall
RESETREV=	${VERDIR}/tools/sh/resetrev
REVLABEL=	${VERDIR}/tools/sh/revlabel
CC=		lc
CTAGS=		ctags
CXTAGS=		${VERDIR}/tools/cxtags
MAKE=		make
SRCPATH=	${VERDIR}/src/${SRCDIRPATH}/${SRCDIR}
SYSINCL=	${VERDIR}/include.strip
SYSINCLNS=	${VERDIR}/include
EXTINCL=	${SYSINCL}/${SUBSYSGROUP}
EXTINCLNS=	${SYSINCLNS}/${SUBSYSGROUP}
INTINCL=	${SYSINCL}/internal
INTINCLNS=	${SYSINCLNS}/internal
LIBDIR=		${VERDIR}/lib
DOCDIR=		${VERDIR}/doc
METAFILE=	${VERDIR}/tools/makemeta
AUTOFD=		${LIBDIR}/autofd
DEPENDFILE=	${SUBSYSNAME}${VERNUM}.depend
LFILES=		${MYLIBS} ${VERDIR}/lib/amiga.lib
RCSFILES=	${AFILES} ${CFILES} ${BFILES} \
		${HFILES} ${IFILES} ${GFILES} \
		${MAKEFILE} ${MISCSRC} ${MISCDOC} ${SUBSYSNAME}_lib.fd
AINCL=		-I -I${MYINCL} -I${SYSINCL}
CINCL=		-I -I${MYINCL} -I${SYSINCL}
SYMBOLOPT=	,S
.SUFFIXES:
.SUFFIXES:	.h .i .fd .rev .ld .oCm .ocm .obj .c .b .asm
default:
	@echo "But what do you want to make?"
.INCLUDE=${DEPENDFILE}
.c.obj:
	@echo "${CFLAGS} $<:"
	@${CC} -S -X54 -X104 -X106 ${CFLAGS} ${CINCL} $*.c
	@if test "${CAPP}"; then ( \
	    ${CAPP} < $*.asm > $*.asm.TMP; \
	    mv $*.asm.TMP $*.asm; ); \
	else ( if test "${CAPP2}"; then ( \
	    ${CAPP2} < $*.asm > $*.asm.TMP; \
	    mv $*.asm.TMP $*.asm; ); fi; ); fi
	@${ASM} $*.asm -o $*.obj.TMP -c q,a${SYMBOLOPT} ${CAFLAGS}
	@rm -f $*.asm $@
	@mv $@.TMP $@
.b.obj:
	@echo "${BFLAGS} $<:"
	@${BCPL} $*.b $*.obj.TMP opt '"${BFLAGS}"' obj a \
		inc \"${MYINCL} ${SYSINCL}\"
	@mv $*.obj.TMP $@
.asm.obj:
	@echo "$<:"
	@if test "${APP}"; \
	    then( \
		${APP} < $< > $*.asm.TMP; \
		${ASM} $*.asm.TMP -o $@.TMP -c q,a${SYMBOLOPT} ${AFLAGS} \
	    		-i \"${MYINCL} ${SYSINCL}\"; \
		rm -f $*.asm.TMP; \
	    ); else( \
		${ASM} $*.asm -o $@.TMP -c q,a${SYMBOLOPT} ${AFLAGS} \
	    		-i \"${MYINCL} ${SYSINCL}\"; \
		); \
	    fi
	@rm -f $@
	@mv $@.TMP $@
.obj.oCm:
	@echo "$<:"
	@${ATOM} $*.obj $*.obj.TMP -CCDB
	@mv -f $*.obj.TMP $@
.obj.ocm:
	@echo "$<:"
	@${ATOM} $*.obj $*.obj.TMP -CDB -PC
	@mv -f $*.obj.TMP $@
.rev.i .rev.h:
	@${BUMPREV} ${VERNUM} $* $?
.fd.i:
	@echo "$@:"
	@rm -f $@
	@emacs -l${VERDIR}/tools/gen-lib -egen-lib $* i
clean::	${SUBDIRS} ${SUBMAKES}
	rm -f *.obj *.o[cC]m *.ld *.[cs]rec *TMP[' '0-9] *.lis *.xr0 \
	    *.even *.odd *.CKP *.BAK *.TMP *.TMP? awkvers.* *.with *.depend \
	    *.[csl]map *.cat *.xref core *.lib
	rm -rf TMPD
${SUBSYSNAME}.with with:	${SUBDIRS} ${SUBMAKES} ${MAKEFILE} ${METAFILE}
	@echo "${SUBSYSNAME}.with:"
	-@if test -z "${WITH}"; \
	    then( \
	    cat < /dev/null > TMP1; \
	    for i in ${STARTUP} ${FIRSTO} ${OFILES} TMP1 ; do \
		( echo $$i | sed -n -e "/TMP1/!s/$$/,*/p" >> TMP1 ); done; \
	    for i in ${OCMFILES} TMP1 ; do \
		( echo $$i | sed -n -e "/TMP1/!s/$$/,*/p" >> TMP1 ); done; \
	    sed -e "\$$s/,\*$$//" TMP1 > TMP2; \
	    echo "FROM *" > TMP1; \
	    cat TMP1 TMP2 > ${SUBSYSNAME}.with.new; \
	    cat < /dev/null > TMP1; \
	    for i in ${LFILES} TMP1 ; do \
		( echo $$i | sed -n -e "/TMP1/!s/$$/,*/p" >> TMP1 ); done; \
	    sed -e "\$$s/,\*$$//" TMP1 > TMP2; \
	    echo "LIBRARY *" > TMP1; \
	    cat TMP1 TMP2 >> ${SUBSYSNAME}.with.new; \
	    rm -f TMP1 TMP2; \
	    mv -f ${SUBSYSNAME}.with.new ${SUBSYSNAME}.with; \
	    ); \
	    else( \
	    cat ${WITH} > TMP1; \
	    cat TMP1 > ${SUBSYSNAME}.with; \
	    rm -f TMP1 \
	    ); fi
${DEPENDFILE} depend::	${SUBDIRS} ${SUBMAKES}
	@echo "${DEPENDFILE}"
	@echo "# DO NOT CHANGE THIS FILE" > ${DEPENDFILE}.new
	@rm -f TMP1
	@${MAKEINCLUDE} -a ${AFILES} TMP1 -i . ${MYINCL} ${SYSINCL} | \
	    sed -e "s/\.asm:/.obj:/" > ${DEPENDFILE}.new
	@${MAKEINCLUDE} -c ${CFILES} TMP1 -i . ${MYINCL} ${SYSINCL} | \
	    sed -e "s/\.c:/.obj:/" >> ${DEPENDFILE}.new
	-@if test "${FIRSTO}"; \
	    then ( \
	    echo "DEPENDS= \\" >> ${DEPENDFILE}.new; \
	    grep ${FIRSTO} ${DEPENDFILE}.new > TMP1; \
	    sed -e "s/.*://" TMP1 > TMP2; \
	    sed -e "\$$!s/$$/ \\\\/" TMP2 >> ${DEPENDFILE}.new \
	); fi
	@for i in ${OCMFILES} TMP2 ; do \
	    ( echo "$$i" | sed -n -e \
	    "s/\(.*\)\.\(o[cC]m\)$$/\1.\2:	\1.obj/p" \
	    >> ${DEPENDFILE}.new ); done;
	@echo "# DO NOT ADD DEPENDANCIES HERE!" >> ${DEPENDFILE}.new
	@echo "# THEY WILL BE REMOVED." >> ${DEPENDFILE}.new
	@rm -f TMP1 TMP2
	@mv -f ${DEPENDFILE}.new ${DEPENDFILE}
headers::	${SUBDIRS} ${SUBMAKES}
	@sh -c 'test -w ${VERDIR}/tools/touchable || \
	    { echo "${VERDIR} not writable ; exit 1; }"
	${MMINSTALL} -s ${EXTINCL} ${EXTINCLNS} ${EXTERNHFILES} ${EXTERNIFILES}
	${MMINSTALL} -s ${INTINCL} ${INTINCLNS} ${INTERNHFILES} ${INTERNIFILES}
	${MMINSTALL} ${AUTOFD} ${SUBSYSNAME}_lib.fd
internal::	${SUBDIRS} ${SUBMAKES}
	@echo "make internal:"
	@sh -c 'test -w ${VERDIR}/tools/touchable || \
	    { echo "${VERDIR} not writable ; exit 1; }"
	@sh -c 'test "${SRCDIR}" || { echo "no SRCDIR macro defined ; exit 1; }"
	@echo "    making sure everything is checked in..."
	@${CKRCS} ${VERNUM} ${SRCPATH} ${RCSFILES}
	-@if test ! "${LIBNAME}"; then ( \
	    echo "    labelling rcs files..."; \
	    if test -r ${SUBSYSNAME}_rev.rev; then \
		${REVLABEL} ${SRCPATH} V${VERNUM}_`cat ${SUBSYSNAME}_rev.rev` \
		    ${RCSFILES}; \
	    fi \
	); fi
	-@if test ! "${LIBNAME}"; then ( \
	    echo "    copying sources over to server..."; \
	    ${MMINSTALL} ${SRCPATH} ${RCSFILES} ${SUBSYSNAME}.ld \
		${SUBSYSNAME}_rev.h ${SUBSYSNAME}_rev.i ${SUBSYSNAME}_rev.rev; \
	    echo "    copying includes over to server..."; \
	    ${MMINSTALL} -s ${EXTINCL} ${EXTINCLNS} ${EXTERNHFILES} \
		${EXTERNIFILES}; \
	    ${MMINSTALL} -s ${INTINCL} ${INTINCLNS} ${INTERNHFILES} \
		${INTERNIFILES}; \
	    echo "    copying doc and fd files over to server..."; \
	    ${MMINSTALL} ${DOCDIR} ${SUBSYSNAME}.doc ${MISCDOC}; \
	    ${MMINSTALL} ${AUTOFD} ${SUBSYSNAME}_lib.fd \
	); fi
	-@if test "${LIBNAME}"; then ( \
	    echo "make internal -- lib/${LIBNAME}/${SRCDIRPATH}/${SRCDIR}" \
	    mkdir ${LIBDIR}/${LIBNAME}/${SRCDIRPATH}/${SRCDIR}; \
	    ${MMINSTALL} \
		${LIBDIR}/${LIBNAME}/${SRCDIRPATH}/${SRCDIR} \
		${RCSFILES} ${SUBSYSNAME}_lib.lib; \
	); fi
print::	${SUBDIRS} ${SUBMAKES}
	    -@for i in ${HFILES} ${IFILES} ${CFILES} ${BFILES} ${GFILES} ; do \
		(echo "imprint ${PFLAGS} -2 -O -L -J $$i"; \
		imprint ${PFLAGS} -2 -O -L -J $$i); done
	    -@imprintlis ${PFLAGS} -2 -O -L -J ${AFILES}
	    -@if test -r ${SUBSYSNAME}.doc; then \
		(echo "imprint ${PFLAGS} -2 -O -L ${SUBSYSNAME}.doc"; \

		imprint ${PFLAGS} -2 -O -L ${SUBSYSNAME}.doc); fi
${SUBSYSNAME}_rev.i ${SUBSYSNAME}_rev.h: ${SUBSYSNAME}_rev.rev \
	    ${OFILES} ${OCMFILES} ${DEPENDS}
${SUBSYSNAME}_rev.rev:
	echo "0" > ${SUBSYSNAME}_rev.rev
${SUBSYSNAME}.ld ${SUBSYSNAME}.lmap: ${OFILES} ${OCMFILES} ${FIRSTO} \
	    ${LFILES} ${SUBSYSNAME}.with
	@`echo ${LFLAGS} | sed -n -e "s/.*XREF=\([^ 	]*\).*/rm -f \1/p"`
	@`echo ${LFLAGS} | sed -n -e "s/.*MAP=\([^ 	]*\).*/rm -f \1/p"`
	${LINK} with=${SUBSYSNAME}.with ${LFLAGS} to=${SUBSYSNAME}.ld.TMP
	@mv ${SUBSYSNAME}.ld.TMP ${SUBSYSNAME}.ld
	@chmod a+wx ${SUBSYSNAME}.ld
	@`echo ${LFLAGS} | sed -n -e "s/.*XREF=\([^ 	]*\).*/chmod a+w \1/p"`
	@`echo ${LFLAGS} | sed -n -e "s/.*MAP=\([^ 	]*\).*/chmod a+w \1/p"`
${SUBSYSNAME}_lib.lib:	${OFILES} ${OCMFILES} ${FIRSTO}
	rm -f ${SUBSYSNAME}_lib.lib
	cat ${FIRSTO} ${OFILES} ${OCMFILES} > ${SUBSYSNAME}_lib.lib
${SUBSYSNAME}.lib:	${OFILES} ${OCMFILES} ${FIRSTO}
	rm -f ${SUBSYSNAME}.lib
	cat ${FIRSTO} ${OFILES} ${OCMFILES} > ${SUBSYSNAME}.lib
${SUBSYSNAME}.doc:	${SUBSYSNAME}.cat
	@echo ${SUBSYSNAME}.doc
	@rm -f ${SUBSYSNAME}.doc
	autodoc ${SUBSYSNAME}.cat > ${SUBSYSNAME}.doc
	rm -f ${SUBSYSNAME}.cat
${SUBSYSNAME}.cat:	${SUBMAKES} FRC
	@echo "${SUBSYSNAME}.cat"
	@rm -f ${SUBSYSNAME}.cat
	@mkdir TMPD
	@for i in ${SUBDIRS} TMPD ; do \
	    ( ( cd $$i; cat /dev/null `ls *.cat`; rm -f *.cat ) \
	    >> ${SUBSYSNAME}.cat ); done
	@cat ${AFILES} ${CFILES} >> ${SUBSYSNAME}.cat
	@rmdir TMPD
cat:	${SUBDIRS} ${SUBMAKES} ${SUBSYSNAME}.cat
hard:	${SUBDIRS} ${SUBMAKES}
	-@if test "${SUBDIRS}" ; \
	then (\
	    for i in ${SUBDIRS} ; do \
		( cd $$i; make hard ); done; \
	); fi
	@imprint -2 -L -Plab Makefile ${IFILES} ${AFILES} ${HFILES} ${CFILES} \
	    ${GFILES} ${BFILES}
tags:	${SUBDIRS} ${SUBMAKES} ${AFILES} ${CFILES} ${HFILES}
	@rm -f tags
	-@if test "${SUBSYSNAME}"; then ( \
	    ${CTAGS} -t -w -a ${CFILES} ${HFILES} >/dev/null; \
	    ${CXTAGS} ${HFILES} 2>/dev/null | sed "s/ /	/" >>tags; \
	    ${ASMTAGS} ${AFILES} >>tags; \
	    mv tags ${SUBSYSNAME}.tags \
	); fi
	@for i in ${SUBDIRS} TMPD ; do ( \
	    if test "$$i" != "TMPD"; then ( \
		sed "s/	/	$$i\//" $$i/tags >$$i.tags; \
		rm -f $$i/*.tags \
	    ); fi \
	); done
	@cat *.tags | sort +0 -1 -u >tags
co:
	@${LDRCS} co ${SRCPATH}
ci:
	@${LDRCS} ci ${SRCPATH}
uco:
	@${LDRCS} uco ${SRCPATH}
coall::	${SUBDIRS} ${SUBMAKES}
	@for i in ${RCSFILES} ; do \
	    ( export cofile; cofile=${SRCPATH}/RCS/$$i,v ; \
		if test -r $$cofile; then co $$cofile; fi ); done;
resetrev:: ${SUBDIRS} ${SUBMAKES}
	@${RESETREV} ${SRCPATH} ${VERNUM} ${SUBSYSNAME}_rev.rev \
		"${SUBDIRS}" ${MAKEFILE}
checklocks:	${SUBDIRS} ${SUBMAKES}
	@checklocks ${AFILES} ${CFILES} ${BFILES} ${IFILES} ${HFILES} \
	    ${GFILES} ${MAKEFILE} ${MISCSRC} /dev/null
TMPD ${SUBMAKES}: FRC
	${MAKE} -f $@ ${MFLAGS} ${MARGS}
TMPD ${SUBDIRS}: FRC
	cd $@; ${MAKE} ${MFLAGS} ${MARGS}
rom:	${SUBSYSNAME}.ld
doc:	${SUBSYSNAME}.doc
FRC: 
