On 5/11/18 19:14, Michael S. Tsirkin wrote:
> From: Peter Maydell <peter.maydell@linaro.org>
>
> The FILES variable is used to accumulate a list of things to symlink
> from the source tree into the build tree. These don't have to be
> individual files; symlinking an entire directory of data files is
> also fine. Rename it to something less confusing before we add a few
> directories to it.
>
> Improve the comment to clarify what DIRS and LINKS do and why
> it's not a good idea to add things to LINKS with wildcarding.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Again, I reviewed/tested this patch.
> ---
> configure | 35 ++++++++++++++++++++++-------------
> 1 file changed, 22 insertions(+), 13 deletions(-)
>
> diff --git a/configure b/configure
> index bfdca8b814..52408ed307 100755
> --- a/configure
> +++ b/configure
> @@ -7392,22 +7392,31 @@ if test "$ccache_cpp2" = "yes"; then
> echo "export CCACHE_CPP2=y" >> $config_host_mak
> fi
>
> -# build tree in object directory in case the source is not in the current directory
> +# If we're using a separate build tree, set it up now.
> +# DIRS are directories which we simply mkdir in the build tree;
> +# LINKS are things to symlink back into the source tree
> +# (these can be both files and directories).
> +# Caution: do not add files or directories here using wildcards. This
> +# will result in problems later if a new file matching the wildcard is
> +# added to the source tree -- nothing will cause configure to be rerun
> +# so the build tree will be missing the link back to the new file, and
> +# tests might fail. Prefer to keep the relevant files in their own
> +# directory and symlink the directory instead.
> DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
> DIRS="$DIRS tests/fp"
> DIRS="$DIRS docs docs/interop fsdev scsi"
> DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
> DIRS="$DIRS roms/seabios roms/vgabios"
> -FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
> -FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
> -FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
> -FILES="$FILES tests/fp/Makefile"
> -FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
> -FILES="$FILES pc-bios/spapr-rtas/Makefile"
> -FILES="$FILES pc-bios/s390-ccw/Makefile"
> -FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
> -FILES="$FILES pc-bios/qemu-icon.bmp"
> -FILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
> +LINKS="Makefile tests/tcg/Makefile qdict-test-data.txt"
> +LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
> +LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
> +LINKS="$LINKS tests/fp/Makefile"
> +LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
> +LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
> +LINKS="$LINKS pc-bios/s390-ccw/Makefile"
> +LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
> +LINKS="$LINKS pc-bios/qemu-icon.bmp"
> +LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
> for bios_file in \
> $source_path/pc-bios/*.bin \
> $source_path/pc-bios/*.lid \
> @@ -7419,10 +7428,10 @@ for bios_file in \
> $source_path/pc-bios/u-boot.* \
> $source_path/pc-bios/palcode-*
> do
> - FILES="$FILES pc-bios/$(basename $bios_file)"
> + LINKS="$LINKS pc-bios/$(basename $bios_file)"
> done
> mkdir -p $DIRS
> -for f in $FILES ; do
> +for f in $LINKS ; do
> if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
> symlink "$source_path/$f" "$f"
> fi
>