Some locale settings let make fail or create wrong results because tr '[:lower:]' '[:upper:]' which is used to convert from lower to upper case depends on the locale. With locale tr_TR.UTF-8, lower case 'i' is not converted to 'I'. This results in wrong entries in config-host.h like these ones: #define CONFIG_QEMU_PREFiX "/usr/local" #define CONFIG_QEMU_BiNDiR "/usr/local/bin" This problem was reported by Emre Ersin. The same problem occurs when configure creates the target specific files config-target.mak. They get wrong declarations: TARGET_CRiS=y TARGET_i386=y TARGET_MiCROBLAZE=y TARGET_MiPS64=y TARGET_MiPS=y TARGET_UNiCORE32=y It is sufficient to restrict the conversion to the characters a-z. Using this explicit range avoids the dependency on the locale settings and is also shorter. v2: POSIX says that 'tr a-z' is unspecified outside of the POSIX locale, so we must set LC_ALL=C to make sure that we are using POSIX (hint from Eric Blake, thanks). Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
104 lines
2.3 KiB
Bash
Executable file
104 lines
2.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
echo "/* Automatically generated by create_config - do not modify */"
|
|
|
|
while read line; do
|
|
|
|
case $line in
|
|
VERSION=*) # configuration
|
|
version=${line#*=}
|
|
echo "#define QEMU_VERSION \"$version\""
|
|
;;
|
|
PKGVERSION=*) # configuration
|
|
pkgversion=${line#*=}
|
|
echo "#define QEMU_PKGVERSION \"$pkgversion\""
|
|
;;
|
|
prefix=* | [a-z]*dir=*) # directory configuration
|
|
name=${line%=*}
|
|
value=${line#*=}
|
|
define_name=`echo $name | LC_ALL=C tr '[a-z]' '[A-Z]'`
|
|
eval "define_value=\"$value\""
|
|
echo "#define CONFIG_QEMU_$define_name \"$define_value\""
|
|
# save for the next definitions
|
|
eval "$name=\$define_value"
|
|
;;
|
|
CONFIG_AUDIO_DRIVERS=*)
|
|
drivers=${line#*=}
|
|
echo "#define CONFIG_AUDIO_DRIVERS \\"
|
|
for drv in $drivers; do
|
|
echo " &${drv}_audio_driver,\\"
|
|
done
|
|
echo ""
|
|
;;
|
|
CONFIG_BDRV_WHITELIST=*)
|
|
echo "#define CONFIG_BDRV_WHITELIST \\"
|
|
for drv in ${line#*=}; do
|
|
echo " \"${drv}\",\\"
|
|
done
|
|
echo " NULL"
|
|
;;
|
|
CONFIG_*=y) # configuration
|
|
name=${line%=*}
|
|
echo "#define $name 1"
|
|
;;
|
|
CONFIG_*=*) # configuration
|
|
name=${line%=*}
|
|
value=${line#*=}
|
|
echo "#define $name $value"
|
|
;;
|
|
ARCH=*) # configuration
|
|
arch=${line#*=}
|
|
arch_name=`echo $arch | LC_ALL=C tr '[a-z]' '[A-Z]'`
|
|
echo "#define HOST_$arch_name 1"
|
|
;;
|
|
HOST_USB=*)
|
|
# do nothing
|
|
;;
|
|
HOST_CC=*)
|
|
# do nothing
|
|
;;
|
|
HOST_*=y) # configuration
|
|
name=${line%=*}
|
|
echo "#define $name 1"
|
|
;;
|
|
HOST_*=*) # configuration
|
|
name=${line%=*}
|
|
value=${line#*=}
|
|
echo "#define $name $value"
|
|
;;
|
|
TARGET_ARCH=*) # configuration
|
|
target_arch=${line#*=}
|
|
echo "#define TARGET_ARCH \"$target_arch\""
|
|
;;
|
|
TARGET_BASE_ARCH=*) # configuration
|
|
target_base_arch=${line#*=}
|
|
if [ "$target_base_arch" != "$target_arch" ]; then
|
|
base_arch_name=`echo $target_base_arch | LC_ALL=C tr '[a-z]' '[A-Z]'`
|
|
echo "#define TARGET_$base_arch_name 1"
|
|
fi
|
|
;;
|
|
TARGET_XML_FILES=*)
|
|
# do nothing
|
|
;;
|
|
TARGET_ABI_DIR=*)
|
|
# do nothing
|
|
;;
|
|
TARGET_ARCH2=*)
|
|
# do nothing
|
|
;;
|
|
TARGET_DIRS=*)
|
|
# do nothing
|
|
;;
|
|
TARGET_*=y) # configuration
|
|
name=${line%=*}
|
|
echo "#define $name 1"
|
|
;;
|
|
TARGET_*=*) # configuration
|
|
name=${line%=*}
|
|
value=${line#*=}
|
|
echo "#define $name $value"
|
|
;;
|
|
esac
|
|
|
|
done # read
|