diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-09-26 22:07:02 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-09-26 22:07:02 +0100 |
commit | 08df7e5577e4b926822032e218ef6ef478ab7aca (patch) | |
tree | 3ff1dac522c1c6abbbe708fd3ac1f75e3db5d8dd | |
parent | 31bc1d8481af414cfa2857f905e40f7d8e6d5b2e (diff) | |
parent | 3d5eecab4a5a00df897253dda5792411a1872732 (diff) |
Merge remote-tracking branch 'remotes/kraxel/tags/fw-20170926-pull-request' into staging
add --firmwarepath to configure
# gpg: Signature made Tue 26 Sep 2017 12:06:07 BST
# gpg: using RSA key 0x4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
# gpg: aka "Gerd Hoffmann <gerd@kraxel.org>"
# gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138
* remotes/kraxel/tags/fw-20170926-pull-request:
Add --firmwarepath to configure
add qemu_add_data_dir()
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rwxr-xr-x | configure | 6 | ||||
-rwxr-xr-x | scripts/create_config | 2 | ||||
-rw-r--r-- | vl.c | 44 |
3 files changed, 38 insertions, 14 deletions
@@ -332,6 +332,7 @@ modules="no" prefix="/usr/local" mandir="\${prefix}/share/man" datadir="\${prefix}/share" +firmwarepath="\${prefix}/share/qemu-firmware" qemu_docdir="\${prefix}/share/doc/qemu" bindir="\${prefix}/bin" libdir="\${prefix}/lib" @@ -914,6 +915,8 @@ for opt do ;; --localstatedir=*) local_statedir="$optarg" ;; + --firmwarepath=*) firmwarepath="$optarg" + ;; --sbindir=*|--sharedstatedir=*|\ --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) @@ -1415,6 +1418,7 @@ Advanced options (experts only): --libdir=PATH install libraries in PATH --sysconfdir=PATH install config in PATH$confsuffix --localstatedir=PATH install local state in PATH (set at runtime on win32) + --firmwarepath=PATH search PATH for firmware files --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] --enable-debug enable common debug build options --disable-strip disable stripping binaries @@ -5275,6 +5279,7 @@ libs_softmmu="$pixman_libs $libs_softmmu" echo "Install prefix $prefix" echo "BIOS directory $(eval echo $qemu_datadir)" +echo "firmware path $(eval echo $firmwarepath)" echo "binary directory $(eval echo $bindir)" echo "library directory $(eval echo $libdir)" echo "module directory $(eval echo $qemu_moddir)" @@ -5466,6 +5471,7 @@ echo "mandir=$mandir" >> $config_host_mak echo "sysconfdir=$sysconfdir" >> $config_host_mak echo "qemu_confdir=$qemu_confdir" >> $config_host_mak echo "qemu_datadir=$qemu_datadir" >> $config_host_mak +echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak echo "qemu_docdir=$qemu_docdir" >> $config_host_mak echo "qemu_moddir=$qemu_moddir" >> $config_host_mak if test "$mingw32" = "no" ; then diff --git a/scripts/create_config b/scripts/create_config index e6929dd61e..603b826886 100755 --- a/scripts/create_config +++ b/scripts/create_config @@ -15,7 +15,7 @@ case $line in echo "#define QEMU_VERSION_MINOR $minor" echo "#define QEMU_VERSION_MICRO $micro" ;; - qemu_*dir=*) # qemu-specific directory configuration + qemu_*dir=* | qemu_*path=*) # qemu-specific directory configuration name=${line%=*} value=${line#*=} define_name=$(echo $name | LC_ALL=C tr '[a-z]' '[A-Z]') @@ -2348,6 +2348,24 @@ char *qemu_find_file(int type, const char *name) return NULL; } +static void qemu_add_data_dir(const char *path) +{ + int i; + + if (path == NULL) { + return; + } + if (data_dir_idx == ARRAY_SIZE(data_dir)) { + return; + } + for (i = 0; i < data_dir_idx; i++) { + if (strcmp(data_dir[i], path) == 0) { + return; /* duplicate */ + } + } + data_dir[data_dir_idx++] = path; +} + static inline bool nonempty_str(const char *str) { return str && *str; @@ -3107,6 +3125,7 @@ int main(int argc, char **argv, char **envp) Error *main_loop_err = NULL; Error *err = NULL; bool list_data_dirs = false; + char **dirs; typedef struct BlockdevOptions_queue { BlockdevOptions *bdo; Location loc; @@ -3527,8 +3546,8 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_L: if (is_help_option(optarg)) { list_data_dirs = true; - } else if (data_dir_idx < ARRAY_SIZE(data_dir)) { - data_dir[data_dir_idx++] = optarg; + } else { + qemu_add_data_dir(optarg); } break; case QEMU_OPTION_bios: @@ -4291,19 +4310,18 @@ int main(int argc, char **argv, char **envp) qemu_set_log(0); } - /* If no data_dir is specified then try to find it relative to the - executable path. */ - if (data_dir_idx < ARRAY_SIZE(data_dir)) { - data_dir[data_dir_idx] = os_find_datadir(); - if (data_dir[data_dir_idx] != NULL) { - data_dir_idx++; - } - } - /* If all else fails use the install path specified when building. */ - if (data_dir_idx < ARRAY_SIZE(data_dir)) { - data_dir[data_dir_idx++] = CONFIG_QEMU_DATADIR; + /* add configured firmware directories */ + dirs = g_strsplit(CONFIG_QEMU_FIRMWAREPATH, G_SEARCHPATH_SEPARATOR_S, 0); + for (i = 0; dirs[i] != NULL; i++) { + qemu_add_data_dir(dirs[i]); } + /* try to find datadir relative to the executable path */ + qemu_add_data_dir(os_find_datadir()); + + /* add the datadir specified when building */ + qemu_add_data_dir(CONFIG_QEMU_DATADIR); + /* -L help lists the data directories and exits. */ if (list_data_dirs) { for (i = 0; i < data_dir_idx; i++) { |