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