Skip site navigation (1)Skip section navigation (2)
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>