Build Binaries #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Binaries | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 0 1 */2 *' | |
permissions: | |
contents: read | |
jobs: | |
build-cache: | |
name: cache | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout main repo | |
uses: actions/checkout@v4 | |
with: | |
path: llvm-obfuscate | |
submodules: recursive | |
- name: Install Ninja | |
uses: llvm/actions/install-ninja@22e9f909d35b50bd1181709564bfe816eaeaae81 # main | |
- name: Setup sccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
max-size: 250M | |
key: sccache-ubuntu-22.04-{{ hashFiles('llvm-obfuscate/clang/lib/**/*.*') }} | |
variant: sccache | |
- name: Build Clang | |
run: | | |
cmake -G Ninja -S llvm-obfuscate/llvm -B build \ | |
-C llvm-obfuscate/clang/cmake/caches/Release.cmake \ | |
-DCMAKE_C_COMPILER_LAUNCHER=sccache \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ | |
-DCMAKE_POSITION_INDEPENDENT_CODE=ON | |
ninja -v -C build clang | |
build-binaries: | |
name: ubuntu-22.04 | |
runs-on: ubuntu-22.04 | |
needs: build-cache | |
env: | |
Package: clang+llvm+ollvm-${{ github.sha }} | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout main repo | |
uses: actions/checkout@v4 | |
with: | |
path: llvm-obfuscate | |
submodules: recursive | |
- name: Setup sccache | |
uses: hendrikmuhs/ccache-action@ca3acd2731eef11f1572ccb126356c2f9298d35e # v1.2.9 | |
with: | |
max-size: 250M | |
key: sccache-ubuntu-22.04-{{ hashFiles('llvm-obfuscate/clang/lib/**/*.*') }} | |
save: false | |
variant: sccache | |
- name: Install dependencies | |
run: sudo apt install cmake chrpath gcc-multilib ninja-build | |
- name: Figure out how many cores can be used | |
run: | | |
# Figure out how many make processes to run. | |
if [ -z "$NumJobs" ]; then | |
NumJobs=`sysctl -n hw.activecpu 2> /dev/null || true` | |
fi | |
if [ -z "$NumJobs" ]; then | |
NumJobs=`sysctl -n hw.ncpu 2> /dev/null || true` | |
fi | |
if [ -z "$NumJobs" ]; then | |
NumJobs=`grep -c processor /proc/cpuinfo 2> /dev/null || true` | |
fi | |
if [ -z "$NumJobs" ]; then | |
NumJobs=3 | |
fi | |
echo "NumJobs=$NumJobs" >> "$GITHUB_ENV" | |
- name: Configure CMake | |
run: | | |
cmake -B build -G Ninja -S llvm-obfuscate/llvm \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | |
-DLLVM_ENABLE_PROJECTS='llvm;clang;clang-tools-extra;openmp;lld;polly;mlir;flang' \ | |
-DLLVM_ENABLE_RUNTIMES='compiler-rt;libcxx;libcxxabi;libunwind' \ | |
-DLLVM_OBFUSCATION_LINK_INTO_TOOLS=ON \ | |
-DLLVM_TARGETS_TO_BUILD=X86 \ | |
-DLLVM_LIT_ARGS="-j $NumJobs -v" | |
- name: Build binaries | |
run: | | |
ninja -C build -j $NumJobs -v -l $((NumJobs + 1)) | |
- name: Install and package binaries to dummy directory | |
run: | | |
export DESTDIR='install' | |
ninja -C build install | |
tar -C build -cf - "$DESTDIR" | gzip -9c > ${{ env.Package }}.tar.gz | |
- name: Get timestamp | |
run: echo "timestamp=$(date -u +'%Y%m%dT%H%m')" >> "$GITHUB_ENV" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-${{ env.timestamp }} | |
path: ${{ env.Package }}.tar.gz | |
compression-level: 0 | |
if-no-files-found: error | |