forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: JHS6y8kqr4T --HG-- extra : rebase_source : e04692af64312db7028d4123075e02d8b9127ef2
		
			
				
	
	
		
			158 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
set -e
 | 
						|
set -x
 | 
						|
 | 
						|
make_flags='-j12'
 | 
						|
 | 
						|
. $data_dir/download-tools.sh
 | 
						|
 | 
						|
prepare() {
 | 
						|
  pushd $root_dir
 | 
						|
  download_and_check ftp://ftp.gnu.org/gnu/binutils binutils-$binutils_version.tar.$binutils_ext.sig
 | 
						|
  tar xaf $TMPDIR/binutils-$binutils_version.tar.$binutils_ext
 | 
						|
 | 
						|
  case "$gcc_version" in
 | 
						|
  *-*)
 | 
						|
    download ftp://gcc.gnu.org/pub/gcc/snapshots/$gcc_version/gcc-$gcc_version.tar.$gcc_ext
 | 
						|
    ;;
 | 
						|
  *)
 | 
						|
    download_and_check ftp://ftp.gnu.org/gnu/gcc/gcc-$gcc_version gcc-$gcc_version.tar.$gcc_ext.sig
 | 
						|
    ;;
 | 
						|
  esac
 | 
						|
  tar xaf $TMPDIR/gcc-$gcc_version.tar.$gcc_ext
 | 
						|
  cd gcc-$gcc_version
 | 
						|
 | 
						|
  (
 | 
						|
    # Divert commands that download_prerequisites use
 | 
						|
    ln() { :; }
 | 
						|
    tar() { :; }
 | 
						|
    sed() { :; }
 | 
						|
    wget() {
 | 
						|
      echo $1
 | 
						|
    }
 | 
						|
 | 
						|
    . ./contrib/download_prerequisites
 | 
						|
  ) | while read url; do
 | 
						|
    file=$(basename $url)
 | 
						|
    case "$file" in
 | 
						|
    gmp-*.tar.*)
 | 
						|
      # If download_prerequisites wants 4.3.2, use 5.1.3 instead.
 | 
						|
      file=${file/4.3.2/5.1.3}
 | 
						|
      download_and_check https://gmplib.org/download/gmp $file.sig
 | 
						|
      ;;
 | 
						|
    mpfr-*.tar.*)
 | 
						|
      # If download_prerequisites wants 2.4.2, use 3.1.5 instead.
 | 
						|
      file=${file/2.4.2/3.1.5}
 | 
						|
      download_and_check http://www.mpfr.org/${file%.tar.*} $file.asc
 | 
						|
      ;;
 | 
						|
    mpc-*.tar.*)
 | 
						|
      # If download_prerequisites wants 0.8.1, use 0.8.2 instead.
 | 
						|
      file=${file/0.8.1/0.8.2}
 | 
						|
      download_and_check http://www.multiprecision.org/mpc/download $file.asc
 | 
						|
      ;;
 | 
						|
    *)
 | 
						|
      download $(dirname $url) $file
 | 
						|
      ;;
 | 
						|
    esac
 | 
						|
    tar xaf $TMPDIR/$file
 | 
						|
    ln -sf ${file%.tar.*} ${file%-*}
 | 
						|
  done
 | 
						|
 | 
						|
  # Check all the downloads we did are in the checksums list, and that the
 | 
						|
  # checksums match.
 | 
						|
  diff -u <(sort -k 2 $root_dir/downloads) $root_dir/checksums
 | 
						|
 | 
						|
  popd
 | 
						|
}
 | 
						|
 | 
						|
apply_patch() {
 | 
						|
  pushd $root_dir/gcc-$gcc_version
 | 
						|
  patch -p1 < $1
 | 
						|
  popd
 | 
						|
}
 | 
						|
 | 
						|
build_binutils() {
 | 
						|
  # if binutils_configure_flags is not set at all, give it the default value
 | 
						|
  if [ -z "${binutils_configure_flags+xxx}" ];
 | 
						|
  then
 | 
						|
    # gold is disabled because we don't use it on automation, and also we ran into
 | 
						|
    # some issues with it using this script in build-clang.py.
 | 
						|
    binutils_configure_flags="--disable-gold --enable-plugins --disable-nls"
 | 
						|
  fi
 | 
						|
 | 
						|
  mkdir $root_dir/binutils-objdir
 | 
						|
  pushd $root_dir/binutils-objdir
 | 
						|
  ../binutils-$binutils_version/configure --prefix /tools/gcc/ $binutils_configure_flags
 | 
						|
  make $make_flags
 | 
						|
  make install $make_flags DESTDIR=$root_dir
 | 
						|
  popd
 | 
						|
}
 | 
						|
 | 
						|
build_gcc() {
 | 
						|
  mkdir $root_dir/gcc-objdir
 | 
						|
  pushd $root_dir/gcc-objdir
 | 
						|
  ../gcc-$gcc_version/configure --prefix=/tools/gcc --enable-languages=c,c++  --disable-nls --disable-gnu-unique-object --enable-__cxa_atexit --with-arch-32=pentiumpro
 | 
						|
  make $make_flags
 | 
						|
  make $make_flags install DESTDIR=$root_dir
 | 
						|
 | 
						|
  cd $root_dir/tools
 | 
						|
  tar caf $root_dir/gcc.tar.xz gcc/
 | 
						|
  popd
 | 
						|
}
 | 
						|
 | 
						|
build_gcc_and_mingw() {
 | 
						|
  export install_dir=$root_dir/tools/gcc/
 | 
						|
  mkdir -p $install_dir
 | 
						|
  export PATH=$PATH:$install_dir/bin/
 | 
						|
 | 
						|
  cd $root_dir
 | 
						|
 | 
						|
  git clone -n git://git.code.sf.net/p/mingw-w64/mingw-w64
 | 
						|
  pushd mingw-w64
 | 
						|
  git checkout $mingw_version # Asserts the integrity of the checkout (Right?)
 | 
						|
  popd
 | 
						|
 | 
						|
  mkdir gcc-objdir
 | 
						|
  pushd gcc-objdir
 | 
						|
  ../gcc-$gcc_version/configure --prefix=$install_dir --target=i686-w64-mingw32 --with-gnu-ld --with-gnu-as --disable-multilib --enable-threads=posix
 | 
						|
  make $make_flags all-gcc
 | 
						|
  make $make_flags install-gcc
 | 
						|
  popd
 | 
						|
 | 
						|
  mkdir mingw-w64-headers32
 | 
						|
  pushd mingw-w64-headers32
 | 
						|
  ../mingw-w64/mingw-w64-headers/configure --host=i686-w64-mingw32 --prefix=$install_dir/i686-w64-mingw32/ --enable-sdk=all --enable-secure-api --enable-idl
 | 
						|
  make $make_flags install
 | 
						|
  popd
 | 
						|
 | 
						|
  mkdir mingw-w64-crt32
 | 
						|
  pushd mingw-w64-crt32
 | 
						|
  ../mingw-w64/mingw-w64-crt/configure --host=i686-w64-mingw32 --prefix=$install_dir/i686-w64-mingw32/
 | 
						|
  make
 | 
						|
  make install
 | 
						|
  popd
 | 
						|
 | 
						|
  mkdir mingw-w64-pthread
 | 
						|
  pushd mingw-w64-pthread
 | 
						|
  ../mingw-w64/mingw-w64-libraries/winpthreads/configure --host=i686-w64-mingw32 --prefix=$install_dir/i686-w64-mingw32/
 | 
						|
  make
 | 
						|
  make install
 | 
						|
  popd
 | 
						|
 | 
						|
  pushd gcc-objdir
 | 
						|
  make
 | 
						|
  make install
 | 
						|
  popd
 | 
						|
 | 
						|
  mkdir widl32
 | 
						|
  pushd widl32
 | 
						|
  ../mingw-w64/mingw-w64-tools/widl/configure --prefix=$install_dir --target=i686-w64-mingw32
 | 
						|
  make
 | 
						|
  make install
 | 
						|
  popd
 | 
						|
 | 
						|
  pushd $root_dir/tools
 | 
						|
  tar caf $root_dir/mingw32.tar.xz gcc/
 | 
						|
  popd
 | 
						|
}
 |