Fix -Xoverride-konan-properties for Apple strip

When building an optimised release dynamic framework we see a lot of local symbols in Mach-O. When calling `strip -x` this can be dramatically reduced whilst still having a usable artefact.

Current logic seems to keep symbols for DSYM extraction in debug light mode. But only strips hardcoded debug symbols (`strip -S`) afterwards.

Introduce new stripFlags for Apple compilation to allow optimization for release with DSYM builds
This commit is contained in:
Paul Idstein
2021-02-18 07:25:28 +01:00
committed by Vasily Levchenko
parent 764f7f31d2
commit 3f15774cb2
3 changed files with 13 additions and 1 deletions
+11
View File
@@ -91,6 +91,7 @@ clangDebugFlags.macos_x64 = -O0
linkerKonanFlags.macos_x64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 10.15.6
linkerOptimizationFlags.macos_x64 = -dead_strip
linkerNoDebugFlags.macos_x64 = -S
stripFlags.macos_x64 = -S
linkerDynamicFlags.macos_x64 = -dylib
osVersionMinFlagLd.macos_x64 = -macosx_version_min
@@ -127,6 +128,7 @@ clangDebugFlags.macos_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=fa
linkerKonanFlags.macos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 11.0.1
linkerOptimizationFlags.macos_arm64 = -dead_strip
linkerNoDebugFlags.macos_arm64 = -S
stripFlags.macos_arm64 = -S
linkerDynamicFlags.macos_arm64 = -dylib
osVersionMinFlagLd.macos_arm64 = -macosx_version_min
@@ -157,6 +159,7 @@ clangNooptFlags.ios_arm32 = -O1
clangOptFlags.ios_arm32 = -O3
clangDebugFlags.ios_arm32 = -O0
linkerNoDebugFlags.ios_arm32 = -S
stripFlags.ios_arm32 = -S
linkerDynamicFlags.ios_arm32 = -dylib
linkerKonanFlags.ios_arm32 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.ios_arm32 = -dead_strip
@@ -192,6 +195,7 @@ clangOptFlags.ios_arm64 = -O3
clangDebugFlags.ios_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
linkerNoDebugFlags.ios_arm64 = -S
stripFlags.ios_arm64 = -S
linkerDynamicFlags.ios_arm64 = -dylib
linkerKonanFlags.ios_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.ios_arm64 = -dead_strip
@@ -221,6 +225,7 @@ clangDebugFlags.ios_x64 = -O0
linkerKonanFlags.ios_x64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.ios_x64 = -dead_strip
linkerNoDebugFlags.ios_x64 = -S
stripFlags.ios_x64 = -S
linkerDynamicFlags.ios_x64 = -dylib
osVersionMinFlagLd.ios_x64 = -ios_simulator_version_min
osVersionMinFlagClang.ios_x64 = -mios-simulator-version-min
@@ -247,6 +252,7 @@ clangDebugFlags.tvos_x64 = -O0
linkerKonanFlags.tvos_x64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.tvos_x64 = -dead_strip
linkerNoDebugFlags.tvos_x64 = -S
stripFlags.tvos_x64 = -S
linkerDynamicFlags.tvos_x64 = -dylib
osVersionMinFlagLd.tvos_x64 = -tvos_simulator_version_min
osVersionMinFlagClang.tvos_x64 = -mtvos-simulator-version-min
@@ -271,6 +277,7 @@ clangOptFlags.tvos_arm64 = -O3
clangDebugFlags.tvos_arm64 = -O0 -mllvm -fast-isel=false -mllvm -global-isel=false
linkerNoDebugFlags.tvos_arm64 = -S
stripFlags.tvos_arm64 = -S
linkerDynamicFlags.tvos_arm64 = -dylib
linkerKonanFlags.tvos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 14.0
linkerOptimizationFlags.tvos_arm64 = -dead_strip
@@ -299,6 +306,7 @@ clangDebugFlags.watchos_arm32 = -O0
linkerKonanFlags.watchos_arm32 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 7.0
linkerOptimizationFlags.watchos_arm32 = -dead_strip
linkerNoDebugFlags.watchos_arm32 = -S
stripFlags.watchos_arm32 = -S
linkerDynamicFlags.watchos_arm32 = -dylib
osVersionMinFlagLd.watchos_arm32 = -watchos_version_min
osVersionMinFlagClang.watchos_arm32 = -mwatchos-version-min
@@ -328,6 +336,7 @@ clangDebugFlags.watchos_arm64 = -O0
linkerKonanFlags.watchos_arm64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 7.0
linkerOptimizationFlags.watchos_arm64 = -dead_strip
linkerNoDebugFlags.watchos_arm64 = -S
stripFlags.watchos_arm64 = -S
linkerDynamicFlags.watchos_arm64 = -dylib
osVersionMinFlagLd.watchos_arm64 = -watchos_version_min
osVersionMinFlagClang.watchos_arm64 = -mwatchos-version-min
@@ -360,6 +369,7 @@ clangDebugFlags.watchos_x86 = -O0
linkerKonanFlags.watchos_x86 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 7.0
linkerOptimizationFlags.watchos_x86 = -dead_strip
linkerNoDebugFlags.watchos_x86 = -S
stripFlags.watchos_x86 = -S
linkerDynamicFlags.watchos_x86 = -dylib
osVersionMinFlagLd.watchos_x86 = -watchos_simulator_version_min
osVersionMinFlagClang.watchos_x86 = -mwatchos-simulator-version-min
@@ -386,6 +396,7 @@ clangDebugFlags.watchos_x64 = -O0
linkerKonanFlags.watchos_x64 = -lSystem -lc++ -lobjc -framework Foundation -sdk_version 7.0
linkerOptimizationFlags.watchos_x64 = -dead_strip
linkerNoDebugFlags.watchos_x64 = -S
stripFlags.watchos_x64 = -S
linkerDynamicFlags.watchos_x64 = -dylib
osVersionMinFlagLd.watchos_x64 = -watchos_simulator_version_min
osVersionMinFlagClang.watchos_x64 = -mwatchos-simulator-version-min
@@ -98,6 +98,7 @@ interface AppleConfigurables : Configurables, ClangFlags {
val arch get() = targetString("arch")!!
val osVersionMin get() = targetString("osVersionMin")!!
val osVersionMinFlagLd get() = targetString("osVersionMinFlagLd")!!
val stripFlags get() = targetList("stripFlags")
val additionalToolsDir get() = hostString("additionalToolsDir")
val absoluteAdditionalToolsDir get() = absolute(additionalToolsDir)
}
@@ -265,7 +265,7 @@ class MacOSBasedLinker(targetProperties: AppleConfigurables)
if (debug) {
result += dsymUtilCommand(executable, outputDsymBundle)
if (optimize) {
result += Command(strip, "-S", executable)
result += Command(strip, *stripFlags.toTypedArray(), executable)
}
}