@@ -39,6 +39,7 @@ ExternalProject_Add(CoreFoundation
39
39
-DCF_ENABLE_LIBDISPATCH=${FOUNDATION_ENABLE_LIBDISPATCH}
40
40
-DCF_PATH_TO_LIBDISPATCH_SOURCE=${FOUNDATION_PATH_TO_LIBDISPATCH_SOURCE}
41
41
-DCF_PATH_TO_LIBDISPATCH_BUILD=${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}
42
+ -DICU_INCLUDE_DIR=${ICU_INCLUDE_DIR}
42
43
INSTALL_COMMAND
43
44
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install )
44
45
ExternalProject_Get_Property (CoreFoundation install_dir )
@@ -47,14 +48,20 @@ set(swift_optimization_flags)
47
48
if (CMAKE_BUILD_TYPE MATCHES Release )
48
49
set (swift_optimization_flags -O )
49
50
endif ()
51
+ if (ENABLE_TESTING )
52
+ set (swift_enable_testing -enable-testing )
53
+ endif ()
50
54
51
55
set (deployment_enable_libdispatch )
52
56
set (libdispatch_cflags )
53
57
set (libdispatch_ldflags )
54
58
if (FOUNDATION_ENABLE_LIBDISPATCH )
55
59
set (deployment_enable_libdispatch -DDEPLOYMENT_ENABLE_LIBDISPATCH )
56
60
set (libdispatch_cflags -I;${FOUNDATION_PATH_TO_LIBDISPATCH_SOURCE};-I;${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}/src/swift;-Xcc;-fblocks )
57
- set (libdispatch_ldflags -L;${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}/src;-ldispatch )
61
+ set (libdispatch_ldflags -L;${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD};-L;${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}/src;-ldispatch )
62
+ if (CMAKE_SYSTEM_NAME STREQUAL Linux OR CMAKE_SYSTEM_NAME STREQUAL Android OR CMAKE_SYSTEM_NAME STREQUAL FreeBSD )
63
+ list (APPEND libdispatch_ldflags -Xlinker;-rpath;-Xlinker;${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}/src )
64
+ endif ()
58
65
endif ()
59
66
60
67
add_swift_library (Foundation
@@ -90,6 +97,7 @@ add_swift_library(Foundation
90
97
Foundation/ExtraStringAPIs.swift
91
98
Foundation/FileHandle.swift
92
99
Foundation/FileManager.swift
100
+ Foundation/FileManager_XDG.swift
93
101
Foundation/Formatter.swift
94
102
Foundation/FoundationErrors.swift
95
103
Foundation/Host.swift
@@ -196,16 +204,14 @@ add_swift_library(Foundation
196
204
Foundation/URLProtocol.swift
197
205
Foundation/URLRequest.swift
198
206
Foundation/URLResponse.swift
199
- # NOTE: must precede HTTPMessage.swift
207
+ Foundation/URLSession/BodySource.swift
208
+ Foundation/URLSession/Configuration.swift
200
209
Foundation/URLSession/Message.swift
201
210
Foundation/URLSession/http/HTTPMessage.swift
202
211
Foundation/URLSession/http/HTTPURLProtocol.swift
203
212
Foundation/URLSession/libcurl/EasyHandle.swift
204
213
Foundation/URLSession/libcurl/libcurlHelpers.swift
205
214
Foundation/URLSession/libcurl/MultiHandle.swift
206
- Foundation/URLSession/BodySource.swift
207
- Foundation/URLSession/Configuration.swift
208
- # Foundation/URLSession/Message.swift
209
215
Foundation/URLSession/NativeProtocol.swift
210
216
Foundation/URLSession/TaskRegistry.swift
211
217
Foundation/URLSession/TransferState.swift
@@ -226,6 +232,7 @@ add_swift_library(Foundation
226
232
${CMAKE_C_COMPILER_TARGET}
227
233
CFLAGS
228
234
${deployment_enable_libdispatch}
235
+ -F${install_dir}/System/Library/Frameworks
229
236
LINK_FLAGS
230
237
-L${install_dir}/usr/lib
231
238
-lCoreFoundation
@@ -234,11 +241,13 @@ add_swift_library(Foundation
234
241
${LIBXML2_LIBRARIES}
235
242
${libdispatch_ldflags}
236
243
${uuid_LIBRARIES}
244
+ -Xlinker;-rpath;-Xlinker; "\\\$\$ ORIGIN"
237
245
SWIFT_FLAGS
238
246
-DDEPLOYMENT_RUNTIME_SWIFT
239
247
${deployment_enable_libdispatch}
240
- -Fsystem ;${install_dir}/System/Library/Frameworks
248
+ -I ;${ICU_INCLUDE_DIR}
241
249
${libdispatch_cflags}
250
+ ${swift_enable_testing}
242
251
${swift_optimization_flags} )
243
252
add_dependencies (Foundation CoreFoundation )
244
253
@@ -247,31 +256,52 @@ add_swift_executable(plutil
247
256
Tools/plutil/main.swift
248
257
CFLAGS
249
258
${deployment_enable_libdispatch}
259
+ -F${install_dir}/System/Library/Frameworks
250
260
LINK_FLAGS
251
261
-L${CMAKE_CURRENT_BINARY_DIR}
262
+ ${libdispatch_ldflags}
252
263
-lFoundation
253
264
SWIFT_FLAGS
254
265
-DDEPLOYMENT_RUNTIME_SWIFT
255
266
${deployment_enable_libdispatch}
256
- -Fsystem;${install_dir}/System/Library/Frameworks
257
267
-I;${CMAKE_CURRENT_BINARY_DIR}/swift
268
+ -I;${ICU_INCLUDE_DIR}
258
269
${libdispatch_cflags}
270
+ ${swift_enable_testing}
259
271
${swift_optimization_flags} )
260
272
add_dependencies (plutil Foundation CoreFoundation )
261
273
262
274
if (ENABLE_TESTING )
275
+ add_swift_executable (xdgTestHelper
276
+ CFLAGS
277
+ ${deployment_enable_libdispatch}
278
+ -F${install_dir}/System/Library/Frameworks
279
+ LINK_FLAGS
280
+ ${libdispatch_ldflags}
281
+ -L${CMAKE_CURRENT_BINARY_DIR}
282
+ -lFoundation
283
+ SOURCES
284
+ TestFoundation/xdgTestHelper/main.swift
285
+ SWIFT_FLAGS
286
+ -I;${CMAKE_CURRENT_BINARY_DIR}/swift
287
+ -I;${ICU_INCLUDE_DIR}
288
+ ${libdispatch_cflags} )
289
+ add_dependencies (xdgTestHelper Foundation CoreFoundation )
290
+
263
291
add_swift_executable (TestFoundation
264
292
SOURCES
265
293
TestFoundation/main.swift
266
294
TestFoundation/HTTPServer.swift
267
295
Foundation/ProgressFraction.swift
296
+ TestFoundation/Utilities.swift
268
297
# Test Cases
269
298
TestFoundation/TestAffineTransform.swift
270
299
TestFoundation/TestBundle.swift
271
300
TestFoundation/TestByteCountFormatter.swift
272
301
TestFoundation/TestCalendar.swift
273
302
TestFoundation/TestCharacterSet.swift
274
303
TestFoundation/TestCodable.swift
304
+ TestFoundation/TestDateComponents.swift
275
305
TestFoundation/TestDateFormatter.swift
276
306
TestFoundation/TestDate.swift
277
307
TestFoundation/TestDecimal.swift
@@ -295,6 +325,7 @@ if(ENABLE_TESTING)
295
325
TestFoundation/TestNSArray.swift
296
326
TestFoundation/TestNSAttributedString.swift
297
327
TestFoundation/TestNSCache.swift
328
+ TestFoundation/TestNSCalendar.swift
298
329
TestFoundation/TestNSCompoundPredicate.swift
299
330
TestFoundation/TestNSData.swift
300
331
TestFoundation/TestNSDictionary.swift
@@ -336,6 +367,7 @@ if(ENABLE_TESTING)
336
367
TestFoundation/TestUnitConverter.swift
337
368
TestFoundation/TestUnit.swift
338
369
TestFoundation/TestURLCredential.swift
370
+ TestFoundation/TestURLProtectionSpace.swift
339
371
TestFoundation/TestURLProtocol.swift
340
372
TestFoundation/TestURLRequest.swift
341
373
TestFoundation/TestURLResponse.swift
@@ -347,11 +379,13 @@ if(ENABLE_TESTING)
347
379
TestFoundation/TestXMLParser.swift
348
380
CFLAGS
349
381
${deployment_enable_libdispatch}
382
+ -F${install_dir}/System/Library/Frameworks
350
383
LINK_FLAGS
351
384
${libdispatch_ldflags}
352
385
-L${CMAKE_CURRENT_BINARY_DIR}
353
386
-lFoundation
354
387
-L${FOUNDATION_PATH_TO_XCTEST_BUILD}
388
+ -lXCTest
355
389
RESOURCES
356
390
${CMAKE_SOURCE_DIR} /TestFoundation/Resources/Info.plist
357
391
${CMAKE_SOURCE_DIR} /TestFoundation/Resources/NSURLTestData.plist
@@ -375,29 +409,25 @@ if(ENABLE_TESTING)
375
409
${CMAKE_SOURCE_DIR} /TestFoundation/Resources/NSKeyedUnarchiver-URLTest.plist
376
410
${CMAKE_SOURCE_DIR} /TestFoundation/Resources/NSKeyedUnarchiver-UUIDTest.plist
377
411
${CMAKE_SOURCE_DIR} /TestFoundation/Resources/NSKeyedUnarchiver-OrderedSetTest.plist
412
+ ${CMAKE_SOURCE_DIR} /TestFoundation/Resources/TestFileWithZeros.txt
378
413
SWIFT_FLAGS
379
414
${deployment_enable_libdispatch}
380
- -Fsystem;${install_dir}/System/Library/Frameworks
381
415
-I;${CMAKE_CURRENT_BINARY_DIR}/swift
382
416
-I;${FOUNDATION_PATH_TO_XCTEST_BUILD}/swift
417
+ -I;${ICU_INCLUDE_DIR}
383
418
${libdispatch_cflags}
384
419
${swift_optimization_flags} )
385
- add_dependencies (TestFoundation Foundation CoreFoundation )
386
-
387
- add_swift_executable (xdgTestHelper
388
- SOURCES
389
- TestFoundation/xdgTestHelper/main.swift
390
- CFLAGS
391
- ${deployment_enable_libdispatch}
392
- LINK_FLAGS
393
- -L${CMAKE_CURRENT_BINARY_DIR}
394
- -lFoundation
395
- SWIFT_FLAGS
396
- -Fsystem;${install_dir}/System/Library/Frameworks
397
- -I;${CMAKE_CURRENT_BINARY_DIR}/swift
398
- ${libdispatch_cflags} )
399
- add_dependencies (xdgTestHelper Foundation CoreFoundation )
420
+ add_dependencies (TestFoundation Foundation CoreFoundation xdgTestHelper )
400
421
422
+ add_custom_command (TARGET TestFoundation
423
+ POST_BUILD
424
+ BYPRODUCTS
425
+ ${CMAKE_CURRENT_BINARY_DIR} /TestFoundation/xdgTestHelper${CMAKE_EXECUTABLE_SUFFIX}
426
+ COMMAND
427
+ ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR} /xdgTestHelper${CMAKE_EXECUTABLE_SUFFIX} ${CMAKE_CURRENT_BINARY_DIR} /TestFoundation/xdgTestHelper${CMAKE_EXECUTABLE_SUFFIX}
428
+ DEPENDS
429
+ TestFoundation
430
+ xdgTestHelper )
401
431
add_test (NAME
402
432
TestFoundation
403
433
COMMAND
@@ -407,20 +437,41 @@ if(ENABLE_TESTING)
407
437
set_tests_properties (TestFoundation
408
438
PROPERTIES
409
439
ENVIRONMENT
410
- LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}:${FOUNDATION_PATH_TO_XCTEST_BUILD}:${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}/src )
440
+ LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}:${FOUNDATION_PATH_TO_XCTEST_BUILD}:${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}:${FOUNDATION_PATH_TO_LIBDISPATCH_BUILD}/src
441
+ DEPENDS
442
+ ${CMAKE_CURRENT_BINARY_DIR} /TestFoundation/xdgTestHelper${CMAKE_EXECUTABLE_SUFFIX} )
411
443
endif ()
412
444
445
+ string (TOLOWER ${CMAKE_SYSTEM_NAME} swift_os )
446
+ get_swift_host_arch (swift_arch )
447
+
448
+ # TODO(compnerd) honour lib vs lib64
413
449
install (FILES
414
450
${CMAKE_CURRENT_BINARY_DIR} /swift/Foundation.swiftdoc
415
451
${CMAKE_CURRENT_BINARY_DIR} /swift/Foundation.swiftmodule
416
452
DESTINATION
417
- ${CMAKE_INSTALL_FULL_LIBDIR} /swift/${CMAKE_SYSTEM_NAME }/${CMAKE_SYSTEM_PROCESSOR } )
453
+ lib /swift/${swift_os }/${swift_arch } )
418
454
install (FILES
419
455
${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX}Foundation${CMAKE_SHARED_LIBRARY_SUFFIX}
420
456
DESTINATION
421
- ${CMAKE_INSTALL_FULL_LIBDIR} )
457
+ lib/swift/${swift_os} )
458
+ # TODO(compnerd) install as a Framework as that is how swift actually is built
459
+ install (DIRECTORY
460
+ ${install_dir} /System/Library/Frameworks/CoreFoundation.framework/Headers/
461
+ DESTINATION
462
+ lib/swift/CoreFoundation
463
+ FILES_MATCHING PATTERN "*.h" )
464
+ install (FILES
465
+ CoreFoundation/Base.subproj/module.map
466
+ DESTINATION
467
+ lib/swift/CoreFoundation )
468
+ if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin )
469
+ install (FILES
470
+ ${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX}Foundation${CMAKE_SHARED_LIBRARY_SUFFIX}
471
+ DESTINATION
472
+ lib/swift/${swift_os}/${swift_arch} )
473
+ endif ()
422
474
install (FILES
423
475
${CMAKE_CURRENT_BINARY_DIR} /plutil
424
476
DESTINATION
425
477
${CMAKE_INSTALL_FULL_BINDIR} )
426
-
0 commit comments