Makefile.hpcarm revision 1.1
11.1Sichiro#	$NetBSD: Makefile.hpcarm,v 1.1 2001/02/23 03:48:08 ichiro Exp $
21.1Sichiro
31.1Sichiro# Makefile for NetBSD
41.1Sichiro#
51.1Sichiro# This makefile is constructed from a machine description:
61.1Sichiro#	config machineid
71.1Sichiro# Most changes should be made in the machine description
81.1Sichiro#	/sys/arch/hpcarm/conf/``machineid''
91.1Sichiro# after which you should do
101.1Sichiro#	config machineid
111.1Sichiro# Machine generic makefile changes should be made in
121.1Sichiro#	/sys/arch/hpcarm/conf/Makefile.hpcarm
131.1Sichiro# after which config should be rerun for all machines of that type.
141.1Sichiro
151.1Sichiro# DEBUG is set to -g if debugging.
161.1Sichiro# PROF is set to -pg if profiling.
171.1Sichiro
181.1SichiroAR?=	ar
191.1SichiroAS?=	as
201.1SichiroCC?=	cc
211.1SichiroCPP?=	cpp
221.1SichiroLD?=	ld
231.1SichiroLORDER?=lorder
241.1SichiroMKDEP?=	mkdep
251.1SichiroNM?=	nm
261.1SichiroRANLIB?=ranlib
271.1SichiroSIZE?=	size
281.1SichiroSTRIP?=	strip
291.1SichiroTSORT?=	tsort -q
301.1Sichiro
311.1SichiroCOPTS?=	-O2
321.1Sichiro
331.1Sichiro# source tree is located via $S relative to the compilation directory
341.1Sichiro.ifndef S
351.1SichiroS!=	cd ../../../..; pwd
361.1Sichiro.endif
371.1SichiroHPCARM=	$S/arch/hpcarm
381.1Sichiro
391.1SichiroHAVE_EGCS!=	${CC} --version | egrep "^(2\.[89]|egcs)" ; echo 
401.1SichiroINCLUDES=	-I. -I$S/arch -I$S -nostdinc
411.1SichiroCPPFLAGS=	${INCLUDES} ${IDENT} ${PARAM} -D_KERNEL -Dhpcarm -Darm32
421.1SichiroCWARNFLAGS?=	-Werror -Wall -Wcomment -Wpointer-arith
431.1Sichiro# XXX Delete -Wuninitialized for now, since the compiler doesn't
441.1Sichiro# XXX always get it right.  --thorpej 
451.1SichiroCWARNFLAGS+=	-Wno-uninitialized
461.1Sichiro.if (${HAVE_EGCS} != "")
471.1SichiroCWARNFLAGS+=	-Wno-main
481.1Sichiro.endif
491.1SichiroCFLAGS=		${DEBUG} ${COPTS} ${CWARNFLAGS}
501.1SichiroAFLAGS=		-x assembler-with-cpp -D_LOCORE
511.1SichiroLINKFLAGS=	-Ttext C0100000 -e start
521.1SichiroSTRIPFLAGS=	-g
531.1Sichiro
541.1Sichiro%INCLUDES
551.1Sichiro
561.1SichiroHOSTED_CC=	${CC}
571.1SichiroHOSTED_CPPFLAGS=${CPPFLAGS:S/^-nostdinc$//}
581.1SichiroHOSTED_CFLAGS=	${CFLAGS}
591.1Sichiro
601.1Sichiro### find out what to use for libkern
611.1SichiroKERN_AS=	obj
621.1Sichiro.include "$S/lib/libkern/Makefile.inc"
631.1Sichiro.ifndef PROF
641.1SichiroLIBKERN=	${KERNLIB}
651.1Sichiro.else
661.1SichiroLIBKERN=	${KERNLIB_PROF}
671.1Sichiro.endif
681.1Sichiro
691.1Sichiro### find out what to use for libcompat
701.1Sichiro.include "$S/compat/common/Makefile.inc"
711.1Sichiro.ifndef PROF
721.1SichiroLIBCOMPAT=	${COMPATLIB}
731.1Sichiro.else
741.1SichiroLIBCOMPAT=	${COMPATLIB_PROF}
751.1Sichiro.endif
761.1Sichiro
771.1Sichiro# compile rules: rules are named ${TYPE}_${SUFFIX} where TYPE is NORMAL or
781.1Sichiro# HOSTED}, and SUFFIX is the file suffix, capitalized (e.g. C for a .c file).
791.1Sichiro
801.1SichiroNORMAL_C=	${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $<
811.1SichiroNOPROF_C=	${CC} ${CFLAGS} ${CPPFLAGS} -c $<
821.1SichiroNORMAL_S=	${CC} ${AFLAGS} ${CPPFLAGS} -c $<
831.1Sichiro
841.1SichiroHOSTED_C=	${HOSTED_CC} ${HOSTED_CFLAGS} ${HOSTED_CPPFLAGS} -c $<
851.1Sichiro
861.1Sichiro%OBJS
871.1Sichiro
881.1Sichiro%CFILES
891.1Sichiro
901.1Sichiro%SFILES
911.1Sichiro
921.1Sichiro# load lines for config "xxx" will be emitted as:
931.1Sichiro# xxx: ${SYSTEM_DEP} swapxxx.o
941.1Sichiro#	${SYSTEM_LD_HEAD}
951.1Sichiro#	${SYSTEM_LD} swapxxx.o
961.1Sichiro#	${SYSTEM_LD_TAIL}
971.1SichiroSYSTEM_OBJ=	locore.o \
981.1Sichiro		param.o ioconf.o ${OBJS} ${LIBCOMPAT} ${LIBKERN}
991.1SichiroSYSTEM_DEP=	Makefile ${SYSTEM_OBJ}
1001.1SichiroSYSTEM_LD_HEAD=	rm -f $@
1011.1SichiroSYSTEM_LD=	@echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' vers.o; \
1021.1Sichiro		${LD} ${LINKFLAGS} -o $@ ${SYSTEM_OBJ} vers.o
1031.1SichiroSYSTEM_LD_TAIL=	@${SIZE} $@; chmod 755 $@
1041.1Sichiro
1051.1SichiroDEBUG?=
1061.1Sichiro.if ${DEBUG} == "-g"
1071.1SichiroLINKFLAGS+=	-X
1081.1SichiroSYSTEM_LD_TAIL+=; \
1091.1Sichiro		echo mv -f $@ $@.gdb; mv -f $@ $@.gdb; \
1101.1Sichiro		echo ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb; \
1111.1Sichiro		${STRIP} ${STRIPFLAGS} -o $@ $@.gdb
1121.1Sichiro.else
1131.1Sichiro#LINKFLAGS+=	-S
1141.1SichiroLINKFLAGS+=	-x
1151.1Sichiro.endif
1161.1Sichiro
1171.1Sichiro%LOAD
1181.1Sichiro
1191.1Sichiroassym.h: $S/kern/genassym.sh ${HPCARM}/hpcarm/genassym.cf
1201.1Sichiro	sh $S/kern/genassym.sh ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} \
1211.1Sichiro	    < ${HPCARM}/hpcarm/genassym.cf > assym.h.tmp && \
1221.1Sichiro	mv -f assym.h.tmp assym.h
1231.1Sichiro
1241.1Sichiroparam.c: $S/conf/param.c
1251.1Sichiro	rm -f param.c
1261.1Sichiro	cp $S/conf/param.c .
1271.1Sichiro
1281.1Sichiroparam.o: param.c Makefile
1291.1Sichiro	${NORMAL_C}
1301.1Sichiro
1311.1Sichiroioconf.o: ioconf.c
1321.1Sichiro	${NORMAL_C}
1331.1Sichiro
1341.1Sichironewvers: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
1351.1Sichiro	sh $S/conf/newvers.sh
1361.1Sichiro	${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c
1371.1Sichiro
1381.1Sichiro__CLEANKERNEL: .USE
1391.1Sichiro	@echo "${.TARGET}ing the kernel objects"
1401.1Sichiro	rm -f eddep *netbsd netbsd.gdb tags *.[io] [a-z]*.s \
1411.1Sichiro	    [Ee]rrs linterrs makelinks assym.h.tmp assym.h modedefs.c
1421.1Sichiro
1431.1Sichiro__CLEANDEPEND: .USE
1441.1Sichiro	rm -f .depend
1451.1Sichiro
1461.1Sichiroclean: __CLEANKERNEL
1471.1Sichiro
1481.1Sichirocleandir distclean: __CLEANKERNEL __CLEANDEPEND
1491.1Sichiro
1501.1Sichirolint:
1511.1Sichiro	@lint -hbxncez -Dvolatile= ${CPPFLAGS} -UKGDB \
1521.1Sichiro	    ${HPCARM}/hpcarm/Locore.c ${CFILES}  \
1531.1Sichiro	    ioconf.c param.c | \
1541.1Sichiro	    grep -v 'static function .* unused'
1551.1Sichiro
1561.1Sichirotags:
1571.1Sichiro	@echo "see $S/kern/Makefile for tags"
1581.1Sichiro
1591.1Sichirolinks:
1601.1Sichiro	egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
1611.1Sichiro	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
1621.1Sichiro	echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
1631.1Sichiro	  sort -u | comm -23 - dontlink | \
1641.1Sichiro	  sed 's,../.*/\(.*.o\),rm -f \1; ln -s ../GENERIC/\1 \1,' > makelinks
1651.1Sichiro	sh makelinks && rm -f dontlink
1661.1Sichiro
1671.1SichiroSRCS=	${HPCARM}/hpcarm/locore.S param.c ioconf.c ${CFILES} ${SFILES}
1681.1Sichirodepend: .depend
1691.1Sichiro.depend: ${SRCS} assym.h param.c
1701.1Sichiro	${MKDEP} ${AFLAGS} ${CPPFLAGS} ${HPCARM}/hpcarm/locore.S
1711.1Sichiro	${MKDEP} -a ${CFLAGS} ${CPPFLAGS} param.c ioconf.c ${CFILES}
1721.1Sichiro	test -z "${SFILES}" || ${MKDEP} -a ${AFLAGS} ${CPPFLAGS} ${SFILES}
1731.1Sichiro	sh $S/kern/genassym.sh ${MKDEP} -f assym.dep ${CFLAGS} \
1741.1Sichiro	    ${CPPFLAGS} < ${HPCARM}/hpcarm/genassym.cf
1751.1Sichiro	@sed -e 's/.*\.o:.*\.c/assym.h:/' < assym.dep >> .depend
1761.1Sichiro	@rm -f assym.dep
1771.1Sichiro
1781.1Sichirodependall: depend all
1791.1Sichiro
1801.1Sichiro
1811.1Sichiro# depend on root or device configuration
1821.1Sichiroautoconf.o conf.o: Makefile
1831.1Sichiro 
1841.1Sichiro# depend on network
1851.1Sichirouipc_proto.o: Makefile 
1861.1Sichiro
1871.1Sichiro# depend on maxusers
1881.1Sichiroassym.h: Makefile
1891.1Sichiro
1901.1Sichiro# depend on CPU configuration 
1911.1Sichirocpufunc.o cpufunc_asm.o: Makefile
1921.1Sichiro
1931.1Sichiro# depend on DIAGNOSTIC etc.
1941.1Sichirocpuswitch.o fault.o machdep.o: Makefile
1951.1Sichiro
1961.1Sichiro
1971.1Sichirolocore.o: ${HPCARM}/hpcarm/locore.S assym.h
1981.1Sichiro	${NORMAL_S}
1991.1Sichiro
2001.1Sichiro# The install target can be redefined by putting a
2011.1Sichiro# install-kernel-${MACHINE_NAME} target into /etc/mk.conf
2021.1SichiroMACHINE_NAME!=  uname -n
2031.1Sichiroinstall: install-kernel-${MACHINE_NAME}
2041.1Sichiro.if !target(install-kernel-${MACHINE_NAME}})
2051.1Sichiroinstall-kernel-${MACHINE_NAME}:
2061.1Sichiro	rm -f /onetbsd
2071.1Sichiro	ln /netbsd /onetbsd
2081.1Sichiro	cp netbsd /nnetbsd
2091.1Sichiro	mv /nnetbsd /netbsd
2101.1Sichiro.endif
2111.1Sichiro
2121.1Sichiro%RULES
213