1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-28 07:23:43 +02:00

meson: sync programmer dependencies from Makefile

The Makefile recently gained finer-grained programmer dependency lists
allowing it to track which enabled programmers assume various things
about the system, like availability of libraries or the CPU
architecture. This change implements the same changes in the Meson
configuration file.

This fixes a number of programmers to correctly build on non-x86
systems, because they were previously misclassified as dependent on x86
architectural features but actually only used PCI.

BUG=none
TEST=meson build succeeds on both x86 and ARM

Signed-off-by: Peter Marheine <pmarheine@chromium.org>
Change-Id: Iae93111fd48865f3fe8dd0eb637349b9a0c4affc
Reviewed-on: https://review.coreboot.org/c/flashrom/+/61287
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Thomas Heijligen <src@posteo.de>
This commit is contained in:
Peter Marheine 2022-01-21 02:07:30 +00:00 committed by Nico Huber
parent 36f87376a3
commit 748943d774

View File

@ -105,8 +105,48 @@ cargs = []
deps = [] deps = []
srcs = [] srcs = []
need_raw_access = false host_is_x86 = ['x86', 'x86_64'].contains(host_machine.cpu_family())
need_serial = false
need_serial = [
config_buspirate_spi, config_pony_spi, config_serprog,
].contains(true)
need_bitbang_spi = [
config_internal, config_nicintel_spi, config_ogp_spi,
config_pony_spi, config_rayer_spi,
].contains(true)
need_raw_mem_access = [
config_atapromise, config_drkaiser, config_gfxnvidia, config_internal,
config_it8212, config_nicintel, config_nicintel_eeprom, config_nicintel_spi,
config_ogp_spi, config_satamv, config_satasii,
].contains(true)
# Internal programmer uses x86 features if the system is x86
need_x86_msr = config_internal and host_is_x86
need_x86_port_io = [
config_atahpt, config_atapromise, config_internal and host_is_x86,
config_nic3com, config_nicnatsemi, config_nicrealtek, config_rayer_spi,
config_satamv,
].contains(true)
need_libpci = [
config_atahpt, config_atapromise, config_atavia,
config_drkaiser, config_gfxnvidia, config_internal, config_it8212,
config_nic3com, config_nicintel, config_nicintel_eeprom, config_nicintel_spi,
config_nicnatsemi, config_nicrealtek, config_ogp_spi, config_satamv,
config_satasii,
].contains(true)
need_libusb1 = [
config_ch341a_spi, config_dediprog, config_developerbox_spi,
config_digilent_spi, config_pickit2_spi, config_raiden_debug_spi,
config_stlinkv3_spi,
].contains(true)
need_libftdi1 = [
config_ft2232_spi, config_usbblaster_spi,
].contains(true)
need_libjaylink = config_jlink_spi
if (need_x86_port_io or need_x86_msr) and not host_is_x86
error('one or more enabled programmer only supports x86 and target is not')
endif
# check for required symbols # check for required symbols
if cc.has_function('clock_gettime') if cc.has_function('clock_gettime')
@ -124,38 +164,25 @@ if get_option('usb')
srcs += 'usbdev.c' srcs += 'usbdev.c'
srcs += 'usb_device.c' srcs += 'usb_device.c'
deps += dependency('libusb-1.0') deps += dependency('libusb-1.0')
else elif need_libusb1
config_ch341a_spi = false error('usb is disabled but one or more enabled programmer requires USB access')
config_dediprog = false
config_digilent_spi = false
config_developerbox_spi = false
config_pickit2_spi = false
config_raiden_debug_spi = false
endif endif
# some programmers require libpci # some programmers require libpci
if get_option('pciutils') if get_option('pciutils')
srcs += 'pcidev.c' srcs += 'pcidev.c'
deps += dependency('libpci') deps += dependency('libpci')
need_raw_access = true
cargs += '-DNEED_PCI=1' cargs += '-DNEED_PCI=1'
else elif need_libpci
config_atahpt = false error('pciutils is disabled but one or more enabled programmer requires PCI access')
config_atapromise = false endif
config_atavia = false
config_drkaiser = false if need_libftdi1
config_gfxnvidia = false deps += dependency('libftdi1')
config_internal = false endif
config_it8212 = false
config_nic3com = false if need_libjaylink
config_nicintel_eeprom = false deps += dependency('libjaylink')
config_nicintel = false
config_nicintel_spi = false
config_nicnatsemi = false
config_nicrealtek = false
config_ogp_spi = false
config_satamv = false
config_satasii = false
endif endif
# set defines for configured programmers # set defines for configured programmers
@ -174,7 +201,6 @@ endif
if config_buspirate_spi if config_buspirate_spi
srcs += 'buspirate_spi.c' srcs += 'buspirate_spi.c'
cargs += '-DCONFIG_BUSPIRATE_SPI=1' cargs += '-DCONFIG_BUSPIRATE_SPI=1'
need_serial = true
endif endif
if config_ch341a_spi if config_ch341a_spi
srcs += 'ch341a_spi.c' srcs += 'ch341a_spi.c'
@ -195,7 +221,6 @@ endif
if config_jlink_spi if config_jlink_spi
srcs += 'jlink_spi.c' srcs += 'jlink_spi.c'
cargs += '-DCONFIG_JLINK_SPI=1' cargs += '-DCONFIG_JLINK_SPI=1'
deps += dependency('libjaylink')
endif endif
if config_drkaiser if config_drkaiser
srcs += 'drkaiser.c' srcs += 'drkaiser.c'
@ -208,7 +233,6 @@ endif
if config_ft2232_spi if config_ft2232_spi
srcs += 'ft2232_spi.c' srcs += 'ft2232_spi.c'
cargs += '-DCONFIG_FT2232_SPI=1' cargs += '-DCONFIG_FT2232_SPI=1'
deps += dependency('libftdi1')
cargs += '-DHAVE_FT232H=1' cargs += '-DHAVE_FT232H=1'
endif endif
if config_gfxnvidia if config_gfxnvidia
@ -225,7 +249,7 @@ if config_internal
srcs += 'chipset_enable.c' srcs += 'chipset_enable.c'
srcs += 'internal.c' srcs += 'internal.c'
srcs += 'processor_enable.c' srcs += 'processor_enable.c'
if target_machine.cpu_family() == 'x86' or target_machine.cpu_family() == 'x86_64' if host_is_x86
srcs += 'amd_imc.c' srcs += 'amd_imc.c'
srcs += 'dmi.c' srcs += 'dmi.c'
srcs += 'ichspi.c' srcs += 'ichspi.c'
@ -235,7 +259,6 @@ if config_internal
srcs += 'sb600spi.c' srcs += 'sb600spi.c'
srcs += 'wbsio_spi.c' srcs += 'wbsio_spi.c'
endif endif
config_bitbang_spi = true
cargs += '-DCONFIG_INTERNAL=1' cargs += '-DCONFIG_INTERNAL=1'
if get_option('config_internal_dmi') if get_option('config_internal_dmi')
# Use internal DMI/SMBIOS decoder by default instead of relying on dmidecode. # Use internal DMI/SMBIOS decoder by default instead of relying on dmidecode.
@ -272,7 +295,6 @@ if config_nicintel_eeprom
endif endif
if config_nicintel_spi if config_nicintel_spi
srcs += 'nicintel_spi.c' srcs += 'nicintel_spi.c'
config_bitbang_spi = true
cargs += '-DCONFIG_NICINTEL_SPI=1' cargs += '-DCONFIG_NICINTEL_SPI=1'
endif endif
if config_nicnatsemi if config_nicnatsemi
@ -284,7 +306,6 @@ if config_nicrealtek
cargs += '-DCONFIG_NICREALTEK=1' cargs += '-DCONFIG_NICREALTEK=1'
endif endif
if config_ogp_spi if config_ogp_spi
config_bitbang_spi = true
srcs += 'ogp_spi.c' srcs += 'ogp_spi.c'
cargs += '-DCONFIG_OGP_SPI=1' cargs += '-DCONFIG_OGP_SPI=1'
endif endif
@ -294,14 +315,10 @@ if config_pickit2_spi
endif endif
if config_pony_spi if config_pony_spi
srcs += 'pony_spi.c' srcs += 'pony_spi.c'
need_serial = true
config_bitbang_spi = true
cargs += '-DCONFIG_PONY_SPI=1' cargs += '-DCONFIG_PONY_SPI=1'
endif endif
if config_rayer_spi if config_rayer_spi
srcs += 'rayer_spi.c' srcs += 'rayer_spi.c'
config_bitbang_spi = true
need_raw_access = true
cargs += '-DCONFIG_RAYER_SPI=1' cargs += '-DCONFIG_RAYER_SPI=1'
endif endif
if config_satamv if config_satamv
@ -315,7 +332,6 @@ endif
if config_serprog if config_serprog
srcs += 'serprog.c' srcs += 'serprog.c'
cargs += '-DCONFIG_SERPROG=1' cargs += '-DCONFIG_SERPROG=1'
need_serial = true
endif endif
if config_usbblaster_spi if config_usbblaster_spi
srcs += 'usbblaster_spi.c' srcs += 'usbblaster_spi.c'
@ -335,7 +351,7 @@ if config_realtek_mst_i2c_spi
endif endif
# bitbanging SPI infrastructure # bitbanging SPI infrastructure
if config_bitbang_spi if need_bitbang_spi
srcs += 'bitbang_spi.c' srcs += 'bitbang_spi.c'
cargs += '-DCONFIG_BITBANG_SPI=1' cargs += '-DCONFIG_BITBANG_SPI=1'
endif endif
@ -344,14 +360,19 @@ if host_machine.system() == 'linux'
srcs += 'i2c_helper_linux.c' srcs += 'i2c_helper_linux.c'
endif endif
# raw memory, MSR or PCI port I/O access if need_raw_mem_access
if need_raw_access
srcs += 'hwaccess_x86_io.c'
srcs += 'hwaccess_x86_msr.c'
srcs += 'hwaccess_physmap.c' srcs += 'hwaccess_physmap.c'
endif
if need_x86_port_io
srcs += 'hwaccess_x86_io.c'
cargs += '-D__FLASHROM_HAVE_OUTB__=1' cargs += '-D__FLASHROM_HAVE_OUTB__=1'
endif endif
if need_x86_msr
srcs += 'hwaccess_x86_msr.c'
endif
# raw serial IO # raw serial IO
if need_serial if need_serial
srcs += 'serial.c' srcs += 'serial.c'