How to add custom C-flags to kernel depend?
Hans Petter Selasky
hps at selasky.org
Tue Jan 26 15:38:53 UTC 2016
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
More information about the freebsd-current
mailing list