229 lines
8.5 KiB
Bash
229 lines
8.5 KiB
Bash
#!/bin/bash
|
|
# Perform PL/Java lib installation.
|
|
# Copyright (c) Huawei Technologies Co., Ltd. 2010-2018. All rights reserved.
|
|
# description: the script that make install pljava libs
|
|
# date: 2019-5-16
|
|
# modified:
|
|
# version: 1.0
|
|
# history:
|
|
|
|
WORK_PATH="$(dirname ${0})"
|
|
source "${WORK_PATH}/build_global.sh"
|
|
|
|
#######################################################################
|
|
# build and install component
|
|
#######################################################################
|
|
function build_llvm()
|
|
{
|
|
|
|
cd ${LOCAL_DIR}
|
|
if [ -d ${SOURCE_CODE_PATH} ]; then
|
|
rm -rf ${SOURCE_CODE_PATH}
|
|
fi
|
|
mkdir ${SOURCE_CODE_PATH}
|
|
tar -zxf $TAR_FILE_NAME -C $SOURCE_CODE_PATH --strip-components 1
|
|
cd ${LOCAL_DIR}/${SOURCE_CODE_PATH}
|
|
patch -p1 < ../CVE-2024-31852.patch
|
|
# patch -p1 < ../0001-llvm.patch
|
|
# patch -p1 < ../0002-llvm.patch
|
|
# patch -p1 < ../0003-llvm.patch
|
|
# patch -p1 < ../0004-llvm.patch
|
|
# patch -p1 < ../0005-llvm.patch
|
|
# patch -p1 < ../0006-llvm.patch
|
|
# if [ $? -ne 0 ]; then
|
|
# die "[Error] change dir to $SRC_DIR failed."
|
|
# fi
|
|
test -d build || mkdir build
|
|
rm -fr ./build/*
|
|
cd ./build
|
|
log "[Notice] llvm start configure"
|
|
echo ${COMPILE_TYPE_LIST}
|
|
for COMPILE_TYPE in ${COMPILE_TYPE_LIST}
|
|
do
|
|
case "${COMPILE_TYPE}" in
|
|
comm|llt|tool)
|
|
# when build with 'tool' option, LLVM libraries are required too.
|
|
mkdir -p ${LOCAL_DIR}/install_comm
|
|
log "[Notice] running cmake ..."
|
|
# sort the defined flags in alphabetic order
|
|
cmake -G "Unix Makefiles" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCLANG_INCLUDE_TESTS=OFF \
|
|
-DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_CHECK_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_EXTDEF_MAPPING_BUILD=OFF\
|
|
-DCLANG_TOOL_CLANG_FORMAT_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_RENAME_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_REFACTOR_BUILD=OFF \
|
|
-DCMAKE_C_FLAGS='-fno-aggressive-loop-optimizations -fexceptions' \
|
|
-DCMAKE_C_FLAGS_RELEASE='-O2 -DNDEBUG' \
|
|
-DCMAKE_CXX_FLAGS='-fno-aggressive-loop-optimizations -D_GLIBCXX_USE_CXX11_ABI=0 -fexceptions' \
|
|
-DCMAKE_CXX_FLAGS_RELEASE='-O2 -DNDEBUG' \
|
|
-DCMAKE_INSTALL_PREFIX=${LOCAL_DIR}/install_comm \
|
|
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
-DLLVM_ENABLE_BINDINGS=OFF \
|
|
-DLLVM_ENABLE_RTTI=ON \
|
|
-DLLVM_TARGETS_TO_BUILD=${BUILD_TARGET} \
|
|
-DLLVM_USE_PERF=ON \
|
|
../llvm
|
|
;;
|
|
sanitizer)
|
|
mkdir -p ${LOCAL_DIR}/install_comm
|
|
log "[Notice] running cmake ..."
|
|
# sort the defined flags in alphabetic order
|
|
cmake -G "Unix Makefiles" \
|
|
-DCMAKE_BUILD_TYPE=Debug \
|
|
-DCLANG_INCLUDE_TESTS=OFF \
|
|
-DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_CHECK_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_EXTDEF_MAPPING_BUILD=OFF\
|
|
-DCLANG_TOOL_CLANG_FORMAT_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_RENAME_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_REFACTOR_BUILD=OFF \
|
|
-DCMAKE_C_FLAGS='-fno-aggressive-loop-optimizations -fexceptions -static-libasan' \
|
|
-DCMAKE_C_FLAGS_RELEASE='-O0 -DDEBUG' \
|
|
-DCMAKE_CXX_FLAGS='-fno-aggressive-loop-optimizations -D_GLIBCXX_USE_CXX11_ABI=0 -fexceptions -static-libasan' \
|
|
-DCMAKE_CXX_FLAGS_RELEASE='-O0 -DDEBUG' \
|
|
-DCMAKE_INSTALL_PREFIX=${LOCAL_DIR}/install_comm \
|
|
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
-DLLVM_ENABLE_BINDINGS=OFF \
|
|
-DLLVM_ENABLE_RTTI=ON \
|
|
-DLLVM_TARGETS_TO_BUILD=${BUILD_TARGET} \
|
|
-DLLVM_USE_PERF=ON \
|
|
-DLLVM_USE_SANITIZER=Address \
|
|
../llvm
|
|
;;
|
|
*)
|
|
log "Internal Error: option processing error: $1"
|
|
log "please write right paramenter in ${CONFIG_FILE_NAME}"
|
|
die "[Error] llvm not supported build type."
|
|
exit 1
|
|
esac
|
|
|
|
if [ $? -ne 0 ]; then
|
|
die "[Error] llvm configure failed."
|
|
fi
|
|
log "[Notice] llvm End configure"
|
|
log "[Notice] llvm using \"${COMPILE_TYPE_LIST}\" Begin make"
|
|
make -s -j16
|
|
if [ $? -ne 0 ]; then
|
|
die "llvm make failed."
|
|
fi
|
|
log "[Notice] llvm End make"
|
|
|
|
log "[Notice] llvm using \"${COMPILE_TYPE_LIST}\" Begin make install"
|
|
make install
|
|
if [ $? -ne 0 ]; then
|
|
die "llvm make install failed."
|
|
fi
|
|
log "[Notice] llvm End make install"
|
|
# llvm has no distclean, using clean here.
|
|
make clean
|
|
done
|
|
}
|
|
|
|
function build_clang()
|
|
{
|
|
cd ${LOCAL_DIR}/${SOURCE_CODE_PATH}/
|
|
test -d build || mkdir build
|
|
rm -fr ./build/*
|
|
cd ./build
|
|
|
|
log "[Notice] clang start configure"
|
|
echo ${COMPILE_TYPE_LIST}
|
|
for COMPILE_TYPE in ${COMPILE_TYPE_LIST}
|
|
do
|
|
case "${COMPILE_TYPE}" in
|
|
comm|llt|sanitizer)
|
|
log "[Notice] null build action for clang ..."
|
|
return
|
|
;;
|
|
tool)
|
|
# No santizer on clang, too many issues with it
|
|
mkdir -p ${LOCAL_DIR}/install_comm
|
|
log "[Notice] running cmake ..."
|
|
# sort the defined flags in alphabetic order
|
|
cmake -G "Unix Makefiles" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCLANG_INCLUDE_TESTS=OFF \
|
|
-DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_CHECK_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_EXTDEF_MAPPING_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_FORMAT_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_RENAME_BUILD=OFF \
|
|
-DCLANG_TOOL_CLANG_REFACTOR_BUILD=OFF \
|
|
-DCLANG_PLUGIN_SUPPORT=OFF \
|
|
-DCMAKE_C_FLAGS='-fno-aggressive-loop-optimizations -fexceptions' \
|
|
-DCMAKE_C_FLAGS_RELEASE='-O2 -DNDEBUG' \
|
|
-DCMAKE_CXX_FLAGS='-fno-aggressive-loop-optimizations -D_GLIBCXX_USE_CXX11_ABI=0 -fexceptions' \
|
|
-DCMAKE_CXX_FLAGS_RELEASE='-O2 -DNDEBUG' \
|
|
-DCMAKE_INSTALL_PREFIX=${LOCAL_DIR}/install_tool \
|
|
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
-DLLVM_TARGETS_TO_BUILD=${BUILD_TARGET} \
|
|
-DLLVM_USE_PERF=ON \
|
|
../clang
|
|
;;
|
|
*)
|
|
log "Internal Error: option processing error: $1"
|
|
log "please write right paramenter in ${CONFIG_FILE_NAME}"
|
|
die "[Error] clang not supported build type."
|
|
exit 1
|
|
esac
|
|
|
|
if [ $? -ne 0 ]; then
|
|
die "[Error] clang configure failed."
|
|
fi
|
|
log "[Notice] clang End configure"
|
|
log "[Notice] clang using \"${COMPILE_TYPE_LIST}\" Begin make"
|
|
make -s -j16
|
|
if [ $? -ne 0 ]; then
|
|
die "clang make failed."
|
|
fi
|
|
log "[Notice] clang End make"
|
|
|
|
log "[Notice] clang using \"${COMPILE_TYPE_LIST}\" Begin make install"
|
|
make install
|
|
if [ $? -ne 0 ]; then
|
|
die "clang make install failed."
|
|
fi
|
|
log "[Notice] clang End make install"
|
|
|
|
make clean
|
|
done
|
|
}
|
|
|
|
function build_component()
|
|
{
|
|
build_llvm
|
|
|
|
export PATH=${LOCAL_DIR}/install_comm/bin:${PATH}
|
|
export LD_LIBRARY_PATH=${LOCAL_DIR}/install_comm/lib:${LD_LIBRARY_PATH}
|
|
build_clang
|
|
}
|
|
|
|
#######################################################################
|
|
# clean component
|
|
#######################################################################
|
|
function clean_component()
|
|
{
|
|
cd ${LOCAL_DIR}/${SOURCE_CODE_PATH}
|
|
if [ $? -ne 0 ]; then
|
|
die "[Error] cd ${LOCAL_DIR}/${SOURCE_CODE_PATH} failed."
|
|
fi
|
|
|
|
cd ${LOCAL_DIR}
|
|
if [ $? -ne 0 ]; then
|
|
die "[Error] cd ${LOCAL_DIR} failed."
|
|
fi
|
|
test -d "${SOURCE_CODE_PATH}/build" && rm -rf ${SOURCE_CODE_PATH}/build
|
|
rm -rf install_*
|
|
|
|
log "[Notice] llvm clean has been finished!"
|
|
}
|