From f42d3b3350b62d672e6fa04dd5e29fd7f38995b2 Mon Sep 17 00:00:00 2001 From: Matt Godbolt Date: Fri, 20 Dec 2024 13:56:42 +0000 Subject: [PATCH 1/3] Add clad (WIP doesn't work RTTI probs) --- Dockerfile.clad | 24 +++++++++++++++++++++++ clad/build.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 Dockerfile.clad create mode 100755 clad/build.sh diff --git a/Dockerfile.clad b/Dockerfile.clad new file mode 100644 index 0000000..c7ea925 --- /dev/null +++ b/Dockerfile.clad @@ -0,0 +1,24 @@ +FROM ubuntu:22.04 + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt update -y -q && apt upgrade -y -q && apt update -y -q && \ + apt install -y -q \ + build-essential \ + cmake \ + curl \ + git \ + gnupg \ + lsb-release \ + ninja-build \ + pip \ + python3 \ + software-properties-common \ + wget + +RUN pip install lit + +RUN mkdir -p /root +COPY clad /root/ +COPY common.sh /root/ + +WORKDIR /root diff --git a/clad/build.sh b/clad/build.sh new file mode 100755 index 0000000..07140bb --- /dev/null +++ b/clad/build.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -euxo pipefail +source common.sh + +VERSION=$1 +if [[ "${VERSION}" = "trunk" ]]; then + VERSION=trunk-$(date +%Y%m%d) + BRANCH=master + REMOTE=heads/${BRANCH} +else + BRANCH=v${VERSION} + REMOTE=tags/${BRANCH} +fi + +URL=https://github.com/vgvassilev/clad +CLANG_VERSION=18 + +FULLNAME=clad-${VERSION} +OUTPUT=$2/${FULLNAME}.tar.xz + +REVISION="$(get_remote_revision "${URL}" "${REMOTE}")" + +REVISION="clad-${REVISION}" +LAST_REVISION="${3:-}" + +initialise "${REVISION}" "${OUTPUT}" "${LAST_REVISION}" + +bash -c "$(curl https://apt.llvm.org/llvm.sh)" "${CLANG_VERSION}" +apt install libclang-${CLANG_VERSION}-dev + +PREFIX=$(pwd)/prefix +BUILD=$(pwd)/build +SOURCE=$(pwd)/clad + +git clone --depth 1 -b "${BRANCH}" "${URL}" "${SOURCE}" + +mkdir "${BUILD}" +cd "${BUILD}" +cmake "${SOURCE}" \ + -DClang_DIR=/usr/lib/llvm-${CLANG_VERSION} \ + -DLLVM_DIR=/usr/lib/llvm-${CLANG_VERSION} \ + -DLLVM_ENABLE_RTTI=OFF \ + -DLLVM_EXTERNAL_LIT="$(which lit)" \ + -DCMAKE_INSTALL_PREFIX="${PREFIX}" \ + -GNinja + +ninja +ninja install + +complete "${PREFIX}" "${FULLNAME}" "${OUTPUT}" From cbf18f11e4399a267cb81698561291879e75718a Mon Sep 17 00:00:00 2001 From: Matt Godbolt Date: Fri, 20 Dec 2024 14:30:14 +0000 Subject: [PATCH 2/3] Fixups for clad --- .github/workflows/build.yml | 1 + clad/build.sh | 24 +++++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a55f5b9..5013c2f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,6 +9,7 @@ jobs: matrix: image: - compcert + - clad - heaptrack - hylo - iwyu diff --git a/clad/build.sh b/clad/build.sh index 07140bb..4b13faf 100755 --- a/clad/build.sh +++ b/clad/build.sh @@ -14,7 +14,7 @@ else fi URL=https://github.com/vgvassilev/clad -CLANG_VERSION=18 +CLANG_VERSION=18.1.0 FULLNAME=clad-${VERSION} OUTPUT=$2/${FULLNAME}.tar.xz @@ -26,26 +26,28 @@ LAST_REVISION="${3:-}" initialise "${REVISION}" "${OUTPUT}" "${LAST_REVISION}" -bash -c "$(curl https://apt.llvm.org/llvm.sh)" "${CLANG_VERSION}" -apt install libclang-${CLANG_VERSION}-dev - PREFIX=$(pwd)/prefix +LLVM=$(pwd)/llvm BUILD=$(pwd)/build SOURCE=$(pwd)/clad +git clone --depth 1 -b llvmorg-${CLANG_VERSION} https://github.com/llvm/llvm-project.git "${LLVM}" git clone --depth 1 -b "${BRANCH}" "${URL}" "${SOURCE}" mkdir "${BUILD}" cd "${BUILD}" -cmake "${SOURCE}" \ - -DClang_DIR=/usr/lib/llvm-${CLANG_VERSION} \ - -DLLVM_DIR=/usr/lib/llvm-${CLANG_VERSION} \ - -DLLVM_ENABLE_RTTI=OFF \ - -DLLVM_EXTERNAL_LIT="$(which lit)" \ +cmake "${LLVM}/llvm" \ + -DLLVM_ENABLE_PROJECTS=clang \ + -DLLVM_EXTERNAL_PROJECTS=clad \ + -DLLVM_EXTERNAL_CLAD_SOURCE_DIR=${SOURCE} \ + -DCMAKE_BUILD_TYPE="Release" \ + -DLLVM_TARGETS_TO_BUILD=host \ + -DLLVM_INSTALL_UTILS=ON \ -DCMAKE_INSTALL_PREFIX="${PREFIX}" \ -GNinja -ninja -ninja install +ninja clang-headers +ninja clad +ninja install-clad complete "${PREFIX}" "${FULLNAME}" "${OUTPUT}" From 176dc6b2e1de50405f4d0ef2157c745fad5ff645 Mon Sep 17 00:00:00 2001 From: Matt Godbolt Date: Fri, 20 Dec 2024 14:47:53 +0000 Subject: [PATCH 3/3] Fix up build --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5013c2f..5b90d4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,7 @@ name: Build on: push: + branches: [main] workflow_dispatch: jobs: build-x86_64: