#!/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\""
    ;;
 qemu_*dir=*) # qemu-specific 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_$define_name \"$define_value\""
    # save for the next definitions
    eval "$name=\$define_value"
    ;;
 prefix=*)
    # save for the next definitions
    prefix=${line#*=}
    ;;
 IASL=*) # iasl executable
    value=${line#*=}
    echo "#define CONFIG_IASL $value"
    ;;
 CONFIG_AUDIO_DRIVERS=*)
    drivers=${line#*=}
    echo "#define CONFIG_AUDIO_DRIVERS \\"
    for drv in $drivers; do
      echo "    &${drv}_audio_driver,\\"
    done
    echo ""
    ;;
 CONFIG_BDRV_RW_WHITELIST=*)
    echo "#define CONFIG_BDRV_RW_WHITELIST\\"
    for drv in ${line#*=}; do
      echo "    \"${drv}\",\\"
    done
    echo "    NULL"
    ;;
 CONFIG_BDRV_RO_WHITELIST=*)
    echo "#define CONFIG_BDRV_RO_WHITELIST\\"
    for drv in ${line#*=}; do
      echo "    \"${drv}\",\\"
    done
    echo "    NULL"
    ;;
 CONFIG_*='$(CONFIG_SOFTMMU)'|CONFIG_*=y) # configuration
    name=${line%=*}
    echo "#define $name 1"
    ;;
 CONFIG_*=*) # configuration
    name=${line%=*}
    value=${line#*=}
    echo "#define $name $value"
    ;;
 HAVE_*=y) # configuration
    name=${line%=*}
    echo "#define $name 1"
    ;;
 HAVE_*=*) # 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_BASE_ARCH=*) # configuration
    target_base_arch=${line#*=}
    base_arch_name=`echo $target_base_arch | LC_ALL=C tr '[a-z]' '[A-Z]'`
    echo "#define TARGET_$base_arch_name 1"
    ;;
 TARGET_XML_FILES=*)
    # do nothing
    ;;
 TARGET_ABI_DIR=*)
    # do nothing
    ;;
 TARGET_NAME=*)
    target_name=${line#*=}
    echo "#define TARGET_NAME \"$target_name\""
    ;;
 TARGET_DIRS=*)
    # do nothing
    ;;
 TARGET_*=y) # configuration
    name=${line%=*}
    echo "#define $name 1"
    ;;
 TARGET_*=*) # configuration
    name=${line%=*}
    value=${line#*=}
    echo "#define $name $value"
    ;;
 DSOSUF=*)
    echo "#define HOST_DSOSUF \"${line#*=}\""
    ;;
esac

done # read
