#!/bin/sh

echo "/* Automatically generated by configure - do not modify */"
echo "#include \"../config-host.h\""

while read line; do

case $line in
 CONFIG_*=y) # configuration
    name=${line%=*}
    echo "#define $name 1"
    ;;
 CONFIG_*=*) # configuration
    name=${line%=*}
    value=${line#*=}
    echo "#define $name $value"
    ;;
 TARGET_ARCH=*) # configuration
    target_arch=${line#*=}
    arch_name=`echo $target_arch | tr '[:lower:]' '[:upper:]'`
    echo "#define TARGET_ARCH \"$target_arch\""
    echo "#define TARGET_$arch_name 1"
    ;;
 TARGET_BASE_ARCH=*) # configuration
    target_base_arch=${line#*=}
    if [ "$target_base_arch" != "$target_arch" ]; then
      base_arch_name=`echo $target_base_arch | tr '[:lower:]' '[:upper:]'`
      echo "#define TARGET_$base_arch_name 1"
    fi
    ;;
 TARGET_XML_FILES=*)
    # do nothing
    ;;
 TARGET_ABI_DIR=*)
    # do nothing
    ;;
 TARGET_ARCH2=*)
    # do nothing
    ;;
 TARGET_*=y) # configuration
    name=${line%=*}
    echo "#define $name 1"
    ;;
 TARGET_*=*) # configuration
    name=${line%=*}
    value=${line#*=}
    echo "#define $name $value"
    ;;
 USE_NPTL=y) # configuration
    name=${line%=*}
    echo "#define $name 1"
    ;;
esac

done # read
