Makefile.pc98 revision 53689
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 53689 1999-11-25 12:52:13Z nyan $ 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 3953689SnyanSIZE?= size 4053689Snyan 4116359SasamiCOPTFLAGS?=-O 4218846SasamiINCLUDES= -nostdinc -I- -I. -I$S 4316359Sasami# This hack is to allow kernel compiles to succeed on machines w/out srcdist 4416359Sasami.if exists($S/../include) 4516359SasamiINCLUDES+= -I$S/../include 4616359Sasami.else 4716359SasamiINCLUDES+= -I/usr/include 4816359Sasami.endif 4953689SnyanCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 5053689Snyan# KAME mandatory flags 5153689SnyanCOPTS+= -D_KERNEL 5216359SasamiCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 5338727Skato 5439567Skato# XXX LOCORE means "don't declare C stuff" not "for locore.s". 5539567SkatoASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 5639567Skato 5739567Skato# Use the default object format for genassym, etc. 5848319SkatoGEN_CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} -UKERNEL 5939204Skato 6038727Skato# Select the correct set of tools. Can't set OBJFORMAT here because it 6139567Skato# doesn't get exported into the environment, and if it were exported 6239567Skato# then it might break building of genassym, etc. 6338727Skato.if ${KERNFORMAT} == "elf" 6453689SnyanFMT= -elf 6538727Skato.else 6653689SnyanFMT= -aout 6738727Skato.endif 6853689SnyanCFLAGS+= ${FMT} 6938727Skato 7044721SkatoLOAD_ADDRESS?= C0100000 7127101SkatoDEFINED_PROF= ${PROF} 7220494Skato.if defined(PROF) 7327101SkatoCFLAGS+= -malign-functions=4 7420494Skato.if ${PROFLEVEL} >= 2 7520494SkatoIDENT+= -DGPROF4 -DGUPROF 7620494SkatoPROF+= -mprofiler-epilogue 7720494Skato.endif 7820494Skato.endif 7916359Sasami 8052203Skato# Put configuration-specific C flags last (except for ${PROF}) so that they 8152203Skato# can override the others. 8252203SkatoCFLAGS+= ${CONF_CFLAGS} 8352203Skato 8416359SasamiNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 8537582SkatoNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 8639567SkatoNORMAL_S= ${CC} -c ${ASM_CFLAGS} $< 8737582SkatoPROFILE_C= ${CC} -c ${CFLAGS} $< 8816359Sasami 8942797SkatoGEN_CFILES= ${I386}/i386/genassym.c 9042797Skato# setdef0.c and setdef1.c are intentionally 9139567Skato# omitted from SYSTEM_CFILES. They include setdefs.h, a header which 9226058Skato# is generated from all of ${OBJS}. We don't want to have to compile 9326058Skato# everything just to do a make depend. 9426058SkatoSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 9524112SkatoSYSTEM_SFILES= ${I386}/i386/locore.s 9653689SnyanSYSTEM_DEP= Makefile ${SYSTEM_OBJS} 9745783Skato 9840954Skato.if ${KERNFORMAT} == aout || ${KERNFORMAT} == aoutkld 9926058SkatoSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 10053689SnyanSYSTEM_LD= @${LD} ${FMT} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 10153689SnyanSYSTEM_LD_TAIL= @${SIZE} ${FMT} ${.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 10753689SnyanSYSTEM_LD= @${LD} ${FMT} -Bdynamic -T $S/i386/conf/kernel.script \ 10839972Skato -export-dynamic -dynamic-linker /red/herring \ 10935514Simp -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 11053689SnyanSYSTEM_LD_TAIL= @${SIZE} ${FMT} ${.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 16324112Skatolocore.o: ${I386}/i386/locore.s assym.s 16416359Sasami ${NORMAL_S} 16516359Sasami 16639972Skato.if ${KERNFORMAT} == elf 16739972Skato# This is a hack. BFD "optimizes" away dynamic mode if there are no 16839972Skato# dynamic references. We could probably do a '-Bforcedynamic' mode like 16939972Skato# in the a.out ld. For now, this works. 17042450Sjdphack.So: Makefile 17139972Skato touch hack.c 17253689Snyan ${CC} ${FMT} -shared -nostdlib hack.c -o hack.So 17339972Skato rm -f hack.c 17439972Skato.endif 17539972Skato 17643192Skato.ORDER: setdefs.h setdef0.c setdef1.c 17743192Skato 17842797Skatosetdef0.o: setdef0.c setdefs.h 17925088Skato ${NORMAL_C} 18025088Skato 18142797Skatosetdef1.o: setdef1.c setdefs.h 18225088Skato ${NORMAL_C} 18325088Skato 18442797Skatosetdef0.c setdef1.c setdefs.h: ${OBJS} 18542892Skato @gensetdefs ${OBJS} 18626058Skato 18716359Sasami# this rule stops ./assym.s in .depend from causing problems 18816359Sasami./assym.s: assym.s 18916359Sasami 19016359Sasamiassym.s: genassym 19116359Sasami ./genassym >assym.s 19216359Sasami 19337582Skatogenassym.o: ${I386}/i386/genassym.c 19416359Sasami rm -f ./machine ; ln -s ${I386}/include ./machine 19539567Skato ${CC} -c ${GEN_CFLAGS} ${I386}/i386/genassym.c 19616359Sasami 19716359Sasamigenassym: genassym.o 19839204Skato ${CC} ${GEN_CFLAGS} genassym.o -o ${.TARGET} 19916359Sasami 20042797Skato${SYSTEM_OBJS} genassym.o vers.o: opt_global.h 20125256Skato 20216359Sasamidepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 20316359Sasami rm -f .newdep 20439567Skato mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES} 20539567Skato mkdep -a -f .newdep ${GEN_CFLAGS} ${GEN_CFILES} 20639567Skato env MKDEP_CPP="${CC} -E" \ 20739567Skato mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES} 20816359Sasami rm -f .depend 20916359Sasami mv -f .newdep .depend 21016359Sasami 21132938Skatocleandepend: 21232938Skato rm -f .depend 21332938Skato 21416359Sasamilinks: 21546864Skato egrep '#if' ${CFILES} | sed -f $S/conf/defines | \ 21616359Sasami sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 21746864Skato echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 21816359Sasami sort -u | comm -23 - dontlink | \ 21916359Sasami sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 22016359Sasami sh makelinks && rm -f dontlink 22116359Sasami 22216359Sasamitags: 22348507Skato @[ -f .depend ] || { echo "you must make depend first"; exit 1; } 22448507Skato sh $S/conf/systags.sh 22548507Skato rm -f tags1 22648507Skato sed -e 's, ../, ,' tags > tags1 22716359Sasami 22845783Skatoinstall install.debug: 22945783Skato @if [ ! -f ${KERNEL}${.TARGET:S/install//} ] ; then \ 23053371Snyan echo "You must build a kernel first." ; \ 23116359Sasami exit 1 ; \ 23216359Sasami fi 23345424Sgrog.if exists(${DESTDIR}/${KERNEL}) 23445424Sgrog -chflags noschg ${DESTDIR}/${KERNEL} 23545424Sgrog mv ${DESTDIR}/${KERNEL} ${DESTDIR}/${KERNEL}.old 23632938Skato.endif 23731890Skato PATH=$${PATH}:/sbin:/usr/sbin; \ 23845424Sgrog if [ `sysctl -n kern.bootfile` = ${DESTDIR}/${KERNEL} ] ; then \ 23945424Sgrog sysctl -w kern.bootfile=${DESTDIR}/${KERNEL}.old ; \ 24046864Skato if [ -f /var/db/kvm_${KERNEL}.db ] ; then \ 24146864Skato mv -f /var/db/kvm_${KERNEL}.db /var/db/kvm_${KERNEL}.old.db ; \ 24230933Skato fi \ 24316359Sasami fi 24445783Skato install -c -m 555 -o root -g wheel -fschg \ 24545783Skato ${KERNEL}${.TARGET:S/install//} ${DESTDIR}/${KERNEL} 24616359Sasami 24746750Skatoreinstall reinstall.debug: 24846750Skato install -c -m 555 -o root -g wheel -fschg \ 24946750Skato ${KERNEL}${.TARGET:S/reinstall//} ${DESTDIR}/${KERNEL} 25046750Skato 25137582Skatoconfig.o: 25237582Skato ${NORMAL_C} 25316359Sasami 25437582Skatoioconf.o: 25537582Skato ${NORMAL_C} 25637582Skato 25716359Sasamiparam.c: $S/conf/param.c 25816359Sasami -rm -f param.c 25916359Sasami cp $S/conf/param.c . 26016359Sasami 26137582Skatoparam.o: 26237582Skato ${NORMAL_C} 26316359Sasami 26437582Skatovers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} 26516359Sasami sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 26616359Sasami 26737582Skato# XXX strictly, everything depends on Makefile because changes to ${PROF} 26837582Skato# only appear there, but we don't handle that. 26937582Skatovers.o: 27037582Skato ${NORMAL_C} 27137152Skato 27237582Skato.ORDER: vnode_if.c vnode_if.h 27337582Skatovnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 27416359Sasami sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 27516359Sasami 27637582Skatovnode_if.o: 27737582Skato ${NORMAL_C} 27837582Skato 27953371Snyan# Commented out for now pending a better solution. 28053371Snyan# How do we pick up compiler version specific flags?? 28153371Snyan#.if exists($S/../share/mk) 28253371Snyan#.include "$S/../share/mk/bsd.kern.mk" 28353371Snyan#.else 28419122Sasami.include <bsd.kern.mk> 28553371Snyan#.endif 28619122Sasami 28716359Sasami%RULES 28816359Sasami 28916359Sasami# DO NOT DELETE THIS LINE -- make depend uses it 290