diff options
author | Thomas Heijligen <thomas.heijligen@secunet.de> | 2021-06-01 16:22:14 +0200 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2021-06-10 12:53:31 +0000 |
commit | 732aafdfecf084cc4277a344ac26b4ea5d0dd3be (patch) | |
tree | 18dfe94b37e785f6ce5a5b865164417f222357c9 | |
parent | bf0396a60081a508ff088c7374311eb170d6dbf1 (diff) | |
download | flashrom-732aafdfecf084cc4277a344ac26b4ea5d0dd3be.tar.gz flashrom-732aafdfecf084cc4277a344ac26b4ea5d0dd3be.tar.bz2 flashrom-732aafdfecf084cc4277a344ac26b4ea5d0dd3be.zip |
CONFIG_DEFAULT_PROGRAMMER_NAME: Use programmer name instead of enum
CONFIG_DEFAULT_PROGRAMER_NAME replaces CONFIG_DEFAULT_PROGRAMMER.
It uses the name of the programmer for identification.
make CONFIG_DEFAULT_PROGRAMER_NAME=dummy and
meson -Ddefault_programmer_name=dummy will extend to
CONFIG_DEFAULT_PROGRAMER_NAME=&programmer_dummy in the code.
Change-Id: I976447787c6f6bfbdc0145d80d61e1ddcf97ac33
Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.de>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/55123
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r-- | Makefile | 17 | ||||
-rw-r--r-- | cli_classic.c | 9 | ||||
-rw-r--r-- | meson.build | 14 | ||||
-rw-r--r-- | meson_options.txt | 2 | ||||
-rw-r--r-- | tests/meson.build | 2 |
5 files changed, 28 insertions, 16 deletions
@@ -44,14 +44,12 @@ BUILD_DETAILS_FILE ?= build_details.txt # system attached to an external programmer while the default programmer is set to the internal programmer, and # you forget to use the -p parameter. This would (try to) overwrite the existing firmware of the computer # running flashrom). Please do not enable this without thinking about the possible consequences. Possible -# values are those specified in enum programmer in programmer.h (which depend on other CONFIG_* options -# evaluated below, namely those that enable/disable the various programmers). -# Compilation will fail for unspecified values. -CONFIG_DEFAULT_PROGRAMMER ?= PROGRAMMER_INVALID +# values can be found when running 'flashrom --list-supported' under the 'Supported programmers' section. +CONFIG_DEFAULT_PROGRAMMER_NAME ?= # The following adds a default parameter for the default programmer set above (only). -CONFIG_DEFAULT_PROGRAMMER_ARGS ?= '' +CONFIG_DEFAULT_PROGRAMMER_ARGS ?= # Example: compiling with -# make CONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_SERPROG CONFIG_DEFAULT_PROGRAMMER_ARGS="dev=/dev/ttyUSB0:1500000" +# make CONFIG_DEFAULT_PROGRAMMER_NAME=serprog CONFIG_DEFAULT_PROGRAMMER_ARGS="dev=/dev/ttyUSB0:1500000" # would make executing './flashrom' (almost) equivialent to './flashrom -p serprog:dev=/dev/ttyUSB0:1500000'. # If your compiler spits out excessive warnings, run make WARNERROR=no @@ -868,7 +866,12 @@ CONFIG_INTERNAL_DMI ?= yes # Programmer drivers and programmer support infrastructure. # Depending on the CONFIG_* variables set and verified above we set compiler flags and parameters below. -FEATURE_CFLAGS += -D'CONFIG_DEFAULT_PROGRAMMER=$(CONFIG_DEFAULT_PROGRAMMER)' +ifdef CONFIG_DEFAULT_PROGRAMMER_NAME +FEATURE_CFLAGS += -D'CONFIG_DEFAULT_PROGRAMMER_NAME=&programmer_$(CONFIG_DEFAULT_PROGRAMMER_NAME)' +else +FEATURE_CFLAGS += -D'CONFIG_DEFAULT_PROGRAMMER_NAME=NULL' +endif + FEATURE_CFLAGS += -D'CONFIG_DEFAULT_PROGRAMMER_ARGS="$(CONFIG_DEFAULT_PROGRAMMER_ARGS)"' ifeq ($(CONFIG_INTERNAL), yes) diff --git a/cli_classic.c b/cli_classic.c index 4537e1ecf..158110b9a 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -172,7 +172,6 @@ int main(int argc, char *argv[]) int read_it = 0, extract_it = 0, write_it = 0, erase_it = 0, verify_it = 0; int dont_verify_it = 0, dont_verify_all = 0, list_supported = 0, operation_specified = 0; struct flashrom_layout *layout = NULL; - // enum programmer prog = PROGRAMMER_INVALID; static const struct programmer_entry *prog = NULL; enum { OPTION_IFD = 0x0100, @@ -544,12 +543,14 @@ int main(int argc, char *argv[]) } if (prog == NULL) { - if (CONFIG_DEFAULT_PROGRAMMER != PROGRAMMER_INVALID) { - prog = programmer_table[CONFIG_DEFAULT_PROGRAMMER]; + const struct programmer_entry *const default_programmer = CONFIG_DEFAULT_PROGRAMMER_NAME; + + if (default_programmer) { + prog = default_programmer; /* We need to strdup here because we free(pparam) unconditionally later. */ pparam = strdup(CONFIG_DEFAULT_PROGRAMMER_ARGS); msg_pinfo("Using default programmer \"%s\" with arguments \"%s\".\n", - programmer_table[CONFIG_DEFAULT_PROGRAMMER]->name, pparam); + default_programmer->name, pparam); } else { msg_perr("Please select a programmer with the --programmer parameter.\n" #if CONFIG_INTERNAL == 1 diff --git a/meson.build b/meson.build index 00170717d..6ebf3dcd0 100644 --- a/meson.build +++ b/meson.build @@ -69,6 +69,8 @@ config_stlinkv3_spi = get_option('config_stlinkv3_spi') config_lspcon_i2c_spi = get_option('config_lspcon_i2c_spi') config_realtek_mst_i2c_spi = get_option('config_realtek_mst_i2c_spi') config_print_wiki= get_option('print_wiki') +config_default_programmer_name = get_option('default_programmer_name') +config_default_programmer_args = get_option('default_programmer_args') cargs = [] deps = [] @@ -436,6 +438,14 @@ if config_print_wiki cargs += '-DCONFIG_PRINT_WIKI=1' endif +if config_default_programmer_name != '' + cargs += '-DCONFIG_DEFAULT_PROGRAMMER_NAME=&programmer_' + config_default_programmer_name +else + cargs += '-DCONFIG_DEFAULT_PROGRAMMER_NAME=NULL' +endif + +cargs += '-DCONFIG_DEFAULT_PROGRAMMER_ARGS="' + config_default_programmer_args + '"' + # we can't just link_with libflashrom as we require all the internal symbols... executable( 'flashrom', @@ -450,9 +460,7 @@ executable( deps, ], c_args : [ - cargs, - '-DCONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_INVALID', - '-DCONFIG_DEFAULT_PROGRAMMER_ARGS=""', + cargs ], install : true, install_dir : sbindir, diff --git a/meson_options.txt b/meson_options.txt index cd92f10a2..86a38c86f 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,6 +1,8 @@ option('pciutils', type : 'boolean', value : true, description : 'use pciutils') option('usb', type : 'boolean', value : true, description : 'use libusb1') option('print_wiki', type : 'boolean', value : true, description : 'Print Wiki') +option('default_programmer_name', type : 'string', description : 'default programmer') +option('default_programmer_args', type : 'string', description : 'default programmer arguments') option('config_atahpt', type : 'boolean', value : false, description : 'Highpoint (HPT) ATA/RAID controllers') option('config_atapromise', type : 'boolean', value : false, description : 'Promise ATA controller') diff --git a/tests/meson.build b/tests/meson.build index d17567ec9..852fd4c18 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -50,8 +50,6 @@ flashrom_tests = executable('flashrom_unit_tests', '-ffunction-sections', '-fdata-sections', # '-DSTANDALONE', - '-DCONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_DUMMY', - '-DCONFIG_DEFAULT_PROGRAMMER_ARGS=""', ], export_dynamic : true, link_args : mocks, |