From 6a5f9889697b39ce77fc5385c7e17226f154698c Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Wed, 5 Aug 2015 14:23:55 -0700 Subject: Update build-windows.sh. Change-Id: I15ff5e23c87fb5786aa058d94c4b42e381746549 (cherry picked from commit ef2d8c97f8491a78565215462c6fe08ae06e6694) --- build-windows.sh | 116 ++++++++++++++++++++++++++----------------------------- 1 file changed, 55 insertions(+), 61 deletions(-) diff --git a/build-windows.sh b/build-windows.sh index cbc2cfc..66654aa 100755 --- a/build-windows.sh +++ b/build-windows.sh @@ -1,20 +1,20 @@ #!/bin/bash # Expected arguments: # $1 = out_dir -# $2 = dist_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.sh -ROOT_DIR="$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")" +# external/lldb-utils/build-windows.sh +ROOT_DIR="$(cygpath -w "$(readlink -f "$(dirname "$0")/../..")")" +cd "$ROOT_DIR" function die() { echo "$*" > /dev/stderr @@ -22,72 +22,66 @@ function die() { exit 1 } -while [[ -n "$1" ]]; do - if [[ -z "$OUT" ]]; then - OUT="$1" - elif [[ -z "$DIST" ]]; then - DIST="$1" - elif [[ -z "$BNUM" ]]; then - BNUM="$1" - else - die "[$0] Unknown parameter: $1" - fi - shift -done - -if [[ -z "$OUT" ]]; then die "## Error: Missing out folder"; fi -if [[ -z "$DIST" ]]; then die "## Error: Missing destination folder"; fi -if [[ -z "$BNUM" ]]; then die "## Error: Missing build number"; fi +(($# > 3)) && die "[$0] Unknown parameter: $4" -cd "$ROOT_DIR" +OUT="$1" +DEST="$2" +BNUM="$3" -mkdir -p "$OUT" +[ ! "$OUT" ] && die "## Error: Missing out folder" +[ ! "$DEST" ] && die "## Error: Missing destination folder" +[ ! "$BNUM" ] && die "## Error: Missing build number" -echo "## Building android-studio ##" -echo "## Dest dir : $DIST" -echo "## Qualifier: $QUAL" -echo "## Build Num: $BNUM" -echo +OUT="$(cygpath -w "$(readlink -f "$OUT")")" +DEST="$(cygpath -w "$(readlink -f "$DEST")")" -mv external/clang external/llvm/tools/clang || true -mv external/lldb external/llvm/tools/lldb || true +cat < "$DIST/lldb-windows-$BNUM.zip" +unset CMAKE_OPTIONS +CMAKE_OPTIONS+=(-GNinja) +CMAKE_OPTIONS+=("$LLVM") +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") + +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+=('&&' "$NINJA" install) + +PATH="$(cygpath -up "$(dirname "$NINJA")"';C:\Windows\system32')" "${CMD[@]}" + +mkdir -p "$DEST" +(cd "$INSTALL" && zip -r "$DEST"'\'lldb-windows-${BNUM}.zip .) -- cgit v1.2.3 From cc5aaf1cc9af4e9371d7f0a25b7c44c09f4257c4 Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Wed, 5 Aug 2015 17:57:39 -0700 Subject: Replace `ninja install` with custom cp operations. - Reduce resulting zip size. - `ninja install` leaves out python site-packages. - Pull in prebuilt python. Change-Id: I1336a6a66f9ab155433b595fe5e4be2446450f0e (cherry picked from commit a9cdbdc24bf98a78d9a660f042c4d881e3ad2d9f) --- build-windows.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/build-windows.sh b/build-windows.sh index 66654aa..8073576 100755 --- a/build-windows.sh +++ b/build-windows.sh @@ -79,9 +79,17 @@ CMD+=(cmd /c 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.b CMD+=('&&' cd "$BUILD") CMD+=('&&' "$CMAKE" "${CMAKE_OPTIONS[@]}") CMD+=('&&' "$NINJA" lldb finish_swig) -CMD+=('&&' "$NINJA" install) + +# Too large and missing site-packages - http://llvm.org/pr24378 +#CMD+=('&&' "$NINJA" install) PATH="$(cygpath -up "$(dirname "$NINJA")"';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 "$DEST" (cd "$INSTALL" && zip -r "$DEST"'\'lldb-windows-${BNUM}.zip .) -- cgit v1.2.3 From 8d8ee0a762a52e0bbbfbee9fcf225282cde4a0a0 Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Tue, 4 Aug 2015 14:08:11 -0700 Subject: Update build-darwin.sh. Change-Id: Ibab9bb1b06edd9c793bed73b5071e74e168faa1b (cherry picked from commit 566d403b67bb5c7c463788491bd3b4194a73d31c) --- build-darwin.sh | 88 +++++++++++++++++++++++++-------------------------------- 1 file changed, 38 insertions(+), 50 deletions(-) diff --git a/build-darwin.sh b/build-darwin.sh index 66b2000..88baa2c 100755 --- a/build-darwin.sh +++ b/build-darwin.sh @@ -1,21 +1,17 @@ -#!/bin/bash -x +#!/bin/bash # Expected arguments: # $1 = out_dir -# $2 = dist_dir +# $2 = dest_dir # $3 = build_number # exit on error set -e -# OSX lacks a "realpath" bash command -realpath() { - [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" -} - # calculate the root directory from the script path # this script lives two directories down from the root -# external/lldb-utils/build.sh -ROOT_DIR="$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")" +# external/lldb-utils/build-darwin.sh +ROOT_DIR="$(readlink -f "$(dirname "$0")/../..")" +cd "$ROOT_DIR" function die() { echo "$*" > /dev/stderr @@ -23,56 +19,48 @@ function die() { exit 1 } -while [[ -n "$1" ]]; do - if [[ -z "$OUT" ]]; then - OUT="$1" - elif [[ -z "$DIST" ]]; then - DIST="$1" - elif [[ -z "$BNUM" ]]; then - BNUM="$1" - else - die "[$0] Unknown parameter: $1" - fi - shift -done - -if [[ -z "$OUT" ]]; then die "## Error: Missing out folder"; fi -if [[ -z "$DIST" ]]; then die "## Error: Missing destination folder"; fi -if [[ -z "$BNUM" ]]; then die "## Error: Missing build number"; fi +(($# > 3)) && die "[$0] Unknown parameter: $4" -cd "$ROOT_DIR" +OUT="$1" +DEST="$2" +BNUM="$3" -mkdir -p "$OUT" +[ ! "$OUT" ] && die "## Error: Missing out folder" +[ ! "$DEST" ] && die "## Error: Missing destination folder" +[ ! "$BNUM" ] && die "## Error: Missing build number" -echo "## Building android-studio ##" -echo "## Dest dir : $DIST" -echo "## Qualifier: $QUAL" -echo "## Build Num: $BNUM" -echo +OUT="$(readlink -f "$OUT")" +DEST="$(readlink -f "$DEST")" -ln -s ../../clang external/llvm/tools || true -ln -s ../llvm external/lldb || true +cat < "$DIST/lldb-mac-$BNUM.zip" +mkdir -p "$DEST" +(cd "$BUILD/$CONFIG" && zip -r --symlinks "$DEST/lldb-mac-${BNUM}.zip" lldb LLDB.framework) -- cgit v1.2.3 From ff8414c5941f44efa055a3ffeacb8176dac1fc61 Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Thu, 6 Aug 2015 12:15:31 -0700 Subject: Needs /usr/sbin/sysctl for number of cores. Change-Id: I003114bb2dec7bffa17f9c9af5f5c2e7c7c012f7 (cherry picked from commit b36cbdaca7a564ea66c41e0aa08c031afa12be15) --- build-darwin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-darwin.sh b/build-darwin.sh index 88baa2c..8ee0b66 100755 --- a/build-darwin.sh +++ b/build-darwin.sh @@ -48,7 +48,7 @@ ln -fns ../llvm "$LLDB/llvm" PRE="$ROOT_DIR/prebuilts" -export PATH="$PRE/swig/darwin-x86/bin:/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" CONFIG=Release -- cgit v1.2.3 From 280c5b1950d1823ad91256c407b2ee2f3c41b292 Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Mon, 10 Aug 2015 17:51:24 -0700 Subject: OS X readlink doesn't support -f. Change-Id: I870dca7fefd8843b9b2f5dda5b4f57655809269f (cherry picked from commit 52b042c3db919c4f09e4e42bf00a1a788fb2f41e) --- build-darwin.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/build-darwin.sh b/build-darwin.sh index 8ee0b66..4931155 100755 --- a/build-darwin.sh +++ b/build-darwin.sh @@ -7,10 +7,15 @@ # exit on error set -e +# OS X lacks a "realpath" bash command +realpath() { + [[ "$1" == /* ]] && echo "$1" || echo "$PWD/$1" +} + # 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="$(readlink -f "$(dirname "$0")/../..")" +ROOT_DIR="$(realpath "$(dirname "$0")/../..")" cd "$ROOT_DIR" function die() { @@ -29,8 +34,8 @@ BNUM="$3" [ ! "$DEST" ] && die "## Error: Missing destination folder" [ ! "$BNUM" ] && die "## Error: Missing build number" -OUT="$(readlink -f "$OUT")" -DEST="$(readlink -f "$DEST")" +OUT="$(realpath "$OUT")" +DEST="$(realpath "$DEST")" cat < Date: Thu, 30 Jul 2015 14:28:04 -0700 Subject: Update build-linux.sh. - Hermetically seal Linux build with prebuilt gcc toolchain. - Build lldb-server for x86, x86_64, arm, aarch64, mips, mips64. - Package with libtinfo, libedit, and libpython2.7. - Package lldb tests. Change-Id: Id4f3d64f8bf7163f6d8652d4e95a6e584f04fb96 (cherry picked from commit f8d03f109a9e02aa6d19b3e6a5cc4021bf5e1aff) --- build-linux.sh | 270 +++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 193 insertions(+), 77 deletions(-) diff --git a/build-linux.sh b/build-linux.sh index b547f08..4e065bf 100755 --- a/build-linux.sh +++ b/build-linux.sh @@ -1,7 +1,7 @@ #!/bin/bash # Expected arguments: # $1 = out_dir -# $2 = dist_dir +# $2 = dest_dir # $3 = build_number # exit on error @@ -9,8 +9,9 @@ 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="$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")" +# external/lldb-utils/build-linux.sh +ROOT_DIR="$(readlink -f "$(dirname "$0")/../..")" +cd "$ROOT_DIR" function die() { echo "$*" > /dev/stderr @@ -18,93 +19,208 @@ function die() { exit 1 } -while [[ -n "$1" ]]; do - if [[ -z "$OUT" ]]; then - OUT="$1" - elif [[ -z "$DIST" ]]; then - DIST="$1" - elif [[ -z "$BNUM" ]]; then - BNUM="$1" - else - die "[$0] Unknown parameter: $1" - fi - shift -done - -if [[ -z "$OUT" ]]; then die "## Error: Missing out folder"; fi -if [[ -z "$DIST" ]]; then die "## Error: Missing destination folder"; fi -if [[ -z "$BNUM" ]]; then die "## Error: Missing build number"; fi +(($# > 3)) && die "[$0] Unknown parameter: $4" -cd "$ROOT_DIR" +OUT="$1" +DEST="$2" +BNUM="$3" -mkdir -p "$OUT" +[ ! "$OUT" ] && die "## Error: Missing out folder" +[ ! "$DEST" ] && die "## Error: Missing destination folder" +[ ! "$BNUM" ] && die "## Error: Missing build number" -# Dependencies: -# build -# sudo apt-get libedit-dev ncurses-dev python-dev -# test -# sudo apt-get libstdc++-4.8-dev:i386 lib32stdc++6-4.8-dbg libc++-dev:amd64 libc++-dev:i386 +OUT="$(readlink -f "$OUT")" +DEST="$(readlink -f "$DEST")" -echo "## Building android-studio ##" -echo "## Dest dir : $DIST" -echo "## Qualifier: $QUAL" -echo "## Build Num: $BNUM" -echo +cat < "$DIST/lldb-linux-$BNUM.zip" +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" .) -- cgit v1.2.3