diff options
-rw-r--r-- | Directory.Build.props | 2 | ||||
-rwxr-xr-x | eng/build.sh | 13 | ||||
-rwxr-xr-x | eng/native/build-commons.sh | 5 | ||||
-rw-r--r-- | eng/native/functions.cmake | 14 | ||||
-rw-r--r-- | src/coreclr/runtime.proj | 1 | ||||
-rw-r--r-- | src/installer/corehost/corehost.proj | 1 | ||||
-rw-r--r-- | src/libraries/Native/build-native.proj | 3 |
7 files changed, 34 insertions, 5 deletions
diff --git a/Directory.Build.props b/Directory.Build.props index dc11cc1b9f1..6a688d500c4 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -107,6 +107,8 @@ <PropertyGroup> <!-- Default to portable build if not explicitly set --> <PortableBuild Condition="'$(PortableBuild)' == ''">true</PortableBuild> + <!-- Default to discarding symbols if not explicitly set --> + <KeepNativeSymbols Condition="'$(KeepNativeSymbols)' == ''">false</KeepNativeSymbols> <!-- Used for launchSettings.json and runtime config files. --> <AppDesignerFolder>Properties</AppDesignerFolder> <!-- Determine what architecture we are building on. --> diff --git a/eng/build.sh b/eng/build.sh index f271bb0ca76..1179f8efd27 100755 --- a/eng/build.sh +++ b/eng/build.sh @@ -76,6 +76,7 @@ usage() echo " --gcc Optional argument to build using gcc in PATH (default)." echo " --gccx.y Optional argument to build using gcc version x.y." echo " --portablebuild Optional argument: set to false to force a non-portable build." + echo " --keepnativesymbols Optional argument: set to true to keep native symbols/debuginfo in generated binaries." echo "" echo "Command line arguments starting with '/p:' are passed through to MSBuild." @@ -402,6 +403,18 @@ while [[ $# > 0 ]]; do shift 2 ;; + -keepnativesymbols) + if [ -z ${2+x} ]; then + echo "No value for keepNativeSymbols is supplied. See help (--help) for supported values." 1>&2 + exit 1 + fi + passedKeepNativeSymbols="$(echo "$2" | awk '{print tolower($0)}')" + if [ "$passedKeepNativeSymbols" = true ]; then + arguments="$arguments /p:KeepNativeSymbols=true" + fi + shift 2 + ;; + *) extraargs="$extraargs $1" shift 1 diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh index 877ef003bbe..2e94d68fe69 100755 --- a/eng/native/build-commons.sh +++ b/eng/native/build-commons.sh @@ -225,6 +225,7 @@ usage() echo "-portablebuild: pass -portablebuild=false to force a non-portable build." echo "-skipconfigure: skip build configuration." echo "-skipgenerateversion: disable version generation even if MSBuild is supported." + echo "-keepnativesymbols: keep native/unmanaged debug symbols." echo "-verbose: optional argument to enable verbose build output." echo "" echo "Additional Options:" @@ -354,6 +355,10 @@ while :; do __CompilerMinorVersion="${parts[1]}" ;; + keepnativesymbols|-keepnativesymbols) + __CMakeArgs="$__CMakeArgs -DCLR_CMAKE_KEEP_NATIVE_SYMBOLS=true" + ;; + msbuildonunsupportedplatform|-msbuildonunsupportedplatform) __msbuildonunsupportedplatform=1 ;; diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake index 525c289d988..27396aa5bb5 100644 --- a/eng/native/functions.cmake +++ b/eng/native/functions.cmake @@ -336,8 +336,10 @@ function(strip_symbols targetName outputFilename) endfunction() function(install_with_stripped_symbols targetName kind destination) - strip_symbols(${targetName} symbol_file) - install_symbols(${symbol_file} ${destination}) + if(NOT CLR_CMAKE_KEEP_NATIVE_SYMBOLS) + strip_symbols(${targetName} symbol_file) + install_symbols(${symbol_file} ${destination}) + endif() if ("${kind}" STREQUAL "TARGETS") set(install_source ${targetName}) elseif("${kind}" STREQUAL "PROGRAMS") @@ -374,13 +376,17 @@ function(install_clr) foreach(targetName ${INSTALL_CLR_TARGETS}) list(FIND CLR_CROSS_COMPONENTS_LIST ${targetName} INDEX) if (NOT DEFINED CLR_CROSS_COMPONENTS_LIST OR NOT ${INDEX} EQUAL -1) - strip_symbols(${targetName} symbol_file) + if (NOT CLR_CMAKE_KEEP_NATIVE_SYMBOLS) + strip_symbols(${targetName} symbol_file) + endif() foreach(destination ${destinations}) # We don't need to install the export libraries for our DLLs # since they won't be directly linked against. install(PROGRAMS $<TARGET_FILE:${targetName}> DESTINATION ${destination}) - install_symbols(${symbol_file} ${destination}) + if (NOT CLR_CMAKE_KEEP_NATIVE_SYMBOLS) + install_symbols(${symbol_file} ${destination}) + endif() if(CLR_CMAKE_PGO_INSTRUMENT) if(WIN32) diff --git a/src/coreclr/runtime.proj b/src/coreclr/runtime.proj index 79b99c1649e..0422ba17afd 100644 --- a/src/coreclr/runtime.proj +++ b/src/coreclr/runtime.proj @@ -11,6 +11,7 @@ <_CoreClrBuildArg Condition="'$(ContinuousIntegrationBuild)' == 'true'" Include="-ci" /> <_CoreClrBuildArg Condition="'$(CrossBuild)' == 'true'" Include="-cross" /> <_CoreClrBuildArg Condition="'$(PortableBuild)' != 'true'" Include="-portablebuild=false" /> + <_CoreClrBuildArg Condition="'$(KeepNativeSymbols)' != 'false'" Include="-keepnativesymbols" /> <_CoreClrBuildArg Condition="!$([MSBuild]::IsOsPlatform(Windows))" Include="-os $(TargetOS)" /> <_CoreClrBuildArg Condition="$([MSBuild]::IsOsPlatform(Windows)) and diff --git a/src/installer/corehost/corehost.proj b/src/installer/corehost/corehost.proj index 69927e8304b..38c104ca005 100644 --- a/src/installer/corehost/corehost.proj +++ b/src/installer/corehost/corehost.proj @@ -30,6 +30,7 @@ <BuildArgs>$(Configuration) $(TargetArchitecture) -apphostver "$(AppHostVersion)" -hostver "$(HostVersion)" -fxrver "$(HostResolverVersion)" -policyver "$(HostPolicyVersion)" -commithash "$(LatestCommit)" -os $(TargetOS)</BuildArgs> <BuildArgs>$(BuildArgs) -cmakeargs "-DVERSION_FILE_PATH=$(NativeVersionFile)"</BuildArgs> <BuildArgs Condition="'$(PortableBuild)' != 'true'">$(BuildArgs) -portablebuild=false</BuildArgs> + <BuildArgs Condition="'$(KeepNativeSymbols)' != 'false'">$(BuildArgs) -keepnativesymbols</BuildArgs> <BuildArgs Condition="'$(CrossBuild)' == 'true'">$(BuildArgs) -cross</BuildArgs> <BuildArgs Condition="'$(Compiler)' != ''">$(BuildArgs) $(Compiler)</BuildArgs> <BuildArgs Condition="'$(CMakeArgs)' != ''">$(BuildArgs) $(CMakeArgs)</BuildArgs> diff --git a/src/libraries/Native/build-native.proj b/src/libraries/Native/build-native.proj index beaf3098745..6f3d4aa0892 100644 --- a/src/libraries/Native/build-native.proj +++ b/src/libraries/Native/build-native.proj @@ -24,6 +24,7 @@ <_ProcessorCountArg> -numproc $(MSBuildNodeCount)</_ProcessorCountArg> <_PortableBuildArg Condition="'$(PortableBuild)' != 'true'"> -portablebuild=false</_PortableBuildArg> <_CrossBuildArg Condition="'$(CrossBuild)' == 'true'"> -cross</_CrossBuildArg> + <_KeepNativeSymbolsBuildArg Condition="'$(KeepNativeSymbols)' != 'false'"> -keepnativesymbols</_KeepNativeSymbolsBuildArg> <_CMakeArgs Condition="'$(CMakeArgs)' != ''"> $(CMakeArgs)</_CMakeArgs> <!-- @@ -31,7 +32,7 @@ used to force a specific compiler toolset. --> <_BuildNativeCompilerArg Condition="'$(BuildNativeCompiler)' != ''"> $(BuildNativeCompiler)</_BuildNativeCompilerArg> - <_BuildNativeUnixArgs>$(_BuildNativeArgs)$(_ProcessCountArg)$(_PortableBuildArg)$(_CrossBuildArg)$(_BuildNativeCompilerArg)$(_CMakeArgs) $(Compiler)</_BuildNativeUnixArgs> + <_BuildNativeUnixArgs>$(_BuildNativeArgs)$(_ProcessCountArg)$(_PortableBuildArg)$(_CrossBuildArg)$(_BuildNativeCompilerArg)$(_KeepNativeSymbolsBuildArg)$(_CMakeArgs) $(Compiler)</_BuildNativeUnixArgs> </PropertyGroup> <Message Text="$(MSBuildThisFileDirectory)build-native.sh $(_BuildNativeUnixArgs)" Importance="High"/> |