Date: Sun, 11 Feb 2001 09:30:53 -0700 From: Warner Losh <imp@harmony.village.org> To: audit@freebsd.org, peter@freebsd.org, bde@freebsd.org Subject: kmod.mk patches to fix excessive recompiling Message-ID: <200102111630.f1BGUrW23037@harmony.village.org>
next in thread | raw e-mail | index | archive | help
For a long time I've noticed that too many things recompile in the modules when I rebuild after a cvs update. I've tracked the problem down now. kmod.mk puts @ and machine as dependencies for all the sources. This is done to ensure that the link exists, but for no other reasons. However, when the link does exist, the directory mod time comes into consideration (that directory is the target of the symlink). So, whenever $S or $S/$MACHINE/include changes, all files are rebuilt inn the modules tree. My laptop is only a 300MHz Pentium, so this can take longer than my attention span. Please find enclosed patches that fix this problem. They just add checks to see if the files don't exist before making them a dependency. This works well for me and so I'm sharing it with the world. The prime motivator to finding this problem was vi dumped core in src/sys and that caused all the modules to recompile. Needless to say, this ticked me off enough to fix this problem (but strangely, not enough to upgrade my laptop's userland to fix vi :-). Warner Index: kmod.mk =================================================================== RCS file: /home/imp/FreeBSD/CVS/src/sys/conf/kmod.mk,v retrieving revision 1.90 diff -u -r1.90 kmod.mk --- kmod.mk 2001/01/28 21:24:05 1.90 +++ kmod.mk 2001/02/11 16:25:20 @@ -158,7 +158,14 @@ .MAIN: all all: objwarn ${PROG} all-man _SUBDIR -beforedepend ${OBJS}: ${_ILINKS} +beforedepend ${OBJS}: +.if !exists(@) +beforedepend ${OBJS}: @ +.endif +.if !exists(machine) +beforedepend ${OBJS}: machine +.endif + # Search for kernel source tree in standard places. .for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. /sys /usr/src/sys @@ -269,7 +276,9 @@ .for _src in ${SRCS:M${_srcsrc:T:R}.${_ext}} CLEANFILES+= ${_src} .if !target(${_src}) +.if !exists(@) ${_src}: @ +.endif .if exists(@) ${_src}: @/kern/makeobjops.pl @/${_srcsrc} .endif @@ -282,7 +291,9 @@ .for _ext in c h .if ${SRCS:Mvnode_if.${_ext}} != "" CLEANFILES+= vnode_if.${_ext} +.if !exists(@) vnode_if.${_ext}: @ +.endif .if exists(@) vnode_if.${_ext}: @/kern/vnode_if.pl @/kern/vnode_if.src .endif To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102111630.f1BGUrW23037>