version 1.112.2.7, 2002/12/19 00:33:46 |
version 1.113, 2001/05/15 22:34:36 |
|
|
# Machine generic makefile changes should be made in |
# Machine generic makefile changes should be made in |
# /sys/arch/i386/conf/Makefile.i386 |
# /sys/arch/i386/conf/Makefile.i386 |
# after which config should be rerun for all machines of that type. |
# after which config should be rerun for all machines of that type. |
# |
|
# To specify debugging, add the config line: makeoptions DEBUG="-g" |
|
# A better way is to specify -g only for a few files. |
|
# |
|
# makeoptions DEBUGLIST="uvm* trap if_*" |
|
|
|
MACHINE_ARCH= i386 |
|
USETOOLS?= no |
|
NEED_OWN_INSTALL_TARGET?=no |
|
.include <bsd.own.mk> |
|
|
|
## |
.include <bsd.own.mk> |
## (1) port identification |
|
## |
|
I386= $S/arch/i386 |
|
GENASSYM= ${I386}/i386/genassym.cf |
|
|
|
## |
|
## (2) compile settings |
|
## |
|
CPPFLAGS+= -Di386 |
|
AFLAGS+= -x assembler-with-cpp -traditional-cpp |
|
|
|
## |
|
## (3) libkern and compat |
|
## |
|
KERN_AS= obj |
|
|
|
## |
# DEBUG is set to -g if debugging. |
## (4) local objects, compile rules, and dependencies |
# PROF is set to -pg if profiling. |
## |
|
MD_OBJS= locore.o spl.o vector.o |
|
MD_CFILES= |
|
MD_SFILES= ${I386}/i386/locore.S |
|
|
|
locore.o: ${I386}/i386/locore.S assym.h |
AR?= ar |
${NORMAL_S} |
AS?= as |
|
CC?= cc |
spl.o: ${I386}/i386/spl.S assym.h |
CPP?= cpp |
${NORMAL_S} |
LD?= ld |
|
LORDER?=lorder |
|
MKDEP?= mkdep |
|
NM?= nm |
|
RANLIB?=ranlib |
|
SIZE?= size |
|
STRIP?= strip |
|
TSORT?= tsort -q |
|
|
|
COPTS?= -O2 |
|
|
|
# source tree is located via $S relative to the compilation directory |
|
.ifndef S |
|
S!= cd ../../../..; pwd |
|
.endif |
|
I386= $S/arch/i386 |
|
|
vector.o: ${I386}/i386/vector.S assym.h |
HAVE_EGCS!= ${CC} --version | egrep "^(2\.[89]|egcs)" ; echo |
${NORMAL_S} |
INCLUDES= -I. -I$S/arch -I$S -nostdinc |
|
CPPFLAGS= ${INCLUDES} ${IDENT} ${PARAM} -D_KERNEL -Di386 |
|
CWARNFLAGS?= -Werror -Wall -Wmissing-prototypes -Wstrict-prototypes \ |
|
-Wpointer-arith |
|
# XXX Delete -Wuninitialized for now, since the compiler doesn't |
|
# XXX always get it right. --thorpej |
|
CWARNFLAGS+= -Wno-uninitialized |
|
.if (${HAVE_EGCS} != "") |
|
CWARNFLAGS+= -Wno-main |
|
.endif |
|
CFLAGS= ${DEBUG} ${COPTS} ${CWARNFLAGS} |
|
AFLAGS= -x assembler-with-cpp -traditional-cpp -D_LOCORE |
|
LINKFLAGS= -Ttext c0100000 -e start |
|
|
## |
|
## (5) link settings |
|
## |
|
TEXTADDR?= c0100000 |
|
LINKFLAGS_NORMAL= -X |
|
.if (${OBJECT_FMT} == "ELF") |
.if (${OBJECT_FMT} == "ELF") |
KERN_LDSCRIPT?= kern.ldscript |
KERN_LDSCRIPT?= kern.ldscript |
LINKFORMAT= -T ${I386}/conf/${KERN_LDSCRIPT} |
LINKFLAGS+= -T ${I386}/conf/${KERN_LDSCRIPT} |
.else |
.else |
LINKFORMAT= -z |
LINKFLAGS+= -z |
.endif |
.endif |
|
|
## |
STRIPFLAGS= -g |
## (6) port specific target dependencies |
|
## |
|
|
|
freebsd_sigcode.o ibcs2_sigcode.o linux_sigcode.o: assym.h |
|
svr4_sigcode.o mach_sigcode.o: assym.h |
|
apmcall.o in_cksum.o pnpbioscall.o: assym.h |
|
clock.o: config_time.h |
|
|
|
## |
|
## (7) misc settings |
|
## |
|
|
|
## |
|
## (8) config(8) generated machinery |
|
## |
|
%INCLUDES |
%INCLUDES |
|
|
|
### find out what to use for libkern |
|
KERN_AS= obj |
|
.include "$S/lib/libkern/Makefile.inc" |
|
.ifndef PROF |
|
LIBKERN= ${KERNLIB} |
|
.else |
|
LIBKERN= ${KERNLIB_PROF} |
|
.endif |
|
|
|
### find out what to use for libcompat |
|
.include "$S/compat/common/Makefile.inc" |
|
.ifndef PROF |
|
LIBCOMPAT= ${COMPATLIB} |
|
.else |
|
LIBCOMPAT= ${COMPATLIB_PROF} |
|
.endif |
|
|
|
# compile rules: rules are named ${TYPE}_${SUFFIX} where TYPE is NORMAL or |
|
# HOSTED}, and SUFFIX is the file suffix, capitalized (e.g. C for a .c file). |
|
|
|
NORMAL_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $< |
|
NOPROF_C= ${CC} ${CFLAGS} ${CPPFLAGS} -c $< |
|
NORMAL_S= ${CC} ${AFLAGS} ${CPPFLAGS} -c $< |
|
|
%OBJS |
%OBJS |
|
|
%CFILES |
%CFILES |
|
|
%SFILES |
%SFILES |
|
|
|
# load lines for config "xxx" will be emitted as: |
|
# xxx: ${SYSTEM_DEP} swapxxx.o |
|
# ${SYSTEM_LD_HEAD} |
|
# ${SYSTEM_LD} swapxxx.o |
|
# ${SYSTEM_LD_TAIL} |
|
SYSTEM_OBJ= locore.o \ |
|
param.o ioconf.o ${OBJS} ${LIBCOMPAT} ${LIBKERN} |
|
SYSTEM_DEP= Makefile ${SYSTEM_OBJ} |
|
SYSTEM_LD_HEAD= rm -f $@ |
|
SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' vers.o; \ |
|
${LD} ${LINKFLAGS} -o $@ ${SYSTEM_OBJ} vers.o |
|
SYSTEM_LD_TAIL= @${SIZE} $@; chmod 755 $@ |
|
|
|
DEBUG?= |
|
.if ${DEBUG} == "-g" |
|
LINKFLAGS+= -X |
|
SYSTEM_LD_TAIL+=; \ |
|
echo mv -f $@ $@.gdb; mv -f $@ $@.gdb; \ |
|
echo ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb; \ |
|
${STRIP} ${STRIPFLAGS} -o $@ $@.gdb |
|
.else |
|
LINKFLAGS+= -X |
|
.endif |
|
|
%LOAD |
%LOAD |
|
|
%RULES |
assym.h: $S/kern/genassym.sh ${I386}/i386/genassym.cf |
|
sh $S/kern/genassym.sh ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} \ |
|
< ${I386}/i386/genassym.cf > assym.h.tmp && \ |
|
mv -f assym.h.tmp assym.h |
|
|
|
param.c: $S/conf/param.c |
|
rm -f param.c |
|
cp $S/conf/param.c . |
|
|
|
param.o: param.c Makefile |
|
${NORMAL_C} |
|
|
|
ioconf.o: ioconf.c |
|
${NORMAL_C} |
|
|
## |
newvers: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP} |
## (9) port independent kernel machinery |
sh $S/conf/newvers.sh |
## |
${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c |
.include "$S/conf/Makefile.kern.inc" |
|
|
|
|
__CLEANKERNEL: .USE |
|
@echo "${.TARGET}ing the kernel objects" |
|
rm -f eddep *netbsd netbsd.gdb tags *.[io] [a-z]*.s \ |
|
[Ee]rrs linterrs makelinks assym.h.tmp assym.h |
|
|
|
__CLEANDEPEND: .USE |
|
rm -f .depend |
|
|
|
clean: __CLEANKERNEL |
|
|
|
cleandir distclean: __CLEANKERNEL __CLEANDEPEND |
|
|
|
ALLSFILES= ${I386}/i386/locore.s ${SFILES} |
|
LINTSTUBS= ${ALLSFILES:T:R:C/^.*$/LintStub_&.c/g} |
|
|
|
.for _sfile in ${ALLSFILES} |
|
LintStub_${_sfile:T:R}.c: ${_sfile} assym.h |
|
${CC} -E -C ${AFLAGS} ${CPPFLAGS} ${_sfile} | \ |
|
awk -f $S/kern/genlintstub.awk >${.TARGET} |
|
.endfor |
|
|
|
lint: ${LINTSTUBS} ${CFILES} ioconf.c param.c |
|
@lint -hbxncez -Dvolatile= ${CPPFLAGS} -UKGDB \ |
|
${LINTSTUBS} ${CFILES} \ |
|
ioconf.c param.c | \ |
|
grep -v 'static function .* unused' |
|
|
|
tags: |
|
@echo "see $S/kern/Makefile for tags" |
|
|
|
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 |
|
|
|
SRCS= ${I386}/i386/locore.s \ |
|
param.c ioconf.c ${CFILES} ${SFILES} |
|
depend: .depend |
|
.depend: ${SRCS} assym.h param.c |
|
${MKDEP} ${AFLAGS} ${CPPFLAGS} ${I386}/i386/locore.s |
|
${MKDEP} -a ${CFLAGS} ${CPPFLAGS} param.c ioconf.c ${CFILES} |
|
${MKDEP} -a ${AFLAGS} ${CPPFLAGS} ${SFILES} |
|
sh $S/kern/genassym.sh ${MKDEP} -f assym.dep ${CFLAGS} \ |
|
${CPPFLAGS} < ${I386}/i386/genassym.cf |
|
@sed -e 's/.*\.o:.*\.c/assym.h:/' < assym.dep >> .depend |
|
@rm -f assym.dep |
|
|
|
dependall: depend all |
|
|
|
|
|
# depend on root or device configuration |
|
autoconf.o conf.o: Makefile |
|
|
|
# depend on network or filesystem configuration |
|
uipc_proto.o vfs_conf.o: Makefile |
|
|
|
# depend on maxusers |
|
machdep.o: Makefile |
|
|
|
# depend on CPU configuration |
|
locore.o machdep.o: Makefile |
|
|
|
locore.o: ${I386}/i386/locore.s assym.h |
|
${NORMAL_S} |
|
|
|
apmcall.o in_cksum.o pnpbioscall.o: assym.h |
|
|
|
freebsd_sigcode.o ibcs2_sigcode.o linux_sigcode.o svr4_sigcode.o: assym.h |
|
|
|
# The install target can be redefined by putting a |
|
# install-kernel-${MACHINE_NAME} target into /etc/mk.conf |
|
MACHINE_NAME!= uname -n |
|
install: install-kernel-${MACHINE_NAME} |
|
.if !target(install-kernel-${MACHINE_NAME}}) |
|
install-kernel-${MACHINE_NAME}: |
|
rm -f /onetbsd |
|
ln /netbsd /onetbsd |
|
cp netbsd /nnetbsd |
|
mv /nnetbsd /netbsd |
|
.endif |
|
|
|
%RULES |