diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a55f5b9..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: @@ -9,6 +10,7 @@ jobs: matrix: image: - compcert + - clad - heaptrack - hylo - iwyu 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..4b13faf --- /dev/null +++ b/clad/build.sh @@ -0,0 +1,53 @@ +#!/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.1.0 + +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}" + +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 "${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 clang-headers +ninja clad +ninja install-clad + +complete "${PREFIX}" "${FULLNAME}" "${OUTPUT}"