diff options
Diffstat (limited to '.github/workflows/mingw.yml')
-rw-r--r-- | .github/workflows/mingw.yml | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml new file mode 100644 index 00000000..a297e8ca --- /dev/null +++ b/.github/workflows/mingw.yml @@ -0,0 +1,170 @@ +--- +name: mingw + +on: + pull_request: + types: [opened, synchronize] + paths-ignore: + - '**.md' + - '.mailmap' + - 'ChangeLog*' + - 'whatsnew*' + - 'LICENSE' + push: + paths-ignore: + - '**.md' + - '.mailmap' + - 'ChangeLog*' + - 'whatsnew*' + - 'LICENSE' + +jobs: + autotools: + runs-on: windows-2019 + if: "!contains(github.event.head_commit.message, 'ci skip')" + strategy: + fail-fast: false + matrix: + EVENT_MATRIX: + - none + - disable-openssl + - disable-thread-support + - disable-debug-mode + - disable-malloc-replacement + + steps: + - uses: actions/checkout@v2.0.0 + + - name: Cache MinGW + id: cache-mingw + uses: actions/cache@v1.1.2 + with: + path: D:\a\_temp\msys + key: windows-mingw + + - name: Cache Build + uses: actions/cache@v1.1.2 + with: + path: build + key: mingw-autotools-${{ matrix.EVENT_MATRIX }}-v2 + + - uses: numworks/setup-msys2@v1 + if: steps.cache-mingw.outputs.cache-hit != 'true' + with: + msystem: MINGW64 + + - name: Install Dependes + if: steps.cache-mingw.outputs.cache-hit != 'true' + run: | + msys2do pacman -S --noconfirm mingw-w64-x86_64-gcc autoconf automake libtool mingw-w64-x86_64-openssl + + - name: Build And Test + shell: powershell + run: | + $env:EVENT_CONFIGURE_OPTIONS="" + if ( "${{ matrix.EVENT_MATRIX }}" -ne "none" ) { + $env:EVENT_CONFIGURE_OPTIONS="--${{ matrix.EVENT_MATRIX }}" + } + $env:EVENT_TESTS_PARALLEL=1 + $env:EVENT_BUILD_PARALLEL=10 + + $script=' + export PATH="/mingw64/bin:/usr/bin:/bin:/usr/local/bin:/opt/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:$PATH" + ./autogen.sh 2>&1 3>&1 + [[ $? -ne 0 ]] && exit 1 + mkdir -p build + cd build + [[ $? -ne 0 ]] && exit 1 + LDFLAGS="-L/mingw64/lib" CFLAGS="-I/mingw64/include" ../configure $EVENT_CONFIGURE_OPTIONS 2>&1 + [[ $? -ne 0 ]] && exit 1 + make -j $EVENT_BUILD_PARALLEL 2>&1 + [[ $? -ne 0 ]] && exit 1 + make verify -j $EVENT_TESTS_PARALLEL 2>&1 ' + D:\a\_temp\msys\msys64\usr\bin\bash.exe -c $script + + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: mingw-${{ matrix.EVENT_MATRIX }}-build + path: build + + cmake: + runs-on: windows-2019 + if: "!contains(github.event.head_commit.message, 'ci skip')" + strategy: + fail-fast: false + matrix: + EVENT_MATRIX: + - NONE + - DISABLE_OPENSSL + - DISABLE_THREAD_SUPPORT + - DISABLE_DEBUG_MODE + - DISABLE_MM_REPLACEMENT + + steps: + - uses: actions/checkout@v2.0.0 + + - name: Cache MinGW + id: cache-mingw-cmake + uses: actions/cache@v1.1.2 + with: + path: D:\a\_temp\msys + key: windows-mingw-cmake + + - name: Cache Build + uses: actions/cache@v1.1.2 + with: + path: build + key: mingw-cmake-${{ matrix.EVENT_MATRIX }}-v2 + + - uses: numworks/setup-msys2@v1 + if: steps.cache-mingw-cmake.outputs.cache-hit != 'true' + with: + msystem: MINGW64 + + - name: Install Dependes + if: steps.cache-mingw-cmake.outputs.cache-hit != 'true' + run: | + msys2do pacman -S --noconfirm mingw-w64-x86_64-gcc mingw-w64-x86_64-openssl + + - name: Build And Test + shell: powershell + run: | + $EVENT_CONFIGURE_OPTIONS="" + if ( "${{ matrix.EVENT_MATRIX }}" -ne "NONE" ) { + $EVENT_CONFIGURE_OPTIONS="-DEVENT__${{ matrix.EVENT_MATRIX }}=ON" + } + $env:PATH="D:\a\_temp\msys\msys64\mingw64\bin;D:\a\_temp\msys\msys64\usr\bin;$env:PATH" + mkdir build -ea 0 + cd build + function cmake_configure($retry) + { + $errcode=0 + try { + cmake .. -G "MSYS Makefiles" $EVENT_CONFIGURE_OPTIONS -DCMAKE_C_FLAGS=-w + $errcode=$LastExitCode + } + catch { + $errcode=1 + } + finally { + if ($errcode -ne 0) { + if ($retry -eq 0) { + $host.SetShouldExit($LastExitCode) + } else { + echo "Remove all entries in build directory" + rm -r -fo * + cmake_configure 0 + } + } + } + } + cmake_configure 1 + cmake --build . + ctest -V + + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: mingw-${{ matrix.EVENT_MATRIX }}-build + path: build |