summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVince Harron <vharron@google.com>2015-06-07 08:33:16 -0700
committerVince Harron <vharron@google.com>2015-06-07 08:33:16 -0700
commitb88e85c90e260cfed1d5130499b8dfd7bb9dc02a (patch)
tree55a193cc0a3292f75bea0bc71970d915e04ef758
parent0141abbf44dedaf250f4068c6fbdc1ee0bccbd69 (diff)
downloadwindows-x86-b88e85c90e260cfed1d5130499b8dfd7bb9dc02a.tar.gz
-rw-r--r--build-common.sh116
-rwxr-xr-xbuild-ninja.sh28
-rwxr-xr-xninja.exebin0 -> 399360 bytes
3 files changed, 144 insertions, 0 deletions
diff --git a/build-common.sh b/build-common.sh
new file mode 100644
index 0000000..0c5c0a3
--- /dev/null
+++ b/build-common.sh
@@ -0,0 +1,116 @@
+# inputs
+# $PROJ - project name (cmake|ninja|swig)
+# $VER - project version
+# $1 - name of this file
+#
+# this file does the following:
+#
+# 1) define the following env vars
+# OS - linux|darwin|windows
+# USER - username
+# CORES - numer of cores (for parallel builds)
+# PATH (with appropriate compilers)
+# CFLAGS/CXXFLAGS/LDFLAGS
+# RD - root directory for source and object files
+# INSTALL - install directory/git repo root
+# SCRIPT_FILE=absolute path to the parent build script
+# SCRIPT_DIR=absolute path to the parent build script's directory
+# COMMON_FILE=absolute path to this file
+
+#
+# 2) create an empty tmp directory at /tmp/$PROJ-$USER
+# 3) checkout the destination git repo to /tmp/prebuilts/$PROJ/$OS-x86/$VER
+# 4) cd $RD
+
+UNAME="$(uname)"
+case "$UNAME" in
+Linux)
+ SCRATCH=/tmp
+ OS='linux'
+ INSTALL_VER=$VER
+ ;;
+Darwin)
+ SCRATCH=/tmp
+ OS='darwin'
+ OSX_MIN=10.6
+ export CFLAGS="$CFLAGS -mmacosx-version-min=$OSX_MIN"
+ export CXXFLAGS="$CXXFLAGS -mmacosx-version-min=$OSX_MIN"
+ export LDFLAGS="$LDFLAGS -mmacosx-version-min=$OSX_MIN"
+ INSTALL_VER=$VER
+ ;;
+*_NT-*)
+ if [[ "$UNAME" == CYGWIN_NT-* ]]; then
+ PATH_PREFIX=/cygdrive
+ else
+ # MINGW32_NT-*
+ PATH_PREFIX=
+ fi
+ SCRATCH=$PATH_PREFIX/d/src/tmp
+ USER=$USERNAME
+ OS='windows'
+ CORES=$NUMBER_OF_PROCESSORS
+ # VS2013 x64 Native Tools Command Prompt
+ case "$MSVS" in
+ 2013)
+ export PATH="$PATH_PREFIX/c/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/":"$PATH_PREFIX/c/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/":"$PATH_PREFIX/c/Program Files (x86)/Windows Kits/8.1/bin/x64":"$PATH"
+ export INCLUDE="C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\INCLUDE;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\INCLUDE;C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\shared;C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\um;C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\winrt;"
+ export LIB="C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\LIB\\amd64;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\LIB\\amd64;C:\\Program Files (x86)\\Windows Kits\\8.1\\lib\\winv6.3\\um\\x64;"
+ export LIBPATH="C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\LIB\\amd64;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\LIB\\amd64;C:\\Program Files (x86)\\Windows Kits\\8.1\\References\\CommonConfiguration\\Neutral;C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1\\ExtensionSDKs\\Microsoft.VCLibs\\12.0\\References\\CommonConfiguration\\neutral;"
+ INSTALL_VER=${VER}_vs${MSVS}
+ ;;
+ *)
+ # g++/make build
+ export CC=x86_64-w64-mingw32-gcc
+ export CXX=x86_64-w64-mingw32-g++
+ export LD=x86_64-w64-mingw32-ld
+ ;;
+ esac
+ ;;
+*)
+ exit 1
+ ;;
+esac
+
+RD=$SCRATCH/$PROJ-$USER
+INSTALL="$RD/install"
+
+cd /tmp # windows can't delete if you're in the dir
+rm -rf $RD
+mkdir -p $INSTALL
+mkdir -p $RD
+cd $RD
+
+# OSX lacks a "realpath" bash command
+realpath() {
+ [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
+}
+
+SCRIPT_FILE=$(realpath "$0")
+SCRIPT_DIR="$(dirname "$SCRIPT_FILE")"
+COMMON_FILE="$SCRIPT_DIR/$1"
+
+commit_and_push()
+{
+ # check into a local git clone
+ rm -rf $SCRATCH/prebuilts/$PROJ/
+ mkdir -p $SCRATCH/prebuilts/$PROJ/
+ cd $SCRATCH/prebuilts/$PROJ/
+ git clone https://android.googlesource.com/platform/prebuilts/$PROJ/$OS-x86
+ GIT_REPO="$SCRATCH/prebuilts/$PROJ/$OS-x86"
+ cd $GIT_REPO
+ git rm -r * || true # ignore error caused by empty directory
+ mv $INSTALL/* $GIT_REPO
+ cp $SCRIPT_FILE $GIT_REPO
+ cp $COMMON_FILE $GIT_REPO
+
+ git add .
+ if [ -n "$ANDROID_EMAIL" ]; then
+ git config user.email $ANDROID_EMAIL
+ fi
+ git commit -m "Adding binaries for $INSTALL_VER"
+
+ # execute this command to upload
+ #git push origin HEAD:refs/for/master
+
+ rm -rf $RD || true # ignore error
+}
diff --git a/build-ninja.sh b/build-ninja.sh
new file mode 100755
index 0000000..e5ac2bf
--- /dev/null
+++ b/build-ninja.sh
@@ -0,0 +1,28 @@
+#!/bin/bash -ex
+# Download & build ninja on the local machine
+# works on Linux, OSX, and Windows (Cygwin)
+# leaves output in /tmp/prebuilts/ninja/$OS-x86/
+
+PROJ=ninja
+VER=1.5.3
+MSVS=2013
+
+source $(dirname "$0")/build-common.sh build-common.sh
+
+# needed for cygwin
+export PATH="$PATH":.
+
+# ninja specific steps
+cd $RD
+git clone https://github.com/martine/ninja.git src
+cd src
+git checkout v$VER
+if [[ "$OS" == "windows" ]] ; then
+ PLATFORM="--platform=msvc"
+fi
+./configure.py --bootstrap $PLATFORM
+
+# install
+cp $RD/src/ninja $INSTALL
+
+commit_and_push
diff --git a/ninja.exe b/ninja.exe
new file mode 100755
index 0000000..350f447
--- /dev/null
+++ b/ninja.exe
Binary files differ