Makefile.mvme68k revision 1.1
11.1Schuck#	$NetBSD: Makefile.mvme68k,v 1.1 1995/07/25 23:12:05 chuck Exp $
21.1Schuck
31.1Schuck#	@(#)Makefile.hp300	8.2 (Berkeley) 1/23/94
41.1Schuck#
51.1Schuck# Makefile for NetBSD
61.1Schuck#
71.1Schuck# This makefile is constructed from a machine description:
81.1Schuck#	config machineid
91.1Schuck# Most changes should be made in the machine description
101.1Schuck#	/sys/arch/mvme68k/conf/``machineid''
111.1Schuck# after which you should do
121.1Schuck#	 config.new machineid
131.1Schuck# Machine generic makefile changes should be made in
141.1Schuck#	/sys/arch/mvme68k/conf/Makefile.mvme68k
151.1Schuck# after which config should be rerun for all machines of that type.
161.1Schuck#
171.1Schuck# N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE
181.1Schuck#	IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
191.1Schuck#
201.1Schuck# -DTRACE	compile in kernel tracing hooks
211.1Schuck# -DQUOTA	compile in file system quotas
221.1Schuck
231.1Schuck
241.1Schuck# DEBUG is set to -g by config if debugging is requested (config -g).
251.1Schuck# PROF is set to -pg by config if profiling is requested (config -p).
261.1SchuckAS=     as ${DEBUG}
271.1SchuckCC=     cc ${DEBUG}
281.1SchuckCPP=    cpp
291.1SchuckLD=     ld
301.1SchuckTOUCH=	touch -f -c
311.1SchuckAWK=	awk
321.1Schuck
331.1Schuck# source tree is located via $S relative to the compilation directory
341.1SchuckS=	../../../..
351.1SchuckMVME68K=	../..
361.1Schuck
371.1SchuckINCLUDES= -I. -I$S/arch -I$S -I$S/sys
381.1SchuckCOPTS=	${INCLUDES} ${IDENT} -D_KERNEL -Dmc68020 -Dmvme68k -DFPCOPROC
391.1SchuckCFLAGS=	-O ${COPTS}
401.1Schuck
411.1Schuck### find out what to use for libkern
421.1Schuck.include "$S/lib/libkern/Makefile.inc"
431.1Schuck.ifndef PROF
441.1SchuckLIBKERN=	${KERNLIB}
451.1Schuck.else
461.1SchuckLIBKERN=	${KERNLIB_PROF}
471.1Schuck.endif
481.1Schuck
491.1Schuck### find out what to use for libcompat
501.1Schuck.include "$S/compat/common/Makefile.inc"
511.1Schuck.ifndef PROF
521.1SchuckLIBCOMPAT=    ${COMPATLIB}
531.1Schuck.else
541.1SchuckLIBCOMPAT=    ${COMPATLIB_PROF}
551.1Schuck.endif
561.1Schuck
571.1Schuck### for the Motorola 68040 Floating Point Software Product
581.1Schuck.include "$S/arch/m68k/fpsp/Makefile.inc"
591.1Schuck
601.1Schuck# compile rules: rules are named ${TYPE}_${SUFFIX}${CONFIG_DEP}
611.1Schuck# where TYPE is NORMAL, DRIVER, or PROFILE}; SUFFIX is the file suffix,
621.1Schuck# capitalized (e.g. C for a .c file), and CONFIG_DEP is _C if the file
631.1Schuck# is marked as config-dependent.
641.1Schuck
651.1SchuckNORMAL_C=	${CC} -c ${CFLAGS} ${PROF} $<
661.1SchuckNORMAL_C_C=	${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
671.1Schuck
681.1SchuckDRIVER_C=	${CC} -c ${CFLAGS} ${PROF} $<
691.1SchuckDRIVER_C_C=	${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
701.1Schuck
711.1SchuckPROFILE_C=	${CC} -S -c ${COPTS} $<; \
721.1Schuck		sed -e s/_mcount/mcount/ -e s/subrmcount/subr_mcount/ <$*.s | \
731.1Schuck		${AS} -o $@; \
741.1Schuck		rm -f $*.s
751.1Schuck
761.1SchuckNORMAL_S=	${CPP} ${COPTS} $< | ${AS} -o $@
771.1SchuckNORMAL_S_C=	${CPP} ${COPTS} ${PARAM} $< | ${AS} -o $@
781.1Schuck
791.1Schuck%OBJS
801.1Schuck
811.1Schuck%CFILES
821.1Schuck
831.1Schuck# load lines for config "xxx" will be emitted as:
841.1Schuck# xxx: ${SYSTEM_DEP} swapxxx.o
851.1Schuck#	${SYSTEM_LD_HEAD}
861.1Schuck#	${SYSTEM_LD} swapxxx.o
871.1Schuck#	${SYSTEM_LD_TAIL}
881.1SchuckDEBUG?=
891.1Schuck.if ${DEBUG} == "-g"
901.1SchuckLDX=-X
911.1Schuck.else
921.1SchuckLDX=-x
931.1Schuck.endif
941.1SchuckSYSTEM_OBJ=	locore.o ${FPSP} vnode_if.o ${OBJS} param.o ioconf.o \
951.1Schuck	${LIBKERN} ${LIBCOMPAT}
961.1SchuckSYSTEM_DEP=	Makefile ${SYSTEM_OBJ}
971.1SchuckSYSTEM_LD_HEAD=	@echo loading $@; rm -f $@
981.1SchuckSYSTEM_LD=	@${LD} ${LDX} -Ttext 0x8000 -n -o $@ -e start \
991.1Schuck		    ${SYSTEM_OBJ} vers.o
1001.1SchuckSYSTEM_LD_TAIL=	@echo rearranging symbols; size $@; chmod 755 $@
1011.1Schuck
1021.1Schuck%LOAD
1031.1Schuck
1041.1Schucknewvers: vers.o
1051.1Schuck
1061.1Schuckvers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
1071.1Schuck	sh $S/conf/newvers.sh
1081.1Schuck	${CC} ${CFLAGS} -c vers.c
1091.1Schuck
1101.1Schuckclean::
1111.1Schuck	rm -f eddep *netbsd netbsd.gdb tags vnode_if.[ch] *.o locore.i \
1121.1Schuck	    [a-z]*.s [Ee]rrs linterrs makelinks genassym
1131.1Schuck
1141.1Schucklint: /tmp param.c
1151.1Schuck	@lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} -UKGDB \
1161.1Schuck	    ${MVME68K}/mvme68k/Locore.c ${CFILES} ${MVME68K}/mvme68k/swapgeneric.c \
1171.1Schuck	    ioconf.c param.c | \
1181.1Schuck	    grep -v 'struct/union .* never defined' | \
1191.1Schuck	    grep -v 'possible pointer alignment problem'
1201.1Schuck
1211.1Schucklocore.o: assym.s ${MVME68K}/mvme68k/vectors.s ${MVME68K}/mvme68k/locore.s 
1221.1Schucklocore.o: ${MVME68K}/include/trap.h ${MVME68K}/include/psl.h ${MVME68K}/include/pte.h
1231.1Schucklocore.o: ${MVME68K}/include/cpu.h
1241.1Schuck	${CPP} -DLOCORE ${COPTS} ${MVME68K}/mvme68k/locore.s | ${AS} -o locore.o
1251.1Schuck
1261.1Schuck# depend on maxusers
1271.1Schuckassym.s: Makefile
1281.1Schuck
1291.1Schuckassym.s: genassym
1301.1Schuck	./genassym > assym.s
1311.1Schuck
1321.1Schuckgenassym: ${MVME68K}/mvme68k/genassym.c Makefile
1331.1Schuck	cc ${INCLUDES} ${IDENT} ${PARAM} -Dmc68020 -Dmvme68k -o genassym \
1341.1Schuck	    ${MVME68K}/mvme68k/genassym.c
1351.1Schuck
1361.1Schuckdepend: assym.s param.c vnode_if.h
1371.1Schuck	mkdep ${COPTS} ${CFILES} ioconf.c param.c
1381.1Schuck	mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${MVME68K}/mvme68k/genassym.c
1391.1Schuck
1401.1Schucklinks:
1411.1Schuck	egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
1421.1Schuck	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
1431.1Schuck	echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
1441.1Schuck	  sort -u | comm -23 - dontlink | \
1451.1Schuck	  sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
1461.1Schuck	sh makelinks && rm -f dontlink
1471.1Schuck
1481.1Schucktags:
1491.1Schuck	@echo "see $S/kern/Makefile for tags"
1501.1Schuck
1511.1Schuckioconf.o: ioconf.c
1521.1Schuck	${CC} -c ${CFLAGS} ioconf.c
1531.1Schuck
1541.1Schuckparam.c: $S/conf/param.c
1551.1Schuck	rm -f param.c
1561.1Schuck	cp $S/conf/param.c .
1571.1Schuck
1581.1Schuckparam.o: param.c Makefile
1591.1Schuck	${CC} -c ${CFLAGS} ${PARAM} param.c
1601.1Schuck
1611.1Schuckvnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
1621.1Schuck	AWK="${AWK}" sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
1631.1Schuck
1641.1Schuck%RULES
165