代码拉取完成,页面将自动刷新
#!/bin/bash
set -e
ROOT_DIR=$(cd "$(dirname $0)"; pwd)
SUB_LLVM_DIR=${ROOT_DIR}/fe/llvm-project
SUB_LLVM_BUILD_DIR=${SUB_LLVM_DIR}/build
SUB_LLVM_INSTALL_DIR=${SUB_LLVM_DIR}/install
SUB_OAC_DIR=${ROOT_DIR}/compiler/OpenArkCompiler
TARGET=${SUB_OAC_DIR}/tools/clang+llvm-15.0.4-x86_64-linux-gnu-ubuntu-18.04-enhanced
THREADS=$(cat /proc/cpuinfo | grep -c processor) # FIXME: this does not work for macos
function build_llvm() {
# TODO: provide debug&release mode
cd ${SUB_LLVM_DIR}
if [ -d "./build" ]
then
echo "./build folder already exists"
echo "Use previously built clang"
cd build
make -j${THREADS} | tee ${ROOT_DIR}/build_llvm.log
mkdir -p install
make install
else
mkdir -p build
mkdir -p install
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install/ -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_USE_LINKER=gold -DLLVM_BUILD_DOCS=Off -DLLVM_ENABLE_BINDINGS=Off -G "Unix Makefiles" ../llvm
make -j${THREADS} | tee ${ROOT_DIR}/build_llvm.log
make install
fi
}
function copy_files() {
mkdir -p ${TARGET}/bin
cp -r ${SUB_LLVM_DIR}/install/bin/* ${TARGET}/bin/
cp -r ${SUB_LLVM_DIR}/build/bin/FileCheck ${TARGET}/bin/
cp -r ${SUB_LLVM_DIR}/install/include ${TARGET}
cp -r ${SUB_LLVM_DIR}/install/lib ${TARGET}
cp -r ${SUB_LLVM_DIR}/install/libexec ${TARGET}
cp -r ${SUB_LLVM_DIR}/install/share ${TARGET}
}
function build_oac() {
cd ${SUB_OAC_DIR}
source build/envsetup.sh arm release
make setup
make | tee ${ROOT_DIR}/build_oac.log
}
function copy_output() {
mkdir -p ${ROOT_DIR}/output/
cp -r ${SUB_LLVM_INSTALL_DIR}/* ${ROOT_DIR}/output/
cp -r ${SUB_OAC_DIR}/output/aarch64-clang-release/bin/* ${ROOT_DIR}/output/bin
}
function update_submodule() {
cd ${ROOT_DIR}
# update with remote repos:
# bisheng_c_language_dep/OpenArkCompiler:bsc
# bisheng_c_language_dep/llvm-project:bishengc/15.0.4
git submodule update --init --remote --progress
}
function main() {
echo "Start Building"
echo $(pwd)
update_submodule
build_llvm
copy_files
build_oac
copy_output
echo "Built Successfully"
}
main "$@"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。