blob: 0ec2af3aeb0c5faea20d4128d07b0de0c49ad00c [file] [log] [blame]
#!/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
export PATH="/usr/bin:/bin"
CONFIG=Release
unset LLDB_FLAGS
unset LLDB_LINKER_FLAGS
unset CMAKE_OPTIONS
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)
# Necessary because clang recognizes x86_64-linux-gnu
# as a valid gcc toolchain but not x86_64-linux.
find "$TOOLCHAIN" -name x86_64-linux -exec ln -fns {} {}-gnu \;
LLDB_FLAGS+=(--gcc-toolchain="$TOOLCHAIN")
LLDB_FLAGS+=(--sysroot="$TOOLCHAIN/sysroot")
# Prefix for gcc, ld, etc.
LLDB_FLAGS+=(-B"$TOOLCHAIN/bin/x86_64-linux-")
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+=(-DCMAKE_MAKE_PROGRAM="$NINJA")
CMAKE_OPTIONS+=(-DCMAKE_BUILD_TYPE=$CONFIG)
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="$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
# install target builds/installs 5G of stuff we don't need
#"$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*,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/"
find "$INSTALL/host/include/lldb" -name 'lldb-private*.h' -delete
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 {} +
(cd "$INSTALL/host" && zip --symlinks -r "$DEST/lldb-linux-${BNUM}.zip" .)