mirror of
https://github.com/google/snappy.git
synced 2024-11-28 05:44:33 +00:00
4f0adca400
A previous version of this was submitted and rolled back due to breakage -- an attempt to accommodate Visual Studio resulted in compiler errors on GCC/Clang with -mavx2 but without -mbmi2. This version makes the BMI2 support check more strict, to avoid the errors. A previous CL introduced _bzhi_u32 (part of Intel's BMI2 instruction set, released in Haswell) gated by a check for the __BMI2__ preprocessor macro. This works for Clang and GCC, but does not work on Visual Studio, and may not work on other compilers. This CL plumbs the BMI2 support checks through the CMake configuration used by the open source build. It also replaces the <x86intrin.h> header, which does not exist on Visual Studio, with the more scoped headers <tmmintrin.h> (for SSSE3) and <immintrin.h> (for BMI2/AVX2). Asides from fixing the open source build, the more scoped headers make it slightly less likely that newer intrinsics will creep in without proper gating.
63 lines
2 KiB
C
63 lines
2 KiB
C
#ifndef THIRD_PARTY_SNAPPY_OPENSOURCE_CMAKE_CONFIG_H_
|
|
#define THIRD_PARTY_SNAPPY_OPENSOURCE_CMAKE_CONFIG_H_
|
|
|
|
/* Define to 1 if the compiler supports __builtin_ctz and friends. */
|
|
#cmakedefine HAVE_BUILTIN_CTZ 1
|
|
|
|
/* Define to 1 if the compiler supports __builtin_expect. */
|
|
#cmakedefine HAVE_BUILTIN_EXPECT 1
|
|
|
|
/* Define to 1 if you have the <byteswap.h> header file. */
|
|
#cmakedefine HAVE_BYTESWAP_H 1
|
|
|
|
/* Define to 1 if you have a definition for mmap() in <sys/mman.h>. */
|
|
#cmakedefine HAVE_FUNC_MMAP 1
|
|
|
|
/* Define to 1 if you have a definition for sysconf() in <unistd.h>. */
|
|
#cmakedefine HAVE_FUNC_SYSCONF 1
|
|
|
|
/* Define to 1 to use the gflags package for command-line parsing. */
|
|
#cmakedefine HAVE_GFLAGS 1
|
|
|
|
/* Define to 1 if you have Google Test. */
|
|
#cmakedefine HAVE_GTEST 1
|
|
|
|
/* Define to 1 if you have the `lzo2' library (-llzo2). */
|
|
#cmakedefine HAVE_LIBLZO2 1
|
|
|
|
/* Define to 1 if you have the `z' library (-lz). */
|
|
#cmakedefine HAVE_LIBZ 1
|
|
|
|
/* Define to 1 if you have the <sys/endian.h> header file. */
|
|
#cmakedefine HAVE_SYS_ENDIAN_H 1
|
|
|
|
/* Define to 1 if you have the <sys/mman.h> header file. */
|
|
#cmakedefine HAVE_SYS_MMAN_H 1
|
|
|
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
|
#cmakedefine HAVE_SYS_RESOURCE_H 1
|
|
|
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
|
#cmakedefine HAVE_SYS_TIME_H 1
|
|
|
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
|
#cmakedefine HAVE_SYS_UIO_H 1
|
|
|
|
/* Define to 1 if you have the <unistd.h> header file. */
|
|
#cmakedefine HAVE_UNISTD_H 1
|
|
|
|
/* Define to 1 if you have the <windows.h> header file. */
|
|
#cmakedefine HAVE_WINDOWS_H 1
|
|
|
|
/* Define to 1 if you target processors with SSSE3+ and have <tmmintrin.h>. */
|
|
#cmakedefine01 SNAPPY_HAVE_SSSE3
|
|
|
|
/* Define to 1 if you target processors with BMI2+ and have <bmi2intrin.h>. */
|
|
#cmakedefine01 SNAPPY_HAVE_BMI2
|
|
|
|
/* Define to 1 if your processor stores words with the most significant byte
|
|
first (like Motorola and SPARC, unlike Intel and VAX). */
|
|
#cmakedefine SNAPPY_IS_BIG_ENDIAN 1
|
|
|
|
#endif // THIRD_PARTY_SNAPPY_OPENSOURCE_CMAKE_CONFIG_H_
|