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