Makefile.pc98 revision 79014
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 650477Speter# $FreeBSD: head/sys/conf/Makefile.pc98 79014 2001-06-30 06:29:47Z imp $ 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. 2271252Speter%VERSREQ= 500006 2330665Skato 2446864Skato# Can be overridden by makeoptions or /etc/make.conf 2565839SobrienKERNEL_KO?= kernel 2646864SkatoKERNEL?= kernel 2765501SobrienKODIR?= /boot/${KERNEL} 2827690Skato#STD8X16FONT?= iso 2927690Skato 3052651Smarcel.if !defined(S) 3116359Sasami.if exists(./@/.) 3216359SasamiS= ./@ 3316359Sasami.else 3479014SimpS= ../../.. 3516359Sasami.endif 3652651Smarcel.endif 3755663SkatoM= ${MACHINE_ARCH} 3816359Sasami 3961593SpeterSIZE?= size 4061593SpeterOBJCOPY?= objcopy 4153689Snyan 4274146SkrisCOPTFLAGS?=-O -pipe 4374146Skris.if !defined(NO_CPU_COPTFLAGS) 4474146SkrisCOPTFLAGS+= ${_CPUCFLAGS} 4574146Skris.endif 4670083SkatoINCLUDES= -nostdinc -I- ${INCLMAGIC} -I. -I$S -I$S/dev 4768360Snyan 4868360Snyan# This hack lets us use the Intel ACPICA code without spamming a new 4968360Snyan# include path into 100+ source files. 5077430SmsmithINCLUDES+= -I$S/contrib/dev/acpica 5168360Snyan 5277854Sjlemon# ... and the same for ipfilter 5377854SjlemonINCLUDES+= -I$S/contrib/ipfilter 5477854Sjlemon 5578131Speter# This hack is to allow kernel compiles to succeed on machines w/out srcdist 5678131Speter.if exists($S/../include) 5778131SpeterINCLUDES+= -I$S/../include 5878131Speter.else 5978131SpeterINCLUDES+= -I/usr/include 6078131Speter.endif 6178131Speter 6255322SkatoCOPTS= ${INCLUDES} ${IDENT} -D_KERNEL -include opt_global.h 6316359SasamiCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 6438727Skato 6539567Skato# XXX LOCORE means "don't declare C stuff" not "for locore.s". 6639567SkatoASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 6739567Skato 6838727Skato# Select the correct set of tools. Can't set OBJFORMAT here because it 6939567Skato# doesn't get exported into the environment, and if it were exported 7055604Sbde# then it might break building of utilities. 7153689SnyanFMT= -elf 7253689SnyanCFLAGS+= ${FMT} 7338727Skato 7427101SkatoDEFINED_PROF= ${PROF} 7520494Skato.if defined(PROF) 7627101SkatoCFLAGS+= -malign-functions=4 7720494Skato.if ${PROFLEVEL} >= 2 7820494SkatoIDENT+= -DGPROF4 -DGUPROF 7920494SkatoPROF+= -mprofiler-epilogue 8020494Skato.endif 8120494Skato.endif 8216359Sasami 8352203Skato# Put configuration-specific C flags last (except for ${PROF}) so that they 8452203Skato# can override the others. 8552203SkatoCFLAGS+= ${CONF_CFLAGS} 8652203Skato 8755604SbdeNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} 8855604SbdeNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} 8955604SbdeNORMAL_S= ${CC} -c ${ASM_CFLAGS} ${.IMPSRC} 9055604SbdePROFILE_C= ${CC} -c ${CFLAGS} ${.IMPSRC} 9116359Sasami 9259168SkatoNORMAL_M= perl5 $S/kern/makeobjops.pl -c $<; \ 9359039Skato ${CC} -c ${CFLAGS} ${PROF} ${.PREFIX}.c 9459039Skato 9555663SkatoGEN_CFILES= $S/$M/$M/genassym.c 9661640SpeterSYSTEM_CFILES= param.c vnode_if.c hints.c config.c 9755663SkatoSYSTEM_SFILES= $S/$M/$M/locore.s 9853689SnyanSYSTEM_DEP= Makefile ${SYSTEM_OBJS} 9978161SpeterSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} param.o hints.o config.o hack.So 10055677SpeterSYSTEM_LD= @${LD} ${FMT} -Bdynamic -T $S/conf/ldscript.$M \ 10139972Skato -export-dynamic -dynamic-linker /red/herring \ 10235514Simp -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 10361593SpeterSYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \ 10461593Speter ${SIZE} ${FMT} ${.TARGET} ; chmod 755 ${.TARGET} 10555677SpeterSYSTEM_DEP+= $S/conf/ldscript.$M 10616359Sasami 10716359Sasami%BEFORE_DEPEND 10816359Sasami 10916359Sasami%OBJS 11016359Sasami 11169135Speter%FILES.c 11216359Sasami 11369135Speter%FILES.s 11416359Sasami 11569135Speter%FILES.m 11638833Skato 11716359Sasami%CLEAN 11816359Sasami 11960322Snyan.PHONY: all modules 12060322Snyan 12165501Sobrienall: ${KERNEL_KO} 12246864Skato 12361328Skatodepend: kernel-depend 12461328Skatoclean: kernel-clean 12561328Skatocleandepend: kernel-cleandepend 12673133Speterclobber: kernel-clobber 12761328Skatotags: kernel-tags 12871267Sjhbinstall: kernel-install 12971267Sjhbinstall.debug: kernel-install.debug 13071267Sjhbreinstall: kernel-reinstall 13171267Sjhbreinstall.debug: kernel-reinstall.debug 13261328Skato 13346864Skato.if !defined(DEBUG) 13465501SobrienFULLKERNEL= ${KERNEL_KO} 13546864Skato.else 13665501SobrienFULLKERNEL= ${KERNEL_KO}.debug 13765501Sobrien${KERNEL_KO}: ${FULLKERNEL} 13865501Sobrien ${OBJCOPY} --strip-debug ${FULLKERNEL} ${KERNEL_KO} 13946864Skato.endif 14046864Skato 14155149Skato${FULLKERNEL}: ${SYSTEM_DEP} vers.o 14246864Skato @rm -f ${.TARGET} 14346864Skato @echo linking ${.TARGET} 14446864Skato ${SYSTEM_LD} 14546864Skato ${SYSTEM_LD_TAIL} 14646864Skato 14741597Skato.if !exists(.depend) 14859039Skato${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h} ${MFILES:T:S/.m$/.h/} 14941597Skato.endif 15041597Skato 15159039Skato.for mfile in ${MFILES} 15259039Skato${mfile:T:S/.m$/.h/}: ${mfile} 15359168Skato perl5 $S/kern/makeobjops.pl -h ${mfile} 15459039Skato.endfor 15559039Skato 15661328Skatokernel-clean: 15761174Sbde rm -f *.o *.so *.So *.ko *.s eddep errs \ 15865501Sobrien ${FULLKERNEL} ${KERNEL_KO} linterrs makelinks param.c \ 15955604Sbde setdef[01].c setdefs.h tags \ 16059039Skato vers.c vnode_if.c vnode_if.h \ 16159039Skato ${MFILES:T:S/.m$/.c/} ${MFILES:T:S/.m$/.h/} \ 16259039Skato ${CLEAN} 16316359Sasami 16473133Speterkernel-clobber: 16573133Speter find . -type f ! -name version -delete 16673133Speter 16716359Sasami#lint: /tmp param.c 16837582Skato# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \ 16961640Speter# $S/$M/$M/Locore.c ${CFILES} param.c | \ 17016359Sasami# grep -v 'struct/union .* never defined' | \ 17116359Sasami# grep -v 'possible pointer alignment problem' 17216359Sasami 17355663Skatolocore.o: $S/$M/$M/locore.s assym.s 17416359Sasami ${NORMAL_S} 17516359Sasami 17639972Skato# This is a hack. BFD "optimizes" away dynamic mode if there are no 17739972Skato# dynamic references. We could probably do a '-Bforcedynamic' mode like 17839972Skato# in the a.out ld. For now, this works. 17942450Sjdphack.So: Makefile 18039972Skato touch hack.c 18153689Snyan ${CC} ${FMT} -shared -nostdlib hack.c -o hack.So 18239972Skato rm -f hack.c 18339972Skato 18416359Sasami# this rule stops ./assym.s in .depend from causing problems 18516359Sasami./assym.s: assym.s 18616359Sasami 18761174Sbdeassym.s: $S/kern/genassym.sh genassym.o 18873018Speter OBJFORMAT=elf sh $S/kern/genassym.sh genassym.o > ${.TARGET} 18916359Sasami 19055663Skatogenassym.o: $S/$M/$M/genassym.c 19155663Skato rm -f ./machine ; ln -s $S/$M/include ./machine 19273018Speter ${CC} -c ${CFLAGS} -elf $S/$M/$M/genassym.c 19316359Sasami 19442797Skato${SYSTEM_OBJS} genassym.o vers.o: opt_global.h 19525256Skato 19672396Sobrienkernel-depend: 19774742Sobrien rm -f .olddep 19874742Sobrien if [ -f .depend ]; then mv .depend .olddep; fi 19972396Sobrien ${MAKE} _kernel-depend 20072396Sobrien 20172396Sobrien_kernel-depend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} \ 20259039Skato ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} \ 20359039Skato ${SYSTEM_SFILES} ${MFILES:T:S/.m$/.h/} 20474742Sobrien if [ -f .olddep ]; then mv .olddep .depend; fi 20516359Sasami rm -f .newdep 20655604Sbde mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} 20739567Skato env MKDEP_CPP="${CC} -E" \ 20839567Skato mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES} 20916359Sasami rm -f .depend 21074742Sobrien mv .newdep .depend 21116359Sasami 21261328Skatokernel-cleandepend: 21332938Skato rm -f .depend 21432938Skato 21516359Sasamilinks: 21646864Skato egrep '#if' ${CFILES} | sed -f $S/conf/defines | \ 21716359Sasami sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 21846864Skato echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 21916359Sasami sort -u | comm -23 - dontlink | \ 22016359Sasami sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 22168864Sobrien sh makelinks; rm -f dontlink 22216359Sasami 22361328Skatokernel-tags: 22448507Skato @[ -f .depend ] || { echo "you must make depend first"; exit 1; } 22548507Skato sh $S/conf/systags.sh 22648507Skato rm -f tags1 22748507Skato sed -e 's, ../, ,' tags > tags1 22816359Sasami 22961328Skatokernel-install kernel-install.debug: 23065561Sobrien.if exists(${DESTDIR}/boot) 23165089Speter @if [ ! -f ${DESTDIR}/boot/device.hints ] ; then \ 23265512Sobrien echo "You must set up a ${DESTDIR}/boot/device.hints file first." ; \ 23365089Speter exit 1 ; \ 23465089Speter fi 23565512Sobrien @if [ x"`grep device.hints ${DESTDIR}/boot/defaults/loader.conf ${DESTDIR}/boot/loader.conf`" = "x" ]; then \ 23665089Speter echo "You must activate /boot/device.hints in loader.conf." ; \ 23765089Speter exit 1 ; \ 23865089Speter fi 23965561Sobrien.endif 24065501Sobrien @if [ ! -f ${KERNEL_KO}${.TARGET:S/kernel-install//} ] ; then \ 24153371Snyan echo "You must build a kernel first." ; \ 24216359Sasami exit 1 ; \ 24316359Sasami fi 24465554Sobrien.if exists(${DESTDIR}${KODIR}) 24565554Sobrien.if exists(${DESTDIR}${KODIR}.old) 24676114Sobrien @-chflags -R noschg ${DESTDIR}${KODIR}.old 24765554Sobrien -rm -rf ${DESTDIR}${KODIR}.old 24832938Skato.endif 24965554Sobrien mv ${DESTDIR}${KODIR} ${DESTDIR}${KODIR}.old 25065501Sobrien.endif 25165554Sobrien mkdir -p ${DESTDIR}${KODIR} 25275984Sobrien install -c -m 555 -o root -g wheel \ 25365554Sobrien ${KERNEL_KO}${.TARGET:S/kernel-install//} ${DESTDIR}${KODIR} 25416359Sasami 25561328Skatokernel-reinstall kernel-reinstall.debug: 25676114Sobrien @-chflags -R noschg ${DESTDIR}${KODIR} 25775984Sobrien install -c -m 555 -o root -g wheel \ 25868360Snyan ${KERNEL_KO}${.TARGET:S/kernel-reinstall//} ${DESTDIR}${KODIR} 25961328Skato 26061745Sobrien.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists($S/modules) 26161328Skatoall: modules 26261328Skatodepend: modules-depend 26361328Skatoclean: modules-clean 26461328Skatocleandepend: modules-cleandepend 26561328Skatocleandir: modules-cleandir 26673133Speterclobber: modules-clobber 26761328Skatotags: modules-tags 26871267Sjhbinstall: modules-install 26971267Sjhbinstall.debug: modules-install.debug 27071267Sjhbreinstall: modules-reinstall 27171267Sjhbreinstall.debug: modules-reinstall.debug 27260322Snyan.endif 27346750Skato 27466600SobrienMKMODULESENV= MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR} 27575082Simp.if defined(MODULES_OVERRIDE) 27675082SimpMKMODULESENV+= MODULES_OVERRIDE="${MODULES_OVERRIDE}" 27775082Simp.endif 27869817SnyanMKMODULESENV+= MACHINE=pc98 27965501Sobrien 28061328Skatomodules: 28170332Sobrien @mkdir -p ${.OBJDIR}/modules 28270332Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} obj ; \ 28370332Sobrien env ${MKMODULESENV} ${MAKE} all 28461328Skato 28561328Skatomodules-depend: 28670332Sobrien @mkdir -p ${.OBJDIR}/modules 28770332Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} obj ; \ 28870332Sobrien env ${MKMODULESENV} ${MAKE} depend 28961328Skato 29061328Skatomodules-clean: 29168864Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} clean 29261328Skato 29361328Skatomodules-cleandepend: 29468864Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} cleandepend 29561328Skato 29673133Spetermodules-clobber: modules-clean 29773133Speter rm -rf ${MKMODULESENV} 29873133Speter 29961328Skatomodules-cleandir: 30068864Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} cleandir 30161328Skato 30261328Skatomodules-tags: 30368864Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} tags 30461328Skato 30561328Skatomodules-install modules-install.debug: 30668864Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} install 30761328Skato 30861328Skatomodules-reinstall modules-reinstall.debug: 30968864Sobrien cd $S/modules ; env ${MKMODULESENV} ${MAKE} install 31061328Skato 31137582Skatoconfig.o: 31237582Skato ${NORMAL_C} 31316359Sasami 31416359Sasamiparam.c: $S/conf/param.c 31516359Sasami -rm -f param.c 31616359Sasami cp $S/conf/param.c . 31716359Sasami 31837582Skatoparam.o: 31937582Skato ${NORMAL_C} 32016359Sasami 32137582Skatovers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} 32216359Sasami sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 32316359Sasami 32437582Skato# XXX strictly, everything depends on Makefile because changes to ${PROF} 32537582Skato# only appear there, but we don't handle that. 32637582Skatovers.o: 32737582Skato ${NORMAL_C} 32837152Skato 32961640Speterhints.o: hints.c 33061640Speter ${NORMAL_C} 33161640Speter 33254878Skatovnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src 33354878Skato perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src 33416359Sasami 33554878Skatovnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src 33654878Skato perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src 33754549Skato 33837582Skatovnode_if.o: 33937582Skato ${NORMAL_C} 34037582Skato 34153371Snyan# Commented out for now pending a better solution. 34253371Snyan# How do we pick up compiler version specific flags?? 34353371Snyan#.if exists($S/../share/mk) 34453371Snyan#.include "$S/../share/mk/bsd.kern.mk" 34553371Snyan#.else 34619122Sasami.include <bsd.kern.mk> 34753371Snyan#.endif 34819122Sasami 34916359Sasami%RULES 35016359Sasami 35116359Sasami# DO NOT DELETE THIS LINE -- make depend uses it 352