[BACK]Return to configure CVS log [TXT][DIR] Up to [local] / prex

Annotation of prex/configure, Revision 1.1.1.1

1.1       nbrk        1: #! /bin/sh
                      2: #
                      3: # Prex configuration script
                      4: #
                      5:
                      6: quit()
                      7: {
                      8:     cat >&2 <<ERRORMSG
                      9:
                     10: ERROR: $@
                     11: ERRORMSG
                     12:        exit 1
                     13: }
                     14:
                     15: usage()
                     16: {
                     17:        if [ -n "$*" ]; then
                     18:                echo "configure: $*"
                     19:        fi
                     20:        cat <<USAGE
                     21:
                     22: Usage: configure [options]
                     23:
                     24:  General options:
                     25:     --target=TARGET         target system
                     26:     --cross-compile=PREFIX  prefix for cros-compile tools
                     27:     --no-debug              disable all debug code
                     28:
                     29:  Supported targets:
                     30:     i386-pc i386-nommu arm-gba
                     31: USAGE
                     32:        exit 1
                     33: }
                     34:
                     35: setdefaults()
                     36: {
                     37:        [ -d conf ] ||
                     38:                quit "configure must be run from the top source level"
                     39:
                     40:        target=""
                     41:        cross=""
                     42:        srcdir=`pwd`
                     43: }
                     44:
                     45: checkpath()
                     46: {
                     47:        CONFIG_IN=$srcdir/conf/$arch/config.$arch-$platform
                     48:        CMDBOX_IN=$srcdir/conf/etc/cmdbox.conf
                     49:        CONFIG_MK=$srcdir/conf/config.mk
                     50:        CONFIG_H=$srcdir/conf/config.h
                     51:
                     52:        [ -f $CONFIG_IN ] ||
                     53:                quit "can not find $CONFIG_IN"
                     54: }
                     55:
                     56: getoptions()
                     57: {
                     58:        while [ $# != 0 ]; do
                     59:                case $1 in
                     60:                --*=*)
                     61:                        option=`expr "x$1" : 'x\([^=]*\)='`
                     62:                        optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
                     63:                        ;;
                     64:                --*)
                     65:                        option=$1
                     66:                        ;;
                     67:                *)
                     68:                        usage "unrecognized option $1"
                     69:                        ;;
                     70:                esac
                     71:
                     72:                case $option in
                     73:                --help)
                     74:                        usage
                     75:                        ;;
                     76:                --target)
                     77:                        target=$optarg
                     78:                        ;;
                     79:                --cross-compile)
                     80:                        cross=$optarg
                     81:                        ;;
                     82:                --no-debug)
                     83:                        nodebug=1
                     84:                        ;;
                     85:                *)
                     86:                        usage "unrecognized option $1"
                     87:                        ;;
                     88:                esac
                     89:                shift
                     90:        done
                     91: }
                     92:
                     93: gettarget()
                     94: {
                     95:        if [ "x$target" = x ] ; then
                     96:                echo "Warning: '--target' option was not specified"
                     97:                echo "The target system was set to 'i386-pc'"
                     98:                target="i386-pc"
                     99:        fi
                    100:
                    101:        arch=`expr "x$target" : 'x\([^=]*\)-'`
                    102:        platform=`expr "x$target" : 'x[^=]*-\(.*\)'`
                    103:
                    104:        case "$arch" in
                    105:        i386|arm|ppc|sh|mips)
                    106:                ;;
                    107:        *)
                    108:                quit "Unkown target architecture: $arch"
                    109:                ;;
                    110:        esac
                    111:
                    112:        host_name=`uname -s`
                    113:        case $host_name in
                    114:        CYGWIN*)
                    115:                case $arch in
                    116:                i386)    cross="i386-elf-" ;;
                    117:                arm)     cross="arm-elf-" ;;
                    118:                ppc)     cross="powerpc-eabi-" ;;
                    119:                sh)      cross="sh-elf-" ;;
                    120:                mips)    cross="mips-elf-" ;;
                    121:                esac
                    122:                ;;
                    123:        esac
                    124:        cc="${cross}gcc"
                    125: }
                    126:
                    127: setparm()
                    128: {
                    129:        echo "$1=$2"
                    130:        echo "$1=$2" >>$CONFIG_MK
                    131:        if [ "$2" = "n" ] ; then
                    132:                echo "#undef $1" >>$CONFIG_H
                    133:        else
                    134:                echo "#define $1 $2" >>$CONFIG_H
                    135:        fi
                    136: }
                    137:
                    138: setgccoption()
                    139: {
                    140:        if $cc $1 -S -xc /dev/null -o /dev/null > /dev/null 2>&1; then
                    141:                echo "CONFIG_CFLAGS+= $1" >>$CONFIG_MK
                    142:        fi
                    143: }
                    144:
                    145: parseconfig()
                    146: {
                    147:        while read line; do
                    148:                word=`expr "x$line" : 'x\(CONFIG_[A-Za-z0-9_=]*\)'`
                    149:                param=`expr "x$word" : 'x\([^=]*\)='`
                    150:                value=`expr "x$word" : 'x[^=]*=\([A-Za-z0-9]*\)'`
                    151:                if [ -n "$param" ] ; then
                    152:                    setparm "$param" "$value"
                    153:                fi
                    154:        done < $1
                    155:        echo "" >> $CONFIG_MK
                    156: }
                    157:
                    158: main()
                    159: {
                    160:        setdefaults
                    161:        getoptions "$@"
                    162:        gettarget
                    163:        checkpath
                    164:
                    165:        echo "Processing configuration files..."
                    166:
                    167:        echo "#" > $CONFIG_MK
                    168:        echo "# Automatically generated file. Don't edit" >> $CONFIG_MK
                    169:        echo "#" >> $CONFIG_MK
                    170:
                    171:        echo "/*" > $CONFIG_H
                    172:        echo " * Automatically generated file. Don't edit" >> $CONFIG_H
                    173:        echo " */" >> $CONFIG_H
                    174:
                    175:        #
                    176:        # Generate configuration parameters
                    177:        #
                    178:        parseconfig $CONFIG_IN
                    179:        parseconfig $CMDBOX_IN
                    180:
                    181:        #
                    182:        # Check arch/platform setting
                    183:        #
                    184:        echo "SRCDIR=$srcdir" >> $CONFIG_MK
                    185:        echo "ARCH=$arch" >> $CONFIG_MK
                    186:        echo "PLATFORM=$platform" >> $CONFIG_MK
                    187:        [ "x$cross" != x ] && echo "CROSS_COMPILE=$cross" >> $CONFIG_MK
                    188:        [ "x$nodebug" != x ] && echo "NDEBUG=1" >> $CONFIG_MK
                    189:        echo "" >> $CONFIG_MK
                    190:
                    191:        #
                    192:        # Check gcc options
                    193:        #
                    194:        setgccoption "-fno-stack-protector"
                    195: }
                    196:
                    197: main "$@"

CVSweb