[PATCH] [RFC] um: define and use HAVE_LIBPCAP/HAVE_LIBVDEPLUG
From: Vegard Nossum <hidden>
Date: 2016-01-02 02:32:09
Also in:
linux-um
Subsystem:
the rest, user-mode linux (uml) · Maintainers:
Linus Torvalds, Richard Weinberger, Anton Ivanov, Johannes Berg
If you don't have libpcap or libvdeplug installed, you will get build failures when compiling certain files: arch/um/drivers/vde_user.c:8:24: fatal error: libvdeplug.h: No such file or directory #include <libvdeplug.h> arch/um/drivers/pcap_user.c:7:18: fatal error: pcap.h: No such file or directory #include <pcap.h> This patch adds a basic pre-build check and defines the kconfig variables HAVE_LIBPCAP and HAVE_LIBVDEPLUG depending on the result. There is a basic disadvantage to this scheme, namely that the user may never see the options that rely on these libraries if they are not installed. As a trade-off, we add a brand new option, MISSING_LIBRARIES (defaulting to 'y'), which allows those options to be visible (and selectable) anyway. [Note: I find this useful personally as I ran into the above build failures when playing around with UML -- so take this more as a suggestion on how things MAY be done better than a real patch.] Signed-off-by: Vegard Nossum <redacted> --- arch/um/Kconfig.common | 18 ++++++++++++++++++ arch/um/Kconfig.net | 2 ++ arch/um/Kconfig.um | 13 +++++++++++++ arch/um/Makefile | 5 +++++ 4 files changed, 38 insertions(+)
diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common
index d195a87..35ce3a1 100644
--- a/arch/um/Kconfig.common
+++ b/arch/um/Kconfig.common@@ -59,3 +59,21 @@ config HZ config SUBARCH string option env="SUBARCH" + +# Host libraries; these are defined by arch/um/Makefile + +config ENV_HAVE_LIBPCAP + string + option env="ENV_HAVE_LIBPCAP" + +config HAVE_LIBPCAP + bool + default y if ENV_HAVE_LIBPCAP="1" + +config ENV_HAVE_LIBVDEPLUG + string + option env="ENV_HAVE_LIBVDEPLUG" + +config HAVE_LIBVDEPLUG + bool + default y if ENV_HAVE_LIBVDEPLUG="1"
diff --git a/arch/um/Kconfig.net b/arch/um/Kconfig.net
index 820a56f..dfa7849 100644
--- a/arch/um/Kconfig.net
+++ b/arch/um/Kconfig.net@@ -111,6 +111,7 @@ config UML_NET_DAEMON config UML_NET_VDE bool "VDE transport" depends on UML_NET + depends on HAVE_LIBVDEPLUG || MISSING_LIBRARIES help This User-Mode Linux network transport allows one or more running UMLs on a single host to communicate with each other and also
@@ -158,6 +159,7 @@ config UML_NET_MCAST config UML_NET_PCAP bool "pcap transport" depends on UML_NET + depends on HAVE_LIBPCAP || MISSING_LIBRARIES help The pcap transport makes a pcap packet stream on the host look like an ethernet device inside UML. This is useful for making
diff --git a/arch/um/Kconfig.um b/arch/um/Kconfig.um
index 28a9885..15944d9 100644
--- a/arch/um/Kconfig.um
+++ b/arch/um/Kconfig.um@@ -9,6 +9,19 @@ config STATIC_LINK Additionally, this option enables using higher memory spaces (up to 2.75G) for UML. +config MISSING_LIBRARIES + bool "Prompt for options which require missing host libraries" + default y + help + Certain options rely on host libraries to compile. + + If you say N here, then these options will only be available if + the libraries they require have been detected to be present. + + If you say Y, then the options will be available anyway, but + beware that attempting to build the kernel will most likely + result in an error. + source "mm/Kconfig" config LD_SCRIPT_STATIC
diff --git a/arch/um/Makefile b/arch/um/Makefile
index e3abe6f..a8320e6 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile@@ -166,3 +166,8 @@ include/generated/user_constants.h: $(HOST_DIR)/um/user-offsets.s $(call filechk,gen-asm-offsets) export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS DEV_NULL_PATH + +# Host libraries +has_header = $(shell echo | $(CC) -include $(1) -xc -c - >/dev/null 2>&1 && echo 1) +export ENV_HAVE_LIBPCAP := $(call has_header,pcap.h) +export ENV_HAVE_LIBVDEPLUG := $(call has_header,libvdeplug.h)
--
1.9.1