Makefile.pc98 revision 30665
1180740Sdes# Makefile for FreeBSD(98) after: 2180740Sdes# 3180740Sdes# Makefile.i386 -- with config changes. 4180740Sdes# Copyright 1990 W. Jolitz 5180740Sdes# from: @(#)Makefile.i386 7.1 5/10/91 6180740Sdes# $Id: Makefile.pc98,v 1.21 1997/10/12 12:00:23 kato Exp $ 7180740Sdes# 8180740Sdes# Makefile for FreeBSD 9180740Sdes# 10180740Sdes# This makefile is constructed from a machine description: 11180740Sdes# config machineid 12180740Sdes# Most changes should be made in the machine description 13180740Sdes# /sys/i386/conf/``machineid'' 14180740Sdes# after which you should do 15180740Sdes# config machineid 16180740Sdes# Generic makefile changes should be made in 17180740Sdes# /sys/i386/conf/Makefile.i386 18180740Sdes# after which config should be rerun for all machines. 19180740Sdes# 20180740Sdes 21180740Sdes# Which version of config(8) is required. 22180740Sdes%VERSREQ= 300002 23180740Sdes 24180740SdesBINFORMAT?= aout 25180740Sdes#BINFORMAT?= aoutkld 26180740Sdes#BINFORMAT?= elf 27180740Sdes 28180740Sdes#STD8X16FONT?= iso 29180740Sdes 30180740Sdes.if exists(./@/.) 31180740SdesS= ./@ 32180740Sdes.else 33180740SdesS= ../.. 34180740Sdes.endif 35180740SdesPC98= ${S}/pc98 36180740SdesI386= ${S}/i386 37180740Sdes 38180740SdesCOPTFLAGS?=-O 39180740SdesINCLUDES= -nostdinc -I- -I. -I$S 40180740Sdes# This hack is to allow kernel compiles to succeed on machines w/out srcdist 41180740Sdes.if exists($S/../include) 42180740SdesINCLUDES+= -I$S/../include 43180740Sdes.else 44180740SdesINCLUDES+= -I/usr/include 45180740Sdes.endif 46180740SdesCOPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 47180740SdesCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 48180740SdesLOAD_ADDRESS?= F0100000 49180740SdesDEFINED_PROF= ${PROF} 50180740Sdes.if defined(PROF) 51180740SdesCFLAGS+= -malign-functions=4 52180740Sdes.if ${PROFLEVEL} >= 2 53180740SdesIDENT+= -DGPROF4 -DGUPROF 54180740SdesPROF+= -mprofiler-epilogue 55180740Sdes.endif 56180740Sdes.endif 57180740Sdes 58180740SdesNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 59180740SdesNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 60180740Sdes# XXX LOCORE means "don't declare C stuff" not "for locore.s". 61180740SdesNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 62180740SdesDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 63180740SdesDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $< 64180740SdesDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 65180740SdesPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $< 66180740Sdes 67180740Sdes# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally 68180740Sdes# omitted from SYSTEM_CFILES. They depend on setdefs.h, a header which 69180740Sdes# is generated from all of ${OBJS}. We don't want to have to compile 70180740Sdes# everything just to do a make depend. 71180740SdesSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 72180740SdesSYSTEM_SFILES= ${I386}/i386/locore.s 73180740SdesSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 74180740Sdes.if ${CFLAGS:M-g} == "" 75180740SdesSYMORDER_EXCLUDE=-x symbols.exclude 76180740Sdes.endif 77180740SdesSYSTEM_LD_HEAD= @echo loading $@; rm -f $@ 78180740Sdes.if ${BINFORMAT} == aout 79180740SdesSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 80180740SdesSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o 81180740SdesSYSTEM_LD_TAIL= @echo rearranging symbols; \ 82180740Sdes symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \ 83180740Sdes size $@; chmod 755 $@ 84180740Sdes.endif 85180740Sdes.if ${BINFORMAT} == aoutkld 86180740SdesSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 87180740SdesSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o 88180740SdesSYSTEM_LD_TAIL= @echo rearranging symbols; \ 89180740Sdes symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \ 90180740Sdes size $@; chmod 755 $@ 91180740Sdes.endif 92180740Sdes.if ${BINFORMAT} == elf 93180740SdesSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 94180740Sdes setdef1.o 95180740SdesSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \ 96180740Sdes -o $@ -X ${SYSTEM_OBJS} vers.o 97180740SdesSYSTEM_LD_TAIL= @size $@; chmod 755 $@ 98180740Sdes.endif 99180740Sdes 100180740Sdes%BEFORE_DEPEND 101180740Sdes 102180740Sdes%OBJS 103180740Sdes 104180740Sdes%CFILES 105180740Sdes 106180740Sdes%SFILES 107180740Sdes 108180740Sdes%LOAD 109180740Sdes 110180740Sdes%CLEAN 111180740Sdes 112180740Sdesclean: 113180740Sdes rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \ 114180740Sdes makelinks param.c setdefs.h symbols.exclude symbols.sort tags \ 115180740Sdes vers.c vnode_if.c vnode_if.h ${CLEAN} 116180740Sdes 117180740Sdes#lint: /tmp param.c 118180740Sdes# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \ 119180740Sdes# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \ 120180740Sdes# grep -v 'struct/union .* never defined' | \ 121180740Sdes# grep -v 'possible pointer alignment problem' 122180740Sdes 123180740Sdessymbols.exclude: Makefile 124180740Sdes echo "gcc2_compiled." >symbols.exclude 125180740Sdes echo "___gnu_compiled_c" >>symbols.exclude 126180740Sdes 127180740Sdessymbols.sort: ${I386}/i386/symbols.raw 128180740Sdes grep -v '^#' ${I386}/i386/symbols.raw \ 129180740Sdes | sed 's/^ //' | sort -u > symbols.sort 130180740Sdes 131180740Sdeslocore.o: ${I386}/i386/locore.s assym.s 132180740Sdes ${NORMAL_S} 133180740Sdes 134180740Sdessetdef0.o: ${I386}/i386/setdef0.c setdefs.h 135180740Sdes ${NORMAL_C} 136180740Sdes 137180740Sdessetdef1.o: ${I386}/i386/setdef1.c setdefs.h 138180740Sdes ${NORMAL_C} 139180740Sdes 140180740Sdessetdefs.h: gensetdefs ${OBJS} 141180740Sdes ./gensetdefs ${OBJS} >setdefs.h 142180740Sdes 143180740Sdesgensetdefs: gensetdefs.o 144180740Sdes ${CC} ${CFLAGS} gensetdefs.o -o $@ 145180740Sdes 146180740Sdesgensetdefs.o: ${I386}/i386/gensetdefs.c 147180740Sdes ${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c 148180740Sdes 149180740Sdes# everything potentially depends on the Makefile since everything potentially 150180740Sdes# depends on the options. Some things are more dependent on the Makefile for 151180740Sdes# historical reasons. 152180740Sdesmachdep.o: Makefile 153180740Sdes 154180740Sdes# the following is necessary because autoconf.o depends on #if GENERIC 155180740Sdesautoconf.o: Makefile 156180740Sdes 157180740Sdes# XXX - may no longer be needed 158180740Sdeslocore.o: Makefile 159180740Sdes 160180740Sdes# depends on KDB (cons.o also depends on GENERIC) 161180740Sdestrap.o cons.o: Makefile 162180740Sdes 163180740Sdes# this rule stops ./assym.s in .depend from causing problems 164180740Sdes./assym.s: assym.s 165180740Sdes 166180740Sdesassym.s: genassym 167180740Sdes ./genassym >assym.s 168180740Sdes 169180740Sdes# Some of the defines that genassym outputs may well depend on the 170180740Sdes# value of kernel options. 171180740Sdesgenassym.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 if [ `/usr/sbin/sysctl -n kern.bootfile` = /kernel ] ; then \ 209 /usr/sbin/sysctl -w kern.bootfile=/kernel.old ; \ 210 mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \ 211 fi 212 install -c -m 555 -o root -g wheel -fschg kernel / 213 214ioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \ 215 ${I386}/isa/isa_device.h ${PC98}/pc98/pc98.h ${I386}/isa/icu.h 216 ${CC} -c ${CFLAGS} ioconf.c 217 218param.c: $S/conf/param.c 219 -rm -f param.c 220 cp $S/conf/param.c . 221 222param.o: param.c Makefile 223 ${CC} -c ${CFLAGS} ${PARAM} param.c 224 225vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP} 226 sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 227 ${CC} ${CFLAGS} -c vers.c 228 229vnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src 230 sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 231vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 232 sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 233 234.include <bsd.kern.mk> 235 236%RULES 237 238# DO NOT DELETE THIS LINE -- make depend uses it 239