Files
RASCSI/cpp/meson.build
Daniel Markstedt 1bd0c06bc6 meson: fix protobuf race condition and track build targets
two fixes: make sure the generated protobuf sources are available before proceeding with compilation, and track the actual build targets that get flagged in the configure summary
2026-09-01 20:25:51 +02:00

221 lines
6.2 KiB
Meson

controllers_src = [
'controllers/abstract_controller.cpp',
'controllers/controller_manager.cpp',
'controllers/phase_handler.cpp',
'controllers/sasi_controller.cpp',
'controllers/scsi_controller.cpp',
]
devices_src = [
'devices/cd_track.cpp',
'devices/cfilesystem.cpp',
'devices/ctapdriver.cpp',
'devices/device_factory.cpp',
'devices/device_logger.cpp',
'devices/device.cpp',
'devices/disk_cache.cpp',
'devices/disk_track.cpp',
'devices/disk.cpp',
'devices/host_services.cpp',
'devices/mode_page_device.cpp',
'devices/primary_device.cpp',
'devices/scsi_command_util.cpp',
'devices/sasi_hd.cpp',
'devices/scsi_daynaport.cpp',
'devices/scsi_host_bridge.cpp',
'devices/scsi_printer.cpp',
'devices/scsi_streamer.cpp',
'devices/scsicd.cpp',
'devices/scsihd_nec.cpp',
'devices/scsihd.cpp',
'devices/scsimo.cpp',
'devices/storage_device.cpp',
]
hal_src = [
'hal/bus.cpp',
'hal/connection_profile.cpp',
'hal/data_sample.cpp',
'hal/gpiobus_factory.cpp',
'hal/gpiobus_raspberry.cpp',
'hal/gpiobus_virtual.cpp',
'hal/gpiobus.cpp',
'hal/sbc_version.cpp',
'hal/systimer_raspberry.cpp',
'hal/systimer.cpp',
]
piscsi_core_src = [
'piscsi/command_context.cpp',
'piscsi/localizer.cpp',
'piscsi/piscsi_core.cpp',
'piscsi/piscsi_executor.cpp',
'piscsi/piscsi_image.cpp',
'piscsi/piscsi_response.cpp',
'piscsi/piscsi_service.cpp',
] + controllers_src + devices_src + hal_src
piscsi_src = [
'piscsi/piscsi.cpp',
]
scsictl_core_src = [
'scsictl/scsictl_commands.cpp',
'scsictl/scsictl_core.cpp',
'scsictl/scsictl_display.cpp',
'scsictl/scsictl_parser.cpp',
]
scsictl_src = [
'scsictl/scsictl.cpp',
]
scsidump_core_src = [
'scsidump/scsidump_core.cpp',
]
scsidump_src = [
'scsidump/scsidump.cpp',
] + scsidump_core_src + hal_src
sasidump_core_src = [
'sasidump/sasidump_core.cpp',
]
sasidump_src = [
'sasidump/sasidump.cpp',
] + sasidump_core_src + hal_src
scsiloop_src = [
'scsiloop/scsiloop.cpp',
'scsiloop/scsiloop_core.cpp',
'scsiloop/scsiloop_cout.cpp',
'scsiloop/scsiloop_gpio.cpp',
'scsiloop/scsiloop_timer.cpp',
] + hal_src
scsimon_src = [
'scsimon/scsimon.cpp',
'scsimon/sm_core.cpp',
'scsimon/sm_html_report.cpp',
'scsimon/sm_json_report.cpp',
'scsimon/sm_vcd_report.cpp',
] + hal_src
shared_src = [
'shared/network_util.cpp',
'shared/piscsi_util.cpp',
'shared/piscsi_version.cpp',
]
protobuf_src = [
'shared/protobuf_util.cpp',
]
test_src = [
'test/abstract_controller_test.cpp',
'test/bus_test.cpp',
'test/command_context_test.cpp',
'test/connection_profile_test.cpp',
'test/controller_manager_test.cpp',
'test/ctapdriver_test.cpp',
'test/device_factory_test.cpp',
'test/device_test.cpp',
'test/disk_test.cpp',
'test/host_services_test.cpp',
'test/localizer_test.cpp',
'test/mode_page_device_test.cpp',
'test/network_util_test.cpp',
'test/phase_handler_test.cpp',
'test/piscsi_exceptions_test.cpp',
'test/piscsi_executor_test.cpp',
'test/piscsi_image_test.cpp',
'test/piscsi_response_test.cpp',
'test/piscsi_service_test.cpp',
'test/piscsi_util_test.cpp',
'test/primary_device_test.cpp',
'test/protobuf_util_test.cpp',
'test/scsi_command_util_test.cpp',
'test/sasi_hd_test.cpp',
'test/scsi_controller_test.cpp',
'test/scsi_daynaport_test.cpp',
'test/scsi_host_bridge_test.cpp',
'test/scsi_printer_test.cpp',
'test/scsicd_test.cpp',
'test/scsictl_commands_test.cpp',
'test/scsictl_display_test.cpp',
'test/scsictl_parser_test.cpp',
'test/scsidump_test.cpp',
'test/scsihd_nec_test.cpp',
'test/scsihd_test.cpp',
'test/scsimo_test.cpp',
'test/storage_device_test.cpp',
'test/test_setup.cpp',
'test/test_shared.cpp',
] + scsidump_core_src
test_platform_src = []
test_link_args = []
if host_machine.system() == 'linux'
test_platform_src += [
'test/gpiobus_raspberry_test.cpp',
'test/linux_os_stubs.cpp',
]
test_link_args += '-Wl,--wrap=fopen64'
endif
test_src += test_platform_src
subdir('generated')
if target.contains('piscsi')
summary_targets += 'piscsi'
piscsi_bin = executable('piscsi',
piscsi_core_src + piscsi_src + shared_src + protobuf_src + piscsi_interface_src,
dependencies : common_deps + iconv_deps + [pcap_dep, protobuf_dep],
install : true,
)
endif
if target.contains('scsictl')
summary_targets += 'scsictl'
scsictl_bin = executable('scsictl',
scsictl_core_src + scsictl_src + shared_src + protobuf_src + piscsi_interface_src,
dependencies : common_deps + [protobuf_dep],
install : true,
)
endif
if target.contains('scsimon')
summary_targets += 'scsimon'
scsimon_bin = executable('scsimon',
scsimon_src + shared_src,
dependencies : common_deps + [protobuf_dep],
install : true,
)
endif
if target.contains('scsiloop') and host_machine.system() == 'linux'
summary_targets += 'scsiloop'
scsiloop_bin = executable('scsiloop',
scsiloop_src + shared_src,
dependencies : common_deps,
install : true,
)
elif target.contains('scsiloop')
message('Skipping scsiloop: it requires Linux on Raspberry Pi GPIO hardware')
endif
if target.contains('scsidump')
summary_targets += 'scsidump'
scsidump_bin = executable('scsidump',
scsidump_src + shared_src,
dependencies : common_deps + [protobuf_dep],
install : true,
)
endif
if target.contains('sasidump')
summary_targets += 'sasidump'
sasidump_bin = executable('sasidump',
sasidump_src + shared_src,
dependencies : common_deps + [protobuf_dep],
install : true,
)
endif
if gtest_dep.found() and gmock_dep.found() and target.contains('test')
summary_targets += 'test'
test_bin = executable('piscsi_test',
piscsi_core_src + scsictl_core_src + test_src + shared_src + protobuf_src + piscsi_interface_src,
dependencies : common_deps + iconv_deps + [pcap_dep, protobuf_dep, gtest_dep, gmock_dep],
link_args : test_link_args,
install : false
)
test('unit', test_bin, protocol : 'gtest')
endif