Makefile.pc98 revision 30665
116359Sasami# Makefile for FreeBSD(98) after:
216359Sasami#
316359Sasami# Makefile.i386 -- with config changes.
416359Sasami# Copyright 1990 W. Jolitz
516359Sasami#	from: @(#)Makefile.i386	7.1 5/10/91
630665Skato#	$Id: Makefile.pc98,v 1.21 1997/10/12 12:00:23 kato Exp $
716359Sasami#
816359Sasami# Makefile for FreeBSD
916359Sasami#
1016359Sasami# This makefile is constructed from a machine description:
1116359Sasami#	config machineid
1216359Sasami# Most changes should be made in the machine description
1316359Sasami#	/sys/i386/conf/``machineid''
1416359Sasami# after which you should do
1516359Sasami#	 config machineid
1616359Sasami# Generic makefile changes should be made in
1716359Sasami#	/sys/i386/conf/Makefile.i386
1816359Sasami# after which config should be rerun for all machines.
1916359Sasami#
2016359Sasami
2130665Skato# Which version of config(8) is required.
2230665Skato%VERSREQ=	300002
2330665Skato
2425088SkatoBINFORMAT?=	aout
2525571Skato#BINFORMAT?=	aoutkld
2625088Skato#BINFORMAT?=	elf
2725088Skato
2827690Skato#STD8X16FONT?=	iso
2927690Skato
3016359Sasami.if exists(./@/.)
3116359SasamiS=	./@
3216359Sasami.else
3316359SasamiS=	../..
3416359Sasami.endif
3516359SasamiPC98=	${S}/pc98
3616359SasamiI386=	${S}/i386
3716359Sasami
3816359SasamiCOPTFLAGS?=-O
3918846SasamiINCLUDES= -nostdinc -I- -I. -I$S
4016359Sasami# This hack is to allow kernel compiles to succeed on machines w/out srcdist
4116359Sasami.if exists($S/../include)
4216359SasamiINCLUDES+= -I$S/../include
4316359Sasami.else
4416359SasamiINCLUDES+= -I/usr/include
4516359Sasami.endif
4625256SkatoCOPTS=	${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h
4716359SasamiCFLAGS=	${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
4816359SasamiLOAD_ADDRESS?=	F0100000
4927101SkatoDEFINED_PROF=	${PROF}
5020494Skato.if defined(PROF)
5127101SkatoCFLAGS+=	-malign-functions=4
5220494Skato.if ${PROFLEVEL} >= 2
5320494SkatoIDENT+=	-DGPROF4 -DGUPROF
5420494SkatoPROF+=	-mprofiler-epilogue
5520494Skato.endif
5620494Skato.endif
5716359Sasami
5816359SasamiNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
5916359SasamiNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
6016359Sasami# XXX LOCORE means "don't declare C stuff" not "for locore.s".
6116359SasamiNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
6216359SasamiDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
6316359SasamiDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
6416359SasamiDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
6516359SasamiPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $<
6616359Sasami
6726058Skato# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally
6826058Skato# omitted from SYSTEM_CFILES.  They depend on setdefs.h, a header which
6926058Skato# is generated from all of ${OBJS}.  We don't want to have to compile
7026058Skato# everything just to do a make depend.
7126058SkatoSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c
7224112SkatoSYSTEM_SFILES= ${I386}/i386/locore.s
7316359SasamiSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS}
7416359Sasami.if ${CFLAGS:M-g} == ""
7516359SasamiSYMORDER_EXCLUDE=-x symbols.exclude
7616359Sasami.endif
7725088SkatoSYSTEM_LD_HEAD= @echo loading $@; rm -f $@
7825088Skato.if ${BINFORMAT} == aout
7926058SkatoSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
8025088SkatoSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o
8116359SasamiSYSTEM_LD_TAIL= @echo rearranging symbols; \
8216359Sasami	symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \
8316359Sasami	size $@; chmod 755 $@
8425088Skato.endif
8525571Skato.if ${BINFORMAT} == aoutkld
8626058SkatoSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
8725571SkatoSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o
8825571SkatoSYSTEM_LD_TAIL= @echo rearranging symbols; \
8925571Skato	symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \
9025571Skato	size $@; chmod 755 $@
9125571Skato.endif
9225088Skato.if ${BINFORMAT} == elf
9326058SkatoSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \
9426058Skato	setdef1.o
9526058SkatoSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \
9626058Skato	-o $@ -X ${SYSTEM_OBJS} vers.o
9725088SkatoSYSTEM_LD_TAIL= @size $@; chmod 755 $@
9825088Skato.endif
9916359Sasami
10016359Sasami%BEFORE_DEPEND
10116359Sasami
10216359Sasami%OBJS
10316359Sasami
10416359Sasami%CFILES
10516359Sasami
10616359Sasami%SFILES
10716359Sasami
10816359Sasami%LOAD
10916359Sasami
11016359Sasami%CLEAN
11116359Sasami
11216359Sasamiclean:
11326058Skato	rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \
11426058Skato	      makelinks param.c setdefs.h symbols.exclude symbols.sort tags \
11516359Sasami	      vers.c vnode_if.c vnode_if.h ${CLEAN}
11616359Sasami
11716359Sasami#lint: /tmp param.c
11816359Sasami#	@lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \
11924112Skato#	  ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
12016359Sasami#	    grep -v 'struct/union .* never defined' | \
12116359Sasami#	    grep -v 'possible pointer alignment problem'
12216359Sasami
12316359Sasamisymbols.exclude: Makefile
12416359Sasami	echo "gcc2_compiled." >symbols.exclude
12516359Sasami	echo "___gnu_compiled_c" >>symbols.exclude
12616359Sasami
12716359Sasamisymbols.sort: ${I386}/i386/symbols.raw
12816359Sasami	grep -v '^#' ${I386}/i386/symbols.raw \
12916359Sasami	    | sed 's/^	//' | sort -u > symbols.sort
13016359Sasami
13124112Skatolocore.o: ${I386}/i386/locore.s assym.s
13216359Sasami	${NORMAL_S}
13316359Sasami
13426058Skatosetdef0.o: ${I386}/i386/setdef0.c setdefs.h
13525088Skato	${NORMAL_C}
13625088Skato
13726058Skatosetdef1.o: ${I386}/i386/setdef1.c setdefs.h
13825088Skato	${NORMAL_C}
13925088Skato
14026058Skatosetdefs.h: gensetdefs ${OBJS}
14126058Skato	./gensetdefs ${OBJS} >setdefs.h
14226058Skato
14326058Skatogensetdefs: gensetdefs.o
14426058Skato	${CC} ${CFLAGS} gensetdefs.o -o $@
14526058Skato
14626058Skatogensetdefs.o: ${I386}/i386/gensetdefs.c
14726058Skato	${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c
14826058Skato
14916359Sasami# everything potentially depends on the Makefile since everything potentially
15016359Sasami# depends on the options.  Some things are more dependent on the Makefile for
15116359Sasami# historical reasons.
15216359Sasamimachdep.o: Makefile
15316359Sasami
15416359Sasami# the following is necessary because autoconf.o depends on #if GENERIC
15516359Sasamiautoconf.o: Makefile
15616359Sasami
15716359Sasami# XXX - may no longer be needed
15816359Sasamilocore.o: Makefile
15916359Sasami
16016359Sasami# depends on KDB (cons.o also depends on GENERIC)
16116359Sasamitrap.o cons.o: Makefile
16216359Sasami
16316359Sasami# this rule stops ./assym.s in .depend from causing problems
16416359Sasami./assym.s: assym.s
16516359Sasami
16616359Sasamiassym.s: genassym
16716359Sasami	./genassym >assym.s
16816359Sasami
16916359Sasami# Some of the defines that genassym outputs may well depend on the
17016359Sasami# value of kernel options.
17130330Skatogenassym.o: ${I386}/i386/genassym.c Makefile opt_global.h opt_vm86.h
17216359Sasami	rm -f ./machine ; ln -s ${I386}/include ./machine
17316359Sasami	${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
17416359Sasami
17516359Sasamigenassym: genassym.o
17619551Sasami	${CC} ${CFLAGS} ${PARAM} genassym.o -o $@
17716359Sasami
17825256Skato${OBJS}: opt_global.h
17925256Skato
18016359Sasami# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical.
18116359Sasamidepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND}
18216359Sasami	rm -f .newdep
18316359Sasami	mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES}
18416359Sasami	mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
18525088Skato	MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \
18616359Sasami	mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES}
18716359Sasami	rm -f .depend
18816359Sasami	mv -f .newdep .depend
18916359Sasami
19016359Sasamilinks:
19116359Sasami	egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \
19216359Sasami	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
19316359Sasami	echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
19416359Sasami	  sort -u | comm -23 - dontlink | \
19516359Sasami	  sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
19616359Sasami	sh makelinks && rm -f dontlink
19716359Sasami
19816359Sasamitags:
19916359Sasami	@echo "see $S/kern/Makefile for tags"
20016359Sasami
20116359Sasamiinstall:
20216359Sasami	@if [ ! -f kernel ] ; then \
20316359Sasami		echo "You must first build your kernel before trying to install." ; \
20416359Sasami		exit 1 ; \
20516359Sasami	fi
20616359Sasami	chflags noschg /kernel
20716359Sasami	mv /kernel /kernel.old
20817947Sasami	if [ `/usr/sbin/sysctl -n kern.bootfile` = /kernel ] ; then \
20917947Sasami		/usr/sbin/sysctl -w kern.bootfile=/kernel.old ; \
21016359Sasami		mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \
21116359Sasami	fi
21216359Sasami	install -c -m 555 -o root -g wheel -fschg kernel /
21316359Sasami
21416359Sasamiioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \
21518095Sasami    ${I386}/isa/isa_device.h ${PC98}/pc98/pc98.h ${I386}/isa/icu.h
21616359Sasami	${CC} -c ${CFLAGS} ioconf.c
21716359Sasami
21816359Sasamiparam.c: $S/conf/param.c
21916359Sasami	-rm -f param.c
22016359Sasami	cp $S/conf/param.c .
22116359Sasami
22216359Sasamiparam.o: param.c Makefile
22316359Sasami	${CC} -c ${CFLAGS} ${PARAM} param.c
22416359Sasami
22516359Sasamivers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
22616359Sasami	sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
22716359Sasami	${CC} ${CFLAGS} -c vers.c
22816359Sasami
22916359Sasamivnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
23016359Sasami	sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
23116359Sasamivnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
23216359Sasami	sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
23316359Sasami
23419122Sasami.include <bsd.kern.mk>
23519122Sasami
23616359Sasami%RULES
23716359Sasami
23816359Sasami# DO NOT DELETE THIS LINE -- make depend uses it
239