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