1*a6aa18fbSYabin Cuiinclude(CMakeParseArguments)
2*a6aa18fbSYabin Cuiinclude(GNUInstallDirs)
3*a6aa18fbSYabin Cui
4*a6aa18fbSYabin Cuiset(ABSL_INTERNAL_DLL_FILES
5*a6aa18fbSYabin Cui  "algorithm/algorithm.h"
6*a6aa18fbSYabin Cui  "algorithm/container.h"
7*a6aa18fbSYabin Cui  "base/attributes.h"
8*a6aa18fbSYabin Cui  "base/call_once.h"
9*a6aa18fbSYabin Cui  "base/casts.h"
10*a6aa18fbSYabin Cui  "base/config.h"
11*a6aa18fbSYabin Cui  "base/const_init.h"
12*a6aa18fbSYabin Cui  "base/dynamic_annotations.h"
13*a6aa18fbSYabin Cui  "base/internal/atomic_hook.h"
14*a6aa18fbSYabin Cui  "base/internal/cycleclock.cc"
15*a6aa18fbSYabin Cui  "base/internal/cycleclock.h"
16*a6aa18fbSYabin Cui  "base/internal/cycleclock_config.h"
17*a6aa18fbSYabin Cui  "base/internal/direct_mmap.h"
18*a6aa18fbSYabin Cui  "base/internal/dynamic_annotations.h"
19*a6aa18fbSYabin Cui  "base/internal/endian.h"
20*a6aa18fbSYabin Cui  "base/internal/errno_saver.h"
21*a6aa18fbSYabin Cui  "base/internal/fast_type_id.h"
22*a6aa18fbSYabin Cui  "base/internal/hide_ptr.h"
23*a6aa18fbSYabin Cui  "base/internal/identity.h"
24*a6aa18fbSYabin Cui  "base/internal/invoke.h"
25*a6aa18fbSYabin Cui  "base/internal/inline_variable.h"
26*a6aa18fbSYabin Cui  "base/internal/low_level_alloc.cc"
27*a6aa18fbSYabin Cui  "base/internal/low_level_alloc.h"
28*a6aa18fbSYabin Cui  "base/internal/low_level_scheduling.h"
29*a6aa18fbSYabin Cui  "base/internal/per_thread_tls.h"
30*a6aa18fbSYabin Cui  "base/internal/prefetch.h"
31*a6aa18fbSYabin Cui  "base/internal/pretty_function.h"
32*a6aa18fbSYabin Cui  "base/internal/raw_logging.cc"
33*a6aa18fbSYabin Cui  "base/internal/raw_logging.h"
34*a6aa18fbSYabin Cui  "base/internal/scheduling_mode.h"
35*a6aa18fbSYabin Cui  "base/internal/scoped_set_env.cc"
36*a6aa18fbSYabin Cui  "base/internal/scoped_set_env.h"
37*a6aa18fbSYabin Cui  "base/internal/strerror.h"
38*a6aa18fbSYabin Cui  "base/internal/strerror.cc"
39*a6aa18fbSYabin Cui  "base/internal/spinlock.cc"
40*a6aa18fbSYabin Cui  "base/internal/spinlock.h"
41*a6aa18fbSYabin Cui  "base/internal/spinlock_wait.cc"
42*a6aa18fbSYabin Cui  "base/internal/spinlock_wait.h"
43*a6aa18fbSYabin Cui  "base/internal/sysinfo.cc"
44*a6aa18fbSYabin Cui  "base/internal/sysinfo.h"
45*a6aa18fbSYabin Cui  "base/internal/thread_annotations.h"
46*a6aa18fbSYabin Cui  "base/internal/thread_identity.cc"
47*a6aa18fbSYabin Cui  "base/internal/thread_identity.h"
48*a6aa18fbSYabin Cui  "base/internal/throw_delegate.cc"
49*a6aa18fbSYabin Cui  "base/internal/throw_delegate.h"
50*a6aa18fbSYabin Cui  "base/internal/tsan_mutex_interface.h"
51*a6aa18fbSYabin Cui  "base/internal/unaligned_access.h"
52*a6aa18fbSYabin Cui  "base/internal/unscaledcycleclock.cc"
53*a6aa18fbSYabin Cui  "base/internal/unscaledcycleclock.h"
54*a6aa18fbSYabin Cui  "base/internal/unscaledcycleclock_config.h"
55*a6aa18fbSYabin Cui  "base/log_severity.cc"
56*a6aa18fbSYabin Cui  "base/log_severity.h"
57*a6aa18fbSYabin Cui  "base/macros.h"
58*a6aa18fbSYabin Cui  "base/optimization.h"
59*a6aa18fbSYabin Cui  "base/options.h"
60*a6aa18fbSYabin Cui  "base/policy_checks.h"
61*a6aa18fbSYabin Cui  "base/port.h"
62*a6aa18fbSYabin Cui  "base/thread_annotations.h"
63*a6aa18fbSYabin Cui  "cleanup/cleanup.h"
64*a6aa18fbSYabin Cui  "cleanup/internal/cleanup.h"
65*a6aa18fbSYabin Cui  "container/btree_map.h"
66*a6aa18fbSYabin Cui  "container/btree_set.h"
67*a6aa18fbSYabin Cui  "container/fixed_array.h"
68*a6aa18fbSYabin Cui  "container/flat_hash_map.h"
69*a6aa18fbSYabin Cui  "container/flat_hash_set.h"
70*a6aa18fbSYabin Cui  "container/inlined_vector.h"
71*a6aa18fbSYabin Cui  "container/internal/btree.h"
72*a6aa18fbSYabin Cui  "container/internal/btree_container.h"
73*a6aa18fbSYabin Cui  "container/internal/common.h"
74*a6aa18fbSYabin Cui  "container/internal/common_policy_traits.h"
75*a6aa18fbSYabin Cui  "container/internal/compressed_tuple.h"
76*a6aa18fbSYabin Cui  "container/internal/container_memory.h"
77*a6aa18fbSYabin Cui  "container/internal/counting_allocator.h"
78*a6aa18fbSYabin Cui  "container/internal/hash_function_defaults.h"
79*a6aa18fbSYabin Cui  "container/internal/hash_policy_traits.h"
80*a6aa18fbSYabin Cui  "container/internal/hashtable_debug.h"
81*a6aa18fbSYabin Cui  "container/internal/hashtable_debug_hooks.h"
82*a6aa18fbSYabin Cui  "container/internal/hashtablez_sampler.cc"
83*a6aa18fbSYabin Cui  "container/internal/hashtablez_sampler.h"
84*a6aa18fbSYabin Cui  "container/internal/hashtablez_sampler_force_weak_definition.cc"
85*a6aa18fbSYabin Cui  "container/internal/inlined_vector.h"
86*a6aa18fbSYabin Cui  "container/internal/layout.h"
87*a6aa18fbSYabin Cui  "container/internal/node_slot_policy.h"
88*a6aa18fbSYabin Cui  "container/internal/raw_hash_map.h"
89*a6aa18fbSYabin Cui  "container/internal/raw_hash_set.cc"
90*a6aa18fbSYabin Cui  "container/internal/raw_hash_set.h"
91*a6aa18fbSYabin Cui  "container/internal/tracked.h"
92*a6aa18fbSYabin Cui  "container/node_hash_map.h"
93*a6aa18fbSYabin Cui  "container/node_hash_set.h"
94*a6aa18fbSYabin Cui  "crc/crc32c.cc"
95*a6aa18fbSYabin Cui  "crc/crc32c.h"
96*a6aa18fbSYabin Cui  "crc/internal/cpu_detect.cc"
97*a6aa18fbSYabin Cui  "crc/internal/cpu_detect.h"
98*a6aa18fbSYabin Cui  "crc/internal/crc32c.h"
99*a6aa18fbSYabin Cui  "crc/internal/crc32c_inline.h"
100*a6aa18fbSYabin Cui  "crc/internal/crc32_x86_arm_combined_simd.h"
101*a6aa18fbSYabin Cui  "crc/internal/crc.cc"
102*a6aa18fbSYabin Cui  "crc/internal/crc.h"
103*a6aa18fbSYabin Cui  "crc/internal/crc_cord_state.cc"
104*a6aa18fbSYabin Cui  "crc/internal/crc_cord_state.h"
105*a6aa18fbSYabin Cui  "crc/internal/crc_internal.h"
106*a6aa18fbSYabin Cui  "crc/internal/crc_x86_arm_combined.cc"
107*a6aa18fbSYabin Cui  "crc/internal/crc_memcpy_fallback.cc"
108*a6aa18fbSYabin Cui  "crc/internal/crc_memcpy.h"
109*a6aa18fbSYabin Cui  "crc/internal/crc_memcpy_x86_64.cc"
110*a6aa18fbSYabin Cui  "crc/internal/crc_non_temporal_memcpy.cc"
111*a6aa18fbSYabin Cui  "crc/internal/crc_x86_arm_combined.cc"
112*a6aa18fbSYabin Cui  "crc/internal/non_temporal_arm_intrinsics.h"
113*a6aa18fbSYabin Cui  "crc/internal/non_temporal_memcpy.h"
114*a6aa18fbSYabin Cui  "debugging/failure_signal_handler.cc"
115*a6aa18fbSYabin Cui  "debugging/failure_signal_handler.h"
116*a6aa18fbSYabin Cui  "debugging/leak_check.h"
117*a6aa18fbSYabin Cui  "debugging/stacktrace.cc"
118*a6aa18fbSYabin Cui  "debugging/stacktrace.h"
119*a6aa18fbSYabin Cui  "debugging/symbolize.cc"
120*a6aa18fbSYabin Cui  "debugging/symbolize.h"
121*a6aa18fbSYabin Cui  "debugging/internal/address_is_readable.cc"
122*a6aa18fbSYabin Cui  "debugging/internal/address_is_readable.h"
123*a6aa18fbSYabin Cui  "debugging/internal/demangle.cc"
124*a6aa18fbSYabin Cui  "debugging/internal/demangle.h"
125*a6aa18fbSYabin Cui  "debugging/internal/elf_mem_image.cc"
126*a6aa18fbSYabin Cui  "debugging/internal/elf_mem_image.h"
127*a6aa18fbSYabin Cui  "debugging/internal/examine_stack.cc"
128*a6aa18fbSYabin Cui  "debugging/internal/examine_stack.h"
129*a6aa18fbSYabin Cui  "debugging/internal/stack_consumption.cc"
130*a6aa18fbSYabin Cui  "debugging/internal/stack_consumption.h"
131*a6aa18fbSYabin Cui  "debugging/internal/stacktrace_config.h"
132*a6aa18fbSYabin Cui  "debugging/internal/symbolize.h"
133*a6aa18fbSYabin Cui  "debugging/internal/vdso_support.cc"
134*a6aa18fbSYabin Cui  "debugging/internal/vdso_support.h"
135*a6aa18fbSYabin Cui  "functional/any_invocable.h"
136*a6aa18fbSYabin Cui  "functional/internal/front_binder.h"
137*a6aa18fbSYabin Cui  "functional/bind_front.h"
138*a6aa18fbSYabin Cui  "functional/function_ref.h"
139*a6aa18fbSYabin Cui  "functional/internal/any_invocable.h"
140*a6aa18fbSYabin Cui  "functional/internal/function_ref.h"
141*a6aa18fbSYabin Cui  "hash/hash.h"
142*a6aa18fbSYabin Cui  "hash/internal/city.h"
143*a6aa18fbSYabin Cui  "hash/internal/city.cc"
144*a6aa18fbSYabin Cui  "hash/internal/hash.h"
145*a6aa18fbSYabin Cui  "hash/internal/hash.cc"
146*a6aa18fbSYabin Cui  "hash/internal/spy_hash_state.h"
147*a6aa18fbSYabin Cui  "hash/internal/low_level_hash.h"
148*a6aa18fbSYabin Cui  "hash/internal/low_level_hash.cc"
149*a6aa18fbSYabin Cui  "log/absl_check.h"
150*a6aa18fbSYabin Cui  "log/absl_log.h"
151*a6aa18fbSYabin Cui  "log/check.h"
152*a6aa18fbSYabin Cui  "log/die_if_null.cc"
153*a6aa18fbSYabin Cui  "log/die_if_null.h"
154*a6aa18fbSYabin Cui  "log/globals.cc"
155*a6aa18fbSYabin Cui  "log/globals.h"
156*a6aa18fbSYabin Cui  "log/internal/append_truncated.h"
157*a6aa18fbSYabin Cui  "log/internal/check_impl.h"
158*a6aa18fbSYabin Cui  "log/internal/check_op.cc"
159*a6aa18fbSYabin Cui  "log/internal/check_op.h"
160*a6aa18fbSYabin Cui  "log/internal/conditions.cc"
161*a6aa18fbSYabin Cui  "log/internal/conditions.h"
162*a6aa18fbSYabin Cui  "log/internal/config.h"
163*a6aa18fbSYabin Cui  "log/internal/globals.cc"
164*a6aa18fbSYabin Cui  "log/internal/globals.h"
165*a6aa18fbSYabin Cui  "log/internal/log_format.cc"
166*a6aa18fbSYabin Cui  "log/internal/log_format.h"
167*a6aa18fbSYabin Cui  "log/internal/log_impl.h"
168*a6aa18fbSYabin Cui  "log/internal/log_message.cc"
169*a6aa18fbSYabin Cui  "log/internal/log_message.h"
170*a6aa18fbSYabin Cui  "log/internal/log_sink_set.cc"
171*a6aa18fbSYabin Cui  "log/internal/log_sink_set.h"
172*a6aa18fbSYabin Cui  "log/internal/nullguard.cc"
173*a6aa18fbSYabin Cui  "log/internal/nullguard.h"
174*a6aa18fbSYabin Cui  "log/internal/nullstream.h"
175*a6aa18fbSYabin Cui  "log/internal/proto.h"
176*a6aa18fbSYabin Cui  "log/internal/proto.cc"
177*a6aa18fbSYabin Cui  "log/internal/strip.h"
178*a6aa18fbSYabin Cui  "log/internal/structured.h"
179*a6aa18fbSYabin Cui  "log/internal/voidify.h"
180*a6aa18fbSYabin Cui  "log/initialize.cc"
181*a6aa18fbSYabin Cui  "log/initialize.h"
182*a6aa18fbSYabin Cui  "log/log.h"
183*a6aa18fbSYabin Cui  "log/log_entry.cc"
184*a6aa18fbSYabin Cui  "log/log_entry.h"
185*a6aa18fbSYabin Cui  "log/log_sink.cc"
186*a6aa18fbSYabin Cui  "log/log_sink.h"
187*a6aa18fbSYabin Cui  "log/log_sink_registry.h"
188*a6aa18fbSYabin Cui  "log/log_streamer.h"
189*a6aa18fbSYabin Cui  "log/structured.h"
190*a6aa18fbSYabin Cui  "memory/memory.h"
191*a6aa18fbSYabin Cui  "meta/type_traits.h"
192*a6aa18fbSYabin Cui  "numeric/bits.h"
193*a6aa18fbSYabin Cui  "numeric/int128.cc"
194*a6aa18fbSYabin Cui  "numeric/int128.h"
195*a6aa18fbSYabin Cui  "numeric/internal/bits.h"
196*a6aa18fbSYabin Cui  "numeric/internal/representation.h"
197*a6aa18fbSYabin Cui  "profiling/internal/exponential_biased.cc"
198*a6aa18fbSYabin Cui  "profiling/internal/exponential_biased.h"
199*a6aa18fbSYabin Cui  "profiling/internal/periodic_sampler.cc"
200*a6aa18fbSYabin Cui  "profiling/internal/periodic_sampler.h"
201*a6aa18fbSYabin Cui  "profiling/internal/sample_recorder.h"
202*a6aa18fbSYabin Cui  "random/bernoulli_distribution.h"
203*a6aa18fbSYabin Cui  "random/beta_distribution.h"
204*a6aa18fbSYabin Cui  "random/bit_gen_ref.h"
205*a6aa18fbSYabin Cui  "random/discrete_distribution.cc"
206*a6aa18fbSYabin Cui  "random/discrete_distribution.h"
207*a6aa18fbSYabin Cui  "random/distributions.h"
208*a6aa18fbSYabin Cui  "random/exponential_distribution.h"
209*a6aa18fbSYabin Cui  "random/gaussian_distribution.cc"
210*a6aa18fbSYabin Cui  "random/gaussian_distribution.h"
211*a6aa18fbSYabin Cui  "random/internal/distribution_caller.h"
212*a6aa18fbSYabin Cui  "random/internal/fastmath.h"
213*a6aa18fbSYabin Cui  "random/internal/fast_uniform_bits.h"
214*a6aa18fbSYabin Cui  "random/internal/generate_real.h"
215*a6aa18fbSYabin Cui  "random/internal/iostream_state_saver.h"
216*a6aa18fbSYabin Cui  "random/internal/nonsecure_base.h"
217*a6aa18fbSYabin Cui  "random/internal/pcg_engine.h"
218*a6aa18fbSYabin Cui  "random/internal/platform.h"
219*a6aa18fbSYabin Cui  "random/internal/pool_urbg.cc"
220*a6aa18fbSYabin Cui  "random/internal/pool_urbg.h"
221*a6aa18fbSYabin Cui  "random/internal/randen.cc"
222*a6aa18fbSYabin Cui  "random/internal/randen.h"
223*a6aa18fbSYabin Cui  "random/internal/randen_detect.cc"
224*a6aa18fbSYabin Cui  "random/internal/randen_detect.h"
225*a6aa18fbSYabin Cui  "random/internal/randen_engine.h"
226*a6aa18fbSYabin Cui  "random/internal/randen_hwaes.cc"
227*a6aa18fbSYabin Cui  "random/internal/randen_hwaes.h"
228*a6aa18fbSYabin Cui  "random/internal/randen_round_keys.cc"
229*a6aa18fbSYabin Cui  "random/internal/randen_slow.cc"
230*a6aa18fbSYabin Cui  "random/internal/randen_slow.h"
231*a6aa18fbSYabin Cui  "random/internal/randen_traits.h"
232*a6aa18fbSYabin Cui  "random/internal/salted_seed_seq.h"
233*a6aa18fbSYabin Cui  "random/internal/seed_material.cc"
234*a6aa18fbSYabin Cui  "random/internal/seed_material.h"
235*a6aa18fbSYabin Cui  "random/internal/sequence_urbg.h"
236*a6aa18fbSYabin Cui  "random/internal/traits.h"
237*a6aa18fbSYabin Cui  "random/internal/uniform_helper.h"
238*a6aa18fbSYabin Cui  "random/internal/wide_multiply.h"
239*a6aa18fbSYabin Cui  "random/log_uniform_int_distribution.h"
240*a6aa18fbSYabin Cui  "random/poisson_distribution.h"
241*a6aa18fbSYabin Cui  "random/random.h"
242*a6aa18fbSYabin Cui  "random/seed_gen_exception.cc"
243*a6aa18fbSYabin Cui  "random/seed_gen_exception.h"
244*a6aa18fbSYabin Cui  "random/seed_sequences.cc"
245*a6aa18fbSYabin Cui  "random/seed_sequences.h"
246*a6aa18fbSYabin Cui  "random/uniform_int_distribution.h"
247*a6aa18fbSYabin Cui  "random/uniform_real_distribution.h"
248*a6aa18fbSYabin Cui  "random/zipf_distribution.h"
249*a6aa18fbSYabin Cui  "status/internal/status_internal.h"
250*a6aa18fbSYabin Cui  "status/internal/statusor_internal.h"
251*a6aa18fbSYabin Cui  "status/status.h"
252*a6aa18fbSYabin Cui  "status/status.cc"
253*a6aa18fbSYabin Cui  "status/statusor.h"
254*a6aa18fbSYabin Cui  "status/statusor.cc"
255*a6aa18fbSYabin Cui  "status/status_payload_printer.h"
256*a6aa18fbSYabin Cui  "status/status_payload_printer.cc"
257*a6aa18fbSYabin Cui  "strings/ascii.cc"
258*a6aa18fbSYabin Cui  "strings/ascii.h"
259*a6aa18fbSYabin Cui  "strings/charconv.cc"
260*a6aa18fbSYabin Cui  "strings/charconv.h"
261*a6aa18fbSYabin Cui  "strings/cord.cc"
262*a6aa18fbSYabin Cui  "strings/cord.h"
263*a6aa18fbSYabin Cui  "strings/cord_analysis.cc"
264*a6aa18fbSYabin Cui  "strings/cord_analysis.h"
265*a6aa18fbSYabin Cui  "strings/cord_buffer.cc"
266*a6aa18fbSYabin Cui  "strings/cord_buffer.h"
267*a6aa18fbSYabin Cui  "strings/escaping.cc"
268*a6aa18fbSYabin Cui  "strings/escaping.h"
269*a6aa18fbSYabin Cui  "strings/internal/charconv_bigint.cc"
270*a6aa18fbSYabin Cui  "strings/internal/charconv_bigint.h"
271*a6aa18fbSYabin Cui  "strings/internal/charconv_parse.cc"
272*a6aa18fbSYabin Cui  "strings/internal/charconv_parse.h"
273*a6aa18fbSYabin Cui  "strings/internal/cord_data_edge.h"
274*a6aa18fbSYabin Cui  "strings/internal/cord_internal.cc"
275*a6aa18fbSYabin Cui  "strings/internal/cord_internal.h"
276*a6aa18fbSYabin Cui  "strings/internal/cord_rep_btree.cc"
277*a6aa18fbSYabin Cui  "strings/internal/cord_rep_btree.h"
278*a6aa18fbSYabin Cui  "strings/internal/cord_rep_btree_navigator.cc"
279*a6aa18fbSYabin Cui  "strings/internal/cord_rep_btree_navigator.h"
280*a6aa18fbSYabin Cui  "strings/internal/cord_rep_btree_reader.cc"
281*a6aa18fbSYabin Cui  "strings/internal/cord_rep_btree_reader.h"
282*a6aa18fbSYabin Cui  "strings/internal/cord_rep_crc.cc"
283*a6aa18fbSYabin Cui  "strings/internal/cord_rep_crc.h"
284*a6aa18fbSYabin Cui  "strings/internal/cord_rep_consume.h"
285*a6aa18fbSYabin Cui  "strings/internal/cord_rep_consume.cc"
286*a6aa18fbSYabin Cui  "strings/internal/cord_rep_flat.h"
287*a6aa18fbSYabin Cui  "strings/internal/cord_rep_ring.cc"
288*a6aa18fbSYabin Cui  "strings/internal/cord_rep_ring.h"
289*a6aa18fbSYabin Cui  "strings/internal/cord_rep_ring_reader.h"
290*a6aa18fbSYabin Cui  "strings/internal/cordz_functions.cc"
291*a6aa18fbSYabin Cui  "strings/internal/cordz_functions.h"
292*a6aa18fbSYabin Cui  "strings/internal/cordz_handle.cc"
293*a6aa18fbSYabin Cui  "strings/internal/cordz_handle.h"
294*a6aa18fbSYabin Cui  "strings/internal/cordz_info.cc"
295*a6aa18fbSYabin Cui  "strings/internal/cordz_info.h"
296*a6aa18fbSYabin Cui  "strings/internal/cordz_sample_token.cc"
297*a6aa18fbSYabin Cui  "strings/internal/cordz_sample_token.h"
298*a6aa18fbSYabin Cui  "strings/internal/cordz_statistics.h"
299*a6aa18fbSYabin Cui  "strings/internal/cordz_update_scope.h"
300*a6aa18fbSYabin Cui  "strings/internal/cordz_update_tracker.h"
301*a6aa18fbSYabin Cui  "strings/internal/damerau_levenshtein_distance.h"
302*a6aa18fbSYabin Cui  "strings/internal/damerau_levenshtein_distance.cc"
303*a6aa18fbSYabin Cui  "strings/internal/stl_type_traits.h"
304*a6aa18fbSYabin Cui  "strings/internal/string_constant.h"
305*a6aa18fbSYabin Cui  "strings/internal/stringify_sink.h"
306*a6aa18fbSYabin Cui  "strings/internal/stringify_sink.cc"
307*a6aa18fbSYabin Cui  "strings/internal/has_absl_stringify.h"
308*a6aa18fbSYabin Cui  "strings/match.cc"
309*a6aa18fbSYabin Cui  "strings/match.h"
310*a6aa18fbSYabin Cui  "strings/numbers.cc"
311*a6aa18fbSYabin Cui  "strings/numbers.h"
312*a6aa18fbSYabin Cui  "strings/str_format.h"
313*a6aa18fbSYabin Cui  "strings/str_cat.cc"
314*a6aa18fbSYabin Cui  "strings/str_cat.h"
315*a6aa18fbSYabin Cui  "strings/str_join.h"
316*a6aa18fbSYabin Cui  "strings/str_replace.cc"
317*a6aa18fbSYabin Cui  "strings/str_replace.h"
318*a6aa18fbSYabin Cui  "strings/str_split.cc"
319*a6aa18fbSYabin Cui  "strings/str_split.h"
320*a6aa18fbSYabin Cui  "strings/string_view.cc"
321*a6aa18fbSYabin Cui  "strings/string_view.h"
322*a6aa18fbSYabin Cui  "strings/strip.h"
323*a6aa18fbSYabin Cui  "strings/substitute.cc"
324*a6aa18fbSYabin Cui  "strings/substitute.h"
325*a6aa18fbSYabin Cui  "strings/internal/char_map.h"
326*a6aa18fbSYabin Cui  "strings/internal/escaping.h"
327*a6aa18fbSYabin Cui  "strings/internal/escaping.cc"
328*a6aa18fbSYabin Cui  "strings/internal/memutil.cc"
329*a6aa18fbSYabin Cui  "strings/internal/memutil.h"
330*a6aa18fbSYabin Cui  "strings/internal/ostringstream.cc"
331*a6aa18fbSYabin Cui  "strings/internal/ostringstream.h"
332*a6aa18fbSYabin Cui  "strings/internal/pow10_helper.cc"
333*a6aa18fbSYabin Cui  "strings/internal/pow10_helper.h"
334*a6aa18fbSYabin Cui  "strings/internal/resize_uninitialized.h"
335*a6aa18fbSYabin Cui  "strings/internal/str_format/arg.cc"
336*a6aa18fbSYabin Cui  "strings/internal/str_format/arg.h"
337*a6aa18fbSYabin Cui  "strings/internal/str_format/bind.cc"
338*a6aa18fbSYabin Cui  "strings/internal/str_format/bind.h"
339*a6aa18fbSYabin Cui  "strings/internal/str_format/checker.h"
340*a6aa18fbSYabin Cui  "strings/internal/str_format/constexpr_parser.h"
341*a6aa18fbSYabin Cui  "strings/internal/str_format/extension.cc"
342*a6aa18fbSYabin Cui  "strings/internal/str_format/extension.h"
343*a6aa18fbSYabin Cui  "strings/internal/str_format/float_conversion.cc"
344*a6aa18fbSYabin Cui  "strings/internal/str_format/float_conversion.h"
345*a6aa18fbSYabin Cui  "strings/internal/str_format/output.cc"
346*a6aa18fbSYabin Cui  "strings/internal/str_format/output.h"
347*a6aa18fbSYabin Cui  "strings/internal/str_format/parser.cc"
348*a6aa18fbSYabin Cui  "strings/internal/str_format/parser.h"
349*a6aa18fbSYabin Cui  "strings/internal/str_join_internal.h"
350*a6aa18fbSYabin Cui  "strings/internal/str_split_internal.h"
351*a6aa18fbSYabin Cui  "strings/internal/utf8.cc"
352*a6aa18fbSYabin Cui  "strings/internal/utf8.h"
353*a6aa18fbSYabin Cui  "synchronization/barrier.cc"
354*a6aa18fbSYabin Cui  "synchronization/barrier.h"
355*a6aa18fbSYabin Cui  "synchronization/blocking_counter.cc"
356*a6aa18fbSYabin Cui  "synchronization/blocking_counter.h"
357*a6aa18fbSYabin Cui  "synchronization/mutex.cc"
358*a6aa18fbSYabin Cui  "synchronization/mutex.h"
359*a6aa18fbSYabin Cui  "synchronization/notification.cc"
360*a6aa18fbSYabin Cui  "synchronization/notification.h"
361*a6aa18fbSYabin Cui  "synchronization/internal/create_thread_identity.cc"
362*a6aa18fbSYabin Cui  "synchronization/internal/create_thread_identity.h"
363*a6aa18fbSYabin Cui  "synchronization/internal/futex.h"
364*a6aa18fbSYabin Cui  "synchronization/internal/graphcycles.cc"
365*a6aa18fbSYabin Cui  "synchronization/internal/graphcycles.h"
366*a6aa18fbSYabin Cui  "synchronization/internal/kernel_timeout.h"
367*a6aa18fbSYabin Cui  "synchronization/internal/per_thread_sem.cc"
368*a6aa18fbSYabin Cui  "synchronization/internal/per_thread_sem.h"
369*a6aa18fbSYabin Cui  "synchronization/internal/thread_pool.h"
370*a6aa18fbSYabin Cui  "synchronization/internal/waiter.cc"
371*a6aa18fbSYabin Cui  "synchronization/internal/waiter.h"
372*a6aa18fbSYabin Cui  "time/civil_time.cc"
373*a6aa18fbSYabin Cui  "time/civil_time.h"
374*a6aa18fbSYabin Cui  "time/clock.cc"
375*a6aa18fbSYabin Cui  "time/clock.h"
376*a6aa18fbSYabin Cui  "time/duration.cc"
377*a6aa18fbSYabin Cui  "time/format.cc"
378*a6aa18fbSYabin Cui  "time/time.cc"
379*a6aa18fbSYabin Cui  "time/time.h"
380*a6aa18fbSYabin Cui  "time/internal/cctz/include/cctz/civil_time.h"
381*a6aa18fbSYabin Cui  "time/internal/cctz/include/cctz/civil_time_detail.h"
382*a6aa18fbSYabin Cui  "time/internal/cctz/include/cctz/time_zone.h"
383*a6aa18fbSYabin Cui  "time/internal/cctz/include/cctz/zone_info_source.h"
384*a6aa18fbSYabin Cui  "time/internal/cctz/src/civil_time_detail.cc"
385*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_fixed.cc"
386*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_fixed.h"
387*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_format.cc"
388*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_if.cc"
389*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_if.h"
390*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_impl.cc"
391*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_impl.h"
392*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_info.cc"
393*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_info.h"
394*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_libc.cc"
395*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_libc.h"
396*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_lookup.cc"
397*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_posix.cc"
398*a6aa18fbSYabin Cui  "time/internal/cctz/src/time_zone_posix.h"
399*a6aa18fbSYabin Cui  "time/internal/cctz/src/tzfile.h"
400*a6aa18fbSYabin Cui  "time/internal/cctz/src/zone_info_source.cc"
401*a6aa18fbSYabin Cui  "types/any.h"
402*a6aa18fbSYabin Cui  "types/bad_any_cast.cc"
403*a6aa18fbSYabin Cui  "types/bad_any_cast.h"
404*a6aa18fbSYabin Cui  "types/bad_optional_access.cc"
405*a6aa18fbSYabin Cui  "types/bad_optional_access.h"
406*a6aa18fbSYabin Cui  "types/bad_variant_access.cc"
407*a6aa18fbSYabin Cui  "types/bad_variant_access.h"
408*a6aa18fbSYabin Cui  "types/compare.h"
409*a6aa18fbSYabin Cui  "types/internal/conformance_aliases.h"
410*a6aa18fbSYabin Cui  "types/internal/conformance_archetype.h"
411*a6aa18fbSYabin Cui  "types/internal/conformance_profile.h"
412*a6aa18fbSYabin Cui  "types/internal/parentheses.h"
413*a6aa18fbSYabin Cui  "types/internal/transform_args.h"
414*a6aa18fbSYabin Cui  "types/internal/variant.h"
415*a6aa18fbSYabin Cui  "types/optional.h"
416*a6aa18fbSYabin Cui  "types/internal/optional.h"
417*a6aa18fbSYabin Cui  "types/span.h"
418*a6aa18fbSYabin Cui  "types/internal/span.h"
419*a6aa18fbSYabin Cui  "types/variant.h"
420*a6aa18fbSYabin Cui  "utility/utility.h"
421*a6aa18fbSYabin Cui  "debugging/leak_check.cc"
422*a6aa18fbSYabin Cui)
423*a6aa18fbSYabin Cui
424*a6aa18fbSYabin Cuiset(ABSL_INTERNAL_DLL_TARGETS
425*a6aa18fbSYabin Cui  "absl_check"
426*a6aa18fbSYabin Cui  "absl_log"
427*a6aa18fbSYabin Cui  "algorithm"
428*a6aa18fbSYabin Cui  "algorithm_container"
429*a6aa18fbSYabin Cui  "any"
430*a6aa18fbSYabin Cui  "any_invocable"
431*a6aa18fbSYabin Cui  "atomic_hook"
432*a6aa18fbSYabin Cui  "bad_any_cast"
433*a6aa18fbSYabin Cui  "bad_any_cast_impl"
434*a6aa18fbSYabin Cui  "bad_optional_access"
435*a6aa18fbSYabin Cui  "bad_variant_access"
436*a6aa18fbSYabin Cui  "base"
437*a6aa18fbSYabin Cui  "base_internal"
438*a6aa18fbSYabin Cui  "bind_front"
439*a6aa18fbSYabin Cui  "bits"
440*a6aa18fbSYabin Cui  "btree"
441*a6aa18fbSYabin Cui  "check"
442*a6aa18fbSYabin Cui  "city"
443*a6aa18fbSYabin Cui  "civil_time"
444*a6aa18fbSYabin Cui  "compare"
445*a6aa18fbSYabin Cui  "compressed_tuple"
446*a6aa18fbSYabin Cui  "config"
447*a6aa18fbSYabin Cui  "container"
448*a6aa18fbSYabin Cui  "container_common"
449*a6aa18fbSYabin Cui  "container_memory"
450*a6aa18fbSYabin Cui  "cord"
451*a6aa18fbSYabin Cui  "core_headers"
452*a6aa18fbSYabin Cui  "counting_allocator"
453*a6aa18fbSYabin Cui  "crc_cpu_detect"
454*a6aa18fbSYabin Cui  "crc_internal"
455*a6aa18fbSYabin Cui  "crc32c"
456*a6aa18fbSYabin Cui  "debugging"
457*a6aa18fbSYabin Cui  "debugging_internal"
458*a6aa18fbSYabin Cui  "demangle_internal"
459*a6aa18fbSYabin Cui  "die_if_null"
460*a6aa18fbSYabin Cui  "dynamic_annotations"
461*a6aa18fbSYabin Cui  "endian"
462*a6aa18fbSYabin Cui  "examine_stack"
463*a6aa18fbSYabin Cui  "exponential_biased"
464*a6aa18fbSYabin Cui  "failure_signal_handler"
465*a6aa18fbSYabin Cui  "fixed_array"
466*a6aa18fbSYabin Cui  "flat_hash_map"
467*a6aa18fbSYabin Cui  "flat_hash_set"
468*a6aa18fbSYabin Cui  "function_ref"
469*a6aa18fbSYabin Cui  "graphcycles_internal"
470*a6aa18fbSYabin Cui  "hash"
471*a6aa18fbSYabin Cui  "hash_function_defaults"
472*a6aa18fbSYabin Cui  "hash_policy_traits"
473*a6aa18fbSYabin Cui  "hashtable_debug"
474*a6aa18fbSYabin Cui  "hashtable_debug_hooks"
475*a6aa18fbSYabin Cui  "hashtablez_sampler"
476*a6aa18fbSYabin Cui  "inlined_vector"
477*a6aa18fbSYabin Cui  "inlined_vector_internal"
478*a6aa18fbSYabin Cui  "int128"
479*a6aa18fbSYabin Cui  "kernel_timeout_internal"
480*a6aa18fbSYabin Cui  "layout"
481*a6aa18fbSYabin Cui  "leak_check"
482*a6aa18fbSYabin Cui  "log_internal_check_impl"
483*a6aa18fbSYabin Cui  "log_internal_check_op"
484*a6aa18fbSYabin Cui  "log_internal_conditions"
485*a6aa18fbSYabin Cui  "log_internal_config"
486*a6aa18fbSYabin Cui  "log_internal_format"
487*a6aa18fbSYabin Cui  "log_internal_globals"
488*a6aa18fbSYabin Cui  "log_internal_log_impl"
489*a6aa18fbSYabin Cui  "log_internal_proto"
490*a6aa18fbSYabin Cui  "log_internal_message"
491*a6aa18fbSYabin Cui  "log_internal_log_sink_set"
492*a6aa18fbSYabin Cui  "log_internal_nullguard"
493*a6aa18fbSYabin Cui  "log_internal_nullstream"
494*a6aa18fbSYabin Cui  "log_internal_strip"
495*a6aa18fbSYabin Cui  "log_internal_voidify"
496*a6aa18fbSYabin Cui  "log_internal_append_truncated"
497*a6aa18fbSYabin Cui  "log_globals"
498*a6aa18fbSYabin Cui  "log_initialize"
499*a6aa18fbSYabin Cui  "log"
500*a6aa18fbSYabin Cui  "log_entry"
501*a6aa18fbSYabin Cui  "log_sink"
502*a6aa18fbSYabin Cui  "log_sink_registry"
503*a6aa18fbSYabin Cui  "log_streamer"
504*a6aa18fbSYabin Cui  "log_internal_structured"
505*a6aa18fbSYabin Cui  "log_severity"
506*a6aa18fbSYabin Cui  "log_structured"
507*a6aa18fbSYabin Cui  "malloc_internal"
508*a6aa18fbSYabin Cui  "memory"
509*a6aa18fbSYabin Cui  "meta"
510*a6aa18fbSYabin Cui  "node_hash_map"
511*a6aa18fbSYabin Cui  "node_hash_set"
512*a6aa18fbSYabin Cui  "node_slot_policy"
513*a6aa18fbSYabin Cui  "non_temporal_arm_intrinsics"
514*a6aa18fbSYabin Cui  "non_temporal_memcpy"
515*a6aa18fbSYabin Cui  "numeric"
516*a6aa18fbSYabin Cui  "optional"
517*a6aa18fbSYabin Cui  "periodic_sampler"
518*a6aa18fbSYabin Cui  "pow10_helper"
519*a6aa18fbSYabin Cui  "pretty_function"
520*a6aa18fbSYabin Cui  "random_bit_gen_ref"
521*a6aa18fbSYabin Cui  "random_distributions"
522*a6aa18fbSYabin Cui  "random_internal_distribution_caller"
523*a6aa18fbSYabin Cui  "random_internal_distributions"
524*a6aa18fbSYabin Cui  "random_internal_explicit_seed_seq"
525*a6aa18fbSYabin Cui  "random_internal_fastmath"
526*a6aa18fbSYabin Cui  "random_internal_fast_uniform_bits"
527*a6aa18fbSYabin Cui  "random_internal_generate_real"
528*a6aa18fbSYabin Cui  "random_internal_iostream_state_saver"
529*a6aa18fbSYabin Cui  "random_internal_nonsecure_base"
530*a6aa18fbSYabin Cui  "random_internal_pcg_engine"
531*a6aa18fbSYabin Cui  "random_internal_platform"
532*a6aa18fbSYabin Cui  "random_internal_pool_urbg"
533*a6aa18fbSYabin Cui  "random_internal_randen"
534*a6aa18fbSYabin Cui  "random_internal_randen_engine"
535*a6aa18fbSYabin Cui  "random_internal_randen_hwaes"
536*a6aa18fbSYabin Cui  "random_internal_randen_hwaes_impl"
537*a6aa18fbSYabin Cui  "random_internal_randen_slow"
538*a6aa18fbSYabin Cui  "random_internal_salted_seed_seq"
539*a6aa18fbSYabin Cui  "random_internal_seed_material"
540*a6aa18fbSYabin Cui  "random_internal_sequence_urbg"
541*a6aa18fbSYabin Cui  "random_internal_traits"
542*a6aa18fbSYabin Cui  "random_internal_uniform_helper"
543*a6aa18fbSYabin Cui  "random_internal_wide_multiply"
544*a6aa18fbSYabin Cui  "random_random"
545*a6aa18fbSYabin Cui  "random_seed_gen_exception"
546*a6aa18fbSYabin Cui  "random_seed_sequences"
547*a6aa18fbSYabin Cui  "raw_hash_map"
548*a6aa18fbSYabin Cui  "raw_hash_set"
549*a6aa18fbSYabin Cui  "raw_logging_internal"
550*a6aa18fbSYabin Cui  "sample_recorder"
551*a6aa18fbSYabin Cui  "scoped_set_env"
552*a6aa18fbSYabin Cui  "span"
553*a6aa18fbSYabin Cui  "spinlock_wait"
554*a6aa18fbSYabin Cui  "spy_hash_state"
555*a6aa18fbSYabin Cui  "stack_consumption"
556*a6aa18fbSYabin Cui  "stacktrace"
557*a6aa18fbSYabin Cui  "status"
558*a6aa18fbSYabin Cui  "str_format"
559*a6aa18fbSYabin Cui  "str_format_internal"
560*a6aa18fbSYabin Cui  "strings"
561*a6aa18fbSYabin Cui  "strings_internal"
562*a6aa18fbSYabin Cui  "symbolize"
563*a6aa18fbSYabin Cui  "synchronization"
564*a6aa18fbSYabin Cui  "thread_pool"
565*a6aa18fbSYabin Cui  "throw_delegate"
566*a6aa18fbSYabin Cui  "time"
567*a6aa18fbSYabin Cui  "time_zone"
568*a6aa18fbSYabin Cui  "tracked"
569*a6aa18fbSYabin Cui  "type_traits"
570*a6aa18fbSYabin Cui  "utility"
571*a6aa18fbSYabin Cui  "variant"
572*a6aa18fbSYabin Cui)
573*a6aa18fbSYabin Cui
574*a6aa18fbSYabin Cuiset(ABSL_INTERNAL_TEST_DLL_FILES
575*a6aa18fbSYabin Cui  "hash/hash_testing.h"
576*a6aa18fbSYabin Cui  "log/scoped_mock_log.cc"
577*a6aa18fbSYabin Cui  "log/scoped_mock_log.h"
578*a6aa18fbSYabin Cui  "random/internal/mock_helpers.h"
579*a6aa18fbSYabin Cui  "random/internal/mock_overload_set.h"
580*a6aa18fbSYabin Cui  "random/mocking_bit_gen.h"
581*a6aa18fbSYabin Cui  "random/mock_distributions.h"
582*a6aa18fbSYabin Cui  "strings/cordz_test_helpers.h"
583*a6aa18fbSYabin Cui  "strings/cord_test_helpers.h"
584*a6aa18fbSYabin Cui)
585*a6aa18fbSYabin Cui
586*a6aa18fbSYabin Cuiset(ABSL_INTERNAL_TEST_DLL_TARGETS
587*a6aa18fbSYabin Cui  "cord_test_helpers"
588*a6aa18fbSYabin Cui  "cordz_test_helpers"
589*a6aa18fbSYabin Cui  "hash_testing"
590*a6aa18fbSYabin Cui  "random_mocking_bit_gen"
591*a6aa18fbSYabin Cui  "random_internal_mock_overload_set"
592*a6aa18fbSYabin Cui  "scoped_mock_log"
593*a6aa18fbSYabin Cui)
594*a6aa18fbSYabin Cui
595*a6aa18fbSYabin Cuifunction(_absl_target_compile_features_if_available TARGET TYPE FEATURE)
596*a6aa18fbSYabin Cui  if(FEATURE IN_LIST CMAKE_CXX_COMPILE_FEATURES)
597*a6aa18fbSYabin Cui    target_compile_features(${TARGET} ${TYPE} ${FEATURE})
598*a6aa18fbSYabin Cui  else()
599*a6aa18fbSYabin Cui    message(WARNING "Feature ${FEATURE} is unknown for the CXX compiler")
600*a6aa18fbSYabin Cui  endif()
601*a6aa18fbSYabin Cuiendfunction()
602*a6aa18fbSYabin Cui
603*a6aa18fbSYabin Cuiinclude(CheckCXXSourceCompiles)
604*a6aa18fbSYabin Cui
605*a6aa18fbSYabin Cuicheck_cxx_source_compiles(
606*a6aa18fbSYabin Cui  [==[
607*a6aa18fbSYabin Cui#ifdef _MSC_VER
608*a6aa18fbSYabin Cui#  if _MSVC_LANG < 201700L
609*a6aa18fbSYabin Cui#    error "The compiler defaults or is configured for C++ < 17"
610*a6aa18fbSYabin Cui#  endif
611*a6aa18fbSYabin Cui#elif __cplusplus < 201700L
612*a6aa18fbSYabin Cui#  error "The compiler defaults or is configured for C++ < 17"
613*a6aa18fbSYabin Cui#endif
614*a6aa18fbSYabin Cuiint main() { return 0; }
615*a6aa18fbSYabin Cui]==]
616*a6aa18fbSYabin Cui  ABSL_INTERNAL_AT_LEAST_CXX17)
617*a6aa18fbSYabin Cui
618*a6aa18fbSYabin Cuiif(ABSL_INTERNAL_AT_LEAST_CXX17)
619*a6aa18fbSYabin Cui  set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_17)
620*a6aa18fbSYabin Cuielse()
621*a6aa18fbSYabin Cui  set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_14)
622*a6aa18fbSYabin Cuiendif()
623*a6aa18fbSYabin Cui
624*a6aa18fbSYabin Cuifunction(absl_internal_dll_contains)
625*a6aa18fbSYabin Cui  cmake_parse_arguments(ABSL_INTERNAL_DLL
626*a6aa18fbSYabin Cui    ""
627*a6aa18fbSYabin Cui    "OUTPUT;TARGET"
628*a6aa18fbSYabin Cui    ""
629*a6aa18fbSYabin Cui    ${ARGN}
630*a6aa18fbSYabin Cui  )
631*a6aa18fbSYabin Cui
632*a6aa18fbSYabin Cui  STRING(REGEX REPLACE "^absl::" "" _target ${ABSL_INTERNAL_DLL_TARGET})
633*a6aa18fbSYabin Cui
634*a6aa18fbSYabin Cui  list(FIND
635*a6aa18fbSYabin Cui    ABSL_INTERNAL_DLL_TARGETS
636*a6aa18fbSYabin Cui    "${_target}"
637*a6aa18fbSYabin Cui    _index)
638*a6aa18fbSYabin Cui
639*a6aa18fbSYabin Cui  if (${_index} GREATER -1)
640*a6aa18fbSYabin Cui    set(${ABSL_INTERNAL_DLL_OUTPUT} 1 PARENT_SCOPE)
641*a6aa18fbSYabin Cui  else()
642*a6aa18fbSYabin Cui    set(${ABSL_INTERNAL_DLL_OUTPUT} 0 PARENT_SCOPE)
643*a6aa18fbSYabin Cui  endif()
644*a6aa18fbSYabin Cuiendfunction()
645*a6aa18fbSYabin Cui
646*a6aa18fbSYabin Cuifunction(absl_internal_test_dll_contains)
647*a6aa18fbSYabin Cui  cmake_parse_arguments(ABSL_INTERNAL_TEST_DLL
648*a6aa18fbSYabin Cui    ""
649*a6aa18fbSYabin Cui    "OUTPUT;TARGET"
650*a6aa18fbSYabin Cui    ""
651*a6aa18fbSYabin Cui    ${ARGN}
652*a6aa18fbSYabin Cui  )
653*a6aa18fbSYabin Cui
654*a6aa18fbSYabin Cui  STRING(REGEX REPLACE "^absl::" "" _target ${ABSL_INTERNAL_TEST_DLL_TARGET})
655*a6aa18fbSYabin Cui
656*a6aa18fbSYabin Cui  list(FIND
657*a6aa18fbSYabin Cui    ABSL_INTERNAL_TEST_DLL_TARGETS
658*a6aa18fbSYabin Cui    "${_target}"
659*a6aa18fbSYabin Cui    _index)
660*a6aa18fbSYabin Cui
661*a6aa18fbSYabin Cui  if (${_index} GREATER -1)
662*a6aa18fbSYabin Cui    set(${ABSL_INTERNAL_TEST_DLL_OUTPUT} 1 PARENT_SCOPE)
663*a6aa18fbSYabin Cui  else()
664*a6aa18fbSYabin Cui    set(${ABSL_INTERNAL_TEST_DLL_OUTPUT} 0 PARENT_SCOPE)
665*a6aa18fbSYabin Cui  endif()
666*a6aa18fbSYabin Cuiendfunction()
667*a6aa18fbSYabin Cui
668*a6aa18fbSYabin Cuifunction(absl_internal_dll_targets)
669*a6aa18fbSYabin Cui  cmake_parse_arguments(ABSL_INTERNAL_DLL
670*a6aa18fbSYabin Cui  ""
671*a6aa18fbSYabin Cui  "OUTPUT"
672*a6aa18fbSYabin Cui  "DEPS"
673*a6aa18fbSYabin Cui  ${ARGN}
674*a6aa18fbSYabin Cui  )
675*a6aa18fbSYabin Cui
676*a6aa18fbSYabin Cui  set(_deps "")
677*a6aa18fbSYabin Cui  foreach(dep IN LISTS ABSL_INTERNAL_DLL_DEPS)
678*a6aa18fbSYabin Cui    absl_internal_dll_contains(TARGET ${dep} OUTPUT _dll_contains)
679*a6aa18fbSYabin Cui    absl_internal_test_dll_contains(TARGET ${dep} OUTPUT _test_dll_contains)
680*a6aa18fbSYabin Cui    if (_dll_contains)
681*a6aa18fbSYabin Cui      list(APPEND _deps abseil_dll)
682*a6aa18fbSYabin Cui    elseif (_test_dll_contains)
683*a6aa18fbSYabin Cui      list(APPEND _deps abseil_test_dll)
684*a6aa18fbSYabin Cui    else()
685*a6aa18fbSYabin Cui      list(APPEND _deps ${dep})
686*a6aa18fbSYabin Cui    endif()
687*a6aa18fbSYabin Cui  endforeach()
688*a6aa18fbSYabin Cui
689*a6aa18fbSYabin Cui  # Because we may have added the DLL multiple times
690*a6aa18fbSYabin Cui  list(REMOVE_DUPLICATES _deps)
691*a6aa18fbSYabin Cui  set(${ABSL_INTERNAL_DLL_OUTPUT} "${_deps}" PARENT_SCOPE)
692*a6aa18fbSYabin Cuiendfunction()
693*a6aa18fbSYabin Cui
694*a6aa18fbSYabin Cuifunction(absl_make_dll)
695*a6aa18fbSYabin Cui  cmake_parse_arguments(ABSL_INTERNAL_MAKE_DLL
696*a6aa18fbSYabin Cui  ""
697*a6aa18fbSYabin Cui  "TEST"
698*a6aa18fbSYabin Cui  ""
699*a6aa18fbSYabin Cui  ${ARGN}
700*a6aa18fbSYabin Cui  )
701*a6aa18fbSYabin Cui
702*a6aa18fbSYabin Cui  if (ABSL_INTERNAL_MAKE_DLL_TEST)
703*a6aa18fbSYabin Cui    set(_dll "abseil_test_dll")
704*a6aa18fbSYabin Cui    set(_dll_files ${ABSL_INTERNAL_TEST_DLL_FILES})
705*a6aa18fbSYabin Cui    set(_dll_libs "abseil_dll" "GTest::gtest" "GTest::gmock")
706*a6aa18fbSYabin Cui    set(_dll_compile_definitions "GTEST_LINKED_AS_SHARED_LIBRARY=1")
707*a6aa18fbSYabin Cui    set(_dll_includes ${absl_gtest_src_dir}/googletest/include ${absl_gtest_src_dir}/googlemock/include)
708*a6aa18fbSYabin Cui    set(_dll_consume "ABSL_CONSUME_TEST_DLL")
709*a6aa18fbSYabin Cui    set(_dll_build "ABSL_BUILD_TEST_DLL")
710*a6aa18fbSYabin Cui  else()
711*a6aa18fbSYabin Cui    set(_dll "abseil_dll")
712*a6aa18fbSYabin Cui    set(_dll_files ${ABSL_INTERNAL_DLL_FILES})
713*a6aa18fbSYabin Cui    set(_dll_libs "")
714*a6aa18fbSYabin Cui    set(_dll_compile_definitions "")
715*a6aa18fbSYabin Cui    set(_dll_includes "")
716*a6aa18fbSYabin Cui    set(_dll_consume "ABSL_CONSUME_DLL")
717*a6aa18fbSYabin Cui    set(_dll_build "ABSL_BUILD_DLL")
718*a6aa18fbSYabin Cui  endif()
719*a6aa18fbSYabin Cui
720*a6aa18fbSYabin Cui  add_library(
721*a6aa18fbSYabin Cui    ${_dll}
722*a6aa18fbSYabin Cui    SHARED
723*a6aa18fbSYabin Cui      ${_dll_files}
724*a6aa18fbSYabin Cui  )
725*a6aa18fbSYabin Cui  target_link_libraries(
726*a6aa18fbSYabin Cui    ${_dll}
727*a6aa18fbSYabin Cui    PRIVATE
728*a6aa18fbSYabin Cui      ${_dll_libs}
729*a6aa18fbSYabin Cui      ${ABSL_DEFAULT_LINKOPTS}
730*a6aa18fbSYabin Cui  )
731*a6aa18fbSYabin Cui  set_property(TARGET ${_dll} PROPERTY LINKER_LANGUAGE "CXX")
732*a6aa18fbSYabin Cui  target_include_directories(
733*a6aa18fbSYabin Cui    ${_dll}
734*a6aa18fbSYabin Cui    PUBLIC
735*a6aa18fbSYabin Cui      "$<BUILD_INTERFACE:${ABSL_COMMON_INCLUDE_DIRS}>"
736*a6aa18fbSYabin Cui      $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
737*a6aa18fbSYabin Cui    PRIVATE
738*a6aa18fbSYabin Cui      ${_dll_includes}
739*a6aa18fbSYabin Cui  )
740*a6aa18fbSYabin Cui
741*a6aa18fbSYabin Cui  target_compile_options(
742*a6aa18fbSYabin Cui    ${_dll}
743*a6aa18fbSYabin Cui    PRIVATE
744*a6aa18fbSYabin Cui      ${ABSL_DEFAULT_COPTS}
745*a6aa18fbSYabin Cui  )
746*a6aa18fbSYabin Cui
747*a6aa18fbSYabin Cui  foreach(cflag ${ABSL_CC_LIB_COPTS})
748*a6aa18fbSYabin Cui    if(${cflag} MATCHES "^(-Wno|/wd)")
749*a6aa18fbSYabin Cui      # These flags are needed to suppress warnings that might fire in our headers.
750*a6aa18fbSYabin Cui      set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
751*a6aa18fbSYabin Cui    elseif(${cflag} MATCHES "^(-W|/w[1234eo])")
752*a6aa18fbSYabin Cui      # Don't impose our warnings on others.
753*a6aa18fbSYabin Cui    else()
754*a6aa18fbSYabin Cui      set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
755*a6aa18fbSYabin Cui    endif()
756*a6aa18fbSYabin Cui  endforeach()
757*a6aa18fbSYabin Cui  string(REPLACE ";" " " PC_LINKOPTS "${ABSL_CC_LIB_LINKOPTS}")
758*a6aa18fbSYabin Cui
759*a6aa18fbSYabin Cui  FILE(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/lib/pkgconfig/${_dll}.pc" CONTENT "\
760*a6aa18fbSYabin Cuiprefix=${CMAKE_INSTALL_PREFIX}\n\
761*a6aa18fbSYabin Cuiexec_prefix=\${prefix}\n\
762*a6aa18fbSYabin Cuilibdir=${CMAKE_INSTALL_FULL_LIBDIR}\n\
763*a6aa18fbSYabin Cuiincludedir=${CMAKE_INSTALL_FULL_INCLUDEDIR}\n\
764*a6aa18fbSYabin Cui\n\
765*a6aa18fbSYabin CuiName: ${_dll}\n\
766*a6aa18fbSYabin CuiDescription: Abseil DLL library\n\
767*a6aa18fbSYabin CuiURL: https://abseil.io/\n\
768*a6aa18fbSYabin CuiVersion: ${absl_VERSION}\n\
769*a6aa18fbSYabin CuiLibs: -L\${libdir} ${PC_LINKOPTS} $<$<NOT:$<BOOL:${ABSL_CC_LIB_IS_INTERFACE}>>:-l${_dll}>\n\
770*a6aa18fbSYabin CuiCflags: -I\${includedir}${PC_CFLAGS}\n")
771*a6aa18fbSYabin Cui  INSTALL(FILES "${CMAKE_BINARY_DIR}/lib/pkgconfig/${_dll}.pc"
772*a6aa18fbSYabin Cui    DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
773*a6aa18fbSYabin Cui
774*a6aa18fbSYabin Cui  target_compile_definitions(
775*a6aa18fbSYabin Cui    ${_dll}
776*a6aa18fbSYabin Cui    PUBLIC
777*a6aa18fbSYabin Cui      ${_dll_compile_definitions}
778*a6aa18fbSYabin Cui    PRIVATE
779*a6aa18fbSYabin Cui      ${_dll_build}
780*a6aa18fbSYabin Cui      NOMINMAX
781*a6aa18fbSYabin Cui    INTERFACE
782*a6aa18fbSYabin Cui      ${ABSL_CC_LIB_DEFINES}
783*a6aa18fbSYabin Cui      ${_dll_consume}
784*a6aa18fbSYabin Cui  )
785*a6aa18fbSYabin Cui
786*a6aa18fbSYabin Cui  if(ABSL_PROPAGATE_CXX_STD)
787*a6aa18fbSYabin Cui    # Abseil libraries require C++14 as the current minimum standard. When
788*a6aa18fbSYabin Cui    # compiled with C++17 (either because it is the compiler's default or
789*a6aa18fbSYabin Cui    # explicitly requested), then Abseil requires C++17.
790*a6aa18fbSYabin Cui    _absl_target_compile_features_if_available(${_NAME} PUBLIC ${ABSL_INTERNAL_CXX_STD_FEATURE})
791*a6aa18fbSYabin Cui  else()
792*a6aa18fbSYabin Cui    # Note: This is legacy (before CMake 3.8) behavior. Setting the
793*a6aa18fbSYabin Cui    # target-level CXX_STANDARD property to ABSL_CXX_STANDARD (which is
794*a6aa18fbSYabin Cui    # initialized by CMAKE_CXX_STANDARD) should have no real effect, since
795*a6aa18fbSYabin Cui    # that is the default value anyway.
796*a6aa18fbSYabin Cui    #
797*a6aa18fbSYabin Cui    # CXX_STANDARD_REQUIRED does guard against the top-level CMake project
798*a6aa18fbSYabin Cui    # not having enabled CMAKE_CXX_STANDARD_REQUIRED (which prevents
799*a6aa18fbSYabin Cui    # "decaying" to an older standard if the requested one isn't available).
800*a6aa18fbSYabin Cui    set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${ABSL_CXX_STANDARD})
801*a6aa18fbSYabin Cui    set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
802*a6aa18fbSYabin Cui  endif()
803*a6aa18fbSYabin Cui
804*a6aa18fbSYabin Cui  install(TARGETS ${_dll} EXPORT ${PROJECT_NAME}Targets
805*a6aa18fbSYabin Cui        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
806*a6aa18fbSYabin Cui        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
807*a6aa18fbSYabin Cui        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
808*a6aa18fbSYabin Cui  )
809*a6aa18fbSYabin Cuiendfunction()
810