summaryrefslogtreecommitdiff
path: root/data/buildscripts
diff options
context:
space:
mode:
authorRuben Rodriguez <ruben@gnu.org>2015-03-08 15:20:27 +0000
committerRuben Rodriguez <ruben@gnu.org>2015-03-08 15:20:27 +0000
commit8e41348edab95d3ddad0cce56be3876443c55275 (patch)
treeccff7f79430a998a8025fd4028c8be4215e73096 /data/buildscripts
parent49f69726e55a719163f1c4483932cb82c2bea901 (diff)
Added buildscripts and needed changes to crosscompile packages for MacOS, Windows and Android
Diffstat (limited to 'data/buildscripts')
-rw-r--r--data/buildscripts/build-android.sh33
-rw-r--r--data/buildscripts/build-mac.sh15
-rw-r--r--data/buildscripts/build-windows.sh13
-rw-r--r--data/buildscripts/mozconfig-android31
-rw-r--r--data/buildscripts/mozconfig-mac54
-rw-r--r--data/buildscripts/mozconfig-windows23
-rw-r--r--data/buildscripts/toolchain-android.sh27
-rw-r--r--data/buildscripts/toolchain-macos.sh41
-rw-r--r--data/buildscripts/toolchain-windows.sh79
9 files changed, 316 insertions, 0 deletions
diff --git a/data/buildscripts/build-android.sh b/data/buildscripts/build-android.sh
new file mode 100644
index 0000000..6fc08ec
--- /dev/null
+++ b/data/buildscripts/build-android.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -e
+
+apt-get -q -y --force-yes install openjdk-7-jdk ant mercurial ccache
+apt-get -q -y --force-yes build-dep firefox
+
+export PATH=$PATH:$PWD/android-sdk-linux/tools:$PWD/android-sdk-linux/build-tools:$PWD/android-sdk-linux/platform-tools:/usr/local/bin
+
+pushd ./python/compare-locales/
+python setup.py build
+python setup.py install
+install -m 755 scripts/* /usr/local/bin
+popd
+
+apt-get -q -y --force-yes install zip unzip yasm
+
+rm -rf obj-android
+
+cp ../../data/buildscripts/mozconfig-android .mozconfig
+
+rm extensions/gnu/abouticecat* -rf
+
+./mach build
+
+pushd obj-android/mobile/android/locales
+#for loc in $(cat ../../../../mobile/android/locales/maemo-locales); do
+for loc in es-ES ; do
+ LOCALE_MERGEDIR=$PWD/merge-$loc make merge-$loc LOCALE_MERGEDIR=$PWD/merge-$loc
+ make LOCALE_MERGEDIR=$PWD/merge-$loc chrome-$loc LOCALE_MERGEDIR=$PWD/merge-$loc
+done
+popd
+
+./mach package
diff --git a/data/buildscripts/build-mac.sh b/data/buildscripts/build-mac.sh
new file mode 100644
index 0000000..fa467d5
--- /dev/null
+++ b/data/buildscripts/build-mac.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+
+export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+
+apt-get -q -y --force-yes install zip unzip yasm
+
+rm -rf obj-macos
+
+cp ../../data/buildscripts/mozconfig-macos .mozconfig
+
+./mach build 2>&1 |tee mach-macos-build.log
+
+./mach package 2>&1 |tee mach-macos-package.log
+
diff --git a/data/buildscripts/build-windows.sh b/data/buildscripts/build-windows.sh
new file mode 100644
index 0000000..723ce26
--- /dev/null
+++ b/data/buildscripts/build-windows.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -e
+
+export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+
+apt-get -q -y --force-yes install zip unzip yasm
+
+rm -rf obj-windows
+
+cp ../../data/buildscripts/mozconfig-windows .mozconfig
+
+./mach build
+./mach package
diff --git a/data/buildscripts/mozconfig-android b/data/buildscripts/mozconfig-android
new file mode 100644
index 0000000..82bd17f
--- /dev/null
+++ b/data/buildscripts/mozconfig-android
@@ -0,0 +1,31 @@
+# Build Firefox for Android:
+ac_add_options --enable-application=mobile/android
+ac_add_options --target=arm-linux-androideabi
+mk_add_options MOZ_OBJDIR=./obj-android
+ac_add_options --with-android-version=9
+
+ac_add_options --enable-update-channel=gnuzilla
+
+ac_add_options --disable-updater
+ac_add_options --disable-crashreporter
+ac_add_options --disable-maintenance-service
+ac_add_options --disable-tests
+
+#ac_add_options --enable-elf-hack
+#ac_add_options --enable-stdcxx-compat
+#ac_add_options --with-system-zlib
+#ac_add_options --with-android-gnu-compiler-version=4.7
+
+#mk_add_options 'export MOZ_CHROME_MULTILOCALE=en-US cs da de es-ES fi fr ja ko it nb-NO nl pl pt-BR pt-PT ru sk sv-SE zh-CN zh-TW'
+mk_add_options 'export MOZ_CHROME_MULTILOCALE=es-ES'
+
+mk_add_options 'export L10NBASEDIR=/home/ruben/git/gnuzilla/output/icecat-31.5.0/l10n'
+ac_add_options --with-l10n-base=/home/ruben/git/gnuzilla/output/icecat-31.5.0/l10n
+
+#ac_add_options --with-android-sdk="$HOME/android-build/android-sdk-linux/platforms/android-21/"
+ac_add_options --with-android-sdk="$HOME/android-build/android-sdk-linux/platforms/android-16/"
+ac_add_options --with-android-ndk="$HOME/android-build/android-ndk-r8e"
+
+mk_add_options MOZ_MAKE_FLAGS=-j8
+ac_add_options --with-ccache
+
diff --git a/data/buildscripts/mozconfig-mac b/data/buildscripts/mozconfig-mac
new file mode 100644
index 0000000..a6be1b0
--- /dev/null
+++ b/data/buildscripts/mozconfig-mac
@@ -0,0 +1,54 @@
+export CROSS_COMPILE=1
+
+SYSROOTDIR=/usr/lib/apple/SDKs/MacOSX10.6.sdk
+ROOTDIR="/usr/local/bin"
+FLAGS="-arch i386 -isysroot $SYSROOTDIR"
+
+# Ideally we use the patch provided in
+# https://bugzilla.mozilla.org/show_bug.cgi?id=933071 to get rid of our path
+# symlinks but for some reason that does not work. While Firefox is not
+# complaining with this patch on compile time anymore it won't start...
+# CROSS_PRIVATE_FRAMEWORKS=$SYSROOTDIR/System/Library/PrivateFrameworks
+
+# Needed for our otool patch
+TOOLCHAIN_PREFIX=x86_64-apple-darwin10-
+
+CC="$ROOTDIR/x86_64-apple-darwin10-clang $FLAGS"
+CXX="$ROOTDIR/x86_64-apple-darwin10-clang++ $FLAGS"
+
+# We need them as configure is looking for i386-apple-darwin10-* which is not
+# existing.
+RANLIB=$ROOTDIR/x86_64-apple-darwin10-ranlib
+AR=$ROOTDIR/x86_64-apple-darwin10-ar
+AS=$ROOTDIR/x86_64-apple-darwin10-as
+LD=$ROOTDIR/x86_64-apple-darwin10-ld
+STRIP=$ROOTDIR/x86_64-apple-darwin10-strip
+
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-macos
+mk_add_options MOZ_APP_DISPLAYNAME="IceCat"
+mk_add_options MOZILLA_OFFICIAL=1
+mk_add_options BUILD_OFFICIAL=1
+
+ac_add_options --target=i386-apple-darwin10
+ac_add_options --enable-application=browser
+ac_add_options --enable-strip
+ac_add_options --enable-official-branding
+ac_add_options --enable-optimize
+ac_add_options --disable-debug
+
+# See above for a reason why this is currently disabled
+# ac_add_options --with-macos-private-frameworks=$CROSS_PRIVATE_FRAMEWORKS
+#ac_add_options --disable-updater
+ac_add_options --enable-update-packaging
+# We do not use signed MAR files yet (Mozilla uses them on Windows only).
+ac_add_options --disable-verify-mar
+ac_add_options --disable-crashreporter
+ac_add_options --disable-maintenance-service
+ac_add_options --disable-webrtc
+ac_add_options --disable-tests
+# ac_add_options --disable-ctypes
+
+ac_add_options --without-intl-api
+
+mk_add_options MOZ_MAKE_FLAGS=-j8
+ac_add_options --with-ccache
diff --git a/data/buildscripts/mozconfig-windows b/data/buildscripts/mozconfig-windows
new file mode 100644
index 0000000..4b7193c
--- /dev/null
+++ b/data/buildscripts/mozconfig-windows
@@ -0,0 +1,23 @@
+#Specify the cross compile
+export CROSS_COMPILE=1
+ac_add_options --enable-application=browser
+ac_add_options --target=i686-w64-mingw32
+ac_add_options --enable-default-toolkit=cairo-windows
+mk_add_options MOZ_OBJDIR=./obj-windows
+
+ac_add_options --disable-debug
+ac_add_options --disable-optimize
+ac_add_options --disable-tests
+
+ac_add_options --disable-updater
+ac_add_options --disable-crashreporter
+ac_add_options --disable-maintenance-service
+ac_add_options --disable-webrtc
+ac_add_options --without-intl-api
+
+# ac_add_options --disable-accessibility # uncomment if you don't have widl installed
+
+# Use parallel build. Adjust number of processes for your setup.
+mk_add_options MOZ_MAKE_FLAGS=-j8
+ac_add_options --with-ccache
+
diff --git a/data/buildscripts/toolchain-android.sh b/data/buildscripts/toolchain-android.sh
new file mode 100644
index 0000000..f50cbc4
--- /dev/null
+++ b/data/buildscripts/toolchain-android.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+#https://wiki.mozilla.org/Mobile/Fennec/Android/Detailed_build_instructions#Linux
+set -e
+
+apt-get -q -y --force-yes install openjdk-7-jdk ant mercurial ccache
+apt-get -q -y --force-yes build-dep firefox
+
+WD=android-build
+rm -rf $WD
+mkdir $WD
+cd $WD
+
+wget https://dl.google.com/android/ndk/android-ndk-r8e-linux-x86.tar.bz2
+tar -xjf android-ndk-r8e-linux-x86.tar.bz2
+
+wget http://dl.google.com/android/android-sdk_r24.0.2-linux.tgz
+tar -xzf android-sdk_r24.0.2-linux.tgz
+
+while true; do echo y; sleep 1; done |./android-sdk-linux/tools/android update sdk -u
+while true; do echo y; sleep 1; done |./android-sdk-linux/tools/android update adb
+
+echo export PATH=$PATH:$PWD/android-sdk-linux/tools:$PWD/android-sdk-linux/build-tools:$PWD/android-sdk-linux/platform-tools
+export PATH=$PATH:$PWD/android-sdk-linux/tools:$PWD/android-sdk-linux/build-tools:$PWD/android-sdk-linux/platform-tools
+
+pkill adb
+
+echo DONE
diff --git a/data/buildscripts/toolchain-macos.sh b/data/buildscripts/toolchain-macos.sh
new file mode 100644
index 0000000..20cb31c
--- /dev/null
+++ b/data/buildscripts/toolchain-macos.sh
@@ -0,0 +1,41 @@
+set -e
+
+WD=macos-build
+apt-get -q -y --force-yes install cmake rsync zlib1g-dev libssl-dev mkisofs
+
+rm -rf $WD
+mkdir $WD
+cd $WD
+#wget http://ppa.launchpad.net/flosoft/cross-apple/ubuntu/pool/main/a/apple-uni-sdk-10.6/apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb
+wget http://ppa.launchpad.net/flosoft/cross-apple/ubuntu/pool/main/a/apple-uni-sdk-10.6/apple-uni-sdk-10.6_20110407-0.flosoft1_amd64.deb
+dpkg -i *.deb
+
+wget https://mingw-and-ndk.googlecode.com/files/multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
+unp multiarch-darwin*
+rm apple-osx/man -rf
+cp apple-osx/* /usr/local/ -a
+# For OpenSSL
+ln -sf /usr/local/bin/apple-osx-gcc /usr/local/bin/i686-apple-darwin11-cc
+#For gmp, need to trick it so it knows we're doing a 64 bit build
+for i in /usr/local/bin/i686-apple-darwin11-*; do j=`echo $i | sed 's/i686/x86_64/'`; ln -fs $i $j; done;
+
+wget https://people.torproject.org/~mikeperry/mirrors/sources/x86_64-apple-darwin10.tar.xz
+unp x86_64-apple-darwin10.tar.xz
+cp x-tools/x86_64-apple-darwin10/* /usr/local/ -a
+# FIXME: path hacks:
+mkdir -p /System/Library/ || true
+ln -fs /usr/lib/apple/SDKs/MacOSX10.6.sdk /usr/lib/apple/SDKs/MacOSX10.5.sdk
+ln -fs /usr/lib/apple/SDKs/MacOSX10.6.sdk /usr/lib/apple/SDKs/MacOSX10.5.sdk
+ln -fs /usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/ /System/Library/
+ln -fs /usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/PrivateFrameworks/ /System/Library/
+ln -fs /usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/libstdc++.6.dylib /usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/libstdc++.dylib
+
+git clone https://git.torproject.org/builders/tor-browser-bundle.git
+git clone https://github.com/vasi/libdmg-hfsplus.git
+cd libdmg-hfsplus
+git checkout dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
+git am ../tor-browser-bundle/gitian/patches/libdmg.patch
+cmake CMakeLists.txt
+cd dmg
+make
+
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