diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..12ae055fc --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,78 @@ +name: MVE GitHub Actions CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + name: ${{ matrix.platform.name }} + runs-on: ${{ matrix.platform.os }} + + strategy: + fail-fast: false + + matrix: + platform: + - { name: Ubuntu 20.04 GCC, os: ubuntu-20.04, cpp_compiler: g++ } + - { name: Ubuntu 20.04 Clang, os: ubuntu-20.04, cpp_compiler: clang++ } + - { name: Ubuntu 22.04 GCC, os: ubuntu-22.04, cpp_compiler: g++ } + - { name: Ubuntu 22.04 Clang, os: ubuntu-22.04, cpp_compiler: clang++ } + - { name: macOS 12, os: macos-12, cpp_compiler: clang++ } + - { name: macOS 13, os: macos-13, cpp_compiler: clang++ } + - { name: macOS 14, os: macos-14, cpp_compiler: clang++ } + + env: + CXX: ${{ matrix.platform.cpp_compiler }} + + steps: + - uses: actions/checkout@v4 + + - name: Install Ubuntu dependencies + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install \ + build-essential \ + clang \ + libgl-dev \ + libgtest-dev \ + libjpeg-turbo8-dev \ + libomp-dev \ + libpng-dev \ + libqt5opengl5-dev \ + libtiff-dev \ + zlib1g-dev + + - name: Install macOS dependencies + if: runner.os == 'macOS' + run: | + export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 + brew update + brew install \ + googletest \ + jpeg-turbo \ + libpng \ + libtiff \ + qt@5 + brew link qt@5 + + - name: Build MVE on Linux/macOS + run: | + if [ "`uname`" = "Darwin" ]; then + export NUM_CPU_CORES="`sysctl -n hw.ncpu`" + else + export NUM_CPU_CORES="`nproc`" + fi + make -j${NUM_CPU_CORES} + cd apps/umve + qmake + make -j${NUM_CPU_CORES} + cd ../.. + make -j${NUM_CPU_CORES} test + + - name: Run tests + run: ./tests/test +