mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
ci: add a Docker container for clang support of C++20 modules
This commit is contained in:
13
.gitlab/ci/docker/clang_cxx_modules/Dockerfile
Normal file
13
.gitlab/ci/docker/clang_cxx_modules/Dockerfile
Normal 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
|
||||
7
.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh
Executable file
7
.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
dnf install -y --setopt=install_weak_deps=False \
|
||||
file git-core
|
||||
dnf clean all
|
||||
7
.gitlab/ci/docker/clang_cxx_modules/install_deps.sh
Executable file
7
.gitlab/ci/docker/clang_cxx_modules/install_deps.sh
Executable 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
|
||||
39
.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh
Executable file
39
.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh
Executable 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"
|
||||
Reference in New Issue
Block a user