#!/bin/bash -e
source version
# Copy binaries
for b in bin/*; do
file=`basename $b`
# Don't copy symlinks like clang++ or directories
if test -h $b || test -d $b; then
echo Skipping $file
else
echo Copying $file
cp -a `find ${ANDROID_HOST_OUT}/bin -name $file` $b
strip $b
fi
done
# Copy license files.
# Need to make sure we get all the MODULE_LICENSE_* files used and concatenate
# all the NOTICE files (all of which differ slightly).
cp -a ${ANDROID_BUILD_TOP}/external/clang/MODULE_LICENSE_* .
cp -a ${ANDROID_BUILD_TOP}/external/llvm/MODULE_LICENSE_* .
cp -a ${ANDROID_BUILD_TOP}/external/compiler-rt/MODULE_LICENSE_* .
cp -a ${ANDROID_BUILD_TOP}/external/libcxx/MODULE_LICENSE_* .
cp -a ${ANDROID_BUILD_TOP}/external/libcxxabi/MODULE_LICENSE_* .
cp -a ${ANDROID_BUILD_TOP}/external/clang/NOTICE .
echo >> NOTICE
cat ${ANDROID_BUILD_TOP}/external/llvm/NOTICE >> NOTICE
echo >> NOTICE
cat ${ANDROID_BUILD_TOP}/external/libcxx/NOTICE >> NOTICE
echo >> NOTICE
cat ${ANDROID_BUILD_TOP}/external/libcxxabi/NOTICE >> NOTICE
echo >> NOTICE
cat ${ANDROID_BUILD_TOP}/external/compiler-rt/NOTICE >> NOTICE
# Copy static analyzer scripts.
echo Copying static analyzer tools
rm -rf tools/*
mkdir -p tools
cp -ar ${ANDROID_BUILD_TOP}/external/clang/tools/scan-build tools
cp -ar ${ANDROID_BUILD_TOP}/external/clang/tools/scan-view tools
# Copy libraries
echo Copying libc++.so
cp -a ${ANDROID_HOST_OUT}/lib/libc++.so lib/
cp -a ${ANDROID_HOST_OUT}/lib64/libc++.so lib64/
# Copy LLVMgold.so and dependents
cp -a ${ANDROID_HOST_OUT}/lib64/LLVMgold.so lib/
cp -a ${ANDROID_HOST_OUT}/lib64/libLLVM.so lib64/
# Copy header files
#rm -rf lib/clang/*/include/*
rm -rf lib/clang/*
mkdir -p lib/clang/${MAJOR}.${MINOR}/include
mkdir -p lib/clang/${MAJOR}.${MINOR}/lib/linux
for i in `find ${ANDROID_BUILD_TOP}/external/clang/lib/Headers -mindepth 1 ! -name \*.mk -a ! -name Makefile -a ! -name CMakeLists.txt`; do
echo Copying `basename $i`
cp -a $i lib/clang/*/include/
done
# Copy over stdatomic.h from bionic
echo Copying stdatomic.h
cp -a ${ANDROID_BUILD_TOP}/bionic/libc/include/stdatomic.h lib/clang/*/include/
echo Copying arm_neon.h
cp -a `find ${ANDROID_PRODUCT_OUT} -name arm_neon.h | head -n 1` lib/clang/*/include
function copy_profile_rt() {
target=$1
arch=$2
obj=${ANDROID_BUILD_TOP}/out/target/product/${target}/obj/STATIC_LIBRARIES
libdir=$(echo lib/clang/*)/lib/linux
lib=${libdir}/libclang_rt.profile-${arch}-android.a
cp -a ${obj}/libprofile_rt_intermediates/libprofile_rt.a ${lib}
}
function copy_host_profile_rt() {
arch=$1
obj_suffix=$2
obj=${ANDROID_BUILD_TOP}/out/host/linux-x86/obj$obj_suffix/STATIC_LIBRARIES
libdir=$(echo lib/clang/*)/lib/linux
lib=${libdir}/libclang_rt.profile-${arch}.a
cp -a ${obj}/libprofile_rt_intermediates/libprofile_rt.a ${lib}
}
copy_profile_rt generic arm
copy_profile_rt generic_arm64 aarch64
copy_profile_rt generic_mips mipsel
copy_profile_rt generic_mips64 mips64el
copy_profile_rt generic_x86 i686
copy_profile_rt generic_x86_64 x86_64
copy_host_profile_rt x86_64
copy_host_profile_rt i686 32
sh update-sanitizers.sh
# Create symlink for appropriately versioned clang
cd lib/clang/
ln -s ${MAJOR}.${MINOR} ${MAJOR}.${MINOR}.${PATCH}
cd -