Annotation of qemu/roms/openbios/config/scripts/switch-arch, revision 1.1

1.1     ! root        1: #!/bin/sh
        !             2: 
        !             3: #
        !             4: # MOLPATH is needed if you want to build openbios-mol.elf
        !             5: #
        !             6: MOLPATH=$HOME/mol-0.9.71
        !             7: 
        !             8: if [ x"$1" = x -o "$1" = "-help" ]; then
        !             9:   printf "Usage:\n  $0 [arch-config]...\n"
        !            10:   printf "arch-config values supported for native or cross compiled builds:\n"
        !            11:   printf " amd64, ppc, sparc32, sparc64, x86\n\n"
        !            12:   printf "Add \"unix-\" prefix to compile openbios-unix executable (native only)\n"
        !            13:   printf "Add \"builtin-\" prefix to compile openbios-builtin executables\n\n"
        !            14:   printf "Without prefixes, builtin and unix targets are selected\n\n"
        !            15:   printf "Special targets: mol-ppc briq-ppc pearpc-ppc qemu-ppc qemu-ppc64 xbox-x86\n\n"
        !            16:   printf "Example: $0 builtin-sparc32 unix-amd64 builtin-amd64\n"
        !            17:   exit 0
        !            18: fi
        !            19: 
        !            20: crosscflags()
        !            21: {
        !            22:     host=$1
        !            23:     target=$2
        !            24: 
        !            25:     if test "$host" = "powerpc" -o "$host" = "ppc" \
        !            26:         -o "$host" = "mips" -o "$host" = "s390" \
        !            27:         -o "$host" = "sparc32" -o "$host" = "sparc64" \
        !            28:         -o "$host" = "m68k" -o "$host" = "armv4b"; then
        !            29:         hostbigendian="yes"
        !            30:     else
        !            31:         hostbigendian="no"
        !            32:     fi
        !            33: 
        !            34: # host long bits test
        !            35:     if test "$host" = "sparc64" -o "$host" = "ia64" \
        !            36:         -o "$host" = "amd64" -o "$host" = "x86_64" \
        !            37:         -o "$host" = "alpha"; then
        !            38:         hostlongbits="64"
        !            39:     else
        !            40:         hostlongbits="32"
        !            41:     fi
        !            42: 
        !            43:     if test "$target" = "powerpc" -o "$target" = "ppc" \
        !            44:         -o "$target" = "powerpc64" -o "$target" = "ppc64" \
        !            45:         -o "$target" = "mips" -o "$target" = "s390" \
        !            46:         -o "$target" = "sparc32" -o "$target" = "sparc64" \
        !            47:         -o "$target" = "m68k" -o "$target" = "armv4b"; then
        !            48:         targetbigendian="yes"
        !            49:     else
        !            50:         targetbigendian="no"
        !            51:     fi
        !            52: 
        !            53: # target long bits test
        !            54:     if test "$target" = "sparc64" -o "$target" = "ia64" \
        !            55:         -o "$target" = "amd64"  -o "$target" = "x86_64" \
        !            56:         -o "$target" = "powerpc64" -o "$target" = "ppc64" \
        !            57:         -o "$target" = "alpha"; then
        !            58:         targetlongbits="64"
        !            59:     else
        !            60:         targetlongbits="32"
        !            61:     fi
        !            62: 
        !            63:     if test "$targetbigendian" = "$hostbigendian"; then
        !            64:         cflags="-USWAP_ENDIANNESS"
        !            65:     else
        !            66:         cflags="-DSWAP_ENDIANNESS"
        !            67:     fi
        !            68: 
        !            69:     if test "$targetlongbits" = "$hostlongbits"; then
        !            70:         cflags="$cflags -DNATIVE_BITWIDTH_EQUALS_HOST_BITWIDTH"
        !            71:     elif test "$targetlongbits" -lt "$hostlongbits"; then
        !            72:         cflags="$cflags -DNATIVE_BITWIDTH_SMALLER_THAN_HOST_BITWIDTH"
        !            73:     else
        !            74:         cflags="$cflags -DNATIVE_BITWIDTH_LARGER_THAN_HOST_BITWIDTH"
        !            75:     fi
        !            76: 
        !            77:     if test "$target" = "sparc64" -o "$target" = "ia64" \
        !            78:          -o "$target" = "amd64" -o "$target" = "x86_64" \
        !            79:          -o "$target" = "alpha"; then
        !            80:         if test "$host" = "x86"; then
        !            81:             cflags="$cflags -DNEED_FAKE_INT128_T"
        !            82:         elif test "$host" = "ppc" -a `uname -s` = "Darwin"; then
        !            83:             cflags="$cflags -DNEED_FAKE_INT128_T"
        !            84:         fi
        !            85:     fi
        !            86: 
        !            87:     CROSSCFLAGS=$cflags
        !            88: }
        !            89: 
        !            90: archname()
        !            91: {
        !            92:     HOSTARCH=`uname -m | sed -e s/i.86/x86/ -e s/i86pc/x86/ \
        !            93:        -e s/sun4u/sparc64/ -e s/sparc$/sparc32/ \
        !            94:        -e s/arm.*/arm/ -e s/sa110/arm/ -e s/x86_64/amd64/ \
        !            95:        -e "s/Power Macintosh/ppc/"`
        !            96: }
        !            97: 
        !            98: select_prefix()
        !            99: {
        !           100:     for TARGET in ${1}-linux-gnu- ${1}-linux- ${1}-elf- ${1}-eabi-
        !           101:     do
        !           102:         if type ${TARGET}gcc > /dev/null 2>&1
        !           103:         then
        !           104:             return
        !           105:         fi
        !           106:     done
        !           107:     if [ "$ARCH" = "$HOSTARCH" ]; then
        !           108:         return
        !           109:     fi
        !           110:     echo "ERROR: no ${1} cross-compiler found !" 1>&2
        !           111:     exit 1
        !           112: }
        !           113: 
        !           114: config_set_boolean()
        !           115: {
        !           116:     option=`echo $1 | tr a-z A-Z`
        !           117:     echo "<option name=\"$option\" type=\"boolean\" value=\"true\" />"
        !           118: }
        !           119: 
        !           120: if ! test -f utils/dist/debian/rules; then
        !           121:        echo "switch-arch must be run from the top-level source directory" >&2
        !           122:        exit 1
        !           123: fi
        !           124: 
        !           125: # This is needed because viewvc messes with the permissions of executables:
        !           126: chmod 755 utils/dist/debian/rules
        !           127: chmod 755 config/scripts/switch-arch
        !           128: chmod 755 config/scripts/reldir
        !           129: 
        !           130: if test "x$HOSTARCH" = "x"; then
        !           131:     archname
        !           132: fi
        !           133: 
        !           134: VERSION=`head VERSION`
        !           135: 
        !           136: echo "Configuring OpenBIOS on $HOSTARCH for $*"
        !           137: 
        !           138: target_list=""
        !           139: for target in $*; do
        !           140:     case $target in
        !           141:         unix-*|builtin-*|plain-*|mol-ppc|briq-ppc|pearpc-ppc|qemu-ppc|qemu-ppc64|xbox-x86)
        !           142:         target_list="$target_list $target"
        !           143:         ;;
        !           144:         cross-*)
        !           145:         echo "\"cross-\" prefix is no longer needed"
        !           146:         target=`echo $target | sed s/cross-//g`
        !           147:         target_list="$target_list builtin-$target"
        !           148:         ;;
        !           149:         *)
        !           150:         #default: build builtin and if possible, unix target
        !           151:         target_list="$target_list builtin-$target unix-$target"
        !           152:         ;;
        !           153:     esac
        !           154: done
        !           155: 
        !           156: arch_list=""
        !           157: for target in $target_list; do
        !           158:     arch=`echo $target | sed s/.*-//g`
        !           159:     if ! test -f config/examples/${arch}_config.xml; then
        !           160:         echo "Cannot find config/examples/${arch}_config.xml" >&2
        !           161:         exit 1
        !           162:     fi
        !           163:     if ! echo $arch_list | grep -q "$arch"; then
        !           164:         arch_list="$arch_list $arch"
        !           165:     fi
        !           166: done
        !           167: 
        !           168: for ARCH in $arch_list; do
        !           169:     unix="no"
        !           170:     builtin="no"
        !           171:     plain="no"
        !           172:     mol="no"
        !           173:     briq="no"
        !           174:     pearpc="no"
        !           175:     qemu="no"
        !           176:     xbox="no"
        !           177:     cross="no"
        !           178: 
        !           179:     for target in $target_list; do
        !           180:         case $target in
        !           181:             *-$ARCH)
        !           182:             :
        !           183:             ;;
        !           184:             *)
        !           185:             continue
        !           186:             ;;
        !           187:         esac
        !           188:         case $target in
        !           189:             mol-ppc)
        !           190:             mol="yes"
        !           191:             ;;
        !           192:             briq-ppc)
        !           193:             briq="yes"
        !           194:             ;;
        !           195:             pearpc-ppc)
        !           196:             pearpc="yes"
        !           197:             ;;
        !           198:             builtin-ppc|qemu-ppc|builtin-ppc64|qemu-ppc64)
        !           199:             qemu="yes"
        !           200:             ;;
        !           201:             xbox-x86)
        !           202:             xbox="yes"
        !           203:             ;;
        !           204:             builtin-sparc64)
        !           205:             builtin="yes"
        !           206:             qemu="yes"
        !           207:             ;;
        !           208:             unix-*)
        !           209:             if [ "$ARCH" != "$HOSTARCH" ]; then
        !           210:                 # Can't cross compile Unix target
        !           211:                 continue
        !           212:             fi
        !           213:             unix="yes"
        !           214:             ;;
        !           215:             builtin-*)
        !           216:             builtin="yes"
        !           217:             ;;
        !           218:             plain-*)
        !           219:             plain="yes"
        !           220:             ;;
        !           221:         esac
        !           222:     done
        !           223: 
        !           224:     BASEARCH=$ARCH
        !           225:     case $ARCH in
        !           226:         amd64)
        !           227:         select_prefix x86_64
        !           228:         CFLAGS="-fno-builtin"
        !           229:         AS_FLAGS=
        !           230:         ;;
        !           231: 
        !           232:         ppc)
        !           233:         select_prefix powerpc
        !           234:         if [ "$unix" = "no" ]; then
        !           235:             CFLAGS="-msoft-float -fno-builtin-bcopy -fno-builtin-log2"
        !           236:         else
        !           237:             CFLAGS="-fno-builtin"
        !           238:         fi
        !           239:         AS_FLAGS=
        !           240:         ;;
        !           241: 
        !           242:         ppc64)
        !           243:         select_prefix powerpc64
        !           244:         CFLAGS="-Wa,-a64 -m64 -msoft-float -fno-builtin"
        !           245:         AS_FLAGS="-Wa,-a64"
        !           246:         BASEARCH=ppc
        !           247:         ;;
        !           248: 
        !           249:         sparc32)
        !           250:         select_prefix sparc
        !           251:         CFLAGS="-Wa,-xarch=v8 -Wa,-32 -m32 -mcpu=supersparc -fno-builtin"
        !           252:         AS_FLAGS="-Wa,-xarch=v8 -Wa,-32"
        !           253:         ;;
        !           254: 
        !           255:         sparc64)
        !           256:         select_prefix sparc64
        !           257:         CFLAGS="-Wa,-xarch=v9b -Wa,-64 -m64 -mcpu=ultrasparc -mcmodel=medany -fno-builtin"
        !           258:         AS_FLAGS="-Wa,-xarch=v9b -Wa,-64"
        !           259:         ;;
        !           260: 
        !           261:         x86)
        !           262:         select_prefix i486
        !           263:         CFLAGS="-fno-builtin -m32"
        !           264:         AS_FLAGS="-Wa,-32"
        !           265:         ;;
        !           266:     esac
        !           267:     if [ "$ARCH" != "$HOSTARCH" -o `uname -s` = "Darwin" ]; then
        !           268:         cross="yes"
        !           269:     fi
        !           270:     crosscflags $HOSTARCH $ARCH
        !           271:     OBJDIR=obj-$ARCH
        !           272: 
        !           273:     printf "Initializing build tree $OBJDIR..."
        !           274:     rm -rf "$OBJDIR"
        !           275:     mkdir "$OBJDIR"
        !           276:     mkdir -p $OBJDIR/target
        !           277:     mkdir -p $OBJDIR/target/include
        !           278:     mkdir -p $OBJDIR/target/arch
        !           279:     mkdir -p $OBJDIR/target/arch/unix
        !           280:     mkdir -p $OBJDIR/target/arch/$ARCH
        !           281:     mkdir -p $OBJDIR/target/libgcc
        !           282:     mkdir -p $OBJDIR/target/kernel
        !           283:     mkdir -p $OBJDIR/target/libopenbios
        !           284:     mkdir -p $OBJDIR/target/packages
        !           285:     mkdir -p $OBJDIR/target/fs
        !           286:     mkdir -p $OBJDIR/target/fs/grubfs
        !           287:     mkdir -p $OBJDIR/target/fs/hfs
        !           288:     mkdir -p $OBJDIR/target/fs/hfsplus
        !           289:     mkdir -p $OBJDIR/target/fs/iso9660
        !           290:     mkdir -p $OBJDIR/target/fs/ext2
        !           291:     mkdir -p $OBJDIR/target/drivers
        !           292:     mkdir -p $OBJDIR/target/libc
        !           293:     mkdir -p $OBJDIR/host/include
        !           294:     mkdir -p $OBJDIR/host/kernel
        !           295:     mkdir -p $OBJDIR/forth
        !           296:     ln -s ../../../include/arch/$BASEARCH $OBJDIR/target/include/asm
        !           297:     #compile the host binary with target settings instead
        !           298:     #ln -s ../../../include/arch/$HOSTARCH $OBJDIR/host/include/asm
        !           299:     if [ "$mol" = "yes" ]; then
        !           300:         printf "\nUsing MOL path $MOLPATH...\n"
        !           301:         mkdir -p $OBJDIR/target/arch/ppc/mol
        !           302:         ln -s $MOLPATH/src/shared/osi_calls.h $OBJDIR/target/include/
        !           303:         ln -s $MOLPATH/src/shared/osi.h $OBJDIR/target/include/
        !           304:         ln -s $MOLPATH/src/shared/prom.h $OBJDIR/target/include/
        !           305:         ln -s $MOLPATH/src/include/boothelper_sh.h $OBJDIR/target/include/
        !           306:         ln -s $MOLPATH/src/include/video_sh.h $OBJDIR/target/include/
        !           307:         ln -s $MOLPATH/src/include/pseudofs_sh.h $OBJDIR/target/include/
        !           308:         ln -s $MOLPATH/src/include/kbd_sh.h $OBJDIR/target/include/
        !           309:         ln -s $MOLPATH/src/drivers/disk/include/scsi_sh.h $OBJDIR/target/include/
        !           310:         ln -s $MOLPATH/src/drivers/disk/include/ablk_sh.h $OBJDIR/target/include/
        !           311:     fi
        !           312:     if [ "$briq" = "yes" ]; then
        !           313:         mkdir -p $OBJDIR/target/arch/ppc/briq
        !           314:     fi
        !           315:     if [ "$pearpc" = "yes" ]; then
        !           316:         mkdir -p $OBJDIR/target/arch/ppc/pearpc
        !           317:     fi
        !           318:     if [ "$qemu" = "yes" ]; then
        !           319:         mkdir -p $OBJDIR/target/arch/ppc/qemu
        !           320:     fi
        !           321:     if [ "$xbox" = "yes" ]; then
        !           322:         mkdir -p $OBJDIR/target/arch/x86/xbox
        !           323:     fi
        !           324:     echo "ok."
        !           325: 
        !           326:     cd $OBJDIR
        !           327:     SRCDIR=..
        !           328:     ODIR=.
        !           329: 
        !           330:     printf "Creating target Makefile..."
        !           331:     echo "ARCH=$ARCH" > $ODIR/config.mak
        !           332:     if [ "$cross" = "yes" ]; then
        !           333:         echo "TARGET=$TARGET" >> $ODIR/config.mak
        !           334:     fi
        !           335:     echo "CFLAGS=$CFLAGS" >> $ODIR/config.mak
        !           336:     echo "AS_FLAGS=$AS_FLAGS" >> $ODIR/config.mak
        !           337:     echo "HOSTARCH?=$HOSTARCH" >> $ODIR/config.mak
        !           338:     echo "CROSSCFLAGS=$CROSSCFLAGS" >> $ODIR/config.mak
        !           339:     echo "VERSION=\"$VERSION\"" >> $ODIR/config.mak
        !           340: 
        !           341:     ln -s $SRCDIR/config/xml/rules.xml $ODIR/rules.xml
        !           342:     echo "<?xml version=\"1.0\"?><config>" > $ODIR/config.xml
        !           343:     # Generic
        !           344:     config_set_boolean CONFIG_$ARCH >> $ODIR/config.xml
        !           345:     if [ "$BASEARCH" != "$ARCH" ]; then
        !           346:         config_set_boolean CONFIG_$BASEARCH >> $ODIR/config.xml
        !           347:     fi
        !           348:     if [ "$mol" = "yes" ]; then
        !           349:         config_set_boolean CONFIG_MOL >> $ODIR/config.xml
        !           350:     fi
        !           351:     if [ "$briq" = "yes" ]; then
        !           352:         config_set_boolean CONFIG_BRIQ >> $ODIR/config.xml
        !           353:     fi
        !           354:     if [ "$pearpc" = "yes" ]; then
        !           355:         config_set_boolean CONFIG_PEARPC >> $ODIR/config.xml
        !           356:     fi
        !           357:     if [ "$qemu" = "yes" ]; then
        !           358:         config_set_boolean CONFIG_QEMU >> $ODIR/config.xml
        !           359:     fi
        !           360:     if [ "$xbox" = "yes" ]; then
        !           361:         config_set_boolean CONFIG_XBOX >> $ODIR/config.xml
        !           362:     fi
        !           363:     if [ "$targetbigendian" = "yes" ]; then
        !           364:         config_set_boolean CONFIG_BIG_ENDIAN >> $ODIR/config.xml
        !           365:     else
        !           366:         config_set_boolean CONFIG_LITTLE_ENDIAN >> $ODIR/config.xml
        !           367:     fi
        !           368:     # Kernel binaries
        !           369:     if [ "$plain" = "yes" ]; then
        !           370:         config_set_boolean CONFIG_IMAGE_ELF >> $ODIR/config.xml
        !           371:     fi
        !           372:     if [ "$builtin" = "yes" ]; then
        !           373:         config_set_boolean CONFIG_IMAGE_ELF_EMBEDDED >> $ODIR/config.xml
        !           374:     fi
        !           375:     # Build hosted Unix binary?
        !           376:     if [ "$unix" = "yes" ]; then
        !           377:         config_set_boolean CONFIG_HOST_UNIX >> $ODIR/config.xml
        !           378:         #config_set_boolean CONFIG_UNIX_QT >> $ODIR/config.xml
        !           379:         #config_set_boolean CONFIG_PLUGINS >> $ODIR/config.xml
        !           380:     fi
        !           381:     cat $SRCDIR/config/examples/${ARCH}_config.xml >> $ODIR/config.xml
        !           382: 
        !           383:     echo "</config>" >> $ODIR/config.xml
        !           384:     ln -s ../Makefile.target $ODIR/Makefile
        !           385:     xsltproc $SRCDIR/config/xml/xinclude.xsl $SRCDIR/build.xml > $ODIR/build-full.xml
        !           386:     xsltproc $SRCDIR/config/xml/makefile.xsl $ODIR/build-full.xml > $ODIR/rules.mak
        !           387:     echo "ok."
        !           388:     printf "Creating config files..."
        !           389:     xsltproc $SRCDIR/config/xml/config-c.xsl $ODIR/config.xml > $ODIR/host/include/autoconf.h
        !           390:     xsltproc $SRCDIR/config/xml/config-c.xsl $ODIR/config.xml > $ODIR/target/include/autoconf.h
        !           391:     xsltproc $SRCDIR/config/xml/config-forth.xsl $ODIR/config.xml > $ODIR/forth/config.fs
        !           392:     echo "ok."
        !           393: 
        !           394:     cd $SRCDIR
        !           395: done

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.