xref: /OK3568_Linux_fs/buildroot/package/qemu/Config.in (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
2*4882a593Smuzhiyun	bool
3*4882a593Smuzhiyun	# Only tested on these architectures
4*4882a593Smuzhiyun	default y if BR2_aarch64 || BR2_i386 || BR2_mips || BR2_mipsel \
5*4882a593Smuzhiyun		|| BR2_x86_64 || BR2_arm \
6*4882a593Smuzhiyun		|| BR2_powerpc64 || BR2_powerpc64le
7*4882a593Smuzhiyun
8*4882a593Smuzhiyuncomment "QEMU requires a toolchain with wchar, threads, gcc >= 8"
9*4882a593Smuzhiyun	depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
10*4882a593Smuzhiyun	depends on BR2_USE_MMU
11*4882a593Smuzhiyun	depends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR) || \
12*4882a593Smuzhiyun		!BR2_TOOLCHAIN_GCC_AT_LEAST_8
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU
15*4882a593Smuzhiyun	bool "QEMU"
16*4882a593Smuzhiyun	depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
17*4882a593Smuzhiyun	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8
18*4882a593Smuzhiyun	depends on BR2_TOOLCHAIN_HAS_THREADS
19*4882a593Smuzhiyun	depends on BR2_USE_WCHAR # gettext
20*4882a593Smuzhiyun	depends on BR2_USE_MMU # fork()
21*4882a593Smuzhiyun	select BR2_PACKAGE_LIBGLIB2
22*4882a593Smuzhiyun	select BR2_PACKAGE_PIXMAN
23*4882a593Smuzhiyun	select BR2_PACKAGE_ZLIB
24*4882a593Smuzhiyun	help
25*4882a593Smuzhiyun	  QEMU is a generic and open source machine emulator and
26*4882a593Smuzhiyun	  virtualizer.
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun	  When used as a machine emulator, QEMU can run OSes and
29*4882a593Smuzhiyun	  programs made for one machine (e.g. an ARM board) on a
30*4882a593Smuzhiyun	  different machine (e.g.  your own PC). By using dynamic
31*4882a593Smuzhiyun	  translation, it achieves very good performance.
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	  When used as a virtualizer, QEMU achieves near native
34*4882a593Smuzhiyun	  performances by executing the guest code directly on the
35*4882a593Smuzhiyun	  host CPU. QEMU supports virtualization when executing under
36*4882a593Smuzhiyun	  the Xen hypervisor or using the KVM kernel module in
37*4882a593Smuzhiyun	  Linux. When using KVM, QEMU can virtualize x86, server and
38*4882a593Smuzhiyun	  embedded PowerPC, and S390 guests.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun	  http://qemu.org/
41*4882a593Smuzhiyun
42*4882a593Smuzhiyunif BR2_PACKAGE_QEMU
43*4882a593Smuzhiyun
44*4882a593Smuzhiyuncomment "Emulators selection"
45*4882a593Smuzhiyun
46*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_CUSTOM_TARGETS
47*4882a593Smuzhiyun	string "Enable specific targets"
48*4882a593Smuzhiyun	help
49*4882a593Smuzhiyun	  Enter here the list of QEMU targets you want to build. For
50*4882a593Smuzhiyun	  example:
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun	    System emulation      | User-land emulation
53*4882a593Smuzhiyun	    ----------------------+-----------------------
54*4882a593Smuzhiyun	    i386-softmmu          | i386-linux-user
55*4882a593Smuzhiyun	    arm-softmmu           | ppc-linux-user
56*4882a593Smuzhiyun	    x86_64-softmmu        | sparc-bsd-user
57*4882a593Smuzhiyun	    ...                   | ...
58*4882a593Smuzhiyun
59*4882a593Smuzhiyuncomment "Networking options"
60*4882a593Smuzhiyun
61*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_SLIRP
62*4882a593Smuzhiyun	bool "Enable user mode networking (SLIRP)"
63*4882a593Smuzhiyun	select BR2_PACKAGE_SLIRP
64*4882a593Smuzhiyun	help
65*4882a593Smuzhiyun	  Enable user mode network stack, which is the default
66*4882a593Smuzhiyun	  networking backend. It requires no administrator privileges
67*4882a593Smuzhiyun	  and generally is the easiest to use but has some
68*4882a593Smuzhiyun	  limitations:
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	  - there is a lot of overhead so the performance is poor;
71*4882a593Smuzhiyun	  - in general ICMP does not work (can't ping from/to a guest)
72*4882a593Smuzhiyun	  - on Linux hosts, ping does work from within the guest, but it
73*4882a593Smuzhiyun	    needs initial setup by root (once per host)
74*4882a593Smuzhiyun	  - the guest is not directly accessible from the host or the
75*4882a593Smuzhiyun	    external network
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun	  User Networking is implemented using "slirp", which provides a
78*4882a593Smuzhiyun	  full TCP/IP stack within QEMU and uses that stack to implement
79*4882a593Smuzhiyun	  a virtual NAT'd network.
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun	  Notice that this option does not disable other networking
82*4882a593Smuzhiyun	  modes.
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunif BR2_PACKAGE_QEMU_CUSTOM_TARGETS = ""
85*4882a593Smuzhiyun
86*4882a593Smuzhiyuncomment "... or you can select emulator families to enable, below:"
87*4882a593Smuzhiyun
88*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_SYSTEM
89*4882a593Smuzhiyun	bool "Enable all systems emulation"
90*4882a593Smuzhiyun	depends on !BR2_STATIC_LIBS # dtc
91*4882a593Smuzhiyun	select BR2_PACKAGE_QEMU_FDT
92*4882a593Smuzhiyun	help
93*4882a593Smuzhiyun	  Say 'y' to build all system emulators/virtualisers that QEMU
94*4882a593Smuzhiyun	  supports.
95*4882a593Smuzhiyun
96*4882a593Smuzhiyuncomment "systems emulation needs a toolchain w/ dynamic library"
97*4882a593Smuzhiyun	depends on BR2_STATIC_LIBS
98*4882a593Smuzhiyun
99*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_LINUX_USER
100*4882a593Smuzhiyun	bool "Enable all Linux user-land emulation"
101*4882a593Smuzhiyun	# Incompatible "struct sigevent" definition on musl
102*4882a593Smuzhiyun	depends on !BR2_TOOLCHAIN_USES_MUSL
103*4882a593Smuzhiyun	help
104*4882a593Smuzhiyun	  Say 'y' to build all Linux user-land emulators that QEMU
105*4882a593Smuzhiyun	  supports.
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun# Note: bsd-user can not be build on Linux
108*4882a593Smuzhiyun
109*4882a593Smuzhiyuncomment "Linux user-land emulation needs a glibc or uClibc toolchain"
110*4882a593Smuzhiyun	depends on BR2_TOOLCHAIN_USES_MUSL
111*4882a593Smuzhiyun
112*4882a593Smuzhiyunendif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == ""
113*4882a593Smuzhiyun
114*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_HAS_EMULS
115*4882a593Smuzhiyun	def_bool y
116*4882a593Smuzhiyun	depends on BR2_PACKAGE_QEMU_SYSTEM || BR2_PACKAGE_QEMU_LINUX_USER || BR2_PACKAGE_QEMU_CUSTOM_TARGETS != ""
117*4882a593Smuzhiyun
118*4882a593Smuzhiyunif BR2_PACKAGE_QEMU_HAS_EMULS
119*4882a593Smuzhiyun
120*4882a593Smuzhiyuncomment "Frontends"
121*4882a593Smuzhiyun
122*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_SDL
123*4882a593Smuzhiyun	bool "Enable SDL frontend"
124*4882a593Smuzhiyun	depends on !BR2_STATIC_LIBS # sdl2
125*4882a593Smuzhiyun	select BR2_PACKAGE_SDL2
126*4882a593Smuzhiyun	help
127*4882a593Smuzhiyun	  Say 'y' to enable the SDL frontend, that is, a graphical
128*4882a593Smuzhiyun	  window presenting the VM's display.
129*4882a593Smuzhiyun
130*4882a593Smuzhiyuncomment "SDL frontend needs a toolchain w/ dynamic library"
131*4882a593Smuzhiyun	depends on BR2_STATIC_LIBS
132*4882a593Smuzhiyun
133*4882a593Smuzhiyuncomment "Misc. features"
134*4882a593Smuzhiyun
135*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_FDT
136*4882a593Smuzhiyun	bool "Enable FDT"
137*4882a593Smuzhiyun	depends on !BR2_STATIC_LIBS # dtc
138*4882a593Smuzhiyun	select BR2_PACKAGE_DTC
139*4882a593Smuzhiyun	help
140*4882a593Smuzhiyun	  Say 'y' here to have QEMU capable of constructing Device
141*4882a593Smuzhiyun	  Trees, and passing them to the VMs.
142*4882a593Smuzhiyun
143*4882a593Smuzhiyuncomment "FDT support needs a toolchain w/ dynamic library"
144*4882a593Smuzhiyun	depends on BR2_STATIC_LIBS
145*4882a593Smuzhiyun
146*4882a593Smuzhiyunendif # BR2_PACKAGE_QEMU_HAS_EMULS
147*4882a593Smuzhiyun
148*4882a593Smuzhiyunconfig BR2_PACKAGE_QEMU_TOOLS
149*4882a593Smuzhiyun	bool "Enable tools"
150*4882a593Smuzhiyun	help
151*4882a593Smuzhiyun	  Say 'y' here to include tools packaged with QEMU
152*4882a593Smuzhiyun	  (e.g. qemu-img).
153*4882a593Smuzhiyun
154*4882a593Smuzhiyunendif # BR2_PACKAGE_QEMU
155