From e763709d14e560915e04731c2fd6f1595d7ff8ba Mon Sep 17 00:00:00 2001 From: Jason Molenda Date: Tue, 13 Oct 2020 16:27:05 -0700 Subject: [PATCH] Add a new launch flag option for watchos, WatchComplicationLaunch. Link against CarouselServices on watchos, recognize the WatchComplicationLaunch launch flag option when that framework is available. , --- .../debugserver.xcodeproj/project.pbxproj | 138 ++++++++------------- lldb/tools/debugserver/source/CMakeLists.txt | 10 ++ .../tools/debugserver/source/MacOSX/MachProcess.mm | 11 ++ 3 files changed, 74 insertions(+), 85 deletions(-) diff --git a/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj b/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj index 1c7a55f..d93f376 100644 --- a/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj +++ b/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj @@ -850,6 +850,21 @@ "-framework", Security, ); + "OTHER_LDFLAGS[sdk=watchos*]" = ( + "-framework", + SpringBoardServices, + "-framework", + BackBoardServices, + "-llockdown", + "-framework", + FrontBoardServices, + "-framework", + MobileCoreServices, + "$(LLDB_ENERGY_LDFLAGS)", + "$(LLDB_COMPRESSION_LDFLAGS)", + "-framework", + CarouselServices, + ); OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)"; PRODUCT_NAME = debugserver; SDKROOT = macosx; @@ -907,6 +922,10 @@ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders", ); "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)"; + "OTHER_CPLUSPLUSFLAGS[sdk=watchos*]" = ( + "$(OTHER_CFLAGS)", + "-DWITH_CAROUSEL=1", + ); OTHER_LDFLAGS = ""; "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = ( "-framework", @@ -931,6 +950,21 @@ "-framework", Security, ); + "OTHER_LDFLAGS[sdk=watchos*]" = ( + "-framework", + SpringBoardServices, + "-framework", + BackBoardServices, + "-llockdown", + "-framework", + FrontBoardServices, + "-framework", + MobileCoreServices, + "$(LLDB_ENERGY_LDFLAGS)", + "$(LLDB_COMPRESSION_LDFLAGS)", + "-framework", + CarouselServices, + ); OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)"; PRODUCT_NAME = debugserver; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; @@ -987,6 +1021,10 @@ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders", ); "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)"; + "OTHER_CPLUSPLUSFLAGS[sdk=watchos*]" = ( + "$(OTHER_CFLAGS)", + "-DWITH_CAROUSEL=1", + ); OTHER_LDFLAGS = ""; "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = ( "-framework", @@ -1011,6 +1049,21 @@ "-framework", Security, ); + "OTHER_LDFLAGS[sdk=watchos*]" = ( + "-framework", + SpringBoardServices, + "-framework", + BackBoardServices, + "-llockdown", + "-framework", + FrontBoardServices, + "-framework", + MobileCoreServices, + "$(LLDB_ENERGY_LDFLAGS)", + "$(LLDB_COMPRESSION_LDFLAGS)", + "-framework", + CarouselServices, + ); OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)"; PRODUCT_NAME = debugserver; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; @@ -1385,27 +1438,6 @@ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders", ); "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)"; - "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = ( - "-framework", - SpringBoardServices, - "-framework", - BackBoardServices, - "-llockdown", - "-framework", - FrontBoardServices, - "-framework", - MobileCoreServices, - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); - "OTHER_LDFLAGS[sdk=macosx*]" = ( - "-sectcreate", - __TEXT, - __info_plist, - "$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist", - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)"; PRODUCT_NAME = debugserver; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; @@ -1499,27 +1531,6 @@ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders", ); "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)"; - "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = ( - "-framework", - SpringBoardServices, - "-framework", - BackBoardServices, - "-llockdown", - "-framework", - FrontBoardServices, - "-framework", - MobileCoreServices, - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); - "OTHER_LDFLAGS[sdk=macosx*]" = ( - "-sectcreate", - __TEXT, - __info_plist, - "$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist", - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)"; PRODUCT_NAME = debugserver; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; @@ -1690,28 +1701,6 @@ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders", ); "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)"; - OTHER_LDFLAGS = ""; - "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = ( - "-framework", - SpringBoardServices, - "-framework", - BackBoardServices, - "-llockdown", - "-framework", - FrontBoardServices, - "-framework", - MobileCoreServices, - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); - "OTHER_LDFLAGS[sdk=macosx*]" = ( - "-sectcreate", - __TEXT, - __info_plist, - "$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist", - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)"; PRODUCT_NAME = debugserver; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; @@ -1806,27 +1795,6 @@ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders", ); "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)"; - "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = ( - "-framework", - SpringBoardServices, - "-framework", - BackBoardServices, - "-llockdown", - "-framework", - FrontBoardServices, - "-framework", - MobileCoreServices, - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); - "OTHER_LDFLAGS[sdk=macosx*]" = ( - "-sectcreate", - __TEXT, - __info_plist, - "$(PROJECT_DIR)/resources/lldb-debugserver-Info.plist", - "$(LLDB_ENERGY_LDFLAGS)", - "$(LLDB_COMPRESSION_LDFLAGS)", - ); OTHER_MIGFLAGS = "-I$(DERIVED_FILE_DIR)"; PRODUCT_NAME = debugserver; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; diff --git a/lldb/tools/debugserver/source/CMakeLists.txt b/lldb/tools/debugserver/source/CMakeLists.txt index 0ed6280..6977fe7 100644 --- a/lldb/tools/debugserver/source/CMakeLists.txt +++ b/lldb/tools/debugserver/source/CMakeLists.txt @@ -109,6 +109,10 @@ if(APPLE) find_library(MOBILESERVICES_LIBRARY MobileCoreServices PATHS ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks) find_library(LOCKDOWN_LIBRARY lockdown) + if (APPLE_EMBEDDED STREQUAL "watchos") + find_library(CAROUSELSERVICES_LIBRARY CarouselServices + PATHS ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks) + endif() if(NOT BACKBOARD_LIBRARY) set(SKIP_TEST_DEBUGSERVER ON CACHE BOOL "" FORCE) @@ -214,6 +218,7 @@ target_link_libraries(lldbDebugserverCommon ${SPRINGBOARD_LIBRARY} ${MOBILESERVICES_LIBRARY} ${LOCKDOWN_LIBRARY} + ${CAROUSELSERVICES_LIBRARY} lldbDebugserverArchSupport lldbDebugserverDarwin_DarwinLog ${FOUNDATION_LIBRARY} @@ -266,6 +271,11 @@ if(APPLE_EMBEDDED) WITH_FBS WITH_BKS ) + if(CAROUSELSERVICES_LIBRARY) + set_property(TARGET lldbDebugserverCommon APPEND PROPERTY COMPILE_DEFINITIONS + WITH_CAROUSEL + ) + endif() set_property(TARGET debugserver APPEND PROPERTY COMPILE_DEFINITIONS WITH_LOCKDOWN WITH_FBS diff --git a/lldb/tools/debugserver/source/MacOSX/MachProcess.mm b/lldb/tools/debugserver/source/MacOSX/MachProcess.mm index d3c2f52..80792f0 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachProcess.mm +++ b/lldb/tools/debugserver/source/MacOSX/MachProcess.mm @@ -79,6 +79,11 @@ #endif // WITH_SPRINGBOARD +#if WITH_CAROUSEL +// For definition of CSLSOpenApplicationOptionForClockKit. +#include +#endif // WITH_CAROUSEL + #if defined(WITH_SPRINGBOARD) || defined(WITH_BKS) || defined(WITH_FBS) // This returns a CFRetained pointer to the Bundle ID for app_bundle_path, // or NULL if there was some problem getting the bundle id. @@ -402,6 +407,12 @@ static bool FBSAddEventDataToOptions(NSMutableDictionary *options, DNBLog("Setting ActivateSuspended key in options dictionary."); [options setObject:@YES forKey: FBSOpenApplicationOptionKeyActivateSuspended]; found_one = true; +#if WITH_CAROUSEL + } else if (value.compare("WatchComplicationLaunch") == 0) { + DNBLog("Setting FBSOpenApplicationOptionKeyActivateSuspended key in options dictionary."); + [options setObject:@YES forKey: CSLSOpenApplicationOptionForClockKit]; + found_one = true; +#endif // WITH_CAROUSEL } else { DNBLogError("Unrecognized event type: %s. Ignoring.", value.c_str()); option_error.SetErrorString("Unrecognized event data."); -- 2.7.4