16a6a70817
put vers.o at the end of the loader line. We are simply jumping in the moment into the first location of the text segment in 386bsd. So the linking order is very important :-). With the addition of the const types in newvers.sh we jumped into them. I have experimented with an entry point specification, but was unsuccessfull. Someone else should look at this. devices.i386: files.i386: Added entries for a Sony cdrom driver.
180 lines
5.4 KiB
Makefile
180 lines
5.4 KiB
Makefile
# Copyright 1990 W. Jolitz
|
|
# from: @(#)Makefile.i386 7.1 5/10/91
|
|
# $Id: Makefile.i386,v 1.22 1994/02/17 06:51:15 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
|
|
|
|
CWARNFLAGS=-W -Wreturn-type -Wcomment
|
|
#
|
|
# The following flags are next up for working on:
|
|
# -Wredundant-decls -Wnested-externs
|
|
#
|
|
# When working on removing warnings from code, the `-Werror' flag should be
|
|
# of material assistance.
|
|
#
|
|
COPTFLAGS=-O
|
|
COPTFLAGS+=-D__FreeBSD__
|
|
INCLUDES= -I. -I$S -I$S/sys
|
|
COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Di386 -DNPX
|
|
ASFLAGS=
|
|
CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
|
|
LOAD_ADDRESS?= F0100000
|
|
|
|
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 exception.o swtch.o support.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} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o
|
|
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 genassym ,assym.s stamp-assym
|
|
|
|
#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 \
|
|
machine/asmacros.h
|
|
${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/locore.s | \
|
|
${AS} ${ASFLAGS} -o locore.o
|
|
|
|
exception.o: assym.s ${I386}/i386/exception.s machine/trap.h \
|
|
${I386}/isa/vector.s ${I386}/isa/icu.s \
|
|
$S/sys/errno.h ${I386}/isa/icu.h ${I386}/isa/isa.h vector.h \
|
|
$S/net/netisr.h machine/asmacros.h
|
|
${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/exception.s | \
|
|
${AS} ${ASFLAGS} -o exception.o
|
|
|
|
swtch.o: assym.s ${I386}/i386/swtch.s \
|
|
$S/sys/errno.h ${I386}/isa/debug.h machine/asmacros.h
|
|
${CPP} -I. ${COPTS} ${I386}/i386/swtch.s | \
|
|
${AS} ${ASFLAGS} -o swtch.o
|
|
|
|
support.o: assym.s ${I386}/i386/support.s \
|
|
$S/sys/errno.h machine/asmacros.h
|
|
${CPP} -I. ${COPTS} ${I386}/i386/support.s | \
|
|
${AS} ${ASFLAGS} -o support.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
|
|
|
|
# depends on KDB (cons.o also depends on GENERIC)
|
|
trap.o cons.o: Makefile
|
|
|
|
assym.s: genassym
|
|
./genassym >,assym.s
|
|
if cmp -s assym.s ,assym.s; then \
|
|
rm -f ,assym.s; \
|
|
else \
|
|
rm -f assym.s; \
|
|
mv ,assym.s assym.s; \
|
|
fi
|
|
|
|
# Some of the defines that genassym outputs may well depend on the
|
|
# value of kernel options.
|
|
genassym: Makefile
|
|
${CC} ${INCLUDES} -DKERNEL ${IDENT} ${PARAM} \
|
|
${I386}/i386/genassym.c -static -o genassym
|
|
|
|
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 $S/sys/conf.h
|
|
${CC} -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
|
|
|