143b74d61SJordan K. Hubbard# Makefile.i386 -- with config changes. 25b81b6b3SRodney W. Grimes# Copyright 1990 W. Jolitz 32d717e4aSRodney W. Grimes# from: @(#)Makefile.i386 7.1 5/10/91 41fcddf2eSEivind Eklund# $Id: Makefile.i386,v 1.114 1998/06/17 15:16:52 bde Exp $ 52d717e4aSRodney W. Grimes# 62d717e4aSRodney W. Grimes# Makefile for FreeBSD 75b81b6b3SRodney W. Grimes# 85b81b6b3SRodney W. Grimes# This makefile is constructed from a machine description: 95b81b6b3SRodney W. Grimes# config machineid 105b81b6b3SRodney W. Grimes# Most changes should be made in the machine description 115b81b6b3SRodney W. Grimes# /sys/i386/conf/``machineid'' 125b81b6b3SRodney W. Grimes# after which you should do 135b81b6b3SRodney W. Grimes# config machineid 145b81b6b3SRodney W. Grimes# Generic makefile changes should be made in 155b81b6b3SRodney W. Grimes# /sys/i386/conf/Makefile.i386 165b81b6b3SRodney W. Grimes# after which config should be rerun for all machines. 175b81b6b3SRodney W. Grimes# 189081eec1SJohn Polstra 1948b29459SPeter Wemm# Which version of config(8) is required. 20afafca8bSBruce Evans%VERSREQ= 300004 2148b29459SPeter Wemm 229081eec1SJohn PolstraBINFORMAT?= aout 23cea6c86cSDoug Rabson#BINFORMAT?= aoutkld 249081eec1SJohn Polstra#BINFORMAT?= elf 255b81b6b3SRodney W. Grimes 2638d8a113SPoul-Henning KampSTD8X16FONT?= iso 2738d8a113SPoul-Henning Kamp 28f540b106SGarrett Wollman.if exists(./@/.) 29f540b106SGarrett WollmanS= ./@ 30f540b106SGarrett Wollman.else 315b81b6b3SRodney W. GrimesS= ../.. 32f540b106SGarrett Wollman.endif 33f540b106SGarrett WollmanI386= ${S}/i386 345b81b6b3SRodney W. Grimes 35150f9c68SDavid GreenmanCOPTFLAGS?=-O 36e2e0d560SBruce EvansINCLUDES= -nostdinc -I- -I. -I$S 37070e3ec1SNate Williams# This hack is to allow kernel compiles to succeed on machines w/out srcdist 38070e3ec1SNate Williams.if exists($S/../include) 39070e3ec1SNate WilliamsINCLUDES+= -I$S/../include 40070e3ec1SNate Williams.else 41070e3ec1SNate WilliamsINCLUDES+= -I/usr/include 42070e3ec1SNate Williams.endif 43d061973cSPeter WemmCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 4470176e63SGarrett WollmanCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 457f8cb368SDavid GreenmanLOAD_ADDRESS?= F0100000 461013a13dSBruce EvansDEFINED_PROF= ${PROF} 47c08d58eaSBruce Evans.if defined(PROF) 481013a13dSBruce EvansCFLAGS+= -malign-functions=4 49c08d58eaSBruce Evans.if ${PROFLEVEL} >= 2 50c08d58eaSBruce EvansIDENT+= -DGPROF4 -DGUPROF 51c08d58eaSBruce EvansPROF+= -mprofiler-epilogue 52c08d58eaSBruce Evans.endif 53c08d58eaSBruce Evans.endif 545b81b6b3SRodney W. Grimes 555b81b6b3SRodney W. GrimesNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 565b81b6b3SRodney W. GrimesNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 570611064bSBruce Evans# XXX LOCORE means "don't declare C stuff" not "for locore.s". 58fd54183bSPeter WemmNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 595b81b6b3SRodney W. GrimesDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 605b81b6b3SRodney W. GrimesDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 61fd54183bSPeter WemmDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 6240974c74SBruce EvansPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $< 630611064bSBruce Evans 6461b00529SJohn Polstra# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally 6561b00529SJohn Polstra# omitted from SYSTEM_CFILES. They depend on setdefs.h, a header which 6661b00529SJohn Polstra# is generated from all of ${OBJS}. We don't want to have to compile 6761b00529SJohn Polstra# everything just to do a make depend. 6861b00529SJohn PolstraSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 690611064bSBruce EvansSYSTEM_SFILES= ${I386}/i386/locore.s 7062394a63SBruce EvansSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 71b5d89ca8SBruce Evans.if ${CFLAGS:M-g} == "" 72b5d89ca8SBruce EvansSYMORDER_EXCLUDE=-x symbols.exclude 73b5d89ca8SBruce Evans.endif 743f6c4fc3SWarner LoshSYSTEM_LD_HEAD= @echo loading ${.TARGET}; rm -f ${.TARGET} 759081eec1SJohn Polstra.if ${BINFORMAT} == aout 7661b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 773f6c4fc3SWarner LoshSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 78b5d89ca8SBruce EvansSYSTEM_LD_TAIL= @echo rearranging symbols; \ 793f6c4fc3SWarner Losh symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 803f6c4fc3SWarner Losh size ${.TARGET} ; chmod 755 ${.TARGET} 819081eec1SJohn Polstra.endif 82cea6c86cSDoug Rabson.if ${BINFORMAT} == aoutkld 8361b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 843f6c4fc3SWarner LoshSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 85cea6c86cSDoug RabsonSYSTEM_LD_TAIL= @echo rearranging symbols; \ 863f6c4fc3SWarner Losh symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 873f6c4fc3SWarner Losh size ${.TARGET} ; chmod 755 ${.TARGET} 88cea6c86cSDoug Rabson.endif 899081eec1SJohn Polstra.if ${BINFORMAT} == elf 9061b00529SJohn PolstraSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 9161b00529SJohn Polstra setdef1.o 9261b00529SJohn PolstraSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \ 933f6c4fc3SWarner Losh -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 943f6c4fc3SWarner LoshSYSTEM_LD_TAIL= @size ${.TARGET} ; chmod 755 ${.TARGET} 959081eec1SJohn Polstra.endif 965b81b6b3SRodney W. Grimes 9758e4304eSJustin T. Gibbs%BEFORE_DEPEND 9858e4304eSJustin T. Gibbs 995b81b6b3SRodney W. Grimes%OBJS 1005b81b6b3SRodney W. Grimes 1015b81b6b3SRodney W. Grimes%CFILES 1025b81b6b3SRodney W. Grimes 103c91d636eSDavid Greenman%SFILES 104c91d636eSDavid Greenman 1055b81b6b3SRodney W. Grimes%LOAD 1065b81b6b3SRodney W. Grimes 1070bf316f5SJustin T. Gibbs%CLEAN 1080bf316f5SJustin T. Gibbs 1095b81b6b3SRodney W. Grimesclean: 11061b00529SJohn Polstra rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \ 11161b00529SJohn Polstra makelinks param.c setdefs.h symbols.exclude symbols.sort tags \ 1121fcddf2eSEivind Eklund vers.c vnode_if.c vnode_if.h .vnode_if_created ${CLEAN} 1135b81b6b3SRodney W. Grimes 11402425318SGarrett Wollman#lint: /tmp param.c 11540974c74SBruce Evans# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \ 11602425318SGarrett Wollman# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 11702425318SGarrett Wollman# grep -v 'struct/union .* never defined' | \ 11802425318SGarrett Wollman# grep -v 'possible pointer alignment problem' 1195b81b6b3SRodney W. Grimes 120b5d89ca8SBruce Evanssymbols.exclude: Makefile 121b5d89ca8SBruce Evans echo "gcc2_compiled." >symbols.exclude 122b5d89ca8SBruce Evans echo "___gnu_compiled_c" >>symbols.exclude 123b5d89ca8SBruce Evans 1245b81b6b3SRodney W. Grimessymbols.sort: ${I386}/i386/symbols.raw 1255b81b6b3SRodney W. Grimes grep -v '^#' ${I386}/i386/symbols.raw \ 1265b81b6b3SRodney W. Grimes | sed 's/^ //' | sort -u > symbols.sort 1275b81b6b3SRodney W. Grimes 12886a8648eSBruce Evanslocore.o: ${I386}/i386/locore.s assym.s 1290611064bSBruce Evans ${NORMAL_S} 1305b81b6b3SRodney W. Grimes 13161b00529SJohn Polstrasetdef0.o: ${I386}/i386/setdef0.c setdefs.h 1329081eec1SJohn Polstra ${NORMAL_C} 1339081eec1SJohn Polstra 13461b00529SJohn Polstrasetdef1.o: ${I386}/i386/setdef1.c setdefs.h 1359081eec1SJohn Polstra ${NORMAL_C} 1369081eec1SJohn Polstra 13761b00529SJohn Polstrasetdefs.h: gensetdefs ${OBJS} 13861b00529SJohn Polstra ./gensetdefs ${OBJS} >setdefs.h 13961b00529SJohn Polstra 14061b00529SJohn Polstragensetdefs: gensetdefs.o 1413f6c4fc3SWarner Losh ${CC} ${CFLAGS} gensetdefs.o -o ${.TARGET} 14261b00529SJohn Polstra 14361b00529SJohn Polstragensetdefs.o: ${I386}/i386/gensetdefs.c 14461b00529SJohn Polstra ${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c 14561b00529SJohn Polstra 1460611064bSBruce Evans# everything potentially depends on the Makefile since everything potentially 1470611064bSBruce Evans# depends on the options. Some things are more dependent on the Makefile for 1480611064bSBruce Evans# historical reasons. 1490611064bSBruce Evansmachdep.o: Makefile 1502d717e4aSRodney W. Grimes 1515b81b6b3SRodney W. Grimes# the following is necessary because autoconf.o depends on #if GENERIC 1525b81b6b3SRodney W. Grimesautoconf.o: Makefile 1535b81b6b3SRodney W. Grimes 154b6794438SGarrett Wollman# XXX - may no longer be needed 155b6794438SGarrett Wollmanlocore.o: Makefile 1565b81b6b3SRodney W. Grimes 1575b81b6b3SRodney W. Grimes# depends on KDB (cons.o also depends on GENERIC) 1585b81b6b3SRodney W. Grimestrap.o cons.o: Makefile 1595b81b6b3SRodney W. Grimes 1600611064bSBruce Evans# this rule stops ./assym.s in .depend from causing problems 1610611064bSBruce Evans./assym.s: assym.s 1620611064bSBruce Evans 16385c856e7SNate Williamsassym.s: genassym 16440974c74SBruce Evans ./genassym >assym.s 1655b81b6b3SRodney W. Grimes 16602425318SGarrett Wollman# Some of the defines that genassym outputs may well depend on the 16702425318SGarrett Wollman# value of kernel options. 16898823b23SPeter Wemmgenassym.o: ${I386}/i386/genassym.c Makefile opt_global.h opt_vm86.h 169d0c8f505SBruce Evans ${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 17040974c74SBruce Evans 17140974c74SBruce Evansgenassym: genassym.o 1723f6c4fc3SWarner Losh ${CC} ${CFLAGS} ${PARAM} genassym.o -o ${.TARGET} 1735b81b6b3SRodney W. Grimes 174d061973cSPeter Wemm${OBJS}: opt_global.h 175d061973cSPeter Wemm 1760611064bSBruce Evans# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical. 17758e4304eSJustin T. Gibbsdepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 1786386a7e0SPeter Wemm rm -f .newdep 1796386a7e0SPeter Wemm mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES} 1806386a7e0SPeter Wemm mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 1819081eec1SJohn Polstra MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \ 1826386a7e0SPeter Wemm mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES} 1836386a7e0SPeter Wemm rm -f .depend 1849fb93307SWolfram Schneider mv -f .newdep .depend 1855b81b6b3SRodney W. Grimes 186c6b60f62SEivind Eklundcleandepend: 187c6b60f62SEivind Eklund rm -f .depend 188c6b60f62SEivind Eklund 1895b81b6b3SRodney W. Grimeslinks: 1901d86aba6SGarrett Wollman egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \ 1915b81b6b3SRodney W. Grimes sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 1921d86aba6SGarrett Wollman echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 1935b81b6b3SRodney W. Grimes sort -u | comm -23 - dontlink | \ 1945b81b6b3SRodney W. Grimes sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 1955b81b6b3SRodney W. Grimes sh makelinks && rm -f dontlink 1965b81b6b3SRodney W. Grimes 1975b81b6b3SRodney W. Grimestags: 1985b81b6b3SRodney W. Grimes @echo "see $S/kern/Makefile for tags" 1995b81b6b3SRodney W. Grimes 2001c393ef6SJoerg Wunschinstall: 2011c393ef6SJoerg Wunsch @if [ ! -f kernel ] ; then \ 2021c393ef6SJoerg Wunsch echo "You must first build your kernel before trying to install." ; \ 2031c393ef6SJoerg Wunsch exit 1 ; \ 2041c393ef6SJoerg Wunsch fi 205c6b60f62SEivind Eklund.if exists(${DESTDIR}/kernel) 206c6b60f62SEivind Eklund chflags noschg ${DESTDIR}/kernel 207c6b60f62SEivind Eklund mv ${DESTDIR}/kernel ${DESTDIR}/kernel.old 208c6b60f62SEivind Eklund.endif 2098cd077a7SBruce Evans PATH=$${PATH}:/sbin:/usr/sbin; \ 210c6b60f62SEivind Eklund if [ `sysctl -n kern.bootfile` = ${DESTDIR}/kernel ] ; then \ 211c6b60f62SEivind Eklund sysctl -w kern.bootfile=${DESTDIR}/kernel.old ; \ 21203486e0aSGuido van Rooij if [ -f /var/db/kvm_kernel.db ] ; then \ 2130f7183adSPeter Wemm mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \ 21403486e0aSGuido van Rooij fi \ 2153b3f55c7SPoul-Henning Kamp fi 2168b78465cSDima Ruban install -c -m 555 -o root -g wheel -fschg kernel ${DESTDIR}/ 2176bf5b247SGarrett Wollman 218e911eafcSPoul-Henning Kampioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \ 2195b81b6b3SRodney W. Grimes ${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h 2205b81b6b3SRodney W. Grimes ${CC} -c ${CFLAGS} ioconf.c 2215b81b6b3SRodney W. Grimes 2222d717e4aSRodney W. Grimesparam.c: $S/conf/param.c 2235b81b6b3SRodney W. Grimes -rm -f param.c 2245b81b6b3SRodney W. Grimes cp $S/conf/param.c . 2255b81b6b3SRodney W. Grimes 2265b81b6b3SRodney W. Grimesparam.o: param.c Makefile 2275b81b6b3SRodney W. Grimes ${CC} -c ${CFLAGS} ${PARAM} param.c 2285b81b6b3SRodney W. Grimes 2293933c622SEivind Eklundvers.o: $S/sys/param.h ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP} 2305b81b6b3SRodney W. Grimes sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 2315b81b6b3SRodney W. Grimes ${CC} ${CFLAGS} -c vers.c 2325b81b6b3SRodney W. Grimes 2331fcddf2eSEivind Eklundvnode_if.c vnode_if.h: .vnode_if_created 2341fcddf2eSEivind Eklund touch ${.TARGET} 2351fcddf2eSEivind Eklund 2361fcddf2eSEivind Eklund.vnode_if_created: $S/kern/vnode_if.sh $S/kern/vnode_if.src 23726f9a767SRodney W. Grimes sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 2381fcddf2eSEivind Eklund touch ${.TARGET} 23926f9a767SRodney W. Grimes 2409e72552fSBruce Evans.include <bsd.kern.mk> 2419e72552fSBruce Evans 2425b81b6b3SRodney W. Grimes%RULES 2435b81b6b3SRodney W. Grimes 2445b81b6b3SRodney W. Grimes# DO NOT DELETE THIS LINE -- make depend uses it 245