From 1b380802db12e56c33ad1044e11926935d39d48b Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Mon, 30 Sep 2024 16:35:14 +0200 Subject: [PATCH 1/4] enable mergabel librabry for build artifacts --- scripts/build-xcframework.sh | 40 +++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/scripts/build-xcframework.sh b/scripts/build-xcframework.sh index 6259b7595c8..9ee952c3776 100755 --- a/scripts/build-xcframework.sh +++ b/scripts/build-xcframework.sh @@ -19,10 +19,12 @@ generate_xcframework() { local resolved_configuration="Release$configuration_suffix" local resolved_product_name="$scheme$configuration_suffix" - + local OTHER_LDFLAGS="-Wl,-make_mergeable" + if [ "$MACH_O_TYPE" = "staticlib" ]; then #For static framework we disabled symbols because they are not distributed in the framework causing warnings. GCC_GENERATE_DEBUGGING_SYMBOLS="NO" + OTHER_LDFLAGS="" # Disable mergeable libraries for static libs fi rm -rf Carthage/DerivedData @@ -30,7 +32,25 @@ generate_xcframework() { for sdk in "${sdks[@]}"; do if grep -q "${sdk}" <<< "$ALL_SDKS"; then - xcodebuild archive -project Sentry.xcodeproj/ -scheme "$scheme" -configuration "$resolved_configuration" -sdk "$sdk" -archivePath "./Carthage/archive/${scheme}${suffix}/${sdk}.xcarchive" CODE_SIGNING_REQUIRED=NO SKIP_INSTALL=NO CODE_SIGN_IDENTITY= CARTHAGE=YES MACH_O_TYPE="$MACH_O_TYPE" ENABLE_CODE_COVERAGE=NO GCC_GENERATE_DEBUGGING_SYMBOLS="$GCC_GENERATE_DEBUGGING_SYMBOLS" + ## watchos and watchsimulator dont support make_mergeable: ld: unknown option: -make_mergeable + if [[ "$sdk" == "watchos" || "$sdk" == "watchsimulator" ]]; then + OTHER_LDFLAGS="" + fi + + xcodebuild archive \ + -project Sentry.xcodeproj/ \ + -scheme "$scheme" \ + -configuration "$resolved_configuration" \ + -sdk "$sdk" \ + -archivePath "./Carthage/archive/${scheme}${suffix}/${sdk}.xcarchive" \ + CODE_SIGNING_REQUIRED=NO \ + SKIP_INSTALL=NO \ + CODE_SIGN_IDENTITY= \ + CARTHAGE=YES \ + MACH_O_TYPE="$MACH_O_TYPE" \ + ENABLE_CODE_COVERAGE=NO \ + GCC_GENERATE_DEBUGGING_SYMBOLS="$GCC_GENERATE_DEBUGGING_SYMBOLS" \ + OTHER_LDFLAGS="$OTHER_LDFLAGS" createxcframework+="-framework Carthage/archive/${scheme}${suffix}/${sdk}.xcarchive/Products/Library/Frameworks/${resolved_product_name}.framework " @@ -56,7 +76,21 @@ generate_xcframework() { done #Create framework for mac catalyst - xcodebuild -project Sentry.xcodeproj/ -scheme "$scheme" -configuration "$resolved_configuration" -sdk iphoneos -destination 'platform=macOS,variant=Mac Catalyst' -derivedDataPath ./Carthage/DerivedData CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES MACH_O_TYPE="$MACH_O_TYPE" SUPPORTS_MACCATALYST=YES ENABLE_CODE_COVERAGE=NO GCC_GENERATE_DEBUGGING_SYMBOLS="$GCC_GENERATE_DEBUGGING_SYMBOLS" + xcodebuild \ + -project Sentry.xcodeproj/ \ + -scheme "$scheme" \ + -configuration "$resolved_configuration" \ + -sdk iphoneos \ + -destination 'platform=macOS,variant=Mac Catalyst' \ + -derivedDataPath ./Carthage/DerivedData \ + CODE_SIGNING_REQUIRED=NO \ + CODE_SIGN_IDENTITY= \ + CARTHAGE=YES \ + MACH_O_TYPE="$MACH_O_TYPE" \ + SUPPORTS_MACCATALYST=YES \ + ENABLE_CODE_COVERAGE=NO \ + GCC_GENERATE_DEBUGGING_SYMBOLS="$GCC_GENERATE_DEBUGGING_SYMBOLS" \ + OTHER_LDFLAGS="$OTHER_LDFLAGS" if [ "$MACH_O_TYPE" = "staticlib" ]; then local infoPlist="Carthage/DerivedData/Build/Products/$resolved_configuration-maccatalyst/${scheme}.framework/Resources/Info.plist" From c82fa6ecb5e01e38410225be04cd2e23c826dda8 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Mon, 30 Sep 2024 16:38:54 +0200 Subject: [PATCH 2/4] add cl entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 847b582ecd5..c2f8b9ad6b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Added breadcrumb.origin private field (#4358) - Custom redact modifier for SwiftUI (#4362) +- Add mergeable libraries support to dynamic libraries (#4381) ### Improvements From d730b6fd2b012b763b38f1eceb3a1421a152b27b Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Tue, 1 Oct 2024 11:25:25 +0200 Subject: [PATCH 3/4] correctly set OTHER_LDFLAGS for sdks after watchos and before mac catalyst --- scripts/build-xcframework.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scripts/build-xcframework.sh b/scripts/build-xcframework.sh index 9ee952c3776..85bab81b972 100755 --- a/scripts/build-xcframework.sh +++ b/scripts/build-xcframework.sh @@ -19,12 +19,11 @@ generate_xcframework() { local resolved_configuration="Release$configuration_suffix" local resolved_product_name="$scheme$configuration_suffix" - local OTHER_LDFLAGS="-Wl,-make_mergeable" + local OTHER_LDFLAGS="" if [ "$MACH_O_TYPE" = "staticlib" ]; then #For static framework we disabled symbols because they are not distributed in the framework causing warnings. GCC_GENERATE_DEBUGGING_SYMBOLS="NO" - OTHER_LDFLAGS="" # Disable mergeable libraries for static libs fi rm -rf Carthage/DerivedData @@ -32,9 +31,11 @@ generate_xcframework() { for sdk in "${sdks[@]}"; do if grep -q "${sdk}" <<< "$ALL_SDKS"; then - ## watchos and watchsimulator dont support make_mergeable: ld: unknown option: -make_mergeable + ## watchos, watchsimulator dont support make_mergeable: ld: unknown option: -make_mergeable if [[ "$sdk" == "watchos" || "$sdk" == "watchsimulator" ]]; then OTHER_LDFLAGS="" + elif [ "$MACH_O_TYPE" != "staticlib" ]; then + OTHER_LDFLAGS="-Wl,-make_mergeable" fi xcodebuild archive \ @@ -75,6 +76,11 @@ generate_xcframework() { fi done + # for the case that watch* sdks are last in list + if [ "$MACH_O_TYPE" != "staticlib" ]; then + OTHER_LDFLAGS="-Wl,-make_mergeable" + fi + #Create framework for mac catalyst xcodebuild \ -project Sentry.xcodeproj/ \ From e0c76f7d3ab29049a6f101f86ad187109cb66248 Mon Sep 17 00:00:00 2001 From: Dhiogo Brustolin Date: Tue, 1 Oct 2024 17:29:56 +0200 Subject: [PATCH 4/4] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 12fee23456b..61d0af11fca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ on: - Sentry.xcodeproj/** - Gemfile.lock - 'Package.swift' - - 'scripts/build-xcframework' + - 'scripts/build-xcframework.sh' # https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value concurrency: