Skip to content

Commit 387b11f

Browse files
committed
Merge pull request #141 from dcci/freebsd-support
Initial FreeBSD port of Foundation.
2 parents 607ea2e + df143bc commit 387b11f

File tree

17 files changed

+85
-32
lines changed

17 files changed

+85
-32
lines changed

CoreFoundation/Base.subproj/CFInternal.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ 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
100+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
101101
#include <xlocale.h>
102102
#include <unistd.h>
103103
#include <sys/time.h>
@@ -495,7 +495,7 @@ CF_INLINE Boolean __CFLockTry(volatile CFLock_t *lock) {
495495
return (InterlockedCompareExchange((LONG volatile *)lock, ~0, 0) == 0);
496496
}
497497

498-
#elif DEPLOYMENT_TARGET_LINUX
498+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
499499

500500
typedef int32_t CFLock_t;
501501
#define CFLockInit 0

CoreFoundation/Base.subproj/CFPlatform.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ CF_PRIVATE void __CFFinalizeWindowsThreadData() {
563563
#endif
564564

565565

566-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
566+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
567567
static pthread_key_t __CFTSDIndexKey;
568568
#endif
569569

@@ -1062,7 +1062,7 @@ CF_PRIVATE int _NS_gettimeofday(struct timeval *tv, struct timezone *tz) {
10621062
#pragma mark -
10631063
#pragma mark Linux OSAtomic
10641064

1065-
#if DEPLOYMENT_TARGET_LINUX
1065+
#if defined(DEPLOYMENT_TARGET_LINUX) || defined(DEPLOYMENT_TARGET_FREEBSD)
10661066

10671067
bool OSAtomicCompareAndSwapPtr(void *oldp, void *newp, void *volatile *dst)
10681068
{

CoreFoundation/Base.subproj/CFRuntime.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ __kCFReleaseEvent = 29
5555

5656
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
5757
#include <malloc.h>
58+
#elif DEPLOYMENT_TARGET_FREEBSD
59+
#include <stdlib.h> // malloc()
5860
#else
5961
#include <malloc/malloc.h>
6062
#endif
@@ -484,7 +486,7 @@ enum {
484486
#if DEPLOYMENT_TARGET_MACOSX
485487
#define NUM_EXTERN_TABLES 8
486488
#define EXTERN_TABLE_IDX(O) (((uintptr_t)(O) >> 8) & 0x7)
487-
#elif DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
489+
#elif DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
488490
#define NUM_EXTERN_TABLES 1
489491
#define EXTERN_TABLE_IDX(O) 0
490492
#else

CoreFoundation/Base.subproj/CFUtilities.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ static void __CFLogCString(int32_t lev, const char *message, size_t length, char
606606
char *uid = NULL;
607607
int bannerLen;
608608
bannerLen = 0;
609-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
609+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
610610
// The banner path may use CF functions, but the rest of this function should not. It may be called at times when CF is not fully setup or torn down.
611611
if (withBanner) {
612612
double dummy;
@@ -1082,7 +1082,7 @@ CF_PRIVATE Boolean _CFReadMappedFromFile(CFStringRef path, Boolean map, Boolean
10821082
if (0LL == statBuf.st_size) {
10831083
bytes = malloc(8); // don't return constant string -- it's freed!
10841084
length = 0;
1085-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
1085+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
10861086
} else if (map) {
10871087
if((void *)-1 == (bytes = mmap(0, (size_t)statBuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0))) {
10881088
int32_t savederrno = errno;
@@ -1256,6 +1256,9 @@ CFDictionaryRef __CFGetEnvironment() {
12561256
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED
12571257
extern char ***_NSGetEnviron();
12581258
char **envp = *_NSGetEnviron();
1259+
#elif DEPLOYMENT_TARGET_FREEBSD
1260+
extern char **environ;
1261+
char **envp = environ;
12591262
#elif DEPLOYMENT_TARGET_LINUX
12601263
#ifndef environ
12611264
#define environ __environ

CoreFoundation/Base.subproj/CoreFoundation_Prefix.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ typedef int boolean_t;
155155
#endif
156156
#endif
157157

158+
#if DEPLOYMENT_TARGET_FREEBSD
159+
#include <string.h>
160+
#include <sys/stat.h> // mode_t
161+
#endif
162+
158163
#if DEPLOYMENT_TARGET_LINUX
159164

160165
#define CF_PRIVATE __attribute__((visibility("hidden")))
@@ -223,6 +228,32 @@ CF_INLINE size_t malloc_size(void *memblock) {
223228

224229
#endif
225230

231+
#if DEPLOYMENT_TARGET_FREEBSD
232+
#define HAVE_STRUCT_TIMESPEC 1
233+
234+
#define CF_PRIVATE __attribute__((visibility("hidden")))
235+
#define __strong
236+
#define __weak
237+
238+
// Implemented in CFPlatform.c
239+
bool OSAtomicCompareAndSwapPtr(void *oldp, void *newp, void *volatile *dst);
240+
bool OSAtomicCompareAndSwapLong(long oldl, long newl, long volatile *dst);
241+
bool OSAtomicCompareAndSwapPtrBarrier(void *oldp, void *newp, void *volatile *dst);
242+
bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue, volatile int64_t *__theValue );
243+
244+
int32_t OSAtomicDecrement32Barrier(volatile int32_t *dst);
245+
int32_t OSAtomicIncrement32Barrier(volatile int32_t *dst);
246+
int32_t OSAtomicIncrement32(volatile int32_t *theValue);
247+
int32_t OSAtomicDecrement32(volatile int32_t *theValue);
248+
249+
int32_t OSAtomicAdd32( int32_t theAmount, volatile int32_t *theValue );
250+
int32_t OSAtomicAdd32Barrier( int32_t theAmount, volatile int32_t *theValue );
251+
bool OSAtomicCompareAndSwap32Barrier( int32_t oldValue, int32_t newValue, volatile int32_t *theValue );
252+
253+
void OSMemoryBarrier();
254+
255+
#endif
256+
226257
#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
227258
#if !defined(MIN)
228259
#define MIN(A,B) ((A) < (B) ? (A) : (B))

CoreFoundation/Base.subproj/ForFoundationOnly.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ CF_EXTERN_C_BEGIN
4141

4242
#if DEPLOYMENT_TARGET_LINUX
4343
#include <malloc.h>
44+
#elif DEPLOYMENT_TARGET_FREEBSD
45+
#include <stdlib.h> // malloc()
4446
#elif DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI
4547
#include <malloc/malloc.h>
4648
#endif
@@ -49,7 +51,7 @@ CF_EXTERN_C_END
4951

5052
// ---- CFBundle material ----------------------------------------
5153

52-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
54+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
5355
#include <CoreFoundation/CFBundlePriv.h>
5456

5557
CF_EXTERN_C_BEGIN

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
27+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
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
286+
#elif DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
287287
#define FALLBACK_LOCALE_NAME CFSTR("en_US")
288288
#endif
289289

CoreFoundation/NumberDate.subproj/CFDate.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#include <dispatch/dispatch.h>
2727
#endif
2828

29-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
29+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
3030
#include <sys/time.h>
3131
#endif
3232

@@ -99,7 +99,7 @@ CF_EXPORT CFTimeInterval CFGetSystemUptime(void) {
9999
CFDateGetTypeID();
100100
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED
101101
uint64_t tsr = mach_absolute_time();
102-
#elif DEPLOYMENT_TARGET_LINUX
102+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
103103
struct timespec res;
104104
if (clock_gettime(CLOCK_MONOTONIC, &res) != 0) {
105105
HALT;
@@ -165,7 +165,7 @@ CFTypeID CFDateGetTypeID(void) {
165165
}
166166
__CFTSRRate = (double)freq.QuadPart;
167167
__CF1_TSRRate = 1.0 / __CFTSRRate;
168-
#elif DEPLOYMENT_TARGET_LINUX
168+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
169169
struct timespec res;
170170
if (clock_getres(CLOCK_MONOTONIC, &res) != 0) {
171171
HALT;

CoreFoundation/NumberDate.subproj/CFNumber.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ static const Float64Bits doubleOneBits = {.floatValue = 1.0f};
161161
#define BITSFORDOUBLEZERO doubleZeroBits.bits
162162
#define BITSFORDOUBLEONE doubleOneBits.bits
163163

164-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
164+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
165165
#define FLOAT_POSITIVE_2_TO_THE_64 0x1.0p+64L
166166
#define FLOAT_NEGATIVE_2_TO_THE_127 -0x1.0p+127L
167167
#define FLOAT_POSITIVE_2_TO_THE_127 0x1.0p+127L

CoreFoundation/NumberDate.subproj/CFTimeZone.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@
2929
#include <unicode/udat.h>
3030
#include <unicode/ustring.h>
3131
#include <CoreFoundation/CFDateFormatter.h>
32-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_LINUX
32+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
3333
#include <dirent.h>
3434
#include <unistd.h>
3535
#include <sys/fcntl.h>
3636
#endif
3737
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED
3838
#include <tzfile.h>
39-
#elif DEPLOYMENT_TARGET_LINUX
39+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
4040
#ifndef TZDIR
4141
#define TZDIR "/usr/share/zoneinfo" /* Time zone object file directory */
4242
#endif /* !defined TZDIR */
@@ -59,7 +59,7 @@ struct tzhead {
5959

6060
#include <time.h>
6161

62-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_LINUX
62+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
6363
#define TZZONELINK TZDEFAULT
6464
#define TZZONEINFO TZDIR "/"
6565
#elif DEPLOYMENT_TARGET_WINDOWS
@@ -147,7 +147,7 @@ static CFMutableArrayRef __CFCopyWindowsTimeZoneList() {
147147
RegCloseKey(hkResult);
148148
return result;
149149
}
150-
#elif DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
150+
#elif DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
151151
static CFMutableArrayRef __CFCopyRecursiveDirectoryList() {
152152
CFMutableArrayRef result = CFArrayCreateMutable(kCFAllocatorSystemDefault, 0, &kCFTypeArrayCallBacks);
153153
#if DEPLOYMENT_TARGET_WINDOWS

CoreFoundation/PlugIn.subproj/CFBundle.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#include <sys/stat.h>
2929
#include <stdlib.h>
3030

31-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
31+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
3232
#else
3333
#error Unknown deployment target
3434
#endif

CoreFoundation/PlugIn.subproj/CFBundle_BinaryTypes.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ CF_EXTERN_C_BEGIN
2727
#define USE_DYLD_PRIV 1
2828
#elif DEPLOYMENT_TARGET_WINDOWS
2929
#define BINARY_SUPPORT_DLL 1
30-
#elif DEPLOYMENT_TARGET_LINUX
30+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
3131
#define BINARY_SUPPORT_DLFCN 1
3232
#else
3333
#error Unknown or unspecified DEPLOYMENT_TARGET

CoreFoundation/PlugIn.subproj/CFBundle_InfoPlist.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include <CoreFoundation/CFByteOrder.h>
2424
#include <CoreFoundation/CFURLAccess.h>
2525

26-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_EMBEDDED_MINI
26+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_FREEBSD
2727
#include <dirent.h>
2828
#include <sys/sysctl.h>
2929
#include <sys/mman.h>
@@ -159,6 +159,8 @@ CF_EXPORT CFStringRef _CFGetAlternatePlatformName(void) {
159159
return CFSTR("");
160160
#elif DEPLOYMENT_TARGET_LINUX
161161
return CFSTR("Linux");
162+
#elif DEPLOYMENT_TARGET_FREEBSD
163+
return CFSTR("FreeBSD");
162164
#else
163165
#error Unknown or unspecified DEPLOYMENT_TARGET
164166
#endif

CoreFoundation/StringEncodings.subproj/CFUniChar.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ extern void _CFGetFrameworkPath(wchar_t *path, int maxLength);
4646

4747
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED
4848
#define USE_MACHO_SEGMENT 1
49-
#elif DEPLOYMENT_RUNTIME_SWIFT && DEPLOYMENT_TARGET_LINUX
49+
#elif DEPLOYMENT_RUNTIME_SWIFT && (DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD)
5050
#define USE_RAW_SYMBOL 1
5151
#endif
5252

@@ -111,7 +111,7 @@ static const void *__CFGetSectDataPtr(const char *segname, const char *sectname,
111111

112112
// Memory map the file
113113

114-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
114+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
115115
CF_INLINE void __CFUniCharCharacterSetPath(char *cpath) {
116116
#elif DEPLOYMENT_TARGET_WINDOWS
117117
CF_INLINE void __CFUniCharCharacterSetPath(wchar_t *wpath) {
@@ -120,7 +120,7 @@ CF_INLINE void __CFUniCharCharacterSetPath(wchar_t *wpath) {
120120
#endif
121121
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED
122122
strlcpy(cpath, __kCFCharacterSetDir, MAXPATHLEN);
123-
#elif DEPLOYMENT_TARGET_LINUX
123+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
124124
strlcpy(cpath, __kCFCharacterSetDir, MAXPATHLEN);
125125
#elif DEPLOYMENT_TARGET_WINDOWS
126126
wchar_t frameworkPath[MAXPATHLEN];
@@ -175,7 +175,7 @@ void __AddBitmapStateForName(const wchar_t *bitmapName) {
175175
}
176176
#endif
177177

178-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
178+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
179179
static bool __CFUniCharLoadBytesFromFile(const char *fileName, const void **bytes, int64_t *fileSize) {
180180
#elif DEPLOYMENT_TARGET_WINDOWS
181181
static bool __CFUniCharLoadBytesFromFile(const wchar_t *fileName, const void **bytes, int64_t *fileSize) {
@@ -241,7 +241,7 @@ static bool __CFUniCharLoadBytesFromFile(const wchar_t *fileName, const void **b
241241

242242
#endif // USE_MACHO_SEGMENT
243243

244-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
244+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
245245
#if !defined(CF_UNICHAR_BITMAP_FILE)
246246
#if USE_MACHO_SEGMENT
247247
#define CF_UNICHAR_BITMAP_FILE "__csbitmaps"
@@ -257,7 +257,7 @@ static bool __CFUniCharLoadBytesFromFile(const wchar_t *fileName, const void **b
257257
#error Unknown or unspecified DEPLOYMENT_TARGET
258258
#endif
259259

260-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
260+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
261261
#if __CF_BIG_ENDIAN__
262262
#if USE_MACHO_SEGMENT
263263
#define MAPPING_TABLE_FILE "__data"
@@ -289,7 +289,7 @@ static bool __CFUniCharLoadBytesFromFile(const wchar_t *fileName, const void **b
289289
#error Unknown or unspecified DEPLOYMENT_TARGET
290290
#endif
291291

292-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
292+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
293293
#if USE_MACHO_SEGMENT
294294
#define PROP_DB_FILE "__properties"
295295
#else
@@ -305,7 +305,7 @@ static bool __CFUniCharLoadBytesFromFile(const wchar_t *fileName, const void **b
305305
#error Unknown or unspecified DEPLOYMENT_TARGET
306306
#endif
307307

308-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
308+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
309309
static bool __CFUniCharLoadFile(const char *bitmapName, const void **bytes, int64_t *fileSize) {
310310
#elif DEPLOYMENT_TARGET_WINDOWS
311311
static bool __CFUniCharLoadFile(const wchar_t *bitmapName, const void **bytes, int64_t *fileSize) {
@@ -335,7 +335,7 @@ static bool __CFUniCharLoadFile(const wchar_t *bitmapName, const void **bytes, i
335335

336336
return *bytes ? true : false;
337337
#else
338-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
338+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
339339
char cpath[MAXPATHLEN];
340340
__CFUniCharCharacterSetPath(cpath);
341341
strlcat(cpath, bitmapName, MAXPATHLEN);

CoreFoundation/URL.subproj/CFURLAccess.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ CFData read/write routines
2929
#include <CoreFoundation/CFNumber.h>
3030
#include <string.h>
3131
#include <ctype.h>
32-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
32+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
3333
#include <stdlib.h>
3434
#include <unistd.h>
3535
#include <dirent.h>
@@ -238,7 +238,7 @@ static Boolean _CFFileURLWritePropertiesToResource(CFURLRef url, CFDictionaryRef
238238
CFNumberRef modeNum = (CFNumberRef)value;
239239
CFNumberGetValue(modeNum, kCFNumberSInt32Type, &mode);
240240
} else {
241-
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX
241+
#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED || DEPLOYMENT_TARGET_EMBEDDED_MINI || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
242242
#define MODE_TYPE mode_t
243243
#elif DEPLOYMENT_TARGET_WINDOWS
244244
#define MODE_TYPE uint16_t

build.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
if Configuration.current.target.sdk == OSType.Linux:
1717
foundation.CFLAGS = '-DDEPLOYMENT_TARGET_LINUX '
1818
foundation.LDFLAGS = '-Wl,@./CoreFoundation/linux.ld -lswiftGlibc `icu-config --ldflags` -Wl,-defsym,__CFConstantStringClassReference=_TMC10Foundation19_NSCFConstantString '
19+
elif Configuration.current.target.sdk == OSType.FreeBSD:
20+
foundation.CFLAGS = '-DDEPLOYMENT_TARGET_FREEBSD -I/usr/local/include -I/usr/local/include/libxml2 '
21+
foundation.LDFLAGS = ''
1922
elif Configuration.current.target.sdk == OSType.MacOSX:
2023
foundation.CFLAGS = '-DDEPLOYMENT_TARGET_MACOSX '
2124
foundation.LDFLAGS = '-licucore -twolevel_namespace -Wl,-alias_list,CoreFoundation/Base.subproj/DarwinSymbolAliases -sectcreate __UNICODE __csbitmaps CoreFoundation/CharacterSets/CFCharacterSetBitmaps.bitmap -sectcreate __UNICODE __properties CoreFoundation/CharacterSets/CFUniCharPropertyDatabase.data -sectcreate __UNICODE __data CoreFoundation/CharacterSets/CFUnicodeData-L.mapping -segprot __UNICODE r r '

0 commit comments

Comments
 (0)