blob: 6d40ef7a93ebd7c4853c031ca2166bc11330f53e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
LIBRARY()
LICENSE(Apache-2.0)
VERSION(1.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
NO_UTIL()
NO_COMPILER_WARNINGS()
NO_JOIN_SRC()
IF (GCC AND USE_LTO)
CFLAGS(-DCRCUTIL_FORCE_ASM_CRC32C=1)
ENDIF()
IF (ARCH_I386 OR ARCH_X86_64)
IF (OS_WINDOWS)
SRCS(
multiword_64_64_cl_i386_mmx.cc
)
ELSEIF (OS_ANDROID AND ARCH_I386)
# 32-bit Android has some problems with register allocation, so we fall back to default implementation
ELSE()
IF (CLANG)
CFLAGS(-DCRCUTIL_USE_MM_CRC32=1)
IF (ARCH_I386)
# clang doesn't support this as optimization attribute and has problems with register allocation
SRC(
multiword_64_64_gcc_i386_mmx.cc
-fomit-frame-pointer
)
ELSE()
SRCS(
multiword_64_64_gcc_i386_mmx.cc
)
ENDIF()
ELSE()
CFLAGS(
-mcrc32
-DCRCUTIL_USE_MM_CRC32=1
)
ENDIF()
SRCS(
multiword_128_64_gcc_amd64_sse2.cc
multiword_64_64_gcc_amd64_asm.cc
)
ENDIF()
IF (OS_WINDOWS)
SRCS(
crc32c_sse4.cc
)
ELSE()
SRC_C_SSE4(crc32c_sse4.cc)
ENDIF()
ENDIF()
SRCS(
interface.cc
multiword_64_64_intrinsic_i386_mmx.cc
)
END()
|