crosstool-0.28-rc5: better doc, distccd startup script cleanup

Dan Kegel dank@kegel.com
Sun Apr 18 17:20:00 GMT 2004


crosstool is a build-and-test script for cross-toolchains based on
binutils, gcc, and glibc.  It supports all 32 bit CPUs supported by glibc,
and a couple 64 bit ones.

The stable version of crosstool is 0.27, and is available at
   http://kegel.com/crosstool

The release candidate for the next version is 0.28-rc5, and is available at
   http://kegel.com/crosstool/crosstool-0.28-rc5.tar.gz

Relative to 0.28-rc4, 0.28-rc5 has a rewritten doc/crosstool-howto.html
which finally documents how to use distcc with crosstool.
The distccd startup scripts are there for Mac OS X and cygwin,
but haven't been tested since the last change, so caveat emptor.
I'm mostly just putting this out for comments on the new crosstool-howto.html.

Note: I can't build gcc-3.4.0 on cygwin at the moment.
I ran into a strange problem; see http://gcc.gnu.org/ml/gcc/2004-04/msg00823.html

Changelog:
0.28-rc5:
      * Revamped doc/crosstool-howto.html to describe distcc integration

      * finally renamed mkcommon.sh to be mkdistcc.sh, and
        moved tcl and expect builds into mkdejagnu.sh

      * added support for gcc-3.4-20040414, gcc-3.4.0-20040416

      crosstool.sh, mkjail.sh, demo-*.sh:
      * add support for other languages, e.g. Java.
        To enable this, set the GCC_LANGUAGES variable, e.g.
          export GCC_LANGUAGES="c,c++,java,f77"
        before running.  (Inspired by http://ometer.com/desktop-language.html)

      gcc-3.4.0:
      * getandpatch.sh:
        - added support for downloading gcc-3.4.0 prereleases
      * glibc:
        - added following patches to allow compiling with gcc-3.4.0 prereleases:
          patches/glibc-2.3.2/fixup.patch
          patches/glibc-2.2.5/glibc-2.2.5-fixup.patch
          patches/glibc-linuxthreads-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch

      * mkcommon.sh avoids wget if distcc tarball already present,
        to avoid unneccessary failure when network connectivity poor

0.28-rc4:
      * common/bin/install-distccd.sh tested on Red Hat Linux, seems to work
        Not yet tested on cygwin or Mac

      * mkcommon.sh and mkdistcclinks.sh now set permission 755 on directories

      * mkcommon.sh now installs startup script templates
        crosstool-distccd-{linux,mac,cygwin}.sh.in to common/etc

        mkdistcclinks.sh now creates common/bin/install-distccd.sh

        The user then runs common/bin/install-distccd.sh
        which expands the appropriate startup script template,
        installs it whereever the OS wants it, and registers
        the service so it'll automatically start on future system boots

      * added StartupParameters.plist, used by mkdistcclinks.sh on Mac OS X

0.28-rc3:
      getandpatch.sh:
      * don't set +e anymore, that was a kludge that's no longer needed
      * fix error message from wrong cd when patching glibc addon

      mkcommon.sh, mkdistcclinks.sh:
      * create common/bin/install-distccd.sh for all operating systems we can,
        not just cygwin-install-distccd.sh

0.28-rc2:
      Doc:
      * split off crosstest-howto.html from crosstool-howto.html

      powerpc64:
      * added powerpc970.dat and demo-ppc970.sh (thanks Rafael Ávila de Espíndola)

      crosstool.sh:
      * abort if PREFIX is set to / or /usr or user running as root

0.28-rc1:
      Executive summary:
      * can now build on Mac OS X and Cygwin (though it still only targets Linux)
      * can now build on x86_64 Linux systems
      * supports hetrogenous distcc build clusters out-of-the-box
      * supports building programs to run on Red Hat 6.2 with gcc-2.95.3
        or gcc-3.3.3
      * no longer requires internet connection if you already have the tarballs
      * supports new target sparc64

      distcc:
      * To create a build cluster:
        - make a shared directory all computers can see on network, say /shared
        - edit demo-cluster.sh to select the toolchains and targets you want,
          and set RESULT_TOP to /shared/`config.guess`
        - run demo-cluster.sh on one machine of each type
        - run $RESULT_TOP/common/bin/run-distccd.sh on each machine
        Voila!  You now have a compile cluster!
        To use it, set CC in your program's Makefile to
        $RESULT_TOP/$target/$toolcombo/distributed/bin/$TARGET-gcc
        You may want to invoke config.guess in your Makefile when setting
        CC, so the same Makefile can run on multiple architectures.
        The distcc that comes with this release contains the following patch:
          patches/distcc-2.13/distcc-stringmap.patch
        which is needed to support hetrogenous distccd clusters with
        multiple targets and toolchains.

      crosstool.sh:
      * uses right --build argument on binutils and glibc; fixes x86_64 build
      * remove bogus --enable-clocale=gnu from glibc configure
      * use own copy of config.guess instead of relying on gcc's
      * On exit, say *where* the result was stored
      * Verify that LD_LIBRARY_PATH is not set, since glibc complains if set
      * handle 2.6 kernel better
      * obey PARALLELMFLAGS when building binutils and gcc (glibc already did)

      mkdist.sh:
      * renamed to clean.sh

      gcc/glibc versions:
      * support gcc-3.3.3
      * added gcc-2.95.3-glibc-2.1.3.dat to target Red Hat 6.2 boxes
      * Added patches/glibc-2.1.3/glibc-2.1.3-allow-gcc3-*.patch
        to allow compiling glibc-2.1.3 with gcc-3.x

      getandpatch.sh (thanks to Alan Luse for the first three):
      * use BASENAME in test for previously extracted source trees
      * don't cd to nonexistent patch directories
      * Handle linux tarballs which extract to directory 'kernel'
      * Added a QUIET_EXTRACTIONS option to do non-verbose extractions
      * offline operation.  Important so you can still build if
        ftp.gnu.org is unreachable and you already have the tarballs.


      demo.sh:
      * updated to use gcc-3.3.3 where possible
      * created demo-$CPU.sh scripts for more processors
      * demo.sh now just calls all the demo-$CPU.sh scripts
      * demo.sh now runs through all cpu types even if one fails,
        and makes separate log files for each
      * added mkcommon.sh to compile distcc, tcl, expect, dejagnu

      demo-runtest.sh:
      * added as example of how to run a single regression test

      newlib:
      * added contrib/newlib2, files from Harry Kaes, who successfully built
        gcc-3.3.2/newlib for mips

      arm:
      * Revert to binutils-2.14.90.0.5 because arm has trouble with plain 2.14
      * copied gcc-3.3.2-arm-softfloat.patch to patches/gcc-3.3.3,
        but probably still need contrib/glibc-vfp.patch
        Added more notes to demo-arm-softfloat.sh
      * Added arm-iwmmxt

      sparc64: thanks to Martin Van Leeuwen for the following changes:
      * backported glibc-2.3.2 fixes from cvs:
        - patches/glibc-2.3.2/glibc-2.3.2-sparc64-pause.patch
        - patches/glibc-2.3.2/glibc-2.3.2-sparc64-pwrite64.patch
        - patches/glibc-linuxthreads-2.3.2/glibc-2.3.2-sparc64-sigproc.patch
      * tell the assembler to use CPU v9a, -mcpu=ultrasparc3 isn't enough


      portability:
      * use -g0 when invoking patch to keep it from checking CVS or Perforce
      * update glibc-2.1.3's config.sub to avoid warnings on newer systems
      * copied patches/linux-2.4.24/linux-2.4-bsd-expr.patch to
        patches/linux-2.4.21/linux-2.4-bsd-expr.patch for Mac OS X's benefit
      * update gcc-2.95.3's config.sub so we can build on newer systems
      * patches/{gcc-2.95.3,binutils-2.11.2}/gcc-pr3106.patch fixes compile
        failure on Mac OS X
      * patches/gcc-2.95.3/backport-config.gcc-{1.4,1.92}.patch
        fix compile failures on Mac OS X and x86_64
      * avoid using $PWD, since that's a bash feature, not part of POSIX

      cygwin compatibility:
      * patch glibc's configure to not depend on case sensitivity:
        patches/glibc-linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch
        patches/glibc-2.3.2/glibc-2.3.2-cygwin.patch
        patches/glibc-2.2.5/glibc-2.2.5-cygwin.patch
        patches/glibc-2.1.3/glibc-2.1.3-cygwin.patch
      * demo*.sh: don't use ~, as ash doesn't expand it
      * getandpatch.sh: don't use set -e when calling functions that return 1
      * don't let gcc-2.95.3 put .exe on end of Linux executables
        (only ok because we are targeting Linux, not VMS, Windows, or Cygwin)
        patches/gcc-2.95.3/gcc-2.95.3-cygwin-020611.patch

      Mac OS X compatibility
      * Note: you need to install gawk, gnu sed, and wget using fink before
        you can build crosstool.  If wget or any other fink program segfaults,
        try 'sudo /sw/var/lib/fink/prebound/update-package-prebinding.pl -f'
        once to get around a hiccup in fink's incremental prelinking of apps.
      * Two patches from Martin Schaffner:
        - patches/linux-2.4.24/linux-2.4-bsd-expr.patch
        - patches/glibc-2.3.2/glibc-configure-apple-as.patch
      * use 'true' and 'false' rather than '/bin/true' and '/bin/false'
      * crosstool.sh: override LD and RANLIB when building glibc; fixes
          ld: .../c_stubs/gconv_stubs.o bad magic number (not a Mach-O file)
          make[2]: *** [.../build-glibc/c_stubs/libc_stubs.a] Error 1
        which probably only happens when building redhat's glibc-2.1.3



-- 
My technical stuff: http://kegel.com
My politics: see http://www.misleader.org for examples of why I'm for regime change


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list