The compat.h will be included by default via the -include gcc parameter. This is done by appending the incude information to NOSTDINC_FLAGS in the Makefile. But Debian decided [1] that this NOSTDINC_FLAGS must also be used when not compiling kernel sources. This for example happens when the gcc-version.sh script is executed. This results in error messages like
In file included from <command-line>:0:0: /usr/src//batman-adv/build/../compat.h:25:52: fatal error: linux/version.h: No such file or directory #include <linux/version.h> /* LINUX_VERSION_CODE */ ^ compilation terminated. In file included from <command-line>:0:0: /usr/src//batman-adv/build/../compat.h:25:52: fatal error: linux/version.h: No such file or directory #include <linux/version.h> /* LINUX_VERSION_CODE */ ^ compilation terminated. /usr/src/linux-headers-4.14.0-0.bpo.3-common/scripts/gcc-version.sh: line 32: printf: #: invalid number /usr/src/linux-headers-4.14.0-0.bpo.3-common/scripts/gcc-version.sh: line 32: printf: #: invalid number /bin/sh: 1: [: 0001: unexpected operator
This can be avoided by disabling the compat.h whenever the preprocessor define __KERNEL__ is not set.
[1] https://patchwork.kernel.org/patch/5238591/
Signed-off-by: Sven Eckelmann sven@narfation.org --- compat.h | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/compat.h b/compat.h index c10ad589..759829f9 100644 --- a/compat.h +++ b/compat.h @@ -21,6 +21,8 @@ #ifndef _NET_BATMAN_ADV_COMPAT_H_ #define _NET_BATMAN_ADV_COMPAT_H_
+#ifdef __KERNEL__ + #include <linux/version.h> /* LINUX_VERSION_CODE */ #include <linux/kconfig.h> #include <generated/autoconf.h> @@ -159,4 +161,6 @@ static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
#endif /* < KERNEL_VERSION(4, 15, 0) */
+#endif /* __KERNEL__ */ + #endif /* _NET_BATMAN_ADV_COMPAT_H_ */