diff options
author | Bernhard Rosenkränzer <bero@lindev.ch> | 2018-08-02 17:22:39 +0200 |
---|---|---|
committer | Vishal Bhoj <vishal.bhoj@linaro.org> | 2018-08-26 12:23:32 +0000 |
commit | 63940175810a2264be7a62ab2d6193f119113dd1 (patch) | |
tree | 7b24eb85052ba8c5ee62fd10066d9c9533cb2b53 /android-clang-toolchain/builders.sh | |
parent | a5f99dee0a997c850fbbba1c5e0ad5183f25981c (diff) |
Rewrite the Android Clang toolchain builder
Rewrite the Android Clang toolchain builder to make use of upstream's
build scripts - some non-standard files (symbol map files for
compiler-rt and friends) generated by AOSP's builder are required by the
AOSP build process these days.
Change-Id: I955fc2ff16129c09f73c58b41a3f12f161398dd8
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
Diffstat (limited to 'android-clang-toolchain/builders.sh')
-rwxr-xr-x | android-clang-toolchain/builders.sh | 96 |
1 files changed, 39 insertions, 57 deletions
diff --git a/android-clang-toolchain/builders.sh b/android-clang-toolchain/builders.sh index 6527611dff..97295bade1 100755 --- a/android-clang-toolchain/builders.sh +++ b/android-clang-toolchain/builders.sh @@ -6,65 +6,47 @@ export PATH=$PATH://home/buildslave/bin/ sudo apt-get -q=2 update sudo apt-get -q=2 install -y libxml2-dev zlib1g-dev libtinfo-dev git-svn gawk libxml2-utils rsync pxz python-requests ninja-build -wget -q \ - https://cmake.org/files/v3.11/cmake-3.11.3-Linux-x86_64.sh +BASEDIR="${HOME}/srv/aosp/${JOB_NAME}" +rm -rf "${BASEDIR}" +mkdir -p "${BASEDIR}" +cd "${BASEDIR}" -yes y | bash cmake-3.11.3-Linux-x86_64.sh -export PATH=${PWD}/cmake-3.11.3-Linux-x86_64/bin/:${PATH} - -mkdir -p ${HOME}/srv/aosp/${JOB_NAME} -cd ${HOME}/srv/aosp/${JOB_NAME} - -# Toolchain src downloads -if [ -d llvm ]; then - rm llvm -rf -fi -repo init -u https://android-git.linaro.org/git/platform/manifest.git -b clang-build +# Download toolchain prebuilt bootstrap tools +repo init -u https://android-git.linaro.org/git/platform/manifest.git -b linaro-upstream-llvm-toolchain repo sync -j16 -c -# For building LLVMgold.so using -DLLVM_BINUTILS_INCDIR flag -if [ ! -d binutils ]; then - git clone https://android.googlesource.com/toolchain/binutils -else - cd binutils - git pull - cd .. -fi - -# Toolchain download -if [ ! -d clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04 ]; then - wget http://releases.llvm.org/6.0.0/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz - tar xvfJ clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz -fi - -# Temporary clang patch for 25b45aa81854313486df891985cdd7ef1ec09780 -# cd ${HOME}/srv/aosp/${JOB_NAME}/llvm/tools/clang -# git clone https://git.linaro.org/people/minseong.kim/aosp_patches_for_upstream_clang.git -# patch -p1 < aosp_patches_for_upstream_clang/revert_25b45a.patch -# cd ${HOME}/srv/aosp/${JOB_NAME} - -cd llvm -mkdir -p build/clang-master -cd build -cmake -G Ninja ../ \ - -DCMAKE_BUILD_TYPE=Release \ - -DPYTHON_EXECUTABLE=/usr/bin/python2 \ - -DCMAKE_INSTALL_PREFIX=./clang-master \ - -DLLVM_TARGETS_TO_BUILD="host;ARM;X86;AArch64;BPF;Hexagon" \ - -DLLVM_ENABLE_ASSERTIONS=false \ - -DCMAKE_C_COMPILER=${HOME}/srv/aosp/${JOB_NAME}/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang \ - -DCMAKE_CXX_COMPILER=${HOME}/srv/aosp/${JOB_NAME}/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++ \ - -DLIBCXXABI_LIBCXX_INCLUDES=${HOME}/srv/aosp/${JOB_NAME}/llvm/projects/libcxx/include \ - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${HOME}/srv/aosp/${JOB_NAME}/llvm/projects/libcxxabi/include \ - -DLLVM_BINUTILS_INCDIR=${HOME}/srv/aosp/${JOB_NAME}/binutils/binutils-2.27/include \ - -DLLVM_LIBDIR_SUFFIX=64 \ - -DCLANG_LIBDIR_SUFFIX=64 - -VERBOSE=1 ninja install -mkdir -p clang-master/prebuilt_include/llvm/lib/Fuzzer -cp -a ../projects/compiler-rt/lib/fuzzer/*.{h,def} clang-master/prebuilt_include/llvm/lib/Fuzzer/ - -rm -f clang-master.tar.xz -tar -I pxz -cf clang-master.tar.xz clang-master +# Apply needed patches, if any +for d in toolchain/patches/*; do + [ -d "$d" ] || continue + for i in $d/*.patch; do + [ -e "$i" ] || continue + p="$(realpath $i)" + pushd $(basename $d) + echo "Applying $(basename $p)" + patch -p1 <"$p" + popd + done +done + +# Find the SVN revision the compiler is based on +REVISION=0 +for i in clang clang-tools-extra compiler-rt libcxx libcxxabi lld llvm openmp_llvm; do + pushd toolchain/$i + REV=$(git log |grep git-svn-id: |head -n1 |cut -d@ -f2 |cut -d' ' -f1) + [ "$REV" -ge "$REVISION" ] && REVISION="$REV" + popd +done +echo "Building compiler based on clang revision $REVISION" + +# And give the build script the correct version information +sed -i -e "s,^svn_revision =.*,svn_revision = 'r${REVISION}'," toolchain/llvm_android/android_version.py + +# And build it... +python toolchain/llvm_android/build.py + +# Recompress output to save space +mv out/*.tar.bz2 . +bunzip2 *.tar.bz2 +xz -9ef *.tar echo "Build finished" |