merge in studio-1.4-release history after reset to studio-master-dev
diff --git a/build-android.sh b/build-android.sh
new file mode 100755
index 0000000..78d5677
--- /dev/null
+++ b/build-android.sh
@@ -0,0 +1,125 @@
+#!/bin/bash
+# Expected arguments:
+# $1 = out_dir
+# $2 = dest_dir
+# $3 = build_number
+
+# exit on error
+set -e
+
+if [ ! "${BASH_SOURCE[1]}" ]; then
+ case "$(uname -s)" in
+ Linux)
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+ source "$ROOT_DIR/external/lldb-utils/build.sh" "$@"
+ exit 0
+ ;;
+ *)
+ echo "No." > /dev/stderr
+ exit 1
+ esac
+fi
+
+HOST="$BUILD"
+
+CONFIG=MinSizeRel
+
+for ARCH in x86 x86_64 arm aarch64 mips mips64; do
+
+BUILD="$OUT/lldb/$ARCH"
+rm -rf "$BUILD"
+mkdir -p "$BUILD"
+
+unset LLDB_FLAGS
+unset LLDB_LINKER_FLAGS
+unset LLDB_LIBS
+unset CMAKE_OPTIONS
+
+ABI=$ARCH
+TRIPLE_ARCH=$ARCH
+SYSROOT_ARCH=$ARCH
+STL_ARCH=$ARCH
+
+case $ARCH in
+ x86)
+ TOOLCHAIN="$PREBUILTS/gcc/linux-x86/x86/x86_64-linux-android-4.9"
+ LLVM_ARCH=X86 TRIPLE_ARCH=i386 ABI=x86_64
+ LLDB_FLAGS+=(-m32)
+ ;;
+ x86_64)
+ TOOLCHAIN="$PREBUILTS/gcc/linux-x86/x86/x86_64-linux-android-4.9"
+ LLVM_ARCH=X86
+ ;;
+ arm)
+ TOOLCHAIN="$PREBUILTS/gcc/linux-x86/arm/arm-linux-androideabi-4.9"
+ LLVM_ARCH=ARM STL_ARCH=armeabi-v7a ABI=armeabi
+ ;;
+ aarch64)
+ TOOLCHAIN="$PREBUILTS/gcc/linux-x86/aarch64/aarch64-linux-android-4.9"
+ LLVM_ARCH=AArch64 SYSROOT_ARCH=arm64 STL_ARCH=arm64-v8a
+ ;;
+ mips)
+ TOOLCHAIN="$PREBUILTS/gcc/linux-x86/mips/mips64el-linux-android-4.9"
+ LLVM_ARCH=Mips ABI=mips64
+ LLDB_FLAGS+=(-mips32)
+ ;;
+ mips64)
+ TOOLCHAIN="$PREBUILTS/gcc/linux-x86/mips/mips64el-linux-android-4.9"
+ LLVM_ARCH=Mips
+ ;;
+esac
+
+SYSROOT="$PREBUILTS/ndk/current/platforms/android-21/arch-$SYSROOT_ARCH"
+
+# Necessary because mips64el-gcc searches paths relative to lib64.
+[ $ARCH == mips ] && mkdir -p "$SYSROOT/usr/lib64"
+
+STL="$PREBUILTS/ndk/current/sources/cxx-stl/gnu-libstdc++/4.9"
+
+LLDB_FLAGS+=(-s) # stripped
+LLDB_FLAGS+=(-I"$STL/include")
+LLDB_FLAGS+=(-I"$STL/libs/$STL_ARCH/include")
+
+LLDB_LINKER_FLAGS+=(-L"$STL/libs/$STL_ARCH")
+
+LLDB_LIBS="gnustl_static"
+
+# http://b.android.com/182094
+[ $ARCH == mips ] && LLDB_LIBS+=";atomic"
+
+TOOLCHAIN_FILE="$LLDB/cmake/platforms/Android.cmake"
+
+CMAKE_OPTIONS+=(-GNinja)
+CMAKE_OPTIONS+=("$LLVM")
+CMAKE_OPTIONS+=(-Wno-dev)
+CMAKE_OPTIONS+=(-DCMAKE_MAKE_PROGRAM="$NINJA")
+CMAKE_OPTIONS+=(-DCMAKE_BUILD_TYPE=$CONFIG)
+CMAKE_OPTIONS+=(-DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN_FILE")
+CMAKE_OPTIONS+=(-DANDROID_TOOLCHAIN_DIR="$TOOLCHAIN")
+CMAKE_OPTIONS+=(-DCMAKE_CXX_COMPILER_VERSION=4.9)
+CMAKE_OPTIONS+=(-DANDROID_ABI=$ABI)
+CMAKE_OPTIONS+=(-DLLVM_TARGET_ARCH=$LLVM_ARCH)
+CMAKE_OPTIONS+=(-DLLVM_TARGETS_TO_BUILD=$LLVM_ARCH)
+CMAKE_OPTIONS+=(-DLLVM_HOST_TRIPLE=$TRIPLE_ARCH-unknown-linux-android)
+CMAKE_OPTIONS+=(-DLLVM_TABLEGEN="$HOST/bin/llvm-tblgen")
+CMAKE_OPTIONS+=(-DCLANG_TABLEGEN="$HOST/bin/clang-tblgen")
+CMAKE_OPTIONS+=(-DCMAKE_C_FLAGS="${LLDB_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DCMAKE_CXX_FLAGS="${LLDB_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DCMAKE_EXE_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DCMAKE_MODULE_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DCMAKE_SHARED_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DANDROID_SYSROOT="$SYSROOT")
+CMAKE_OPTIONS+=(-DPYTHON_EXECUTABLE="$PYTHON_DIR/bin/python")
+CMAKE_OPTIONS+=(-DLLDB_SYSTEM_LIBS="$LLDB_LIBS")
+CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_LLDB_SOURCE_DIR="$LLDB")
+CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_CLANG_SOURCE_DIR="$CLANG")
+
+(cd "$BUILD" && "$CMAKE" "${CMAKE_OPTIONS[@]}")
+"$NINJA" -C "$BUILD" lldb-server
+
+mkdir -p "$INSTALL/android/$TRIPLE_ARCH"
+cp -aL "$BUILD/bin/lldb-server" "$INSTALL/android/$TRIPLE_ARCH/"
+
+done # for ARCH
+
+(cd "$INSTALL/android" && zip --symlinks -r "$DEST/lldb-android-${BNUM}.zip" .)
diff --git a/build-darwin.sh b/build-darwin.sh
index 4931155..34aa1d4 100755
--- a/build-darwin.sh
+++ b/build-darwin.sh
@@ -7,65 +7,53 @@
# exit on error
set -e
-# OS X lacks a "realpath" bash command
-realpath() {
- [[ "$1" == /* ]] && echo "$1" || echo "$PWD/$1"
-}
+if [ ! "${BASH_SOURCE[1]}" ]; then
+ case "$(uname -s)" in
+ Darwin)
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+ source "$ROOT_DIR/external/lldb-utils/build.sh" "$@"
+ exit 0
+ ;;
+ *)
+ echo "No." > /dev/stderr
+ exit 1
+ esac
+fi
-# calculate the root directory from the script path
-# this script lives two directories down from the root
-# external/lldb-utils/build-darwin.sh
-ROOT_DIR="$(realpath "$(dirname "$0")/../..")"
-cd "$ROOT_DIR"
-
-function die() {
- echo "$*" > /dev/stderr
- echo "Usage: $0 <out_dir> <dest_dir> <build_number>" > /dev/stderr
- exit 1
-}
-
-(($# > 3)) && die "[$0] Unknown parameter: $4"
-
-OUT="$1"
-DEST="$2"
-BNUM="$3"
-
-[ ! "$OUT" ] && die "## Error: Missing out folder"
-[ ! "$DEST" ] && die "## Error: Missing destination folder"
-[ ! "$BNUM" ] && die "## Error: Missing build number"
-
-OUT="$(realpath "$OUT")"
-DEST="$(realpath "$DEST")"
-
-cat <<END_INFO
-## Building android-studio ##
-## Out Dir : $OUT
-## Dest Dir : $DEST
-## Build Num: $BNUM
-
-END_INFO
-
-LLVM="$ROOT_DIR/external/llvm"
-LLDB="$ROOT_DIR/external/lldb"
-
-ln -fns ../../clang "$LLVM/tools/clang"
ln -fns ../llvm "$LLDB/llvm"
+ln -fns ../../clang "$LLVM/tools/clang"
-PRE="$ROOT_DIR/prebuilts"
+export PATH="$SWIG_DIR/bin:/usr/sbin:/usr/bin:/bin"
-export PATH="$PRE/swig/darwin-x86/bin:/usr/sbin:/usr/bin:/bin"
-export SWIG_LIB="$PRE/swig/darwin-x86/share/swig/2.0.11"
+# we don't need code signing
+function codesign() { :; }
+export -f codesign
CONFIG=Release
-BUILD="$OUT/lldb/host"
-rm -rf "$BUILD"
-mkdir -p "$BUILD"
+unset XCODEBUILD_OPTIONS
+unset PRUNE
-(cd "$LLDB" && xcodebuild -configuration $CONFIG -target desktop OBJROOT="$BUILD" SYMROOT="$BUILD")
+XCODEBUILD_OPTIONS+=(-configuration $CONFIG)
+XCODEBUILD_OPTIONS+=(-target desktop)
+XCODEBUILD_OPTIONS+=(OBJROOT="$BUILD")
+XCODEBUILD_OPTIONS+=(SYMROOT="$BUILD")
+
+(cd "$LLDB" && xcodebuild "${XCODEBUILD_OPTIONS[@]}")
+
+mkdir -p "$INSTALL/host" "$INSTALL/host/include/lldb"
+cp -a "$BUILD/$CONFIG/"{lldb,LLDB.framework} "$INSTALL/host/"
+cp -a "$LLDB/include/lldb/"{API,Utility,lldb-*.h} "$INSTALL/host/include/lldb/"
+
+find "$INSTALL/host/include/lldb" -name 'lldb-private*.h' -delete
+
+unset PRUNE
+PRUNE+=('(' -name Clang -and -type d ')')
+PRUNE+=( -or -name argdumper)
+PRUNE+=( -or -name darwin-debug)
+PRUNE+=( -or -name lldb-server)
# zip file is huge, need to prune
-find "$BUILD/$CONFIG/LLDB.framework" -name Clang -or -name debugserver -or -name lldb-server -exec rm -rf {} +
+find "$INSTALL/host/LLDB.framework" '(' "${PRUNE[@]}" ')' -exec rm -rf {} +
-mkdir -p "$DEST"
-(cd "$BUILD/$CONFIG" && zip -r --symlinks "$DEST/lldb-mac-${BNUM}.zip" lldb LLDB.framework)
+(cd "$INSTALL/host" && zip -r --symlinks "$DEST/lldb-mac-${BNUM}.zip" .)
diff --git a/build-internal.sh b/build-internal.sh
new file mode 100755
index 0000000..783479a
--- /dev/null
+++ b/build-internal.sh
@@ -0,0 +1,108 @@
+#!/bin/bash
+# Expected arguments:
+# $1 = out_dir
+# $2 = dest_dir
+# $3 = build_number
+
+# exit on error
+set -e
+
+# calculate the root directory from the script path
+# this script lives two directories down from the root
+# external/lldb-utils/build-internal.sh
+ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+source "$ROOT_DIR/external/lldb-utils/build.sh" "$@"
+
+GOOGLE="$ROOT_DIR/tools/vendor/google"
+FRONTEND="$GOOGLE/android-ndk/native/LLDBProtobufFrontend"
+
+CONFIG=Release
+
+BUILD="$OUT/lldb/frontend"
+rm -rf "$BUILD"
+mkdir -p "$BUILD"
+
+unset LLDB_FLAGS
+unset LLDB_LINKER_FLAGS
+unset CMAKE_OPTIONS
+
+CMAKE_OPTIONS+=(-GNinja)
+CMAKE_OPTIONS+=(-DCMAKE_BUILD_TYPE=$CONFIG)
+
+case $OS in
+ linux)
+ CC="$PREBUILTS/clang/linux-x86/host/3.6/bin/clang"
+ TOOLCHAIN="$PREBUILTS/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8"
+
+ LLDB_FLAGS+=(-target x86_64-unknown-linux)
+ LLDB_FLAGS+=(--gcc-toolchain="$TOOLCHAIN")
+ LLDB_FLAGS+=(-B"$TOOLCHAIN/bin/x86_64-linux-")
+
+ CMAKE_OPTIONS+=(-DCMAKE_SYSROOT="$TOOLCHAIN/sysroot")
+ CMAKE_OPTIONS+=(-DCMAKE_C_COMPILER="$CC")
+ CMAKE_OPTIONS+=(-DCMAKE_CXX_COMPILER="$CC++")
+ CMAKE_OPTIONS+=(-DCMAKE_C_FLAGS="${LLDB_FLAGS[*]}")
+ CMAKE_OPTIONS+=(-DCMAKE_CXX_FLAGS="${LLDB_FLAGS[*]}")
+
+ CMAKE_OPTIONS+=("$FRONTEND")
+ CMAKE_OPTIONS+=(-DCMAKE_MAKE_PROGRAM="$NINJA")
+ CMAKE_OPTIONS+=(-DLIBLLDB_DIR="$INSTALL/host/lib")
+ CMAKE_OPTIONS+=(-DCMAKE_INSTALL_PREFIX="$INSTALL/frontend")
+ ;;
+ darwin)
+ LLDB_FLAGS+=(-stdlib=libc++)
+ LLDB_FLAGS+=(-mmacosx-version-min=10.8)
+
+ LLDB_LINKER_FLAGS+=(-mmacosx-version-min=10.8)
+
+ CMAKE_OPTIONS+=(-DCMAKE_C_COMPILER=clang)
+ CMAKE_OPTIONS+=(-DCMAKE_CXX_COMPILER=clang++)
+ CMAKE_OPTIONS+=(-DCMAKE_C_FLAGS="${LLDB_FLAGS[*]}")
+ CMAKE_OPTIONS+=(-DCMAKE_CXX_FLAGS="${LLDB_FLAGS[*]}")
+ CMAKE_OPTIONS+=(-DCMAKE_EXE_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+ CMAKE_OPTIONS+=(-DCMAKE_MODULE_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+ CMAKE_OPTIONS+=(-DCMAKE_SHARED_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+
+ CMAKE_OPTIONS+=("$FRONTEND")
+ CMAKE_OPTIONS+=(-DCMAKE_MAKE_PROGRAM="$NINJA")
+ CMAKE_OPTIONS+=(-DLIBLLDB_DIR="$INSTALL/host")
+ CMAKE_OPTIONS+=(-DCMAKE_INSTALL_PREFIX="$INSTALL/frontend")
+ ;;
+ windows)
+ # path too long
+ mv "$ROOT_DIR/"{prebuilts,tools} "$TMP/"
+ PREBUILTS="$TMP${PREBUILTS#"$ROOT_DIR"}"
+ NINJA="$PREBUILTS/ninja/${OS}-x86/ninja"
+ CMAKE="$PREBUILTS/cmake/${OS}-x86/bin/cmake"
+ FRONTEND="$TMP${FRONTEND#"$ROOT_DIR"}"
+
+ function finish() {
+ # move these back
+ mv "$LLVM" "$LLDB" "$CLANG" "$ROOT_DIR/external/"
+ mv "$TMP/"{prebuilts,tools} "$ROOT_DIR/"
+ rmdir "$TMP"
+ }
+
+ CMAKE_OPTIONS+=("$(cygpath -w "$FRONTEND")")
+ CMAKE_OPTIONS+=(-DCMAKE_MAKE_PROGRAM="$(cygpath -w "${NINJA}.exe")")
+ CMAKE_OPTIONS+=(-DLIBLLDB_DIR="$(cygpath -w "$INSTALL/host/lib")")
+ CMAKE_OPTIONS+=(-DCMAKE_INSTALL_PREFIX="$(cygpath -w "$INSTALL/frontend")")
+ ;;
+esac
+
+case $OS in
+ windows)
+ unset CMD
+ CMD+=(cmd /c "${VS120COMNTOOLS}VsDevCmd.bat")
+ CMD+=('&&' cd "$(cygpath -w "$BUILD")")
+ CMD+=('&&' "$(cygpath -w "${CMAKE}.exe")" "${CMAKE_OPTIONS[@]}")
+ CMD+=('&&' "$(cygpath -w "${NINJA}.exe")" install)
+ PATH="$(cygpath -u 'C:\Windows\System32')" "${CMD[@]}"
+ ;;
+ *)
+ (cd "$BUILD" && "$CMAKE" "${CMAKE_OPTIONS[@]}")
+ "$NINJA" -C "$BUILD" install
+ ;;
+esac
+
+(cd "$INSTALL/frontend" && zip -r "$DEST/lldb-frontend-$OS-${BNUM}.zip" .)
diff --git a/build-linux.sh b/build-linux.sh
index 4e065bf..0ec2af3 100755
--- a/build-linux.sh
+++ b/build-linux.sh
@@ -7,74 +7,32 @@
# exit on error
set -e
-# calculate the root directory from the script path
-# this script lives two directories down from the root
-# external/lldb-utils/build-linux.sh
-ROOT_DIR="$(readlink -f "$(dirname "$0")/../..")"
-cd "$ROOT_DIR"
+if [ ! "${BASH_SOURCE[1]}" ]; then
+ case "$(uname -s)" in
+ Linux)
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+ source "$ROOT_DIR/external/lldb-utils/build.sh" "$@"
+ exit 0
+ ;;
+ *)
+ echo "No." > /dev/stderr
+ exit 1
+ esac
+fi
-function die() {
- echo "$*" > /dev/stderr
- echo "Usage: $0 <out_dir> <dest_dir> <build_number>" > /dev/stderr
- exit 1
-}
-
-(($# > 3)) && die "[$0] Unknown parameter: $4"
-
-OUT="$1"
-DEST="$2"
-BNUM="$3"
-
-[ ! "$OUT" ] && die "## Error: Missing out folder"
-[ ! "$DEST" ] && die "## Error: Missing destination folder"
-[ ! "$BNUM" ] && die "## Error: Missing build number"
-
-OUT="$(readlink -f "$OUT")"
-DEST="$(readlink -f "$DEST")"
-
-cat <<END_INFO
-## Building android-studio ##
-## Out Dir : $OUT
-## Dest Dir : $DEST
-## Build Num: $BNUM
-
-END_INFO
-
-LLVM="$ROOT_DIR/external/llvm"
-LLDB="$ROOT_DIR/external/lldb"
-
-ln -fns ../../clang "$LLVM/tools/clang"
-ln -fns ../../lldb "$LLVM/tools/lldb"
-
-PRE="$ROOT_DIR/prebuilts"
-CMAKE="$PRE/cmake/linux-x86/bin/cmake"
-NINJA="$PRE/ninja/linux-x86/ninja"
-
-export PATH="$(dirname "$NINJA"):/usr/bin:/bin"
-export SWIG_LIB="$PRE/swig/linux-x86/share/swig/2.0.11"
-
-INSTALL="$OUT/lldb/install"
-rm -rf "$INSTALL"
-
-#######################
-##### Linux build #####
-#######################
+export PATH="/usr/bin:/bin"
CONFIG=Release
-BUILD="$OUT/lldb/host"
-rm -rf "$BUILD"
-mkdir -p "$BUILD"
-
unset LLDB_FLAGS
+unset LLDB_LINKER_FLAGS
unset CMAKE_OPTIONS
-CLANG="$PRE/clang/linux-x86/host/3.6/bin/clang"
-TOOLCHAIN="$PRE/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8"
+CC="$PREBUILTS/clang/linux-x86/host/3.6/bin/clang"
+TOOLCHAIN="$PREBUILTS/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8"
LLDB_FLAGS+=(-fuse-ld=gold)
LLDB_FLAGS+=(-target x86_64-unknown-linux)
-LLDB_FLAGS+=(-Qunused-arguments)
# Necessary because clang recognizes x86_64-linux-gnu
# as a valid gcc toolchain but not x86_64-linux.
@@ -85,25 +43,31 @@
# Prefix for gcc, ld, etc.
LLDB_FLAGS+=(-B"$TOOLCHAIN/bin/x86_64-linux-")
-LLDB_FLAGS+=(-I"$PRE/libedit/linux-x86/include")
-LLDB_FLAGS+=(-L"$PRE/libedit/linux-x86/lib")
+LLDB_FLAGS+=(-I"$PREBUILTS/libedit/linux-x86/include")
+
+LLDB_LINKER_FLAGS+=(-L"$PREBUILTS/libedit/linux-x86/lib")
CMAKE_OPTIONS+=(-GNinja)
CMAKE_OPTIONS+=("$LLVM")
-CMAKE_OPTIONS+=(-Wno-dev)
+CMAKE_OPTIONS+=(-DCMAKE_MAKE_PROGRAM="$NINJA")
CMAKE_OPTIONS+=(-DCMAKE_BUILD_TYPE=$CONFIG)
-CMAKE_OPTIONS+=(-DCMAKE_C_COMPILER="$CLANG")
-CMAKE_OPTIONS+=(-DCMAKE_CXX_COMPILER="$CLANG++")
+CMAKE_OPTIONS+=(-DCMAKE_C_COMPILER="$CC")
+CMAKE_OPTIONS+=(-DCMAKE_CXX_COMPILER="$CC++")
CMAKE_OPTIONS+=(-DCMAKE_AR="$TOOLCHAIN/bin/x86_64-linux-ar")
CMAKE_OPTIONS+=(-DCMAKE_C_FLAGS="${LLDB_FLAGS[*]}")
CMAKE_OPTIONS+=(-DCMAKE_CXX_FLAGS="${LLDB_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DCMAKE_EXE_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DCMAKE_MODULE_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
+CMAKE_OPTIONS+=(-DCMAKE_SHARED_LINKER_FLAGS="${LLDB_LINKER_FLAGS[*]}")
CMAKE_OPTIONS+=(-DLLDB_DISABLE_CURSES=1)
-CMAKE_OPTIONS+=(-DSWIG_EXECUTABLE="$PRE/swig/linux-x86/bin/swig")
-CMAKE_OPTIONS+=(-DPYTHON_EXECUTABLE="$PRE/python/linux-x86/bin/python")
-CMAKE_OPTIONS+=(-DPYTHON_LIBRARY="$PRE/python/linux-x86/lib/libpython2.7.so")
-CMAKE_OPTIONS+=(-DPYTHON_INCLUDE_DIR="$PRE/python/linux-x86/include/python2.7")
-CMAKE_OPTIONS+=(-DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64;Mips")
+CMAKE_OPTIONS+=(-DSWIG_EXECUTABLE="$SWIG_DIR/bin/swig")
+CMAKE_OPTIONS+=(-DPYTHON_EXECUTABLE="$PYTHON_DIR/bin/python")
+CMAKE_OPTIONS+=(-DPYTHON_LIBRARY="$PYTHON_DIR/lib/libpython2.7.so")
+CMAKE_OPTIONS+=(-DPYTHON_INCLUDE_DIR="$PYTHON_DIR/include/python2.7")
+CMAKE_OPTIONS+=(-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64;Mips;Hexagon")
CMAKE_OPTIONS+=(-DCMAKE_INSTALL_PREFIX="$INSTALL/host")
+CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_LLDB_SOURCE_DIR="$LLDB")
+CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_CLANG_SOURCE_DIR="$CLANG")
(cd "$BUILD" && "$CMAKE" "${CMAKE_OPTIONS[@]}")
"$NINJA" -C "$BUILD" lldb lldb-server finish_swig lib/readline.so
@@ -112,115 +76,27 @@
#"$NINJA" -C "$BUILD" install
mkdir -p "$INSTALL/host/bin" "$INSTALL/host/lib" "$INSTALL/host/include/lldb"
-cp -a "$BUILD/bin/"lldb* "$INSTALL/host/bin/"
-cp -a "$BUILD/lib/"{liblldb.so*,python2.7,readline.so} "$INSTALL/host/lib/"
-cp -a "$PRE/libedit/linux-x86/lib/"libedit.so* "$INSTALL/host/lib/"
-cp -a "$PRE/python/linux-x86/lib/"libpython2.7.so* "$INSTALL/host/lib/"
-cp -a "$TOOLCHAIN/sysroot/usr/lib/"libtinfo.so* "$INSTALL/host/lib/"
-cp -a "$LLDB/include/lldb/API" "$INSTALL/host/include/lldb/"
+cp -a "$BUILD/bin/"lldb* "$INSTALL/host/bin/"
+cp -a "$BUILD/lib/"{liblldb.so*,readline.so} "$INSTALL/host/lib/"
+cp -a "$PREBUILTS/libedit/linux-x86/lib/"libedit.so* "$INSTALL/host/lib/"
+cp -a "$TOOLCHAIN/sysroot/usr/lib/"libtinfo.so* "$INSTALL/host/lib/"
+cp -a "$PYTHON_DIR/lib/"{libpython2.7.so*,python2.7} "$INSTALL/host/lib/"
+cp -a "$BUILD/lib/python2.7/site-packages" "$INSTALL/host/lib/python2.7"
+cp -a "$LLDB/include/lldb/"{API,Utility,lldb-*.h} "$INSTALL/host/include/lldb/"
-#########################
-##### Android build #####
-#########################
+find "$INSTALL/host/include/lldb" -name 'lldb-private*.h' -delete
-CONFIG=MinSizeRel
-HOST="$OUT/lldb/host"
+unset PRUNE
+PRUNE+=(-name 'hashlib.py')
+PRUNE+=(-or -name '*.pyc')
+PRUNE+=(-or -name '*.pyo')
+PRUNE+=(-or -name 'plat-*')
+PRUNE+=(-or -name 'config')
+PRUNE+=(-or -name 'distutils')
+PRUNE+=(-or -name 'idlelib')
+PRUNE+=(-or -name 'lib2to3')
+PRUNE+=(-or -name 'test')
+PRUNE+=(-or -name 'unittest')
+find "$INSTALL/host/lib/python2.7" '(' "${PRUNE[@]}" ')' -prune -exec rm -r {} +
-for ARCH in x86 x86_64 arm aarch64 mips mips64; do
-
-BUILD="$OUT/lldb/$ARCH"
-rm -rf "$BUILD"
-mkdir -p "$BUILD"
-
-unset LLDB_FLAGS
-unset LLDB_LIBS
-unset CMAKE_OPTIONS
-
-ABI=$ARCH
-TRIPLE_ARCH=$ARCH
-SYSROOT_ARCH=$ARCH
-STL_ARCH=$ARCH
-
-case $ARCH in
- x86)
- TOOLCHAIN="$PRE/gcc/linux-x86/x86/x86_64-linux-android-4.9"
- LLVM_ARCH=X86 TRIPLE_ARCH=i386 ABI=x86_64
- LLDB_FLAGS+=(-m32)
- ;;
- x86_64)
- TOOLCHAIN="$PRE/gcc/linux-x86/x86/x86_64-linux-android-4.9"
- LLVM_ARCH=X86
- ;;
- arm)
- TOOLCHAIN="$PRE/gcc/linux-x86/arm/arm-linux-androideabi-4.9"
- LLVM_ARCH=ARM STL_ARCH=armeabi-v7a ABI=armeabi
- ;;
- aarch64)
- TOOLCHAIN="$PRE/gcc/linux-x86/aarch64/aarch64-linux-android-4.9"
- LLVM_ARCH=AArch64 SYSROOT_ARCH=arm64 STL_ARCH=arm64-v8a
- ;;
- mips)
- TOOLCHAIN="$PRE/gcc/linux-x86/mips/mips64el-linux-android-4.9"
- LLVM_ARCH=Mips ABI=mips64
- LLDB_FLAGS+=(-mips32)
- ;;
- mips64)
- TOOLCHAIN="$PRE/gcc/linux-x86/mips/mips64el-linux-android-4.9"
- LLVM_ARCH=Mips
- ;;
-esac
-
-SYSROOT="$PRE/ndk/current/platforms/android-21/arch-$SYSROOT_ARCH"
-
-# Necessary because mips64el-gcc searches paths relative to lib64.
-[ $ARCH == mips ] && mkdir -p "$SYSROOT/usr/lib64"
-
-STL="$PRE/ndk/current/sources/cxx-stl/gnu-libstdc++/4.9"
-
-LLDB_FLAGS+=(-s) # stripped
-LLDB_FLAGS+=(-I"$STL/include")
-LLDB_FLAGS+=(-I"$STL/libs/$STL_ARCH/include")
-LLDB_FLAGS+=(-L"$STL/libs/$STL_ARCH")
-
-LLDB_LIBS="gnustl_static"
-
-# http://b.android.com/182094
-[ $ARCH == mips ] && LLDB_LIBS+=";atomic"
-
-TOOLCHAIN_FILE="$LLDB/cmake/platforms/Android.cmake"
-
-CMAKE_OPTIONS+=(-GNinja)
-CMAKE_OPTIONS+=("$LLVM")
-CMAKE_OPTIONS+=(-Wno-dev)
-CMAKE_OPTIONS+=(-DCMAKE_BUILD_TYPE=$CONFIG)
-CMAKE_OPTIONS+=(-DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN_FILE")
-CMAKE_OPTIONS+=(-DANDROID_TOOLCHAIN_DIR="$TOOLCHAIN")
-CMAKE_OPTIONS+=(-DCMAKE_CXX_COMPILER_VERSION=4.9)
-CMAKE_OPTIONS+=(-DANDROID_ABI=$ABI)
-CMAKE_OPTIONS+=(-DLLVM_TARGET_ARCH=$LLVM_ARCH)
-CMAKE_OPTIONS+=(-DLLVM_TARGETS_TO_BUILD=$LLVM_ARCH)
-CMAKE_OPTIONS+=(-DLLVM_HOST_TRIPLE=$TRIPLE_ARCH-unknown-linux-android)
-CMAKE_OPTIONS+=(-DLLVM_TABLEGEN="$HOST/bin/llvm-tblgen")
-CMAKE_OPTIONS+=(-DCLANG_TABLEGEN="$HOST/bin/clang-tblgen")
-CMAKE_OPTIONS+=(-DCMAKE_C_FLAGS="${LLDB_FLAGS[*]}")
-CMAKE_OPTIONS+=(-DCMAKE_CXX_FLAGS="${LLDB_FLAGS[*]}")
-CMAKE_OPTIONS+=(-DANDROID_SYSROOT="$SYSROOT")
-CMAKE_OPTIONS+=(-DPYTHON_EXECUTABLE="$PRE/python/linux-x86/bin/python")
-CMAKE_OPTIONS+=(-DLLDB_SYSTEM_LIBS="$LLDB_LIBS")
-
-(cd "$BUILD" && "$CMAKE" "${CMAKE_OPTIONS[@]}")
-"$NINJA" -C "$BUILD" lldb-server
-
-mkdir -p "$INSTALL/android/$TRIPLE_ARCH"
-cp -aL "$BUILD/bin/lldb-server" "$INSTALL/android/$TRIPLE_ARCH/"
-
-done # for ARCH
-
-###############
-##### ZIP #####
-###############
-
-mkdir -p "$DEST"
-(cd "$LLDB" && zip --symlinks -r "$DEST/lldb-tests-${BNUM}.zip" test)
(cd "$INSTALL/host" && zip --symlinks -r "$DEST/lldb-linux-${BNUM}.zip" .)
-(cd "$INSTALL/android" && zip --symlinks -r "$DEST/lldb-android-${BNUM}.zip" .)
diff --git a/build-windows.sh b/build-windows.sh
index 8073576..d09a05e 100755
--- a/build-windows.sh
+++ b/build-windows.sh
@@ -3,93 +3,84 @@
# $1 = out_dir
# $2 = dest_dir
# $3 = build_number
-#
-# Dependencies:
-# cygwin zip
# exit on error
set -e
-# calculate the root directory from the script path
-# this script lives two directories down from the root
-# external/lldb-utils/build-windows.sh
-ROOT_DIR="$(cygpath -w "$(readlink -f "$(dirname "$0")/../..")")"
-cd "$ROOT_DIR"
+if [ ! "${BASH_SOURCE[1]}" ]; then
+ case "$(uname -s)" in
+ *_NT-*)
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+ source "$ROOT_DIR/external/lldb-utils/build.sh" "$@"
+ exit 0
+ ;;
+ *)
+ echo "No." > /dev/stderr
+ exit 1
+ esac
+fi
-function die() {
- echo "$*" > /dev/stderr
- echo "Usage: $0 <out_dir> <dest_dir> <build_number>" > /dev/stderr
- exit 1
+# path too long
+TMP="$(mktemp -d)"
+mv "$LLVM" "$LLDB" "$CLANG" "$TMP/"
+LLVM="$TMP/llvm"
+LLDB="$TMP/lldb"
+CLANG="$TMP/clang"
+
+function finish() {
+ # move these back
+ mv "$LLVM" "$LLDB" "$CLANG" "$ROOT_DIR/external/"
+ rmdir "$TMP"
}
-(($# > 3)) && die "[$0] Unknown parameter: $4"
+trap finish EXIT
-OUT="$1"
-DEST="$2"
-BNUM="$3"
-
-[ ! "$OUT" ] && die "## Error: Missing out folder"
-[ ! "$DEST" ] && die "## Error: Missing destination folder"
-[ ! "$BNUM" ] && die "## Error: Missing build number"
-
-OUT="$(cygpath -w "$(readlink -f "$OUT")")"
-DEST="$(cygpath -w "$(readlink -f "$DEST")")"
-
-cat <<END_INFO
-## Building android-studio ##
-## Out Dir : $OUT
-## Dest Dir : $DEST
-## Build Num: $BNUM
-
-END_INFO
-
-LLVM="$ROOT_DIR"'\external\llvm'
-LLDB="$ROOT_DIR"'\external\lldb'
-CLANG="$ROOT_DIR"'\external\clang'
-
-PRE="$ROOT_DIR"'\prebuilts'
-CMAKE="$PRE"'\cmake\windows-x86\bin\cmake'
-NINJA="$PRE"'\ninja\windows-x86\ninja'
-
-export SWIG_LIB="$PRE"'\swig\windows-x86\share\swig\2.0.11'
-
-INSTALL="$OUT"'\lldb\install'
-rm -rf "$INSTALL"
+export SWIG_LIB="$(cygpath -w "$SWIG_LIB")"
CONFIG=Release
-BUILD="$OUT"'\lldb\host'
-rm -rf "$BUILD"
-mkdir -p "$BUILD"
-
unset CMAKE_OPTIONS
CMAKE_OPTIONS+=(-GNinja)
-CMAKE_OPTIONS+=("$LLVM")
+CMAKE_OPTIONS+=("$(cygpath -w "$LLVM")")
+CMAKE_OPTIONS+=(-DCMAKE_MAKE_PROGRAM="$(cygpath -w "${NINJA}.exe")")
CMAKE_OPTIONS+=(-DCMAKE_BUILD_TYPE=$CONFIG)
-CMAKE_OPTIONS+=(-DSWIG_DIR="$PRE"'\swig\windows-x86')
-CMAKE_OPTIONS+=(-DSWIG_EXECUTABLE="$PRE"'\swig\windows-x86\bin\swig.exe')
-CMAKE_OPTIONS+=(-DPYTHON_HOME="$PRE"'\python\windows-x86\x86')
-CMAKE_OPTIONS+=(-DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64;Mips")
-CMAKE_OPTIONS+=(-DCMAKE_INSTALL_PREFIX="$INSTALL")
-CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_LLDB_SOURCE_DIR="$LLDB")
-CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_CLANG_SOURCE_DIR="$CLANG")
+CMAKE_OPTIONS+=(-DSWIG_DIR="$(cygpath -w "$SWIG_DIR")")
+CMAKE_OPTIONS+=(-DSWIG_EXECUTABLE="$(cygpath -w "$SWIG_DIR/bin/swig.exe")")
+CMAKE_OPTIONS+=(-DLLDB_RELOCATABLE_PYTHON=1)
+CMAKE_OPTIONS+=(-DPYTHON_HOME="$(cygpath -w "$PYTHON_DIR/x86")")
+CMAKE_OPTIONS+=(-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64;Mips;Hexagon")
+CMAKE_OPTIONS+=(-DCMAKE_INSTALL_PREFIX="$(cygpath -w "$INSTALL/host")")
+CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_LLDB_SOURCE_DIR="$(cygpath -w "$LLDB")")
+CMAKE_OPTIONS+=(-DLLVM_EXTERNAL_CLANG_SOURCE_DIR="$(cygpath -w "$CLANG")")
unset CMD
-CMD+=(cmd /c 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat')
-CMD+=('&&' cd "$BUILD")
-CMD+=('&&' "$CMAKE" "${CMAKE_OPTIONS[@]}")
-CMD+=('&&' "$NINJA" lldb finish_swig)
+CMD+=(cmd /c "${VS120COMNTOOLS}VsDevCmd.bat")
+CMD+=('&&' cd "$(cygpath -w "$BUILD")")
+CMD+=('&&' "$(cygpath -w "${CMAKE}.exe")" "${CMAKE_OPTIONS[@]}")
+CMD+=('&&' "$(cygpath -w "${NINJA}.exe")" lldb finish_swig)
# Too large and missing site-packages - http://llvm.org/pr24378
#CMD+=('&&' "$NINJA" install)
-PATH="$(cygpath -up "$(dirname "$NINJA")"';C:\Windows\system32')" "${CMD[@]}"
+PATH="$(cygpath -u 'C:\Windows\System32')" "${CMD[@]}"
-mkdir -p "$INSTALL"'\bin' "$INSTALL"'\lib' "$INSTALL"'\include\lldb'
-cp -a "$BUILD"'\bin\'{lldb.exe,liblldb.dll} "$INSTALL"'\bin\'
-cp -a "$PRE"'\python\windows-x86\x86\python27.dll' "$INSTALL"'\bin\'
-cp -a "$BUILD"'\lib\'{liblldb.lib,site-packages} "$INSTALL"'\lib\'
-cp -a "$LLDB"'\include\lldb\API' "$INSTALL"'\include\lldb\'
+mkdir -p "$INSTALL/host/bin" "$INSTALL/host/lib" "$INSTALL/host/include/lldb"
+cp -a "$BUILD/bin/"{lldb.exe,liblldb.dll} "$INSTALL/host/bin/"
+cp -a "$PYTHON_DIR/x86/python27.dll" "$INSTALL/host/bin/"
+cp -a "$BUILD/lib/"{liblldb.lib,site-packages} "$INSTALL/host/lib/"
+cp -a "$PYTHON_DIR/x86/Lib/"* "$INSTALL/host/lib/"
+cp -a "$LLDB/include/lldb/"{API,Utility,lldb-*.h} "$INSTALL/host/include/lldb/"
-mkdir -p "$DEST"
-(cd "$INSTALL" && zip -r "$DEST"'\'lldb-windows-${BNUM}.zip .)
+find "$INSTALL/host/include/lldb" -name 'lldb-private*.h' -delete
+
+unset PRUNE
+PRUNE+=(-name '*.pyc')
+PRUNE+=(-or -name 'plat-*')
+PRUNE+=(-or -name 'distutils')
+PRUNE+=(-or -name 'idlelib')
+PRUNE+=(-or -name 'lib2to3')
+PRUNE+=(-or -name 'test')
+PRUNE+=(-or -name 'unittest')
+find "$INSTALL/host/lib/" '(' "${PRUNE[@]}" ')' -prune -exec rm -r {} +
+
+(cd "$INSTALL/host" && zip -r "$DEST/lldb-windows-${BNUM}.zip" .)
diff --git a/build.sh b/build.sh
index a5a5662..a5d5c31 100755
--- a/build.sh
+++ b/build.sh
@@ -1,4 +1,72 @@
#!/bin/bash
-# delete this script once the build servers are pointing directly to
-# external/lldb-utils/build-linux.sh
-external/lldb-utils/build-linux.sh $@
+# Expected arguments:
+# $1 = out_dir
+# $2 = dest_dir
+# $3 = build_number
+
+# exit on error
+set -e
+
+# calculate the root directory from the script path
+# this script lives two directories down from the root
+# external/lldb-utils/build.sh
+ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+cd "$ROOT_DIR"
+
+function die() {
+ echo "$*" > /dev/stderr
+ echo "Usage: $0 <out_dir> <dest_dir> <build_number>" > /dev/stderr
+ exit 1
+}
+
+(($# > 3)) && die "[$0] Unknown parameter: $4"
+
+OUT="$1"
+DEST="$2"
+BNUM="$3"
+
+[ ! "$OUT" ] && die "## Error: Missing out folder"
+[ ! "$DEST" ] && die "## Error: Missing destination folder"
+[ ! "$BNUM" ] && die "## Error: Missing build number"
+
+mkdir -p "$OUT" "$DEST"
+OUT="$(cd "$OUT" && pwd)"
+DEST="$(cd "$DEST" && pwd)"
+
+cat <<END_INFO
+## Building android-studio ##
+## Out Dir : $OUT
+## Dest Dir : $DEST
+## Build Num: $BNUM
+
+END_INFO
+
+LLVM="$ROOT_DIR/external/llvm"
+LLDB="$ROOT_DIR/external/lldb"
+CLANG="$ROOT_DIR/external/clang"
+
+case "$(uname -s)" in
+ Linux) OS=linux;;
+ Darwin) OS=darwin;;
+ *_NT-*) OS=windows;;
+esac
+
+PREBUILTS="$ROOT_DIR/prebuilts"
+NINJA="$PREBUILTS/ninja/${OS}-x86/ninja"
+CMAKE="$PREBUILTS/cmake/${OS}-x86/bin/cmake"
+SWIG_DIR="$PREBUILTS/swig/${OS}-x86"
+PYTHON_DIR="$PREBUILTS/python/${OS}-x86"
+
+export SWIG_LIB="$SWIG_DIR/share/swig/2.0.11"
+
+BUILD="$OUT/lldb/host"
+INSTALL="$OUT/lldb/install"
+rm -rf "$BUILD" "$INSTALL"
+mkdir -p "$BUILD" "$INSTALL"
+
+source "$ROOT_DIR/external/lldb-utils/build-${OS}.sh"
+
+if [ $OS == linux ]; then
+ source "$ROOT_DIR/external/lldb-utils/build-android.sh"
+ (cd "$LLDB" && zip --symlinks -r "$DEST/lldb-tests-${BNUM}.zip" test resources)
+fi
diff --git a/prebuilts/build-all.sh b/prebuilts/build-all.sh
index a8cc85d..da2df51 100755
--- a/prebuilts/build-all.sh
+++ b/prebuilts/build-all.sh
@@ -4,3 +4,5 @@
./build-swig.sh
./build-cmake.sh
./build-ninja.sh
+./build-glog.sh
+./build-protobuf.sh
diff --git a/prebuilts/build-cmake.sh b/prebuilts/build-cmake.sh
index 265d48b..a202fab 100755
--- a/prebuilts/build-cmake.sh
+++ b/prebuilts/build-cmake.sh
@@ -1,10 +1,10 @@
#!/bin/bash -ex
-# latest version of this file can be found at
+# latest version of this file can be found at
# https://android.googlesource.com/platform/external/lldb-utils
#
# Download & build cmake on the local machine
# works on Linux, OSX, and Windows (Git Bash)
-# leaves output in /tmp/cmake-build/install/
+# leaves output in /tmp/prebuilts/cmake/$OS-x86
# cmake must be installed on Windows
PROJ=cmake
diff --git a/prebuilts/build-common.sh b/prebuilts/build-common.sh
index 8c7eeb2..6189069 100755
--- a/prebuilts/build-common.sh
+++ b/prebuilts/build-common.sh
@@ -1,64 +1,56 @@
-# latest version of this file can be found at
-# https://android.googlesource.com/platform/external/lldb-utils
+# latest version of this file can be found at
+# sso://googleplex-android/platform/external/lldb-utils
#
# inputs
-# $PROJ - project name (cmake|ninja|swig)
+# $PROJ - project name
# $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
-
-#
+# 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)"
+SCRATCH=/tmp
+UPSTREAM=sso://googleplex-android/platform/prebuilts
case "$UNAME" in
Linux)
- SCRATCH=/tmp
OS='linux'
INSTALL_VER=$VER
;;
Darwin)
- SCRATCH=/tmp
OS='darwin'
- OSX_MIN=10.6
+ OSX_MIN=10.8
+ export CC=clang
+ export CXX=$CC++
export CFLAGS="$CFLAGS -mmacosx-version-min=$OSX_MIN"
- export CXXFLAGS="$CXXFLAGS -mmacosx-version-min=$OSX_MIN"
+ export CXXFLAGS="$CXXFLAGS -mmacosx-version-min=$OSX_MIN -stdlib=libc++"
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"
- 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;"
+ devenv() {
+ cmd /c "${VS120COMNTOOLS}VsDevCmd.bat" '&' devenv.com "$@"
+ }
INSTALL_VER=${VER}_${MSVS}
;;
*)
@@ -79,7 +71,7 @@
# OSX lacks a "realpath" bash command
realpath() {
- [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
+ [[ "$1" == /* ]] && echo "$1" || echo "$PWD/${1#./}"
}
SCRIPT_FILE=$(realpath "$0")
@@ -95,31 +87,40 @@
# clone prebuilt gcc
case "$OS" in
linux)
- GCC_DIR=$RD/gcc
- GCC_LIB=$GCC_DIR/lib/gcc/x86_64-linux/4.8 # crtbegin.o and libgcc.a
- GCC_LIB2=$GCC_DIR/x86_64-linux/lib64 # libgcc_s.so
-
# can't get prebuilt clang working so we're using host clang-3.5 https://b/22748915
+ #CLANG_DIR=$RD/clang
+ #git clone $UPSTREAM/clang/linux-x86/host/3.6 $CLANG_DIR
+ #export CC="$CLANG_DIR/bin/clang"
+ #export CXX="$CC++"
export CC=clang-3.5
export CXX=clang++-3.5
- export CFLAGS="$CFLAGS -fuse-ld=gold --sysroot $GCC_DIR/sysroot -B$GCC_LIB"
- export CXXFLAGS="$CFLAGS -Ix86_64-linux/include/c++/4.8 -Ix86_64-linux/include/x86_64-linux/c++/4.8"
- export LDFLAGS="$LDFLAGS -m64 --sysroot $GCC_DIR/sysroot -L$GCC_LIB -L$GCC_LIB2"
- # lldb uses at least one function from glibc2.12
- git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 $GCC_DIR
+
+ GCC_DIR=$RD/gcc
+ git clone $UPSTREAM/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 $GCC_DIR
+
+ find "$GCC_DIR" -name x86_64-linux -exec ln -fns {} {}-gnu \;
+
+ FLAGS+=(-fuse-ld=gold)
+ FLAGS+=(--gcc-toolchain="$GCC_DIR")
+ FLAGS+=(--sysroot "$GCC_DIR/sysroot")
+ FLAGS+=(-B"$GCC_DIR/bin/x86_64-linux-")
+ export CFLAGS="$CFLAGS ${FLAGS[*]}"
+ export CXXFLAGS="$CXXFLAGS ${FLAGS[*]}"
+ export LDFLAGS="$LDFLAGS -m64"
;;
esac
commit_and_push()
{
+ BRANCH=studio-master-dev
# 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 clone $UPSTREAM/$PROJ/$OS-x86 -b $BRANCH
GIT_REPO="$SCRATCH/prebuilts/$PROJ/$OS-x86"
cd $GIT_REPO
- git rm -r * || true # ignore error caused by empty directory
+ rm -rf *
mv $INSTALL/* $GIT_REPO
cp $SCRIPT_FILE $GIT_REPO
cp $COMMON_FILE $GIT_REPO
@@ -128,7 +129,7 @@
git commit -m "Adding binaries for $INSTALL_VER"
# execute this command to upload
- #git push origin HEAD:refs/for/master
+ #git push origin HEAD:refs/for/$BRANCH
- rm -rf $RD || true # ignore error
+ rm -rf $RD
}
diff --git a/prebuilts/build-editline.sh b/prebuilts/build-editline.sh
index cccb8af..9fb79fc 100755
--- a/prebuilts/build-editline.sh
+++ b/prebuilts/build-editline.sh
@@ -1,10 +1,10 @@
#!/bin/bash -ex
-# latest version of this file can be found at
+# latest version of this file can be found at
# https://android.googlesource.com/platform/external/lldb-utils
#
-# Download & build swig on the local machine
+# Download & build libedit on the local machine
# works on Linux, OSX, and Windows (Cygwin)
-# leaves output in /tmp/prebuilts/install/
+# leaves output in /tmp/prebuilts/libedit/$OX-x86
# cmake must be installed on Windows
PROJ=libedit
diff --git a/prebuilts/build-glog.sh b/prebuilts/build-glog.sh
new file mode 100755
index 0000000..a8802e4
--- /dev/null
+++ b/prebuilts/build-glog.sh
@@ -0,0 +1,48 @@
+#!/bin/bash -ex
+# latest version of this file can be found at
+# https://android.googlesource.com/platform/external/lldb-utils
+#
+# Download & build glog on the local machine
+# works on Linux, OS X, and Windows (Cygwin)
+# leaves output in /tmp/prebuilts/libglog/$OS-x86
+
+PROJ=libglog
+VER=0.3.4
+MSVS=2013
+
+source $(dirname "$0")/build-common.sh build-common.sh
+
+BASE=${PROJ#lib}-$VER
+TGZ=v${VER}.tar.gz
+
+curl -L https://github.com/google/glog/archive/$TGZ -o $TGZ
+
+tar xzf $TGZ || cat $TGZ # if this fails, we're probably getting an http error
+cd $BASE
+case "$OS" in
+ windows)
+ devenv google-glog.sln /Upgrade
+ devenv google-glog.sln /Build Debug
+ devenv google-glog.sln /Build Release
+ cp -a Debug $INSTALL/
+ cp -a Release $INSTALL/
+ mkdir -p $INSTALL/include
+ cp -a src/windows/glog $INSTALL/include/
+ ;;
+ linux|darwin)
+ mkdir $RD/build
+ cd $RD/build
+ $RD/$BASE/configure --prefix=$INSTALL
+ make -j$CORES
+ make install
+ ;;
+esac
+
+case "$OS" in
+ darwin)
+ LIB=lib/libglog.0.dylib
+ install_name_tool -id @executable_path/../$LIB $INSTALL/$LIB
+ ;;
+esac
+
+commit_and_push
diff --git a/prebuilts/build-ninja.sh b/prebuilts/build-ninja.sh
index 720c732..9fa535b 100755
--- a/prebuilts/build-ninja.sh
+++ b/prebuilts/build-ninja.sh
@@ -1,5 +1,5 @@
#!/bin/bash -ex
-# latest version of this file can be found at
+# latest version of this file can be found at
# https://android.googlesource.com/platform/external/lldb-utils
#
# Download & build ninja on the local machine
diff --git a/prebuilts/build-protobuf.sh b/prebuilts/build-protobuf.sh
new file mode 100755
index 0000000..d72b998
--- /dev/null
+++ b/prebuilts/build-protobuf.sh
@@ -0,0 +1,65 @@
+#!/bin/bash -ex
+# latest version of this file can be found at
+# https://android.googlesource.com/platform/external/lldb-utils
+#
+# Download & build protobuf on the local machine
+# works on Linux, OS X, and Windows (Cygwin)
+# leaves output in /tmp/prebuilts/libprotobuf/$OS-x86
+# requires autoconf, automake, libtool, chrpath
+
+PROJ=libprotobuf
+VER=2.6.1
+MSVS=2013
+
+source $(dirname "$0")/build-common.sh build-common.sh
+
+BASE=${PROJ#lib}-$VER
+TGZ=v${VER}.tar.gz
+
+curl -L https://github.com/google/protobuf/archive/$TGZ -o $TGZ
+
+tar xzf $TGZ || cat $TGZ # if this fails, we're probably getting an http error
+cd $BASE
+./autogen.sh
+
+case "$OS" in
+ windows)
+ cd vsprojects
+ sed -i 's/\(IntermediateDirectory=\)".*"/\1"$(OutDir)$(ProjectName)"/' *.vcproj
+ devenv protobuf.sln /Upgrade
+ devenv protobuf.sln /Build Debug
+ devenv protobuf.sln /Build Release
+ mkdir -p $INSTALL/Debug $INSTALL/Release
+ cp -a Debug/*.* $INSTALL/Debug
+ cp -a Release/*.* $INSTALL/Release
+ cmd /c extract_includes.bat
+ cp -a include $INSTALL/
+ ;;
+ linux|darwin)
+ mkdir $RD/build
+ cd $RD/build
+ $RD/$BASE/configure --prefix=$INSTALL
+ make -j$CORES
+ make install
+ ;;
+esac
+
+case "$OS" in
+ linux)
+ for TARGET in $INSTALL/{bin/protoc,lib/libprotoc.so}; do
+ chrpath -r '$ORIGIN/../lib' $TARGET
+ done
+ ;;
+ darwin)
+ for LIB in lib/libproto{c,buf{,-lite}}.9.dylib; do
+ install_name_tool -id @executable_path/../$LIB $INSTALL/$LIB
+ for TARGET in $INSTALL/{bin/protoc,lib/libprotoc.dylib}; do
+ ABSOLUTE=$INSTALL/$LIB
+ RELATIVE=@executable_path/../$LIB
+ install_name_tool -change $ABSOLUTE $RELATIVE $TARGET
+ done
+ done
+ ;;
+esac
+
+commit_and_push
diff --git a/prebuilts/build-python.sh b/prebuilts/build-python.sh
index 704ad51..99f074b 100755
--- a/prebuilts/build-python.sh
+++ b/prebuilts/build-python.sh
@@ -1,10 +1,10 @@
#!/bin/bash -ex
-# latest version of this file can be found at
+# latest version of this file can be found at
# https://android.googlesource.com/platform/external/lldb-utils
#
-# Download & build swig on the local machine
+# Download & build python on the local machine
# works on Linux, OSX, and Windows (Cygwin)
-# leaves output in /tmp/prebuilts/install/
+# leaves output in /tmp/prebuilts/python/$OS-x86
PROJ=python
VER=2.7.10
@@ -21,12 +21,12 @@
case "$OS" in
windows)
cp PC/pyconfig.h Include
- devenv.com PCbuild/pcbuild.sln /Upgrade
+ devenv PCbuild/pcbuild.sln /Upgrade
# some projects will fail and that's okay
- devenv.com PCbuild/pcbuild.sln /Build Debug /Out log.txt || egrep -c "========== Build: 18 succeeded, 7 failed, 0 up-to-date, 1 skipped ==========" log.txt
- devenv.com PCbuild/pcbuild.sln /Build Release /Out log.txt || egrep -c "========== Build: 17 succeeded, 7 failed, 1 up-to-date, 1 skipped ==========" log.txt
- devenv.com PCbuild/pcbuild.sln /Build "Release|x64" /Out log.txt || egrep -c "========== Build: 16 succeeded, 7 failed, 2 up-to-date, 1 skipped ==========" log.txt
- devenv.com PCbuild/pcbuild.sln /Build "Debug|x64" /Out log.txt || egrep -c "========== Build: 16 succeeded, 7 failed, 2 up-to-date, 1 skipped ==========" log.txt
+ devenv PCbuild/pcbuild.sln /Build Debug /Out log.txt || egrep -c "========== Build: 18 succeeded, 7 failed, 0 up-to-date, 1 skipped ==========" log.txt
+ devenv PCbuild/pcbuild.sln /Build Release /Out log.txt || egrep -c "========== Build: 17 succeeded, 7 failed, 1 up-to-date, 1 skipped ==========" log.txt
+ devenv PCbuild/pcbuild.sln /Build "Release|x64" /Out log.txt || egrep -c "========== Build: 16 succeeded, 7 failed, 2 up-to-date, 1 skipped ==========" log.txt
+ devenv PCbuild/pcbuild.sln /Build "Debug|x64" /Out log.txt || egrep -c "========== Build: 16 succeeded, 7 failed, 2 up-to-date, 1 skipped ==========" log.txt
curl -L http://llvm.org/svn/llvm-project/lldb/trunk/scripts/install_custom_python.py -o install_custom_python.py
python install_custom_python.py --source "$(cygpath -w $RD/Python-$VER)" --dest "$(cygpath -w $INSTALL)" --overwrite --silent
;;
@@ -34,11 +34,13 @@
# can't get prebuilt clang working https://b/22748915
mkdir $RD/build
cd $RD/build
- $RD/$BASE/configure --prefix=$INSTALL --enable-shared
+ $RD/$BASE/configure --prefix=$INSTALL --enable-unicode=ucs4 --enable-shared
make -j$CORES
make install
;;
esac
+find $INSTALL '(' -name '*.pyc' -or -name '*.pyo' ')' -exec rm {} +
+
commit_and_push
diff --git a/prebuilts/build-swig.sh b/prebuilts/build-swig.sh
index 74aed98..9a7f0bb 100755
--- a/prebuilts/build-swig.sh
+++ b/prebuilts/build-swig.sh
@@ -1,10 +1,10 @@
#!/bin/bash -ex
-# latest version of this file can be found at
+# latest version of this file can be found at
# https://android.googlesource.com/platform/external/lldb-utils
#
# Download & build swig on the local machine
# works on Linux, OSX, and Windows (Cygwin w/make 4.1, curl, gcc 4.9.2)
-# leaves output in /tmp/prebuilts/install/
+# leaves output in /tmp/prebuilts/swig/$OS-x86
# cmake must be installed on Windows
PROJ=swig