image: file: .gitpod.Dockerfile # -------------------------------------------------------- # exposing ports for VSCode Live Server ports: - port: 5500 # -------------------------------------------------------- # using prebuilds for the container github: prebuilds: # enable for the default branch (defaults to true) master: true # enable for all branches in this repo (defaults to false) branches: true # enable for pull requests coming from this repo (defaults to true) pullRequests: true # enable for pull requests coming from forks (defaults to false) pullRequestsFromForks: true # add a check to pull requests (defaults to true) addCheck: true # add a "Review in Gitpod" button as a comment to pull requests (defaults to false) addComment: true # add a "Review in Gitpod" button to the pull request's description (defaults to false) addBadge: false # -------------------------------------------------------- # some useful extensions to have vscode: extensions: - twxs.cmake - ms-vscode.cmake-tools - xaver.clang-format - streetsidesoftware.code-spell-checker - vivaxy.vscode-conventional-commits - hbenl.vscode-test-explorer - matepek.vscode-catch2-test-adapter - redhat.vscode-yaml - ritwickdey.liveserver - ms-python.python # -------------------------------------------------------- # VSCode setup, Conan installation, and build of all the targets tasks: - name: vscode settings init: | mkdir -p "$PWD/.vscode"; cat << 'EOF' > "$PWD/.vscode/settings.json" { "cmake.generator": "Ninja Multi-Config", "cmake.configureOnOpen": true, "clang-format.executable": "/usr/bin/clang-format-15", "editor.tabSize": 2, "editor.formatOnSave": true, "editor.bracketPairColorization.enabled": true, "editor.guides.bracketPairs": "active", "restructuredtext.preview.scrollEditorWithPreview": false, "restructuredtext.preview.scrollPreviewWithEditor": false, "liveServer.settings.root": "/build/docs/docs/sphinx/", "esbonio.sphinx.confDir": "${workspaceFolder}/docs", "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools", "yaml.schemas": { "https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml" }, "yaml.customTags": [ "!ENV scalar", "!ENV sequence", "tag:yaml.org,2002:python/name:materialx.emoji.to_svg", "tag:yaml.org,2002:python/name:materialx.emoji.twemoji", "tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format" ] } EOF exit - name: conan before: | pip3 install -U conan conan config init conan profile update settings.compiler.libcxx=libstdc++11 default conan profile update settings.compiler.cppstd=20 default conan remote add -i 0 conan-mpusz https://mpusz.jfrog.io/artifactory/api/conan/conan-oss pushd /workspace/.conan/profiles cp default gcc10 cp default gcc11 cp default gcc12 cp default clang13 cp default clang14 cp default clang15 popd conan profile update settings.compiler.version=10 gcc10 conan profile update 'conf.tools.build.compiler_executables={"c": "gcc-10", "cpp": "g++-10"}' gcc10 conan profile update settings.compiler.version=11 gcc11 conan profile update 'conf.tools.build.compiler_executables={"c": "gcc-11", "cpp": "g++-11"}' gcc11 conan profile update settings.compiler.version=11 gcc12 conan profile update 'conf.tools.build.compiler_executables={"c": "gcc-12", "cpp": "g++-12"}' gcc12 conan profile update settings.compiler=clang clang13 conan profile update settings.compiler.version=13 clang13 conan profile update settings.compiler.libcxx=libstdc++11 clang13 conan profile update 'conf.tools.build.compiler_executables={"c": "clang-13", "cpp": "clang++-13"}' clang13 conan profile update settings.compiler=clang clang14 conan profile update settings.compiler.version=14 clang14 conan profile update settings.compiler.libcxx=libstdc++11 clang14 conan profile update 'conf.tools.build.compiler_executables={"c": "clang-14", "cpp": "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 'conf.tools.build.compiler_executables={"c": "clang-15", "cpp": "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 exit - name: gcc-10 init: | gp sync-await conan-init conan install . -pr gcc10 -c user.build:all=True -c user.build:skip_docs=True -b outdated conan install . -pr gcc10 -c user.build:all=True -c user.build:skip_docs=True -b outdated -s build_type=Debug cmake --preset gcc-10 cmake --build --preset gcc-10-release -j cmake --build --preset gcc-10-debug -j ctest -C Release ctest -C Debug echo "🛠️ gcc-10 pre-build done! You can close this terminal and use 'Build' button in the VSCode status bar for incremental builds. 🛠️" - name: gcc-11 init: | gp sync-await conan-init conan install . -pr gcc11 -c user.build:all=True -c user.build:skip_docs=True -b outdated conan install . -pr gcc11 -c user.build:all=True -c user.build:skip_docs=True -b outdated -s build_type=Debug cmake --preset gcc-11 cmake --build --preset gcc-11-release -j cmake --build --preset gcc-11-debug -j 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 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-13 init: | gp sync-await conan-init 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 cmake --build --preset clang-13-release -j cmake --build --preset clang-13-debug -j ctest -C Release ctest -C Debug echo "🛠️ clang-13 pre-build done! You can close this terminal and use 'Build' button in the VSCode status bar for incremental builds. 🛠️" - name: clang-14 init: | gp sync-await conan-init 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 cmake --build --preset clang-14-release -j cmake --build --preset clang-14-debug -j 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 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 pip3 install -Ur docs/requirements.txt pip3 install -U sphinx-autobuild rstcheck esbonio mkdir -p build/docs && cd build/docs gp sync-await conan-gcc-install conan install ../.. -e mp-units:CONAN_RUN_TESTS=True -b outdated cmake ../.. --toolchain conan_toolchain.cmake cmake --build . --target documentation --config Release -j echo "📚 Documentation pre-build complete! You can open it by clicking on 'Go Live' in the VSCode status bar. 📚"