Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: Build
on:
push:
branches: [main]
workflow_dispatch:
jobs:
build-x86_64:
Expand All @@ -9,6 +10,7 @@ jobs:
matrix:
image:
- compcert
- clad
- heaptrack
- hylo
- iwyu
Expand Down
24 changes: 24 additions & 0 deletions Dockerfile.clad
Original file line number Diff line number Diff line change
@@ -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
53 changes: 53 additions & 0 deletions clad/build.sh
Original file line number Diff line number Diff line change
@@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would make this configurable and include it in the S3 name so we can support the plugin for multiple clang versions

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll take a look at that.


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}"