Use lib prefix in all native library names (#33236)
authorAdeel Mujahid <adeelbm@outlook.com>
Sat, 7 Mar 2020 00:32:36 +0000 (02:32 +0200)
committerGitHub <noreply@github.com>
Sat, 7 Mar 2020 00:32:36 +0000 (16:32 -0800)
Also consolidated related MSBuild properties in
`/eng/native/naming.props` file.

15 files changed:
eng/native/naming.props [new file with mode: 0644]
src/coreclr/src/.nuget/Directory.Build.props
src/installer/pkg/projects/Directory.Build.props
src/libraries/Common/src/Interop/Unix/Interop.Libraries.cs
src/libraries/Native/Unix/CMakeLists.txt
src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt
src/libraries/Native/Unix/System.IO.Compression.Native/CMakeLists.txt
src/libraries/Native/Unix/System.IO.Ports.Native/CMakeLists.txt
src/libraries/Native/Unix/System.Native/CMakeLists.txt
src/libraries/Native/Unix/System.Net.Security.Native/CMakeLists.txt
src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt
src/libraries/Native/Unix/System.Security.Cryptography.Native/CMakeLists.txt
src/libraries/pkg/Directory.Build.props
src/libraries/pkg/runtime.native.System.IO.Ports/runtime.native.System.IO.Ports.pkgproj
src/mono/netcore/nuget/Directory.Build.props

diff --git a/eng/native/naming.props b/eng/native/naming.props
new file mode 100644 (file)
index 0000000..541aaaa
--- /dev/null
@@ -0,0 +1,41 @@
+<Project>
+  <!-- Add path globs specific to native binaries to exclude unnecessary files from packages. -->
+  <Choose>
+    <When Condition=" '$(_runtimeOSFamily)' == 'win' OR $(RuntimeIdentifier.StartsWith('win')) ">
+      <PropertyGroup>
+        <ApplicationFileExtension>.exe</ApplicationFileExtension>
+        <LibraryFilePrefix></LibraryFilePrefix>
+        <LibraryFileExtension>.dll</LibraryFileExtension>
+        <SymbolFileExtension>.pdb</SymbolFileExtension>
+      </PropertyGroup>
+    </When>
+    <When Condition=" '$(_runtimeOSFamily)' == 'osx' OR $(RuntimeIdentifier.StartsWith('osx')) ">
+      <PropertyGroup>
+        <LibraryFilePrefix Condition=" '$(SkipLibraryPrefixFromUnix)' == '' ">lib</LibraryFilePrefix>
+        <LibraryFileExtension>.dylib</LibraryFileExtension>
+        <SymbolFileExtension>.dwarf</SymbolFileExtension>
+      </PropertyGroup>
+    </When>
+    <When Condition=" '$(_runtimeOSFamily)' == 'android' ">
+      <PropertyGroup>
+        <LibraryFilePrefix Condition=" '$(SkipLibraryPrefixFromUnix)' == '' ">lib</LibraryFilePrefix>
+        <LibraryFileExtension>.so</LibraryFileExtension>
+        <!--symbols included in .so, like Linux, but can be generated externally and if so, uses .debug ext-->
+        <SymbolFileExtension>.debug</SymbolFileExtension>
+      </PropertyGroup>
+    </When>
+    <Otherwise>
+      <PropertyGroup>
+        <LibraryFilePrefix Condition=" '$(SkipLibraryPrefixFromUnix)' == '' ">lib</LibraryFilePrefix>
+        <LibraryFileExtension>.so</LibraryFileExtension>
+        <SymbolFileExtension>.dbg</SymbolFileExtension>
+      </PropertyGroup>
+    </Otherwise>
+  </Choose>
+
+  <ItemGroup>
+    <AdditionalLibPackageExcludes Condition="'$(SymbolFileExtension)' != ''" Include="%2A%2A\%2A$(SymbolFileExtension)" />
+    <AdditionalSymbolPackageExcludes Condition="'$(LibraryFileExtension)' != ''" Include="%2A%2A\%2A.a;%2A%2A\%2A$(LibraryFileExtension)" />
+  </ItemGroup>
+
+</Project>
index 0598792..8773297 100644 (file)
@@ -12,6 +12,9 @@
     <!-- build the transport package which includes product and symbols in addition to standard packages -->
     <CreatePackedPackage Condition="'$(CreatePackedPackage)' == ''">true</CreatePackedPackage>
 
+    <!-- indicates that lib prefix is not added to library names for Unix-like operating systems -->
+    <SkipLibraryPrefixFromUnix>true</SkipLibraryPrefixFromUnix>
+
     <!-- Distro rid is passed as runtimeos-arch-->
     <_parseDistroRid>$(__DistroRid)</_parseDistroRid>
     <_parseDistroRid Condition="'$(_parseDistroRid)' == '' and '$(__TargetOS)' == 'OSX'">osx.10.12-x64</_parseDistroRid>
     </Otherwise>
   </Choose>
 
-  <!-- Determine per-platform native binary extensions. -->
-  <Choose>
-    <When Condition="'$(_runtimeOSFamily)' == 'win'" />
-    <When Condition="'$(_runtimeOSFamily)' == 'osx'">
-      <PropertyGroup>
-        <LibraryFileExtension>.dylib</LibraryFileExtension>
-        <SymbolFileExtension>.dwarf</SymbolFileExtension>
-      </PropertyGroup>
-    </When>
-    <When Condition="'$(_runtimeOSFamily)' == 'android'">
-      <PropertyGroup>
-        <LibraryFileExtension>.so</LibraryFileExtension>
-        <!--symbols included in .so, like Linux, but can be generated externally and if so, uses .debug ext-->
-        <SymbolFileExtension>.debug</SymbolFileExtension>
-      </PropertyGroup>
-    </When>
-    <Otherwise>
-      <PropertyGroup>
-        <LibraryFileExtension>.so</LibraryFileExtension>
-        <SymbolFileExtension>.dbg</SymbolFileExtension>
-      </PropertyGroup>
-    </Otherwise>
-  </Choose>
+  <Import Project="$(RepoRoot)eng\native\naming.props" />
 
   <ItemGroup Condition="$(SupportedPackageOSGroups.Contains(';Linux;'))">
     <OfficialBuildRID Include="linux-x64" />
index 69f9f50..d62f9f5 100644 (file)
@@ -1,6 +1,5 @@
 <Project>
   <Import Project="$([MSBuild]::GetPathOfFileAbove(Directory.Build.props, $(MSBuildThisFileDirectory)..))" />
-
   <Import Project="Sdk.props" Sdk="Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk" />
 
   <PropertyGroup>
     <RuntimeIdentifier>$(PackageRID)</RuntimeIdentifier>
   </PropertyGroup>
 
-  <Choose>
-    <When Condition="$(RuntimeIdentifier.StartsWith('win'))">
-      <PropertyGroup>
-        <ApplicationFileExtension>.exe</ApplicationFileExtension>
-        <LibraryFilePrefix></LibraryFilePrefix>
-        <LibraryFileExtension>.dll</LibraryFileExtension>
-        <SymbolFileExtension>.pdb</SymbolFileExtension>
-      </PropertyGroup>
-    </When>
-    <When Condition="$(RuntimeIdentifier.StartsWith('osx'))">
-      <PropertyGroup>
-        <ApplicationFileExtension></ApplicationFileExtension>
-        <LibraryFilePrefix>lib</LibraryFilePrefix>
-        <LibraryFileExtension>.dylib</LibraryFileExtension>
-        <SymbolFileExtension>.dwarf</SymbolFileExtension>
-      </PropertyGroup>
-    </When>
-    <Otherwise>
-      <PropertyGroup>
-        <ApplicationFileExtension></ApplicationFileExtension>
-        <LibraryFilePrefix>lib</LibraryFilePrefix>
-        <LibraryFileExtension>.so</LibraryFileExtension>
-        <SymbolFileExtension>.dbg</SymbolFileExtension>
-      </PropertyGroup>
-    </Otherwise>
-  </Choose>
-
-  <ItemGroup>
-    <AdditionalLibPackageExcludes Condition="'$(SymbolFileExtension)' != ''" Include="%2A%2A\%2A$(SymbolFileExtension)" />
-    <AdditionalSymbolPackageExcludes Condition="'$(LibraryFileExtension)' != ''" Include="%2A%2A\%2A.a;%2A%2A\%2A$(LibraryFileExtension)" />
-  </ItemGroup>
-
+  <Import Project="$(RepoRoot)eng\native\naming.props" />
 </Project>
index 10118ff..85225cd 100644 (file)
@@ -7,12 +7,12 @@ internal static partial class Interop
     internal static partial class Libraries
     {
         // Shims
-        internal const string SystemNative = "System.Native";
-        internal const string GlobalizationNative = "System.Globalization.Native";
-        internal const string NetSecurityNative = "System.Net.Security.Native";
-        internal const string CryptoNative = "System.Security.Cryptography.Native.OpenSsl";
-        internal const string CompressionNative = "System.IO.Compression.Native";
-        internal const string IOPortsNative = "System.IO.Ports.Native";
+        internal const string SystemNative = "libSystem.Native";
+        internal const string GlobalizationNative = "libSystem.Globalization.Native";
+        internal const string NetSecurityNative = "libSystem.Net.Security.Native";
+        internal const string CryptoNative = "libSystem.Security.Cryptography.Native.OpenSsl";
+        internal const string CompressionNative = "libSystem.IO.Compression.Native";
+        internal const string IOPortsNative = "libSystem.IO.Ports.Native";
         internal const string Libdl = "libdl";
     }
 }
index f6570bc..4272834 100644 (file)
@@ -13,7 +13,6 @@ set(CMAKE_MACOSX_RPATH ON)
 set(CMAKE_INSTALL_PREFIX $ENV{__CMakeBinDir})
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
-set(CMAKE_SHARED_LIBRARY_PREFIX "")
 set(VERSION_FILE_PATH "${CMAKE_BINARY_DIR}/version.c")
 
 # We mark the function which needs exporting with PALEXPORT
index f185743..25d0211 100644 (file)
@@ -79,8 +79,6 @@ add_library(System.Globalization.Native-Static
     ${NATIVEGLOBALIZATION_SOURCES}
 )
 
-# Disable the "lib" prefix and override default name
-set_target_properties(System.Globalization.Native-Static PROPERTIES PREFIX "")
 set_target_properties(System.Globalization.Native-Static PROPERTIES OUTPUT_NAME System.Globalization.Native  CLEAN_DIRECT_OUTPUT 1)
 
 install (TARGETS System.Globalization.Native-Static DESTINATION .)
index e064e66..b01e521 100644 (file)
@@ -61,8 +61,6 @@ add_library(System.IO.Compression.Native-Static
     ${NATIVECOMPRESSION_SOURCES}
 )
 
-# Disable the "lib" prefix and override default name
-set_target_properties(System.IO.Compression.Native-Static PROPERTIES PREFIX "")
 set_target_properties(System.IO.Compression.Native-Static PROPERTIES OUTPUT_NAME System.IO.Compression.Native  CLEAN_DIRECT_OUTPUT 1)
 
 install (TARGETS System.IO.Compression.Native-Static DESTINATION .)
index 5155a68..f076b64 100644 (file)
@@ -13,8 +13,6 @@ add_library(System.IO.Ports.Native-Static
     pal_serial.c
 )
 
-# Disable the "lib" prefix and override default name
-set_target_properties(System.IO.Ports.Native-Static PROPERTIES PREFIX "")
 set_target_properties(System.IO.Ports.Native-Static PROPERTIES OUTPUT_NAME System.IO.Ports.Native  CLEAN_DIRECT_OUTPUT 1)
 
 install_library_and_symbols (System.IO.Ports.Native)
index c56450c..e491a59 100644 (file)
@@ -62,8 +62,6 @@ add_library(System.Native-Static
     ${NATIVE_SOURCES}
 )
 
-# Disable the "lib" prefix and override default name
-set_target_properties(System.Native-Static PROPERTIES PREFIX "")
 set_target_properties(System.Native-Static PROPERTIES OUTPUT_NAME System.Native CLEAN_DIRECT_OUTPUT 1)
 
 install (TARGETS System.Native-Static DESTINATION .)
index 95c9901..12e0c96 100644 (file)
@@ -36,8 +36,6 @@ add_library(System.Net.Security.Native-Static
     ${NATIVEGSS_SOURCES}
 )
 
-# Disable the "lib" prefix and override default name
-set_target_properties(System.Net.Security.Native-Static PROPERTIES PREFIX "")
 set_target_properties(System.Net.Security.Native-Static PROPERTIES OUTPUT_NAME System.Net.Security.Native CLEAN_DIRECT_OUTPUT 1)
 
 target_link_libraries(System.Net.Security.Native
index 4bf9929..e0e2f66 100644 (file)
@@ -32,11 +32,6 @@ add_library(System.Security.Cryptography.Native.Apple-Static
     ${NATIVECRYPTO_SOURCES}
 )
 
-# Disable the "lib" prefix.
-set_target_properties(System.Security.Cryptography.Native.Apple PROPERTIES PREFIX "")
-
-# Disable the "lib" prefix and override default name
-set_target_properties(System.Security.Cryptography.Native.Apple-Static PROPERTIES PREFIX "")
 set_target_properties(System.Security.Cryptography.Native.Apple-Static PROPERTIES OUTPUT_NAME System.Security.Cryptography.Native.Apple CLEAN_DIRECT_OUTPUT 1)
 
 target_link_libraries(System.Security.Cryptography.Native.Apple
index 8515b80..c1e5f6d 100644 (file)
@@ -75,11 +75,6 @@ add_library(System.Security.Cryptography.Native.OpenSsl-Static
     $<TARGET_OBJECTS:objlib>
 )
 
-# Disable the "lib" prefix.
-set_target_properties(System.Security.Cryptography.Native.OpenSsl PROPERTIES PREFIX "")
-
-# Disable the "lib" prefix and override default name
-set_target_properties(System.Security.Cryptography.Native.OpenSsl-Static PROPERTIES PREFIX "")
 set_target_properties(System.Security.Cryptography.Native.OpenSsl-Static PROPERTIES OUTPUT_NAME System.Security.Cryptography.Native.OpenSsl CLEAN_DIRECT_OUTPUT 1)
 
 if (FEATURE_DISTRO_AGNOSTIC_SSL)
index 78d3bc0..5766fd6 100644 (file)
     <Project Include="@(_project->'$(MSBuildProjectName).pkgproj')" />
   </ItemGroup>
 
-  <!-- Add path globs specific to native binaries to exclude unnecessary files from packages. -->
-  <Choose>
-    <When Condition="$(PackageTargetRuntime.StartsWith('win'))"/>
-    <When Condition="$(PackageTargetRuntime.StartsWith('osx'))">
-      <PropertyGroup>
-        <LibraryFileExtension>.dylib</LibraryFileExtension>
-        <SymbolFileExtension>.dwarf</SymbolFileExtension>
-      </PropertyGroup>
-    </When>
-    <Otherwise>
-      <PropertyGroup>
-        <LibraryFileExtension>.so</LibraryFileExtension>
-        <SymbolFileExtension>.dbg</SymbolFileExtension>
-      </PropertyGroup>
-    </Otherwise>
-  </Choose>
-  <ItemGroup>
-    <AdditionalLibPackageExcludes Condition="'$(SymbolFileExtension)' != ''" Include="%2A%2A\%2A$(SymbolFileExtension)" />
-    <AdditionalSymbolPackageExcludes Condition="'$(LibraryFileExtension)' != ''" Include="%2A%2A\%2A.a;%2A%2A\%2A$(LibraryFileExtension)" />
-  </ItemGroup>
-
   <PropertyGroup>
     <!-- SuppressFinalPackageVersion on private packages by default -->
     <SuppressFinalPackageVersion Condition="'$(SuppressFinalPackageVersion)' == '' and $(MSBuildProjectName.Contains('Private'))">true</SuppressFinalPackageVersion>
   </PropertyGroup>
 
+  <Import Project="$(RepoRoot)eng\native\naming.props" />
+
 </Project>
index 984960f..d899043 100644 (file)
@@ -5,7 +5,7 @@
     <SkipValidatePackage>true</SkipValidatePackage>
   </PropertyGroup>
   <ItemGroup Condition="'$(PackageTargetRuntime)' == 'linux-arm' or '$(PackageTargetRuntime)' == 'linux-arm64' or '$(PackageTargetRuntime)' == 'linux-x64' or '$(PackageTargetRuntime)' == 'osx-x64' or '$(PackageTargetRuntime)' == 'freebsd-x64'">
-    <File Include="$(NativeBinDir)\System.IO.Ports.Native$(LibraryFileExtension)" >
+    <File Include="$(NativeBinDir)\$(LibraryFilePrefix)System.IO.Ports.Native$(LibraryFileExtension)" >
       <TargetPath>runtimes/$(PackageRID)/native</TargetPath>
     </File>
   </ItemGroup>
index 9c4e7cb..4f5aca6 100644 (file)
@@ -32,6 +32,7 @@
     <_runtimeOSVersionIndex>$(RuntimeOS.IndexOfAny(".-0123456789"))</_runtimeOSVersionIndex>
     <_runtimeOSFamily Condition="'$(_runtimeOSVersionIndex)' != '-1'">$(RuntimeOS.SubString(0, $(_runtimeOSVersionIndex)))</_runtimeOSFamily>
     <_runtimeOSFamily Condition="'$(_runtimeOSVersionIndex)' == '-1'">$(RuntimeOS)</_runtimeOSFamily>
+    <PackageTargetRuntime>$(_runtimeOSFamily)</PackageTargetRuntime>
     <_isSupportedOSGroup>true</_isSupportedOSGroup>
   </PropertyGroup>
 
     </Otherwise>
   </Choose>
 
-  <!-- Determine per-platform native binary extensions. -->
-  <Choose>
-    <When Condition="'$(_runtimeOSFamily)' == 'win'" />
-    <When Condition="'$(_runtimeOSFamily)' == 'osx'">
-      <PropertyGroup>
-        <LibraryFileExtension>.dylib</LibraryFileExtension>
-        <SymbolFileExtension>.dwarf</SymbolFileExtension>
-      </PropertyGroup>
-    </When>
-    <When Condition="'$(_runtimeOSFamily)' == 'android'">
-      <PropertyGroup>
-        <LibraryFileExtension>.so</LibraryFileExtension>
-        <!--symbols included in .so, like Linux, but can be generated externally and if so, uses .debug ext-->
-        <SymbolFileExtension>.debug</SymbolFileExtension>
-      </PropertyGroup>
-    </When>
-    <Otherwise>
-      <PropertyGroup>
-        <LibraryFileExtension>.so</LibraryFileExtension>
-        <SymbolFileExtension>.dbg</SymbolFileExtension>
-      </PropertyGroup>
-    </Otherwise>
-  </Choose>
+  <Import Project="$(RepoRoot)eng\native\naming.props" />
 
   <ItemGroup Condition="$(SupportedPackageOSGroups.Contains(';Linux;'))">
     <OfficialBuildRID Include="linux-x64" />