AbseilDll.cmake 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  1. include(CMakeParseArguments)
  2. include(GNUInstallDirs)
  3. set(ABSL_INTERNAL_DLL_FILES
  4. "algorithm/algorithm.h"
  5. "algorithm/container.h"
  6. "base/attributes.h"
  7. "base/call_once.h"
  8. "base/casts.h"
  9. "base/config.h"
  10. "base/const_init.h"
  11. "base/dynamic_annotations.h"
  12. "base/internal/atomic_hook.h"
  13. "base/internal/cycleclock.cc"
  14. "base/internal/cycleclock.h"
  15. "base/internal/direct_mmap.h"
  16. "base/internal/endian.h"
  17. "base/internal/errno_saver.h"
  18. "base/internal/fast_type_id.h"
  19. "base/internal/hide_ptr.h"
  20. "base/internal/identity.h"
  21. "base/internal/invoke.h"
  22. "base/internal/inline_variable.h"
  23. "base/internal/low_level_alloc.cc"
  24. "base/internal/low_level_alloc.h"
  25. "base/internal/low_level_scheduling.h"
  26. "base/internal/per_thread_tls.h"
  27. "base/internal/prefetch.h"
  28. "base/internal/pretty_function.h"
  29. "base/internal/raw_logging.cc"
  30. "base/internal/raw_logging.h"
  31. "base/internal/scheduling_mode.h"
  32. "base/internal/scoped_set_env.cc"
  33. "base/internal/scoped_set_env.h"
  34. "base/internal/strerror.h"
  35. "base/internal/strerror.cc"
  36. "base/internal/spinlock.cc"
  37. "base/internal/spinlock.h"
  38. "base/internal/spinlock_wait.cc"
  39. "base/internal/spinlock_wait.h"
  40. "base/internal/sysinfo.cc"
  41. "base/internal/sysinfo.h"
  42. "base/internal/thread_identity.cc"
  43. "base/internal/thread_identity.h"
  44. "base/internal/throw_delegate.cc"
  45. "base/internal/throw_delegate.h"
  46. "base/internal/tsan_mutex_interface.h"
  47. "base/internal/unaligned_access.h"
  48. "base/internal/unscaledcycleclock.cc"
  49. "base/internal/unscaledcycleclock.h"
  50. "base/log_severity.cc"
  51. "base/log_severity.h"
  52. "base/macros.h"
  53. "base/optimization.h"
  54. "base/options.h"
  55. "base/policy_checks.h"
  56. "base/port.h"
  57. "base/thread_annotations.h"
  58. "cleanup/cleanup.h"
  59. "cleanup/internal/cleanup.h"
  60. "container/btree_map.h"
  61. "container/btree_set.h"
  62. "container/fixed_array.h"
  63. "container/flat_hash_map.h"
  64. "container/flat_hash_set.h"
  65. "container/inlined_vector.h"
  66. "container/internal/btree.h"
  67. "container/internal/btree_container.h"
  68. "container/internal/common.h"
  69. "container/internal/compressed_tuple.h"
  70. "container/internal/container_memory.h"
  71. "container/internal/counting_allocator.h"
  72. "container/internal/hash_function_defaults.h"
  73. "container/internal/hash_policy_traits.h"
  74. "container/internal/hashtable_debug.h"
  75. "container/internal/hashtable_debug_hooks.h"
  76. "container/internal/hashtablez_sampler.cc"
  77. "container/internal/hashtablez_sampler.h"
  78. "container/internal/hashtablez_sampler_force_weak_definition.cc"
  79. "container/internal/inlined_vector.h"
  80. "container/internal/layout.h"
  81. "container/internal/node_slot_policy.h"
  82. "container/internal/raw_hash_map.h"
  83. "container/internal/raw_hash_set.cc"
  84. "container/internal/raw_hash_set.h"
  85. "container/internal/tracked.h"
  86. "container/node_hash_map.h"
  87. "container/node_hash_set.h"
  88. "debugging/failure_signal_handler.cc"
  89. "debugging/failure_signal_handler.h"
  90. "debugging/leak_check.h"
  91. "debugging/stacktrace.cc"
  92. "debugging/stacktrace.h"
  93. "debugging/symbolize.cc"
  94. "debugging/symbolize.h"
  95. "debugging/internal/address_is_readable.cc"
  96. "debugging/internal/address_is_readable.h"
  97. "debugging/internal/demangle.cc"
  98. "debugging/internal/demangle.h"
  99. "debugging/internal/elf_mem_image.cc"
  100. "debugging/internal/elf_mem_image.h"
  101. "debugging/internal/examine_stack.cc"
  102. "debugging/internal/examine_stack.h"
  103. "debugging/internal/stack_consumption.cc"
  104. "debugging/internal/stack_consumption.h"
  105. "debugging/internal/stacktrace_config.h"
  106. "debugging/internal/symbolize.h"
  107. "debugging/internal/vdso_support.cc"
  108. "debugging/internal/vdso_support.h"
  109. "functional/any_invocable.h"
  110. "functional/internal/front_binder.h"
  111. "functional/bind_front.h"
  112. "functional/function_ref.h"
  113. "functional/internal/any_invocable.h"
  114. "functional/internal/function_ref.h"
  115. "hash/hash.h"
  116. "hash/internal/city.h"
  117. "hash/internal/city.cc"
  118. "hash/internal/hash.h"
  119. "hash/internal/hash.cc"
  120. "hash/internal/spy_hash_state.h"
  121. "hash/internal/low_level_hash.h"
  122. "hash/internal/low_level_hash.cc"
  123. "memory/memory.h"
  124. "meta/type_traits.h"
  125. "numeric/bits.h"
  126. "numeric/int128.cc"
  127. "numeric/int128.h"
  128. "numeric/internal/bits.h"
  129. "numeric/internal/representation.h"
  130. "profiling/internal/exponential_biased.cc"
  131. "profiling/internal/exponential_biased.h"
  132. "profiling/internal/periodic_sampler.cc"
  133. "profiling/internal/periodic_sampler.h"
  134. "profiling/internal/sample_recorder.h"
  135. "random/bernoulli_distribution.h"
  136. "random/beta_distribution.h"
  137. "random/bit_gen_ref.h"
  138. "random/discrete_distribution.cc"
  139. "random/discrete_distribution.h"
  140. "random/distributions.h"
  141. "random/exponential_distribution.h"
  142. "random/gaussian_distribution.cc"
  143. "random/gaussian_distribution.h"
  144. "random/internal/distribution_caller.h"
  145. "random/internal/fastmath.h"
  146. "random/internal/fast_uniform_bits.h"
  147. "random/internal/generate_real.h"
  148. "random/internal/iostream_state_saver.h"
  149. "random/internal/mock_helpers.h"
  150. "random/internal/nonsecure_base.h"
  151. "random/internal/pcg_engine.h"
  152. "random/internal/platform.h"
  153. "random/internal/pool_urbg.cc"
  154. "random/internal/pool_urbg.h"
  155. "random/internal/randen.cc"
  156. "random/internal/randen.h"
  157. "random/internal/randen_detect.cc"
  158. "random/internal/randen_detect.h"
  159. "random/internal/randen_engine.h"
  160. "random/internal/randen_hwaes.cc"
  161. "random/internal/randen_hwaes.h"
  162. "random/internal/randen_round_keys.cc"
  163. "random/internal/randen_slow.cc"
  164. "random/internal/randen_slow.h"
  165. "random/internal/randen_traits.h"
  166. "random/internal/salted_seed_seq.h"
  167. "random/internal/seed_material.cc"
  168. "random/internal/seed_material.h"
  169. "random/internal/sequence_urbg.h"
  170. "random/internal/traits.h"
  171. "random/internal/uniform_helper.h"
  172. "random/internal/wide_multiply.h"
  173. "random/log_uniform_int_distribution.h"
  174. "random/poisson_distribution.h"
  175. "random/random.h"
  176. "random/seed_gen_exception.cc"
  177. "random/seed_gen_exception.h"
  178. "random/seed_sequences.cc"
  179. "random/seed_sequences.h"
  180. "random/uniform_int_distribution.h"
  181. "random/uniform_real_distribution.h"
  182. "random/zipf_distribution.h"
  183. "status/internal/status_internal.h"
  184. "status/internal/statusor_internal.h"
  185. "status/status.h"
  186. "status/status.cc"
  187. "status/statusor.h"
  188. "status/statusor.cc"
  189. "status/status_payload_printer.h"
  190. "status/status_payload_printer.cc"
  191. "strings/ascii.cc"
  192. "strings/ascii.h"
  193. "strings/charconv.cc"
  194. "strings/charconv.h"
  195. "strings/cord.cc"
  196. "strings/cord.h"
  197. "strings/cord_analysis.cc"
  198. "strings/cord_analysis.h"
  199. "strings/cord_buffer.cc"
  200. "strings/cord_buffer.h"
  201. "strings/escaping.cc"
  202. "strings/escaping.h"
  203. "strings/internal/charconv_bigint.cc"
  204. "strings/internal/charconv_bigint.h"
  205. "strings/internal/charconv_parse.cc"
  206. "strings/internal/charconv_parse.h"
  207. "strings/internal/cord_data_edge.h"
  208. "strings/internal/cord_internal.cc"
  209. "strings/internal/cord_internal.h"
  210. "strings/internal/cord_rep_btree.cc"
  211. "strings/internal/cord_rep_btree.h"
  212. "strings/internal/cord_rep_btree_navigator.cc"
  213. "strings/internal/cord_rep_btree_navigator.h"
  214. "strings/internal/cord_rep_btree_reader.cc"
  215. "strings/internal/cord_rep_btree_reader.h"
  216. "strings/internal/cord_rep_crc.cc"
  217. "strings/internal/cord_rep_crc.h"
  218. "strings/internal/cord_rep_consume.h"
  219. "strings/internal/cord_rep_consume.cc"
  220. "strings/internal/cord_rep_flat.h"
  221. "strings/internal/cord_rep_ring.cc"
  222. "strings/internal/cord_rep_ring.h"
  223. "strings/internal/cord_rep_ring_reader.h"
  224. "strings/internal/cordz_functions.cc"
  225. "strings/internal/cordz_functions.h"
  226. "strings/internal/cordz_handle.cc"
  227. "strings/internal/cordz_handle.h"
  228. "strings/internal/cordz_info.cc"
  229. "strings/internal/cordz_info.h"
  230. "strings/internal/cordz_sample_token.cc"
  231. "strings/internal/cordz_sample_token.h"
  232. "strings/internal/cordz_statistics.h"
  233. "strings/internal/cordz_update_scope.h"
  234. "strings/internal/cordz_update_tracker.h"
  235. "strings/internal/stl_type_traits.h"
  236. "strings/internal/string_constant.h"
  237. "strings/match.cc"
  238. "strings/match.h"
  239. "strings/numbers.cc"
  240. "strings/numbers.h"
  241. "strings/str_format.h"
  242. "strings/str_cat.cc"
  243. "strings/str_cat.h"
  244. "strings/str_join.h"
  245. "strings/str_replace.cc"
  246. "strings/str_replace.h"
  247. "strings/str_split.cc"
  248. "strings/str_split.h"
  249. "strings/string_view.cc"
  250. "strings/string_view.h"
  251. "strings/strip.h"
  252. "strings/substitute.cc"
  253. "strings/substitute.h"
  254. "strings/internal/char_map.h"
  255. "strings/internal/escaping.h"
  256. "strings/internal/escaping.cc"
  257. "strings/internal/memutil.cc"
  258. "strings/internal/memutil.h"
  259. "strings/internal/ostringstream.cc"
  260. "strings/internal/ostringstream.h"
  261. "strings/internal/pow10_helper.cc"
  262. "strings/internal/pow10_helper.h"
  263. "strings/internal/resize_uninitialized.h"
  264. "strings/internal/str_format/arg.cc"
  265. "strings/internal/str_format/arg.h"
  266. "strings/internal/str_format/bind.cc"
  267. "strings/internal/str_format/bind.h"
  268. "strings/internal/str_format/checker.h"
  269. "strings/internal/str_format/extension.cc"
  270. "strings/internal/str_format/extension.h"
  271. "strings/internal/str_format/float_conversion.cc"
  272. "strings/internal/str_format/float_conversion.h"
  273. "strings/internal/str_format/output.cc"
  274. "strings/internal/str_format/output.h"
  275. "strings/internal/str_format/parser.cc"
  276. "strings/internal/str_format/parser.h"
  277. "strings/internal/str_join_internal.h"
  278. "strings/internal/str_split_internal.h"
  279. "strings/internal/utf8.cc"
  280. "strings/internal/utf8.h"
  281. "synchronization/barrier.cc"
  282. "synchronization/barrier.h"
  283. "synchronization/blocking_counter.cc"
  284. "synchronization/blocking_counter.h"
  285. "synchronization/mutex.cc"
  286. "synchronization/mutex.h"
  287. "synchronization/notification.cc"
  288. "synchronization/notification.h"
  289. "synchronization/internal/create_thread_identity.cc"
  290. "synchronization/internal/create_thread_identity.h"
  291. "synchronization/internal/futex.h"
  292. "synchronization/internal/graphcycles.cc"
  293. "synchronization/internal/graphcycles.h"
  294. "synchronization/internal/kernel_timeout.h"
  295. "synchronization/internal/per_thread_sem.cc"
  296. "synchronization/internal/per_thread_sem.h"
  297. "synchronization/internal/thread_pool.h"
  298. "synchronization/internal/waiter.cc"
  299. "synchronization/internal/waiter.h"
  300. "time/civil_time.cc"
  301. "time/civil_time.h"
  302. "time/clock.cc"
  303. "time/clock.h"
  304. "time/duration.cc"
  305. "time/format.cc"
  306. "time/time.cc"
  307. "time/time.h"
  308. "time/internal/cctz/include/cctz/civil_time.h"
  309. "time/internal/cctz/include/cctz/civil_time_detail.h"
  310. "time/internal/cctz/include/cctz/time_zone.h"
  311. "time/internal/cctz/include/cctz/zone_info_source.h"
  312. "time/internal/cctz/src/civil_time_detail.cc"
  313. "time/internal/cctz/src/time_zone_fixed.cc"
  314. "time/internal/cctz/src/time_zone_fixed.h"
  315. "time/internal/cctz/src/time_zone_format.cc"
  316. "time/internal/cctz/src/time_zone_if.cc"
  317. "time/internal/cctz/src/time_zone_if.h"
  318. "time/internal/cctz/src/time_zone_impl.cc"
  319. "time/internal/cctz/src/time_zone_impl.h"
  320. "time/internal/cctz/src/time_zone_info.cc"
  321. "time/internal/cctz/src/time_zone_info.h"
  322. "time/internal/cctz/src/time_zone_libc.cc"
  323. "time/internal/cctz/src/time_zone_libc.h"
  324. "time/internal/cctz/src/time_zone_lookup.cc"
  325. "time/internal/cctz/src/time_zone_posix.cc"
  326. "time/internal/cctz/src/time_zone_posix.h"
  327. "time/internal/cctz/src/tzfile.h"
  328. "time/internal/cctz/src/zone_info_source.cc"
  329. "types/any.h"
  330. "types/bad_any_cast.cc"
  331. "types/bad_any_cast.h"
  332. "types/bad_optional_access.cc"
  333. "types/bad_optional_access.h"
  334. "types/bad_variant_access.cc"
  335. "types/bad_variant_access.h"
  336. "types/compare.h"
  337. "types/internal/conformance_aliases.h"
  338. "types/internal/conformance_archetype.h"
  339. "types/internal/conformance_profile.h"
  340. "types/internal/parentheses.h"
  341. "types/internal/transform_args.h"
  342. "types/internal/variant.h"
  343. "types/optional.h"
  344. "types/internal/optional.h"
  345. "types/span.h"
  346. "types/internal/span.h"
  347. "types/variant.h"
  348. "utility/utility.h"
  349. "debugging/leak_check.cc"
  350. )
  351. set(ABSL_INTERNAL_DLL_TARGETS
  352. "algorithm"
  353. "algorithm_container"
  354. "any"
  355. "any_invocable"
  356. "atomic_hook"
  357. "bad_any_cast"
  358. "bad_any_cast_impl"
  359. "bad_optional_access"
  360. "bad_variant_access"
  361. "base"
  362. "base_internal"
  363. "bind_front"
  364. "bits"
  365. "btree"
  366. "city"
  367. "civil_time"
  368. "compare"
  369. "compressed_tuple"
  370. "config"
  371. "container"
  372. "container_common"
  373. "container_memory"
  374. "cord"
  375. "core_headers"
  376. "counting_allocator"
  377. "debugging"
  378. "debugging_internal"
  379. "demangle_internal"
  380. "dynamic_annotations"
  381. "endian"
  382. "examine_stack"
  383. "exponential_biased"
  384. "failure_signal_handler"
  385. "fixed_array"
  386. "flat_hash_map"
  387. "flat_hash_set"
  388. "function_ref"
  389. "graphcycles_internal"
  390. "hash"
  391. "hash_function_defaults"
  392. "hash_policy_traits"
  393. "hashtable_debug"
  394. "hashtable_debug_hooks"
  395. "hashtablez_sampler"
  396. "inlined_vector"
  397. "inlined_vector_internal"
  398. "int128"
  399. "kernel_timeout_internal"
  400. "layout"
  401. "leak_check"
  402. "log_severity"
  403. "malloc_internal"
  404. "memory"
  405. "meta"
  406. "node_hash_map"
  407. "node_hash_set"
  408. "node_slot_policy"
  409. "numeric"
  410. "optional"
  411. "periodic_sampler"
  412. "pow10_helper"
  413. "pretty_function"
  414. "random_bit_gen_ref"
  415. "random_distributions"
  416. "random_internal_distribution_caller"
  417. "random_internal_distributions"
  418. "random_internal_explicit_seed_seq"
  419. "random_internal_fastmath"
  420. "random_internal_fast_uniform_bits"
  421. "random_internal_generate_real"
  422. "random_internal_iostream_state_saver"
  423. "random_internal_nonsecure_base"
  424. "random_internal_pcg_engine"
  425. "random_internal_platform"
  426. "random_internal_pool_urbg"
  427. "random_internal_randen"
  428. "random_internal_randen_engine"
  429. "random_internal_randen_hwaes"
  430. "random_internal_randen_hwaes_impl"
  431. "random_internal_randen_slow"
  432. "random_internal_salted_seed_seq"
  433. "random_internal_seed_material"
  434. "random_internal_sequence_urbg"
  435. "random_internal_traits"
  436. "random_internal_uniform_helper"
  437. "random_internal_wide_multiply"
  438. "random_random"
  439. "random_seed_gen_exception"
  440. "random_seed_sequences"
  441. "raw_hash_map"
  442. "raw_hash_set"
  443. "raw_logging_internal"
  444. "sample_recorder"
  445. "scoped_set_env"
  446. "span"
  447. "spinlock_wait"
  448. "spy_hash_state"
  449. "stack_consumption"
  450. "stacktrace"
  451. "status"
  452. "str_format"
  453. "str_format_internal"
  454. "strings"
  455. "strings_internal"
  456. "symbolize"
  457. "synchronization"
  458. "thread_pool"
  459. "throw_delegate"
  460. "time"
  461. "time_zone"
  462. "tracked"
  463. "type_traits"
  464. "utility"
  465. "variant"
  466. )
  467. function(absl_internal_dll_contains)
  468. cmake_parse_arguments(ABSL_INTERNAL_DLL
  469. ""
  470. "OUTPUT;TARGET"
  471. ""
  472. ${ARGN}
  473. )
  474. STRING(REGEX REPLACE "^absl::" "" _target ${ABSL_INTERNAL_DLL_TARGET})
  475. list(FIND
  476. ABSL_INTERNAL_DLL_TARGETS
  477. "${_target}"
  478. _index)
  479. if (${_index} GREATER -1)
  480. set(${ABSL_INTERNAL_DLL_OUTPUT} 1 PARENT_SCOPE)
  481. else()
  482. set(${ABSL_INTERNAL_DLL_OUTPUT} 0 PARENT_SCOPE)
  483. endif()
  484. endfunction()
  485. function(absl_internal_dll_targets)
  486. cmake_parse_arguments(ABSL_INTERNAL_DLL
  487. ""
  488. "OUTPUT"
  489. "DEPS"
  490. ${ARGN}
  491. )
  492. set(_deps "")
  493. foreach(dep IN LISTS ABSL_INTERNAL_DLL_DEPS)
  494. absl_internal_dll_contains(TARGET ${dep} OUTPUT _contains)
  495. if (_contains)
  496. list(APPEND _deps abseil_dll)
  497. else()
  498. list(APPEND _deps ${dep})
  499. endif()
  500. endforeach()
  501. # Because we may have added the DLL multiple times
  502. list(REMOVE_DUPLICATES _deps)
  503. set(${ABSL_INTERNAL_DLL_OUTPUT} "${_deps}" PARENT_SCOPE)
  504. endfunction()
  505. function(absl_make_dll)
  506. add_library(
  507. abseil_dll
  508. SHARED
  509. "${ABSL_INTERNAL_DLL_FILES}"
  510. )
  511. target_link_libraries(
  512. abseil_dll
  513. PRIVATE
  514. ${ABSL_DEFAULT_LINKOPTS}
  515. )
  516. set_property(TARGET abseil_dll PROPERTY LINKER_LANGUAGE "CXX")
  517. target_include_directories(
  518. abseil_dll
  519. PUBLIC
  520. "$<BUILD_INTERFACE:${ABSL_COMMON_INCLUDE_DIRS}>"
  521. $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
  522. )
  523. target_compile_options(
  524. abseil_dll
  525. PRIVATE
  526. ${ABSL_DEFAULT_COPTS}
  527. )
  528. target_compile_definitions(
  529. abseil_dll
  530. PRIVATE
  531. ABSL_BUILD_DLL
  532. NOMINMAX
  533. INTERFACE
  534. ${ABSL_CC_LIB_DEFINES}
  535. )
  536. install(TARGETS abseil_dll EXPORT ${PROJECT_NAME}Targets
  537. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  538. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  539. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  540. )
  541. endfunction()