ci: add a Docker container for clang support of C++20 modules

This commit is contained in:
Ben Boeckel
2022-12-01 23:37:04 -05:00
parent 51093f3002
commit abd42e9cfc
4 changed files with 66 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
FROM fedora:37
MAINTAINER Ben Boeckel <ben.boeckel@kitware.com>
# Install build dependencies for packages.
COPY install_deps.sh /root/install_deps.sh
RUN sh /root/install_deps.sh
COPY install_llvm.sh /root/install_llvm.sh
RUN sh /root/install_llvm.sh
# Install build dependencies for CMake's CI.
COPY install_cmake_deps.sh /root/install_cmake_deps.sh
RUN sh /root/install_cmake_deps.sh

View File

@@ -0,0 +1,7 @@
#!/bin/sh
set -e
dnf install -y --setopt=install_weak_deps=False \
file git-core
dnf clean all

View File

@@ -0,0 +1,7 @@
#!/bin/sh
set -e
dnf install -y --setopt=install_weak_deps=False \
gcc-c++ cmake ninja-build
dnf clean all

View File

@@ -0,0 +1,39 @@
#!/bin/sh
set -e
readonly revision="p1689r5-cmake-ci-20221201" # ae3b5489585b60a2b7f090ebb9e1e8729b811253
readonly tarball="https://github.com/mathstuf/llvm-project/archive/$revision.tar.gz"
readonly workdir="$HOME/llvm"
readonly srcdir="$workdir/llvm"
readonly builddir="$workdir/build"
mkdir -p "$workdir"
cd "$workdir"
curl -L "$tarball" > "llvm-$revision.tar.gz"
tar xf "llvm-$revision.tar.gz"
mv "llvm-project-$revision" "$srcdir"
mkdir -p "$builddir"
cd "$builddir"
cmake -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DLLVM_ENABLE_BINDINGS=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_RUNTIMES=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_UTILS=OFF \
-DLLVM_TARGETS_TO_BUILD=X86 \
-DLLVM_TOOL_CLANG_BUILD=ON \
-DLLVM_USE_SYMLINKS=ON \
"-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=$srcdir/clang" \
-DLLVM_PARALLEL_LINK_JOBS=1 \
-DCLANG_BUILD_TOOLS=ON \
"-DCMAKE_INSTALL_PREFIX=/opt/llvm-p1689" \
"$srcdir/llvm"
ninja
ninja install/strip
rm -rf "$workdir"