From bd73c5630a11278aa92bf60ea8c6e69277bce079 Mon Sep 17 00:00:00 2001 From: Alex Deymo Date: Tue, 19 Oct 2021 14:50:46 +0200 Subject: [PATCH] Build and test on Windows MSYS2 New GitHub workflow to build and test on a Windows MSYS2 build in 32 and 64 bits. This patch sets the `LANGUAGES` to `CXX` in the cmake project to avoid setting up the `C` language which is not used by the project. Due to a bug in cmake ninja generator with MSYS we can't set a prefix on the target because it creates a duplicated ninja rule. --- .github/workflows/build_test.yml | 49 ++++++++++++++++++++++++++++++++ CMakeLists.txt | 8 ++++-- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index bab1630bda..c64e070ef0 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -55,3 +55,52 @@ jobs: path: ~/.cache/bazel key: bazel-${{ runner.os }} - run: bazel build //... + + windows_msys2: + name: Windows MSYS2 / ${{ matrix.arch }} + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + include: + - arch: x86_64 + msystem: mingw64 + - arch: i686 + msystem: mingw32 + defaults: + run: + shell: msys2 {0} + steps: + - uses: actions/checkout@v2 + - uses: msys2/setup-msys2@v2 + with: + msystem: ${{ matrix.msystem }} + update: true + install: >- + base-devel + git + mingw-w64-${{ matrix.arch }}-cmake + mingw-w64-${{ matrix.arch }}-gcc + mingw-w64-${{ matrix.arch }}-gtest + mingw-w64-${{ matrix.arch }}-ninja + + - name: CMake configure + # TODO(deymo): Set HWY_WARNINGS_ARE_ERRORS=ON once the warnings are + # resolved. + run: | + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DHWY_WARNINGS_ARE_ERRORS=OFF \ + -DHWY_SYSTEM_GTEST=ON \ + -B out \ + -G Ninja + - name: CMake build + run: cmake --build out + - name: Test + run: ctest --test-dir out --parallel 2 --output-on-failure + + - uses: actions/upload-artifact@v2 + if: failure() + with: + name: my-artifact + path: out/ diff --git a/CMakeLists.txt b/CMakeLists.txt index f5d81ee63d..1eb52dccc8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,7 @@ if(POLICY CMP0083) cmake_policy(SET CMP0083 NEW) endif() -project(hwy VERSION 0.14.2) # Keep in sync with highway.h version +project(hwy LANGUAGES CXX VERSION 0.14.2) # Keep in sync with highway.h version set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_EXTENSIONS OFF) @@ -374,8 +374,10 @@ foreach (TESTFILE IN LISTS HWY_TEST_FILES) else() target_link_libraries(${TESTNAME} hwy hwy_contrib hwy_test gtest gtest_main) endif() - # Output test targets in the test directory. - set_target_properties(${TESTNAME} PROPERTIES PREFIX "tests/") + if(!MSYS) + # Output test targets in the test directory. + set_target_properties(${TESTNAME} PROPERTIES PREFIX "tests/") + endif() if (HWY_EMSCRIPTEN) set_target_properties(${TESTNAME} PROPERTIES LINK_FLAGS "-s SINGLE_FILE=1")