diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index 49164bc2..34dc6725 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -4,11 +4,13 @@ FROM trainiteu/gitpod-cpp RUN lsb_rel=`lsb_release -cs` \ && sudo add-apt-repository "deb http://apt.llvm.org/${lsb_rel}/ llvm-toolchain-${lsb_rel}-12 main" \ && sudo add-apt-repository "deb http://apt.llvm.org/${lsb_rel}/ llvm-toolchain-${lsb_rel}-13 main" \ + && sudo add-apt-repository "deb http://apt.llvm.org/${lsb_rel}/ llvm-toolchain-${lsb_rel}-14 main" \ && sudo add-apt-repository "deb http://apt.llvm.org/${lsb_rel}/ llvm-toolchain-${lsb_rel} main" # Install older compilers supported by the project as well as clang-format-15 for code formatting RUN sudo install-packages \ g++-10 \ + g++-11 \ clang-12 \ clang-13 \ - clang-format-15 + clang-14 diff --git a/.gitpod.yml b/.gitpod.yml index 03d48379..b62aad13 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -75,6 +75,7 @@ tasks: pushd /workspace/.conan/profiles cp default gcc10 cp default gcc11 + cp default gcc12 cp default clang12 cp default clang13 cp default clang14 @@ -82,6 +83,9 @@ tasks: conan profile update settings.compiler.version=10 gcc10 conan profile update env.CXX=/usr/bin/g++-10 gcc10 conan profile update env.CC=/usr/bin/gcc-10 gcc10 + conan profile update settings.compiler.version=11 gcc11 + conan profile update env.CXX=/usr/bin/g++-11 gcc11 + conan profile update env.CC=/usr/bin/gcc-11 gcc11 conan profile update settings.compiler=clang clang12 conan profile update settings.compiler.version=12 clang12 conan profile update settings.compiler.libcxx=libstdc++11 clang12 @@ -94,9 +98,14 @@ tasks: conan profile update env.CC=/usr/bin/clang-13 clang13 conan profile update settings.compiler=clang clang14 conan profile update settings.compiler.version=14 clang14 - conan profile update settings.compiler.libcxx=libc++ clang14 + conan profile update settings.compiler.libcxx=libc++11 clang14 conan profile update env.CXX=/usr/bin/clang++-14 clang14 conan profile update env.CC=/usr/bin/clang-14 clang14 + conan profile update settings.compiler=clang clang15 + conan profile update settings.compiler.version=15 clang15 + conan profile update settings.compiler.libcxx=libc++ clang15 + conan profile update env.CXX=/usr/bin/clang++-15 clang15 + conan profile update env.CC=/usr/bin/clang-15 clang15 echo 'tools.cmake.cmaketoolchain:generator=Ninja Multi-Config' > /workspace/.conan/global.conf echo 'tools.cmake.cmake_layout:build_folder_vars=["settings.compiler", "settings.compiler.version"]' >> /workspace/.conan/global.conf gp sync-done conan-init @@ -123,6 +132,17 @@ tasks: ctest -C Release ctest -C Debug echo "🛠️ gcc-11 pre-build done! You can close this terminal and use 'Build' button in the VSCode status bar for incremental builds. 🛠️" + - name: gcc-12 + init: | + gp sync-await conan-init + conan install . -pr gcc12 -c user.build:all=True -c user.build:skip_docs=True -b outdated + conan install . -pr gcc12 -c user.build:all=True -c user.build:skip_docs=True -b outdated -s build_type=Debug + cmake --preset gcc-12 -DCMAKE_C_COMPILER=/usr/bin/gcc-12 -DCMAKE_CXX_COMPILER=/usr/bin/g++-12 + cmake --build --preset gcc-12-release -j + cmake --build --preset gcc-12-debug -j + ctest -C Release + ctest -C Debug + echo "🛠️ gcc-12 pre-build done! You can close this terminal and use 'Build' button in the VSCode status bar for incremental builds. 🛠️" - name: clang-12 init: | gp sync-await conan-init @@ -137,7 +157,6 @@ tasks: - name: clang-13 init: | gp sync-await conan-init - mkdir -p build/Clang-13 && cd build/Clang-13 conan install . -pr clang13 -c user.build:all=True -c user.build:skip_docs=True -b outdated conan install . -pr clang13 -c user.build:all=True -c user.build:skip_docs=True -b outdated -s build_type=Debug cmake --preset clang-13 -DCMAKE_C_COMPILER=/usr/bin/clang-13 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-13 @@ -149,7 +168,6 @@ tasks: - name: clang-14 init: | gp sync-await conan-init - mkdir -p build/Clang-14 && cd build/Clang-14 conan install . -pr clang14 -c user.build:all=True -c user.build:skip_docs=True -b outdated conan install . -pr clang14 -c user.build:all=True -c user.build:skip_docs=True -b outdated -s build_type=Debug cmake --preset clang-14 -DCMAKE_C_COMPILER=/usr/bin/clang-14 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-14 @@ -158,6 +176,17 @@ tasks: ctest -C Release ctest -C Debug echo "🛠️ clang-14 pre-build done! You can close this terminal and use 'Build' button in the VSCode status bar for incremental builds. 🛠️" + - name: clang-15 + init: | + gp sync-await conan-init + conan install . -pr clang15 -c user.build:all=True -c user.build:skip_docs=True -b outdated + conan install . -pr clang15 -c user.build:all=True -c user.build:skip_docs=True -b outdated -s build_type=Debug + cmake --preset clang-15 -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 + cmake --build --preset clang-15-release -j + cmake --build --preset clang-15-debug -j + ctest -C Release + ctest -C Debug + echo "🛠️ clang-15 pre-build done! You can close this terminal and use 'Build' button in the VSCode status bar for incremental builds. 🛠️" - name: documentation init: | gp sync-await conan-init diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 573ce5c4..d7104764 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,11 +12,11 @@ below or prefix any `mp-units` URL (main branch, other branches, issues, PRs, .. The above environment provides you with: -- all supported compilers for Linux development (`g++-10`, `g++-11`, `clang-12`, `clang-13`) and build tools like `cmake` and `conan` +- all supported compilers for Linux development (`g++-10`, `g++-11`, `g++12`, `clang-12`, `clang-13`, `clang-14`, and `clang-15`) + and the latest version of build tools like `cmake` and `conan` - all Conan dependencies preinstalled on the machine - all documentation generation tools ready to use -- completed prebuilds for all targets (each compiler as well as a documentation) -- `clang-format-15` for source code formatting +- completed prebuilds for all targets (Debug and Release builds for each compiler as well as a documentation) - VSCode preconfigured to benefit from all the above ## Download, Build, Install