Fix for linker error when building for iOS 7

By default, React Native projects target a minimum of iOS 7, but our projects were set to iOS 8 because previously we used a dynamic framework.

When building for an iOS 7 minimum target version, the linker would complain about thread local variables not working on iOS 7. So it was necessary to add even more checks (iOS >= 8 or OS X >= 10.7) before using native thread local variables rather than our shim.

This also changes our projects to target iOS 7 so we can catch these issues quicker in the future.
This commit is contained in:
Scott Kyle 2016-06-27 12:16:35 -07:00
parent 4e714ac5c3
commit e8ea8e493e
6 changed files with 51 additions and 16 deletions

View File

@ -1,3 +1,14 @@
x.x.x Release notes (yyyy-MM-dd)
=============================================================
### Breaking changes
* None
### Enhancements
* None
### Bugfixes
* Fix linker error when building for minimum target version of iOS 7.
0.14.0 Release notes (2016-6-22) 0.14.0 Release notes (2016-6-22)
============================================================= =============================================================
### Breaking changes ### Breaking changes

View File

@ -752,7 +752,7 @@
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
"$(SRCROOT)/../node_modules/react-native/React/**", "$(SRCROOT)/../node_modules/react-native/React/**",
); );
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)";
@ -793,7 +793,7 @@
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
"$(SRCROOT)/../node_modules/react-native/React/**", "$(SRCROOT)/../node_modules/react-native/React/**",
); );
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)";
SDKROOT = iphoneos; SDKROOT = iphoneos;

View File

@ -13,13 +13,6 @@
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
F606902C1CA277CD0003FB26 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F60690231CA277CC0003FB26 /* RealmJS.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = F63FF2F01C16405C00B3B8E0;
remoteInfo = GCDWebServers;
};
F606902E1CA277CD0003FB26 /* PBXContainerItemProxy */ = { F606902E1CA277CD0003FB26 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = F60690231CA277CC0003FB26 /* RealmJS.xcodeproj */; containerPortal = F60690231CA277CC0003FB26 /* RealmJS.xcodeproj */;
@ -48,6 +41,20 @@
remoteGlobalIDString = F63FF2EF1C16405C00B3B8E0; remoteGlobalIDString = F63FF2EF1C16405C00B3B8E0;
remoteInfo = GCDWebServers; remoteInfo = GCDWebServers;
}; };
F68759FA1D21949A007471AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F60690231CA277CC0003FB26 /* RealmJS.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = F63FF2F01C16405C00B3B8E0;
remoteInfo = GCDWebServers;
};
F68759FC1D21949A007471AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F60690231CA277CC0003FB26 /* RealmJS.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = F62BF8FB1CAC71780022BCDC;
remoteInfo = RealmNode;
};
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
@ -113,7 +120,9 @@
F60690241CA277CC0003FB26 /* Products */ = { F60690241CA277CC0003FB26 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
F68759FB1D21949A007471AB /* libGCDWebServers.a */,
F606902F1CA277CD0003FB26 /* libRealmJS.a */, F606902F1CA277CD0003FB26 /* libRealmJS.a */,
F68759FD1D21949A007471AB /* libRealmNode.dylib */,
F60690331CA277CD0003FB26 /* RealmJSTests.xctest */, F60690331CA277CD0003FB26 /* RealmJSTests.xctest */,
); );
name = Products; name = Products;
@ -192,6 +201,20 @@
remoteRef = F60690321CA277CD0003FB26 /* PBXContainerItemProxy */; remoteRef = F60690321CA277CD0003FB26 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
F68759FB1D21949A007471AB /* libGCDWebServers.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libGCDWebServers.a;
remoteRef = F68759FA1D21949A007471AB /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
F68759FD1D21949A007471AB /* libRealmNode.dylib */ = {
isa = PBXReferenceProxy;
fileType = "compiled.mach-o.dylib";
path = libRealmNode.dylib;
remoteRef = F68759FC1D21949A007471AB /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */ /* End PBXReferenceProxy section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
@ -256,7 +279,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
OTHER_CPLUSPLUSFLAGS = ( OTHER_CPLUSPLUSFLAGS = (
@ -298,7 +321,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CPLUSPLUSFLAGS = ( OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)", "$(OTHER_CFLAGS)",

View File

@ -951,7 +951,7 @@
"$(SRCROOT)/object-store/src", "$(SRCROOT)/object-store/src",
"$(SRCROOT)/../vendor", "$(SRCROOT)/../vendor",
); );
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
OTHER_CPLUSPLUSFLAGS = ( OTHER_CPLUSPLUSFLAGS = (
@ -1006,7 +1006,7 @@
"$(SRCROOT)/object-store/src", "$(SRCROOT)/object-store/src",
"$(SRCROOT)/../vendor", "$(SRCROOT)/../vendor",
); );
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CPLUSPLUSFLAGS = ( OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)", "$(OTHER_CFLAGS)",

View File

@ -21,7 +21,8 @@
#include <realm/util/features.h> #include <realm/util/features.h>
#if !defined(__clang__) || REALM_HAVE_CLANG_FEATURE(tls) || REALM_HAVE_CLANG_FEATURE(cxx_thread_local) #if (!defined(__clang__) || REALM_HAVE_CLANG_FEATURE(tls) || REALM_HAVE_CLANG_FEATURE(cxx_thread_local)) && \
(!REALM_PLATFORM_APPLE || __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000 || MAC_OS_X_VERSION_MIN_REQUIRED >= 1070)
#define REALM_THREAD_LOCAL_TYPE(type) REALM_THREAD_LOCAL type #define REALM_THREAD_LOCAL_TYPE(type) REALM_THREAD_LOCAL type

View File

@ -741,7 +741,7 @@
"$(SRCROOT)/../node_modules/react-native/React/Base/**", "$(SRCROOT)/../node_modules/react-native/React/Base/**",
"$(SRCROOT)/../node_modules/react-native/React/Modules", "$(SRCROOT)/../node_modules/react-native/React/Modules",
); );
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)";
@ -783,7 +783,7 @@
"$(SRCROOT)/../node_modules/react-native/React/Base/**", "$(SRCROOT)/../node_modules/react-native/React/Base/**",
"$(SRCROOT)/../node_modules/react-native/React/Modules", "$(SRCROOT)/../node_modules/react-native/React/Modules",
); );
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "io.realm.$(PRODUCT_NAME:rfc1034identifier)";
SDKROOT = iphoneos; SDKROOT = iphoneos;