Makefile.pc98 revision 41597
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 641597Skato# $Id: Makefile.pc98,v 1.45 1998/11/16 08:09:16 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. 2241198Skato%VERSREQ= 300009 2330665Skato 2438727SkatoKERNFORMAT?= aout 2525088Skato 2627690Skato#STD8X16FONT?= iso 2727690Skato 2816359Sasami.if exists(./@/.) 2916359SasamiS= ./@ 3016359Sasami.else 3116359SasamiS= ../.. 3216359Sasami.endif 3316359SasamiPC98= ${S}/pc98 3416359SasamiI386= ${S}/i386 3516359Sasami 3616359SasamiCOPTFLAGS?=-O 3718846SasamiINCLUDES= -nostdinc -I- -I. -I$S 3816359Sasami# This hack is to allow kernel compiles to succeed on machines w/out srcdist 3916359Sasami.if exists($S/../include) 4016359SasamiINCLUDES+= -I$S/../include 4116359Sasami.else 4216359SasamiINCLUDES+= -I/usr/include 4316359Sasami.endif 4425256SkatoCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 4516359SasamiCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 4638727Skato 4739567Skato# XXX LOCORE means "don't declare C stuff" not "for locore.s". 4839567SkatoASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 4939567Skato 5039567Skato# Use the default object format for genassym, etc. 5139204SkatoGEN_CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 5239204Skato 5338727Skato# Select the correct set of tools. Can't set OBJFORMAT here because it 5439567Skato# doesn't get exported into the environment, and if it were exported 5539567Skato# then it might break building of genassym, etc. 5638727Skato.if ${KERNFORMAT} == "elf" 5738727SkatoCFLAGS+= -elf 5838727Skato.else 5938727SkatoCFLAGS+= -aout 6038727Skato.endif 6138727Skato 6216359SasamiLOAD_ADDRESS?= F0100000 6327101SkatoDEFINED_PROF= ${PROF} 6420494Skato.if defined(PROF) 6527101SkatoCFLAGS+= -malign-functions=4 6620494Skato.if ${PROFLEVEL} >= 2 6720494SkatoIDENT+= -DGPROF4 -DGUPROF 6820494SkatoPROF+= -mprofiler-epilogue 6920494Skato.endif 7020494Skato.endif 7116359Sasami 7216359SasamiNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 7337582SkatoNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 7439567SkatoNORMAL_S= ${CC} -c ${ASM_CFLAGS} $< 7516359SasamiDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 7637582SkatoDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 7739567SkatoDRIVER_S= ${CC} -c -x ${ASM_CFLAGS} $< 7837582SkatoPROFILE_C= ${CC} -c ${CFLAGS} $< 7916359Sasami 8039567SkatoGEN_CFILES= ${I386}/i386/genassym.c ${I386}/i386/gensetdefs.c 8126058Skato# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally 8239567Skato# omitted from SYSTEM_CFILES. They include setdefs.h, a header which 8326058Skato# is generated from all of ${OBJS}. We don't want to have to compile 8426058Skato# everything just to do a make depend. 8526058SkatoSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 8624112SkatoSYSTEM_SFILES= ${I386}/i386/locore.s 8716359SasamiSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 8816359Sasami.if ${CFLAGS:M-g} == "" 8916359SasamiSYMORDER_EXCLUDE=-x symbols.exclude 9016359Sasami.endif 9135514SimpSYSTEM_LD_HEAD= @echo loading ${.TARGET}; rm -f ${.TARGET} 9240954Skato.if ${KERNFORMAT} == aout || ${KERNFORMAT} == aoutkld 9326058SkatoSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 9438727SkatoSYSTEM_LD= @${LD} -aout -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 9525571SkatoSYSTEM_LD_TAIL= @echo rearranging symbols; \ 9635514Simp symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 9738727Skato size -aout ${.TARGET} ; chmod 755 ${.TARGET} 9825571Skato.endif 9938727Skato.if ${KERNFORMAT} == elf 10026058SkatoSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 10139972Skato setdef1.o hack.so 10239972SkatoSYSTEM_LD= @${LD} -elf -Bdynamic -T $S/i386/conf/kernel.script \ 10339972Skato -export-dynamic -dynamic-linker /red/herring \ 10435514Simp -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 10538727SkatoSYSTEM_LD_TAIL= @size -elf ${.TARGET} ; chmod 755 ${.TARGET} 10639972SkatoSYSTEM_DEP+= $S/i386/conf/kernel.script 10725088Skato.endif 10816359Sasami 10916359Sasami%BEFORE_DEPEND 11016359Sasami 11116359Sasami%OBJS 11216359Sasami 11316359Sasami%CFILES 11416359Sasami 11516359Sasami%SFILES 11616359Sasami 11738833Skato%MFILES 11838833Skato 11916359Sasami%LOAD 12016359Sasami 12116359Sasami%CLEAN 12216359Sasami 12341597Skato.if !exists(.depend) 12441597Skato${SYSTEM_OBJS}: ${BEFORE_DEPEND:M*.h} 12541597Skato.endif 12641597Skato 12716359Sasamiclean: 12840221Skato rm -f *.o *.so *.ko *.s eddep errs genassym gensetdefs kernel linterrs \ 12926058Skato makelinks param.c setdefs.h symbols.exclude symbols.sort tags \ 13037582Skato vers.c vnode_if.c vnode_if.h ${CLEAN} 13116359Sasami 13216359Sasami#lint: /tmp param.c 13337582Skato# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \ 13424112Skato# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 13516359Sasami# grep -v 'struct/union .* never defined' | \ 13616359Sasami# grep -v 'possible pointer alignment problem' 13716359Sasami 13837582Skatosymbols.exclude: 13916359Sasami echo "gcc2_compiled." >symbols.exclude 14016359Sasami echo "___gnu_compiled_c" >>symbols.exclude 14116359Sasami 14216359Sasamisymbols.sort: ${I386}/i386/symbols.raw 14316359Sasami grep -v '^#' ${I386}/i386/symbols.raw \ 14416359Sasami | sed 's/^ //' | sort -u > symbols.sort 14516359Sasami 14624112Skatolocore.o: ${I386}/i386/locore.s assym.s 14716359Sasami ${NORMAL_S} 14816359Sasami 14939972Skato.if ${KERNFORMAT} == elf 15039972Skato# This is a hack. BFD "optimizes" away dynamic mode if there are no 15139972Skato# dynamic references. We could probably do a '-Bforcedynamic' mode like 15239972Skato# in the a.out ld. For now, this works. 15339972Skatohack.so: Makefile 15439972Skato touch hack.c 15539972Skato ${CC} -elf -shared -nostdlib hack.c -o hack.so 15639972Skato rm -f hack.c 15739972Skato.endif 15839972Skato 15926058Skatosetdef0.o: ${I386}/i386/setdef0.c setdefs.h 16025088Skato ${NORMAL_C} 16125088Skato 16226058Skatosetdef1.o: ${I386}/i386/setdef1.c setdefs.h 16325088Skato ${NORMAL_C} 16425088Skato 16526058Skatosetdefs.h: gensetdefs ${OBJS} 16626058Skato ./gensetdefs ${OBJS} >setdefs.h 16726058Skato 16826058Skatogensetdefs: gensetdefs.o 16939567Skato ${CC} ${GEN_CFLAGS} gensetdefs.o -o ${.TARGET} 17026058Skato 17126058Skatogensetdefs.o: ${I386}/i386/gensetdefs.c 17239567Skato ${CC} -c ${GEN_CFLAGS} ${I386}/i386/gensetdefs.c 17326058Skato 17416359Sasami# this rule stops ./assym.s in .depend from causing problems 17516359Sasami./assym.s: assym.s 17616359Sasami 17716359Sasamiassym.s: genassym 17816359Sasami ./genassym >assym.s 17916359Sasami 18037582Skatogenassym.o: ${I386}/i386/genassym.c 18116359Sasami rm -f ./machine ; ln -s ${I386}/include ./machine 18239567Skato ${CC} -c ${GEN_CFLAGS} ${I386}/i386/genassym.c 18316359Sasami 18416359Sasamigenassym: genassym.o 18539204Skato ${CC} ${GEN_CFLAGS} genassym.o -o ${.TARGET} 18616359Sasami 18739567Skato${SYSTEM_OBJS} genassym.o gensetdefs.o vers.o: opt_global.h 18825256Skato 18916359Sasami# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical. 19016359Sasamidepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 19116359Sasami rm -f .newdep 19239567Skato mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES} 19339567Skato mkdep -a -f .newdep ${GEN_CFLAGS} ${GEN_CFILES} 19439567Skato env MKDEP_CPP="${CC} -E" \ 19539567Skato mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES} 19616359Sasami rm -f .depend 19716359Sasami mv -f .newdep .depend 19816359Sasami 19932938Skatocleandepend: 20032938Skato rm -f .depend 20132938Skato 20216359Sasamilinks: 20316359Sasami egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \ 20416359Sasami sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 20516359Sasami echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 20616359Sasami sort -u | comm -23 - dontlink | \ 20716359Sasami sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 20816359Sasami sh makelinks && rm -f dontlink 20916359Sasami 21016359Sasamitags: 21116359Sasami @echo "see $S/kern/Makefile for tags" 21216359Sasami 21316359Sasamiinstall: 21416359Sasami @if [ ! -f kernel ] ; then \ 21516359Sasami echo "You must first build your kernel before trying to install." ; \ 21616359Sasami exit 1 ; \ 21716359Sasami fi 21832938Skato.if exists(${DESTDIR}/kernel) 21932938Skato chflags noschg ${DESTDIR}/kernel 22032938Skato mv ${DESTDIR}/kernel ${DESTDIR}/kernel.old 22132938Skato.endif 22231890Skato PATH=$${PATH}:/sbin:/usr/sbin; \ 22332938Skato if [ `sysctl -n kern.bootfile` = ${DESTDIR}/kernel ] ; then \ 22432938Skato sysctl -w kern.bootfile=${DESTDIR}/kernel.old ; \ 22530933Skato if [ -f /var/db/kvm_kernel.db ] ; then \ 22630933Skato mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \ 22730933Skato fi \ 22816359Sasami fi 22935261Skato install -c -m 555 -o root -g wheel -fschg kernel ${DESTDIR}/ 23016359Sasami 23137582Skatoconfig.o: 23237582Skato ${NORMAL_C} 23316359Sasami 23437582Skatoioconf.o: 23537582Skato ${NORMAL_C} 23637582Skato 23716359Sasamiparam.c: $S/conf/param.c 23816359Sasami -rm -f param.c 23916359Sasami cp $S/conf/param.c . 24016359Sasami 24137582Skatoparam.o: 24237582Skato ${NORMAL_C} 24316359Sasami 24437582Skatovers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} 24516359Sasami sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 24616359Sasami 24737582Skato# XXX strictly, everything depends on Makefile because changes to ${PROF} 24837582Skato# only appear there, but we don't handle that. 24937582Skatovers.o: 25037582Skato ${NORMAL_C} 25137152Skato 25237582Skato.ORDER: vnode_if.c vnode_if.h 25337582Skatovnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 25416359Sasami sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 25516359Sasami 25637582Skatovnode_if.o: 25737582Skato ${NORMAL_C} 25837582Skato 25938607Skato.if exists($S/../share/mk) 26038607Skato.include "$S/../share/mk/bsd.kern.mk" 26138607Skato.else 26219122Sasami.include <bsd.kern.mk> 26338607Skato.endif 26419122Sasami 26516359Sasami%RULES 26616359Sasami 26716359Sasami# DO NOT DELETE THIS LINE -- make depend uses it 268