From 740f2b842a90c34edfc0c0ee32b36fe57a9cb15a Mon Sep 17 00:00:00 2001 From: Jonathon Penix Date: Thu, 20 Nov 2025 20:36:37 -0800 Subject: [PATCH] Port workflow cleanup to our main branch This is basically a cherry-pick of 89bd2c00d0699d6cf12025ebb550c092bc2b8cac except without the nightly build workflow files and without the AArch64 cross build support. We're heading towards using a single script for everything in mainline so this sort of change needs to happen at some point. Plus, it makes a few patches that are still pending smaller and easier to port to the release branch. So, do this cleanup now. The nightly build workflow files and AArch64 cross build support are omitted as a) we aren't ready for nightly builds on mainline and b) we don't want the AArch64 cross builds on mainline. Signed-off-by: Jonathon Penix --- .github/workflows/base-build.yml | 42 +++ .github/workflows/pre-checkin.yml | 375 +------------------- qualcomm-software/embedded/scripts/build.sh | 22 +- 3 files changed, 56 insertions(+), 383 deletions(-) create mode 100644 .github/workflows/base-build.yml diff --git a/.github/workflows/base-build.yml b/.github/workflows/base-build.yml new file mode 100644 index 000000000000..adf2e5cbc65a --- /dev/null +++ b/.github/workflows/base-build.yml @@ -0,0 +1,42 @@ +name: base-build + +on: + workflow_call: + inputs: + build-script: + required: true + type: string + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: self-hosted + + steps: + - name: Cleanup workspace + shell: bash + run: | + set -euo pipefail + echo "Cleaning workspace: ${GITHUB_WORKSPACE}" + shopt -s dotglob nullglob + rm -rf "${GITHUB_WORKSPACE}/"* + rm -rf "${GITHUB_WORKSPACE}/"..?* + - name: Checkout source + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + ref: ${{ github.event.pull_request.head.sha || github.sha }} + path: src + clean: true + + - name: Build + shell: bash + run: | + set -euo pipefail + ${{ inputs.build-script }} diff --git a/.github/workflows/pre-checkin.yml b/.github/workflows/pre-checkin.yml index 666a9e5fac91..22effe76738f 100644 --- a/.github/workflows/pre-checkin.yml +++ b/.github/workflows/pre-checkin.yml @@ -1,373 +1,10 @@ name: pre-checkin -on: pull_request +on: + pull_request: jobs: - build: - runs-on: self-hosted - concurrency: - group: "${{ github.workflow }}-${{ github.event.pull_request.number }}" - cancel-in-progress: true - permissions: - contents: write - statuses: write - - env: - SRC_DIR: "${{ github.workspace }}/src" - BUILD_DIR: "${{ github.workspace }}/build" - INSTALL_DIR: "${{ github.workspace }}/install" - CCACHE_DIR: "/local/mnt/workspace/cpullvm_ccache/${{ github.event.pull_request.base.ref }}" - CCACHE_BASEDIR: "${{ github.workspace }}/pr-${{ github.event.number }}" - BUILD_MODE: "Release" - ASSERTION_MODE: "OFF" - ARM32_LINUX_TRIPLE: "arm-linux-gnueabi" - AARCH64_LINUX_TRIPLE: "aarch64-linux-gnu" - COMPILER_RT_ARM32_LINUX_BUILDDIR: "${{ github.workspace }}/build/compiler-rt/arm32/linux" - COMPILER_RT_AARCH64_LINUX_BUILDDIR: "${{ github.workspace }}/build/compiler-rt/aarch64/linux" - COMPILER_RT_ARM32_LINUX_FLAGS: "--target=arm-linux-gnueabi -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=neon" - COMPILER_RT_AARCH64_LINUX_FLAGS: "--sysroot=/usr/aarch64-linux-gnu --target=aarch64-linux-gnu -mcpu=cortex-a53" - ARM32_BM_TRIPLE: "arm-none-eabi" - AARCH64_BM_TRIPLE: "aarch64-none-elf" - COMPILER_RT_ARM32_BM_BUILDDIR: "${{ github.workspace }}/build/compiler-rt/arm32/baremetal" - COMPILER_RT_AARCH64_BM_BUILDDIR: "${{ github.workspace }}/build/compiler-rt/aarch64/baremetal" - COMPILER_RT_ARM32_BM_FLAGS: "--target=arm-none-eabi -mcpu=cortex-a9 -ffunction-sections -fdata-sections -mfloat-abi=softfp -mfpu=neon -nostdlibinc" - COMPILER_RT_AARCH64_BM_FLAGS: "--target=aarch64-none-elf -mcpu=cortex-a53 -ffunction-sections -fdata-sections -nostdlibinc" - - steps: - - name: Workspace Cleanup - shell: bash - run: | - echo "Clean workspace dir..." - rm -rf "${{ github.workspace }}"/* - - - name: Create source root - shell: bash - run: mkdir -p "${SRC_DIR}" - - - name: Checkout qualcomm/cpullvm-toolchain PR branch - uses: actions/checkout@v4 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - path: ${{ env.SRC_DIR }}/llvm-top - fetch-depth: 0 - - - name: Fetch musl-embedded - uses: actions/checkout@v4 - with: - repository: qualcomm/musl-embedded - path: ${{ env.SRC_DIR }}/musl-embedded - - - name: Fetch qualcomm/eld - uses: actions/checkout@v4 - with: - repository: qualcomm/eld - path: ${{ env.SRC_DIR }}/llvm-top/llvm/tools/eld - ref: 65ea860802c41ef5c0becff9750a350495de27b0 - - - name: Apply patches - shell: bash - run: | - python3 "${SRC_DIR}/llvm-top/qualcomm-software/embedded/tools/patchctl.py" apply -f "${SRC_DIR}/llvm-top/qualcomm-software/embedded/patchsets.yml" - - - name: Run CMake (LLVM) - shell: bash - run: | - mkdir -p "${BUILD_DIR}/llvm" - cd "${BUILD_DIR}/llvm" - mkdir -p "${CCACHE_DIR}" - ccache --zero-stats - ccache --set-config "max_size=50GB" "compression=true" - ccache --show-config - - cmake -G Ninja -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \ - -DLLVM_TARGETS_TO_BUILD="ARM;AArch64" \ - -DLLVM_EXTERNAL_PROJECTS=eld \ - -DLLVM_EXTERNAL_ELD_SOURCE_DIR="llvm-top/llvm/tools/eld" \ - -DLLVM_DEFAULT_TARGET_TRIPLE="aarch64-unknown-linux-gnueabi" \ - -DLLVM_TARGET_ARCH="arm-linux-gnueabi" \ - -DLLVM_LIT_ARGS="-v" -DLLVM_BUILD_RUNTIME="OFF" \ - -DLIBCLANG_BUILD_STATIC="ON" -DLLVM_POLLY_LINK_INTO_TOOLS="ON" \ - -DCMAKE_C_COMPILER_LAUNCHER="ccache" \ - -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \ - -DCMAKE_C_COMPILER="clang" -DCMAKE_CXX_COMPILER="clang++" \ - -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ - -DCMAKE_BUILD_TYPE="${BUILD_MODE}" \ - -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ - -DLLVM_ENABLE_PROJECTS="llvm;clang;polly;lld;mlir" \ - "${SRC_DIR}/llvm-top/llvm" - ninja - ninja install - - - name: llvm.tests - shell: bash - run: | - cd "${BUILD_DIR}/llvm" - export HOME=/tmp/home-dir - mkdir -p "$HOME" - ninja -v check-llvm - - - name: lld.tests - shell: bash - run: | - cd "${BUILD_DIR}/llvm" - ninja -v check-lld - - - name: polly.tests - shell: bash - run: | - cd "${BUILD_DIR}/llvm" - ninja -v check-polly - - - name: eld.tests - shell: bash - run: | - cd "${BUILD_DIR}/llvm" - ninja -v check-eld - - - name: clang.tests - shell: bash - run: | - cd "${BUILD_DIR}/llvm" - ninja -v check-clang - - - name: Compute clang RESOURCE_DIR - id: resource_dir - shell: bash - run: | - echo "value=$("${INSTALL_DIR}/bin/clang" -print-resource-dir)" >> "${GITHUB_OUTPUT}" - - - name: Compiler-rt arm-linux - shell: bash - env: - RESOURCE_DIR: "${{ steps.resource_dir.outputs.value }}" - run: | - mkdir -p "${COMPILER_RT_ARM32_LINUX_BUILDDIR}" - echo -e "\nCOMPILER_RT for arm-linux:" - cd "${COMPILER_RT_ARM32_LINUX_BUILDDIR}" - cmake -G Ninja \ - -DCMAKE_INSTALL_PREFIX="${RESOURCE_DIR}" \ - -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ - -DCMAKE_ASM_COMPILER_TARGET="${ARM32_LINUX_TRIPLE}" \ - -DCMAKE_C_COMPILER_TARGET="${ARM32_LINUX_TRIPLE}" \ - -DCMAKE_CXX_COMPILER_TARGET="${ARM32_LINUX_TRIPLE}" \ - -DCMAKE_C_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCMAKE_CXX_COMPILER="${INSTALL_DIR}/bin/clang++" \ - -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" \ - -DCMAKE_C_FLAGS="${COMPILER_RT_ARM32_LINUX_FLAGS}" \ - -DCMAKE_CXX_FLAGS="${COMPILER_RT_ARM32_LINUX_FLAGS}" \ - -DCMAKE_ASM_FLAGS="${COMPILER_RT_ARM32_LINUX_FLAGS}" \ - -DCMAKE_SYSTEM_NAME=Generic \ - -DCOMPILER_RT_BUILD_BUILTINS=ON \ - -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ - -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ - -DCOMPILER_RT_OS_DIR="linux" \ - -DCOMPILER_RT_TEST_TARGET_TRIPLE="${ARM32_LINUX_TRIPLE}" \ - -DCOMPILER_RT_TEST_COMPILER_CFLAGS="${COMPILER_RT_ARM32_LINUX_FLAGS}" \ - -DCOMPILER_RT_TEST_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCMAKE_BUILD_TYPE="${BUILD_MODE}" \ - -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ - -DCXX_SUPPORTS_UNWINDLIB_NONE_FLAG:BOOL=OFF \ - "${SRC_DIR}/llvm-top/compiler-rt" - ninja - ninja install - - - name: Compiler-rt arm-baremetal - shell: bash - env: - RESOURCE_DIR: "${{ steps.resource_dir.outputs.value }}" - run: | - mkdir -p "${COMPILER_RT_ARM32_BM_BUILDDIR}" - echo -e "\nCOMPILER_RT for arm-baremetal:" - cd "${COMPILER_RT_ARM32_BM_BUILDDIR}" - cmake -G Ninja \ - -DCMAKE_INSTALL_PREFIX="${RESOURCE_DIR}" \ - -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ - -DCMAKE_ASM_COMPILER_TARGET="${ARM32_BM_TRIPLE}" \ - -DCMAKE_C_COMPILER_TARGET="${ARM32_BM_TRIPLE}" \ - -DCMAKE_CXX_COMPILER_TARGET="${ARM32_BM_TRIPLE}" \ - -DCMAKE_C_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCMAKE_CXX_COMPILER="${INSTALL_DIR}/bin/clang++" \ - -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" \ - -DCMAKE_C_FLAGS="${COMPILER_RT_ARM32_BM_FLAGS}" \ - -DCMAKE_CXX_FLAGS="${COMPILER_RT_ARM32_BM_FLAGS}" \ - -DCMAKE_ASM_FLAGS="${COMPILER_RT_ARM32_BM_FLAGS}" \ - -DCMAKE_SYSTEM_NAME=Generic \ - -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ - -DCOMPILER_RT_BAREMETAL_BUILD=ON \ - -DCOMPILER_RT_BUILD_BUILTINS=ON \ - -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ - -DCOMPILER_RT_BUILD_PROFILE=OFF \ - -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ - -DCOMPILER_RT_BUILD_XRAY=OFF \ - -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE="${ARM32_BM_TRIPLE}" \ - -DCOMPILER_RT_OS_DIR="baremetal" \ - -DCOMPILER_RT_TEST_TARGET_TRIPLE="${ARM32_BM_TRIPLE}" \ - -DCOMPILER_RT_TEST_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCOMPILER_RT_TEST_COMPILER_CFLAGS="${COMPILER_RT_ARM32_BM_FLAGS}" \ - -DCMAKE_BUILD_TYPE="${BUILD_MODE}" \ - -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ - -DCXX_SUPPORTS_UNWINDLIB_NONE_FLAG:BOOL=OFF \ - "${SRC_DIR}/llvm-top/compiler-rt" - ninja -t clean all - ninja -v - ninja install - - - name: Compiler-rt aarch64-linux - shell: bash - env: - RESOURCE_DIR: "${{ steps.resource_dir.outputs.value }}" - run: | - mkdir -p "${COMPILER_RT_AARCH64_LINUX_BUILDDIR}" - cd "${COMPILER_RT_AARCH64_LINUX_BUILDDIR}" - cmake -G Ninja \ - -DCMAKE_INSTALL_PREFIX="${RESOURCE_DIR}" \ - -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ - -DCMAKE_C_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCMAKE_CXX_COMPILER="${INSTALL_DIR}/bin/clang++" \ - -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" \ - -DCMAKE_C_FLAGS="${COMPILER_RT_AARCH64_LINUX_FLAGS}" \ - -DCMAKE_CXX_FLAGS="${COMPILER_RT_AARCH64_LINUX_FLAGS}" \ - -DCMAKE_ASM_FLAGS="${COMPILER_RT_AARCH64_LINUX_FLAGS}" \ - -DCMAKE_SYSTEM_NAME=Generic \ - -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE="${AARCH64_LINUX_TRIPLE}" \ - -DCOMPILER_RT_OS_DIR="linux" \ - -DCOMPILER_RT_TEST_COMPILER_CFLAGS="${COMPILER_RT_AARCH64_LINUX_FLAGS}" \ - -DCOMPILER_RT_TEST_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCMAKE_BUILD_TYPE="${BUILD_MODE}" \ - -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ - "${SRC_DIR}/llvm-top/compiler-rt" - ninja - ninja install - - - name: Compiler-rt aarch64-baremetal - shell: bash - env: - RESOURCE_DIR: "${{ steps.resource_dir.outputs.value }}" - run: | - mkdir -p "${COMPILER_RT_AARCH64_BM_BUILDDIR}" - cd "${COMPILER_RT_AARCH64_BM_BUILDDIR}" - cmake -G Ninja \ - -DCMAKE_INSTALL_PREFIX="${RESOURCE_DIR}" \ - -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ - -DCMAKE_C_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCMAKE_CXX_COMPILER="${INSTALL_DIR}/bin/clang++" \ - -DCMAKE_PREFIX_PATH="${INSTALL_DIR}" \ - -DCMAKE_C_FLAGS="${COMPILER_RT_AARCH64_BM_FLAGS}" \ - -DCMAKE_CXX_FLAGS="${COMPILER_RT_AARCH64_BM_FLAGS}" \ - -DCMAKE_ASM_FLAGS="${COMPILER_RT_AARCH64_BM_FLAGS}" \ - -DCMAKE_SYSTEM_NAME=Generic \ - -DCOMPILER_RT_BAREMETAL_BUILD=ON \ - -DCOMPILER_RT_BUILD_BUILTINS=ON \ - -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ - -DCOMPILER_RT_BUILD_PROFILE=OFF \ - -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ - -DCOMPILER_RT_BUILD_XRAY=OFF \ - -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE="${AARCH64_BM_TRIPLE}" \ - -DCOMPILER_RT_OS_DIR="baremetal" \ - -DCOMPILER_RT_TEST_TARGET_TRIPLE="${AARCH64_BM_TRIPLE}" \ - -DCOMPILER_RT_TEST_COMPILER="${INSTALL_DIR}/bin/clang" \ - -DCOMPILER_RT_TEST_COMPILER_CFLAGS="${COMPILER_RT_AARCH64_BM_FLAGS}" \ - -DCMAKE_BUILD_TYPE="${BUILD_MODE}" \ - -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ - "${SRC_DIR}/llvm-top/compiler-rt" - ninja -t clean all - ninja - ninja install - - - name: musl-embedded - shell: bash - run: | - export PATH="${INSTALL_DIR}/bin:${PATH}" - MUSL_BUILDDIR="${SRC_DIR}/musl-embedded" - source "${MUSL_BUILDDIR}/qualcomm-software/config/component_list.sh" - for lib in "${musl_components[@]}"; do - libName=$(echo "${lib}" | awk -F".sh," '{print $1}') - dirName=$(echo "${lib}" | awk -F"," '{print $2}') - mkdir -p "${MUSL_BUILDDIR}" - cd "${MUSL_BUILDDIR}" - make distclean - bash -x "${MUSL_BUILDDIR}/qualcomm-software/config/linux/arm/${libName}.sh" --prefix="${INSTALL_DIR}/${dirName}/libc" - make - make install - done - - - name: c++ libs - shell: bash - run: | - export PATH="${INSTALL_DIR}/bin:${PATH}" - declare -A Triples=( - ["aarch64-none-elf"]="aarch64-none-elf" - ["aarch64-pacret-b-key-bti-none-elf"]="aarch64-none-elf" - ["armv7-none-eabi"]="armv7-none-eabi" - ) - - declare -A CFLAGS=( - ["aarch64-none-elf"]="-mcpu=cortex-a53 -nostartfiles" - ["aarch64-pacret-b-key-bti-none-elf"]="-mcpu=cortex-a53 -nostartfiles -march=armv8.5-a -mbranch-protection=pac-ret+leaf+b-key+bti" - ["armv7-none-eabi"]="-mcpu=cortex-a9 -mthumb -specs=nosys.specs" - ) - - CFLAGS_RELEASE="-Os -DNDEBUG" - - for VARIANT in "aarch64-none-elf" "aarch64-pacret-b-key-bti-none-elf" "armv7-none-eabi"; do - TRIPLE="${Triples[${VARIANT}]}" - MUSL_INC="${INSTALL_DIR}/${TRIPLE}/libc/include" - CMAKE_CFLAGS="-target ${TRIPLE} -nostdinc -isystem ${MUSL_INC} -ccc-gcc-name ${TRIPLE}-g++ -fno-unroll-loops -fno-optimize-sibling-calls -ffunction-sections -fdata-sections -fno-exceptions -D_GNU_SOURCE ${CFLAGS[${VARIANT}]}" - - mkdir -p "${BUILD_DIR}/${VARIANT}" - pushd "${BUILD_DIR}/${VARIANT}" - cmake -G Ninja \ - -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}/${VARIANT}" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_COMPILER=clang \ - -DCMAKE_CXX_COMPILER=clang++ \ - -DHAVE_LIBCXXABI=True \ - -DCMAKE_SYSTEM_NAME=Generic \ - -DCMAKE_C_FLAGS_RELEASE="${CFLAGS_RELEASE}" \ - -DCMAKE_CXX_FLAGS_RELEASE="${CFLAGS_RELEASE}" \ - -DCMAKE_C_FLAGS="${CMAKE_CFLAGS}" \ - -DCMAKE_CXX_FLAGS="${CMAKE_CFLAGS}" \ - -DCMAKE_ASM_FLAGS="${CMAKE_CFLAGS}" \ - -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ - -DLIBCXX_ENABLE_SHARED=False \ - -DLIBCXX_SHARED_OUTPUT_NAME="c++-shared" \ - -DLIBCXX_ENABLE_EXCEPTIONS=False \ - -DLIBCXX_HAS_MUSL_LIBC=True \ - -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=False \ - -DLIBCXX_ENABLE_THREADS=False \ - -DLIBCXX_ENABLE_FILESYSTEM=False \ - -DLIBCXX_ENABLE_RANDOM_DEVICE=False \ - -DLIBCXX_ENABLE_LOCALIZATION=False \ - -DLIBCXX_SUPPORTS_STD_EQ_CXX11_FLAG=ON \ - -DLIBCXX_SUPPORTS_STD_EQ_CXX14_FLAG=ON \ - -DLIBCXX_SUPPORTS_STD_EQ_CXX17_FLAG=ON \ - -DLIBCXX_QUIC_BAREMETAL=ON \ - -DLIBCXXABI_USE_LLVM_UNWINDER=True \ - -DLIBCXXABI_BAREMETAL=True \ - -DLIBCXXABI_ENABLE_SHARED=False \ - -DLIBCXXABI_SHARED_OUTPUT_NAME="c++abi-shared" \ - -DLIBCXXABI_ENABLE_WERROR=True \ - -DLIBCXXABI_ENABLE_THREADS=False \ - -DLIBCXXABI_ENABLE_ASSERTIONS=False \ - -DLIBCXXABI_ENABLE_EXCEPTIONS=False \ - -DLIBUNWIND_TARGET_TRIPLE="${QUIC_ARM_BAREMETAL_TRIPLE}" \ - -DLIBUNWIND_IS_BAREMETAL=True \ - -DLIBUNWIND_ENABLE_SHARED=False \ - -DLIBUNWIND_SHARED_OUTPUT_NAME="unwind-shared" \ - -DUNIX=True \ - -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ - -S "${SRC_DIR}/llvm-top/runtimes" - ninja - ninja install - popd - done - - - name: Tar the Toolchain - shell: bash - run: | - cd "${INSTALL_DIR}" - short_sha=$(echo "${GITHUB_SHA}" | cut -c1-7) - tar_file="PR${{ github.event.pull_request.number }}_${short_sha}.tgz" - tar -czvf "../build/${tar_file}" . - + base: + uses: ./.github/workflows/base-build.yml + with: + build-script: "src/qualcomm-software/embedded/scripts/build.sh" diff --git a/qualcomm-software/embedded/scripts/build.sh b/qualcomm-software/embedded/scripts/build.sh index 13d192d8fc1b..1e8a86c4f2df 100755 --- a/qualcomm-software/embedded/scripts/build.sh +++ b/qualcomm-software/embedded/scripts/build.sh @@ -18,9 +18,9 @@ readonly ELD_BRANCH="main" readonly MUSL_EMBEDDED_REPO_URL="https://github.com/qualcomm/musl-embedded.git" readonly MUSL_EMBEDDED_BRANCH="main" -SCRIPT_DIR=$( - cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd -) +SCRIPT_DIR="$( + cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" >/dev/null && pwd +)" REPO_ROOT="$( git -C "${SCRIPT_DIR}" rev-parse --show-toplevel )" WORKSPACE="${REPO_ROOT}/.." SRC_DIR="${REPO_ROOT}" @@ -30,7 +30,7 @@ ARTIFACT_DIR="" SKIP_TESTS="false" JOBS="${JOBS:-$(nproc)}" -log() { echo -e "\033[1;34m[precheckin]\033[0m $*"; } +log() { echo -e "\033[1;34m[log]\033[0m $*"; } warn() { echo -e "\033[1;33m[warn]\033[0m $*"; } usage() { @@ -177,7 +177,6 @@ cmake -G Ninja \ -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ -DCXX_SUPPORTS_UNWINDLIB_NONE_FLAG:BOOL="OFF" \ "${SRC_DIR}/compiler-rt" -ninja ninja install popd >/dev/null @@ -213,8 +212,6 @@ cmake -G Ninja \ -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ -DCXX_SUPPORTS_UNWINDLIB_NONE_FLAG:BOOL="OFF" \ "${SRC_DIR}/compiler-rt" -ninja -t clean all -ninja ninja install popd >/dev/null @@ -239,7 +236,6 @@ cmake -G Ninja \ -DCMAKE_BUILD_TYPE="${BUILD_MODE}" \ -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ "${SRC_DIR}/compiler-rt" -ninja ninja install popd >/dev/null @@ -271,7 +267,6 @@ cmake -G Ninja \ -DCMAKE_BUILD_TYPE="${BUILD_MODE}" \ -DLLVM_ENABLE_ASSERTIONS:BOOL="${ASSERTION_MODE}" \ "${SRC_DIR}/compiler-rt" -ninja -t clean all ninja ninja install popd >/dev/null @@ -281,7 +276,7 @@ export PATH="${INSTALL_DIR}/bin:${PATH}" log "Building musl-embedded" MUSL_BUILDDIR="${WORKSPACE}/musl-embedded" source "${MUSL_BUILDDIR}/qualcomm-software/config/component_list.sh" -for lib in ${musl_components[*]}; do +for lib in "${musl_components[@]}"; do libName="$(echo "${lib}" | awk -F".sh," '{print $1}')" dirName="$(echo "${lib}" | awk -F"," '{print $2}')" pushd "${MUSL_BUILDDIR}" >/dev/null @@ -305,9 +300,9 @@ CFLAGS["aarch64-pacret-b-key-bti-none-elf"]="-mcpu=cortex-a53 -nostartfiles -mar CFLAGS["armv7-none-eabi"]="-mcpu=cortex-a9 -mthumb -specs=nosys.specs" CFLAGS_RELEASE="-Os -DNDEBUG" for VARIANT in "aarch64-none-elf" "aarch64-pacret-b-key-bti-none-elf" "armv7-none-eabi"; do - TRIPLE="${Triples[${VARIANT}]}" + TRIPLE="${Triples[$VARIANT]}" MUSL_INC="${INSTALL_DIR}/${TRIPLE}/libc/include" - CMAKE_CFLAGS="-target ${TRIPLE} -nostdinc -isystem ${MUSL_INC} -ccc-gcc-name ${TRIPLE}-g++ -fno-unroll-loops -fno-optimize-sibling-calls -ffunction-sections -fdata-sections -fno-exceptions -D_GNU_SOURCE ${CFLAGS[${VARIANT}]}" + CMAKE_CFLAGS="-target ${TRIPLE} -nostdinc -isystem ${MUSL_INC} -ccc-gcc-name ${TRIPLE}-g++ -fno-unroll-loops -fno-optimize-sibling-calls -ffunction-sections -fdata-sections -fno-exceptions -D_GNU_SOURCE ${CFLAGS[$VARIANT]}" mkdir -p "${BUILD_DIR}/${VARIANT}" pushd "${BUILD_DIR}/${VARIANT}" >/dev/null cmake -G Ninja -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}/${VARIANT}" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_C_COMPILER="clang" -DCMAKE_CXX_COMPILER="clang++" \ @@ -344,11 +339,10 @@ for VARIANT in "aarch64-none-elf" "aarch64-pacret-b-key-bti-none-elf" "armv7-non -DLIBUNWIND_SHARED_OUTPUT_NAME="unwind-shared" \ -DUNIX="True" \ -S "${SRC_DIR}/runtimes" "-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi;libunwind" - ninja -t clean all ninja ninja install popd >/dev/null -echo "c++ libs install ..." + echo "c++ libs install ..." done echo "Build and installation complete."