 e0091133e3
			
		
	
	
		e0091133e3
		
	
	
	
	
		
			
			If configuring with "--disable-system --disable-user --enable-guest-agent" the linking currently fails with: qga/qemu-ga.p/commands.c.o: In function `qmp_command_info': build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined reference to `qmp_command_name' build/../../home/thuth/devel/qemu/qga/commands.c:71: undefined reference to `qmp_command_is_enabled' build/../../home/thuth/devel/qemu/qga/commands.c:72: undefined reference to `qmp_has_success_response' qga/qemu-ga.p/commands.c.o: In function `qmp_guest_info': build/../../home/thuth/devel/qemu/qga/commands.c:82: undefined reference to `qmp_for_each_command' qga/qemu-ga.p/commands.c.o: In function `qmp_guest_exec': build/../../home/thuth/devel/qemu/qga/commands.c:410: undefined reference to `qbase64_decode' qga/qemu-ga.p/channel-posix.c.o: In function `ga_channel_open': build/../../home/thuth/devel/qemu/qga/channel-posix.c:214: undefined reference to `unix_listen' build/../../home/thuth/devel/qemu/qga/channel-posix.c:228: undefined reference to `socket_parse' build/../../home/thuth/devel/qemu/qga/channel-posix.c:234: undefined reference to `socket_listen' qga/qemu-ga.p/commands-posix.c.o: In function `qmp_guest_file_write': build/../../home/thuth/devel/qemu/qga/commands-posix.c:527: undefined reference to `qbase64_decode' Let's make sure that we also compile and link the required files if the system emulators have not been enabled. Message-Id: <20221110083626.31899-1-thuth@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Thomas Huth <thuth@redhat.com>
		
			
				
	
	
		
			145 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Meson
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Meson
		
	
	
	
	
	
| util_ss.add(files(
 | |
|   'opts-visitor.c',
 | |
|   'qapi-clone-visitor.c',
 | |
|   'qapi-dealloc-visitor.c',
 | |
|   'qapi-forward-visitor.c',
 | |
|   'qapi-util.c',
 | |
|   'qapi-visit-core.c',
 | |
|   'qobject-input-visitor.c',
 | |
|   'qobject-output-visitor.c',
 | |
|   'string-input-visitor.c',
 | |
|   'string-output-visitor.c',
 | |
| ))
 | |
| if have_system
 | |
|   util_ss.add(files('qapi-type-helpers.c'))
 | |
| endif
 | |
| if have_system or have_tools or have_ga
 | |
|   util_ss.add(files(
 | |
|     'qmp-dispatch.c',
 | |
|     'qmp-event.c',
 | |
|     'qmp-registry.c',
 | |
|   ))
 | |
| endif
 | |
| 
 | |
| qapi_all_modules = [
 | |
|   'authz',
 | |
|   'block',
 | |
|   'block-core',
 | |
|   'block-export',
 | |
|   'char',
 | |
|   'common',
 | |
|   'compat',
 | |
|   'control',
 | |
|   'crypto',
 | |
|   'dump',
 | |
|   'error',
 | |
|   'introspect',
 | |
|   'job',
 | |
|   'machine',
 | |
|   'machine-target',
 | |
|   'migration',
 | |
|   'misc',
 | |
|   'misc-target',
 | |
|   'net',
 | |
|   'pragma',
 | |
|   'qom',
 | |
|   'replay',
 | |
|   'run-state',
 | |
|   'sockets',
 | |
|   'stats',
 | |
|   'trace',
 | |
|   'transaction',
 | |
|   'virtio',
 | |
|   'yank',
 | |
| ]
 | |
| if have_system
 | |
|   qapi_all_modules += [
 | |
|     'acpi',
 | |
|     'audio',
 | |
|     'qdev',
 | |
|     'pci',
 | |
|     'rdma',
 | |
|     'rocker',
 | |
|     'tpm',
 | |
|   ]
 | |
| endif
 | |
| if have_system or have_tools
 | |
|   qapi_all_modules += [
 | |
|     'ui',
 | |
|   ]
 | |
| endif
 | |
| 
 | |
| qapi_nonmodule_outputs = [
 | |
|   'qapi-introspect.c', 'qapi-introspect.h',
 | |
|   'qapi-types.c', 'qapi-types.h',
 | |
|   'qapi-visit.h', 'qapi-visit.c',
 | |
|   'qapi-commands.h', 'qapi-commands.c',
 | |
|   'qapi-init-commands.h', 'qapi-init-commands.c',
 | |
|   'qapi-events.h', 'qapi-events.c',
 | |
|   'qapi-emit-events.c', 'qapi-emit-events.h',
 | |
| ]
 | |
| 
 | |
| # First build all sources
 | |
| qapi_util_outputs = [
 | |
|   'qapi-builtin-types.c', 'qapi-builtin-visit.c',
 | |
|   'qapi-builtin-types.h', 'qapi-builtin-visit.h',
 | |
| ]
 | |
| 
 | |
| qapi_inputs = []
 | |
| qapi_specific_outputs = []
 | |
| foreach module : qapi_all_modules
 | |
|   qapi_inputs += [ files(module + '.json') ]
 | |
|   qapi_module_outputs = [
 | |
|     'qapi-types-@0@.c'.format(module),
 | |
|     'qapi-types-@0@.h'.format(module),
 | |
|     'qapi-visit-@0@.c'.format(module),
 | |
|     'qapi-visit-@0@.h'.format(module),
 | |
|   ]
 | |
|   if have_system or have_tools
 | |
|     qapi_module_outputs += [
 | |
|       'qapi-events-@0@.c'.format(module),
 | |
|       'qapi-events-@0@.h'.format(module),
 | |
|       'qapi-commands-@0@.c'.format(module),
 | |
|       'qapi-commands-@0@.h'.format(module),
 | |
|       'qapi-commands-@0@.trace-events'.format(module),
 | |
|     ]
 | |
|   endif
 | |
|   if module.endswith('-target')
 | |
|     qapi_specific_outputs += qapi_module_outputs
 | |
|   else
 | |
|     qapi_util_outputs += qapi_module_outputs
 | |
|   endif
 | |
| endforeach
 | |
| 
 | |
| qapi_files = custom_target('shared QAPI source files',
 | |
|   output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs,
 | |
|   input: [ files('qapi-schema.json') ],
 | |
|   command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ],
 | |
|   depend_files: [ qapi_inputs, qapi_gen_depends ])
 | |
| 
 | |
| # Now go through all the outputs and add them to the right sourceset.
 | |
| # These loops must be synchronized with the output of the above custom target.
 | |
| 
 | |
| i = 0
 | |
| foreach output : qapi_util_outputs
 | |
|   if output.endswith('.h')
 | |
|     genh += qapi_files[i]
 | |
|   endif
 | |
|   if output.endswith('.trace-events')
 | |
|     qapi_trace_events += qapi_files[i]
 | |
|   endif
 | |
|   util_ss.add(qapi_files[i])
 | |
|   i = i + 1
 | |
| endforeach
 | |
| 
 | |
| foreach output : qapi_specific_outputs + qapi_nonmodule_outputs
 | |
|   if output.endswith('.h')
 | |
|     genh += qapi_files[i]
 | |
|   endif
 | |
|   if output.endswith('.trace-events')
 | |
|     qapi_trace_events += qapi_files[i]
 | |
|   endif
 | |
|   specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: qapi_files[i])
 | |
|   i = i + 1
 | |
| endforeach
 |