diff --git a/Runtimes/Core/CMakeLists.txt b/Runtimes/Core/CMakeLists.txt index d5d24536b9828..9fbfe49353319 100644 --- a/Runtimes/Core/CMakeLists.txt +++ b/Runtimes/Core/CMakeLists.txt @@ -106,10 +106,10 @@ 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_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) diff --git a/Runtimes/Core/Concurrency/CMakeLists.txt b/Runtimes/Core/Concurrency/CMakeLists.txt index 6ea008aecdd73..29254630a3b8e 100644 --- a/Runtimes/Core/Concurrency/CMakeLists.txt +++ b/Runtimes/Core/Concurrency/CMakeLists.txt @@ -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 diff --git a/Runtimes/Core/cmake/caches/Vendors/Apple/apple-common.cmake b/Runtimes/Core/cmake/caches/Vendors/Apple/apple-common.cmake index abf1ecbb46827..a7cdd701030fc 100644 --- a/Runtimes/Core/cmake/caches/Vendors/Apple/apple-common.cmake +++ b/Runtimes/Core/cmake/caches/Vendors/Apple/apple-common.cmake @@ -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 "") diff --git a/Runtimes/Core/runtime/CMakeLists.txt b/Runtimes/Core/runtime/CMakeLists.txt index 795852313f946..073de5f44fdc2 100644 --- a/Runtimes/Core/runtime/CMakeLists.txt +++ b/Runtimes/Core/runtime/CMakeLists.txt @@ -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