Some glue to allow lint(1) to work on the kernel. This is not

complete without some config(8) work. Config(8) needs to provide
some ${NORMAL_LINT} rules to make foo.ln files.
This commit is contained in:
Mark Murray 2003-06-14 17:28:13 +00:00
parent 62ca80a7ff
commit 1d1f8d7c90
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=116341
2 changed files with 29 additions and 2 deletions

View File

@ -74,6 +74,8 @@ ${FULLKERNEL}: ${SYSTEM_DEP} vers.o
${SYSTEM_OBJS}: assym.s miidevs.h vnode_if.h ${BEFORE_DEPEND:M*.h} ${MFILES:T:S/.m$/.h/}
.endif
LNFILES= ${CFILES:T:S/.c$/.ln/}
.for mfile in ${MFILES}
# XXX the low quality .m.o rules gnerated by config are normally used
# instead of the .m.c rules here.
@ -90,8 +92,9 @@ kernel-clean:
${MFILES:T:S/.m$/.c/} ${MFILES:T:S/.m$/.h/} \
${CLEAN}
lint: ${CFILES}
${LINT} ${LINTKERNFLAGS} ${CFLAGS:M-[DILU]*} ${.ALLSRC}
lint: ${LNFILES}
${LINT} ${LINTKERNFLAGS} ${CFLAGS:M-[DILU]*} ${.ALLSRC} \
2>&1 | tee -a linterrs
# This is a hack. BFD "optimizes" away dynamic mode if there are no
# dynamic references. We could probably do a '-Bforcedynamic' mode like
@ -206,12 +209,21 @@ kernel-reinstall:
config.o:
${NORMAL_C}
config.ln:
${NORMAL_LINT}
env.o: env.c
${NORMAL_C}
env.ln: env.c
${NORMAL_LINT}
hints.o: hints.c
${NORMAL_C}
hints.ln: hints.c
${NORMAL_LINT}
vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP}
sh $S/conf/newvers.sh ${KERN_IDENT}
@ -220,6 +232,9 @@ vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP}
vers.o:
${NORMAL_C}
vers.ln:
${NORMAL_LINT}
vnode_if.c: $S/tools/vnode_if.awk $S/kern/vnode_if.src
${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -c
@ -229,10 +244,16 @@ vnode_if.h: $S/tools/vnode_if.awk $S/kern/vnode_if.src
vnode_if.o:
${NORMAL_C}
vnode_if.ln:
${NORMAL_LINT}
majors.c: $S/conf/majors $S/conf/majors.awk
${AWK} -f $S/conf/majors.awk $S/conf/majors > majors.c
majors.o:
${NORMAL_C}
majors.ln:
${NORMAL_LINT}
.include "kern.mk"

View File

@ -14,6 +14,7 @@ KODIR?= /boot/${KERNEL}
M= ${MACHINE_ARCH}
AWK?= awk
LINT?= lint
NM?= nm
OBJCOPY?= objcopy
SIZE?= size
@ -54,6 +55,9 @@ WERROR?= -Werror
# can override the others.
CFLAGS+= ${CONF_CFLAGS}
# Optional linting. This can be overridden in /etc/make.conf.
LINTFLAGS= ${LINTOBJKERNFLAGS}
NORMAL_C= ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}
PROFILE_C= ${CC} -c ${CFLAGS} ${WERROR} ${.IMPSRC}
@ -62,6 +66,8 @@ NORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
NORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \
${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c
NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC}
GEN_CFILES= $S/$M/$M/genassym.c
SYSTEM_CFILES= config.c env.c hints.c majors.c vnode_if.c
SYSTEM_DEP= Makefile ${SYSTEM_OBJS}