freebsd-dev/sys/conf/Makefile.i386

269 lines
7.4 KiB
Makefile
Raw Normal View History

# Makefile.i386 -- with config changes.
1993-06-12 14:58:17 +00:00
# Copyright 1990 W. Jolitz
This Makefile is for FreeBSD, not 4.3 BSD-Reno. Moved $Id$. Added STRIP=, DBSYM=, and LOAD_ADDRESS?= Now use LOAD_ADDRESS for linking kernel and for dbsym, added strip -x to cut kernel size. Added machde.o: dependency, this will be needed in the future, and for now it does not hurt anyone. Cleaned out conf.o: dependency, mkdep does the right things. Same for param.c: This is really a Merge in of NetBSD's Makefile.i386, here is the relevant rlog info: ---------------------------- revision 1.27 date: 1993/08/27 23:58:20; author: brezak; state: Exp; lines: +2 -2 Need LOAD_ADDRESS for depend pass. ---------------------------- revision 1.25 date: 1993/07/19 16:52:16; author: mycroft; state: Exp; lines: +3 -3 Add ${DEBUG} to CFLAGS and -f to dbsym. ---------------------------- revision 1.22 date: 1993/07/18 10:08:22; author: mycroft; state: Exp; lines: +5 -6 Change to work with new config stuff for specifying load address. ---------------------------- revision 1.20 date: 1993/07/18 09:47:40; author: mycroft; state: Exp; lines: +6 -5 Use new -T option to dbsym. ---------------------------- revision 1.17 date: 1993/07/11 08:42:22; author: cgd; state: Exp; lines: +2 -2 don't ignore errors from dbsym... it might say that, e.g. there's not enough symbol space! ---------------------------- revision 1.14 date: 1993/06/06 23:29:03; author: cgd; state: Exp; lines: +2 -2 make conf.o actually depend on conf.c... ---------------------------- revision 1.8 date: 1993/04/29 03:27:39; author: cgd; state: Exp; lines: +5 -10 use ed instead of ex. the script to use is identical, and we might want to switch back to using ex when our ex supports -. ---------------------------- revision 1.5 date: 1993/03/24 18:48:57; author: cgd; state: Exp; lines: +1 -1 now use absolute path for dbsym ----------------------------
1993-09-26 19:44:33 +00:00
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.i386,v 1.134 1999/01/09 21:51:00 jdp Exp $
This Makefile is for FreeBSD, not 4.3 BSD-Reno. Moved $Id$. Added STRIP=, DBSYM=, and LOAD_ADDRESS?= Now use LOAD_ADDRESS for linking kernel and for dbsym, added strip -x to cut kernel size. Added machde.o: dependency, this will be needed in the future, and for now it does not hurt anyone. Cleaned out conf.o: dependency, mkdep does the right things. Same for param.c: This is really a Merge in of NetBSD's Makefile.i386, here is the relevant rlog info: ---------------------------- revision 1.27 date: 1993/08/27 23:58:20; author: brezak; state: Exp; lines: +2 -2 Need LOAD_ADDRESS for depend pass. ---------------------------- revision 1.25 date: 1993/07/19 16:52:16; author: mycroft; state: Exp; lines: +3 -3 Add ${DEBUG} to CFLAGS and -f to dbsym. ---------------------------- revision 1.22 date: 1993/07/18 10:08:22; author: mycroft; state: Exp; lines: +5 -6 Change to work with new config stuff for specifying load address. ---------------------------- revision 1.20 date: 1993/07/18 09:47:40; author: mycroft; state: Exp; lines: +6 -5 Use new -T option to dbsym. ---------------------------- revision 1.17 date: 1993/07/11 08:42:22; author: cgd; state: Exp; lines: +2 -2 don't ignore errors from dbsym... it might say that, e.g. there's not enough symbol space! ---------------------------- revision 1.14 date: 1993/06/06 23:29:03; author: cgd; state: Exp; lines: +2 -2 make conf.o actually depend on conf.c... ---------------------------- revision 1.8 date: 1993/04/29 03:27:39; author: cgd; state: Exp; lines: +5 -10 use ed instead of ex. the script to use is identical, and we might want to switch back to using ex when our ex supports -. ---------------------------- revision 1.5 date: 1993/03/24 18:48:57; author: cgd; state: Exp; lines: +1 -1 now use absolute path for dbsym ----------------------------
1993-09-26 19:44:33 +00:00
#
# Makefile for FreeBSD
1993-06-12 14:58:17 +00:00
#
# 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.
#
# Which version of config(8) is required.
%VERSREQ= 300009
KERNFORMAT?= elf
1993-06-12 14:58:17 +00:00
STD8X16FONT?= iso
.if exists(./@/.)
S= ./@
.else
1993-06-12 14:58:17 +00:00
S= ../..
.endif
I386= ${S}/i386
1993-06-12 14:58:17 +00:00
COPTFLAGS?=-O
INCLUDES= -nostdinc -I- -I. -I$S
# This hack is to allow kernel compiles to succeed on machines w/out srcdist
.if exists($S/../include)
INCLUDES+= -I$S/../include
.else
INCLUDES+= -I/usr/include
.endif
COPTS= ${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h
CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
# XXX LOCORE means "don't declare C stuff" not "for locore.s".
ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
# Use the default object format for genassym, etc.
GEN_CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
# Select the correct set of tools. Can't set OBJFORMAT here because it
# doesn't get exported into the environment, and if it were exported
# then it might break building of genassym, etc.
.if ${KERNFORMAT} == "elf"
CFLAGS+= -elf
.else
CFLAGS+= -aout
.endif
LOAD_ADDRESS?= F0100000
DEFINED_PROF= ${PROF}
.if defined(PROF)
CFLAGS+= -malign-functions=4
.if ${PROFLEVEL} >= 2
IDENT+= -DGPROF4 -DGUPROF
PROF+= -mprofiler-epilogue
.endif
.endif
1993-06-12 14:58:17 +00:00
NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $<
NORMAL_S= ${CC} -c ${ASM_CFLAGS} $<
1993-06-12 14:58:17 +00:00
DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} $<
DRIVER_S= ${CC} -c -x ${ASM_CFLAGS} $<
PROFILE_C= ${CC} -c ${CFLAGS} $<
GEN_CFILES= ${I386}/i386/genassym.c
# setdef0.c and setdef1.c are intentionally
# omitted from SYSTEM_CFILES. They include setdefs.h, a header which
# is generated from all of ${OBJS}. We don't want to have to compile
# everything just to do a make depend.
SYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c
SYSTEM_SFILES= ${I386}/i386/locore.s
SYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS}
Load the kernel symbol table in the boot loader and not at compile time. (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.
1995-01-25 21:40:47 +00:00
.if ${CFLAGS:M-g} == ""
SYMORDER_EXCLUDE=-x symbols.exclude
.endif
SYSTEM_LD_HEAD= @echo loading ${.TARGET}; rm -f ${.TARGET}
.if ${KERNFORMAT} == aout || ${KERNFORMAT} == aoutkld
SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
SYSTEM_LD= @${LD} -aout -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
SYSTEM_LD_TAIL= @echo rearranging symbols; \
symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \
size -aout ${.TARGET} ; chmod 755 ${.TARGET}
.endif
.if ${KERNFORMAT} == elf
SYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \
setdef1.o hack.So
SYSTEM_LD= @${LD} -elf -Bdynamic -T $S/i386/conf/kernel.script \
-export-dynamic -dynamic-linker /red/herring \
-o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
SYSTEM_LD_TAIL= @size -elf ${.TARGET} ; chmod 755 ${.TARGET}
SYSTEM_DEP+= $S/i386/conf/kernel.script
.endif
1993-06-12 14:58:17 +00:00
%BEFORE_DEPEND
1993-06-12 14:58:17 +00:00
%OBJS
%CFILES
%SFILES
%MFILES
1993-06-12 14:58:17 +00:00
%LOAD
%CLEAN
.if !exists(.depend)
${SYSTEM_OBJS}: ${BEFORE_DEPEND:M*.h}
.endif
1993-06-12 14:58:17 +00:00
clean:
rm -f *.o *.so *.So *.ko *.s eddep errs genassym gensetdefs \
kernel linterrs makelinks param.c setdef[01].c setdefs.h \
symbols.exclude symbols.sort tags \
vers.c vnode_if.c vnode_if.h ${CLEAN}
1993-06-12 14:58:17 +00:00
#lint: /tmp param.c
# @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \
# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
# grep -v 'struct/union .* never defined' | \
# grep -v 'possible pointer alignment problem'
1993-06-12 14:58:17 +00:00
symbols.exclude:
Load the kernel symbol table in the boot loader and not at compile time. (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.
1995-01-25 21:40:47 +00:00
echo "gcc2_compiled." >symbols.exclude
echo "___gnu_compiled_c" >>symbols.exclude
1993-06-12 14:58:17 +00:00
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}
.if ${KERNFORMAT} == elf
# This is a hack. BFD "optimizes" away dynamic mode if there are no
# dynamic references. We could probably do a '-Bforcedynamic' mode like
# in the a.out ld. For now, this works.
hack.So: Makefile
touch hack.c
${CC} -elf -shared -nostdlib hack.c -o hack.So
rm -f hack.c
.endif
setdef0.o: setdef0.c setdefs.h
${NORMAL_C}
setdef1.o: setdef1.c setdefs.h
${NORMAL_C}
setdef0.c setdef1.c setdefs.h: ${OBJS}
gensetdefs ${OBJS}
# this rule stops ./assym.s in .depend from causing problems
./assym.s: assym.s
assym.s: genassym
./genassym >assym.s
genassym.o: ${I386}/i386/genassym.c
${CC} -c ${GEN_CFLAGS} ${I386}/i386/genassym.c
genassym: genassym.o
${CC} ${GEN_CFLAGS} genassym.o -o ${.TARGET}
1993-06-12 14:58:17 +00:00
${SYSTEM_OBJS} genassym.o vers.o: opt_global.h
# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical.
depend: assym.s param.c vnode_if.h ${BEFORE_DEPEND}
rm -f .newdep
mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES}
mkdep -a -f .newdep ${GEN_CFLAGS} ${GEN_CFILES}
env MKDEP_CPP="${CC} -E" \
mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES}
rm -f .depend
mv -f .newdep .depend
1993-06-12 14:58:17 +00:00
cleandepend:
rm -f .depend
1993-06-12 14:58:17 +00:00
links:
egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \
1993-06-12 14:58:17 +00:00
sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
1993-06-12 14:58:17 +00:00
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:
@if [ ! -f kernel ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi
.if ${KERNFORMAT} == "elf" && !defined(FORCE)
@if [ -f /kernel -a "`file /kernel 2>/dev/null | grep ELF`" = "" ]; then \
echo "WARNING: You are about to install an ELF kernel for the first time!" ; \
echo "Please be sure you have upgraded your bootblocks and/or /boot/loader so" ; \
echo "that you can boot it. Old bootblocks WILL NOT WORK! Please read:" ; \
echo "http://www.freebsd.org/~peter/elfday.html for information." ; \
echo "If you are satisfied you can boot an ELF kernel, type: make -DFORCE install" ; \
exit 1 ; \
fi
.endif
.if exists(${DESTDIR}/kernel)
chflags noschg ${DESTDIR}/kernel
mv ${DESTDIR}/kernel ${DESTDIR}/kernel.old
.endif
PATH=$${PATH}:/sbin:/usr/sbin; \
if [ `sysctl -n kern.bootfile` = ${DESTDIR}/kernel ] ; then \
sysctl -w kern.bootfile=${DESTDIR}/kernel.old ; \
if [ -f /var/db/kvm_kernel.db ] ; then \
mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \
fi \
fi
1998-04-17 07:51:36 +00:00
install -c -m 555 -o root -g wheel -fschg kernel ${DESTDIR}/
config.o:
${NORMAL_C}
ioconf.o:
${NORMAL_C}
1993-06-12 14:58:17 +00:00
This Makefile is for FreeBSD, not 4.3 BSD-Reno. Moved $Id$. Added STRIP=, DBSYM=, and LOAD_ADDRESS?= Now use LOAD_ADDRESS for linking kernel and for dbsym, added strip -x to cut kernel size. Added machde.o: dependency, this will be needed in the future, and for now it does not hurt anyone. Cleaned out conf.o: dependency, mkdep does the right things. Same for param.c: This is really a Merge in of NetBSD's Makefile.i386, here is the relevant rlog info: ---------------------------- revision 1.27 date: 1993/08/27 23:58:20; author: brezak; state: Exp; lines: +2 -2 Need LOAD_ADDRESS for depend pass. ---------------------------- revision 1.25 date: 1993/07/19 16:52:16; author: mycroft; state: Exp; lines: +3 -3 Add ${DEBUG} to CFLAGS and -f to dbsym. ---------------------------- revision 1.22 date: 1993/07/18 10:08:22; author: mycroft; state: Exp; lines: +5 -6 Change to work with new config stuff for specifying load address. ---------------------------- revision 1.20 date: 1993/07/18 09:47:40; author: mycroft; state: Exp; lines: +6 -5 Use new -T option to dbsym. ---------------------------- revision 1.17 date: 1993/07/11 08:42:22; author: cgd; state: Exp; lines: +2 -2 don't ignore errors from dbsym... it might say that, e.g. there's not enough symbol space! ---------------------------- revision 1.14 date: 1993/06/06 23:29:03; author: cgd; state: Exp; lines: +2 -2 make conf.o actually depend on conf.c... ---------------------------- revision 1.8 date: 1993/04/29 03:27:39; author: cgd; state: Exp; lines: +5 -10 use ed instead of ex. the script to use is identical, and we might want to switch back to using ex when our ex supports -. ---------------------------- revision 1.5 date: 1993/03/24 18:48:57; author: cgd; state: Exp; lines: +1 -1 now use absolute path for dbsym ----------------------------
1993-09-26 19:44:33 +00:00
param.c: $S/conf/param.c
1993-06-12 14:58:17 +00:00
-rm -f param.c
cp $S/conf/param.c .
param.o:
${NORMAL_C}
1993-06-12 14:58:17 +00:00
vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP}
1993-06-12 14:58:17 +00:00
sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
# XXX strictly, everything depends on Makefile because changes to ${PROF}
# only appear there, but we don't handle that.
vers.o:
${NORMAL_C}
.ORDER: vnode_if.c vnode_if.h
vnode_if.c vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
vnode_if.o:
${NORMAL_C}
.if exists($S/../share/mk)
.include "$S/../share/mk/bsd.kern.mk"
.else
.include <bsd.kern.mk>
.endif
1993-06-12 14:58:17 +00:00
%RULES
# DO NOT DELETE THIS LINE -- make depend uses it