From c268bafa707c6b6a8a875b7d446bd30a0176cb06 Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Tue, 18 Jul 2023 00:07:04 +0200 Subject: [PATCH 1/7] Introduce github action workflow with clang on windows --- .github/workflows/windows-clang.yaml | 82 ++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/windows-clang.yaml diff --git a/.github/workflows/windows-clang.yaml b/.github/workflows/windows-clang.yaml new file mode 100644 index 0000000000..7868044bf9 --- /dev/null +++ b/.github/workflows/windows-clang.yaml @@ -0,0 +1,82 @@ +name: Windows - clang +on: + pull_request: + push: + +jobs: + build: + runs-on: ${{ matrix.os }} + defaults: + run: + shell: cmd + strategy: + fail-fast: false + matrix: + name: [windows-latest-clang] + + include: + - name: windows-latest-clang + os: windows-2022 + compiler: clang-cl + + steps: + # https://github.com/marketplace/actions/cancel-workflow-action + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Display the workspace path + working-directory: ${{ github.workspace }} + run: pwd + + - name: Clone visp-images + shell: bash + # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ + run: | + git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH: ${{ env.VISP_INPUT_IMAGE_PATH }}" + + - name: Configure ViSP + working-directory: ${{ github.workspace }} + run: | + set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} + echo "VISP_INPUT_IMAGE_PATH: " + echo %VISP_INPUT_IMAGE_PATH% + mkdir build + cd build + cmake .. -G "Visual Studio 17 2022" -T "ClangCl" -A "x64" + type ViSP-third-party.txt + + - name: Build ViSP + working-directory: build + run: | + cmake --build . --config Release + + - name: Install ViSP + working-directory: build + run: | + cmake --build . --config Release --target install + + - name: Check installation folder + working-directory: build + run: | + dir ${{ github.workspace }}\build\install\ + dir ${{ github.workspace }}\build\install\x64\ + dir ${{ github.workspace }}\build\install\x64\vc17\ + dir ${{ github.workspace }}\build\install\x64\vc17\bin + + - name: Test ViSP + working-directory: build + run: | + set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} + echo "VISP_INPUT_IMAGE_PATH: " + echo %VISP_INPUT_IMAGE_PATH% + set PATH=%PATH%;${{ github.workspace }}\build\install\x64\vc17\bin + echo "PATH: " + echo %PATH% + ctest --output-on-failure -C Release -V From e4036a487f4f11d7ad365d0e87efba425ae9871e Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Tue, 18 Jul 2023 00:09:28 +0200 Subject: [PATCH 2/7] Set VISP_INPUT_IMAGE_PATH before configuration --- .github/workflows/{windows.yaml => windows-msvc.yaml} | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) rename .github/workflows/{windows.yaml => windows-msvc.yaml} (80%) diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows-msvc.yaml similarity index 80% rename from .github/workflows/windows.yaml rename to .github/workflows/windows-msvc.yaml index 99d091fa02..4a3b846ce3 100644 --- a/.github/workflows/windows.yaml +++ b/.github/workflows/windows-msvc.yaml @@ -37,14 +37,17 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV - name: Configure ViSP working-directory: ${{ github.workspace }} run: | + set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} + echo "VISP_INPUT_IMAGE_PATH: " + echo %VISP_INPUT_IMAGE_PATH% mkdir build cd build - cmake .. -G "Visual Studio 16 2019" -A "x64" -DCMAKE_GENERATOR_PLATFORM=x64 + cmake .. -G "Visual Studio 16 2019" -A "x64" type ViSP-third-party.txt - name: Build ViSP @@ -65,7 +68,9 @@ jobs: - name: Test ViSP working-directory: build run: | - echo "VISP_INPUT_IMAGE_PATH: ${{ env.VISP_INPUT_IMAGE_PATH }}" + set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} + echo "VISP_INPUT_IMAGE_PATH: " + echo %VISP_INPUT_IMAGE_PATH% set PATH=%PATH%;${{ github.workspace }}\build\install\x64\vc16\bin echo "PATH: " echo %PATH% From 5887e020e3f75f8ffa091b8afaa4fbad7da4024b Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Tue, 18 Jul 2023 08:30:29 +0200 Subject: [PATCH 3/7] Fix setting VISP_INPUT_IMAGE_PATH env var - now VISP_INPUT_IMAGE_PATH is hardcoded to C:\Users\runneradmin\visp-images - since using ${HOME}/visp-images brings "c/users/runneradmin/visp-images" that is not a recognize path --- .github/workflows/windows-clang.yaml | 9 +-------- .github/workflows/windows-msvc.yaml | 8 +------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/.github/workflows/windows-clang.yaml b/.github/workflows/windows-clang.yaml index 7868044bf9..e418423fde 100644 --- a/.github/workflows/windows-clang.yaml +++ b/.github/workflows/windows-clang.yaml @@ -38,15 +38,11 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV - echo "VISP_INPUT_IMAGE_PATH: ${{ env.VISP_INPUT_IMAGE_PATH }}" + echo "VISP_INPUT_IMAGE_PATH=C:\Users\runneradmin\visp-images" >> $GITHUB_ENV - name: Configure ViSP working-directory: ${{ github.workspace }} run: | - set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} - echo "VISP_INPUT_IMAGE_PATH: " - echo %VISP_INPUT_IMAGE_PATH% mkdir build cd build cmake .. -G "Visual Studio 17 2022" -T "ClangCl" -A "x64" @@ -73,9 +69,6 @@ jobs: - name: Test ViSP working-directory: build run: | - set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} - echo "VISP_INPUT_IMAGE_PATH: " - echo %VISP_INPUT_IMAGE_PATH% set PATH=%PATH%;${{ github.workspace }}\build\install\x64\vc17\bin echo "PATH: " echo %PATH% diff --git a/.github/workflows/windows-msvc.yaml b/.github/workflows/windows-msvc.yaml index 4a3b846ce3..7c598b2c75 100644 --- a/.github/workflows/windows-msvc.yaml +++ b/.github/workflows/windows-msvc.yaml @@ -37,14 +37,11 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=C:\Users\runneradmin\visp-images" >> $GITHUB_ENV - name: Configure ViSP working-directory: ${{ github.workspace }} run: | - set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} - echo "VISP_INPUT_IMAGE_PATH: " - echo %VISP_INPUT_IMAGE_PATH% mkdir build cd build cmake .. -G "Visual Studio 16 2019" -A "x64" @@ -68,9 +65,6 @@ jobs: - name: Test ViSP working-directory: build run: | - set VISP_INPUT_IMAGE_PATH=${{ env.VISP_INPUT_IMAGE_PATH }} - echo "VISP_INPUT_IMAGE_PATH: " - echo %VISP_INPUT_IMAGE_PATH% set PATH=%PATH%;${{ github.workspace }}\build\install\x64\vc16\bin echo "PATH: " echo %PATH% From eb731fd04dba9e808b6691ebc6a4aae8c0b9170d Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Tue, 18 Jul 2023 08:39:29 +0200 Subject: [PATCH 4/7] Make VISP_INPUT_IMAGE_PATH more explicit adding the visp-images folder name --- .github/workflows/coverage.yml | 2 +- .github/workflows/macos-ustk.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/other-arch.yml | 2 +- .github/workflows/ubuntu-dep-apt.yml | 2 +- .github/workflows/ubuntu-dep-src.yml | 2 +- .github/workflows/ubuntu-sanitizers.yml | 2 +- .github/workflows/ubuntu-ustk.yml | 2 +- .github/workflows/valgrind.yml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 0e1e27b52b..7ef65bb38d 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -39,7 +39,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Configure CMake diff --git a/.github/workflows/macos-ustk.yml b/.github/workflows/macos-ustk.yml index beabcfc71f..eeee203e77 100644 --- a/.github/workflows/macos-ustk.yml +++ b/.github/workflows/macos-ustk.yml @@ -42,7 +42,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Clone ustk-dataset diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index da6a0f65ba..ecd5537926 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -49,7 +49,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Clone visp_sample diff --git a/.github/workflows/other-arch.yml b/.github/workflows/other-arch.yml index 11478403c1..e45cab8a58 100644 --- a/.github/workflows/other-arch.yml +++ b/.github/workflows/other-arch.yml @@ -64,7 +64,7 @@ jobs: apt-get update && apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - export VISP_INPUT_IMAGE_PATH=$HOME + export VISP_INPUT_IMAGE_PATH=$HOME/visp-images echo ${VISP_INPUT_IMAGE_PATH} pwd diff --git a/.github/workflows/ubuntu-dep-apt.yml b/.github/workflows/ubuntu-dep-apt.yml index 99dffa743b..df6cbce732 100644 --- a/.github/workflows/ubuntu-dep-apt.yml +++ b/.github/workflows/ubuntu-dep-apt.yml @@ -50,7 +50,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Clone visp_sample diff --git a/.github/workflows/ubuntu-dep-src.yml b/.github/workflows/ubuntu-dep-src.yml index 4f0fc97c16..a4f3ce68b8 100644 --- a/.github/workflows/ubuntu-dep-src.yml +++ b/.github/workflows/ubuntu-dep-src.yml @@ -118,7 +118,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Configure CMake diff --git a/.github/workflows/ubuntu-sanitizers.yml b/.github/workflows/ubuntu-sanitizers.yml index fd77b7bd2b..7f823105af 100644 --- a/.github/workflows/ubuntu-sanitizers.yml +++ b/.github/workflows/ubuntu-sanitizers.yml @@ -47,7 +47,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Configure CMake diff --git a/.github/workflows/ubuntu-ustk.yml b/.github/workflows/ubuntu-ustk.yml index ff25b9f3a9..58f892f24f 100644 --- a/.github/workflows/ubuntu-ustk.yml +++ b/.github/workflows/ubuntu-ustk.yml @@ -48,7 +48,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Clone ustk-dataset diff --git a/.github/workflows/valgrind.yml b/.github/workflows/valgrind.yml index b93a729297..493dee0990 100644 --- a/.github/workflows/valgrind.yml +++ b/.github/workflows/valgrind.yml @@ -36,7 +36,7 @@ jobs: # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/ run: | git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images - echo "VISP_INPUT_IMAGE_PATH=$HOME" >> $GITHUB_ENV + echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV echo ${VISP_INPUT_IMAGE_PATH} - name: Configure CMake From 7e76defc900c21279c5e15e40e501253be3523db Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Tue, 18 Jul 2023 08:40:44 +0200 Subject: [PATCH 5/7] Consider the specific case of clang on windows that uses unix like flags --- 3rdparty/clapack/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/clapack/CMakeLists.txt b/3rdparty/clapack/CMakeLists.txt index b8f4699e88..21e86557a7 100644 --- a/3rdparty/clapack/CMakeLists.txt +++ b/3rdparty/clapack/CMakeLists.txt @@ -37,7 +37,7 @@ if(NOT BUILD_SHARED_LIBS) vp_install_target(${LAPACK_LIBRARY} EXPORT VISPModules ARCHIVE DESTINATION ${VISP_3P_LIB_INSTALL_PATH} COMPONENT dev) endif() -if(MSVC) +if(MSVC AND NOT ((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))) # Disable Visual C++ warnings foreach(f ${lib_srcs}) vp_set_source_file_compile_flag(${f} /wd4244 /wd4267 /wd4273 /wd4554 /wd4723 /wd4996) From 93bb34ba9c7aa7cbc021a87908501ffbed8a3ff5 Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Tue, 18 Jul 2023 08:40:57 +0200 Subject: [PATCH 6/7] Fix simdlib build with clang on windows - add explicitely -avx and -avx2 build flags to avoid error : use of undeclared identifier '__m256' - consider the specific case of clang on windows that uses unix-like comiler flags --- 3rdparty/simdlib/CMakeLists.txt | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/3rdparty/simdlib/CMakeLists.txt b/3rdparty/simdlib/CMakeLists.txt index 6260825803..63fa75c78d 100644 --- a/3rdparty/simdlib/CMakeLists.txt +++ b/3rdparty/simdlib/CMakeLists.txt @@ -25,7 +25,7 @@ if(X86 OR X86_64) set(AVX_FLAG "") set(AVX2_FLAG "") - if(MSVC) + if(MSVC AND NOT ((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))) if(NOT MSVC64) vp_check_compiler_flag(CXX "/arch:SSE2" HAVE_SSE2_FLAG "${VISP_SOURCE_DIR}/cmake/checks/cpu_sse2.cpp") endif() @@ -136,6 +136,11 @@ if(X86 OR X86_64) if(HAVE_NO_MISSING_FIELD_FLAG) set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -Wno-missing-field-initializers") endif() + + if((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + # Clang under windows needs AVX flags + set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG} ${AVX2_FLAG}") + endif() endif() file(GLOB_RECURSE SIMD_BASE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Simd/SimdBase*.cpp) @@ -148,22 +153,10 @@ if(X86 OR X86_64) set_source_files_properties(${SIMD_SSE41_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${SSE4_2_FLAG}") file(GLOB_RECURSE SIMD_AVX1_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Simd/SimdAvx1*.cpp) - if(MSVC) - set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") - elseif((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) - set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") - else() - set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") - endif() + set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") file(GLOB_RECURSE SIMD_AVX2_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Simd/SimdAvx2*.cpp) - if(MSVC) - set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") - elseif((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) - set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") - else() - set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") - endif() + set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") set(SIMD_LIB_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") set(SIMD_ALG_SRC ${SIMD_BASE_SRC} ${SIMD_SSE2_SRC} ${SIMD_SSE41_SRC} ${SIMD_AVX1_SRC} ${SIMD_AVX2_SRC}) From 24f3445a7844565ad941294dad3811ae1a295fb8 Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Tue, 18 Jul 2023 13:53:23 +0200 Subject: [PATCH 7/7] Revert changes introduced in simdlib CMakeLists.txt to add avx flags. It seems that they are breaking macos ci --- 3rdparty/simdlib/CMakeLists.txt | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/3rdparty/simdlib/CMakeLists.txt b/3rdparty/simdlib/CMakeLists.txt index 63fa75c78d..6260825803 100644 --- a/3rdparty/simdlib/CMakeLists.txt +++ b/3rdparty/simdlib/CMakeLists.txt @@ -25,7 +25,7 @@ if(X86 OR X86_64) set(AVX_FLAG "") set(AVX2_FLAG "") - if(MSVC AND NOT ((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))) + if(MSVC) if(NOT MSVC64) vp_check_compiler_flag(CXX "/arch:SSE2" HAVE_SSE2_FLAG "${VISP_SOURCE_DIR}/cmake/checks/cpu_sse2.cpp") endif() @@ -136,11 +136,6 @@ if(X86 OR X86_64) if(HAVE_NO_MISSING_FIELD_FLAG) set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -Wno-missing-field-initializers") endif() - - if((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) - # Clang under windows needs AVX flags - set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG} ${AVX2_FLAG}") - endif() endif() file(GLOB_RECURSE SIMD_BASE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Simd/SimdBase*.cpp) @@ -153,10 +148,22 @@ if(X86 OR X86_64) set_source_files_properties(${SIMD_SSE41_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${SSE4_2_FLAG}") file(GLOB_RECURSE SIMD_AVX1_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Simd/SimdAvx1*.cpp) - set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") + if(MSVC) + set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") + elseif((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") + else() + set_source_files_properties(${SIMD_AVX1_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX_FLAG}") + endif() file(GLOB_RECURSE SIMD_AVX2_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Simd/SimdAvx2*.cpp) - set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") + if(MSVC) + set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") + elseif((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") + else() + set_source_files_properties(${SIMD_AVX2_SRC} PROPERTIES COMPILE_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") + endif() set(SIMD_LIB_FLAGS "${COMMON_CXX_FLAGS} ${AVX2_FLAG}") set(SIMD_ALG_SRC ${SIMD_BASE_SRC} ${SIMD_SSE2_SRC} ${SIMD_SSE41_SRC} ${SIMD_AVX1_SRC} ${SIMD_AVX2_SRC})