summaryrefslogtreecommitdiff
path: root/build-common.sh
blob: 0c5c0a3133e3abffefc3261470344404a12c230b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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
}