diff --git a/absl/base/CMakeLists.txt b/absl/base/CMakeLists.txt index 202003e60e6..7acad6ac832 100644 --- a/absl/base/CMakeLists.txt +++ b/absl/base/CMakeLists.txt @@ -14,360 +14,383 @@ # limitations under the License. # -list(APPEND BASE_PUBLIC_HEADERS - "attributes.h" - "call_once.h" - "casts.h" +# spinlock wait library +set(SPINLOCK_WAIT_HDRS + "internal/scheduling_mode.h" + "internal/spinlock_wait.h" + "internal/spinlock_akaros.inc" + "internal/spinlock_linux.inc" + "internal/spinlock_posix.inc" + "internal/spinlock_win32.inc" +) + +set(SPINLOCK_WAIT_SRCS + "internal/spinlock_wait.cc" +) + +absl_cc_library( + NAME spinlock_wait + SRCS ${SPINLOCK_WAIT_SRCS} + HDRS ${SPINLOCK_WAIT_HDRS} + DEPS + absl::core_headers + PUBLIC +) + +# config library +set(CONFIG_PUBLIC_HDRS "config.h" - "dynamic_annotations.h" - "log_severity.h" + "policy_checks.h" +) + +absl_cc_library( + NAME config + HDRS ${CONFIG_HDRS} + PUBLIC +) + +# dynamic_annotations library +absl_cc_library( + NAME dynamic_annotations + SRCS "dynamic_annotations.cc" + HDRS "dynamic_annotations.h" + PUBLIC +) + +# core headers +set(CORE_HEADERS_HDRS + "attributes.h" "macros.h" "optimization.h" - "policy_checks.h" "port.h" "thread_annotations.h" ) +absl_cc_library( + NAME core_headers + HDRS ${CORE_HEADERS_HDRS} + DEPS + absl::config + absl::dynamic_annotations + PUBLIC +) -list(APPEND BASE_INTERNAL_HEADERS - "internal/atomic_hook.h" - "internal/bits.h" - "internal/cycleclock.h" +# malloc library +set(MALLOC_INTERNAL_HDRS "internal/direct_mmap.h" - "internal/endian.h" - "internal/exception_testing.h" - "internal/exception_safety_testing.h" + "internal/low_level_alloc.h" +) + +set(MALLOC_INTERNAL_SRCS + "internal/low_level_alloc.cc" +) + +absl_cc_library( + NAME malloc_internal + SRCS ${MALLOC_INTERNAL_SRCS} + HDRS ${MALLOC_INTERNAL_HDRS} + DEPS + absl::base + absl::config + absl::core_headers + absl::dynamic_annotations + absl::spinlock_wait + PUBLIC +) + +# base internal library +list(APPEND BASE_INTERNAL_HDRS "internal/hide_ptr.h" "internal/identity.h" - "internal/invoke.h" "internal/inline_variable.h" - "internal/low_level_alloc.h" + "internal/invoke.h" +) + +absl_cc_library( + NAME base_internal + HDRS ${BASE_INTERNAL_HDRS} + PUBLIC +) + +# base library +set(BASE_HDRS + "call_once.h" + "casts.h" + "internal/atomic_hook.h" + "internal/cycleclock.h" "internal/low_level_scheduling.h" "internal/per_thread_tls.h" - "internal/pretty_function.h" "internal/raw_logging.h" - "internal/scheduling_mode.h" "internal/spinlock.h" - "internal/spinlock_wait.h" "internal/sysinfo.h" "internal/thread_identity.h" - "internal/throw_delegate.h" "internal/tsan_mutex_interface.h" - "internal/unaligned_access.h" "internal/unscaledcycleclock.h" + "log_severity.h" ) - -# absl_base main library -list(APPEND BASE_SRC +set(BASE_SRCS "internal/cycleclock.cc" "internal/raw_logging.cc" "internal/spinlock.cc" "internal/sysinfo.cc" "internal/thread_identity.cc" "internal/unscaledcycleclock.cc" - "internal/low_level_alloc.cc" - ${BASE_PUBLIC_HEADERS} - ${BASE_INTERNAL_HEADERS} ) -absl_library( - TARGET - absl_base - SOURCES - ${BASE_SRC} - PUBLIC_LIBRARIES - absl_dynamic_annotations - absl_internal_spinlock_wait - EXPORT_NAME - base +absl_cc_library( + NAME base + SRCS ${BASE_SRCS} + HDRS ${BASE_HDRS} + DEPS + absl::base_internal + absl::config + absl::core_headers + absl::dynamic_annotations + absl::spinlock_wait + PUBLIC ) -absl_cc_library( - NAME - throw_delegate - SRCS - "internal/throw_delegate.cc" - HDRS - "internal/throw_delegate.h" - COPTS - ${ABSL_EXCEPTIONS_FLAG} +# +## TESTS +# + +# atomic hook test +absl_cc_test( + NAME atomic_hook_test + SRCS "internal/atomic_hook_test.cc" DEPS absl::base + absl::core_headers + gtest_main ) +# bit_cast_test +absl_cc_test( + NAME bit_cast_test + SRCS "bit_cast_test.cc" + DEPS + absl::base + absl::core_headers + gtest_main +) -# exception-safety testing library +# throw delegate library absl_cc_library( - NAME - exception_safety_testing - HDRS - "internal/exception_safety_testing.h" - SRCS - "internal/exception_safety_testing.cc" - COPTS - ${ABSL_EXCEPTIONS_FLAG} + NAME throw_delegate + SRCS "internal/throw_delegate.cc" + HDRS "internal/throw_delegate.h" + COPTS ${ABSL_EXCEPTIONS_FLAG} + LINKOPTS ${ABSL_EXCEPTIONS_FLAG_LINKOPTS} DEPS absl::base - absl::memory - absl::meta - absl::strings - absl::optional - gtest - TESTONLY + absl::config + absl::core_headers + PUBLIC ) - -# dynamic_annotations library -set(DYNAMIC_ANNOTATIONS_SRC "dynamic_annotations.cc") - -absl_library( - TARGET - absl_dynamic_annotations - SOURCES - ${DYNAMIC_ANNOTATIONS_SRC} +# throw_delegate_test +absl_cc_test( + NAME throw_delegate_test + SRCS "throw_delegate_test.cc" + COPTS ${ABSL_EXCEPTIONS_FLAG} + LINKOPTS ${ABSL_EXCEPTIONS_FLAG_LINKOPTS} + DEPS + absl::throw_delegate + gtest_main ) +# pretty function library absl_cc_library( - NAME - spinlock_wait - SRCS - "internal/spinlock_wait.cc" - HDRS - "internal/scheduling_mode.h" - "internal/spinlock_wait.h" + NAME pretty_function + HDRS "internal/pretty_function.h" + PUBLIC ) +# exception_safety_testing library absl_cc_library( - NAME - malloc_internal - SRCS - "internal/low_level_alloc.cc" - HDRS - "internal/direct_mmap.h" - "internal/low_level_alloc.h" + NAME exception_safety_testing + HDRS "internal/exception_safety_testing.h" + SRCS "internal/exception_safety_testing.cc" + COPTS ${ABSL_EXCEPTIONS_FLAG} + LINKOPTS ${ABSL_EXCEPTIONS_FLAG_LINKOPTS} DEPS - absl_dynamic_annotations + absl::base + absl::config + absl::pretty_function + absl::memory + absl::strings + gtest + TESTONLY ) - - -# -## TESTS -# - -# call once test -set(ATOMIC_HOOK_TEST_SRC "internal/atomic_hook_test.cc") -set(ATOMIC_HOOK_TEST_PUBLIC_LIBRARIES absl::base) - -absl_test( - TARGET - atomic_hook_test - SOURCES - ${ATOMIC_HOOK_TEST_SRC} - PUBLIC_LIBRARIES - ${ATOMIC_HOOK_TEST_PUBLIC_LIBRARIES} +# exceptions_safety_testing test +absl_cc_test( + NAME exception_safety_testing_test + SRCS "exception_safety_testing_test.cc" + COPTS ${ABSL_EXCEPTIONS_FLAG} + DEPS + absl::base + absl_internal_exception_safety_testing + absl::memory + absl::meta + absl::strings + absl::optional ) - -# call once test -set(CALL_ONCE_TEST_SRC "call_once_test.cc") -set(CALL_ONCE_TEST_PUBLIC_LIBRARIES absl::base absl::synchronization) - -absl_test( - TARGET - call_once_test - SOURCES - ${CALL_ONCE_TEST_SRC} - PUBLIC_LIBRARIES - ${CALL_ONCE_TEST_PUBLIC_LIBRARIES} +# inline_variable test +set(INLINE_VARIABLE_TEST_SRCS + "inline_variable_test.cc" + "inline_variable_test_a.cc" + "inline_variable_test_b.cc" + "internal/inline_variable_testing.h" ) - -# test bit_cast_test -set(BIT_CAST_TEST_SRC "bit_cast_test.cc") - -absl_test( - TARGET - bit_cast_test - SOURCES - ${BIT_CAST_TEST_SRC} +absl_cc_test( + NAME inline_variable_test + SRCS ${INLINE_VARIABLE_TEST_SRCS} + DEPS + absl::base_internal + gtest_main ) - -# test absl_throw_delegate_test -set(THROW_DELEGATE_TEST_SRC "throw_delegate_test.cc") -set(THROW_DELEGATE_TEST_PUBLIC_LIBRARIES absl::base absl_internal_throw_delegate) - -absl_test( - TARGET - throw_delegate_test - SOURCES - ${THROW_DELEGATE_TEST_SRC} - PUBLIC_LIBRARIES - ${THROW_DELEGATE_TEST_PUBLIC_LIBRARIES} +# invoke test +absl_cc_test( + NAME invoke_test + SRCS "invoke_test.cc" + DEPS + absl::base_internal + absl::memory + absl::strings + gtest_main ) - -# test invoke_test -set(INVOKE_TEST_SRC "invoke_test.cc") -set(INVOKE_TEST_PUBLIC_LIBRARIES absl::strings) - -absl_test( - TARGET - invoke_test - SOURCES - ${INVOKE_TEST_SRC} - PUBLIC_LIBRARIES - ${INVOKE_TEST_PUBLIC_LIBRARIES} +# spinlock_test_common library +absl_cc_library( + NAME spinlock_test_common + SRCS "spinlock_test_common.cc" + DEPS + absl::base + absl::core_headers + absl::spinlock_wait + absl::synchronization + gtest + TESTONLY ) - -# test inline_variable_test -list(APPEND INLINE_VARIABLE_TEST_SRC - "internal/inline_variable_testing.h" - "inline_variable_test.cc" - "inline_variable_test_a.cc" - "inline_variable_test_b.cc" +# spinlock test +absl_cc_test( + NAME spinlock_test + SRCS "spinlock_test_common.cc" + DEPS + absl::base + absl::core_headers + absl::spinlock_wait + absl::synchronization + gtest_main ) -set(INLINE_VARIABLE_TEST_PUBLIC_LIBRARIES absl::base) - -absl_test( - TARGET - inline_variable_test - SOURCES - ${INLINE_VARIABLE_TEST_SRC} - PUBLIC_LIBRARIES - ${INLINE_VARIABLE_TEST_PUBLIC_LIBRARIES} +# endian library +set(ENDIAN_HDRS + "internal/endian.h" + "internal/unaligned_access.h" ) - -# test spinlock_test_common -set(SPINLOCK_TEST_COMMON_SRC "spinlock_test_common.cc") -set(SPINLOCK_TEST_COMMON_PUBLIC_LIBRARIES absl::base absl::synchronization) - -absl_test( - TARGET - spinlock_test_common - SOURCES - ${SPINLOCK_TEST_COMMON_SRC} - PUBLIC_LIBRARIES - ${SPINLOCK_TEST_COMMON_PUBLIC_LIBRARIES} +absl_cc_library( + NAME endian + HDRS ${ENDIAN_HDRS} + DEPS + absl::config + absl::core_headers + PUBLIC ) - -# test spinlock_test -set(SPINLOCK_TEST_SRC "spinlock_test_common.cc") -set(SPINLOCK_TEST_PUBLIC_LIBRARIES absl::base absl::synchronization) - -absl_test( - TARGET - spinlock_test - SOURCES - ${SPINLOCK_TEST_SRC} - PUBLIC_LIBRARIES - ${SPINLOCK_TEST_PUBLIC_LIBRARIES} +# endian test +absl_cc_test( + NAME endian_test + SRCS "internal/endian_test.cc" + DEPS + absl::base + absl::config + absl::endian + gtest_main ) - -# test endian_test -set(ENDIAN_TEST_SRC "internal/endian_test.cc") - -absl_test( - TARGET - endian_test - SOURCES - ${ENDIAN_TEST_SRC} +# config test +absl_cc_test( + NAME config_test + SRCS "config_test.cc" + DEPS + absl::config + absl::synchronization + gtest_main ) - -# test config_test -set(CONFIG_TEST_SRC "config_test.cc") -set(CONFIG_TEST_PUBLIC_LIBRARIES absl::base absl::synchronization) -absl_test( - TARGET - config_test - SOURCES - ${CONFIG_TEST_SRC} - PUBLIC_LIBRARIES - ${CONFIG_TEST_PUBLIC_LIBRARIES} +# call_once test +absl_cc_test( + NAME call_once_test + SRCS "call_once_test.cc" + DEPS + absl::base + absl::core_headers + absl::synchronization + gtest_main ) - -# test raw_logging_test -set(RAW_LOGGING_TEST_SRC "raw_logging_test.cc") -set(RAW_LOGGING_TEST_PUBLIC_LIBRARIES absl::base absl::strings) - -absl_test( - TARGET - raw_logging_test - SOURCES - ${RAW_LOGGING_TEST_SRC} - PUBLIC_LIBRARIES - ${RAW_LOGGING_TEST_PUBLIC_LIBRARIES} +# raw_logging test +absl_cc_test( + NAME raw_logging_test + SRCS "raw_logging_test.cc" + DEPS + absl::base + absl::strings + gtest_main ) - -# test sysinfo_test -set(SYSINFO_TEST_SRC "internal/sysinfo_test.cc") -set(SYSINFO_TEST_PUBLIC_LIBRARIES absl::base absl::synchronization) - -absl_test( - TARGET - sysinfo_test - SOURCES - ${SYSINFO_TEST_SRC} - PUBLIC_LIBRARIES - ${SYSINFO_TEST_PUBLIC_LIBRARIES} +# sysinfo test +absl_cc_test( + NAME sysinfo_test + SRCS "internal/sysinfo_test.cc" + DEPS + absl::base + absl::synchronization + gtest_main ) - -# test low_level_alloc_test -set(LOW_LEVEL_ALLOC_TEST_SRC "internal/low_level_alloc_test.cc") -set(LOW_LEVEL_ALLOC_TEST_PUBLIC_LIBRARIES absl::base) - -absl_test( - TARGET - low_level_alloc_test - SOURCES - ${LOW_LEVEL_ALLOC_TEST_SRC} - PUBLIC_LIBRARIES - ${LOW_LEVEL_ALLOC_TEST_PUBLIC_LIBRARIES} +# low_level_alloc test +absl_cc_test( + NAME low_level_alloc_test + SRCS "internal/low_level_alloc_test.cc" + DEPS + absl::malloc_internal + gtest_main ) - -# test thread_identity_test -set(THREAD_IDENTITY_TEST_SRC "internal/thread_identity_test.cc") -set(THREAD_IDENTITY_TEST_PUBLIC_LIBRARIES absl::base absl::synchronization) - -absl_test( - TARGET - thread_identity_test - SOURCES - ${THREAD_IDENTITY_TEST_SRC} - PUBLIC_LIBRARIES - ${THREAD_IDENTITY_TEST_PUBLIC_LIBRARIES} +# thread_identity test +absl_cc_test( + NAME thread_identity_test + SRCS "internal/thread_identity_test.cc" + DEPS + absl::base + absl::core_headers + absl::synchronization + gtest_main ) -#test exceptions_safety_testing_test -set(EXCEPTION_SAFETY_TESTING_TEST_SRC "exception_safety_testing_test.cc") -set(EXCEPTION_SAFETY_TESTING_TEST_PUBLIC_LIBRARIES - absl::base - absl_internal_exception_safety_testing - absl::memory - absl::meta - absl::strings - absl::optional +# bits library +absl_cc_library( + NAME bits + HDRS "internal/bits.h" + DEPS + absl::core_headers + PUBLIC ) -absl_test( - TARGET - absl_exception_safety_testing_test - SOURCES - ${EXCEPTION_SAFETY_TESTING_TEST_SRC} - PUBLIC_LIBRARIES - ${EXCEPTION_SAFETY_TESTING_TEST_PUBLIC_LIBRARIES} - PRIVATE_COMPILE_FLAGS - ${ABSL_EXCEPTIONS_FLAG} +# bits test +absl_cc_test( + NAME bits_test + SRCS "internal/bits_test.cc" + DEPS + absl::bits + gtest_main )