mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 12:07:31 +00:00 
			
		
		
		
	meson: infrastructure for building emulators
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									d3b1848096
								
							
						
					
					
						commit
						2becc36a3e
					
				
							
								
								
									
										74
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								Makefile
									
									
									
									
									
								
							| @ -121,8 +121,6 @@ include $(SRC_PATH)/rules.mak | ||||
| # lor is defined in rules.mak
 | ||||
| CONFIG_BLOCK := $(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)) | ||||
| 
 | ||||
| generated-files-y = config-host.h | ||||
| 
 | ||||
| generated-files-y += module_block.h | ||||
| generated-files-y += target/s390x/gen-features.h | ||||
| target/s390x/gen-features.h: Makefile.ninja | ||||
| @ -178,65 +176,6 @@ DOCS= | ||||
| endif | ||||
| 
 | ||||
| SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory --quiet) BUILD_DIR=$(BUILD_DIR) | ||||
| SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(filter %-softmmu, $(TARGET_DIRS))) | ||||
| SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %.d, $(SUBDIR_DEVICES_MAK)) | ||||
| 
 | ||||
| ifeq ($(SUBDIR_DEVICES_MAK),) | ||||
| config-all-devices.mak: config-host.mak | ||||
| 	$(call quiet-command,echo '# no devices' > $@,"GEN","$@") | ||||
| else | ||||
| config-all-devices.mak: $(SUBDIR_DEVICES_MAK) config-host.mak | ||||
| 	$(call quiet-command, sed -n \
 | ||||
|              's|^\([^=]*\)=\(.*\)$$|\1:=$$(findstring y,$$(\1)\2)|p' \
 | ||||
|              $(SUBDIR_DEVICES_MAK) | sort -u > $@, \
 | ||||
|              "GEN","$@") | ||||
| endif | ||||
| 
 | ||||
| -include $(SUBDIR_DEVICES_MAK_DEP) | ||||
| 
 | ||||
| # This has to be kept in sync with Kconfig.host.
 | ||||
| MINIKCONF_ARGS = \
 | ||||
|     $(CONFIG_MINIKCONF_MODE) \
 | ||||
|     $@ $*/config-devices.mak.d $< $(SRC_PATH)/Kconfig \
 | ||||
|     CONFIG_TCG=$(CONFIG_TCG) \
 | ||||
|     CONFIG_KVM=$(CONFIG_KVM) \
 | ||||
|     CONFIG_SPICE=$(CONFIG_SPICE) \
 | ||||
|     CONFIG_IVSHMEM=$(CONFIG_IVSHMEM) \
 | ||||
|     CONFIG_TPM=$(CONFIG_TPM) \
 | ||||
|     CONFIG_XEN=$(CONFIG_XEN) \
 | ||||
|     CONFIG_OPENGL=$(CONFIG_OPENGL) \
 | ||||
|     CONFIG_X11=$(CONFIG_X11) \
 | ||||
|     CONFIG_VHOST_USER=$(CONFIG_VHOST_USER) \
 | ||||
|     CONFIG_VHOST_KERNEL=$(CONFIG_VHOST_KERNEL) \
 | ||||
|     CONFIG_VIRTFS=$(CONFIG_VIRTFS) \
 | ||||
|     CONFIG_LINUX=$(CONFIG_LINUX) \
 | ||||
|     CONFIG_PVRDMA=$(CONFIG_PVRDMA) | ||||
| 
 | ||||
| MINIKCONF = $(PYTHON) $(SRC_PATH)/scripts/minikconf.py | ||||
| 
 | ||||
| $(SUBDIR_DEVICES_MAK): %/config-devices.mak: default-configs/%.mak $(SRC_PATH)/Kconfig $(BUILD_DIR)/config-host.mak | ||||
| 	$(call quiet-command, $(MINIKCONF) $(MINIKCONF_ARGS) \
 | ||||
| 		> $@.tmp, "GEN", "$@.tmp") | ||||
| 	$(call quiet-command, if test -f $@; then \
 | ||||
| 	  if cmp -s $@.old $@; then \
 | ||||
| 	    mv $@.tmp $@; \
 | ||||
| 	    cp -p $@ $@.old; \
 | ||||
| 	  else \
 | ||||
| 	    if test -f $@.old; then \
 | ||||
| 	      echo "WARNING: $@ (user modified) out of date.";\
 | ||||
| 	    else \
 | ||||
| 	      echo "WARNING: $@ out of date.";\
 | ||||
| 	    fi; \
 | ||||
| 	    echo "Run \"$(MAKE) defconfig\" to regenerate."; \
 | ||||
| 	    rm $@.tmp; \
 | ||||
| 	  fi; \
 | ||||
| 	 else \
 | ||||
| 	  mv $@.tmp $@; \
 | ||||
| 	  cp -p $@ $@.old; \
 | ||||
| 	 fi,"GEN","$@"); | ||||
| 
 | ||||
| defconfig: | ||||
| 	rm -f config-all-devices.mak $(SUBDIR_DEVICES_MAK) | ||||
| 
 | ||||
| ifneq ($(wildcard config-host.mak),) | ||||
| include $(SRC_PATH)/Makefile.objs | ||||
| @ -279,10 +218,15 @@ $(SOFTMMU_FUZZ_RULES): $(io-obj-y) | ||||
| $(SOFTMMU_FUZZ_RULES): config-all-devices.mak | ||||
| $(SOFTMMU_FUZZ_RULES): $(edk2-decompressed) | ||||
| 
 | ||||
| # meson: this is sub-optimal but going away after conversion
 | ||||
| TARGET_DEPS = $(patsubst %,%-config-target.h, $(TARGET_DIRS)) | ||||
| TARGET_DEPS += $(patsubst %,%-config-devices.h, $(filter %-softmmu,$(TARGET_DIRS))) | ||||
| TARGET_DEPS += $(patsubst %,libqemu-%.fa, $(TARGET_DIRS)) | ||||
| 
 | ||||
| .PHONY: $(TARGET_DIRS_RULES) | ||||
| # The $(TARGET_DIRS_RULES) are of the form SUBDIR/GOAL, so that
 | ||||
| # $(dir $@) yields the sub-directory, and $(notdir $@) yields the sub-goal
 | ||||
| $(TARGET_DIRS_RULES): | ||||
| $(TARGET_DIRS_RULES): $(TARGET_DEPS) | ||||
| 	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" $(notdir $@),) | ||||
| 
 | ||||
| # LIBFDT_lib="": avoid breaking existing trees with objects requiring -fPIC
 | ||||
| @ -370,7 +314,6 @@ clean: recurse-clean ninja-clean clean-ctlist | ||||
| 	-test -f ninjatool && ./ninjatool $(if $(V),-v,) -t clean | ||||
| # avoid old build problems by removing potentially incorrect old files
 | ||||
| 	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h | ||||
| 	rm -f qemu-options.def | ||||
| 	find . \( -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f \
 | ||||
| 		! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-aarch64.a \
 | ||||
| 		! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
 | ||||
| @ -379,8 +322,6 @@ clean: recurse-clean ninja-clean clean-ctlist | ||||
| 	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) TAGS cscope.* *.pod *~ */*~ | ||||
| 	rm -f fsdev/*.pod scsi/*.pod | ||||
| 	rm -f $(foreach f,$(generated-files-y),$(f) $(f)-timestamp) | ||||
| 	rm -f config-all-devices.mak | ||||
| 	rm -f $(SUBDIR_DEVICES_MAK) | ||||
| 
 | ||||
| VERSION ?= $(shell cat VERSION) | ||||
| 
 | ||||
| @ -398,8 +339,7 @@ distclean: clean ninja-distclean | ||||
| 	-test -f ninjatool && ./ninjatool $(if $(V),-v,) -t clean -g | ||||
| 	rm -f config-host.mak config-host.h* $(DOCS) | ||||
| 	rm -f tests/tcg/config-*.mak | ||||
| 	rm -f config-all-devices.mak config-all-disas.mak config.status | ||||
| 	rm -f $(SUBDIR_DEVICES_MAK) | ||||
| 	rm -f config-all-disas.mak config.status | ||||
| 	rm -f po/*.mo tests/qemu-iotests/common.env | ||||
| 	rm -f roms/seabios/config.mak roms/vgabios/config.mak | ||||
| 	rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols | ||||
|  | ||||
| @ -6,8 +6,10 @@ include ../config-host.mak | ||||
| include config-target.mak | ||||
| include $(SRC_PATH)/rules.mak | ||||
| 
 | ||||
| FULL_TARGET_NAME=$(TARGET_NAME)-$(if $(CONFIG_SOFTMMU),softmmu,linux-user) | ||||
| 
 | ||||
| ifdef CONFIG_SOFTMMU | ||||
| include config-devices.mak | ||||
| include ../$(FULL_TARGET_NAME)-config-devices.mak | ||||
| endif | ||||
| 
 | ||||
| $(call set-vpath, $(SRC_PATH):$(BUILD_DIR)) | ||||
| @ -18,6 +20,9 @@ QEMU_CFLAGS += -iquote .. -iquote $(SRC_PATH)/target/$(TARGET_BASE_ARCH) -DNEED_ | ||||
| 
 | ||||
| QEMU_CFLAGS+=-iquote $(SRC_PATH)/include | ||||
| 
 | ||||
| QEMU_CFLAGS += -DCONFIG_TARGET=\"../$(FULL_TARGET_NAME)-config-target.h\" | ||||
| QEMU_CFLAGS += -DCONFIG_DEVICES=\"../$(FULL_TARGET_NAME)-config-devices.h\" | ||||
| 
 | ||||
| ifdef CONFIG_USER_ONLY | ||||
| # user emulator name
 | ||||
| QEMU_PROG=qemu-$(TARGET_NAME) | ||||
| @ -36,15 +41,10 @@ QEMU_PROG_BUILD = $(QEMU_PROG) | ||||
| endif | ||||
| endif | ||||
| 
 | ||||
| LIBQEMU = ../libqemu-$(FULL_TARGET_NAME).fa | ||||
| PROGS=$(QEMU_PROG) $(QEMU_PROGW) | ||||
| STPFILES= | ||||
| 
 | ||||
| config-target.h: config-target.h-timestamp | ||||
| config-target.h-timestamp: config-target.mak | ||||
| 
 | ||||
| config-devices.h: config-devices.h-timestamp | ||||
| config-devices.h-timestamp: config-devices.mak | ||||
| 
 | ||||
| ifdef CONFIG_TRACE_SYSTEMTAP | ||||
| stap: $(QEMU_PROG).stp-installed $(QEMU_PROG).stp $(QEMU_PROG)-simpletrace.stp $(QEMU_PROG)-log.stp | ||||
| 
 | ||||
| @ -103,6 +103,7 @@ all: $(PROGS) stap | ||||
| # Dummy command so that make thinks it has done something
 | ||||
| 	@true | ||||
| 
 | ||||
| obj-y += $(LIBQEMU) | ||||
| obj-y += trace/ | ||||
| 
 | ||||
| #########################################################
 | ||||
| @ -169,7 +170,6 @@ obj-y += hw/$(TARGET_BASE_ARCH)/ | ||||
| endif | ||||
| 
 | ||||
| generated-files-y += hmp-commands.h hmp-commands-info.h | ||||
| generated-files-y += config-devices.h | ||||
| 
 | ||||
| endif # CONFIG_SOFTMMU
 | ||||
| 
 | ||||
| @ -210,7 +210,7 @@ all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y) | ||||
| all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y) | ||||
| 
 | ||||
| ifdef CONFIG_SOFTMMU | ||||
| $(QEMU_PROG_BUILD): config-devices.mak | ||||
| $(QEMU_PROG_BUILD): ../$(FULL_TARGET_NAME)-config-devices.mak | ||||
| endif | ||||
| 
 | ||||
| COMMON_LDADDS = ../libqemuutil.a | ||||
| @ -262,5 +262,4 @@ ifdef CONFIG_TRACE_SYSTEMTAP | ||||
| 	$(INSTALL_DATA) $(QEMU_PROG)-log.stp "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset/$(QEMU_PROG)-log.stp" | ||||
| endif | ||||
| 
 | ||||
| generated-files-y += config-target.h | ||||
| Makefile: $(generated-files-y) | ||||
|  | ||||
							
								
								
									
										6
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @ -8169,18 +8169,12 @@ fi | ||||
| 
 | ||||
| if supported_xen_target $target; then | ||||
|     echo "CONFIG_XEN=y" >> $config_target_mak | ||||
|     echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak | ||||
|     if test "$xen_pci_passthrough" = yes; then | ||||
|         echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" | ||||
|     fi | ||||
| else | ||||
|     echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak | ||||
| fi | ||||
| if supported_kvm_target $target; then | ||||
|     echo "CONFIG_KVM=y" >> $config_target_mak | ||||
|     echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak | ||||
| else | ||||
|     echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak | ||||
| fi | ||||
| if supported_hax_target $target; then | ||||
|     echo "CONFIG_HAX=y" >> $config_target_mak | ||||
|  | ||||
| @ -22,7 +22,7 @@ | ||||
| #include "hw/nvram/fw_cfg.h" | ||||
| #include "e820_memory_layout.h" | ||||
| #include "kvm_i386.h" | ||||
| #include "config-devices.h" | ||||
| #include CONFIG_DEVICES | ||||
| 
 | ||||
| struct hpet_fw_config hpet_cfg = {.count = UINT8_MAX}; | ||||
| 
 | ||||
|  | ||||
| @ -92,10 +92,10 @@ | ||||
| #include "hw/mem/memory-device.h" | ||||
| #include "sysemu/replay.h" | ||||
| #include "qapi/qmp/qerror.h" | ||||
| #include "config-devices.h" | ||||
| #include "e820_memory_layout.h" | ||||
| #include "fw_cfg.h" | ||||
| #include "trace.h" | ||||
| #include CONFIG_DEVICES | ||||
| 
 | ||||
| GlobalProperty pc_compat_5_0[] = { | ||||
| }; | ||||
|  | ||||
| @ -23,7 +23,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include "qemu/osdep.h" | ||||
| #include "config-devices.h" | ||||
| #include CONFIG_DEVICES | ||||
| 
 | ||||
| #include "qemu/units.h" | ||||
| #include "hw/loader.h" | ||||
|  | ||||
| @ -49,7 +49,7 @@ | ||||
| #include "multiboot.h" | ||||
| #include "elf.h" | ||||
| #include "standard-headers/asm-x86/bootparam.h" | ||||
| #include "config-devices.h" | ||||
| #include CONFIG_DEVICES | ||||
| #include "kvm_i386.h" | ||||
| 
 | ||||
| #define BIOS_FILENAME "bios.bin" | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include "qemu/osdep.h" | ||||
| #include "config-devices.h" | ||||
| #include CONFIG_DEVICES | ||||
| #include "exec/memop.h" | ||||
| #include "qemu/units.h" | ||||
| #include "qemu/error-report.h" | ||||
|  | ||||
| @ -29,7 +29,7 @@ | ||||
| #include "migration/misc.h" | ||||
| #include "hw/boards.h" | ||||
| #include "hw/qdev-properties.h" | ||||
| #include "config-devices.h" | ||||
| #include CONFIG_DEVICES | ||||
| #include "trace.h" | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
| @ -29,7 +29,7 @@ | ||||
| 
 | ||||
| #include "config-host.h" | ||||
| #ifdef NEED_CPU_H | ||||
| #include "config-target.h" | ||||
| #include CONFIG_TARGET | ||||
| #else | ||||
| #include "exec/poison.h" | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										166
									
								
								meson.build
									
									
									
									
									
								
							
							
						
						
									
										166
									
								
								meson.build
									
									
									
									
									
								
							| @ -9,6 +9,7 @@ ss = import('sourceset') | ||||
| sh = find_program('sh') | ||||
| cc = meson.get_compiler('c') | ||||
| config_host = keyval.load(meson.current_build_dir() / 'config-host.mak') | ||||
| config_all_disas = keyval.load(meson.current_build_dir() / 'config-all-disas.mak') | ||||
| 
 | ||||
| add_project_arguments(config_host['QEMU_CFLAGS'].split(), | ||||
|                       native: false, language: ['c', 'objc']) | ||||
| @ -151,16 +152,96 @@ if 'CONFIG_LIBUDEV' in config_host | ||||
|   libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split()) | ||||
| endif | ||||
| 
 | ||||
| create_config = find_program('scripts/create_config') | ||||
| minikconf = find_program('scripts/minikconf.py') | ||||
| target_dirs = config_host['TARGET_DIRS'].split() | ||||
| have_user = false | ||||
| have_system = false | ||||
| config_devices_mak_list = [] | ||||
| config_devices_h = {} | ||||
| config_target_mak = {} | ||||
| kconfig_external_symbols = [ | ||||
|   'CONFIG_KVM', | ||||
|   'CONFIG_XEN', | ||||
|   'CONFIG_TPM', | ||||
|   'CONFIG_SPICE', | ||||
|   'CONFIG_IVSHMEM', | ||||
|   'CONFIG_OPENGL', | ||||
|   'CONFIG_X11', | ||||
|   'CONFIG_VHOST_USER', | ||||
|   'CONFIG_VHOST_KERNEL', | ||||
|   'CONFIG_VIRTFS', | ||||
|   'CONFIG_LINUX', | ||||
|   'CONFIG_PVRDMA', | ||||
| ] | ||||
| foreach target : target_dirs | ||||
|   have_user = have_user or target.endswith('-user') | ||||
|   have_system = have_system or target.endswith('-softmmu') | ||||
|   config_target = keyval.load(meson.current_build_dir() / target / 'config-target.mak') + config_host | ||||
| 
 | ||||
|   if target.endswith('-softmmu') | ||||
|     have_system = true | ||||
| 
 | ||||
|     base_kconfig = [] | ||||
|     foreach sym : kconfig_external_symbols | ||||
|       if sym in config_target | ||||
|         base_kconfig += '@0@=y'.format(sym) | ||||
|       endif | ||||
|     endforeach | ||||
| 
 | ||||
|     config_devices_mak = target + '-config-devices.mak' | ||||
|     config_devices_mak = configure_file( | ||||
|       input: ['default-configs' / target + '.mak', 'Kconfig'], | ||||
|       output: config_devices_mak, | ||||
|       depfile: config_devices_mak + '.d', | ||||
|       capture: true, | ||||
|       command: [minikconf, config_host['CONFIG_MINIKCONF_MODE'], | ||||
|                 config_devices_mak, '@DEPFILE@', '@INPUT@', | ||||
|                 base_kconfig]) | ||||
|     config_devices_h += {target: custom_target( | ||||
|       target + '-config-devices.h', | ||||
|       input: config_devices_mak, | ||||
|       output: target + '-config-devices.h', | ||||
|       capture: true, | ||||
|       command: [create_config, '@INPUT@'])} | ||||
|     config_devices_mak_list += config_devices_mak | ||||
|     config_target += keyval.load(config_devices_mak) | ||||
|   endif | ||||
|   config_target_mak += {target: config_target} | ||||
| endforeach | ||||
| have_tools = 'CONFIG_TOOLS' in config_host | ||||
| have_block = have_system or have_tools | ||||
| 
 | ||||
| grepy = find_program('scripts/grepy.sh') | ||||
| # This configuration is used to build files that are shared by | ||||
| # multiple binaries, and then extracted out of the "common" | ||||
| # static_library target. | ||||
| # | ||||
| # We do not use all_sources()/all_dependencies(), because it would | ||||
| # build literally all source files, including devices only used by | ||||
| # targets that are not built for this compilation.  The CONFIG_ALL | ||||
| # pseudo symbol replaces it. | ||||
| 
 | ||||
| if have_system | ||||
|   config_all_devices_mak = configure_file( | ||||
|     output: 'config-all-devices.mak', | ||||
|     input: config_devices_mak_list, | ||||
|     capture: true, | ||||
|     command: [grepy, '@INPUT@'], | ||||
|   ) | ||||
|   config_all_devices = keyval.load(config_all_devices_mak) | ||||
| else | ||||
|   config_all_devices = {} | ||||
| endif | ||||
| config_all = config_all_devices | ||||
| config_all += config_host | ||||
| config_all += config_all_disas | ||||
| config_all += { | ||||
|   'CONFIG_XEN': config_host.has_key('CONFIG_XEN_BACKEND'), | ||||
|   'CONFIG_SOFTMMU': have_system, | ||||
|   'CONFIG_USER_ONLY': have_user, | ||||
|   'CONFIG_ALL': true, | ||||
| } | ||||
| 
 | ||||
| # Generators | ||||
| 
 | ||||
| genh = [] | ||||
| @ -202,6 +283,13 @@ qemu_version = custom_target('qemu-version.h', | ||||
|                              build_always_stale: true) | ||||
| genh += qemu_version | ||||
| 
 | ||||
| config_host_h = custom_target('config-host.h', | ||||
|                               input: meson.current_build_dir() / 'config-host.mak', | ||||
|                               output: 'config-host.h', | ||||
|                               capture: true, | ||||
|                               command: [create_config, '@INPUT@']) | ||||
| genh += config_host_h | ||||
| 
 | ||||
| hxdep = [] | ||||
| hx_headers = [ | ||||
|   ['qemu-options.hx', 'qemu-options.def'], | ||||
| @ -228,6 +316,16 @@ genh += hxdep | ||||
| util_ss = ss.source_set() | ||||
| stub_ss = ss.source_set() | ||||
| trace_ss = ss.source_set() | ||||
| common_ss = ss.source_set() | ||||
| softmmu_ss = ss.source_set() | ||||
| user_ss = ss.source_set() | ||||
| bsd_user_ss = ss.source_set() | ||||
| linux_user_ss = ss.source_set() | ||||
| specific_ss = ss.source_set() | ||||
| 
 | ||||
| hw_arch = {} | ||||
| target_arch = {} | ||||
| target_softmmu_arch = {} | ||||
| 
 | ||||
| ############### | ||||
| # Trace files # | ||||
| @ -336,10 +434,10 @@ subdir('ui') | ||||
| 
 | ||||
| # Build targets from sourcesets | ||||
| 
 | ||||
| stub_ss = stub_ss.apply(config_host, strict: false) | ||||
| stub_ss = stub_ss.apply(config_all, strict: false) | ||||
| 
 | ||||
| util_ss.add_all(trace_ss) | ||||
| util_ss = util_ss.apply(config_host, strict: false) | ||||
| util_ss = util_ss.apply(config_all, strict: false) | ||||
| libqemuutil = static_library('qemuutil', | ||||
|                              sources: util_ss.sources() + stub_ss.sources() + genh, | ||||
|                              dependencies: [util_ss.dependencies(), m, glib, socket]) | ||||
| @ -350,6 +448,68 @@ subdir('io') | ||||
| subdir('fsdev') | ||||
| subdir('target') | ||||
| 
 | ||||
| common_ss.add_all(when: 'CONFIG_SOFTMMU', if_true: softmmu_ss) | ||||
| common_ss.add_all(when: 'CONFIG_USER_ONLY', if_true: user_ss) | ||||
| 
 | ||||
| common_all = common_ss.apply(config_all, strict: false) | ||||
| common_all = static_library('common', | ||||
|                             build_by_default: false, | ||||
|                             sources: common_all.sources() + genh, | ||||
|                             dependencies: common_all.dependencies(), | ||||
|                             name_suffix: 'fa') | ||||
| 
 | ||||
| foreach target : target_dirs | ||||
|   config_target = config_target_mak[target] | ||||
|   target_name = config_target['TARGET_NAME'] | ||||
|   arch = config_target['TARGET_BASE_ARCH'] | ||||
|   arch_srcs = [] | ||||
| 
 | ||||
|   target_inc = [include_directories('target' / config_target['TARGET_BASE_ARCH'])] | ||||
|   if targetos == 'linux' | ||||
|     target_inc += include_directories('linux-headers', is_system: true) | ||||
|   endif | ||||
|   if target.endswith('-softmmu') | ||||
|     qemu_target_name = 'qemu-system-' + target_name | ||||
|     target_type='system' | ||||
|     arch_srcs += config_devices_h[target] | ||||
|   else | ||||
|     target_type='user' | ||||
|     qemu_target_name = 'qemu-' + target_name | ||||
|     if 'CONFIG_LINUX_USER' in config_target | ||||
|       base_dir = 'linux-user' | ||||
|       target_inc += include_directories('linux-user/host/' / config_host['ARCH']) | ||||
|     else | ||||
|       base_dir = 'bsd-user' | ||||
|     endif | ||||
|     target_inc += include_directories( | ||||
|       base_dir, | ||||
|       base_dir / config_target['TARGET_ABI_DIR'], | ||||
|     ) | ||||
|   endif | ||||
| 
 | ||||
|   target_common = common_ss.apply(config_target, strict: false) | ||||
|   objects = common_all.extract_objects(target_common.sources()) | ||||
| 
 | ||||
|   # TODO: Change to generator once obj-y goes away | ||||
|   config_target_h = custom_target(target + '-config-target.h', | ||||
|                               input: meson.current_build_dir() / target / 'config-target.mak', | ||||
|                               output: target + '-config-target.h', | ||||
|                               capture: true, | ||||
|                               command: [create_config, '@INPUT@']) | ||||
| 
 | ||||
|   target_specific = specific_ss.apply(config_target, strict: false) | ||||
|   arch_srcs += target_specific.sources() | ||||
| 
 | ||||
|   static_library('qemu-' + target, | ||||
|                  sources: arch_srcs + [config_target_h] + genh, | ||||
|                  objects: objects, | ||||
|                  include_directories: target_inc, | ||||
|                  c_args: ['-DNEED_CPU_H', | ||||
|                           '-DCONFIG_TARGET="@0@-config-target.h"'.format(target), | ||||
|                           '-DCONFIG_DEVICES="@0@-config-devices.h"'.format(target)], | ||||
|                  name_suffix: 'fa') | ||||
| endforeach | ||||
| 
 | ||||
| # Other build targets | ||||
| if 'CONFIG_GUEST_AGENT' in config_host | ||||
|   subdir('qga') | ||||
|  | ||||
| @ -203,14 +203,6 @@ notempty = $(if $1,y,n) | ||||
| # Generate files with tracetool
 | ||||
| TRACETOOL=$(PYTHON) $(SRC_PATH)/scripts/tracetool.py | ||||
| 
 | ||||
| # Generate timestamp files for .h include files
 | ||||
| 
 | ||||
| config-%.h: config-%.h-timestamp | ||||
| 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@ | ||||
| 
 | ||||
| config-%.h-timestamp: config-%.mak $(SRC_PATH)/scripts/create_config | ||||
| 	$(call quiet-command, sh $(SRC_PATH)/scripts/create_config < $< > $@,"GEN","$(TARGET_DIR)config-$*.h") | ||||
| 
 | ||||
| .PHONY: clean-timestamp | ||||
| clean-timestamp: | ||||
| 	rm -f *.timestamp | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| test $# -gt 0 && exec < $1 | ||||
| 
 | ||||
| echo "/* Automatically generated by create_config - do not modify */" | ||||
| 
 | ||||
| while read line; do | ||||
|  | ||||
							
								
								
									
										3
									
								
								scripts/grepy.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								scripts/grepy.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,3 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| grep -h '=y$' "$@" | sort -u | ||||
							
								
								
									
										0
									
								
								scripts/minikconf.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								scripts/minikconf.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| @ -27,7 +27,7 @@ | ||||
| #include "qemu/error-report.h" | ||||
| #include "qemu/module.h" | ||||
| #include "qemu/cutils.h" | ||||
| #include "config-devices.h" | ||||
| #include CONFIG_DEVICES | ||||
| #ifdef CONFIG_PSERIES | ||||
| #include "hw/ppc/spapr_rtas.h" | ||||
| #endif | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Paolo Bonzini
						Paolo Bonzini