diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..18701dd9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,54 @@ +name: Build + +on: [push, pull_request, workflow_dispatch] + +env: + BUILD_TYPE: Release + +jobs: + build: + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + include: + - os: windows-latest + cmake_extra_args: '-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"' + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Ubuntu + run: sudo apt install -y libcppunit-dev zlib1g-dev + if: matrix.os == 'ubuntu-latest' + + - name: Set up macOS + run: brew install cppunit + if: matrix.os == 'macos-latest' + + - name: Set up Windows + run: vcpkg install cppunit --triplet x64-windows + if: matrix.os == 'windows-latest' + + - name: Configure + run: > + cmake -B${{github.workspace}}/build + -DBUILD_SHARED_LIBS=ON -DVISIBILITY_HIDDEN=ON + -DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON -DBUILD_BINDINGS=ON + -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + ${{ matrix.cmake_extra_args }} + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{env.BUILD_TYPE}} -V --no-tests=error + if: matrix.os != 'windows-latest' + + - name: Test Windows + working-directory: ${{github.workspace}}/build + run: | + $env:Path += ";$env:VCPKG_INSTALLATION_ROOT\packages\cppunit_x64-windows\bin;$PWD\taglib\Release" + ctest -C ${{env.BUILD_TYPE}} -V --no-tests=error + if: matrix.os == 'windows-latest' diff --git a/.gitignore b/.gitignore index bddad086..9b18e739 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ CMakeFiles/ *.suo *.user .* +!.github/workflows/ *~ /CMakeCache.txt /Doxyfile diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e7f1b2a0..00000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: cpp - -sudo: false - -os: - - linux - - osx - -dist: trusty - -compiler: - - gcc - - clang - -arch: - - ppc64le - -addons: - apt: - packages: - - libcppunit-dev - - zlib1g-dev - -matrix: - exclude: - - os: osx - compiler: gcc - -install: - - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install cppunit; fi - -script: cmake -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_BINDINGS=ON -DCMAKE_CXX_FLAGS="-std=c++11" . && make && make check diff --git a/README.md b/README.md index 6e443dc0..7efe35e3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # TagLib -[![Build Status](https://travis-ci.org/taglib/taglib.svg?branch=master)](https://travis-ci.org/taglib/taglib) +[![Build Status](../../actions/workflows/build.yml/badge.svg)](../../actions) ### TagLib Audio Metadata Library @@ -23,4 +23,3 @@ licenses if you are considering using TagLib in your project. [FLAC]: https://xiph.org/flac/ [GNU Lesser General Public License]: https://www.gnu.org/licenses/lgpl.html [Mozilla Public License]: https://www.mozilla.org/MPL/MPL-1.1.html -