qemu.mk 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499
  1. ################################################################################
  2. #
  3. # qemu
  4. #
  5. ################################################################################
  6. # When updating the version, check whether the list of supported targets
  7. # needs to be updated.
  8. QEMU_VERSION = 7.2.0
  9. QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.xz
  10. QEMU_SITE = http://download.qemu.org
  11. QEMU_LICENSE = GPL-2.0, LGPL-2.1, MIT, BSD-3-Clause, BSD-2-Clause, Others/BSD-1c
  12. QEMU_LICENSE_FILES = COPYING COPYING.LIB
  13. # NOTE: there is no top-level license file for non-(L)GPL licenses;
  14. # the non-(L)GPL license texts are specified in the affected
  15. # individual source files.
  16. QEMU_CPE_ID_VENDOR = qemu
  17. #-------------------------------------------------------------
  18. # The build system is now partly based on Meson.
  19. # However, building is still done with configure and make as in previous versions of QEMU.
  20. # Target-qemu
  21. QEMU_DEPENDENCIES = \
  22. host-meson \
  23. host-pkgconf \
  24. host-python3 \
  25. libglib2 \
  26. zlib
  27. # Need the LIBS variable because librt and libm are
  28. # not automatically pulled. :-(
  29. QEMU_LIBS = -lrt -lm
  30. QEMU_OPTS =
  31. QEMU_VARS = LIBTOOL=$(HOST_DIR)/bin/libtool
  32. # If we want to build all emulation targets, we just need to either enable -user
  33. # and/or -system emulation appropriately.
  34. # Otherwise, if we want only a subset of targets, we must still enable all of
  35. # them, so that QEMU properly builds a list of default targets from which it
  36. # checks if the specified sub-set is valid.
  37. ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y)
  38. QEMU_DEPENDENCIES += pixman
  39. QEMU_OPTS += --enable-system
  40. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64) += aarch64-softmmu
  41. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ALPHA) += alpha-softmmu
  42. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARM) += arm-softmmu
  43. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AVR) += avr-softmmu
  44. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_CRIS) += cris-softmmu
  45. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HPPA) += hppa-softmmu
  46. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_I386) += i386-softmmu
  47. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_LOONGARCH64) += loongarch64-softmmu
  48. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_M68K) += m68k-softmmu
  49. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZE) += microblaze-softmmu
  50. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL) += microblazeel-softmmu
  51. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS) += mips-softmmu
  52. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64) += mips64-softmmu
  53. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64EL) += mips64el-softmmu
  54. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSEL) += mipsel-softmmu
  55. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_NIOS2) += nios2-softmmu
  56. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_OR1K) += or1k-softmmu
  57. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC) += ppc-softmmu
  58. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64) += ppc64-softmmu
  59. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV32) += riscv32-softmmu
  60. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV64) += riscv64-softmmu
  61. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RX) += rx-softmmu
  62. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_S390X) += s390x-softmmu
  63. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4) += sh4-softmmu
  64. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4EB) += sh4eb-softmmu
  65. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC) += sparc-softmmu
  66. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC64) += sparc64-softmmu
  67. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_TRICORE) += tricore-softmmu
  68. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_X86_64) += x86_64-softmmu
  69. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSA) += xtensa-softmmu
  70. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSAEB) += xtensaeb-softmmu
  71. else
  72. QEMU_OPTS += --disable-system
  73. endif
  74. ifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y)
  75. QEMU_OPTS += --enable-linux-user
  76. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64) += aarch64-linux-user
  77. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64_BE) += aarch64_be-linux-user
  78. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ALPHA) += alpha-linux-user
  79. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARM) += arm-linux-user
  80. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARMEB) += armeb-linux-user
  81. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_CRIS) += cris-linux-user
  82. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HEXAGON) += hexagon-linux-user
  83. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HPPA) += hppa-linux-user
  84. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_I386) += i386-linux-user
  85. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_LOONGARCH64) += loongarch64-linux-user
  86. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_M68K) += m68k-linux-user
  87. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZE) += microblaze-linux-user
  88. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL) += microblazeel-linux-user
  89. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS) += mips-linux-user
  90. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64) += mips64-linux-user
  91. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64EL) += mips64el-linux-user
  92. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSEL) += mipsel-linux-user
  93. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSN32) += mipsn32-linux-user
  94. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSN32EL) += mipsn32el-linux-user
  95. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_NIOS2) += nios2-linux-user
  96. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_OR1K) += or1k-linux-user
  97. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC) += ppc-linux-user
  98. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64) += ppc64-linux-user
  99. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64LE) += ppc64le-linux-user
  100. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV32) += riscv32-linux-user
  101. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV64) += riscv64-linux-user
  102. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_S390X) += s390x-linux-user
  103. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4) += sh4-linux-user
  104. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4EB) += sh4eb-linux-user
  105. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC) += sparc-linux-user
  106. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC32PLUS) += sparc32plus-linux-user
  107. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC64) += sparc64-linux-user
  108. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_X86_64) += x86_64-linux-user
  109. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSA) += xtensa-linux-user
  110. QEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSAEB) += xtensaeb-linux-user
  111. else
  112. QEMU_OPTS += --disable-linux-user
  113. endif
  114. # Build the list of desired targets, if any.
  115. ifeq ($(BR2_PACKAGE_QEMU_CHOOSE_TARGETS),y)
  116. QEMU_TARGET_LIST = $(strip $(QEMU_TARGET_LIST_y))
  117. ifeq ($(BR_BUILDING).$(QEMU_TARGET_LIST),y.)
  118. $(error "No emulator target has ben chosen")
  119. endif
  120. QEMU_OPTS += --target-list="$(QEMU_TARGET_LIST)"
  121. endif
  122. ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
  123. QEMU_OPTS += --disable-vhost-user
  124. else
  125. QEMU_OPTS += --enable-vhost-user
  126. endif
  127. ifeq ($(BR2_PACKAGE_QEMU_SLIRP),y)
  128. QEMU_OPTS += --enable-slirp
  129. QEMU_DEPENDENCIES += slirp
  130. else
  131. QEMU_OPTS += --disable-slirp
  132. endif
  133. ifeq ($(BR2_PACKAGE_QEMU_SDL),y)
  134. QEMU_OPTS += --enable-sdl
  135. QEMU_DEPENDENCIES += sdl2
  136. QEMU_VARS += SDL2_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config
  137. else
  138. QEMU_OPTS += --disable-sdl
  139. endif
  140. ifeq ($(BR2_PACKAGE_QEMU_FDT),y)
  141. QEMU_OPTS += --enable-fdt
  142. QEMU_DEPENDENCIES += dtc
  143. else
  144. QEMU_OPTS += --disable-fdt
  145. endif
  146. ifeq ($(BR2_PACKAGE_QEMU_TOOLS),y)
  147. QEMU_OPTS += --enable-tools
  148. else
  149. QEMU_OPTS += --disable-tools
  150. endif
  151. ifeq ($(BR2_PACKAGE_LIBFUSE3),y)
  152. QEMU_OPTS += --enable-fuse --enable-fuse-lseek
  153. QEMU_DEPENDENCIES += libfuse3
  154. else
  155. QEMU_OPTS += --disable-fuse --disable-fuse-lseek
  156. endif
  157. ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
  158. QEMU_OPTS += --enable-seccomp
  159. QEMU_DEPENDENCIES += libseccomp
  160. else
  161. QEMU_OPTS += --disable-seccomp
  162. endif
  163. ifeq ($(BR2_PACKAGE_LIBSSH),y)
  164. QEMU_OPTS += --enable-libssh
  165. QEMU_DEPENDENCIES += libssh
  166. else
  167. QEMU_OPTS += --disable-libssh
  168. endif
  169. ifeq ($(BR2_PACKAGE_LIBUSB),y)
  170. QEMU_OPTS += --enable-libusb
  171. QEMU_DEPENDENCIES += libusb
  172. else
  173. QEMU_OPTS += --disable-libusb
  174. endif
  175. ifeq ($(BR2_PACKAGE_LIBVNCSERVER),y)
  176. QEMU_OPTS += \
  177. --enable-vnc \
  178. --disable-vnc-sasl
  179. QEMU_DEPENDENCIES += libvncserver
  180. ifeq ($(BR2_PACKAGE_LIBPNG),y)
  181. QEMU_OPTS += --enable-png
  182. QEMU_DEPENDENCIES += libpng
  183. else
  184. QEMU_OPTS += --disable-png
  185. endif
  186. ifeq ($(BR2_PACKAGE_JPEG),y)
  187. QEMU_OPTS += --enable-vnc-jpeg
  188. QEMU_DEPENDENCIES += jpeg
  189. else
  190. QEMU_OPTS += --disable-vnc-jpeg
  191. endif
  192. else
  193. QEMU_OPTS += --disable-vnc
  194. endif
  195. ifeq ($(BR2_PACKAGE_NETTLE),y)
  196. QEMU_OPTS += --enable-nettle
  197. QEMU_DEPENDENCIES += nettle
  198. else
  199. QEMU_OPTS += --disable-nettle
  200. endif
  201. ifeq ($(BR2_PACKAGE_NUMACTL),y)
  202. QEMU_OPTS += --enable-numa
  203. QEMU_DEPENDENCIES += numactl
  204. else
  205. QEMU_OPTS += --disable-numa
  206. endif
  207. ifeq ($(BR2_PACKAGE_SPICE),y)
  208. QEMU_OPTS += --enable-spice
  209. QEMU_DEPENDENCIES += spice
  210. else
  211. QEMU_OPTS += --disable-spice
  212. endif
  213. ifeq ($(BR2_PACKAGE_USBREDIR),y)
  214. QEMU_OPTS += --enable-usb-redir
  215. QEMU_DEPENDENCIES += usbredir
  216. else
  217. QEMU_OPTS += --disable-usb-redir
  218. endif
  219. ifeq ($(BR2_STATIC_LIBS),y)
  220. QEMU_OPTS += --static
  221. endif
  222. # Override CPP, as it expects to be able to call it like it'd
  223. # call the compiler.
  224. define QEMU_CONFIGURE_CMDS
  225. unset TARGET_DIR; \
  226. cd $(@D); \
  227. LIBS='$(QEMU_LIBS)' \
  228. $(TARGET_CONFIGURE_OPTS) \
  229. $(TARGET_CONFIGURE_ARGS) \
  230. CPP="$(TARGET_CC) -E" \
  231. $(QEMU_VARS) \
  232. ./configure \
  233. --prefix=/usr \
  234. --cross-prefix=$(TARGET_CROSS) \
  235. --audio-drv-list= \
  236. --meson=$(HOST_DIR)/bin/meson \
  237. --ninja=$(HOST_DIR)/bin/ninja \
  238. --disable-alsa \
  239. --disable-bpf \
  240. --disable-brlapi \
  241. --disable-bsd-user \
  242. --disable-cap-ng \
  243. --disable-capstone \
  244. --disable-containers \
  245. --disable-coreaudio \
  246. --disable-curl \
  247. --disable-curses \
  248. --disable-dbus-display \
  249. --disable-docs \
  250. --disable-dsound \
  251. --disable-hvf \
  252. --disable-jack \
  253. --disable-libiscsi \
  254. --disable-linux-aio \
  255. --disable-linux-io-uring \
  256. --disable-malloc-trim \
  257. --disable-membarrier \
  258. --disable-mpath \
  259. --disable-netmap \
  260. --disable-opengl \
  261. --disable-oss \
  262. --disable-pa \
  263. --disable-rbd \
  264. --disable-sanitizers \
  265. --disable-selinux \
  266. --disable-sparse \
  267. --disable-strip \
  268. --disable-vde \
  269. --disable-vhost-crypto \
  270. --disable-vhost-user-blk-server \
  271. --disable-virtfs \
  272. --disable-virtiofsd \
  273. --disable-whpx \
  274. --disable-xen \
  275. --enable-attr \
  276. --enable-kvm \
  277. --enable-vhost-net \
  278. --with-git-submodules=ignore \
  279. $(QEMU_OPTS)
  280. endef
  281. define QEMU_BUILD_CMDS
  282. unset TARGET_DIR; \
  283. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  284. endef
  285. define QEMU_INSTALL_TARGET_CMDS
  286. unset TARGET_DIR; \
  287. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(QEMU_MAKE_ENV) DESTDIR=$(TARGET_DIR) install
  288. endef
  289. $(eval $(generic-package))
  290. #-------------------------------------------------------------
  291. # Host-qemu
  292. HOST_QEMU_DEPENDENCIES = \
  293. host-libglib2 \
  294. host-meson \
  295. host-pixman \
  296. host-pkgconf \
  297. host-python3 \
  298. host-slirp \
  299. host-zlib
  300. # BR ARCH qemu
  301. # ------- ----
  302. # arm arm
  303. # armeb armeb
  304. # i486 i386
  305. # i586 i386
  306. # i686 i386
  307. # x86_64 x86_64
  308. # m68k m68k
  309. # microblaze microblaze
  310. # mips mips
  311. # mipsel mipsel
  312. # mips64 mips64
  313. # mips64el mips64el
  314. # nios2 nios2
  315. # or1k or1k
  316. # powerpc ppc
  317. # powerpc64 ppc64
  318. # powerpc64le ppc64 (system) / ppc64le (usermode)
  319. # sh2a not supported
  320. # sh4 sh4
  321. # sh4eb sh4eb
  322. # sh4a sh4
  323. # sh4aeb sh4eb
  324. # sparc sparc
  325. # sparc64 sparc64
  326. # xtensa xtensa
  327. HOST_QEMU_ARCH = $(ARCH)
  328. ifeq ($(HOST_QEMU_ARCH),armeb)
  329. HOST_QEMU_SYS_ARCH = arm
  330. endif
  331. ifeq ($(HOST_QEMU_ARCH),i486)
  332. HOST_QEMU_ARCH = i386
  333. endif
  334. ifeq ($(HOST_QEMU_ARCH),i586)
  335. HOST_QEMU_ARCH = i386
  336. endif
  337. ifeq ($(HOST_QEMU_ARCH),i686)
  338. HOST_QEMU_ARCH = i386
  339. endif
  340. ifeq ($(HOST_QEMU_ARCH),powerpc)
  341. HOST_QEMU_ARCH = ppc
  342. endif
  343. ifeq ($(HOST_QEMU_ARCH),powerpc64)
  344. HOST_QEMU_ARCH = ppc64
  345. endif
  346. ifeq ($(HOST_QEMU_ARCH),powerpc64le)
  347. HOST_QEMU_ARCH = ppc64le
  348. HOST_QEMU_SYS_ARCH = ppc64
  349. endif
  350. ifeq ($(HOST_QEMU_ARCH),sh4a)
  351. HOST_QEMU_ARCH = sh4
  352. endif
  353. ifeq ($(HOST_QEMU_ARCH),sh4aeb)
  354. HOST_QEMU_ARCH = sh4eb
  355. endif
  356. HOST_QEMU_SYS_ARCH ?= $(HOST_QEMU_ARCH)
  357. HOST_QEMU_CFLAGS = $(HOST_CFLAGS)
  358. ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y)
  359. HOST_QEMU_TARGETS += $(HOST_QEMU_SYS_ARCH)-softmmu
  360. HOST_QEMU_OPTS += --enable-system --enable-fdt
  361. HOST_QEMU_CFLAGS += -I$(HOST_DIR)/include/libfdt
  362. HOST_QEMU_DEPENDENCIES += host-dtc
  363. else
  364. HOST_QEMU_OPTS += --disable-system
  365. endif
  366. ifeq ($(BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE),y)
  367. HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-linux-user
  368. HOST_QEMU_OPTS += --enable-linux-user
  369. HOST_QEMU_HOST_SYSTEM_TYPE = $(shell uname -s)
  370. ifneq ($(HOST_QEMU_HOST_SYSTEM_TYPE),Linux)
  371. $(error "qemu-user can only be used on Linux hosts")
  372. endif
  373. else # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE
  374. HOST_QEMU_OPTS += --disable-linux-user
  375. endif # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE
  376. ifeq ($(BR2_PACKAGE_HOST_QEMU_VDE2),y)
  377. HOST_QEMU_OPTS += --enable-vde
  378. HOST_QEMU_DEPENDENCIES += host-vde2
  379. endif
  380. # virtfs-proxy-helper is the only user of libcap-ng.
  381. ifeq ($(BR2_PACKAGE_HOST_QEMU_VIRTFS),y)
  382. HOST_QEMU_OPTS += --enable-virtfs --enable-cap-ng
  383. HOST_QEMU_DEPENDENCIES += host-libcap-ng
  384. else
  385. HOST_QEMU_OPTS += --disable-virtfs --disable-cap-ng
  386. endif
  387. ifeq ($(BR2_PACKAGE_HOST_QEMU_USB),y)
  388. HOST_QEMU_OPTS += --enable-libusb
  389. HOST_QEMU_DEPENDENCIES += host-libusb
  390. else
  391. HOST_QEMU_OPTS += --disable-libusb
  392. endif
  393. # Override CPP, as it expects to be able to call it like it'd
  394. # call the compiler.
  395. define HOST_QEMU_CONFIGURE_CMDS
  396. unset TARGET_DIR; \
  397. cd $(@D); $(HOST_CONFIGURE_OPTS) CPP="$(HOSTCC) -E" \
  398. ./configure \
  399. --target-list="$(HOST_QEMU_TARGETS)" \
  400. --prefix="$(HOST_DIR)" \
  401. --interp-prefix=$(STAGING_DIR) \
  402. --cc="$(HOSTCC)" \
  403. --host-cc="$(HOSTCC)" \
  404. --extra-cflags="$(HOST_QEMU_CFLAGS)" \
  405. --extra-ldflags="$(HOST_LDFLAGS)" \
  406. --meson=$(HOST_DIR)/bin/meson \
  407. --ninja=$(HOST_DIR)/bin/ninja \
  408. --disable-alsa \
  409. --disable-bpf \
  410. --disable-bzip2 \
  411. --disable-containers \
  412. --disable-coreaudio \
  413. --disable-curl \
  414. --disable-dbus-display \
  415. --disable-docs \
  416. --disable-dsound \
  417. --disable-jack \
  418. --disable-libssh \
  419. --disable-linux-aio \
  420. --disable-linux-io-uring \
  421. --disable-netmap \
  422. --disable-oss \
  423. --disable-pa \
  424. --disable-sdl \
  425. --disable-selinux \
  426. --disable-vde \
  427. --disable-vhost-user-blk-server \
  428. --disable-virtiofsd \
  429. --disable-vnc-jpeg \
  430. --disable-png \
  431. --disable-vnc-sasl \
  432. --enable-slirp \
  433. --enable-tools \
  434. $(HOST_QEMU_OPTS)
  435. endef
  436. define HOST_QEMU_BUILD_CMDS
  437. unset TARGET_DIR; \
  438. $(HOST_MAKE_ENV) $(MAKE) -C $(@D)
  439. endef
  440. define HOST_QEMU_INSTALL_CMDS
  441. unset TARGET_DIR; \
  442. $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install
  443. endef
  444. # install symlink to qemu-system
  445. define HOST_QEMU_POST_INSTALL_SYMLINK
  446. ln -sf ./qemu-system-$(HOST_QEMU_ARCH) $(HOST_DIR)/bin/qemu-system
  447. endef
  448. HOST_QEMU_POST_INSTALL_HOOKS += HOST_QEMU_POST_INSTALL_SYMLINK
  449. $(eval $(host-generic-package))
  450. # variable used by other packages
  451. QEMU_USER = $(HOST_DIR)/bin/qemu-$(HOST_QEMU_ARCH)