9a91485c70
line of Makefile.i386. Fixes the extra rule that gmake complains about for machdep.o. This fix is from Joans 0lsson. Rework the depends and rules for assym.s and genassym so that we now use the .depend rule for genassym.o such that if you change any header files that are included by genassym.c the right things happen. This is probably what has caused more bad kernel builds than any other thing in the Makefile.i386!
146 lines
4.2 KiB
Makefile
146 lines
4.2 KiB
Makefile
# Copyright 1990 W. Jolitz
|
|
# from: @(#)Makefile.i386 7.1 5/10/91
|
|
# $Id: Makefile.i386,v 1.7 1993/10/08 16:52:44 rgrimes Exp $
|
|
#
|
|
# Makefile for FreeBSD
|
|
#
|
|
# This makefile is constructed from a machine description:
|
|
# config machineid
|
|
# Most changes should be made in the machine description
|
|
# /sys/i386/conf/``machineid''
|
|
# after which you should do
|
|
# config machineid
|
|
# Generic makefile changes should be made in
|
|
# /sys/i386/conf/Makefile.i386
|
|
# after which config should be rerun for all machines.
|
|
#
|
|
# N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE INVISIBLE TO MAKEFILE
|
|
# IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
|
|
#
|
|
# -DTRACE compile in kernel tracing hooks
|
|
# -DQUOTA compile in file system quotas
|
|
#
|
|
TOUCH= touch -f -c
|
|
LD= /usr/bin/ld
|
|
CC= cc
|
|
CPP= cpp
|
|
STRIP= strip
|
|
DBSYM= /usr/sbin/dbsym
|
|
|
|
S= ../..
|
|
I386= ../../i386
|
|
|
|
INCLUDES= -I. -I$S -I$S/sys
|
|
COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Di386 -DNPX
|
|
ASFLAGS=
|
|
CFLAGS= -O ${DEBUG} ${COPTS}
|
|
LOAD_ADDRESS?= FE000000
|
|
|
|
NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
|
|
NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
|
|
NORMAL_S= ${CPP} -I. -DLOCORE ${COPTS} $< | ${AS} ${ASFLAGS} -o $*.o
|
|
DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
|
|
DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
|
|
SYSTEM_OBJS=locore.o ${OBJS} param.o ioconf.o conf.o machdep.o
|
|
SYSTEM_DEP=Makefile symbols.sort ${SYSTEM_OBJS}
|
|
SYSTEM_LD_HEAD= @echo loading $@; rm -f $@
|
|
SYSTEM_LD= @${LD} -z -T ${LOAD_ADDRESS} -o $@ -X vers.o ${SYSTEM_OBJS}
|
|
SYSTEM_LD_TAIL= @echo rearranging symbols; symorder symbols.sort $@; \
|
|
${DBSYM} -fT ${LOAD_ADDRESS} $@; ${STRIP} -x $@; size $@; chmod 755 $@
|
|
|
|
# (XXX) ok, this is weird. but we've got a working ed, and a broken ex, and
|
|
# the script is identical for either... -- cgd
|
|
#
|
|
GPROF.EX= /usr/src/lib/csu.i386/gprof.ex
|
|
PROFILE_C= ${CC} -S -c ${CFLAGS} $< ; \
|
|
ed - $*.s < ${GPROF.EX} ; \
|
|
${AS} -o $@ $*.s ; \
|
|
rm -f $*.s
|
|
|
|
%OBJS
|
|
|
|
%CFILES
|
|
|
|
%LOAD
|
|
|
|
clean:
|
|
rm -f eddep *386bsd tags *.o locore.i [a-uw-z]*.s \
|
|
errs linterrs makelinks
|
|
|
|
lint: /tmp param.c
|
|
@lint -hbxn -I. -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \
|
|
${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
|
|
grep -v 'struct/union .* never defined' | \
|
|
grep -v 'possible pointer alignment problem'
|
|
|
|
symbols.sort: ${I386}/i386/symbols.raw
|
|
grep -v '^#' ${I386}/i386/symbols.raw \
|
|
| sed 's/^ //' | sort -u > symbols.sort
|
|
|
|
locore.o: assym.s ${I386}/i386/locore.s machine/trap.h machine/psl.h \
|
|
machine/pte.h ${I386}/isa/vector.s ${I386}/isa/icu.s \
|
|
$S/sys/errno.h machine/specialreg.h ${I386}/isa/debug.h \
|
|
${I386}/isa/icu.h ${I386}/isa/isa.h vector.h $S/net/netisr.h
|
|
${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/locore.s | \
|
|
${AS} ${ASFLAGS} -o locore.o
|
|
|
|
machdep.o: ${I386}/i386/machdep.c Makefile
|
|
${CC} -c ${CFLAGS} -DLOAD_ADDRESS=0x${LOAD_ADDRESS} ${PROF} $<
|
|
|
|
# the following is necessary because autoconf.o depends on #if GENERIC
|
|
autoconf.o: Makefile
|
|
|
|
# depend on network configuration
|
|
af.o uipc_proto.o locore.o: Makefile
|
|
|
|
# depend on maxusers
|
|
assym.s: Makefile
|
|
|
|
# depends on KDB (cons.o also depends on GENERIC)
|
|
trap.o cons.o: Makefile
|
|
|
|
assym.s: genassym.o
|
|
./genassym.o >assym.s
|
|
|
|
genassym.o:
|
|
${CC} ${INCLUDES} -DKERNEL ${IDENT} ${PARAM} \
|
|
${I386}/i386/genassym.c -o genassym.o
|
|
|
|
depend: assym.s param.c
|
|
sh /usr/bin/mkdep -DLOAD_ADDRESS=0x${LOAD_ADDRESS} ${COPTS} ${CFILES} ioconf.c param.c ${I386}/i386/conf.c
|
|
sh /usr/bin/mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${I386}/i386/genassym.c
|
|
|
|
links:
|
|
egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
|
|
sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
|
|
echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
|
|
sort -u | comm -23 - dontlink | \
|
|
sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
|
|
sh makelinks && rm -f dontlink
|
|
|
|
tags:
|
|
@echo "see $S/kern/Makefile for tags"
|
|
|
|
ioconf.o: ioconf.c $S/sys/param.h machine/pte.h $S/sys/buf.h \
|
|
${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h
|
|
${CC} -c ${CFLAGS} ioconf.c
|
|
|
|
conf.o: ${I386}/i386/conf.c
|
|
${CC} -traditional -c ${CFLAGS} ${I386}/i386/conf.c
|
|
|
|
param.c: $S/conf/param.c
|
|
-rm -f param.c
|
|
cp $S/conf/param.c .
|
|
|
|
param.o: param.c Makefile
|
|
${CC} -c ${CFLAGS} ${PARAM} param.c
|
|
|
|
vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
|
|
sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
|
|
${CC} ${CFLAGS} -c vers.c
|
|
|
|
%RULES
|
|
|
|
# DO NOT DELETE THIS LINE -- make depend uses it
|
|
|