jetperch/jls

Build fails on SSE4.2 features required for x86_64

petertorelli opened this issue · 2 comments

Hi Matt,

Using clang on big sur:

% gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin20.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

And then.

% cmake ..
:
:
% make
Scanning dependencies of target jls_objlib
[  3%] Building C object src/CMakeFiles/jls_objlib.dir/ec.c.o
[  7%] Building C object src/CMakeFiles/jls_objlib.dir/log.c.o
[ 11%] Building C object src/CMakeFiles/jls_objlib.dir/msg_ring_buffer.c.o
[ 15%] Building C object src/CMakeFiles/jls_objlib.dir/raw.c.o
[ 19%] Building C object src/CMakeFiles/jls_objlib.dir/reader.c.o
[ 23%] Building C object src/CMakeFiles/jls_objlib.dir/statistics.c.o
[ 26%] Building C object src/CMakeFiles/jls_objlib.dir/threaded_writer.c.o
[ 30%] Building C object src/CMakeFiles/jls_objlib.dir/wf_f32.c.o
[ 34%] Building C object src/CMakeFiles/jls_objlib.dir/writer.c.o
[ 38%] Building C object src/CMakeFiles/jls_objlib.dir/backend_posix.c.o
[ 42%] Building C object src/CMakeFiles/jls_objlib.dir/crc32c_intel_sse4.c.o
/Users/ptorelli/git/jls/src/crc32c_intel_sse4.c:29:13: error: always_inline function '_mm_crc32_u64'
      requires target feature 'sse4.2', but would be inlined into function 'jls_crc32c_hdr' that is
      compiled without support for 'sse4.2'
    crc64 = _mm_crc32_u64(0xFFFFFFFF, data[0]);
            ^
/Users/ptorelli/git/jls/src/crc32c_intel_sse4.c:30:13: error: always_inline function '_mm_crc32_u64'
      requires target feature 'sse4.2', but would be inlined into function 'jls_crc32c_hdr' that is
      compiled without support for 'sse4.2'
    crc64 = _mm_crc32_u64(crc64, data[1]);
            ^
/Users/ptorelli/git/jls/src/crc32c_intel_sse4.c:31:13: error: always_inline function '_mm_crc32_u64'
      requires target feature 'sse4.2', but would be inlined into function 'jls_crc32c_hdr' that is
      compiled without support for 'sse4.2'
    crc64 = _mm_crc32_u64(crc64, data[2]);
            ^
/Users/ptorelli/git/jls/src/crc32c_intel_sse4.c:32:13: error: always_inline function '_mm_crc32_u32'
      requires target feature 'sse4.2', but would be inlined into function 'jls_crc32c_hdr' that is
      compiled without support for 'sse4.2'
    crc32 = _mm_crc32_u32((uint32_t) crc64, (uint32_t) data[3]);
            ^
4 errors generated.
make[2]: *** [src/CMakeFiles/jls_objlib.dir/crc32c_intel_sse4.c.o] Error 1
make[1]: *** [src/CMakeFiles/jls_objlib.dir/all] Error 2
make: *** [all] Error 2

The CMake did not support Clang, only gcc. Fixed in main (version 0.2.2).

Confirmed, thanks!