Skip to content

Commit

Permalink
Merge pull request swiftlang#2249 from compnerd/deployment-targets
Browse files Browse the repository at this point in the history
  • Loading branch information
swift-ci authored May 13, 2019
2 parents b4291ba + b3821e4 commit 155f1ce
Show file tree
Hide file tree
Showing 63 changed files with 603 additions and 645 deletions.
5 changes: 0 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,17 +87,12 @@ if(FOUNDATION_ENABLE_LIBDISPATCH)
endif()

if(CMAKE_SYSTEM_NAME STREQUAL Android OR CMAKE_SYSTEM_NAME STREQUAL Linux)
set(deployment_target -DDEPLOYMENT_TARGET_LINUX)
set(Foundation_RPATH -Xlinker;-rpath;-Xlinker;"\\\$\$ORIGIN")
set(XDG_TEST_HELPER_RPATH -Xlinker;-rpath;-Xlinker;${CMAKE_CURRENT_BINARY_DIR})
elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
set(deployment_target -DDEPLOYMENT_TARGET_MACOSX)
elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
set(deployment_target -DDEPLOYMENT_TARGET_FREEBSD)
set(Foundation_RPATH -Xlinker;-rpath;-Xlinker;"\\\$\$ORIGIN")
set(XDG_TEST_HELPER_RPATH -Xlinker;-rpath;-Xlinker;${CMAKE_CURRENT_BINARY_DIR})
elseif(CMAKE_SYSTEM_NAME STREQUAL Windows)
set(deployment_target -DDEPLOYMENT_TARGET_WINDOWS)
# FIXME(SR9138) Silence "locally defined symbol '…' imported in function '…'
set(WORKAROUND_SR9138 -Xlinker;-ignore:4049;-Xlinker;-ignore:4217)
set(WORKAROUND_SR9995 -Xlinker;-nodefaultlib:libcmt)
Expand Down
34 changes: 17 additions & 17 deletions CoreFoundation/Base.subproj/CFBase.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#if _POSIX_THREADS
#include <pthread.h>
#endif
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
#include <malloc/malloc.h>
#include <mach/mach.h>
#include <dlfcn.h>
Expand All @@ -29,7 +29,7 @@

struct __CFAllocator {
CFRuntimeBase _base;
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
// CFAllocator structure must match struct _malloc_zone_t!
// The first two reserved fields in struct _malloc_zone_t are for us with CFRuntimeBase
size_t (*size)(struct _malloc_zone_t *zone, const void *ptr); /* returns the size of a block or 0 if not in this zone; must be fast, especially for negative answers */
Expand Down Expand Up @@ -465,7 +465,7 @@ void CFAllocatorSetDefault(CFAllocatorRef allocator) {
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
}
#endif
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator && allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
return; // require allocator to this function to be an allocator
}
Expand All @@ -491,7 +491,7 @@ static CFAllocatorRef __CFAllocatorCreate(CFAllocatorRef allocator, CFAllocatorC
CFAllocatorRetainCallBack retainFunc;
CFAllocatorAllocateCallBack allocateFunc;
void *retainedInfo;
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator && kCFAllocatorUseContext != allocator && allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
return NULL; // require allocator to this function to be an allocator
}
Expand Down Expand Up @@ -525,7 +525,7 @@ static CFAllocatorRef __CFAllocatorCreate(CFAllocatorRef allocator, CFAllocatorC
memset(memory, 0, sizeof(CFRuntimeBase));
__CFRuntimeSetRC(memory, 1);
_CFAllocatorSetInstanceTypeIDAndIsa(memory);
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
memory->size = __CFAllocatorCustomSize;
memory->malloc = __CFAllocatorCustomMalloc;
memory->calloc = __CFAllocatorCustomCalloc;
Expand Down Expand Up @@ -574,15 +574,15 @@ void *CFAllocatorAllocate(CFAllocatorRef allocator, CFIndex size, CFOptionFlags
allocator = __CFGetDefaultAllocator();
}

#if defined(DEBUG) && (DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI)
#if defined(DEBUG) && TARGET_OS_MAC
if (allocator->_base._cfisa == __CFISAForCFAllocator()) {
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
}
#else
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
#endif
if (0 == size) return NULL;
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_OSX || TARGET_IOS_IPHONE
if (allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
return malloc_zone_malloc((malloc_zone_t *)allocator, size);
}
Expand All @@ -605,15 +605,15 @@ void *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize
allocator = __CFGetDefaultAllocator();
}

#if defined(DEBUG) && (DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI)
#if defined(DEBUG) && TARGET_OS_MAC
if (allocator->_base._cfisa == __CFISAForCFAllocator()) {
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
}
#else
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
#endif
if (NULL == ptr && 0 < newsize) {
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
return malloc_zone_malloc((malloc_zone_t *)allocator, newsize);
}
Expand All @@ -626,7 +626,7 @@ void *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize
return newptr;
}
if (NULL != ptr && 0 == newsize) {
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
#if defined(DEBUG)
size_t size = malloc_size(ptr);
Expand All @@ -643,7 +643,7 @@ void *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize
return NULL;
}
if (NULL == ptr && 0 == newsize) return NULL;
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
return malloc_zone_realloc((malloc_zone_t *)allocator, ptr, newsize);
}
Expand All @@ -661,14 +661,14 @@ void CFAllocatorDeallocate(CFAllocatorRef allocator, void *ptr) {
allocator = __CFGetDefaultAllocator();
}

#if defined(DEBUG) && (DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI)
#if defined(DEBUG) && TARGET_OS_MAC
if (allocator->_base._cfisa == __CFISAForCFAllocator()) {
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
}
#else
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
#endif
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
#if defined(DEBUG)
size_t size = malloc_size(ptr);
Expand All @@ -691,14 +691,14 @@ CFIndex CFAllocatorGetPreferredSizeForSize(CFAllocatorRef allocator, CFIndex siz
allocator = __CFGetDefaultAllocator();
}

#if defined(DEBUG) && (DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI)
#if defined(DEBUG) && TARGET_OS_MAC
if (allocator->_base._cfisa == __CFISAForCFAllocator()) {
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
}
#else
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
#endif
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
return malloc_good_size(size);
}
Expand All @@ -716,15 +716,15 @@ void CFAllocatorGetContext(CFAllocatorRef allocator, CFAllocatorContext *context
allocator = __CFGetDefaultAllocator();
}

#if defined(DEBUG) && (DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI)
#if defined(DEBUG) && TARGET_OS_MAC
if (allocator->_base._cfisa == __CFISAForCFAllocator()) {
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
}
#else
__CFGenericValidateType(allocator, _kCFRuntimeIDCFAllocator);
#endif
CFAssert1(0 == context->version, __kCFLogAssertion, "%s(): context version not initialized to 0", __PRETTY_FUNCTION__);
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
#if TARGET_OS_MAC
if (allocator->_base._cfisa != __CFISAForCFAllocator()) { // malloc_zone_t *
return;
}
Expand Down
26 changes: 13 additions & 13 deletions CoreFoundation/Base.subproj/CFFileUtilities.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include <string.h>
#include <stdio.h>

#if DEPLOYMENT_TARGET_WINDOWS
#if TARGET_OS_WIN32
#include <io.h>
#include <fcntl.h>

Expand Down Expand Up @@ -46,7 +46,7 @@
#endif

CF_INLINE int openAutoFSNoWait() {
#if DEPLOYMENT_TARGET_WINDOWS
#if TARGET_OS_WIN32
return -1;
#else
return (__CFProphylacticAutofsAccess ? open("/dev/autofs_nowait", 0) : -1);
Expand Down Expand Up @@ -191,7 +191,7 @@ CF_PRIVATE Boolean _CFWriteBytesToFile(CFURLRef url, const void *bytes, CFIndex
thread_set_errno(saveerr);
return false;
}
#if DEPLOYMENT_TARGET_WINDOWS
#if TARGET_OS_WIN32
FlushFileBuffers((HANDLE)_get_osfhandle(fd));
#else
fsync(fd);
Expand All @@ -213,7 +213,7 @@ CF_PRIVATE CFMutableArrayRef _CFCreateContentsOfDirectory(CFAllocatorRef alloc,
CFStringRef extension = (matchingAbstractType ? _CFCopyExtensionForAbstractType(matchingAbstractType) : NULL);
CFIndex targetExtLen = (extension ? CFStringGetLength(extension) : 0);

#if DEPLOYMENT_TARGET_WINDOWS
#if TARGET_OS_WIN32
// This is a replacement for 'dirent' below, and also uses wchar_t to support unicode paths
wchar_t extBuff[CFMaxPathSize];
int extBuffInteriorDotCount = 0; //people insist on using extensions like ".trace.plist", so we need to know how many dots back to look :(
Expand Down Expand Up @@ -342,7 +342,7 @@ CF_PRIVATE CFMutableArrayRef _CFCreateContentsOfDirectory(CFAllocatorRef alloc,
FindClose(handle);
pathBuf[pathLength] = '\0';

#elif DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
#elif TARGET_OS_MAC || TARGET_OS_LINUX || TARGET_OS_BSD
uint8_t extBuff[CFMaxPathSize];
int extBuffInteriorDotCount = 0; //people insist on using extensions like ".trace.plist", so we need to know how many dots back to look :(

Expand Down Expand Up @@ -452,13 +452,13 @@ CF_PRIVATE CFMutableArrayRef _CFCreateContentsOfDirectory(CFAllocatorRef alloc,
isDir = ((statBuf.st_mode & S_IFMT) == S_IFDIR);
}
}
#if DEPLOYMENT_TARGET_LINUX
#if TARGET_OS_LINUX
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase(alloc, (uint8_t *)dp->d_name, namelen, isDir, dirURL);
#else
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase(alloc, (uint8_t *)dp->d_name, dp->d_namlen, isDir, dirURL);
#endif
} else {
#if DEPLOYMENT_TARGET_LINUX
#if TARGET_OS_LINUX
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase (alloc, (uint8_t *)dp->d_name, namelen, false, dirURL);
#else
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase (alloc, (uint8_t *)dp->d_name, dp->d_namlen, false, dirURL);
Expand Down Expand Up @@ -545,7 +545,7 @@ CF_PRIVATE SInt32 _CFGetPathProperties(CFAllocatorRef alloc, char *path, Boolean

if (modTime != NULL) {
if (fileExists) {
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
#if TARGET_OS_WIN32 || TARGET_OS_LINUX
struct timespec ts = {statBuf.st_mtime, 0};
#else
struct timespec ts = statBuf.st_mtimespec;
Expand Down Expand Up @@ -599,7 +599,7 @@ CF_PRIVATE bool _CFURLExists(CFURLRef url) {
return url && (0 == _CFGetFileProperties(kCFAllocatorSystemDefault, url, &exists, NULL, NULL, NULL, NULL, NULL)) && exists;
}

#if DEPLOYMENT_TARGET_WINDOWS
#if TARGET_OS_WIN32
#define WINDOWS_PATH_SEMANTICS
#else
#define UNIX_PATH_SEMANTICS
Expand Down Expand Up @@ -1011,7 +1011,7 @@ CF_PRIVATE CFIndex _CFLengthAfterDeletingPathExtension(UniChar *unichars, CFInde
return ((0 < start) ? start : length);
}

#if DEPLOYMENT_TARGET_WINDOWS
#if TARGET_OS_WIN32
#define DT_DIR 4
#define DT_REG 8
#define DT_LNK 10
Expand All @@ -1023,7 +1023,7 @@ CF_PRIVATE void _CFIterateDirectory(CFStringRef directoryPath, Boolean appendSla
char directoryPathBuf[CFMaxPathSize];
if (!CFStringGetFileSystemRepresentation(directoryPath, directoryPathBuf, CFMaxPathSize)) return;

#if DEPLOYMENT_TARGET_WINDOWS
#if TARGET_OS_WIN32
// Make sure there is room for the additional space we need in the win32 api
if (strlen(directoryPathBuf) > CFMaxPathSize - 2) return;

Expand Down Expand Up @@ -1072,7 +1072,7 @@ CF_PRIVATE void _CFIterateDirectory(CFStringRef directoryPath, Boolean appendSla
struct dirent *dent;
if ((dirp = opendir(directoryPathBuf))) {
while ((dent = readdir(dirp))) {
#if DEPLOYMENT_TARGET_LINUX
#if TARGET_OS_LINUX
CFIndex nameLen = strlen(dent->d_name);
if (dent->d_type == DT_UNKNOWN) {
// on some old file systems readdir may always fill d_type as DT_UNKNOWN (0), double check with stat
Expand Down Expand Up @@ -1141,7 +1141,7 @@ CF_PRIVATE void _CFIterateDirectory(CFStringRef directoryPath, Boolean appendSla
if (dent->d_type == DT_DIR) {
isDirectory = true;
}
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
#if TARGET_OS_MAC || TARGET_OS_LINUX || TARGET_OS_BSD
else if (dent->d_type == DT_UNKNOWN) {
// We need to do an additional stat on this to see if it's really a directory or not.
// This path should be uncommon.
Expand Down
Loading

0 comments on commit 155f1ce

Please sign in to comment.