1config BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS
2	bool
3	default y if BR2_aarch64
4	default y if BR2_i386
5	default y if BR2_x86_64
6	depends on BR2_USE_MMU # fork()
7
8comment "libvirt needs udev /dev management, a toolchain w/ threads, dynamic library, wchar, kernel headers >= 3.12 (4.11 for AArch64)"
9	depends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS
10	depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \
11		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
12		!(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 && \
13			(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64))
14
15config BR2_PACKAGE_LIBVIRT
16	bool "libvirt"
17	depends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS
18	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
19	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64
20	depends on BR2_PACKAGE_HAS_UDEV
21	depends on !BR2_STATIC_LIBS
22	depends on BR2_TOOLCHAIN_HAS_THREADS
23	depends on BR2_USE_WCHAR
24	select BR2_PACKAGE_GNUTLS
25	# configure: You must install the pciaccess module to build with udev
26	select BR2_PACKAGE_LIBPCIACCESS
27	select BR2_PACKAGE_LIBGLIB2
28	select BR2_PACKAGE_LIBTIRPC
29	select BR2_PACKAGE_LIBXML2
30	select BR2_PACKAGE_ZLIB
31	# run-time dependencies
32	select BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_INIT_SYSTEMD
33	help
34	  Libvirt is collection of software that provides a convenient
35	  way to manage virtual machines and other virtualization
36	  functionality, such as storage and network interface
37	  management. These software pieces include an API library, a
38	  daemon (libvirtd), and a command line utility (virsh).
39
40	  https://libvirt.org/
41
42if BR2_PACKAGE_LIBVIRT
43
44config BR2_PACKAGE_LIBVIRT_DAEMON
45	bool "libvirtd"
46	default y
47	depends on BR2_INSTALL_LIBSTDCPP # nmap
48	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
49	select BR2_PACKAGE_DNSMASQ
50	select BR2_PACKAGE_EBTABLES
51	select BR2_PACKAGE_IPTABLES
52	select BR2_PACKAGE_IPROUTE2
53	# These are required because there is no way to unequivocally select a modern netcat
54	select BR2_PACKAGE_NMAP      if !BR2_PACKAGE_NETCAT_OPENBSD
55	select BR2_PACKAGE_NMAP_NCAT if !BR2_PACKAGE_NETCAT_OPENBSD
56	select BR2_PACKAGE_RADVD
57	help
58	  Build the libvirt daemon (libvirtd) otherwise build only the
59	  utility programs.
60
61comment "libvirtd needs a toolchain w/ C++"
62	depends on !BR2_INSTALL_LIBSTDCPP
63
64# Stateful drivers are useful only when building the daemon.
65if BR2_PACKAGE_LIBVIRT_DAEMON
66
67config BR2_PACKAGE_LIBVIRT_QEMU
68	bool "qemu"
69	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp
70	depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
71	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # qemu
72	select BR2_PACKAGE_HWDATA         # libpciaccess
73	select BR2_PACKAGE_HWDATA_PCI_IDS # libpciaccess
74	select BR2_PACKAGE_LIBSECCOMP
75	select BR2_PACKAGE_QEMU
76	select BR2_PACKAGE_QEMU_SYSTEM
77	select BR2_PACKAGE_YAJL
78	help
79	  QEMU/KVM support
80
81comment "qemu needs a toolchain with gcc >= 8"
82	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS
83	depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
84	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
85
86config BR2_PACKAGE_LIBVIRT_LXC
87	bool "lxc"
88	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # lxc
89	select BR2_PACKAGE_LXC
90	help
91	  Linux Container support
92
93comment "lxc needs a toolchain w/ gcc >= 4.7"
94	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
95
96endif
97
98endif
99