Skip to content

Commit

Permalink
Ensure that iOS builds get correct library identity for native librar…
Browse files Browse the repository at this point in the history
…ies (#43302)

Need to bump iOS device min version to 8.0 to avoid linker error: "embedded dylibs/frameworks only run on iOS 8 or later"

Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
  • Loading branch information
filipnavara and akoeplinger committed Oct 12, 2020
1 parent b099ab3 commit 12299e2
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
4 changes: 4 additions & 0 deletions src/libraries/Native/Unix/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ project(CoreFX C)
include(${CLR_ENG_NATIVE_DIR}/configuretools.cmake)

set(CMAKE_MACOSX_RPATH ON)
if(CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
set(CMAKE_INSTALL_NAME_DIR "@rpath")
endif()
set(CMAKE_INSTALL_PREFIX $ENV{__CMakeBinDir})
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
Expand Down
8 changes: 4 additions & 4 deletions src/libraries/Native/build-native.sh
Original file line number Diff line number Diff line change
Expand Up @@ -114,13 +114,13 @@ elif [[ "$__TargetOS" == iOS ]]; then
# keep in sync with src/mono/Directory.Build.props
__CMakeArgs="-DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=8.0 -DCMAKE_OSX_ARCHITECTURES=\"i386\" $__CMakeArgs"
elif [[ "$__BuildArch" == arm64 ]]; then
# set default iOS device deployment target (7.0 is the minimum supported by Xcode 11)
# set default iOS device deployment target
# keep in sync with src/mono/Directory.Build.props
__CMakeArgs="-DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_DEPLOYMENT_TARGET=7.0 -DCMAKE_OSX_ARCHITECTURES=\"arm64\" $__CMakeArgs"
__CMakeArgs="-DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_DEPLOYMENT_TARGET=8.0 -DCMAKE_OSX_ARCHITECTURES=\"arm64\" $__CMakeArgs"
elif [[ "$__BuildArch" == arm ]]; then
# set default iOS device deployment target (7.0 is the minimum supported by Xcode 11)
# set default iOS device deployment target
# keep in sync with src/mono/Directory.Build.props
__CMakeArgs="-DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_DEPLOYMENT_TARGET=7.0 -DCMAKE_OSX_ARCHITECTURES=\"armv7;armv7s\" $__CMakeArgs"
__CMakeArgs="-DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_DEPLOYMENT_TARGET=8.0 -DCMAKE_OSX_ARCHITECTURES=\"armv7;armv7s\" $__CMakeArgs"
else
echo "Error: Unknown iOS architecture $__BuildArch."
exit 1
Expand Down
3 changes: 1 addition & 2 deletions src/mono/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@

<PropertyGroup>
<!-- Minimum target OS version, keep in sync with src/libraries/Native/build-native.sh -->
<iOSVersionMin Condition="'$(TargetsiOS)' == 'true' and '$(TargetsiOSSimulator)' != 'true'">7.0</iOSVersionMin>
<iOSVersionMin Condition="'$(TargetsiOS)' == 'true' and '$(TargetsiOSSimulator)' == 'true'">8.0</iOSVersionMin>
<iOSVersionMin>8.0</iOSVersionMin>
<tvOSVersionMin>9.0</tvOSVersionMin>
<watchOSVersionMin>2.0</watchOSVersionMin>
<watchOS64_32VersionMin>5.1</watchOS64_32VersionMin>
Expand Down

0 comments on commit 12299e2

Please sign in to comment.