Skip to content
  • Stefan Weil's avatar
    Fix conversion from lower to upper case with Turkish locale · bb55b712
    Stefan Weil authored
    
    
    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: default avatarStefan Weil <sw@weilnetz.de>
    Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
    bb55b712