diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/linux.yml | 60 | ||||
-rw-r--r-- | .github/workflows/macos.yml | 33 | ||||
-rw-r--r-- | .github/workflows/windows.yml | 43 |
3 files changed, 136 insertions, 0 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 0000000..e624171 --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,60 @@ +name: Linux + +on: + push: + branches: [ "*" ] + tags: [ "*" ] + pull_request: + branches: [ "trunk" ] + +env: + MARGS: "-j2" + +jobs: + + build: + strategy: + matrix: + include: + - name: Default + - name: Static + config: --enable-static + - name: Maintainer-mode + config: --enable-maintainer-mode + - name: Pool-debug + config: --enable-pool-debug + - name: Pool-debug, maintainer-mode + config: --enable-pool-debug --enable-maintainer-mode + - name: Maintainer-mode, no IPv6 + config: --enable-maintainer-mode --disable-ipv6 + - name: Maintainer-mode, -Werror + notest-cflags: -Werror + config: --enable-maintainer-mode + - name: ASan + # w/o ODBC since DSO unload leaks memory and fails the tests + notest-cflags: -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer -Werror -O2 + config: --with-odbc=no + - name: ASan, pool-debug + # w/o ODBC since DSO unload leaks memory and fails the tests + notest-cflags: -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer -Werror -O2 + config: --enable-pool-debug --with-odbc=no + - name: UBsan + notest-cflags: -fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer -Werror -O2 + fail-fast: false + + runs-on: ubuntu-latest + env: + NOTEST_CFLAGS: ${{ matrix.notest-cflags }} + name: ${{ matrix.name }} + steps: + - name: Install prerequisites + run: sudo apt-get install libtool libtool-bin + - uses: actions/checkout@v3 + - name: buildconf + run: ./buildconf + - name: configure + run: ./configure ${{ matrix.config }} + - name: make + run: make $MARGS + - name: make check + run: make check diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000..8647702 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,33 @@ +name: macOS + +on: + push: + branches: [ "*" ] + tags: [ "*" ] + pull_request: + branches: [ "trunk" ] + +env: + MARGS: "-j2" + +jobs: + + build: + strategy: + matrix: + os: [ "macos-latest" ] + + runs-on: ${{ matrix.os }} + env: + NOTEST_CFLAGS: ${{ matrix.notest-cflags }} + name: ${{ matrix.name }} + steps: + - uses: actions/checkout@v3 + - name: buildconf + run: ./buildconf + - name: configure + run: ./configure + - name: make + run: make $MARGS + - name: make check + run: make check diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000..96b303f --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,43 @@ +name: Windows + +on: + push: + branches: [ "*" ] + tags: [ "*" ] + pull_request: + branches: [ "trunk" ] + +jobs: + build: + strategy: + matrix: + os: [windows-latest] + build-type: [Debug, Release] + generator: [ "Visual Studio 17 2022" ] + arch: [ "Win32", "x64" ] + toolset: [ "v143", "v142", "v141" ] + fail-fast: false + + name: "MSVC ${{ matrix.toolset }} ${{ matrix.arch }} [${{ matrix.build-type }}] on ${{ matrix.os }}" + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v3 + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DAPR_BUILD_TESTAPR=ON -G "${{ matrix.generator }}" -A ${{ matrix.arch }} -T ${{ matrix.toolset }} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{ matrix.build-type }} + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -C ${{ matrix.build-type }} --output-on-failure |