diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2015-03-08 15:20:27 +0000 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2015-03-08 15:20:27 +0000 |
commit | 8e41348edab95d3ddad0cce56be3876443c55275 (patch) | |
tree | ccff7f79430a998a8025fd4028c8be4215e73096 /data/buildscripts/toolchain-windows.sh | |
parent | 49f69726e55a719163f1c4483932cb82c2bea901 (diff) |
Added buildscripts and needed changes to crosscompile packages for MacOS, Windows and Android
Diffstat (limited to 'data/buildscripts/toolchain-windows.sh')
-rw-r--r-- | data/buildscripts/toolchain-windows.sh | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/data/buildscripts/toolchain-windows.sh b/data/buildscripts/toolchain-windows.sh new file mode 100644 index 0000000..d885831 --- /dev/null +++ b/data/buildscripts/toolchain-windows.sh @@ -0,0 +1,79 @@ +#!/bin/bash +set -e +export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +apt-get -q -y --yes --force-yes install libmpfrc++-dev libmpc-dev zlib1g-dev + +WD=$HOME/mingw-w64-build +rm -rf $WD +mkdir $WD +cp spec $WD/msvcr100.spec + +cd $WD +wget http://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2 +tar -jxf binutils-2.24.tar.bz2 +wget http://gcc.fyxm.net/releases/gcc-4.9.1/gcc-4.9.1.tar.bz2 +tar -jxf gcc-4.9.1.tar.bz2 +git clone git://git.code.sf.net/p/mingw-w64/mingw-w64 +cd mingw-w64 +git checkout 469ed5d227202b373409c8a3b4c1358be39b9983 +cd .. +git clone https://git.torproject.org/builders/tor-browser-bundle.git +PATCHES=$WD/tor-browser-bundle/gitian/patches + +# Building binutils +cd $WD +cd binutils-2.24 +sed 's/= extern_rt_rel_d;/= extern_rt_rel_d;\n memset (extern_rt_rel_d, 0, PE_IDATA5_SIZE);/' -i ld/pe-dll.c +patch -p1 < $PATCHES/enable-reloc-section-ld.patch +patch -p1 < $PATCHES/peXXigen.patch +cd .. +mkdir binutils-2.24-build32 && cd binutils-2.24-build32 +../binutils-2.24/configure --prefix=/usr/local/ --target=i686-w64-mingw32 --disable-multilib +make -j7 +make install + +# Building mingw-w64 +cd $WD +mkdir mingw-w64-headers32 && cd mingw-w64-headers32 +../mingw-w64/mingw-w64-headers/configure --host=i686-w64-mingw32 --prefix=/usr/local/i686-w64-mingw32/ --enable-sdk=all --enable-secure-api --enable-idl +make install + +# First stage of gcc compilation +cd $WD +# We don't want to link against msvcrt.dll due to bug 9084. +sed 's/msvcrt/msvcr100/' -i $WD/msvcr100.spec +# Linking libgcc against msvcrt is hard-coded... +sed 's/msvcrt/msvcr100/' -i $WD/gcc-4.9.1/gcc/config/i386/t-mingw-w32 $WD/gcc-4.9.1/libgcc/config/i386/t-mingw32 +mkdir gcc-4.9.1-mingw32 && cd gcc-4.9.1-mingw32 +# LDFLAGS_FOR_TARGET does not work for some reason. Thus, we take +# CFLAGS_FOR_TARGET. +export CFLAGS_FOR_TARGET="-specs=$WD/msvcr100.spec -Wl,--nxcompat -Wl,--dynamicbase" +../gcc-4.9.1/configure --prefix=/usr/local/ --target=i686-w64-mingw32 --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --disable-multilib +make all-gcc -j7 +make install-gcc + +# Building mingw-w64-crt32 +cd $WD +mkdir mingw-w64-crt32 && cd mingw-w64-crt32 +../mingw-w64/mingw-w64-crt/configure --host=i686-w64-mingw32 --prefix=/usr/local/i686-w64-mingw32/ +make -j7 +make install + +# Building widl32 +cd $WD +mkdir widl32 && cd widl32 +../mingw-w64/mingw-w64-tools/widl/configure --prefix=/usr/local --target=i686-w64-mingw32 +make -j7 +make install + +# Second stage of gcc compilation +cd $WD +cd gcc-4.9.1-mingw32 +make -j7 +make install +mkdir -p /usr/local/gcclibs +cp i686-w64-mingw32/libssp/.libs/libssp-0.dll /usr/local/gcclibs +cp i686-w64-mingw32/libgcc/shlib/libgcc_s_sjlj-1.dll /usr/local/gcclibs + +echo DONE |