Merge pull request #85616 from etcwilde/ewilde/stdlib-tracing

CMake: Runtimes: Enable tracing on Apple OSs
This commit is contained in:
Evan Wilde
2025-11-20 17:19:26 -08:00
committed by GitHub
4 changed files with 17 additions and 2 deletions

View File

@@ -106,11 +106,11 @@ defaulted_option(SwiftCore_ENABLE_RUNTIME_OS_VERSIONING "Enable runtime OS versi
defaulted_option(SwiftCore_ENABLE_STATIC_PRINT "Disable full print")
defaulted_option(SwiftCore_ENABLE_COMPACT_ABSOLUTE_FUNCTION_POINTERS "Resolve absolute function pointer as identity")
defaulted_option(SwiftCore_ENABLE_BACKDEPLOYMENT_SUPPORT "Add symbols for runtime backdeployment")
defaulted_option(SwiftCore_ENABLE_STDLIB_TRACING "Enable tracing in the runtime. Assumes the presence of os_log(3) and the os_signpost(3) API.")
defaulted_option(SwiftCore_ENABLE_CONCURRENCY "Enable Concurrency runtime support")
defaulted_option(SwiftCore_ENABLE_REMOTE_MIRROR "Enable RemoteMirror runtime support")
defaulted_option(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE "Use direct retain release in the runtime/stdlib")
defaulted_set(SwiftCore_CONCURRENCY_GLOBAL_EXECUTOR STRING "Default Concurrency global executor implementation")
option(SwiftCore_ENABLE_STDLIB_TRACING "Enable tracing in the runtime. Requires os_log(3) and the os_signpost(3) API." OFF)
option(SwiftCore_ENABLE_COMMANDLINE_SUPPORT "Enable command line argument support" ON)
option(SwiftCore_ENABLE_UNICODE_DATA "Include unicode data in Swift runtimes" ON)
option(SwiftCore_ENABLE_SHORT_MANGLING_LOOKUPS "Build with fast-path context descriptor lookups based on well-known short manglings." ON)

View File

@@ -22,7 +22,6 @@ add_library(swift_Concurrency
TaskLocal.cpp
TaskStatus.cpp
ThreadingError.cpp
TracingSignpost.cpp
"${PROJECT_SOURCE_DIR}/CompatibilityOverride/CompatibilityOverride.cpp"
"./linker-support/magic-symbols-for-install-name.c"
Actor.swift
@@ -99,6 +98,13 @@ add_library(swift_Concurrency
"${CMAKE_CURRENT_BINARY_DIR}/TaskGroup+addTask.swift"
"${CMAKE_CURRENT_BINARY_DIR}/Task+immediate.swift")
if(SwiftCore_ENABLE_STDLIB_TRACING)
target_compile_definitions(swift_Concurrency
PRIVATE SWIFT_STDLIB_CONCURRENCY_TRACING)
target_sources(swift_Concurrency
PRIVATE TracingSignpost.cpp)
endif()
if(APPLE)
target_sources(swift_Concurrency PRIVATE
CFExecutor.swift

View File

@@ -13,6 +13,7 @@ set(SwiftCore_ENABLE_RUNTIME_FUNCTION_COUNTERS ON CACHE BOOL "")
set(SwiftCore_ENABLE_BACKDEPLOYMENT_SUPPORT ON CACHE BOOL "")
set(SwiftCore_ENABLE_FILESYSTEM_SUPPORT ON CACHE BOOL "")
set(SwiftCore_ENABLE_STRICT_AVAILABILITY ON CACHE BOOL "")
set(SwiftCore_ENABLE_STDLIB_TRACING ON CACHE BOOL "")
set(SwiftCore_OPTIMIZATION_REMARKS "bitstream" CACHE STRING "")

View File

@@ -72,6 +72,14 @@ if(SwiftCore_ENABLE_FILESYSTEM_SUPPORT AND (NOT SwiftCore_ARCH_SUBDIR OR NOT Swi
message(SEND_ERROR "Filesystem support requires setting `SwiftCore_ARCH_SUBDIR` and `SwiftCore_PLATFORM_SUBDIR`")
endif()
if(SwiftCore_ENABLE_STDLIB_TRACING)
check_symbol_exists("os_signpost_interval_begin" "os/signpost.h" SwiftCore_HAS_OS_SIGNPOST)
check_symbol_exists("os_log" "os/log.h" SwiftCore_HAS_OS_LOG)
if(NOT SwiftCore_HAS_OS_LOG OR NOT SwiftCore_HAS_OS_SIGNPOST)
message(SEND_ERROR "Tracing requires 'os_signpost' and 'os_log' APIs")
endif()
endif()
# TODO: Probably worth considering putting half of these in a RuntimeConfig.h.in
# file rather than pushing them through macro flags.
target_compile_definitions(swiftRuntime