Skip to content

Commit 966ce1d

Browse files
committed
Porting to Cygwin
This is the initial porting. IS_CYGWIN might be changed to some other macro function. A simple function like below code is working in Cygwin. --- import Foundation let swifty = NSURLComponents(string: "https://swift.org")! print("\(swifty.host!)") ---
1 parent 53a78d7 commit 966ce1d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+220
-111
lines changed

CoreFoundation/Base.subproj/CFFileUtilities.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ CF_PRIVATE CFMutableArrayRef _CFCreateContentsOfDirectory(CFAllocatorRef alloc,
346346
FindClose(handle);
347347
pathBuf[pathLength] = '\0';
348348

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

@@ -456,13 +456,13 @@ CF_PRIVATE CFMutableArrayRef _CFCreateContentsOfDirectory(CFAllocatorRef alloc,
456456
isDir = ((statBuf.st_mode & S_IFMT) == S_IFDIR);
457457
}
458458
}
459-
#if DEPLOYMENT_TARGET_LINUX
459+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
460460
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase(alloc, (uint8_t *)dp->d_name, namelen, isDir, dirURL);
461461
#else
462462
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase(alloc, (uint8_t *)dp->d_name, dp->d_namlen, isDir, dirURL);
463463
#endif
464464
} else {
465-
#if DEPLOYMENT_TARGET_LINUX
465+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
466466
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase (alloc, (uint8_t *)dp->d_name, namelen, false, dirURL);
467467
#else
468468
fileURL = CFURLCreateFromFileSystemRepresentationRelativeToBase (alloc, (uint8_t *)dp->d_name, dp->d_namlen, false, dirURL);
@@ -549,7 +549,7 @@ CF_PRIVATE SInt32 _CFGetPathProperties(CFAllocatorRef alloc, char *path, Boolean
549549

550550
if (modTime != NULL) {
551551
if (fileExists) {
552-
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
552+
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
553553
struct timespec ts = {statBuf.st_mtime, 0};
554554
#else
555555
struct timespec ts = statBuf.st_mtimespec;
@@ -1073,7 +1073,7 @@ CF_PRIVATE void _CFIterateDirectory(CFStringRef directoryPath, Boolean appendSla
10731073
struct dirent *dent;
10741074
if ((dirp = opendir(directoryPathBuf))) {
10751075
while ((dent = readdir(dirp))) {
1076-
#if DEPLOYMENT_TARGET_LINUX
1076+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
10771077
CFIndex nameLen = strlen(dent->d_name);
10781078
#else
10791079
CFIndex nameLen = dent->d_namlen;

CoreFoundation/Base.subproj/CFInternal.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,11 @@ CF_EXTERN_C_BEGIN
9797
#include <CoreFoundation/CFLogUtilities.h>
9898
#include <CoreFoundation/CFRuntime.h>
9999
#include <limits.h>
100-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
100+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
101+
#if DEPLOYMENT_TARGET_CYGWIN
102+
#else
101103
#include <xlocale.h>
104+
#endif
102105
#include <unistd.h>
103106
#include <sys/time.h>
104107
#include <signal.h>
@@ -484,7 +487,7 @@ CF_INLINE Boolean __CFLockTry(volatile CFLock_t *lock) {
484487
return (InterlockedCompareExchange((LONG volatile *)lock, ~0, 0) == 0);
485488
}
486489

487-
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
490+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
488491

489492
typedef int32_t CFLock_t;
490493
#define CFLockInit 0
@@ -814,6 +817,8 @@ CF_PRIVATE const wchar_t *_CFDLLPath(void);
814817
#define PATH_SEP_STR CFSTR("/")
815818
#endif
816819

820+
#include <stdio.h>
821+
817822
CF_INLINE const char *CFPathRelativeToAppleFrameworksRoot(const char *path, Boolean *allocated) {
818823
if (!__CFProcessIsRestricted() && path) {
819824
const char *platformRoot = __CFgetenv("APPLE_FRAMEWORKS_ROOT");

CoreFoundation/Base.subproj/CFPlatform.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,9 @@ const char *_CFProcessPath(void) {
162162
Boolean _CFIsMainThread(void) {
163163
return syscall(SYS_gettid) == getpid();
164164
}
165+
#endif
165166

167+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
166168
const char *_CFProcessPath(void) {
167169
if (__CFProcessPath) return __CFProcessPath;
168170
char buf[CFMaxPathSize + 1];
@@ -196,7 +198,7 @@ CF_PRIVATE CFStringRef _CFProcessNameString(void) {
196198
}
197199

198200

199-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
201+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
200202

201203
#include <pwd.h>
202204
#include <sys/param.h>
@@ -240,7 +242,7 @@ CF_EXPORT CFStringRef CFGetUserName(void) {
240242

241243
CF_EXPORT CFStringRef CFCopyUserName(void) {
242244
CFStringRef result = NULL;
243-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
245+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
244246
uid_t euid;
245247
__CFGetUGIDs(&euid, NULL);
246248
struct passwd *upwd = getpwuid(euid ? euid : getuid());
@@ -274,7 +276,7 @@ CF_EXPORT CFStringRef CFCopyUserName(void) {
274276
}
275277

276278
CFURLRef CFCopyHomeDirectoryURL(void) {
277-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
279+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
278280
uid_t euid;
279281
__CFGetUGIDs(&euid, NULL);
280282
struct passwd *upwd = getpwuid(euid ? euid : getuid());
@@ -357,7 +359,7 @@ CF_EXPORT CFURLRef CFCopyHomeDirectoryURLForUser(CFStringRef uName) {
357359
}
358360
}
359361
#endif
360-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
362+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
361363
if (!uName) {
362364
uid_t euid;
363365
__CFGetUGIDs(&euid, NULL);
@@ -568,7 +570,7 @@ CF_PRIVATE void __CFFinalizeWindowsThreadData() {
568570
#endif
569571

570572

571-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
573+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
572574
static pthread_key_t __CFTSDIndexKey;
573575
#endif
574576

@@ -1067,7 +1069,7 @@ CF_PRIVATE int _NS_gettimeofday(struct timeval *tv, struct timezone *tz) {
10671069
#pragma mark -
10681070
#pragma mark Linux OSAtomic
10691071

1070-
#if defined(DEPLOYMENT_TARGET_LINUX) || defined(DEPLOYMENT_TARGET_FREEBSD)
1072+
#if defined(DEPLOYMENT_TARGET_LINUX) || defined(DEPLOYMENT_TARGET_FREEBSD) || defined(DEPLOYMENT_TARGET_CYGWIN)
10711073

10721074
bool OSAtomicCompareAndSwapPtr(void *oldp, void *newp, void *volatile *dst)
10731075
{

CoreFoundation/Base.subproj/CFPriv.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#include <CoreFoundation/CFMessagePort.h>
3737
#endif
3838

39-
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE) || TARGET_OS_WIN32 || TARGET_OS_LINUX
39+
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE) || TARGET_OS_WIN32 || TARGET_OS_LINUX || DEPLOYMENT_TARGET_CYGWIN
4040
#include <CoreFoundation/CFRunLoop.h>
4141
#include <CoreFoundation/CFSocket.h>
4242
#include <CoreFoundation/CFBundlePriv.h>
@@ -565,7 +565,7 @@ CF_EXPORT CFMessagePortRef _CFMessagePortCreateLocalEx(CFAllocatorRef allocator,
565565

566566
#if TARGET_OS_MAC || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE
567567
#include <pthread.h>
568-
#elif !TARGET_OS_LINUX
568+
#elif !TARGET_OS_LINUX && !TARGET_OS_CYGWIN
569569
// Avoid including the pthread header
570570
#ifndef HAVE_STRUCT_TIMESPEC
571571
#define HAVE_STRUCT_TIMESPEC 1
@@ -600,7 +600,7 @@ CF_EXPORT bool _CFPropertyListCreateSingleValue(CFAllocatorRef allocator, CFData
600600
// Returns a subset of the property list, only including the keyPaths in the CFSet. If the top level object is not a dictionary, you will get back an empty dictionary as the result.
601601
CF_EXPORT bool _CFPropertyListCreateFiltered(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags option, CFSetRef keyPaths, CFPropertyListRef *value, CFErrorRef *error) CF_AVAILABLE(10_8, 6_0);
602602

603-
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE) || TARGET_OS_WIN32 || TARGET_OS_LINUX
603+
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE) || TARGET_OS_WIN32 || TARGET_OS_LINUX || DEPLOYMENT_TARGET_CYGWIN
604604

605605
// Returns a subset of a bundle's Info.plist. The keyPaths follow the same rules as above CFPropertyList function. This function takes platform and product keys into account.
606606
typedef CF_OPTIONS(CFOptionFlags, _CFBundleFilteredPlistOptions) {

CoreFoundation/Base.subproj/CFRuntime.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ __kCFReleaseEvent = 29
5555

5656
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
5757
#include <malloc.h>
58-
#elif DEPLOYMENT_TARGET_FREEBSD
58+
#elif DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
5959
#include <stdlib.h> // malloc()
6060
#else
6161
#include <malloc/malloc.h>
@@ -486,7 +486,7 @@ enum {
486486
#if DEPLOYMENT_TARGET_MACOSX
487487
#define NUM_EXTERN_TABLES 8
488488
#define EXTERN_TABLE_IDX(O) (((uintptr_t)(O) >> 8) & 0x7)
489-
#elif DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
489+
#elif DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
490490
#define NUM_EXTERN_TABLES 1
491491
#define EXTERN_TABLE_IDX(O) 0
492492
#else
@@ -862,7 +862,7 @@ extern void __CFStringInitialize(void);
862862
extern void __CFCharacterSetInitialize(void);
863863
extern void __CFPFactoryInitialize(void);
864864
extern void __CFPlugInInitialize(void);
865-
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_MACOSX
865+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_CYGWIN
866866
CF_PRIVATE void __CFTSDInitialize();
867867
#endif
868868
#if DEPLOYMENT_TARGET_WINDOWS
@@ -986,7 +986,7 @@ CF_PRIVATE Boolean __CFInitialized = 0;
986986
// move the next 2 lines down into the #if below, and make it static, after Foundation gets off this symbol on other platforms
987987
CF_EXPORT pthread_t _CFMainPThread;
988988
pthread_t _CFMainPThread = kNilPthreadT;
989-
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_IPHONESIMULATOR || DEPLOYMENT_TARGET_LINUX
989+
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_IPHONESIMULATOR || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
990990

991991
CF_EXPORT pthread_t _CF_pthread_main_thread_np(void);
992992
pthread_t _CF_pthread_main_thread_np(void) {
@@ -996,7 +996,7 @@ pthread_t _CF_pthread_main_thread_np(void) {
996996

997997
#endif
998998

999-
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
999+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
10001000
static void __CFInitialize(void) __attribute__ ((constructor));
10011001
static
10021002
#endif
@@ -1016,7 +1016,7 @@ void __CFInitialize(void) {
10161016
#if DEPLOYMENT_TARGET_WINDOWS
10171017
// Must not call any CF functions
10181018
__CFTSDWindowsInitialize();
1019-
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_MACOSX
1019+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_CYGWIN
10201020
__CFTSDInitialize();
10211021
#endif
10221022

@@ -1048,7 +1048,7 @@ void __CFInitialize(void) {
10481048
#if DEPLOYMENT_RUNTIME_SWIFT
10491049

10501050
#ifndef __CFSwiftGetBaseClass
1051-
#if TARGET_OS_LINUX
1051+
#if TARGET_OS_LINUX || DEPLOYMENT_TARGET_CYGWIN
10521052
#define __CFSwiftGetBaseClass _TF10Foundation21__CFSwiftGetBaseClassFT_PMPs9AnyObject_
10531053
#elif TARGET_OS_MAC
10541054
#define __CFSwiftGetBaseClass _TF15SwiftFoundation21__CFSwiftGetBaseClassFT_PMPs9AnyObject_
@@ -1161,7 +1161,7 @@ void __CFInitialize(void) {
11611161
#if DEPLOYMENT_RUNTIME_SWIFT
11621162
_CFKeyedArchiverUIDGetTypeID();
11631163
#ifndef __CFInitializeSwift
1164-
#if TARGET_OS_LINUX
1164+
#if TARGET_OS_LINUX || DEPLOYMENT_TARGET_CYGWIN
11651165
#define __CFInitializeSwift _TF10Foundation19__CFInitializeSwiftFT_T_
11661166
#elif TARGET_OS_MAC
11671167
#define __CFInitializeSwift _TF15SwiftFoundation19__CFInitializeSwiftFT_T_

CoreFoundation/Base.subproj/CFUtilities.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
#include <sys/errno.h>
5757
#include <mach/mach_time.h>
5858
#endif
59-
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
59+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
6060
#include <string.h>
6161
#include <pthread.h>
6262
#include <sys/mman.h>
@@ -1087,7 +1087,7 @@ CF_PRIVATE Boolean _CFReadMappedFromFile(CFStringRef path, Boolean map, Boolean
10871087
if (0LL == statBuf.st_size) {
10881088
bytes = malloc(8); // don't return constant string -- it's freed!
10891089
length = 0;
1090-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
1090+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
10911091
} else if (map) {
10921092
if((void *)-1 == (bytes = mmap(0, (size_t)statBuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0))) {
10931093
int32_t savederrno = errno;
@@ -1261,7 +1261,7 @@ CFDictionaryRef __CFGetEnvironment() {
12611261
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED
12621262
extern char ***_NSGetEnviron();
12631263
char **envp = *_NSGetEnviron();
1264-
#elif DEPLOYMENT_TARGET_FREEBSD
1264+
#elif DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
12651265
extern char **environ;
12661266
char **envp = environ;
12671267
#elif DEPLOYMENT_TARGET_LINUX

CoreFoundation/Base.subproj/CoreFoundation_Prefix.h

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ typedef int boolean_t;
162162
#include <sys/stat.h> // mode_t
163163
#endif
164164

165-
#if DEPLOYMENT_TARGET_LINUX
165+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
166166

167167
#define CF_PRIVATE __attribute__((visibility("hidden")))
168168
#define __strong
@@ -178,6 +178,8 @@ typedef int boolean_t;
178178

179179
#include <pthread.h>
180180

181+
#if DEPLOYMENT_TARGET_CYGWIN
182+
#else
181183
CF_INLINE size_t
182184
strlcpy(char * dst, const char * src, size_t maxlen) {
183185
const size_t srclen = strlen(src);
@@ -205,6 +207,7 @@ strlcat(char * dst, const char * src, size_t maxlen) {
205207
}
206208

207209
#define issetugid() 0
210+
#endif
208211

209212
// Implemented in CFPlatform.c
210213
bool OSAtomicCompareAndSwapPtr(void *oldp, void *newp, void *volatile *dst);
@@ -263,7 +266,14 @@ void OSMemoryBarrier();
263266

264267
#endif
265268

266-
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
269+
#if DEPLOYMENT_TARGET_CYGWIN
270+
#define HAVE_STRUCT_TIMESPEC 1
271+
#define strncasecmp_l(a, b, c, d) strncasecmp(a, b, c)
272+
#define _NO_BOOL_TYPEDEF
273+
#undef interface
274+
#endif
275+
276+
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
267277
#if !defined(MIN)
268278
#define MIN(A,B) ((A) < (B) ? (A) : (B))
269279
#endif
@@ -463,7 +473,7 @@ CF_EXPORT int64_t OSAtomicAdd64Barrier( int64_t __theAmount, volatile int64_t *_
463473
#define CF_PRIVATE __attribute__((__visibility__("hidden")))
464474
#endif
465475

466-
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_WINDOWS
476+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_CYGWIN
467477

468478
#include <stdarg.h>
469479

CoreFoundation/Base.subproj/SwiftRuntime/TargetConditionals.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
4747
TARGET_OS_WIN32 - Generated code will run under 32-bit Windows
4848
TARGET_OS_UNIX - Generated code will run under some Unix (not OSX)
49+
TARGET_OS_CYGWIN - Generated code will run under 64-bit Cygwin
4950
TARGET_OS_MAC - Generated code will run under Mac OS X variant
5051
TARGET_OS_IPHONE - Generated code for firmware, devices, or simulator
5152
TARGET_OS_IOS - Generated code will run under iOS
@@ -76,21 +77,31 @@
7677
#define TARGET_OS_LINUX 0
7778
#define TARGET_OS_WINDOWS 0
7879
#define TARGET_OS_BSD 0
80+
#define TARGET_OS_CYGWIN 0
7981
#elif __linux__
8082
#define TARGET_OS_DARWIN 0
8183
#define TARGET_OS_LINUX 1
8284
#define TARGET_OS_WINDOWS 0
8385
#define TARGET_OS_BSD 0
86+
#define TARGET_OS_CYGWIN 0
87+
#elif __CYGWIN__
88+
#define TARGET_OS_DARWIN 0
89+
#define TARGET_OS_LINUX 0
90+
#define TARGET_OS_WINDOWS 0
91+
#define TARGET_OS_BSD 0
92+
#define TARGET_OS_CYGWIN 1
8493
#elif _WIN32 || _WIN64
8594
#define TARGET_OS_DARWIN 0
8695
#define TARGET_OS_LINUX 0
8796
#define TARGET_OS_WINDOWS 1
8897
#define TARGET_OS_BSD 0
98+
#define TARGET_OS_CYGWIN 0
8999
#elif __unix__
90100
#define TARGET_OS_DARWIN 0
91101
#define TARGET_OS_LINUX 0
92102
#define TARGET_OS_WINDOWS 0
93103
#define TARGET_OS_BSD 1
104+
#define TARGET_OS_CYGWIN 0
94105
#else
95106
#error unknown operating system
96107
#endif

CoreFoundation/Collections.subproj/CFData.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ CF_INLINE unsigned long __CFPageSize() {
3535
GetSystemInfo(&sysInfo);
3636
return sysInfo.dwPageSize;
3737
}
38-
#elif DEPLOYMENT_TARGET_LINUX
38+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_CYGWIN
3939
#include <unistd.h>
4040
CF_INLINE unsigned long __CFPageSize() {
4141
return (unsigned long)getpagesize();

CoreFoundation/Locale.subproj/CFLocale.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include <CoreFoundation/CFNumber.h>
2525
#include "CFInternal.h"
2626
#include "CFLocaleInternal.h"
27-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
27+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
2828
#include <unicode/uloc.h> // ICU locales
2929
#include <unicode/ulocdata.h> // ICU locale data
3030
#include <unicode/ucal.h>
@@ -283,7 +283,7 @@ static CFLocaleRef __CFLocaleCurrent = NULL;
283283
#define FALLBACK_LOCALE_NAME CFSTR("")
284284
#elif DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
285285
#define FALLBACK_LOCALE_NAME CFSTR("en_US")
286-
#elif DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
286+
#elif DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD || DEPLOYMENT_TARGET_CYGWIN
287287
#define FALLBACK_LOCALE_NAME CFSTR("en_US")
288288
#endif
289289

0 commit comments

Comments
 (0)