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 438d8a113SPoul-Henning Kamp# $Id: Makefile.i386,v 1.100 1997/06/29 16:39:09 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 199081eec1SJohn PolstraBINFORMAT?= aout 20cea6c86cSDoug Rabson#BINFORMAT?= aoutkld 219081eec1SJohn Polstra#BINFORMAT?= elf 225b81b6b3SRodney W. Grimes 2338d8a113SPoul-Henning KampSTD8X16FONT?= iso 2438d8a113SPoul-Henning Kamp 25f540b106SGarrett Wollman.if exists(./@/.) 26f540b106SGarrett WollmanS= ./@ 27f540b106SGarrett Wollman.else 285b81b6b3SRodney W. GrimesS= ../.. 29f540b106SGarrett Wollman.endif 30f540b106SGarrett WollmanI386= ${S}/i386 315b81b6b3SRodney W. Grimes 32150f9c68SDavid GreenmanCOPTFLAGS?=-O 33e2e0d560SBruce EvansINCLUDES= -nostdinc -I- -I. -I$S 34070e3ec1SNate Williams# This hack is to allow kernel compiles to succeed on machines w/out srcdist 35070e3ec1SNate Williams.if exists($S/../include) 36070e3ec1SNate WilliamsINCLUDES+= -I$S/../include 37070e3ec1SNate Williams.else 38070e3ec1SNate WilliamsINCLUDES+= -I/usr/include 39070e3ec1SNate Williams.endif 40d061973cSPeter WemmCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 4170176e63SGarrett WollmanCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 427f8cb368SDavid GreenmanLOAD_ADDRESS?= F0100000 431013a13dSBruce EvansDEFINED_PROF= ${PROF} 44c08d58eaSBruce Evans.if defined(PROF) 451013a13dSBruce EvansCFLAGS+= -malign-functions=4 46c08d58eaSBruce Evans.if ${PROFLEVEL} >= 2 47c08d58eaSBruce EvansIDENT+= -DGPROF4 -DGUPROF 48c08d58eaSBruce EvansPROF+= -mprofiler-epilogue 49c08d58eaSBruce Evans.endif 50c08d58eaSBruce Evans.endif 515b81b6b3SRodney W. Grimes 525b81b6b3SRodney W. GrimesNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 535b81b6b3SRodney W. GrimesNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 540611064bSBruce Evans# XXX LOCORE means "don't declare C stuff" not "for locore.s". 55fd54183bSPeter WemmNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 565b81b6b3SRodney W. GrimesDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 575b81b6b3SRodney W. GrimesDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 58fd54183bSPeter WemmDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 5940974c74SBruce EvansPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $< 600611064bSBruce Evans 6161b00529SJohn Polstra# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally 6261b00529SJohn Polstra# omitted from SYSTEM_CFILES. They depend on setdefs.h, a header which 6361b00529SJohn Polstra# is generated from all of ${OBJS}. We don't want to have to compile 6461b00529SJohn Polstra# everything just to do a make depend. 6561b00529SJohn PolstraSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 660611064bSBruce EvansSYSTEM_SFILES= ${I386}/i386/locore.s 6762394a63SBruce EvansSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 68b5d89ca8SBruce Evans.if ${CFLAGS:M-g} == "" 69b5d89ca8SBruce EvansSYMORDER_EXCLUDE=-x symbols.exclude 70b5d89ca8SBruce Evans.endif 719081eec1SJohn PolstraSYSTEM_LD_HEAD= @echo loading $@; rm -f $@ 729081eec1SJohn Polstra.if ${BINFORMAT} == aout 7361b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 749081eec1SJohn PolstraSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o 75b5d89ca8SBruce EvansSYSTEM_LD_TAIL= @echo rearranging symbols; \ 7650bd4cabSPoul-Henning Kamp symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \ 77b5d89ca8SBruce Evans size $@; chmod 755 $@ 789081eec1SJohn Polstra.endif 79cea6c86cSDoug Rabson.if ${BINFORMAT} == aoutkld 8061b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 81cea6c86cSDoug RabsonSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o 82cea6c86cSDoug RabsonSYSTEM_LD_TAIL= @echo rearranging symbols; \ 83cea6c86cSDoug Rabson symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \ 84cea6c86cSDoug Rabson size $@; chmod 755 $@ 85cea6c86cSDoug Rabson.endif 869081eec1SJohn Polstra.if ${BINFORMAT} == elf 8761b00529SJohn PolstraSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 8861b00529SJohn Polstra setdef1.o 8961b00529SJohn PolstraSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \ 9061b00529SJohn Polstra -o $@ -X ${SYSTEM_OBJS} vers.o 919081eec1SJohn PolstraSYSTEM_LD_TAIL= @size $@; chmod 755 $@ 929081eec1SJohn Polstra.endif 935b81b6b3SRodney W. Grimes 9458e4304eSJustin T. Gibbs%BEFORE_DEPEND 9558e4304eSJustin T. Gibbs 965b81b6b3SRodney W. Grimes%OBJS 975b81b6b3SRodney W. Grimes 985b81b6b3SRodney W. Grimes%CFILES 995b81b6b3SRodney W. Grimes 100c91d636eSDavid Greenman%SFILES 101c91d636eSDavid Greenman 1025b81b6b3SRodney W. Grimes%LOAD 1035b81b6b3SRodney W. Grimes 1040bf316f5SJustin T. Gibbs%CLEAN 1050bf316f5SJustin T. Gibbs 1065b81b6b3SRodney W. Grimesclean: 10761b00529SJohn Polstra rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \ 10861b00529SJohn Polstra makelinks param.c setdefs.h symbols.exclude symbols.sort tags \ 1095542b158SBruce Evans vers.c vnode_if.c vnode_if.h ${CLEAN} 1105b81b6b3SRodney W. Grimes 11102425318SGarrett Wollman#lint: /tmp param.c 11240974c74SBruce Evans# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \ 11302425318SGarrett Wollman# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 11402425318SGarrett Wollman# grep -v 'struct/union .* never defined' | \ 11502425318SGarrett Wollman# grep -v 'possible pointer alignment problem' 1165b81b6b3SRodney W. Grimes 117b5d89ca8SBruce Evanssymbols.exclude: Makefile 118b5d89ca8SBruce Evans echo "gcc2_compiled." >symbols.exclude 119b5d89ca8SBruce Evans echo "___gnu_compiled_c" >>symbols.exclude 120b5d89ca8SBruce Evans 1215b81b6b3SRodney W. Grimessymbols.sort: ${I386}/i386/symbols.raw 1225b81b6b3SRodney W. Grimes grep -v '^#' ${I386}/i386/symbols.raw \ 1235b81b6b3SRodney W. Grimes | sed 's/^ //' | sort -u > symbols.sort 1245b81b6b3SRodney W. Grimes 12586a8648eSBruce Evanslocore.o: ${I386}/i386/locore.s assym.s 1260611064bSBruce Evans ${NORMAL_S} 1275b81b6b3SRodney W. Grimes 12861b00529SJohn Polstrasetdef0.o: ${I386}/i386/setdef0.c setdefs.h 1299081eec1SJohn Polstra ${NORMAL_C} 1309081eec1SJohn Polstra 13161b00529SJohn Polstrasetdef1.o: ${I386}/i386/setdef1.c setdefs.h 1329081eec1SJohn Polstra ${NORMAL_C} 1339081eec1SJohn Polstra 13461b00529SJohn Polstrasetdefs.h: gensetdefs ${OBJS} 13561b00529SJohn Polstra ./gensetdefs ${OBJS} >setdefs.h 13661b00529SJohn Polstra 13761b00529SJohn Polstragensetdefs: gensetdefs.o 13861b00529SJohn Polstra ${CC} ${CFLAGS} gensetdefs.o -o $@ 13961b00529SJohn Polstra 14061b00529SJohn Polstragensetdefs.o: ${I386}/i386/gensetdefs.c 14161b00529SJohn Polstra ${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c 14261b00529SJohn Polstra 1430611064bSBruce Evans# everything potentially depends on the Makefile since everything potentially 1440611064bSBruce Evans# depends on the options. Some things are more dependent on the Makefile for 1450611064bSBruce Evans# historical reasons. 1460611064bSBruce Evansmachdep.o: Makefile 1472d717e4aSRodney W. Grimes 1485b81b6b3SRodney W. Grimes# the following is necessary because autoconf.o depends on #if GENERIC 1495b81b6b3SRodney W. Grimesautoconf.o: Makefile 1505b81b6b3SRodney W. Grimes 151b6794438SGarrett Wollman# XXX - may no longer be needed 152b6794438SGarrett Wollmanlocore.o: Makefile 1535b81b6b3SRodney W. Grimes 1545b81b6b3SRodney W. Grimes# depends on KDB (cons.o also depends on GENERIC) 1555b81b6b3SRodney W. Grimestrap.o cons.o: Makefile 1565b81b6b3SRodney W. Grimes 1570611064bSBruce Evans# this rule stops ./assym.s in .depend from causing problems 1580611064bSBruce Evans./assym.s: assym.s 1590611064bSBruce Evans 16085c856e7SNate Williamsassym.s: genassym 16140974c74SBruce Evans ./genassym >assym.s 1625b81b6b3SRodney W. Grimes 16302425318SGarrett Wollman# Some of the defines that genassym outputs may well depend on the 16402425318SGarrett Wollman# value of kernel options. 165d061973cSPeter Wemmgenassym.o: ${I386}/i386/genassym.c Makefile opt_global.h 166d0c8f505SBruce Evans ${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 16740974c74SBruce Evans 16840974c74SBruce Evansgenassym: genassym.o 169f5227a83SBruce Evans ${CC} ${CFLAGS} ${PARAM} genassym.o -o $@ 1705b81b6b3SRodney W. Grimes 171d061973cSPeter Wemm${OBJS}: opt_global.h 172d061973cSPeter Wemm 1730611064bSBruce Evans# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical. 17458e4304eSJustin T. Gibbsdepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 1756386a7e0SPeter Wemm rm -f .newdep 1766386a7e0SPeter Wemm mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES} 1776386a7e0SPeter Wemm mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 1789081eec1SJohn Polstra MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \ 1796386a7e0SPeter Wemm mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES} 1806386a7e0SPeter Wemm rm -f .depend 1819fb93307SWolfram Schneider mv -f .newdep .depend 1825b81b6b3SRodney W. Grimes 1835b81b6b3SRodney W. Grimeslinks: 1841d86aba6SGarrett Wollman egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \ 1855b81b6b3SRodney W. Grimes sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 1861d86aba6SGarrett Wollman echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 1875b81b6b3SRodney W. Grimes sort -u | comm -23 - dontlink | \ 1885b81b6b3SRodney W. Grimes sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 1895b81b6b3SRodney W. Grimes sh makelinks && rm -f dontlink 1905b81b6b3SRodney W. Grimes 1915b81b6b3SRodney W. Grimestags: 1925b81b6b3SRodney W. Grimes @echo "see $S/kern/Makefile for tags" 1935b81b6b3SRodney W. Grimes 1941c393ef6SJoerg Wunschinstall: 1951c393ef6SJoerg Wunsch @if [ ! -f kernel ] ; then \ 1961c393ef6SJoerg Wunsch echo "You must first build your kernel before trying to install." ; \ 1971c393ef6SJoerg Wunsch exit 1 ; \ 1981c393ef6SJoerg Wunsch fi 19912cada71SJordan K. Hubbard chflags noschg /kernel 2006bf5b247SGarrett Wollman mv /kernel /kernel.old 201d17e5f0bSAndrey A. Chernov if [ `/usr/sbin/sysctl -n kern.bootfile` = /kernel ] ; then \ 202d17e5f0bSAndrey A. Chernov /usr/sbin/sysctl -w kern.bootfile=/kernel.old ; \ 2030f7183adSPeter Wemm mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \ 2043b3f55c7SPoul-Henning Kamp fi 2056bf5b247SGarrett Wollman install -c -m 555 -o root -g wheel -fschg kernel / 2066bf5b247SGarrett Wollman 207e911eafcSPoul-Henning Kampioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \ 2085b81b6b3SRodney W. Grimes ${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h 2095b81b6b3SRodney W. Grimes ${CC} -c ${CFLAGS} ioconf.c 2105b81b6b3SRodney W. Grimes 2112d717e4aSRodney W. Grimesparam.c: $S/conf/param.c 2125b81b6b3SRodney W. Grimes -rm -f param.c 2135b81b6b3SRodney W. Grimes cp $S/conf/param.c . 2145b81b6b3SRodney W. Grimes 2155b81b6b3SRodney W. Grimesparam.o: param.c Makefile 2165b81b6b3SRodney W. Grimes ${CC} -c ${CFLAGS} ${PARAM} param.c 2175b81b6b3SRodney W. Grimes 2182d717e4aSRodney W. Grimesvers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP} 2195b81b6b3SRodney W. Grimes sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 2205b81b6b3SRodney W. Grimes ${CC} ${CFLAGS} -c vers.c 2215b81b6b3SRodney W. Grimes 22226f9a767SRodney W. Grimesvnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src 22326f9a767SRodney W. Grimes sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 22426f9a767SRodney W. Grimesvnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 22526f9a767SRodney W. Grimes sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 22626f9a767SRodney W. Grimes 2279e72552fSBruce Evans.include <bsd.kern.mk> 2289e72552fSBruce Evans 2295b81b6b3SRodney W. Grimes%RULES 2305b81b6b3SRodney W. Grimes 2315b81b6b3SRodney W. Grimes# DO NOT DELETE THIS LINE -- make depend uses it 232