Makefile.pc98 revision 38607
1# Makefile for FreeBSD(98) after: 2# 3# Makefile.i386 -- with config changes. 4# Copyright 1990 W. Jolitz 5# from: @(#)Makefile.i386 7.1 5/10/91 6# $Id: Makefile.pc98,v 1.34 1998/07/12 14:30:54 kato Exp $ 7# 8# Makefile for FreeBSD 9# 10# This makefile is constructed from a machine description: 11# config machineid 12# Most changes should be made in the machine description 13# /sys/i386/conf/``machineid'' 14# after which you should do 15# config machineid 16# Generic makefile changes should be made in 17# /sys/i386/conf/Makefile.i386 18# after which config should be rerun for all machines. 19# 20 21# Which version of config(8) is required. 22%VERSREQ= 300005 23 24BINFORMAT?= aout 25#BINFORMAT?= aoutkld 26#BINFORMAT?= elf 27 28#STD8X16FONT?= iso 29 30.if exists(./@/.) 31S= ./@ 32.else 33S= ../.. 34.endif 35PC98= ${S}/pc98 36I386= ${S}/i386 37 38COPTFLAGS?=-O 39INCLUDES= -nostdinc -I- -I. -I$S 40# This hack is to allow kernel compiles to succeed on machines w/out srcdist 41.if exists($S/../include) 42INCLUDES+= -I$S/../include 43.else 44INCLUDES+= -I/usr/include 45.endif 46COPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h 47CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 48LOAD_ADDRESS?= F0100000 49DEFINED_PROF= ${PROF} 50.if defined(PROF) 51CFLAGS+= -malign-functions=4 52.if ${PROFLEVEL} >= 2 53IDENT+= -DGPROF4 -DGUPROF 54PROF+= -mprofiler-epilogue 55.endif 56.endif 57 58NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $< 59NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 60# XXX LOCORE means "don't declare C stuff" not "for locore.s". 61NORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 62DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $< 63DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} $< 64DRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $< 65PROFILE_C= ${CC} -c ${CFLAGS} $< 66 67# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally 68# omitted from SYSTEM_CFILES. They depend on setdefs.h, a header which 69# is generated from all of ${OBJS}. We don't want to have to compile 70# everything just to do a make depend. 71SYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c 72SYSTEM_SFILES= ${I386}/i386/locore.s 73SYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} 74.if ${CFLAGS:M-g} == "" 75SYMORDER_EXCLUDE=-x symbols.exclude 76.endif 77SYSTEM_LD_HEAD= @echo loading ${.TARGET}; rm -f ${.TARGET} 78.if ${BINFORMAT} == aout 79SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 80SYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 81SYSTEM_LD_TAIL= @echo rearranging symbols; \ 82 symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 83 size ${.TARGET} ; chmod 755 ${.TARGET} 84.endif 85.if ${BINFORMAT} == aoutkld 86SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o 87SYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 88SYSTEM_LD_TAIL= @echo rearranging symbols; \ 89 symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \ 90 size ${.TARGET} ; chmod 755 ${.TARGET} 91.endif 92.if ${BINFORMAT} == elf 93SYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \ 94 setdef1.o 95SYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \ 96 -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 97SYSTEM_LD_TAIL= @size ${.TARGET} ; chmod 755 ${.TARGET} 98.endif 99 100%BEFORE_DEPEND 101 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} \ 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: 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 ${.TARGET} 145 146gensetdefs.o: ${I386}/i386/gensetdefs.c 147 ${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c 148 149# this rule stops ./assym.s in .depend from causing problems 150./assym.s: assym.s 151 152assym.s: genassym 153 ./genassym >assym.s 154 155genassym.o: ${I386}/i386/genassym.c 156 rm -f ./machine ; ln -s ${I386}/include ./machine 157 ${CC} -c ${CFLAGS} -UKERNEL ${I386}/i386/genassym.c 158 159genassym: genassym.o 160 ${CC} ${CFLAGS} genassym.o -o ${.TARGET} 161 162${SYSTEM_OBJS}: opt_global.h 163 164# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical. 165depend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} 166 rm -f .newdep 167 mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES} 168 mkdep -a -f .newdep ${COPTS} -UKERNEL ${I386}/i386/genassym.c 169 MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \ 170 mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES} 171 rm -f .depend 172 mv -f .newdep .depend 173 174cleandepend: 175 rm -f .depend 176 177links: 178 egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \ 179 sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink 180 echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ 181 sort -u | comm -23 - dontlink | \ 182 sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks 183 sh makelinks && rm -f dontlink 184 185tags: 186 @echo "see $S/kern/Makefile for tags" 187 188install: 189 @if [ ! -f kernel ] ; then \ 190 echo "You must first build your kernel before trying to install." ; \ 191 exit 1 ; \ 192 fi 193.if exists(${DESTDIR}/kernel) 194 chflags noschg ${DESTDIR}/kernel 195 mv ${DESTDIR}/kernel ${DESTDIR}/kernel.old 196.endif 197 PATH=$${PATH}:/sbin:/usr/sbin; \ 198 if [ `sysctl -n kern.bootfile` = ${DESTDIR}/kernel ] ; then \ 199 sysctl -w kern.bootfile=${DESTDIR}/kernel.old ; \ 200 if [ -f /var/db/kvm_kernel.db ] ; then \ 201 mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \ 202 fi \ 203 fi 204 install -c -m 555 -o root -g wheel -fschg kernel ${DESTDIR}/ 205 206config.o: 207 ${NORMAL_C} 208 209ioconf.o: 210 ${NORMAL_C} 211 212param.c: $S/conf/param.c 213 -rm -f param.c 214 cp $S/conf/param.c . 215 216param.o: 217 ${NORMAL_C} 218 219vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} 220 sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT} 221 222# XXX strictly, everything depends on Makefile because changes to ${PROF} 223# only appear there, but we don't handle that. 224vers.o: 225 ${NORMAL_C} 226 227.ORDER: vnode_if.c vnode_if.h 228vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src 229 sh $S/kern/vnode_if.sh $S/kern/vnode_if.src 230 231vnode_if.o: 232 ${NORMAL_C} 233 234.if exists($S/../share/mk) 235.include "$S/../share/mk/bsd.kern.mk" 236.else 237.include <bsd.kern.mk> 238.endif 239 240%RULES 241 242# DO NOT DELETE THIS LINE -- make depend uses it 243