b5d89ca8ad
(Boot with the -D flag if you want symbols.) Make it easier to extend `struct bootinfo' without losing either forwards or backwards compatibility. ddb_aout.c: Get the symbol table from wherever the loader put it. Nuke db_symtab[SYMTAB_SPACE]. boot.c: Enable loading of symbols. Align them on a page boundary. Add printfs about the symbol table sizes. Pass the memory sizes to the kernel. Fix initialization of `unit' (it got moved out of the loop). Fix adding the bss size (it got moved inside an ifdef). Initialize serial port when RB_SERIAL is toggled on. Fix comments. Clean up formatting of recently added code. io.c: Clean up formatting of recently added code. netboot/main.c, machdep.c, wd.c: Change names of bootinfo fields. LINT: Nuke SYMTAB_SPACE. Fix comment about DODUMP. Makefile.i386: Nuke use of dbsym. Exclude gcc symbols from kernel unless compiling with -g. Remove unused macro. Fix comments and formatting. genassym.c: Generate defines for some new bootinfo fields. Change names of old ones. locore.s: Copy only the valid part of the `struct bootinfo' passed by the loader. Reserve space for symbol table, if any. machdep.c: Check the memory sizes passed by the loader, if any. Don't use them yet. bootinfo.h: Add a size field so that we can resolve some mismatches between the loader bootinfo and the kernel boot info. The version number is not so good for this because of historical botches and because it's harder to maintain. Add memory size and symbol table fields. Change the names of everything. Hacks to save a few bytes: asm.S, boot.c, boot2.S: Replace `ouraddr' by `(BOOTSEG << 4)'. boot.c: Don't statically initialize `loadflags' to 0. Disable the "REDUNDANT" code that skips the BIOS variables. Eliminate `total'. Combine some more printfs. boot.h, disk.c, io.c, table.c: Move all statically initialzed data to table.c. io.c: Don't put the A20 gate bits in a variable.
199 lines
5.6 KiB
Makefile
199 lines
5.6 KiB
Makefile
# Copyright 1990 W. Jolitz
|
|
# from: @(#)Makefile.i386 7.1 5/10/91
|
|
# $Id: Makefile.i386,v 1.52 1994/12/31 19:27:28 gibbs 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.: 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
|
|
# -DFOO almost all options
|
|
#
|
|
CC?= cc
|
|
CPP?= cpp
|
|
LD?= /usr/bin/ld
|
|
|
|
.if exists(./@/.)
|
|
S= ./@
|
|
.else
|
|
S= ../..
|
|
.endif
|
|
I386= ${S}/i386
|
|
|
|
CWARNFLAGS?=-W -Wreturn-type -Wcomment -Wredundant-decls
|
|
#
|
|
# The following flags are next up for working on:
|
|
# -Wimplicit -Wnested-externs
|
|
#
|
|
# When working on removing warnings from code, the `-Werror' flag should be
|
|
# of material assistance.
|
|
#
|
|
COPTFLAGS?=-O
|
|
INCLUDES= -I. -I$S -I$S/sys
|
|
COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Di386 -DLOAD_ADDRESS=0x${LOAD_ADDRESS}
|
|
ASFLAGS=
|
|
CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
|
|
LOAD_ADDRESS?= F0100000
|
|
|
|
NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
|
|
NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
|
|
# XXX errors leak out of all the pipes. Should use cc *.S.
|
|
# XXX LOCORE means "don't declare C stuff" not "for locore.s".
|
|
NORMAL_S= ${CPP} -DLOCORE ${COPTS} $< | ${AS} ${ASFLAGS} -o $*.o
|
|
DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
|
|
DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
|
|
PROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $<
|
|
|
|
SFILES= ${I386}/i386/exception.s ${I386}/i386/microtime.s \
|
|
${I386}/i386/support.s ${I386}/i386/swtch.s ${I386}/apm/apm_setup.s
|
|
SYSTEM_CFILES= ioconf.c param.c vnode_if.c
|
|
SYSTEM_SFILES= ${I386}/i386/locore.s
|
|
SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o
|
|
SYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS} libkern.a
|
|
SYSTEM_LD_HEAD= @echo loading $@; rm -f $@
|
|
SYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o libkern.a
|
|
.if ${CFLAGS:M-g} == ""
|
|
SYMORDER_EXCLUDE=-x symbols.exclude
|
|
.endif
|
|
SYSTEM_LD_TAIL= @echo rearranging symbols; \
|
|
symorder ${SYMORDER_EXCLUDE} symbols.sort $@; \
|
|
size $@; chmod 755 $@
|
|
|
|
%BEFORE_DEPEND
|
|
|
|
%OBJS
|
|
|
|
%CFILES
|
|
|
|
%LOAD
|
|
|
|
# This is slightly different from before in that if you define PROF
|
|
# to anything, it will assume profiling. Don't do "PROF=" to turn
|
|
# profiling off!
|
|
.if exists($S/libkern/obj)
|
|
LIBKERNP=$S/libkern/obj
|
|
.else
|
|
LIBKERNP=$S/libkern
|
|
.endif
|
|
|
|
.if defined(PROF)
|
|
LIBKERN=${LIBKERNP}/libkern_p.a
|
|
.else
|
|
LIBKERN=${LIBKERNP}/libkern.a
|
|
.endif
|
|
|
|
libkern.a: ${LIBKERN}
|
|
@rm -f libkern.a
|
|
ln -s ${LIBKERN} libkern.a
|
|
|
|
${LIBKERN}:
|
|
@(cd $S/libkern; make)
|
|
|
|
clean:
|
|
rm -f eddep kernel tags *.o *.s errs linterrs makelinks genassym \
|
|
symbols.exclude symbols.sort
|
|
|
|
#lint: /tmp param.c
|
|
# @lint -hbxn -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.exclude: Makefile
|
|
echo "gcc2_compiled." >symbols.exclude
|
|
echo "___gnu_compiled_c" >>symbols.exclude
|
|
|
|
symbols.sort: ${I386}/i386/symbols.raw
|
|
grep -v '^#' ${I386}/i386/symbols.raw \
|
|
| sed 's/^ //' | sort -u > symbols.sort
|
|
|
|
locore.o: ${I386}/i386/locore.s assym.s
|
|
${NORMAL_S}
|
|
|
|
# everything potentially depends on the Makefile since everything potentially
|
|
# depends on the options. Some things are more dependent on the Makefile for
|
|
# historical reasons.
|
|
machdep.o: Makefile
|
|
|
|
# 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
|
|
|
|
# this rule stops ./assym.s in .depend from causing problems
|
|
./assym.s: assym.s
|
|
|
|
assym.s: genassym
|
|
./genassym >assym.s
|
|
|
|
# Some of the defines that genassym outputs may well depend on the
|
|
# value of kernel options.
|
|
genassym.o: ${I386}/i386/genassym.c Makefile
|
|
${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
|
|
|
|
genassym: genassym.o
|
|
${CC} -static ${CFLAGS} ${PARAM} genassym.o -o $@
|
|
|
|
# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical.
|
|
depend: assym.s param.c vnode_if.h ${BEFORE_DEPEND}
|
|
mkdep ${COPTS} ${CFILES} ${SYSTEM_CFILES}
|
|
mkdep -a ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
|
|
MKDEP_CPP=${CPP} ; export MKDEP_CPP ; \
|
|
mkdep -a -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES}
|
|
|
|
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"
|
|
|
|
install:
|
|
chflags noschg /kernel
|
|
mv /kernel /kernel.old
|
|
install -c -m 555 -o root -g wheel -fschg kernel /
|
|
|
|
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
|
|
|
|
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
|
|
|
|
vnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
|
|
sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
|
|
vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
|
|
sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
|
|
|
|
%RULES
|
|
|
|
# DO NOT DELETE THIS LINE -- make depend uses it
|