Makefile.pc98 revision 48319
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 648319Skato# $Id: Makefile.pc98,v 1.64 1999/05/10 09:00:29 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. 2246864Skato%VERSREQ= 400016 2330665Skato 2446864Skato# Can be overridden by makeoptions or /etc/make.conf 2546864SkatoKERNEL?= kernel 2642397SkatoKERNFORMAT?= elf 2727690Skato#STD8X16FONT?= iso 2827690Skato 2916359Sasami.if exists(./@/.) 3016359SasamiS= ./@ 3116359Sasami.else 3216359SasamiS= ../.. 3316359Sasami.endif 3416359SasamiPC98= ${S}/pc98 3516359SasamiI386= ${S}/i386 3616359Sasami 3716359SasamiCOPTFLAGS?=-O 3818846SasamiINCLUDES= -nostdinc -I- -I. -I$S 3916359Sasami# This hack is to allow kernel compiles to succeed on machines w/out srcdist 4016359Sasami.if exists($S/../include) 4116359SasamiINCLUDES+= -I$S/../include 4216359Sasami.else 4316359SasamiINCLUDES+= -I/usr/include 4416359Sasami.endif 4545856SkatoCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 4616359SasamiCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 4738727Skato 4839567Skato# XXX LOCORE means "don't declare C stuff" not "for locore.s". 4939567SkatoASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 5039567Skato 5139567Skato# Use the default object format for genassym, etc. 5248319SkatoGEN_CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} -UKERNEL 5339204Skato 5438727Skato# Select the correct set of tools. Can't set OBJFORMAT here because it 5539567Skato# doesn't get exported into the environment, and if it were exported 5639567Skato# then it might break building of genassym, etc. 5738727Skato.if ${KERNFORMAT} == "elf" 5838727SkatoCFLAGS+= -elf 5938727Skato.else 6038727SkatoCFLAGS+= -aout 6138727Skato.endif 6238727Skato 6344721SkatoLOAD_ADDRESS?= C0100000 6427101SkatoDEFINED_PROF= ${PROF} 6520494Skato.if defined(PROF) 6627101SkatoCFLAGS+= -malign-functions=4 6720494Skato.if ${PROFLEVEL} >= 2 6820494SkatoIDENT+= -DGPROF4 -DGUPROF 6920494SkatoPROF+= -mprofiler-epilogue 7020494Skato.endif 7120494Skato.endif 7216359Sasami 7316359SasamiNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 7437582SkatoNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 7539567SkatoNORMAL_S= ${CC} -c ${ASM_CFLAGS} $< 7616359SasamiDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 7737582SkatoDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 7839567SkatoDRIVER_S= ${CC} -c -x ${ASM_CFLAGS} $< 7937582SkatoPROFILE_C= ${CC} -c ${CFLAGS} $< 8016359Sasami 8142797SkatoGEN_CFILES= ${I386}/i386/genassym.c 8242797Skato# setdef0.c and setdef1.c are intentionally 8339567Skato# omitted from SYSTEM_CFILES. They include setdefs.h, a header which 8426058Skato# is generated from all of ${OBJS}. We don't want to have to compile 8526058Skato# everything just to do a make depend. 8626058SkatoSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 8724112SkatoSYSTEM_SFILES= ${I386}/i386/locore.s 8816359SasamiSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 8916359Sasami.if ${CFLAGS:M-g} == "" 9016359SasamiSYMORDER_EXCLUDE=-x symbols.exclude 9116359Sasami.endif 9245783Skato 9340954Skato.if ${KERNFORMAT} == aout || ${KERNFORMAT} == aoutkld 9426058SkatoSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 9538727SkatoSYSTEM_LD= @${LD} -aout -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 9625571SkatoSYSTEM_LD_TAIL= @echo rearranging symbols; \ 9735514Simp symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 9838727Skato size -aout ${.TARGET} ; chmod 755 ${.TARGET} 9925571Skato.endif 10045783Skato 10138727Skato.if ${KERNFORMAT} == elf 10242057SkatoSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 10342450Sjdp setdef1.o hack.So 10439972SkatoSYSTEM_LD= @${LD} -elf -Bdynamic -T $S/i386/conf/kernel.script \ 10539972Skato -export-dynamic -dynamic-linker /red/herring \ 10635514Simp -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 10738727SkatoSYSTEM_LD_TAIL= @size -elf ${.TARGET} ; chmod 755 ${.TARGET} 10839972SkatoSYSTEM_DEP+= $S/i386/conf/kernel.script 10925088Skato.endif 11016359Sasami 11116359Sasami%BEFORE_DEPEND 11216359Sasami 11316359Sasami%OBJS 11416359Sasami 11516359Sasami%CFILES 11616359Sasami 11716359Sasami%SFILES 11816359Sasami 11938833Skato%MFILES 12038833Skato 12116359Sasami%CLEAN 12216359Sasami 12346864Skatoall: ${KERNEL} 12446864Skato 12546864Skato.if !defined(DEBUG) 12646864SkatoFULLKERNEL= ${KERNEL} 12746864Skato.else 12846864SkatoFULLKERNEL= ${KERNEL}.debug 12946864Skato${KERNEL}: ${FULLKERNEL} 13046864Skato.if ${KERNFORMAT} == "elf" 13146864Skato objcopy --strip-debug ${FULLKERNEL} ${KERNEL} 13246864Skato.else 13346864Skato cp ${FULLKERNEL} ${KERNEL} 13446864Skato strip -d ${KERNEL} 13546864Skato.endif 13646864Skato.endif 13746864Skato 13848319Skato${FULLKERNEL}: ${BEFORE_DEPEND} ${SYSTEM_DEP} vers.o 13946864Skato @rm -f ${.TARGET} 14046864Skato @echo linking ${.TARGET} 14146864Skato ${SYSTEM_LD} 14246864Skato ${SYSTEM_LD_TAIL} 14346864Skato 14441597Skato.if !exists(.depend) 14544424Skato${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h} 14641597Skato.endif 14741597Skato 14816359Sasamiclean: 14942450Sjdp rm -f *.o *.so *.So *.ko *.s eddep errs genassym gensetdefs \ 15045424Sgrog ${KERNEL} ${FULLKERNEL} linterrs makelinks param.c \ 15145424Sgrog setdef[01].c setdefs.h symbols.exclude symbols.sort tags \ 15237582Skato vers.c vnode_if.c vnode_if.h ${CLEAN} 15316359Sasami 15416359Sasami#lint: /tmp param.c 15537582Skato# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \ 15624112Skato# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 15716359Sasami# grep -v 'struct/union .* never defined' | \ 15816359Sasami# grep -v 'possible pointer alignment problem' 15916359Sasami 16037582Skatosymbols.exclude: 16116359Sasami echo "gcc2_compiled." >symbols.exclude 16216359Sasami echo "___gnu_compiled_c" >>symbols.exclude 16316359Sasami 16416359Sasamisymbols.sort: ${I386}/i386/symbols.raw 16516359Sasami grep -v '^#' ${I386}/i386/symbols.raw \ 16616359Sasami | sed 's/^ //' | sort -u > symbols.sort 16716359Sasami 16824112Skatolocore.o: ${I386}/i386/locore.s assym.s 16916359Sasami ${NORMAL_S} 17016359Sasami 17139972Skato.if ${KERNFORMAT} == elf 17239972Skato# This is a hack. BFD "optimizes" away dynamic mode if there are no 17339972Skato# dynamic references. We could probably do a '-Bforcedynamic' mode like 17439972Skato# in the a.out ld. For now, this works. 17542450Sjdphack.So: Makefile 17639972Skato touch hack.c 17742450Sjdp ${CC} -elf -shared -nostdlib hack.c -o hack.So 17839972Skato rm -f hack.c 17939972Skato.endif 18039972Skato 18143192Skato.ORDER: setdefs.h setdef0.c setdef1.c 18243192Skato 18342797Skatosetdef0.o: setdef0.c setdefs.h 18425088Skato ${NORMAL_C} 18525088Skato 18642797Skatosetdef1.o: setdef1.c setdefs.h 18725088Skato ${NORMAL_C} 18825088Skato 18942797Skatosetdef0.c setdef1.c setdefs.h: ${OBJS} 19042892Skato @gensetdefs ${OBJS} 19126058Skato 19216359Sasami# this rule stops ./assym.s in .depend from causing problems 19316359Sasami./assym.s: assym.s 19416359Sasami 19516359Sasamiassym.s: genassym 19616359Sasami ./genassym >assym.s 19716359Sasami 19837582Skatogenassym.o: ${I386}/i386/genassym.c 19916359Sasami rm -f ./machine ; ln -s ${I386}/include ./machine 20039567Skato ${CC} -c ${GEN_CFLAGS} ${I386}/i386/genassym.c 20116359Sasami 20216359Sasamigenassym: genassym.o 20339204Skato ${CC} ${GEN_CFLAGS} genassym.o -o ${.TARGET} 20416359Sasami 20542797Skato${SYSTEM_OBJS} genassym.o vers.o: opt_global.h 20625256Skato 20716359Sasami# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical. 20816359Sasamidepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 20916359Sasami rm -f .newdep 21039567Skato mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES} 21139567Skato mkdep -a -f .newdep ${GEN_CFLAGS} ${GEN_CFILES} 21239567Skato env MKDEP_CPP="${CC} -E" \ 21339567Skato mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES} 21416359Sasami rm -f .depend 21516359Sasami mv -f .newdep .depend 21616359Sasami 21732938Skatocleandepend: 21832938Skato rm -f .depend 21932938Skato 22016359Sasamilinks: 22146864Skato egrep '#if' ${CFILES} | sed -f $S/conf/defines | \ 22216359Sasami sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 22346864Skato echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 22416359Sasami sort -u | comm -23 - dontlink | \ 22516359Sasami sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 22616359Sasami sh makelinks && rm -f dontlink 22716359Sasami 22816359Sasamitags: 22916359Sasami @echo "see $S/kern/Makefile for tags" 23016359Sasami 23145783Skatoinstall install.debug: 23245783Skato @if [ ! -f ${KERNEL}${.TARGET:S/install//} ] ; then \ 23345783Skato echo "You must first build a kernel first." ; \ 23416359Sasami exit 1 ; \ 23516359Sasami fi 23645424Sgrog.if exists(${DESTDIR}/${KERNEL}) 23745424Sgrog -chflags noschg ${DESTDIR}/${KERNEL} 23845424Sgrog mv ${DESTDIR}/${KERNEL} ${DESTDIR}/${KERNEL}.old 23932938Skato.endif 24031890Skato PATH=$${PATH}:/sbin:/usr/sbin; \ 24145424Sgrog if [ `sysctl -n kern.bootfile` = ${DESTDIR}/${KERNEL} ] ; then \ 24245424Sgrog sysctl -w kern.bootfile=${DESTDIR}/${KERNEL}.old ; \ 24346864Skato if [ -f /var/db/kvm_${KERNEL}.db ] ; then \ 24446864Skato mv -f /var/db/kvm_${KERNEL}.db /var/db/kvm_${KERNEL}.old.db ; \ 24530933Skato fi \ 24616359Sasami fi 24745783Skato install -c -m 555 -o root -g wheel -fschg \ 24845783Skato ${KERNEL}${.TARGET:S/install//} ${DESTDIR}/${KERNEL} 24916359Sasami 25046750Skatoreinstall reinstall.debug: 25146750Skato install -c -m 555 -o root -g wheel -fschg \ 25246750Skato ${KERNEL}${.TARGET:S/reinstall//} ${DESTDIR}/${KERNEL} 25346750Skato 25437582Skatoconfig.o: 25537582Skato ${NORMAL_C} 25616359Sasami 25737582Skatoioconf.o: 25837582Skato ${NORMAL_C} 25937582Skato 26016359Sasamiparam.c: $S/conf/param.c 26116359Sasami -rm -f param.c 26216359Sasami cp $S/conf/param.c . 26316359Sasami 26437582Skatoparam.o: 26537582Skato ${NORMAL_C} 26616359Sasami 26737582Skatovers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} 26816359Sasami sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 26916359Sasami 27037582Skato# XXX strictly, everything depends on Makefile because changes to ${PROF} 27137582Skato# only appear there, but we don't handle that. 27237582Skatovers.o: 27337582Skato ${NORMAL_C} 27437152Skato 27537582Skato.ORDER: vnode_if.c vnode_if.h 27637582Skatovnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 27716359Sasami sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 27816359Sasami 27937582Skatovnode_if.o: 28037582Skato ${NORMAL_C} 28137582Skato 28238607Skato.if exists($S/../share/mk) 28338607Skato.include "$S/../share/mk/bsd.kern.mk" 28438607Skato.else 28519122Sasami.include <bsd.kern.mk> 28638607Skato.endif 28719122Sasami 28816359Sasami%RULES 28916359Sasami 29016359Sasami# DO NOT DELETE THIS LINE -- make depend uses it 291