diff --git a/README.md b/README.md index 26ab6f1b4..4becdc84a 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ not give up on flexibility? *Here it is.* And it's free to use, even for commercial purposes. [![Join the chat at https://gitter.im/mosra/magnum](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mosra/magnum?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Build Status](https://circleci.com/gh/mosra/magnum.svg?style=shield)](https://circleci.com/gh/mosra/magnum) [![Build Status](https://travis-ci.com/mosra/magnum.svg?branch=master)](https://travis-ci.com/mosra/magnum) [![Build Status](https://ci.appveyor.com/api/projects/status/5b477m034cfaskse/branch/master?svg=true)](https://ci.appveyor.com/project/mosra/magnum/branch/master) [![Coverage Status](https://codecov.io/gh/mosra/magnum/branch/master/graph/badge.svg)](https://codecov.io/gh/mosra/magnum) diff --git a/doc/building.dox b/doc/building.dox index efc2160af..5524bf76c 100644 --- a/doc/building.dox +++ b/doc/building.dox @@ -1106,11 +1106,16 @@ more information. @section building-ci Continuous Integration +@subsection building-ci-circleci CircleCI + +In `package/ci/` there is a `circle.yml` file with Linux GCC 4.8, macOS, Linux +desktop GLES2/GLES3, Emscripten WebGL1/WebGL2, AddressSanitizer and +ThreadSanitizer configuration. Online at https://circleci.com/gh/mosra/magnum. + @subsection building-ci-travis Travis -In `package/ci/` there is a `travis.yml` file with Linux GCC 4.8, macOS, Linux -desktop GLES2/GLES3, iOS GLES2/GLES3, Emscripten WebGL1/WebGL2, Android -GLES2/GLES3, AddressSanitizer and ThreadSanitizer configuration. Online at +In `package/ci/` there is a `travis.yml` file with iOS GLES2/GLES3, Emscripten +WebGL1/WebGL2 and Android GLES2/GLES3 configuration. Online at https://travis-ci.com/mosra/magnum. @subsection building-ci-appveyor AppVeyor diff --git a/package/ci/circleci.yml b/package/ci/circleci.yml index f0ccaecef..172ded6b2 100644 --- a/package/ci/circleci.yml +++ b/package/ci/circleci.yml @@ -13,6 +13,9 @@ executors: ubuntu-16_04: docker: - image: ubuntu:xenial-20201014 + xcode-9_4: + macos: + xcode: 9.4.1 emscripten: docker: # 1.39.0 is the oldest on Docker. Anything before 1.39.2 is useless as emar @@ -24,7 +27,7 @@ executors: - image: emscripten/emsdk:1.39.6-upstream commands: - install-base: + install-base-linux: parameters: extra: type: string @@ -38,6 +41,20 @@ commands: if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then export LCOV_PACKAGES="lcov curl"; fi apt install -y git ninja-build $LCOV_PACKAGES << parameters.extra >> + install-base-macos: + parameters: + extra: + type: string + default: "" + steps: + - run: + name: Install base packages + # As usual, homebrew takes five minutes to update and then explodes in + # a spectacular way. How is this acceptable?! + command: | + if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then export LCOV_PACKAGES="lcov"; fi + HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake ninja $LCOV_PACKAGES << parameters.extra >> + install-gcc-4_8: steps: - run: @@ -158,7 +175,7 @@ jobs: CONFIGURATION: Debug PLATFORM_GL_API: GLX steps: - - install-base: + - install-base-linux: extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev - install-gcc-4_8 - install-cmake-3_4 @@ -174,7 +191,7 @@ jobs: CMAKE_CXX_FLAGS: --coverage CONFIGURATION: Debug steps: - - install-base: + - install-base-linux: extra: cmake libsdl2-dev libglfw3-dev - build: script: unix-desktop-vulkan.sh @@ -190,7 +207,7 @@ jobs: # STUPID yml interprets unquoted ON as a boolean TARGET_GLES2: "ON" steps: - - install-base: + - install-base-linux: extra: libsdl2-dev libglfw3-dev - install-gcc-4_8 - install-cmake-3_4 @@ -209,7 +226,7 @@ jobs: # STUPID yml interprets unquoted OFF as a boolean TARGET_GLES2: "OFF" steps: - - install-base: + - install-base-linux: extra: libsdl2-dev libglfw3-dev - install-gcc-4_8 - install-cmake-3_4 @@ -229,7 +246,7 @@ jobs: CONFIGURATION: Debug PLATFORM_GL_API: GLX steps: - - install-base: + - install-base-linux: extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev - install-gcc-4_8 - install-cmake-3_4 @@ -247,7 +264,7 @@ jobs: CONFIGURATION: Release PLATFORM_GL_API: GLX steps: - - install-base: + - install-base-linux: extra: libgl1-mesa-dev libsdl2-dev libglfw3-dev libopenal-dev - install-gcc-4_8 - install-cmake-3_4 @@ -266,7 +283,7 @@ jobs: CONFIGURATION: Debug PLATFORM_GL_API: GLX steps: - - install-base: + - install-base-linux: extra: libgl1-mesa-dev libopenal-dev - install-clang-3_8 - install-cmake-3_4 @@ -285,7 +302,7 @@ jobs: CONFIGURATION: Debug PLATFORM_GL_API: GLX steps: - - install-base: + - install-base-linux: extra: libgl1-mesa-dev libopenal-dev - install-clang-3_8 - install-cmake-3_4 @@ -293,13 +310,41 @@ jobs: - build: script: unix-desktop.sh + macos-gl: + executor: xcode-9_4 + environment: + CMAKE_CXX_FLAGS: --coverage + CONFIGURATION: Debug + PLATFORM_GL_API: CGL + steps: + - install-base-macos: + extra: sdl2 glfw + - build: + script: unix-desktop.sh + - lcov + + macos-static: + executor: xcode-9_4 + environment: + # STUPID yml interprets unquoted ON as a boolean + BUILD_STATIC: "ON" + CMAKE_CXX_FLAGS: --coverage + CONFIGURATION: Debug + PLATFORM_GL_API: CGL + steps: + - install-base-macos: + extra: sdl2 glfw + - build: + script: unix-desktop.sh + - lcov + emscripten-webgl1: executor: emscripten environment: # STUPID yml interprets unquoted ON as a boolean TARGET_GLES2: "ON" steps: - - install-base + - install-base-linux - build: script: emscripten.sh @@ -309,7 +354,7 @@ jobs: # STUPID yml interprets unquoted OFF as a boolean TARGET_GLES2: "OFF" steps: - - install-base + - install-base-linux - build: script: emscripten.sh @@ -325,5 +370,7 @@ workflows: - linux-nondeprecated - linux-sanitizers - linux-threadsanitizer + - macos-gl + - macos-static - emscripten-webgl1 - emscripten-webgl2 diff --git a/package/ci/travis.yml b/package/ci/travis.yml index 5bbab1a19..5a7ed4bf8 100644 --- a/package/ci/travis.yml +++ b/package/ci/travis.yml @@ -118,35 +118,35 @@ matrix: #- TARGET_GLES2=OFF #- CMAKE_CXX_FLAGS="--coverage" #- LCOV_EXTRA_OPTS="--gcov-tool /usr/bin/gcov-4.8" - - language: cpp - os: osx - # The new plugin testing workflow is dynamically loading and unloading them - # in the tests. When that's combined with coverage and LLVM < 5.0.1, all - # such tests crash on exit: https://bugs.llvm.org/show_bug.cgi?id=27224 - # But only in some cases (for example not at all in tests for Corrade - # PluginManager itself). The commit fixing it is from Jan 3 2018 and all - # Xcode versions before Xcode 9.3 beta (released on Jan 24) are affected. - # https://github.com/llvm-mirror/compiler-rt/commit/860d7953a6f36980f406bfbff76f3c00f15eed57 - # Xcode 9.3 beta has broken git clone ("unknown protocol version 2") since - # Feb 16 2019, so using version 9.3 now. - osx_image: xcode9.3 - compiler: clang - env: - - JOBID=macos-gl - - TARGET=desktop - - CMAKE_CXX_FLAGS="--coverage" - - CONFIGURATION=Debug - - language: cpp - os: osx - # See above - osx_image: xcode9.3 - compiler: clang - env: - - JOBID=macos-static - - TARGET=desktop - - CMAKE_CXX_FLAGS="--coverage" - - BUILD_STATIC=ON - - CONFIGURATION=Debug + #- language: cpp + #os: osx + ## The new plugin testing workflow is dynamically loading and unloading them + ## in the tests. When that's combined with coverage and LLVM < 5.0.1, all + ## such tests crash on exit: https://bugs.llvm.org/show_bug.cgi?id=27224 + ## But only in some cases (for example not at all in tests for Corrade + ## PluginManager itself). The commit fixing it is from Jan 3 2018 and all + ## Xcode versions before Xcode 9.3 beta (released on Jan 24) are affected. + ## https://github.com/llvm-mirror/compiler-rt/commit/860d7953a6f36980f406bfbff76f3c00f15eed57 + ## Xcode 9.3 beta has broken git clone ("unknown protocol version 2") since + ## Feb 16 2019, so using version 9.3 now. + #osx_image: xcode9.3 + #compiler: clang + #env: + #- JOBID=macos-gl + #- TARGET=desktop + #- CMAKE_CXX_FLAGS="--coverage" + #- CONFIGURATION=Debug + #- language: cpp + #os: osx + ## See above + #osx_image: xcode9.3 + #compiler: clang + #env: + #- JOBID=macos-static + #- TARGET=desktop + #- CMAKE_CXX_FLAGS="--coverage" + #- BUILD_STATIC=ON + #- CONFIGURATION=Debug - language: cpp os: osx osx_image: xcode7.3