Makefile.i386 revision 36283
1139823Simp# Makefile.i386 -- with config changes. 21541Srgrimes# Copyright 1990 W. Jolitz 31541Srgrimes# from: @(#)Makefile.i386 7.1 5/10/91 41541Srgrimes# $Id: Makefile.i386,v 1.112 1998/05/20 20:54:04 eivind Exp $ 51541Srgrimes# 61541Srgrimes# Makefile for FreeBSD 71541Srgrimes# 81541Srgrimes# This makefile is constructed from a machine description: 91541Srgrimes# config machineid 101541Srgrimes# Most changes should be made in the machine description 111541Srgrimes# /sys/i386/conf/``machineid'' 121541Srgrimes# after which you should do 131541Srgrimes# config machineid 141541Srgrimes# Generic makefile changes should be made in 151541Srgrimes# /sys/i386/conf/Makefile.i386 161541Srgrimes# after which config should be rerun for all machines. 171541Srgrimes# 181541Srgrimes 191541Srgrimes# Which version of config(8) is required. 201541Srgrimes%VERSREQ= 300003 211541Srgrimes 221541SrgrimesBINFORMAT?= aout 231541Srgrimes#BINFORMAT?= aoutkld 241541Srgrimes#BINFORMAT?= elf 251541Srgrimes 261541SrgrimesSTD8X16FONT?= iso 271541Srgrimes 281541Srgrimes.if exists(./@/.) 291541SrgrimesS= ./@ 301541Srgrimes.else 311541SrgrimesS= ../.. 321541Srgrimes.endif 331541SrgrimesI386= ${S}/i386 341541Srgrimes 351541SrgrimesCOPTFLAGS?=-O 361541SrgrimesINCLUDES= -nostdinc -I- -I. -I$S 371541Srgrimes# This hack is to allow kernel compiles to succeed on machines w/out srcdist 38172467Ssilby.if exists($S/../include) 39172467SsilbyINCLUDES+= -I$S/../include 40172467Ssilby.else 4132350SeivindINCLUDES+= -I/usr/include 4232350Seivind.endif 431541SrgrimesCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 4412693SphkCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 4544078SdfrLOAD_ADDRESS?= F0100000 4612693SphkDEFINED_PROF= ${PROF} 471541Srgrimes.if defined(PROF) 4812693SphkCFLAGS+= -malign-functions=4 491541Srgrimes.if ${PROFLEVEL} >= 2 50183014SjulianIDENT+= -DGPROF4 -DGUPROF 5118892SbdePROF+= -mprofiler-epilogue 521541Srgrimes.endif 531541Srgrimes.endif 541541Srgrimes 551541SrgrimesNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 5644165SjulianNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 578426Swollman# XXX LOCORE means "don't declare C stuff" not "for locore.s". 5858313SlileNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 5971963SjulianDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 60194739SbzDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 61196019SrwatsonDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 621541SrgrimesPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $< 631541Srgrimes 641541Srgrimes# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally 65186119Sqingli# omitted from SYSTEM_CFILES. They depend on setdefs.h, a header which 661541Srgrimes# is generated from all of ${OBJS}. We don't want to have to compile 67211193Swill# everything just to do a make depend. 68211193SwillSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 69211193SwillSYSTEM_SFILES= ${I386}/i386/locore.s 701541SrgrimesSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 7184931Sfjoe.if ${CFLAGS:M-g} == "" 7244627SjulianSYMORDER_EXCLUDE=-x symbols.exclude 7344627Sjulian.endif 74163606SrwatsonSYSTEM_LD_HEAD= @echo loading ${.TARGET}; rm -f ${.TARGET} 75163606Srwatson.if ${BINFORMAT} == aout 761541SrgrimesSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 771541SrgrimesSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 781541SrgrimesSYSTEM_LD_TAIL= @echo rearranging symbols; \ 7944078Sdfr symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 8012942Swollman size ${.TARGET} ; chmod 755 ${.TARGET} 81196797Sgnn.endif 821541Srgrimes.if ${BINFORMAT} == aoutkld 8312693SphkSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 84215701SdimSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 85195699SrwatsonSYSTEM_LD_TAIL= @echo rearranging symbols; \ 86215701Sdim symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 87207369Sbz size ${.TARGET} ; chmod 755 ${.TARGET} 88207369Sbz.endif 89215701Sdim.if ${BINFORMAT} == elf 90215701SdimSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 91198111Sqingli setdef1.o 92215207SgnnSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \ 931541Srgrimes -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 94215701SdimSYSTEM_LD_TAIL= @size ${.TARGET} ; chmod 755 ${.TARGET} 95215207Sgnn.endif 96195727Srwatson 97198111Sqingli%BEFORE_DEPEND 98195727Srwatson 99195727Srwatson%OBJS 100196797Sgnn 101215207Sgnn%CFILES 10212693Sphk 103195699Srwatson%SFILES 104195699Srwatson 105195699Srwatson%LOAD 106195699Srwatson 107195699Srwatson%CLEAN 108183550Szec 109195699Srwatsonclean: 110195699Srwatson rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \ 111183550Szec makelinks param.c setdefs.h symbols.exclude symbols.sort tags \ 112195699Srwatson vers.c vnode_if.c vnode_if.h ${CLEAN} 113195699Srwatson 114183550Szec#lint: /tmp param.c 115215207Sgnn# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \ 116215207Sgnn# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 117215207Sgnn# grep -v 'struct/union .* never defined' | \ 118196797Sgnn# grep -v 'possible pointer alignment problem' 119196797Sgnn 120196797Sgnnsymbols.exclude: Makefile 121215207Sgnn echo "gcc2_compiled." >symbols.exclude 122215207Sgnn echo "___gnu_compiled_c" >>symbols.exclude 123215207Sgnn 12412693Sphksymbols.sort: ${I386}/i386/symbols.raw 12592723Salfred grep -v '^#' ${I386}/i386/symbols.raw \ 126186119Sqingli | sed 's/^ //' | sort -u > symbols.sort 12792723Salfred 128111888Sjlemonlocore.o: ${I386}/i386/locore.s assym.s 12992723Salfred ${NORMAL_S} 13032350Seivind 13192723Salfredsetdef0.o: ${I386}/i386/setdef0.c setdefs.h 13232350Seivind ${NORMAL_C} 13312693Sphk 134193219Srwatsonsetdef1.o: ${I386}/i386/setdef1.c setdefs.h 135193219Srwatson ${NORMAL_C} 136193219Srwatson 137193219Srwatsonsetdefs.h: gensetdefs ${OBJS} 138193219Srwatson ./gensetdefs ${OBJS} >setdefs.h 139193219Srwatson 140193219Srwatsongensetdefs: gensetdefs.o 141186119Sqingli ${CC} ${CFLAGS} gensetdefs.o -o ${.TARGET} 142186119Sqingli 143186119Sqingligensetdefs.o: ${I386}/i386/gensetdefs.c 1441541Srgrimes ${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c 145186119Sqingli 146186119Sqingli# everything potentially depends on the Makefile since everything potentially 1471541Srgrimes# depends on the options. Some things are more dependent on the Makefile for 148186119Sqingli# historical reasons. 149186119Sqinglimachdep.o: Makefile 1501541Srgrimes 151186119Sqingli# the following is necessary because autoconf.o depends on #if GENERIC 1521541Srgrimesautoconf.o: Makefile 153186119Sqingli 154186119Sqingli# XXX - may no longer be needed 155186119Sqinglilocore.o: Makefile 156186119Sqingli 157186119Sqingli# depends on KDB (cons.o also depends on GENERIC) 158186119Sqinglitrap.o cons.o: Makefile 159186119Sqingli 160186119Sqingli# this rule stops ./assym.s in .depend from causing problems 1611541Srgrimes./assym.s: assym.s 162186119Sqingli 1631541Srgrimesassym.s: genassym 1641541Srgrimes ./genassym >assym.s 165186119Sqingli 1661541Srgrimes# Some of the defines that genassym outputs may well depend on the 1675196Swollman# value of kernel options. 168186119Sqingligenassym.o: ${I386}/i386/genassym.c Makefile opt_global.h opt_vm86.h 1691541Srgrimes ${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 170186119Sqingli 171210703Sbzgenassym: genassym.o 172215207Sgnn ${CC} ${CFLAGS} ${PARAM} genassym.o -o ${.TARGET} 1731541Srgrimes 174210703Sbz${OBJS}: opt_global.h 175210703Sbz 176186119Sqingli# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical. 177196797Sgnndepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 178186119Sqingli rm -f .newdep 179186119Sqingli mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES} 180201544Sqingli mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 181201544Sqingli MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \ 182201544Sqingli mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES} 183201544Sqingli rm -f .depend 184201544Sqingli mv -f .newdep .depend 185206481Sbz 186206481Sbzcleandepend: 187215207Sgnn rm -f .depend 188215207Sgnn 189201544Sqinglilinks: 190214675Sjhb egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \ 191198418Sqingli sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 192201544Sqingli echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 193201544Sqingli sort -u | comm -23 - dontlink | \ 194201544Sqingli sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 195201544Sqingli sh makelinks && rm -f dontlink 196201544Sqingli 197214675Sjhbtags: 198214675Sjhb @echo "see $S/kern/Makefile for tags" 199201544Sqingli 2001541Srgrimesinstall: 201186119Sqingli @if [ ! -f kernel ] ; then \ 202196797Sgnn echo "You must first build your kernel before trying to install." ; \ 2031541Srgrimes exit 1 ; \ 2041541Srgrimes fi 2051541Srgrimes.if exists(${DESTDIR}/kernel) 2061541Srgrimes chflags noschg ${DESTDIR}/kernel 2071541Srgrimes mv ${DESTDIR}/kernel ${DESTDIR}/kernel.old 2081541Srgrimes.endif 2091541Srgrimes PATH=$${PATH}:/sbin:/usr/sbin; \ 2101541Srgrimes if [ `sysctl -n kern.bootfile` = ${DESTDIR}/kernel ] ; then \ 211186119Sqingli sysctl -w kern.bootfile=${DESTDIR}/kernel.old ; \ 212186119Sqingli if [ -f /var/db/kvm_kernel.db ] ; then \ 213169454Srwatson mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \ 2141541Srgrimes fi \ 215126936Smdodd fi 216126936Smdodd install -c -m 555 -o root -g wheel -fschg kernel ${DESTDIR}/ 2171541Srgrimes 2181541Srgrimesioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \ 219186119Sqingli ${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h 220186119Sqingli ${CC} -c ${CFLAGS} ioconf.c 221186119Sqingli 222186119Sqingliparam.c: $S/conf/param.c 223186119Sqingli -rm -f param.c 224186119Sqingli cp $S/conf/param.c . 225186119Sqingli 226186119Sqingliparam.o: param.c Makefile 227186119Sqingli ${CC} -c ${CFLAGS} ${PARAM} param.c 228186119Sqingli 229186119Sqinglivers.o: $S/sys/param.h ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP} 230186119Sqingli sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 231186119Sqingli ${CC} ${CFLAGS} -c vers.c 232186119Sqingli 233186119Sqinglivnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src 234186119Sqingli sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 235186119Sqinglivnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 236186119Sqingli sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 237186119Sqingli 238186119Sqingli.include <bsd.kern.mk> 239186119Sqingli 240186119Sqingli%RULES 241186119Sqingli 242111119Simp# DO NOT DELETE THIS LINE -- make depend uses it 2431541Srgrimes