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:
committed by
Vasily Levchenko
parent
764f7f31d2
commit
3f15774cb2
@@ -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
|
||||
|
||||
+1
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user