Files
mp-units/.gitpod.yml

191 lines
8.8 KiB
YAML

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. 📚"