Makefile.pc98 revision 52651
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 52651 1999-10-30 09:28:27Z marcel $ 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 2952651Smarcel.if !defined(S) 3016359Sasami.if exists(./@/.) 3116359SasamiS= ./@ 3216359Sasami.else 3316359SasamiS= ../.. 3416359Sasami.endif 3552651Smarcel.endif 3616359SasamiPC98= ${S}/pc98 3716359SasamiI386= ${S}/i386 3816359Sasami 3916359SasamiCOPTFLAGS?=-O 4018846SasamiINCLUDES= -nostdinc -I- -I. -I$S 4116359Sasami# This hack is to allow kernel compiles to succeed on machines w/out srcdist 4216359Sasami.if exists($S/../include) 4316359SasamiINCLUDES+= -I$S/../include 4416359Sasami.else 4516359SasamiINCLUDES+= -I/usr/include 4616359Sasami.endif 4745856SkatoCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 4816359SasamiCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 4938727Skato 5039567Skato# XXX LOCORE means "don't declare C stuff" not "for locore.s". 5139567SkatoASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 5239567Skato 5339567Skato# Use the default object format for genassym, etc. 5448319SkatoGEN_CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} -UKERNEL 5539204Skato 5638727Skato# Select the correct set of tools. Can't set OBJFORMAT here because it 5739567Skato# doesn't get exported into the environment, and if it were exported 5839567Skato# then it might break building of genassym, etc. 5938727Skato.if ${KERNFORMAT} == "elf" 6038727SkatoCFLAGS+= -elf 6138727Skato.else 6238727SkatoCFLAGS+= -aout 6338727Skato.endif 6438727Skato 6544721SkatoLOAD_ADDRESS?= C0100000 6627101SkatoDEFINED_PROF= ${PROF} 6720494Skato.if defined(PROF) 6827101SkatoCFLAGS+= -malign-functions=4 6920494Skato.if ${PROFLEVEL} >= 2 7020494SkatoIDENT+= -DGPROF4 -DGUPROF 7120494SkatoPROF+= -mprofiler-epilogue 7220494Skato.endif 7320494Skato.endif 7416359Sasami 7552203Skato# Put configuration-specific C flags last (except for ${PROF}) so that they 7652203Skato# can override the others. 7752203SkatoCFLAGS+= ${CONF_CFLAGS} 7852203Skato 7916359SasamiNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 8037582SkatoNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 8139567SkatoNORMAL_S= ${CC} -c ${ASM_CFLAGS} $< 8237582SkatoPROFILE_C= ${CC} -c ${CFLAGS} $< 8316359Sasami 8442797SkatoGEN_CFILES= ${I386}/i386/genassym.c 8542797Skato# setdef0.c and setdef1.c are intentionally 8639567Skato# omitted from SYSTEM_CFILES. They include setdefs.h, a header which 8726058Skato# is generated from all of ${OBJS}. We don't want to have to compile 8826058Skato# everything just to do a make depend. 8926058SkatoSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 9024112SkatoSYSTEM_SFILES= ${I386}/i386/locore.s 9116359SasamiSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 9216359Sasami.if ${CFLAGS:M-g} == "" 9316359SasamiSYMORDER_EXCLUDE=-x symbols.exclude 9416359Sasami.endif 9545783Skato 9640954Skato.if ${KERNFORMAT} == aout || ${KERNFORMAT} == aoutkld 9726058SkatoSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 9838727SkatoSYSTEM_LD= @${LD} -aout -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 9925571SkatoSYSTEM_LD_TAIL= @echo rearranging symbols; \ 10035514Simp symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 10138727Skato size -aout ${.TARGET} ; chmod 755 ${.TARGET} 10225571Skato.endif 10345783Skato 10438727Skato.if ${KERNFORMAT} == elf 10542057SkatoSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 10642450Sjdp setdef1.o hack.So 10739972SkatoSYSTEM_LD= @${LD} -elf -Bdynamic -T $S/i386/conf/kernel.script \ 10839972Skato -export-dynamic -dynamic-linker /red/herring \ 10935514Simp -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 11038727SkatoSYSTEM_LD_TAIL= @size -elf ${.TARGET} ; chmod 755 ${.TARGET} 11139972SkatoSYSTEM_DEP+= $S/i386/conf/kernel.script 11225088Skato.endif 11316359Sasami 11416359Sasami%BEFORE_DEPEND 11516359Sasami 11616359Sasami%OBJS 11716359Sasami 11816359Sasami%CFILES 11916359Sasami 12016359Sasami%SFILES 12116359Sasami 12238833Skato%MFILES 12338833Skato 12416359Sasami%CLEAN 12516359Sasami 12646864Skatoall: ${KERNEL} 12746864Skato 12846864Skato.if !defined(DEBUG) 12946864SkatoFULLKERNEL= ${KERNEL} 13046864Skato.else 13146864SkatoFULLKERNEL= ${KERNEL}.debug 13246864Skato${KERNEL}: ${FULLKERNEL} 13346864Skato.if ${KERNFORMAT} == "elf" 13446864Skato objcopy --strip-debug ${FULLKERNEL} ${KERNEL} 13546864Skato.else 13646864Skato cp ${FULLKERNEL} ${KERNEL} 13746864Skato strip -d ${KERNEL} 13846864Skato.endif 13946864Skato.endif 14046864Skato 14148319Skato${FULLKERNEL}: ${BEFORE_DEPEND} ${SYSTEM_DEP} vers.o 14246864Skato @rm -f ${.TARGET} 14346864Skato @echo linking ${.TARGET} 14446864Skato ${SYSTEM_LD} 14546864Skato ${SYSTEM_LD_TAIL} 14646864Skato 14741597Skato.if !exists(.depend) 14844424Skato${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h} 14941597Skato.endif 15041597Skato 15116359Sasamiclean: 15242450Sjdp rm -f *.o *.so *.So *.ko *.s eddep errs genassym gensetdefs \ 15345424Sgrog ${KERNEL} ${FULLKERNEL} linterrs makelinks param.c \ 15445424Sgrog setdef[01].c setdefs.h symbols.exclude symbols.sort tags \ 15537582Skato vers.c vnode_if.c vnode_if.h ${CLEAN} 15616359Sasami 15716359Sasami#lint: /tmp param.c 15837582Skato# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \ 15924112Skato# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 16016359Sasami# grep -v 'struct/union .* never defined' | \ 16116359Sasami# grep -v 'possible pointer alignment problem' 16216359Sasami 16337582Skatosymbols.exclude: 16416359Sasami echo "gcc2_compiled." >symbols.exclude 16516359Sasami echo "___gnu_compiled_c" >>symbols.exclude 16616359Sasami 16716359Sasamisymbols.sort: ${I386}/i386/symbols.raw 16816359Sasami grep -v '^#' ${I386}/i386/symbols.raw \ 16916359Sasami | sed 's/^ //' | sort -u > symbols.sort 17016359Sasami 17124112Skatolocore.o: ${I386}/i386/locore.s assym.s 17216359Sasami ${NORMAL_S} 17316359Sasami 17439972Skato.if ${KERNFORMAT} == elf 17539972Skato# This is a hack. BFD "optimizes" away dynamic mode if there are no 17639972Skato# dynamic references. We could probably do a '-Bforcedynamic' mode like 17739972Skato# in the a.out ld. For now, this works. 17842450Sjdphack.So: Makefile 17939972Skato touch hack.c 18042450Sjdp ${CC} -elf -shared -nostdlib hack.c -o hack.So 18139972Skato rm -f hack.c 18239972Skato.endif 18339972Skato 18443192Skato.ORDER: setdefs.h setdef0.c setdef1.c 18543192Skato 18642797Skatosetdef0.o: setdef0.c setdefs.h 18725088Skato ${NORMAL_C} 18825088Skato 18942797Skatosetdef1.o: setdef1.c setdefs.h 19025088Skato ${NORMAL_C} 19125088Skato 19242797Skatosetdef0.c setdef1.c setdefs.h: ${OBJS} 19342892Skato @gensetdefs ${OBJS} 19426058Skato 19516359Sasami# this rule stops ./assym.s in .depend from causing problems 19616359Sasami./assym.s: assym.s 19716359Sasami 19816359Sasamiassym.s: genassym 19916359Sasami ./genassym >assym.s 20016359Sasami 20137582Skatogenassym.o: ${I386}/i386/genassym.c 20216359Sasami rm -f ./machine ; ln -s ${I386}/include ./machine 20339567Skato ${CC} -c ${GEN_CFLAGS} ${I386}/i386/genassym.c 20416359Sasami 20516359Sasamigenassym: genassym.o 20639204Skato ${CC} ${GEN_CFLAGS} genassym.o -o ${.TARGET} 20716359Sasami 20842797Skato${SYSTEM_OBJS} genassym.o vers.o: opt_global.h 20925256Skato 21016359Sasamidepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 21116359Sasami rm -f .newdep 21239567Skato mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES} 21339567Skato mkdep -a -f .newdep ${GEN_CFLAGS} ${GEN_CFILES} 21439567Skato env MKDEP_CPP="${CC} -E" \ 21539567Skato mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES} 21616359Sasami rm -f .depend 21716359Sasami mv -f .newdep .depend 21816359Sasami 21932938Skatocleandepend: 22032938Skato rm -f .depend 22132938Skato 22216359Sasamilinks: 22346864Skato egrep '#if' ${CFILES} | sed -f $S/conf/defines | \ 22416359Sasami sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 22546864Skato echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 22616359Sasami sort -u | comm -23 - dontlink | \ 22716359Sasami sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 22816359Sasami sh makelinks && rm -f dontlink 22916359Sasami 23016359Sasamitags: 23148507Skato @[ -f .depend ] || { echo "you must make depend first"; exit 1; } 23248507Skato sh $S/conf/systags.sh 23348507Skato rm -f tags1 23448507Skato sed -e 's, ../, ,' tags > tags1 23516359Sasami 23645783Skatoinstall install.debug: 23745783Skato @if [ ! -f ${KERNEL}${.TARGET:S/install//} ] ; then \ 23845783Skato echo "You must first build a kernel first." ; \ 23916359Sasami exit 1 ; \ 24016359Sasami fi 24145424Sgrog.if exists(${DESTDIR}/${KERNEL}) 24245424Sgrog -chflags noschg ${DESTDIR}/${KERNEL} 24345424Sgrog mv ${DESTDIR}/${KERNEL} ${DESTDIR}/${KERNEL}.old 24432938Skato.endif 24531890Skato PATH=$${PATH}:/sbin:/usr/sbin; \ 24645424Sgrog if [ `sysctl -n kern.bootfile` = ${DESTDIR}/${KERNEL} ] ; then \ 24745424Sgrog sysctl -w kern.bootfile=${DESTDIR}/${KERNEL}.old ; \ 24846864Skato if [ -f /var/db/kvm_${KERNEL}.db ] ; then \ 24946864Skato mv -f /var/db/kvm_${KERNEL}.db /var/db/kvm_${KERNEL}.old.db ; \ 25030933Skato fi \ 25116359Sasami fi 25245783Skato install -c -m 555 -o root -g wheel -fschg \ 25345783Skato ${KERNEL}${.TARGET:S/install//} ${DESTDIR}/${KERNEL} 25416359Sasami 25546750Skatoreinstall reinstall.debug: 25646750Skato install -c -m 555 -o root -g wheel -fschg \ 25746750Skato ${KERNEL}${.TARGET:S/reinstall//} ${DESTDIR}/${KERNEL} 25846750Skato 25937582Skatoconfig.o: 26037582Skato ${NORMAL_C} 26116359Sasami 26237582Skatoioconf.o: 26337582Skato ${NORMAL_C} 26437582Skato 26516359Sasamiparam.c: $S/conf/param.c 26616359Sasami -rm -f param.c 26716359Sasami cp $S/conf/param.c . 26816359Sasami 26937582Skatoparam.o: 27037582Skato ${NORMAL_C} 27116359Sasami 27237582Skatovers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} 27316359Sasami sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 27416359Sasami 27537582Skato# XXX strictly, everything depends on Makefile because changes to ${PROF} 27637582Skato# only appear there, but we don't handle that. 27737582Skatovers.o: 27837582Skato ${NORMAL_C} 27937152Skato 28037582Skato.ORDER: vnode_if.c vnode_if.h 28137582Skatovnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 28216359Sasami sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 28316359Sasami 28437582Skatovnode_if.o: 28537582Skato ${NORMAL_C} 28637582Skato 28738607Skato.if exists($S/../share/mk) 28838607Skato.include "$S/../share/mk/bsd.kern.mk" 28938607Skato.else 29019122Sasami.include <bsd.kern.mk> 29138607Skato.endif 29219122Sasami 29316359Sasami%RULES 29416359Sasami 29516359Sasami# DO NOT DELETE THIS LINE -- make depend uses it 296