1*0d6140beSAndroid Build Coastguard Workerproject('flashrom', 'c', 2*0d6140beSAndroid Build Coastguard Worker version : run_command('cat', 'VERSION', check: true).stdout().strip(), 3*0d6140beSAndroid Build Coastguard Worker license : 'GPL-2.0', 4*0d6140beSAndroid Build Coastguard Worker meson_version : '>=0.56.0', 5*0d6140beSAndroid Build Coastguard Worker default_options : [ 6*0d6140beSAndroid Build Coastguard Worker 'warning_level=2', 7*0d6140beSAndroid Build Coastguard Worker 'c_std=c99', 8*0d6140beSAndroid Build Coastguard Worker 'werror=true', 9*0d6140beSAndroid Build Coastguard Worker 'optimization=s', 10*0d6140beSAndroid Build Coastguard Worker 'debug=false', 11*0d6140beSAndroid Build Coastguard Worker 'default_library=both' 12*0d6140beSAndroid Build Coastguard Worker ], 13*0d6140beSAndroid Build Coastguard Worker) 14*0d6140beSAndroid Build Coastguard Worker 15*0d6140beSAndroid Build Coastguard Workerfs = import('fs') 16*0d6140beSAndroid Build Coastguard Worker 17*0d6140beSAndroid Build Coastguard Workerif get_option('classic_cli').enabled() and get_option('default_library') == 'shared' 18*0d6140beSAndroid Build Coastguard Worker error(''' 19*0d6140beSAndroid Build Coastguard Worker Cannot build cli_classic with shared libflashrom. Use \'-Dclassic_cli=disabled\' to disable the cli, 20*0d6140beSAndroid Build Coastguard Worker or use \'--default-library=both\' to also build the classic_cli 21*0d6140beSAndroid Build Coastguard Worker ''') 22*0d6140beSAndroid Build Coastguard Workerendif 23*0d6140beSAndroid Build Coastguard Worker 24*0d6140beSAndroid Build Coastguard Worker# libtool versioning 25*0d6140beSAndroid Build Coastguard Workerlt_current = '1' 26*0d6140beSAndroid Build Coastguard Workerlt_revision = '0' 27*0d6140beSAndroid Build Coastguard Workerlt_age = '0' 28*0d6140beSAndroid Build Coastguard Workerlt_version = '@0@.@1@.@2@'.format(lt_current, lt_age, lt_revision) 29*0d6140beSAndroid Build Coastguard Worker 30*0d6140beSAndroid Build Coastguard Workerflashrom_version = meson.project_version() 31*0d6140beSAndroid Build Coastguard Workergit = find_program('git', native : true, required : false) 32*0d6140beSAndroid Build Coastguard Workerif git.found() 33*0d6140beSAndroid Build Coastguard Worker version_git = run_command('git', 'describe', check : false) 34*0d6140beSAndroid Build Coastguard Worker if version_git.returncode() == 0 35*0d6140beSAndroid Build Coastguard Worker flashrom_version += ' (git:@0@)'.format(version_git.stdout().strip()) 36*0d6140beSAndroid Build Coastguard Worker endif 37*0d6140beSAndroid Build Coastguard Workerendif 38*0d6140beSAndroid Build Coastguard Worker 39*0d6140beSAndroid Build Coastguard Workersubdir('doc') 40*0d6140beSAndroid Build Coastguard Worker 41*0d6140beSAndroid Build Coastguard Worker# hide/enable some warnings 42*0d6140beSAndroid Build Coastguard Workerwarning_flags = [ 43*0d6140beSAndroid Build Coastguard Worker '-Wshadow', 44*0d6140beSAndroid Build Coastguard Worker '-Wmissing-prototypes', 45*0d6140beSAndroid Build Coastguard Worker '-Wwrite-strings', 46*0d6140beSAndroid Build Coastguard Worker '-Wno-unused-parameter', 47*0d6140beSAndroid Build Coastguard Worker '-Wno-address-of-packed-member', 48*0d6140beSAndroid Build Coastguard Worker '-Wno-enum-conversion', 49*0d6140beSAndroid Build Coastguard Worker '-Wno-missing-braces', 50*0d6140beSAndroid Build Coastguard Worker] 51*0d6140beSAndroid Build Coastguard Worker 52*0d6140beSAndroid Build Coastguard Workercc = meson.get_compiler('c') 53*0d6140beSAndroid Build Coastguard Workeradd_project_arguments(cc.get_supported_arguments(warning_flags), language : 'c') 54*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-D_DEFAULT_SOURCE', language : 'c') 55*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-D_POSIX_C_SOURCE=200809L', language : 'c') # required for fileno, nanosleep, and strndup 56*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-D_BSD_SOURCE', language : 'c') # required for glibc < v2.19 57*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-D__BSD_VISIBLE', language : 'c') # required for u_char, u_int, u_long on FreeBSD 58*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-D__XSI_VISIBLE', language : 'c') # required for gettimeofday() on FreeBSD 59*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-D_NETBSD_SOURCE', language : 'c') # required for indirect include of strings.h on NetBSD 60*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-D_DARWIN_C_SOURCE', language : 'c') # required for indirect include of strings.h on MacOS 61*0d6140beSAndroid Build Coastguard Workeradd_project_arguments('-DFLASHROM_VERSION="' + flashrom_version + '"', language : 'c') 62*0d6140beSAndroid Build Coastguard Worker 63*0d6140beSAndroid Build Coastguard Worker# get defaults from configure 64*0d6140beSAndroid Build Coastguard Workerconfig_print_wiki= get_option('classic_cli_print_wiki') 65*0d6140beSAndroid Build Coastguard Workerconfig_default_programmer_name = get_option('default_programmer_name') 66*0d6140beSAndroid Build Coastguard Workerconfig_default_programmer_args = get_option('default_programmer_args') 67*0d6140beSAndroid Build Coastguard Worker 68*0d6140beSAndroid Build Coastguard Workercargs = [] 69*0d6140beSAndroid Build Coastguard Workerlink_args = [] 70*0d6140beSAndroid Build Coastguard Workerdeps = [] 71*0d6140beSAndroid Build Coastguard Workersrcs = files( 72*0d6140beSAndroid Build Coastguard Worker '82802ab.c', 73*0d6140beSAndroid Build Coastguard Worker 'at45db.c', 74*0d6140beSAndroid Build Coastguard Worker 'bitbang_spi.c', 75*0d6140beSAndroid Build Coastguard Worker 'edi.c', 76*0d6140beSAndroid Build Coastguard Worker 'en29lv640b.c', 77*0d6140beSAndroid Build Coastguard Worker 'erasure_layout.c', 78*0d6140beSAndroid Build Coastguard Worker 'flashchips.c', 79*0d6140beSAndroid Build Coastguard Worker 'flashrom.c', 80*0d6140beSAndroid Build Coastguard Worker 'fmap.c', 81*0d6140beSAndroid Build Coastguard Worker 'helpers.c', 82*0d6140beSAndroid Build Coastguard Worker 'helpers_fileio.c', 83*0d6140beSAndroid Build Coastguard Worker 'ich_descriptors.c', 84*0d6140beSAndroid Build Coastguard Worker 'jedec.c', 85*0d6140beSAndroid Build Coastguard Worker 'printlock.c', 86*0d6140beSAndroid Build Coastguard Worker 'layout.c', 87*0d6140beSAndroid Build Coastguard Worker 'libflashrom.c', 88*0d6140beSAndroid Build Coastguard Worker 'opaque.c', 89*0d6140beSAndroid Build Coastguard Worker 'parallel.c', 90*0d6140beSAndroid Build Coastguard Worker 'print.c', 91*0d6140beSAndroid Build Coastguard Worker 'programmer.c', 92*0d6140beSAndroid Build Coastguard Worker 'programmer_table.c', 93*0d6140beSAndroid Build Coastguard Worker 's25f.c', 94*0d6140beSAndroid Build Coastguard Worker 'sfdp.c', 95*0d6140beSAndroid Build Coastguard Worker 'spi25.c', 96*0d6140beSAndroid Build Coastguard Worker 'spi25_statusreg.c', 97*0d6140beSAndroid Build Coastguard Worker 'spi95.c', 98*0d6140beSAndroid Build Coastguard Worker 'spi.c', 99*0d6140beSAndroid Build Coastguard Worker 'sst28sf040.c', 100*0d6140beSAndroid Build Coastguard Worker 'sst49lfxxxc.c', 101*0d6140beSAndroid Build Coastguard Worker 'sst_fwhub.c', 102*0d6140beSAndroid Build Coastguard Worker 'stm50.c', 103*0d6140beSAndroid Build Coastguard Worker 'w29ee011.c', 104*0d6140beSAndroid Build Coastguard Worker 'w39.c', 105*0d6140beSAndroid Build Coastguard Worker 'writeprotect.c', 106*0d6140beSAndroid Build Coastguard Worker 'writeprotect_ranges.c', 107*0d6140beSAndroid Build Coastguard Worker) 108*0d6140beSAndroid Build Coastguard Worker 109*0d6140beSAndroid Build Coastguard Worker# Select an appropriate delay implementation for the target OS 110*0d6140beSAndroid Build Coastguard Workerdelay_src = files('udelay.c') 111*0d6140beSAndroid Build Coastguard Workerif target_machine.system() == 'dos' 112*0d6140beSAndroid Build Coastguard Worker delay_src = files('udelay_dos.c') 113*0d6140beSAndroid Build Coastguard Workerendif 114*0d6140beSAndroid Build Coastguard Workersrcs += delay_src 115*0d6140beSAndroid Build Coastguard Workercargs += ['-DCONFIG_DELAY_MINIMUM_SLEEP_US=@0@'.format( 116*0d6140beSAndroid Build Coastguard Worker get_option('delay_minimum_sleep_us') 117*0d6140beSAndroid Build Coastguard Worker)] 118*0d6140beSAndroid Build Coastguard Worker 119*0d6140beSAndroid Build Coastguard Worker### CrOS Tree 120*0d6140beSAndroid Build Coastguard Workersrcs += files( 121*0d6140beSAndroid Build Coastguard Worker 'power.c', 122*0d6140beSAndroid Build Coastguard Worker 'action_descriptor.c', 123*0d6140beSAndroid Build Coastguard Worker 'flashchips_crosbl.c', 124*0d6140beSAndroid Build Coastguard Worker 'cros_ec.c', 125*0d6140beSAndroid Build Coastguard Worker 'big_lock.c', 126*0d6140beSAndroid Build Coastguard Worker 'file_lock.c', 127*0d6140beSAndroid Build Coastguard Worker) 128*0d6140beSAndroid Build Coastguard Workercargs += '-DCONFIG_CROS_EC=1' 129*0d6140beSAndroid Build Coastguard Workercargs += '-DUSE_BIG_LOCK=1' 130*0d6140beSAndroid Build Coastguard Worker### 131*0d6140beSAndroid Build Coastguard Worker 132*0d6140beSAndroid Build Coastguard Worker# check for required symbols 133*0d6140beSAndroid Build Coastguard Workerif cc.has_function('clock_gettime') 134*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DHAVE_CLOCK_GETTIME=1', language : 'c') 135*0d6140beSAndroid Build Coastguard Workerendif 136*0d6140beSAndroid Build Coastguard Workerif cc.has_function('strnlen') 137*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DHAVE_STRNLEN=1', language : 'c') 138*0d6140beSAndroid Build Coastguard Workerendif 139*0d6140beSAndroid Build Coastguard Workerif cc.check_header('getopt.h') 140*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DHAVE_GETOPT_H=1', language : 'c') 141*0d6140beSAndroid Build Coastguard Workerendif 142*0d6140beSAndroid Build Coastguard Workerif cc.check_header('pciutils/pci.h') 143*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DHAVE_PCIUTILS_PCI_H=1', language : 'c') 144*0d6140beSAndroid Build Coastguard Workerendif 145*0d6140beSAndroid Build Coastguard Workerif cc.check_header('sys/utsname.h') 146*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DHAVE_UTSNAME=1', language : 'c') 147*0d6140beSAndroid Build Coastguard Workerendif 148*0d6140beSAndroid Build Coastguard Workerif host_machine.system() in ['cygwin', 'windows'] 149*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DIS_WINDOWS=1', language : 'c') 150*0d6140beSAndroid Build Coastguard Workerelse 151*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DIS_WINDOWS=0', language : 'c') 152*0d6140beSAndroid Build Coastguard Workerendif 153*0d6140beSAndroid Build Coastguard Worker 154*0d6140beSAndroid Build Coastguard Workerif host_machine.system() == 'linux' 155*0d6140beSAndroid Build Coastguard Worker custom_baud_c = 'custom_baud_linux.c' 156*0d6140beSAndroid Build Coastguard Workerelif host_machine.system() == 'darwin' 157*0d6140beSAndroid Build Coastguard Worker custom_baud_c = 'custom_baud_darwin.c' 158*0d6140beSAndroid Build Coastguard Workerelse 159*0d6140beSAndroid Build Coastguard Worker custom_baud_c = 'custom_baud.c' 160*0d6140beSAndroid Build Coastguard Workerendif 161*0d6140beSAndroid Build Coastguard Worker 162*0d6140beSAndroid Build Coastguard Workersystems_hwaccess = [ 'linux', 'openbsd', 'freebsd', 'dragonfly', 'netbsd', 'dos' ] 163*0d6140beSAndroid Build Coastguard Workersystems_serial = [ 'linux', 'openbsd', 'freebsd', 'dragonfly', 'netbsd', 'darwin', 'windows' ] 164*0d6140beSAndroid Build Coastguard Worker 165*0d6140beSAndroid Build Coastguard Workercpus_port_io = [ 'x86', 'x86_64' ] 166*0d6140beSAndroid Build Coastguard Worker 167*0d6140beSAndroid Build Coastguard Workergroup_ftdi = get_option('programmer').contains('group_ftdi') 168*0d6140beSAndroid Build Coastguard Workergroup_pci = get_option('programmer').contains('group_pci') 169*0d6140beSAndroid Build Coastguard Workergroup_usb = get_option('programmer').contains('group_usb') 170*0d6140beSAndroid Build Coastguard Workergroup_i2c = get_option('programmer').contains('group_i2c') 171*0d6140beSAndroid Build Coastguard Workergroup_serial = get_option('programmer').contains('group_serial') 172*0d6140beSAndroid Build Coastguard Workergroup_jlink = get_option('programmer').contains('group_jlink') 173*0d6140beSAndroid Build Coastguard Workergroup_internal = get_option('programmer').contains('group_internal') 174*0d6140beSAndroid Build Coastguard Workergroup_external = get_option('programmer').contains('group_external') 175*0d6140beSAndroid Build Coastguard Worker 176*0d6140beSAndroid Build Coastguard Workerlibpci = dependency('libpci', required : group_pci, version : '>=2.2.0', 177*0d6140beSAndroid Build Coastguard Worker static : (host_machine.system() == 'openbsd' ? true : false)) # On openbsd a static version of libpci is needed to get also -libz 178*0d6140beSAndroid Build Coastguard Workerlibusb1 = dependency('libusb-1.0', required : group_usb) 179*0d6140beSAndroid Build Coastguard Workerlibftdi1 = dependency('libftdi1', required : group_ftdi) 180*0d6140beSAndroid Build Coastguard Workerlibjaylink = dependency('libjaylink', required : group_jlink, version : '>=0.3.0') 181*0d6140beSAndroid Build Coastguard Worker 182*0d6140beSAndroid Build Coastguard Worker# ECAM is supported in libpci after 3.13.0 183*0d6140beSAndroid Build Coastguard Workerif libpci.version().version_compare('>=3.13.0') 184*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DCONFIG_USE_LIBPCI_ECAM=1', language: 'c') 185*0d6140beSAndroid Build Coastguard Workerelse 186*0d6140beSAndroid Build Coastguard Worker add_project_arguments('-DCONFIG_USE_LIBPCI_ECAM=0', language: 'c') 187*0d6140beSAndroid Build Coastguard Workerendif 188*0d6140beSAndroid Build Coastguard Worker 189*0d6140beSAndroid Build Coastguard Workerif host_machine.system() == 'windows' 190*0d6140beSAndroid Build Coastguard Worker # Specifying an include_path that doesn't exist is an error, 191*0d6140beSAndroid Build Coastguard Worker # but we only use this if the library is found in the same directory. 192*0d6140beSAndroid Build Coastguard Worker ni845x_search_path = get_option('ni845x_search_path') 193*0d6140beSAndroid Build Coastguard Worker if fs.is_dir(ni845x_search_path) 194*0d6140beSAndroid Build Coastguard Worker ni845x_include_path = [ni845x_search_path] 195*0d6140beSAndroid Build Coastguard Worker else 196*0d6140beSAndroid Build Coastguard Worker ni845x_include_path = [] 197*0d6140beSAndroid Build Coastguard Worker endif 198*0d6140beSAndroid Build Coastguard Worker 199*0d6140beSAndroid Build Coastguard Worker libni845x = declare_dependency( 200*0d6140beSAndroid Build Coastguard Worker dependencies : [ 201*0d6140beSAndroid Build Coastguard Worker cc.find_library( 202*0d6140beSAndroid Build Coastguard Worker 'ni845x', 203*0d6140beSAndroid Build Coastguard Worker dirs : get_option('ni845x_search_path'), 204*0d6140beSAndroid Build Coastguard Worker required : get_option('programmer').contains('ni845x_spi') 205*0d6140beSAndroid Build Coastguard Worker ), 206*0d6140beSAndroid Build Coastguard Worker ], 207*0d6140beSAndroid Build Coastguard Worker include_directories : ni845x_include_path, 208*0d6140beSAndroid Build Coastguard Worker ) 209*0d6140beSAndroid Build Coastguard Workerelse 210*0d6140beSAndroid Build Coastguard Worker libni845x = dependency('', required : false) 211*0d6140beSAndroid Build Coastguard Workerendif 212*0d6140beSAndroid Build Coastguard Worker 213*0d6140beSAndroid Build Coastguard Workersubdir('platform') 214*0d6140beSAndroid Build Coastguard Worker 215*0d6140beSAndroid Build Coastguard Workerif systems_hwaccess.contains(host_machine.system()) 216*0d6140beSAndroid Build Coastguard Worker srcs += files('hwaccess_physmap.c') 217*0d6140beSAndroid Build Coastguard Worker if ['x86', 'x86_64'].contains(host_machine.cpu_family()) 218*0d6140beSAndroid Build Coastguard Worker srcs += files('hwaccess_x86_msr.c', 'hwaccess_x86_io.c') 219*0d6140beSAndroid Build Coastguard Worker endif 220*0d6140beSAndroid Build Coastguard Workerendif 221*0d6140beSAndroid Build Coastguard Worker 222*0d6140beSAndroid Build Coastguard Worker# Pseudo dependencies 223*0d6140beSAndroid Build Coastguard Workerlinux_headers = \ 224*0d6140beSAndroid Build Coastguard Worker cc.has_header('linux/i2c.h') and \ 225*0d6140beSAndroid Build Coastguard Worker cc.has_header('linux/i2c-dev.h') and \ 226*0d6140beSAndroid Build Coastguard Worker cc.has_header('mtd/mtd-user.h') and \ 227*0d6140beSAndroid Build Coastguard Worker cc.has_header('linux/spi/spidev.h') ? declare_dependency() : dependency('', required : false) 228*0d6140beSAndroid Build Coastguard Worker 229*0d6140beSAndroid Build Coastguard Worker# '<programmer_name>' : { 230*0d6140beSAndroid Build Coastguard Worker# 'system' : list[string], # default: ['all'] 231*0d6140beSAndroid Build Coastguard Worker# 'cpu_families : list[string], # default: ['all'] 232*0d6140beSAndroid Build Coastguard Worker# 'deps' : list[dep], # default: [] 233*0d6140beSAndroid Build Coastguard Worker# 'groups : list[boolean], # default: [] 234*0d6140beSAndroid Build Coastguard Worker# 'srcs' : list[file], # default: [] 235*0d6140beSAndroid Build Coastguard Worker# 'flags' : list[string], # default: [] 236*0d6140beSAndroid Build Coastguard Worker# 'default' : boolean, # default: true 237*0d6140beSAndroid Build Coastguard Worker# 'active' : boolean, # added on runtime 238*0d6140beSAndroid Build Coastguard Worker# } 239*0d6140beSAndroid Build Coastguard Workerprogrammer = { 240*0d6140beSAndroid Build Coastguard Worker 'asm106x' : { 241*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 242*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 243*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 244*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('asm106x.c', 'pcidev.c'), 245*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_ASM106X=1' ], 246*0d6140beSAndroid Build Coastguard Worker }, 247*0d6140beSAndroid Build Coastguard Worker 'atahpt' : { 248*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 249*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : cpus_port_io, 250*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 251*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 252*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('atahpt.c', 'pcidev.c'), 253*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_ATAHPT=1' ], 254*0d6140beSAndroid Build Coastguard Worker 'default' : false, # not yet working 255*0d6140beSAndroid Build Coastguard Worker }, 256*0d6140beSAndroid Build Coastguard Worker 'atapromise' : { 257*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 258*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : cpus_port_io, 259*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 260*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 261*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('atapromise.c', 'pcidev.c'), 262*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_ATAPROMISE=1' ], 263*0d6140beSAndroid Build Coastguard Worker 'default' : false, 264*0d6140beSAndroid Build Coastguard Worker }, 265*0d6140beSAndroid Build Coastguard Worker 'atavia' : { 266*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 267*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 268*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 269*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('atavia.c', 'pcidev.c'), 270*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_ATAVIA=1' ], 271*0d6140beSAndroid Build Coastguard Worker }, 272*0d6140beSAndroid Build Coastguard Worker 'buspirate_spi' : { 273*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_serial, 274*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_serial, group_external ], 275*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('buspirate_spi.c', 'serial.c', custom_baud_c), 276*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_BUSPIRATE_SPI=1' ], 277*0d6140beSAndroid Build Coastguard Worker }, 278*0d6140beSAndroid Build Coastguard Worker 'ch341a_spi' : { 279*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 280*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 281*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('ch341a_spi.c'), 282*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/ch341a_spi.c'), 283*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_CH341A_SPI=1' ], 284*0d6140beSAndroid Build Coastguard Worker }, 285*0d6140beSAndroid Build Coastguard Worker 'ch347_spi' : { 286*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 287*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 288*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('ch347_spi.c'), 289*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_CH347_SPI=1' ], 290*0d6140beSAndroid Build Coastguard Worker }, 291*0d6140beSAndroid Build Coastguard Worker 'dediprog' : { 292*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 293*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 294*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('dediprog.c', 'usbdev.c'), 295*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/dediprog.c'), 296*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_DEDIPROG=1' ], 297*0d6140beSAndroid Build Coastguard Worker }, 298*0d6140beSAndroid Build Coastguard Worker 'developerbox_spi' : { 299*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 300*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 301*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('developerbox_spi.c', 'usbdev.c'), 302*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_DEVELOPERBOX_SPI=1' ], 303*0d6140beSAndroid Build Coastguard Worker }, 304*0d6140beSAndroid Build Coastguard Worker 'digilent_spi' : { 305*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 306*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 307*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('digilent_spi.c'), 308*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_DIGILENT_SPI=1' ], 309*0d6140beSAndroid Build Coastguard Worker }, 310*0d6140beSAndroid Build Coastguard Worker 'dirtyjtag_spi' : { 311*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 312*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 313*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('dirtyjtag_spi.c'), 314*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_DIRTYJTAG_SPI=1' ], 315*0d6140beSAndroid Build Coastguard Worker }, 316*0d6140beSAndroid Build Coastguard Worker 'drkaiser' : { 317*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 318*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 319*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 320*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('drkaiser.c', 'pcidev.c'), 321*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_DRKAISER=1' ], 322*0d6140beSAndroid Build Coastguard Worker }, 323*0d6140beSAndroid Build Coastguard Worker 'dummy' : { 324*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('dummyflasher.c'), 325*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/dummyflasher.c'), 326*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_DUMMY=1' ], 327*0d6140beSAndroid Build Coastguard Worker }, 328*0d6140beSAndroid Build Coastguard Worker 'ft2232_spi' : { 329*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libftdi1 ], 330*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_ftdi, group_external ], 331*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('ft2232_spi.c' ), 332*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_FT2232_SPI=1' ], 333*0d6140beSAndroid Build Coastguard Worker }, 334*0d6140beSAndroid Build Coastguard Worker 'gfxnvidia' : { 335*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 336*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 337*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 338*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('gfxnvidia.c', 'pcidev.c'), 339*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_GFXNVIDIA=1' ], 340*0d6140beSAndroid Build Coastguard Worker }, 341*0d6140beSAndroid Build Coastguard Worker 'internal' : { 342*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess + ['linux'], 343*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : (host_machine.system() == 'linux' ? [host_machine.cpu_family()] : ['x86', 'x86_64']), 344*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 345*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_internal ], 346*0d6140beSAndroid Build Coastguard Worker 'srcs' : (host_machine.cpu_family() in ['x86', 'x86_64'] ? files( 347*0d6140beSAndroid Build Coastguard Worker 'processor_enable.c', 348*0d6140beSAndroid Build Coastguard Worker 'chipset_enable.c', 349*0d6140beSAndroid Build Coastguard Worker 'board_enable.c', 350*0d6140beSAndroid Build Coastguard Worker 'cbtable.c', 351*0d6140beSAndroid Build Coastguard Worker 'internal.c', 352*0d6140beSAndroid Build Coastguard Worker 'internal_par.c', 353*0d6140beSAndroid Build Coastguard Worker 'it87spi.c', 354*0d6140beSAndroid Build Coastguard Worker 'sb600spi.c', 355*0d6140beSAndroid Build Coastguard Worker 'superio.c', 356*0d6140beSAndroid Build Coastguard Worker 'amd_imc.c', 357*0d6140beSAndroid Build Coastguard Worker 'wbsio_spi.c', 358*0d6140beSAndroid Build Coastguard Worker 'mcp6x_spi.c', 359*0d6140beSAndroid Build Coastguard Worker 'ichspi.c', 360*0d6140beSAndroid Build Coastguard Worker 'dmi.c', 361*0d6140beSAndroid Build Coastguard Worker 'pcidev.c', 362*0d6140beSAndroid Build Coastguard Worker 'known_boards.c', 363*0d6140beSAndroid Build Coastguard Worker ) : files( 364*0d6140beSAndroid Build Coastguard Worker 'board_enable.c', 365*0d6140beSAndroid Build Coastguard Worker 'cbtable.c', 366*0d6140beSAndroid Build Coastguard Worker 'chipset_enable.c', 367*0d6140beSAndroid Build Coastguard Worker 'internal.c', 368*0d6140beSAndroid Build Coastguard Worker 'internal_par.c', 369*0d6140beSAndroid Build Coastguard Worker 'processor_enable.c', 370*0d6140beSAndroid Build Coastguard Worker 'pcidev.c', 371*0d6140beSAndroid Build Coastguard Worker 'known_boards.c', 372*0d6140beSAndroid Build Coastguard Worker )), 373*0d6140beSAndroid Build Coastguard Worker 'flags' : [ 374*0d6140beSAndroid Build Coastguard Worker '-DCONFIG_INTERNAL=1', 375*0d6140beSAndroid Build Coastguard Worker '-DCONFIG_INTERNAL_DMI=' + (get_option('use_internal_dmi') ? '1' : '0'), 376*0d6140beSAndroid Build Coastguard Worker ] 377*0d6140beSAndroid Build Coastguard Worker }, 378*0d6140beSAndroid Build Coastguard Worker 'it8212' : { 379*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 380*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 381*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 382*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('it8212.c', 'pcidev.c'), 383*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_IT8212=1' ], 384*0d6140beSAndroid Build Coastguard Worker }, 385*0d6140beSAndroid Build Coastguard Worker 'jlink_spi' : { 386*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libjaylink ], 387*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_jlink, group_external ], 388*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('jlink_spi.c'), 389*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_JLINK_SPI=1' ], 390*0d6140beSAndroid Build Coastguard Worker }, 391*0d6140beSAndroid Build Coastguard Worker 'linux_mtd' : { 392*0d6140beSAndroid Build Coastguard Worker 'systems' : [ 'linux' ], 393*0d6140beSAndroid Build Coastguard Worker 'deps' : [ linux_headers ], 394*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_internal ], 395*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('linux_mtd.c'), 396*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/linux_mtd.c'), 397*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_LINUX_MTD=1' ], 398*0d6140beSAndroid Build Coastguard Worker }, 399*0d6140beSAndroid Build Coastguard Worker 'linux_spi' : { 400*0d6140beSAndroid Build Coastguard Worker 'systems' : [ 'linux' ], 401*0d6140beSAndroid Build Coastguard Worker 'deps' : [ linux_headers ], 402*0d6140beSAndroid Build Coastguard Worker # internal / external? 403*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('linux_spi.c'), 404*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/linux_spi.c'), 405*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_LINUX_SPI=1' ], 406*0d6140beSAndroid Build Coastguard Worker }, 407*0d6140beSAndroid Build Coastguard Worker 'parade_lspcon' : { 408*0d6140beSAndroid Build Coastguard Worker 'systems' : [ 'linux' ], 409*0d6140beSAndroid Build Coastguard Worker 'deps' : [ linux_headers ], 410*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_i2c ], 411*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('parade_lspcon.c', 'i2c_helper_linux.c'), 412*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/parade_lspcon.c'), 413*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_PARADE_LSPCON=1' ], 414*0d6140beSAndroid Build Coastguard Worker 'default' : false 415*0d6140beSAndroid Build Coastguard Worker }, 416*0d6140beSAndroid Build Coastguard Worker 'mediatek_i2c_spi' : { 417*0d6140beSAndroid Build Coastguard Worker 'systems' : [ 'linux' ], 418*0d6140beSAndroid Build Coastguard Worker 'deps' : [ linux_headers ], 419*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_i2c ], 420*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('mediatek_i2c_spi.c', 'i2c_helper_linux.c'), 421*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/mediatek_i2c_spi.c'), 422*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_MEDIATEK_I2C_SPI=1' ], 423*0d6140beSAndroid Build Coastguard Worker 'default' : false, 424*0d6140beSAndroid Build Coastguard Worker }, 425*0d6140beSAndroid Build Coastguard Worker 'mstarddc_spi' : { 426*0d6140beSAndroid Build Coastguard Worker 'systems' : [ 'linux' ], 427*0d6140beSAndroid Build Coastguard Worker 'deps' : [ linux_headers ], 428*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_i2c ], 429*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('mstarddc_spi.c', 'i2c_helper_linux.c'), 430*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_MSTARDDC_SPI=1' ], 431*0d6140beSAndroid Build Coastguard Worker 'default' : false 432*0d6140beSAndroid Build Coastguard Worker }, 433*0d6140beSAndroid Build Coastguard Worker 'ni845x_spi' : { 434*0d6140beSAndroid Build Coastguard Worker 'systems' : [ 'windows' ], 435*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : [ 'x86' ], # The required ni845x library is 32-bit only 436*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libni845x ], 437*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('ni845x_spi.c'), 438*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_NI845X_SPI=1' ], 439*0d6140beSAndroid Build Coastguard Worker 'default' : false, 440*0d6140beSAndroid Build Coastguard Worker }, 441*0d6140beSAndroid Build Coastguard Worker 'nic3com' : { 442*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 443*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : cpus_port_io, 444*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 445*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 446*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('nic3com.c', 'pcidev.c'), 447*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_NIC3COM=1' ], 448*0d6140beSAndroid Build Coastguard Worker }, 449*0d6140beSAndroid Build Coastguard Worker 'nicintel' : { 450*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 451*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 452*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 453*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('nicintel.c', 'pcidev.c'), 454*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_NICINTEL=1' ], 455*0d6140beSAndroid Build Coastguard Worker }, 456*0d6140beSAndroid Build Coastguard Worker 'nicintel_eeprom' : { 457*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 458*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 459*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 460*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('nicintel_eeprom.c', 'pcidev.c'), 461*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_NICINTEL_EEPROM=1' ], 462*0d6140beSAndroid Build Coastguard Worker }, 463*0d6140beSAndroid Build Coastguard Worker 'nicintel_spi' : { 464*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 465*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 466*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 467*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('nicintel_spi.c', 'pcidev.c'), 468*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_NICINTEL_SPI=1' ], 469*0d6140beSAndroid Build Coastguard Worker }, 470*0d6140beSAndroid Build Coastguard Worker 'nicnatsemi' : { 471*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 472*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : cpus_port_io, 473*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 474*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 475*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('nicnatsemi.c', 'pcidev.c'), 476*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_NICNATSEMI=1' ], 477*0d6140beSAndroid Build Coastguard Worker 'default' : false, # not complete nor tested 478*0d6140beSAndroid Build Coastguard Worker }, 479*0d6140beSAndroid Build Coastguard Worker 'nicrealtek' : { 480*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 481*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : cpus_port_io, 482*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 483*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 484*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('nicrealtek.c', 'pcidev.c'), 485*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/nicrealtek.c'), 486*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_NICREALTEK=1' ], 487*0d6140beSAndroid Build Coastguard Worker }, 488*0d6140beSAndroid Build Coastguard Worker 'ogp_spi' : { 489*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 490*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 491*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 492*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('ogp_spi.c', 'pcidev.c'), 493*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_OGP_SPI=1' ], 494*0d6140beSAndroid Build Coastguard Worker }, 495*0d6140beSAndroid Build Coastguard Worker 'pickit2_spi' : { 496*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 497*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 498*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('pickit2_spi.c'), 499*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_PICKIT2_SPI=1' ], 500*0d6140beSAndroid Build Coastguard Worker }, 501*0d6140beSAndroid Build Coastguard Worker 'pony_spi' : { 502*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_serial, 503*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_serial, group_external ], 504*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('pony_spi.c', 'serial.c', custom_baud_c), 505*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_PONY_SPI=1' ], 506*0d6140beSAndroid Build Coastguard Worker }, 507*0d6140beSAndroid Build Coastguard Worker 'raiden_debug_spi' : { 508*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 509*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 510*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('raiden_debug_spi.c', 'usb_device.c'), 511*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/raiden_debug_spi.c'), 512*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_RAIDEN_DEBUG_SPI=1' ], 513*0d6140beSAndroid Build Coastguard Worker }, 514*0d6140beSAndroid Build Coastguard Worker 'rayer_spi' : { 515*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 516*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : cpus_port_io, 517*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_internal ], 518*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('rayer_spi.c'), 519*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_RAYER_SPI=1' ], 520*0d6140beSAndroid Build Coastguard Worker }, 521*0d6140beSAndroid Build Coastguard Worker 'realtek_mst_i2c_spi' : { 522*0d6140beSAndroid Build Coastguard Worker 'systems' : [ 'linux' ], 523*0d6140beSAndroid Build Coastguard Worker 'deps' : [ linux_headers ], 524*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_i2c ], 525*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('realtek_mst_i2c_spi.c', 'i2c_helper_linux.c'), 526*0d6140beSAndroid Build Coastguard Worker 'test_srcs' : files('tests/realtek_mst_i2c_spi.c'), 527*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_REALTEK_MST_I2C_SPI=1' ], 528*0d6140beSAndroid Build Coastguard Worker 'default' : false, 529*0d6140beSAndroid Build Coastguard Worker }, 530*0d6140beSAndroid Build Coastguard Worker 'satamv' : { 531*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 532*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : cpus_port_io, 533*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 534*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 535*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('satamv.c', 'pcidev.c'), 536*0d6140beSAndroid Build Coastguard Worker 'flags' : ['-DCONFIG_SATAMV=1'], 537*0d6140beSAndroid Build Coastguard Worker }, 538*0d6140beSAndroid Build Coastguard Worker 'satasii' : { 539*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_hwaccess, 540*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libpci ], 541*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_pci, group_internal ], 542*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('satasii.c', 'pcidev.c'), 543*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_SATASII=1' ], 544*0d6140beSAndroid Build Coastguard Worker }, 545*0d6140beSAndroid Build Coastguard Worker 'serprog' : { 546*0d6140beSAndroid Build Coastguard Worker 'systems' : systems_serial, 547*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_serial, group_external ], 548*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('serprog.c', 'serial.c', custom_baud_c), 549*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_SERPROG=1' ], 550*0d6140beSAndroid Build Coastguard Worker }, 551*0d6140beSAndroid Build Coastguard Worker 'stlinkv3_spi' : { 552*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libusb1 ], 553*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_usb, group_external ], 554*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('stlinkv3_spi.c', 'usbdev.c'), 555*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_STLINKV3_SPI=1' ], 556*0d6140beSAndroid Build Coastguard Worker }, 557*0d6140beSAndroid Build Coastguard Worker 'usbblaster_spi' : { 558*0d6140beSAndroid Build Coastguard Worker 'deps' : [ libftdi1 ], 559*0d6140beSAndroid Build Coastguard Worker 'groups' : [ group_ftdi, group_external ], 560*0d6140beSAndroid Build Coastguard Worker 'srcs' : files('usbblaster_spi.c'), 561*0d6140beSAndroid Build Coastguard Worker 'flags' : [ '-DCONFIG_USBBLASTER_SPI=1' ], 562*0d6140beSAndroid Build Coastguard Worker }, 563*0d6140beSAndroid Build Coastguard Worker} 564*0d6140beSAndroid Build Coastguard Worker 565*0d6140beSAndroid Build Coastguard Workeractive_programmer_count = 0 566*0d6140beSAndroid Build Coastguard Workerforeach p_name, p_data : programmer 567*0d6140beSAndroid Build Coastguard Worker p_data += { 568*0d6140beSAndroid Build Coastguard Worker 'systems' : p_data.get('systems', ['all']), 569*0d6140beSAndroid Build Coastguard Worker 'cpu_families' : p_data.get('cpu_families', ['all']), 570*0d6140beSAndroid Build Coastguard Worker 'deps' : p_data.get('deps', []), 571*0d6140beSAndroid Build Coastguard Worker 'groups' : p_data.get('groups', []), 572*0d6140beSAndroid Build Coastguard Worker 'srcs' : p_data.get('srcs', []), 573*0d6140beSAndroid Build Coastguard Worker 'test_srcs': p_data.get('test_srcs', []), 574*0d6140beSAndroid Build Coastguard Worker 'flags' : p_data.get('flags', []), 575*0d6140beSAndroid Build Coastguard Worker 'default' : p_data.get('default', true), 576*0d6140beSAndroid Build Coastguard Worker } 577*0d6140beSAndroid Build Coastguard Worker 578*0d6140beSAndroid Build Coastguard Worker active = false 579*0d6140beSAndroid Build Coastguard Worker deps_found = true 580*0d6140beSAndroid Build Coastguard Worker not_found_dep = '' 581*0d6140beSAndroid Build Coastguard Worker not_active_message = '' 582*0d6140beSAndroid Build Coastguard Worker selected_hard = p_name in get_option('programmer') 583*0d6140beSAndroid Build Coastguard Worker selected_soft = p_data.get('groups').contains(true) or \ 584*0d6140beSAndroid Build Coastguard Worker 'all' in get_option('programmer') or \ 585*0d6140beSAndroid Build Coastguard Worker 'auto' in get_option('programmer') and p_data.get('default') 586*0d6140beSAndroid Build Coastguard Worker available = (p_data.get('systems').contains('all') or p_data.get('systems').contains(host_machine.system())) \ 587*0d6140beSAndroid Build Coastguard Worker and (p_data.get('cpu_families').contains('all') or p_data.get('cpu_families').contains(host_machine.cpu_family())) 588*0d6140beSAndroid Build Coastguard Worker 589*0d6140beSAndroid Build Coastguard Worker foreach dep : p_data.get('deps') 590*0d6140beSAndroid Build Coastguard Worker if not dep.found() 591*0d6140beSAndroid Build Coastguard Worker deps_found = false 592*0d6140beSAndroid Build Coastguard Worker not_found_dep = dep.name() 593*0d6140beSAndroid Build Coastguard Worker break 594*0d6140beSAndroid Build Coastguard Worker endif 595*0d6140beSAndroid Build Coastguard Worker endforeach 596*0d6140beSAndroid Build Coastguard Worker 597*0d6140beSAndroid Build Coastguard Worker if selected_hard 598*0d6140beSAndroid Build Coastguard Worker if not available 599*0d6140beSAndroid Build Coastguard Worker error('programmer @0@ was selected but is not supported on this platform (needs @1@/@2@, but system is @3@/@4@)'.format( 600*0d6140beSAndroid Build Coastguard Worker p_name, 601*0d6140beSAndroid Build Coastguard Worker p_data.get('systems'), 602*0d6140beSAndroid Build Coastguard Worker p_data.get('cpu_families'), 603*0d6140beSAndroid Build Coastguard Worker host_machine.system(), 604*0d6140beSAndroid Build Coastguard Worker host_machine.cpu_family() 605*0d6140beSAndroid Build Coastguard Worker )) 606*0d6140beSAndroid Build Coastguard Worker elif not deps_found 607*0d6140beSAndroid Build Coastguard Worker error(p_name + ' selected but dependency ' + not_found_dep +'not found') 608*0d6140beSAndroid Build Coastguard Worker else 609*0d6140beSAndroid Build Coastguard Worker active = true 610*0d6140beSAndroid Build Coastguard Worker endif 611*0d6140beSAndroid Build Coastguard Worker elif selected_soft 612*0d6140beSAndroid Build Coastguard Worker if not available 613*0d6140beSAndroid Build Coastguard Worker not_active_message = 'Not available on platform' 614*0d6140beSAndroid Build Coastguard Worker elif not deps_found 615*0d6140beSAndroid Build Coastguard Worker not_active_message = 'dependency ' + not_found_dep + ' not found' 616*0d6140beSAndroid Build Coastguard Worker else 617*0d6140beSAndroid Build Coastguard Worker active = true 618*0d6140beSAndroid Build Coastguard Worker endif 619*0d6140beSAndroid Build Coastguard Worker else 620*0d6140beSAndroid Build Coastguard Worker not_active_message = 'not selected' 621*0d6140beSAndroid Build Coastguard Worker endif 622*0d6140beSAndroid Build Coastguard Worker 623*0d6140beSAndroid Build Coastguard Worker p_data += { 624*0d6140beSAndroid Build Coastguard Worker 'active' : active, 625*0d6140beSAndroid Build Coastguard Worker 'summary' : not_active_message, 626*0d6140beSAndroid Build Coastguard Worker } 627*0d6140beSAndroid Build Coastguard Worker programmer += {p_name : p_data} 628*0d6140beSAndroid Build Coastguard Worker if active 629*0d6140beSAndroid Build Coastguard Worker active_programmer_count += 1 630*0d6140beSAndroid Build Coastguard Worker endif 631*0d6140beSAndroid Build Coastguard Workerendforeach 632*0d6140beSAndroid Build Coastguard Worker 633*0d6140beSAndroid Build Coastguard Workerif active_programmer_count == 0 634*0d6140beSAndroid Build Coastguard Worker error('At least one programmer must be selected') 635*0d6140beSAndroid Build Coastguard Workerendif 636*0d6140beSAndroid Build Coastguard Worker 637*0d6140beSAndroid Build Coastguard Worker# add srcs, cargs & deps from active programmer to global srcs, cargs & deps 638*0d6140beSAndroid Build Coastguard Workerforeach p_name, p_data : programmer 639*0d6140beSAndroid Build Coastguard Worker if p_data.get('active') 640*0d6140beSAndroid Build Coastguard Worker srcs += p_data.get('srcs') 641*0d6140beSAndroid Build Coastguard Worker cargs += p_data.get('flags') 642*0d6140beSAndroid Build Coastguard Worker deps += p_data.get('deps') 643*0d6140beSAndroid Build Coastguard Worker endif 644*0d6140beSAndroid Build Coastguard Workerendforeach 645*0d6140beSAndroid Build Coastguard Worker 646*0d6140beSAndroid Build Coastguard Workerif config_print_wiki.enabled() 647*0d6140beSAndroid Build Coastguard Worker if get_option('classic_cli').disabled() 648*0d6140beSAndroid Build Coastguard Worker error('`classic_cli_print_wiki` can not be enabled without `classic_cli`') 649*0d6140beSAndroid Build Coastguard Worker else 650*0d6140beSAndroid Build Coastguard Worker srcs += files('print_wiki.c') 651*0d6140beSAndroid Build Coastguard Worker cargs += '-DCONFIG_PRINT_WIKI=1' 652*0d6140beSAndroid Build Coastguard Worker endif 653*0d6140beSAndroid Build Coastguard Workerendif 654*0d6140beSAndroid Build Coastguard Worker 655*0d6140beSAndroid Build Coastguard Workerif config_default_programmer_name != '' 656*0d6140beSAndroid Build Coastguard Worker cargs += '-DCONFIG_DEFAULT_PROGRAMMER_NAME=&programmer_' + config_default_programmer_name 657*0d6140beSAndroid Build Coastguard Workerelse 658*0d6140beSAndroid Build Coastguard Worker cargs += '-DCONFIG_DEFAULT_PROGRAMMER_NAME=NULL' 659*0d6140beSAndroid Build Coastguard Workerendif 660*0d6140beSAndroid Build Coastguard Worker 661*0d6140beSAndroid Build Coastguard Workercargs += '-DCONFIG_DEFAULT_PROGRAMMER_ARGS="' + config_default_programmer_args + '"' 662*0d6140beSAndroid Build Coastguard Worker 663*0d6140beSAndroid Build Coastguard Workerif get_option('llvm_cov').enabled() 664*0d6140beSAndroid Build Coastguard Worker cargs += ['-fprofile-instr-generate', '-fcoverage-mapping'] 665*0d6140beSAndroid Build Coastguard Worker link_args += ['-fprofile-instr-generate', '-fcoverage-mapping'] 666*0d6140beSAndroid Build Coastguard Workerendif 667*0d6140beSAndroid Build Coastguard Worker 668*0d6140beSAndroid Build Coastguard Workerinstall_headers([ 669*0d6140beSAndroid Build Coastguard Worker 'include/libflashrom.h', 670*0d6140beSAndroid Build Coastguard Worker ], 671*0d6140beSAndroid Build Coastguard Worker) 672*0d6140beSAndroid Build Coastguard Worker 673*0d6140beSAndroid Build Coastguard Workerinclude_dir = include_directories('include') 674*0d6140beSAndroid Build Coastguard Worker 675*0d6140beSAndroid Build Coastguard Workermapfile = 'libflashrom.map' 676*0d6140beSAndroid Build Coastguard Workerif host_machine.system() == 'darwin' 677*0d6140beSAndroid Build Coastguard Worker vflag = '' 678*0d6140beSAndroid Build Coastguard Workerelse 679*0d6140beSAndroid Build Coastguard Worker vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile) 680*0d6140beSAndroid Build Coastguard Workerendif 681*0d6140beSAndroid Build Coastguard Workerlibflashrom = library( 682*0d6140beSAndroid Build Coastguard Worker 'flashrom', 683*0d6140beSAndroid Build Coastguard Worker sources : [ 684*0d6140beSAndroid Build Coastguard Worker srcs, 685*0d6140beSAndroid Build Coastguard Worker ], 686*0d6140beSAndroid Build Coastguard Worker include_directories : include_dir, 687*0d6140beSAndroid Build Coastguard Worker soversion : lt_current, 688*0d6140beSAndroid Build Coastguard Worker version : lt_version, 689*0d6140beSAndroid Build Coastguard Worker dependencies : [ 690*0d6140beSAndroid Build Coastguard Worker deps, 691*0d6140beSAndroid Build Coastguard Worker ], 692*0d6140beSAndroid Build Coastguard Worker c_args : [ 693*0d6140beSAndroid Build Coastguard Worker cargs, 694*0d6140beSAndroid Build Coastguard Worker ], 695*0d6140beSAndroid Build Coastguard Worker install : true, 696*0d6140beSAndroid Build Coastguard Worker link_args : link_args + [vflag], 697*0d6140beSAndroid Build Coastguard Worker link_depends : mapfile, 698*0d6140beSAndroid Build Coastguard Worker) 699*0d6140beSAndroid Build Coastguard Worker 700*0d6140beSAndroid Build Coastguard Workerpkgg = import('pkgconfig') 701*0d6140beSAndroid Build Coastguard Workerpkgg.generate( 702*0d6140beSAndroid Build Coastguard Worker libraries : libflashrom, 703*0d6140beSAndroid Build Coastguard Worker version : flashrom_version.split()[0], # cut off the git version 704*0d6140beSAndroid Build Coastguard Worker name : 'flashrom', 705*0d6140beSAndroid Build Coastguard Worker filebase : 'flashrom', 706*0d6140beSAndroid Build Coastguard Worker description : 'library to interact with flashrom', 707*0d6140beSAndroid Build Coastguard Worker) 708*0d6140beSAndroid Build Coastguard Worker 709*0d6140beSAndroid Build Coastguard Workerif get_option('classic_cli').enabled() or get_option('classic_cli').auto() and not get_option('default_library') == 'shared' 710*0d6140beSAndroid Build Coastguard Worker 711*0d6140beSAndroid Build Coastguard Worker cli_srcs = files( 712*0d6140beSAndroid Build Coastguard Worker 'cli_classic.c', 713*0d6140beSAndroid Build Coastguard Worker 'cli_common.c', 714*0d6140beSAndroid Build Coastguard Worker 'cli_output.c' 715*0d6140beSAndroid Build Coastguard Worker ) 716*0d6140beSAndroid Build Coastguard Worker 717*0d6140beSAndroid Build Coastguard Worker if not cc.has_function('getopt_long') 718*0d6140beSAndroid Build Coastguard Worker cli_srcs += files('cli_getopt.c') 719*0d6140beSAndroid Build Coastguard Worker endif 720*0d6140beSAndroid Build Coastguard Worker 721*0d6140beSAndroid Build Coastguard Worker classic_cli = executable( 722*0d6140beSAndroid Build Coastguard Worker 'flashrom', 723*0d6140beSAndroid Build Coastguard Worker cli_srcs, 724*0d6140beSAndroid Build Coastguard Worker c_args : cargs, 725*0d6140beSAndroid Build Coastguard Worker include_directories : include_dir, 726*0d6140beSAndroid Build Coastguard Worker install : true, 727*0d6140beSAndroid Build Coastguard Worker install_dir : get_option('sbindir'), 728*0d6140beSAndroid Build Coastguard Worker link_args : link_args, 729*0d6140beSAndroid Build Coastguard Worker # flashrom needs internal symbols of libflashrom 730*0d6140beSAndroid Build Coastguard Worker link_with : get_option('default_library') == 'static' ? libflashrom : libflashrom.get_static_lib(), 731*0d6140beSAndroid Build Coastguard Worker ) 732*0d6140beSAndroid Build Coastguard Worker if get_option('llvm_cov').enabled() 733*0d6140beSAndroid Build Coastguard Worker run_target('llvm-cov-cli', command : ['scripts/llvm-cov', classic_cli]) 734*0d6140beSAndroid Build Coastguard Worker endif 735*0d6140beSAndroid Build Coastguard Workerendif 736*0d6140beSAndroid Build Coastguard Worker 737*0d6140beSAndroid Build Coastguard Workerif get_option('ich_descriptors_tool').auto() or get_option('ich_descriptors_tool').enabled() 738*0d6140beSAndroid Build Coastguard Worker subdir('util/ich_descriptors_tool') 739*0d6140beSAndroid Build Coastguard Workerendif 740*0d6140beSAndroid Build Coastguard Worker 741*0d6140beSAndroid Build Coastguard Workerif get_option('bash_completion').auto() or get_option('bash_completion').enabled() 742*0d6140beSAndroid Build Coastguard Worker if get_option('classic_cli').disabled() 743*0d6140beSAndroid Build Coastguard Worker if get_option('bash_completion').enabled() 744*0d6140beSAndroid Build Coastguard Worker error('`bash_completion` can not be enabled without `classic_cli`') 745*0d6140beSAndroid Build Coastguard Worker endif 746*0d6140beSAndroid Build Coastguard Worker else 747*0d6140beSAndroid Build Coastguard Worker bash_comp = dependency('bash-completion', required : false) 748*0d6140beSAndroid Build Coastguard Worker if bash_comp.found() 749*0d6140beSAndroid Build Coastguard Worker bash_comp_install_dir = bash_comp.get_variable( 750*0d6140beSAndroid Build Coastguard Worker pkgconfig : 'completionsdir', 751*0d6140beSAndroid Build Coastguard Worker pkgconfig_define : ['datadir', get_option('datadir')] 752*0d6140beSAndroid Build Coastguard Worker ) 753*0d6140beSAndroid Build Coastguard Worker else 754*0d6140beSAndroid Build Coastguard Worker bash_comp_install_dir = join_paths(get_option('datadir'), 'bash-completion', 'completions') 755*0d6140beSAndroid Build Coastguard Worker endif 756*0d6140beSAndroid Build Coastguard Worker 757*0d6140beSAndroid Build Coastguard Worker programmer_names_active_str = '' 758*0d6140beSAndroid Build Coastguard Worker foreach p_name, p_data : programmer 759*0d6140beSAndroid Build Coastguard Worker if p_data.get('active') 760*0d6140beSAndroid Build Coastguard Worker programmer_names_active_str += p_name + ' ' 761*0d6140beSAndroid Build Coastguard Worker endif 762*0d6140beSAndroid Build Coastguard Worker endforeach 763*0d6140beSAndroid Build Coastguard Worker 764*0d6140beSAndroid Build Coastguard Worker configure_file( 765*0d6140beSAndroid Build Coastguard Worker input : 'util/flashrom.bash-completion.tmpl', 766*0d6140beSAndroid Build Coastguard Worker output : 'flashrom.bash', 767*0d6140beSAndroid Build Coastguard Worker configuration : { 768*0d6140beSAndroid Build Coastguard Worker 'PROGRAMMERS' : programmer_names_active_str, 769*0d6140beSAndroid Build Coastguard Worker }, 770*0d6140beSAndroid Build Coastguard Worker install: true, 771*0d6140beSAndroid Build Coastguard Worker install_dir: bash_comp_install_dir, 772*0d6140beSAndroid Build Coastguard Worker ) 773*0d6140beSAndroid Build Coastguard Worker endif 774*0d6140beSAndroid Build Coastguard Workerendif 775*0d6140beSAndroid Build Coastguard Worker 776*0d6140beSAndroid Build Coastguard Worker# Use `.auto() or .enabled()` instead of `.allowed()` to keep the minimum meson version as low as possible. 777*0d6140beSAndroid Build Coastguard Worker# `.allowed()` gets introduced in 0.59.0 778*0d6140beSAndroid Build Coastguard Workerif get_option('tests').auto() or get_option('tests').enabled() 779*0d6140beSAndroid Build Coastguard Worker # unit-test framework 780*0d6140beSAndroid Build Coastguard Worker cmocka_dep = dependency( 781*0d6140beSAndroid Build Coastguard Worker 'cmocka', 782*0d6140beSAndroid Build Coastguard Worker fallback: ['cmocka', 'cmocka_dep'], 783*0d6140beSAndroid Build Coastguard Worker required : get_option('tests') 784*0d6140beSAndroid Build Coastguard Worker ) 785*0d6140beSAndroid Build Coastguard Worker 786*0d6140beSAndroid Build Coastguard Worker flashrom_test_dep = declare_dependency( 787*0d6140beSAndroid Build Coastguard Worker include_directories : include_dir, 788*0d6140beSAndroid Build Coastguard Worker sources : [ 789*0d6140beSAndroid Build Coastguard Worker srcs, 790*0d6140beSAndroid Build Coastguard Worker 'cli_common.c', 791*0d6140beSAndroid Build Coastguard Worker 'cli_output.c', 792*0d6140beSAndroid Build Coastguard Worker 'flashrom.c', 793*0d6140beSAndroid Build Coastguard Worker ], 794*0d6140beSAndroid Build Coastguard Worker compile_args : [ 795*0d6140beSAndroid Build Coastguard Worker '-includestdlib.h', 796*0d6140beSAndroid Build Coastguard Worker '-includeunittest_env.h', 797*0d6140beSAndroid Build Coastguard Worker ], 798*0d6140beSAndroid Build Coastguard Worker dependencies : [ 799*0d6140beSAndroid Build Coastguard Worker deps, 800*0d6140beSAndroid Build Coastguard Worker ], 801*0d6140beSAndroid Build Coastguard Worker ) 802*0d6140beSAndroid Build Coastguard Worker 803*0d6140beSAndroid Build Coastguard Worker if cmocka_dep.found() 804*0d6140beSAndroid Build Coastguard Worker subdir('tests') 805*0d6140beSAndroid Build Coastguard Worker endif 806*0d6140beSAndroid Build Coastguard Workerendif 807*0d6140beSAndroid Build Coastguard Worker 808*0d6140beSAndroid Build Coastguard Workerprogrammer_names_active = [] 809*0d6140beSAndroid Build Coastguard Workerprogrammer_names_not_active = [] 810*0d6140beSAndroid Build Coastguard Workerforeach p_name, p_data : programmer 811*0d6140beSAndroid Build Coastguard Worker if p_data.get('active') 812*0d6140beSAndroid Build Coastguard Worker programmer_names_active += p_name 813*0d6140beSAndroid Build Coastguard Worker else 814*0d6140beSAndroid Build Coastguard Worker programmer_names_not_active += p_name + ' (' + p_data.get('summary', '') + ')' 815*0d6140beSAndroid Build Coastguard Worker endif 816*0d6140beSAndroid Build Coastguard Workerendforeach 817*0d6140beSAndroid Build Coastguard Worker 818*0d6140beSAndroid Build Coastguard Workersummary({ 819*0d6140beSAndroid Build Coastguard Worker 'active' : [programmer_names_active], 820*0d6140beSAndroid Build Coastguard Worker 'non active' : [programmer_names_not_active], 821*0d6140beSAndroid Build Coastguard Worker}, section : 'Programmer') 822