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