Makefile.pc98 revision 31890
1112918Sjeff# Makefile for FreeBSD(98) after: 2153496Sdavidxu# 3112918Sjeff# Makefile.i386 -- with config changes. 4112918Sjeff# Copyright 1990 W. Jolitz 5112918Sjeff# from: @(#)Makefile.i386 7.1 5/10/91 6112918Sjeff# $Id: Makefile.pc98,v 1.24 1997/11/06 09:51:34 kato Exp $ 7112918Sjeff# 8112918Sjeff# Makefile for FreeBSD 9153496Sdavidxu# 10153496Sdavidxu# This makefile is constructed from a machine description: 11112918Sjeff# config machineid 12112918Sjeff# Most changes should be made in the machine description 13112918Sjeff# /sys/i386/conf/``machineid'' 14112918Sjeff# after which you should do 15153496Sdavidxu# config machineid 16153496Sdavidxu# Generic makefile changes should be made in 17153496Sdavidxu# /sys/i386/conf/Makefile.i386 18153496Sdavidxu# after which config should be rerun for all machines. 19153496Sdavidxu# 20153496Sdavidxu 21153496Sdavidxu# Which version of config(8) is required. 22153496Sdavidxu%VERSREQ= 300003 23153496Sdavidxu 24153496SdavidxuBINFORMAT?= aout 25112918Sjeff#BINFORMAT?= aoutkld 26112918Sjeff#BINFORMAT?= elf 27153496Sdavidxu 28112918Sjeff#STD8X16FONT?= iso 29144518Sdavidxu 30144518Sdavidxu.if exists(./@/.) 31112918SjeffS= ./@ 32144518Sdavidxu.else 33144518SdavidxuS= ../.. 34112918Sjeff.endif 35112918SjeffPC98= ${S}/pc98 36112918SjeffI386= ${S}/i386 37112918Sjeff 38144518SdavidxuCOPTFLAGS?=-O 39144518SdavidxuINCLUDES= -nostdinc -I- -I. -I$S 40144518Sdavidxu# This hack is to allow kernel compiles to succeed on machines w/out srcdist 41179417Sdavidxu.if exists($S/../include) 42144518SdavidxuINCLUDES+= -I$S/../include 43144518Sdavidxu.else 44144518SdavidxuINCLUDES+= -I/usr/include 45144518Sdavidxu.endif 46144518SdavidxuCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 47144518SdavidxuCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 48144518SdavidxuLOAD_ADDRESS?= F0100000 49144518SdavidxuDEFINED_PROF= ${PROF} 50144518Sdavidxu.if defined(PROF) 51144518SdavidxuCFLAGS+= -malign-functions=4 52144518Sdavidxu.if ${PROFLEVEL} >= 2 53144518SdavidxuIDENT+= -DGPROF4 -DGUPROF 54144518SdavidxuPROF+= -mprofiler-epilogue 55179417Sdavidxu.endif 56179417Sdavidxu.endif 57179417Sdavidxu 58179417SdavidxuNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 59144518SdavidxuNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 60144518Sdavidxu# XXX LOCORE means "don't declare C stuff" not "for locore.s". 61112918SjeffNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 62144518SdavidxuDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 63112918SjeffDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 64172695SdavidxuDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 65179417SdavidxuPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $< 66144518Sdavidxu 67220888Srstone# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally 68220888Srstone# omitted from SYSTEM_CFILES. They depend on setdefs.h, a header which 69179417Sdavidxu# is generated from all of ${OBJS}. We don't want to have to compile 70179417Sdavidxu# everything just to do a make depend. 71287556SkibSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 72287556SkibSYSTEM_SFILES= ${I386}/i386/locore.s 73179417SdavidxuSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 74287556Skib.if ${CFLAGS:M-g} == "" 75179417SdavidxuSYMORDER_EXCLUDE=-x symbols.exclude 76287556Skib.endif 77179417SdavidxuSYSTEM_LD_HEAD= @echo loading $@; rm -f $@ 78179417Sdavidxu.if ${BINFORMAT} == aout 79287556SkibSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 80179417SdavidxuSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o 81179417SdavidxuSYSTEM_LD_TAIL= @echo rearranging symbols; \ 82179417Sdavidxu symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \ 83179417Sdavidxu size $@; chmod 755 $@ 84179417Sdavidxu.endif 85179417Sdavidxu.if ${BINFORMAT} == aoutkld 86179417SdavidxuSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 87179417SdavidxuSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o 88179417SdavidxuSYSTEM_LD_TAIL= @echo rearranging symbols; \ 89179417Sdavidxu symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \ 90179417Sdavidxu size $@; chmod 755 $@ 91179417Sdavidxu.endif 92144518Sdavidxu.if ${BINFORMAT} == elf 93179417SdavidxuSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 94179417Sdavidxu setdef1.o 95112918SjeffSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \ 96112918Sjeff -o $@ -X ${SYSTEM_OBJS} vers.o 97144518SdavidxuSYSTEM_LD_TAIL= @size $@; chmod 755 $@ 98155739Sdavidxu.endif 99155739Sdavidxu 100155739Sdavidxu%BEFORE_DEPEND 101155739Sdavidxu 102%OBJS 103 104%CFILES 105 106%SFILES 107 108%LOAD 109 110%CLEAN 111 112clean: 113 rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \ 114 makelinks param.c setdefs.h symbols.exclude symbols.sort tags \ 115 vers.c vnode_if.c vnode_if.h ${CLEAN} 116 117#lint: /tmp param.c 118# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \ 119# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 120# grep -v 'struct/union .* never defined' | \ 121# grep -v 'possible pointer alignment problem' 122 123symbols.exclude: Makefile 124 echo "gcc2_compiled." >symbols.exclude 125 echo "___gnu_compiled_c" >>symbols.exclude 126 127symbols.sort: ${I386}/i386/symbols.raw 128 grep -v '^#' ${I386}/i386/symbols.raw \ 129 | sed 's/^ //' | sort -u > symbols.sort 130 131locore.o: ${I386}/i386/locore.s assym.s 132 ${NORMAL_S} 133 134setdef0.o: ${I386}/i386/setdef0.c setdefs.h 135 ${NORMAL_C} 136 137setdef1.o: ${I386}/i386/setdef1.c setdefs.h 138 ${NORMAL_C} 139 140setdefs.h: gensetdefs ${OBJS} 141 ./gensetdefs ${OBJS} >setdefs.h 142 143gensetdefs: gensetdefs.o 144 ${CC} ${CFLAGS} gensetdefs.o -o $@ 145 146gensetdefs.o: ${I386}/i386/gensetdefs.c 147 ${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c 148 149# everything potentially depends on the Makefile since everything potentially 150# depends on the options. Some things are more dependent on the Makefile for 151# historical reasons. 152machdep.o: Makefile 153 154# the following is necessary because autoconf.o depends on #if GENERIC 155autoconf.o: Makefile 156 157# XXX - may no longer be needed 158locore.o: Makefile 159 160# depends on KDB (cons.o also depends on GENERIC) 161trap.o cons.o: Makefile 162 163# this rule stops ./assym.s in .depend from causing problems 164./assym.s: assym.s 165 166assym.s: genassym 167 ./genassym >assym.s 168 169# Some of the defines that genassym outputs may well depend on the 170# value of kernel options. 171genassym.o: ${I386}/i386/genassym.c Makefile opt_global.h opt_vm86.h 172 rm -f ./machine ; ln -s ${I386}/include ./machine 173 ${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 174 175genassym: genassym.o 176 ${CC} ${CFLAGS} ${PARAM} genassym.o -o $@ 177 178${OBJS}: opt_global.h 179 180# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical. 181depend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 182 rm -f .newdep 183 mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES} 184 mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c 185 MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \ 186 mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES} 187 rm -f .depend 188 mv -f .newdep .depend 189 190links: 191 egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \ 192 sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 193 echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 194 sort -u | comm -23 - dontlink | \ 195 sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 196 sh makelinks && rm -f dontlink 197 198tags: 199 @echo "see $S/kern/Makefile for tags" 200 201install: 202 @if [ ! -f kernel ] ; then \ 203 echo "You must first build your kernel before trying to install." ; \ 204 exit 1 ; \ 205 fi 206 chflags noschg /kernel 207 mv /kernel /kernel.old 208 PATH=$${PATH}:/sbin:/usr/sbin; \ 209 if [ `sysctl -n kern.bootfile` = /kernel ] ; then \ 210 sysctl -w kern.bootfile=/kernel.old ; \ 211 if [ -f /var/db/kvm_kernel.db ] ; then \ 212 mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \ 213 fi \ 214 fi 215 install -c -m 555 -o root -g wheel -fschg kernel / 216 217ioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \ 218 ${I386}/isa/isa_device.h ${PC98}/pc98/pc98.h ${I386}/isa/icu.h 219 ${CC} -c ${CFLAGS} ioconf.c 220 221param.c: $S/conf/param.c 222 -rm -f param.c 223 cp $S/conf/param.c . 224 225param.o: param.c Makefile 226 ${CC} -c ${CFLAGS} ${PARAM} param.c 227 228vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP} 229 sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 230 ${CC} ${CFLAGS} -c vers.c 231 232vnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src 233 sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 234vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 235 sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 236 237.include <bsd.kern.mk> 238 239%RULES 240 241# DO NOT DELETE THIS LINE -- make depend uses it 242