This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

crosstool-0.28-rc1: support Linux, Cygwin, Mac OS X build clusters


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-rc1, and is available at
  http://kegel.com/crosstool/crosstool-0.28-rc1.tar.gz

Relative to 0.28-pre14, 0.28-rc1 fixes a bug in my distcc patch
and in my build-glibc-2.3.2-on-cygwin patch.  I only expect doc
and minor script changes from here to release.

Here's the ChangeLog entry relative to crosstool-0.27:

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]