Date: Tue, 26 Jan 2016 16:41:08 +0100 From: Hans Petter Selasky <hps@selasky.org> To: FreeBSD Current <freebsd-current@freebsd.org>, Drew Gallatin <gallatin@netflix.com> Subject: Re: How to add custom C-flags to kernel depend? Message-ID: <56A79394.5000601@selasky.org> In-Reply-To: <56A754DE.4060404@selasky.org> References: <56A754DE.4060404@selasky.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 01/26/16 12:13, Hans Petter Selasky wrote: > Hi, > > I would like to remove the no-depend keyword from drivers using the > LINUXKPI_C in the kernel. Currently it fails like this: > >> sys/ofed/drivers/infiniband/core/mad.c:36:10: fatal error: >> 'linux/dma-mapping.h' file not found >> #include <linux/dma-mapping.h> >> ^ >> 1 error generated. > > That's very easy to fix, by simply adding the correct include path to > the C-flags of depend, though then all kernel files will have that > include path added. What is the best way to fix this? > > I see ZFS has made a solution and can we extend this scheme? > >> # We have "special" -I include paths for zfs/dtrace files in 'depend'. >> CFILES_NOCDDL= ${CFILES:N*/cddl/*:N*fs/nfsclient/nfs_clkdtrace*} >> SFILES_NOCDDL= ${SFILES:N*/cddl/*} >> CFILES_CDDL= ${CFILES:M*/cddl/*} >> SFILES_CDDL= ${SFILES:M*/cddl/*} > Does the following look OK? > Index: kern.post.mk > =================================================================== > --- kern.post.mk (revision 294311) > +++ kern.post.mk (working copy) > @@ -186,12 +186,20 @@ > > ${SYSTEM_OBJS} genassym.o vers.o: opt_global.h > > +# Normal files first > +CFILES_NORMAL= ${CFILES:N*/cddl/*:N*fs/nfsclient/nfs_clkdtrace*:N*/compat/linuxkpi/*:N*/ofed/*:N*/mlx5/mlx5*} > +SFILES_NORMAL= ${SFILES:N*/cddl/*} > + > # We have "special" -I include paths for zfs/dtrace files in 'depend'. > -CFILES_NOCDDL= ${CFILES:N*/cddl/*:N*fs/nfsclient/nfs_clkdtrace*} > -SFILES_NOCDDL= ${SFILES:N*/cddl/*} > CFILES_CDDL= ${CFILES:M*/cddl/*} > SFILES_CDDL= ${SFILES:M*/cddl/*} > > +# We have "special" -I include paths for LinuxKPI. > +CFILES_LINUXKPI=${CFILES:M*/compat/linuxkpi/*} > + > +# We have "special" -I include paths for OFED. > +CFILES_OFED=${CFILES:M*/ofed/*:M*/mlx5/mlx5*} > + > kernel-depend: .depend > # The argument list can be very long, so use make -V and xargs to > # pass it to mkdep. > @@ -219,12 +227,20 @@ > .depend: .PRECIOUS ${SRCS} > .if ${MK_FAST_DEPEND} == "no" > rm -f ${.TARGET}.tmp > - ${MAKE} -V CFILES_NOCDDL -V SYSTEM_CFILES -V GEN_CFILES | \ > +# C files > + ${MAKE} -V CFILES_NORMAL -V SYSTEM_CFILES -V GEN_CFILES | \ > CC="${_MKDEPCC}" xargs mkdep -a -f ${.TARGET}.tmp ${CFLAGS} > ${MAKE} -V CFILES_CDDL | \ > CC="${_MKDEPCC}" xargs mkdep -a -f ${.TARGET}.tmp ${ZFS_CFLAGS} \ > ${FBT_CFLAGS} ${DTRACE_CFLAGS} > - ${MAKE} -V SFILES_NOCDDL | \ > + ${MAKE} -V CFILES_LINUXKPI | \ > + CC="${_MKDEPCC}" xargs mkdep -a -f ${.TARGET}.tmp \ > + ${CFLAGS} ${LINUXKPI_INCLUDES} > + ${MAKE} -V CFILES_OFED | \ > + CC="${_MKDEPCC}" xargs mkdep -a -f ${.TARGET}.tmp \ > + ${CFLAGS} ${OFEDINCLUDES} > +# Assembly files > + ${MAKE} -V SFILES_NORMAL | \ > CC="${_MKDEPCC}" xargs mkdep -a -f ${.TARGET}.tmp ${ASM_CFLAGS} > ${MAKE} -V SFILES_CDDL | \ > CC="${_MKDEPCC}" xargs mkdep -a -f ${.TARGET}.tmp ${ZFS_ASM_CFLAGS} --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56A79394.5000601>