luxonis / depthai-core

DepthAI C++ Library
MIT License
231 stars 126 forks source link

[BUG] {mingw64 XLinkConnection.cpp fails to compile due to an error in immintrin.h} #998

Open onthegrid007 opened 5 months ago

onthegrid007 commented 5 months ago

Describe the bug

[1/175] Building CXX object CMakeFiles/depthai-core.dir/src/xlink/XLinkConnection.cpp.obj
FAILED: CMakeFiles/depthai-core.dir/src/xlink/XLinkConnection.cpp.obj 
C:\PROGRA~1\MINGW-~1\mingw64\bin\G__~1.EXE -DBACKWARD_HAS_BACKTRACE=0 -DBACKWARD_HAS_BACKTRACE_SYMBOL=0 -DBACKWARD_HAS_BFD=0 -DBACKWARD_HAS_DW=0 -DBACKWARD_HAS_DWARF=0 -DBACKWARD_HAS_LIBUNWIND=0 -DBACKWARD_HAS_UNWIND=1 -DDEPTHAI_BOOTLOADER_VERSION=\"0.0.26\" -DDEPTHAI_DEVICE_VERSION=\"7665aed8712bb941958660a0103868908726eb56\" -DDEPTHAI_ENABLE_BACKWARD -DDEPTHAI_ENABLE_LIBUSB -DDEPTHAI_PATCH_ONLY_MODE -DDEPTHAI_RESOURCE_COMPILED_BINARIES -DDEPTHAI_TARGET_CORE -DJSON_USE_IMPLICIT_CONVERSIONS=1 -DLIBARCHIVE_STATIC -DSPDLOG_COMPILED_LIB -IC:/Users/localadmin/Desktop/gitlibs/depthai-core/include -IC:/Users/localadmin/Desktop/gitlibs/depthai-core/shared/depthai-shared/include -IC:/Users/localadmin/Desktop/gitlibs/depthai-core/shared/depthai-bootloader-shared/include -IC:/Users/localadmin/Desktop/gitlibs/depthai-core/include/depthai -IC:/Users/localadmin/Desktop/gitlibs/depthai-core/src -IC:/Users/localadmin/Desktop/gitlibs/depthai-core/shared/depthai-shared/src -IC:/Users/localadmin/Desktop/gitlibs/depthai-core/shared/depthai-bootloader-shared/src -isystem C:/Users/localadmin/Desktop/gitlibs/depthai-core/shared/depthai-shared/3rdparty -isystem C:/Users/localadmin/Desktop/gitlibs/depthai-core/build2/_cmrc/include -isystem C:/Users/localadmin/.hunter/_Base/cb0ea1f/bb6087f/1201417/Install/include -isystem C:/Users/localadmin/.hunter/_Base/cb0ea1f/bb6087f/1201417/Install/lib/backward -std=c++20 -fPIC -Wa,-mbig-obj -g -std=c++14 -Wall -Wextra -Woverloaded-virtual -Wformat=2 -Wmisleading-indentation -Wduplicated-cond -Wduplicated-branches -Wnull-dereference -Wdouble-promotion -Wsign-compare -Wtype-limits -Werror=return-type -Werror=non-virtual-dtor -Werror=sign-compare -Werror=reorder -Werror=switch-enum -MD -MT CMakeFiles/depthai-core.dir/src/xlink/XLinkConnection.cpp.obj -MF CMakeFiles\depthai-core.dir\src\xlink\XLinkConnection.cpp.obj.d -o CMakeFiles/depthai-core.dir/src/xlink/XLinkConnection.cpp.obj -c C:/Users/localadmin/Desktop/gitlibs/depthai-core/src/xlink/XLinkConnection.cpp
In file included from C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/immintrin.h:29,
                 from C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/x86intrin.h:32,
                 from C:/Program Files/mingw-w64/mingw64/x86_64-w64-mingw32/include/winnt.h:1658,
                 from C:/Program Files/mingw-w64/mingw64/x86_64-w64-mingw32/include/minwindef.h:163,
                 from C:/Program Files/mingw-w64/mingw64/x86_64-w64-mingw32/include/windef.h:9,
                 from C:/Program Files/mingw-w64/mingw64/x86_64-w64-mingw32/include/windows.h:69,
                 from C:/Users/localadmin/.hunter/_Base/cb0ea1f/bb6087f/1201417/Install/include/spdlog/details/windows_include.h:11,
                 from C:/Users/localadmin/.hunter/_Base/cb0ea1f/bb6087f/1201417/Install/include/spdlog/sinks/wincolor_sink.h:16,
                 from C:/Users/localadmin/.hunter/_Base/cb0ea1f/bb6087f/1201417/Install/include/spdlog/sinks/stdout_color_sinks.h:7,
                 from C:/Users/localadmin/Desktop/gitlibs/depthai-core/src/utility/Logging.hpp:12,
                 from C:/Users/localadmin/Desktop/gitlibs/depthai-core/src/xlink/XLinkConnection.cpp:26:
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_cvtsi32_si64(int)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:79:54: error: cannot convert a vector of type '__vector(2) int' to type '__m64' {aka 'int'} which has different size
   79 |   return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);
      |                                                      ^
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function 'int _mm_cvtsi64_si32(__m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:122:39: error: cannot convert '__m64' {aka 'int'} to '__vector(2) int'
  122 |   return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0);
      |                                       ^~~~~~~~~~~
      |                                       |
      |                                       __m64 {aka int}
<built-in>: note:   initializing argument 1 of 'int __builtin_ia32_vec_ext_v2si(__vector(2) int, int)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_packs_pi16(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:161:43: error: cannot convert '__v4hi' {aka 'short int'} to '__vector(4) short int'
  161 |   return (__m64) __builtin_ia32_packsswb ((__v4hi)__m1, (__v4hi)__m2);
      |                                           ^~~~~~~~~~~~
      |                                           |
      |                                           __v4hi {aka short int}
<built-in>: note:   initializing argument 1 of '__vector(8) char __builtin_ia32_packsswb(__vector(4) short int, __vector(4) short int)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_packs_pi32(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:176:43: error: cannot convert '__m64' {aka 'int'} to '__vector(2) int'
  176 |   return (__m64) __builtin_ia32_packssdw ((__v2si)__m1, (__v2si)__m2);
      |                                           ^~~~~~~~~~~~
      |                                           |
      |                                           __m64 {aka int}
<built-in>: note:   initializing argument 1 of '__vector(4) short int __builtin_ia32_packssdw(__vector(2) int, __vector(2) int)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_packs_pu16(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:191:43: error: cannot convert '__v4hi' {aka 'short int'} to '__vector(4) short int'
  191 |   return (__m64) __builtin_ia32_packuswb ((__v4hi)__m1, (__v4hi)__m2);
      |                                           ^~~~~~~~~~~~
      |                                           |
      |                                           __v4hi {aka short int}
<built-in>: note:   initializing argument 1 of '__vector(8) char __builtin_ia32_packuswb(__vector(4) short int, __vector(4) short int)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_unpackhi_pi8(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:205:44: error: cannot convert '__v8qi' {aka 'char'} to '__vector(8) char'
  205 |   return (__m64) __builtin_ia32_punpckhbw ((__v8qi)__m1, (__v8qi)__m2);
      |                                            ^~~~~~~~~~~~
      |                                            |
      |                                            __v8qi {aka char}
<built-in>: note:   initializing argument 1 of '__vector(8) char __builtin_ia32_punpckhbw(__vector(8) char, __vector(8) char)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_unpackhi_pi16(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:219:44: error: cannot convert '__v4hi' {aka 'short int'} to '__vector(4) short int'
  219 |   return (__m64) __builtin_ia32_punpckhwd ((__v4hi)__m1, (__v4hi)__m2);
      |                                            ^~~~~~~~~~~~
      |                                            |
      |                                            __v4hi {aka short int}
<built-in>: note:   initializing argument 1 of '__vector(4) short int __builtin_ia32_punpckhwd(__vector(4) short int, __vector(4) short int)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_unpackhi_pi32(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:233:44: error: cannot convert '__m64' {aka 'int'} to '__vector(2) int'
  233 |   return (__m64) __builtin_ia32_punpckhdq ((__v2si)__m1, (__v2si)__m2);
      |                                            ^~~~~~~~~~~~
      |                                            |
      |                                            __m64 {aka int}
<built-in>: note:   initializing argument 1 of '__vector(2) int __builtin_ia32_punpckhdq(__vector(2) int, __vector(2) int)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_unpacklo_pi8(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:247:44: error: cannot convert '__v8qi' {aka 'char'} to '__vector(8) char'
  247 |   return (__m64) __builtin_ia32_punpcklbw ((__v8qi)__m1, (__v8qi)__m2);
      |                                            ^~~~~~~~~~~~
      |                                            |
      |                                            __v8qi {aka char}
<built-in>: note:   initializing argument 1 of '__vector(8) char __builtin_ia32_punpcklbw(__vector(8) char, __vector(8) char)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_unpacklo_pi16(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:261:44: error: cannot convert '__v4hi' {aka 'short int'} to '__vector(4) short int'
  261 |   return (__m64) __builtin_ia32_punpcklwd ((__v4hi)__m1, (__v4hi)__m2);
      |                                            ^~~~~~~~~~~~
      |                                            |
      |                                            __v4hi {aka short int}
<built-in>: note:   initializing argument 1 of '__vector(4) short int __builtin_ia32_punpcklwd(__vector(4) short int, __vector(4) short int)'
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h: In function '__m64 _mm_unpacklo_pi32(__m64, __m64)':
C:/Program Files/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/mmintrin.h:275:44: error: cannot convert '__m64' {aka 'int'} to '__vector(2) int'
  275 |   return (__m64) __builtin_ia32_punpckldq ((__v2si)__m1, (__v2si)__m2);
      |                                            ^~~~~~~~~~~~
      |                                            |
      |                                            __m64 {aka int}

Minimal Reproducible Example clone depthai-core mkdir depthai-core/build cd depthai-core/build cmake -G Ninja .. -DCMAKE_CXX_ARGS="-std=c++20 -fPIC -Wa,-mbig-obj"

Not sure what is going on but now trying to compile on windows using mingw64, there's 10 pages of cascading errors on that one include file not using proper types.

moratom commented 5 months ago

Hi @onthegrid007,

sorry for the issues but we only test&support the MSVC compiler for windows. If you manage to resolve the issue, we'd be happy to accept a PR with the fixes.