1# Copyright 2022 The Abseil Authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15# Internal-only target, do not depend on directly.
16absl_cc_library(
17  NAME
18    crc_cpu_detect
19  HDRS
20    "internal/cpu_detect.h"
21  SRCS
22    "internal/cpu_detect.cc"
23  COPTS
24    ${ABSL_DEFAULT_COPTS}
25  DEPS
26    absl::base
27    absl::config
28)
29
30# Internal-only target, do not depend on directly.
31absl_cc_library(
32  NAME
33    crc_internal
34  HDRS
35    "internal/crc.h"
36    "internal/crc32_x86_arm_combined_simd.h"
37  SRCS
38    "internal/crc.cc"
39    "internal/crc_internal.h"
40    "internal/crc_x86_arm_combined.cc"
41  COPTS
42    ${ABSL_DEFAULT_COPTS}
43  DEPS
44    absl::crc_cpu_detect
45    absl::base
46    absl::config
47    absl::core_headers
48    absl::dynamic_annotations
49    absl::endian
50    absl::prefetch
51    absl::raw_logging_internal
52    absl::memory
53    absl::bits
54)
55
56absl_cc_library(
57  NAME
58    crc32c
59  HDRS
60    "crc32c.h"
61    "internal/crc32c.h"
62    "internal/crc_memcpy.h"
63  SRCS
64    "crc32c.cc"
65    "internal/crc32c_inline.h"
66    "internal/crc_memcpy_fallback.cc"
67    "internal/crc_memcpy_x86_64.cc"
68    "internal/crc_non_temporal_memcpy.cc"
69  COPTS
70    ${ABSL_DEFAULT_COPTS}
71  DEPS
72    absl::crc_cpu_detect
73    absl::crc_internal
74    absl::non_temporal_memcpy
75    absl::config
76    absl::core_headers
77    absl::dynamic_annotations
78    absl::endian
79    absl::prefetch
80    absl::strings
81)
82
83absl_cc_test(
84  NAME
85    crc32c_test
86  SRCS
87    "crc32c_test.cc"
88  COPTS
89    ${ABSL_DEFAULT_COPTS}
90  DEPS
91    absl::crc32c
92    absl::strings
93    GTest::gtest_main
94)
95
96# Internal-only target, do not depend on directly.
97absl_cc_library(
98  NAME
99    non_temporal_arm_intrinsics
100  HDRS
101    "internal/non_temporal_arm_intrinsics.h"
102  COPTS
103    ${ABSL_DEFAULT_COPTS}
104  DEPS
105    absl::config
106)
107
108# Internal-only target, do not depend on directly.
109absl_cc_library(
110  NAME
111    non_temporal_memcpy
112  HDRS
113    "internal/non_temporal_memcpy.h"
114  COPTS
115    ${ABSL_DEFAULT_COPTS}
116  DEPS
117    absl::non_temporal_arm_intrinsics
118    absl::config
119    absl::core_headers
120)
121
122absl_cc_test(
123  NAME
124    crc_memcpy_test
125  SRCS
126    "internal/crc_memcpy_test.cc"
127  COPTS
128    ${ABSL_DEFAULT_COPTS}
129  DEPS
130    absl::crc32c
131    absl::memory
132    absl::random_random
133    absl::random_distributions
134    absl::strings
135    GTest::gtest_main
136)
137
138absl_cc_test(
139  NAME
140    non_temporal_memcpy_test
141  SRCS
142    "internal/non_temporal_memcpy_test.cc"
143  COPTS
144    ${ABSL_DEFAULT_COPTS}
145  DEPS
146    absl::non_temporal_memcpy
147    GTest::gtest_main
148)
149
150absl_cc_library(
151  NAME
152    crc_cord_state
153  HDRS
154    "internal/crc_cord_state.h"
155  SRCS
156    "internal/crc_cord_state.cc"
157  COPTS
158    ${ABSL_DEFAULT_COPTS}
159  DEPS
160    absl::crc32c
161    absl::config
162    absl::strings
163)
164
165absl_cc_test(
166  NAME
167    crc_cord_state_test
168  SRCS
169    "internal/crc_cord_state_test.cc"
170  COPTS
171    ${ABSL_DEFAULT_COPTS}
172  DEPS
173    absl::crc_cord_state
174    absl::crc32c
175    GTest::gtest_main
176)
177