| 
									
										
										
										
											2024-11-12 11:35:34 +01:00
										 |  |  | _qemu_api_cfg = []
 | 
					
						
							| 
									
										
										
										
											2024-10-24 12:25:15 +02:00
										 |  |  | # _qemu_api_cfg += ['--cfg', 'feature="allocator"']
 | 
					
						
							|  |  |  | if rustc.version().version_compare('>=1.77.0')
 | 
					
						
							|  |  |  |   _qemu_api_cfg += ['--cfg', 'has_offset_of']
 | 
					
						
							|  |  |  | endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-03 16:28:49 +03:00
										 |  |  | _qemu_api_rs = static_library(
 | 
					
						
							|  |  |  |   'qemu_api',
 | 
					
						
							|  |  |  |   structured_sources(
 | 
					
						
							|  |  |  |     [
 | 
					
						
							|  |  |  |       'src/lib.rs',
 | 
					
						
							| 
									
										
										
										
											2024-11-12 11:52:23 +01:00
										 |  |  |       'src/bindings.rs',
 | 
					
						
							| 
									
										
										
										
											2024-10-25 08:23:53 +02:00
										 |  |  |       'src/c_str.rs',
 | 
					
						
							| 
									
										
										
										
											2024-10-03 16:28:49 +03:00
										 |  |  |       'src/definitions.rs',
 | 
					
						
							|  |  |  |       'src/device_class.rs',
 | 
					
						
							| 
									
										
										
										
											2024-10-24 12:25:15 +02:00
										 |  |  |       'src/offset_of.rs',
 | 
					
						
							| 
									
										
										
										
											2024-10-25 07:55:50 +02:00
										 |  |  |       'src/vmstate.rs',
 | 
					
						
							| 
									
										
										
										
											2024-10-18 10:51:10 +02:00
										 |  |  |       'src/zeroable.rs',
 | 
					
						
							| 
									
										
										
										
											2024-10-03 16:28:49 +03:00
										 |  |  |     ],
 | 
					
						
							|  |  |  |     {'.' : bindings_rs},
 | 
					
						
							|  |  |  |   ),
 | 
					
						
							|  |  |  |   override_options: ['rust_std=2021', 'build.rust_std=2021'],
 | 
					
						
							|  |  |  |   rust_abi: 'rust',
 | 
					
						
							| 
									
										
										
										
											2024-10-24 12:25:15 +02:00
										 |  |  |   rust_args: _qemu_api_cfg,
 | 
					
						
							| 
									
										
										
										
											2024-10-03 16:28:49 +03:00
										 |  |  | )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-25 08:23:53 +02:00
										 |  |  | rust.test('rust-qemu-api-tests', _qemu_api_rs,
 | 
					
						
							|  |  |  |           suite: ['unit', 'rust'])
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-03 16:28:49 +03:00
										 |  |  | qemu_api = declare_dependency(
 | 
					
						
							|  |  |  |   link_with: _qemu_api_rs,
 | 
					
						
							| 
									
										
										
										
											2024-10-18 16:30:56 +02:00
										 |  |  |   dependencies: qemu_api_macros,
 | 
					
						
							| 
									
										
										
										
											2024-10-03 16:28:49 +03:00
										 |  |  | )
 | 
					
						
							| 
									
										
										
										
											2024-10-18 16:30:56 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Rust executables do not support objects, so add an intermediate step.
 | 
					
						
							|  |  |  | rust_qemu_api_objs = static_library(
 | 
					
						
							|  |  |  |     'rust_qemu_api_objs',
 | 
					
						
							|  |  |  |     objects: [libqom.extract_all_objects(recursive: false),
 | 
					
						
							|  |  |  |               libhwcore.extract_all_objects(recursive: false)])
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | test('rust-qemu-api-integration',
 | 
					
						
							|  |  |  |     executable(
 | 
					
						
							|  |  |  |         'rust-qemu-api-integration',
 | 
					
						
							|  |  |  |         'tests/tests.rs',
 | 
					
						
							|  |  |  |         override_options: ['rust_std=2021', 'build.rust_std=2021'],
 | 
					
						
							|  |  |  |         rust_args: ['--test'],
 | 
					
						
							|  |  |  |         install: false,
 | 
					
						
							|  |  |  |         dependencies: [qemu_api, qemu_api_macros],
 | 
					
						
							|  |  |  |         link_whole: [rust_qemu_api_objs, libqemuutil]),
 | 
					
						
							|  |  |  |     args: [
 | 
					
						
							|  |  |  |         '--test',
 | 
					
						
							|  |  |  |         '--format', 'pretty',
 | 
					
						
							|  |  |  |     ],
 | 
					
						
							|  |  |  |     protocol: 'rust',
 | 
					
						
							|  |  |  |     suite: ['unit', 'rust'])
 |