From cd594aa040e952dec06d7bad007f956f555441e4 Mon Sep 17 00:00:00 2001 From: Michael Chiu Date: Mon, 10 Feb 2025 05:03:02 -0500 Subject: [PATCH] add FreeBSD overlay --- benchmark/single-source/CString.swift | 2 + .../single-source/Radix2CooleyTukey.swift | 2 + benchmark/single-source/StringEdits.swift | 2 + benchmark/single-source/StringMatch.swift | 2 + benchmark/single-source/Walsh.swift | 2 + benchmark/utils/ArgParse.swift | 2 + benchmark/utils/DriverUtils.swift | 2 + lib/ClangImporter/ClangIncludePaths.cpp | 8 +- lib/DriverTool/autolink_extract_main.cpp | 1 + lib/SILGen/SILGen.cpp | 2 + stdlib/cmake/modules/AddSwiftStdlib.cmake | 2 +- stdlib/private/RuntimeUnittest/CMakeLists.txt | 2 +- .../StdlibCollectionUnittest/CMakeLists.txt | 2 +- .../StdlibUnicodeUnittest/CMakeLists.txt | 2 +- stdlib/private/StdlibUnittest/CMakeLists.txt | 2 +- stdlib/private/StdlibUnittest/RaceTest.swift | 2 + .../StdlibUnittest/StdlibCoreExtras.swift | 2 + .../StdlibUnittest/StdlibUnittest.swift | 2 + stdlib/private/SwiftPrivate/CMakeLists.txt | 2 +- stdlib/private/SwiftPrivate/IO.swift | 2 + .../SwiftPrivateLibcExtras/CMakeLists.txt | 2 +- .../SwiftPrivateLibcExtras/Subprocess.swift | 2 + .../SwiftPrivateLibcExtras.swift | 2 + .../SwiftPrivateThreadExtras/CMakeLists.txt | 2 +- .../SwiftPrivateThreadExtras.swift | 2 + .../ThreadBarriers.swift | 2 + .../SwiftReflectionTest/CMakeLists.txt | 2 +- .../SwiftReflectionTest.swift | 2 + stdlib/public/Concurrency/CMakeLists.txt | 2 +- stdlib/public/Differentiation/CMakeLists.txt | 2 +- .../TgmathDerivatives.swift.gyb | 4 +- stdlib/public/Distributed/CMakeLists.txt | 2 +- .../LocalTestingDistributedActorSystem.swift | 2 + stdlib/public/Platform/CMakeLists.txt | 80 ++- stdlib/public/Platform/FreeBSD.swift.gyb | 71 +++ stdlib/public/Platform/SwiftFreeBSD.h | 116 ++++ stdlib/public/Platform/freebsd.modulemap | 505 ++++++++++++++++++ stdlib/public/RegexBuilder/CMakeLists.txt | 2 +- stdlib/public/RegexParser/CMakeLists.txt | 2 +- stdlib/public/StringProcessing/CMakeLists.txt | 2 +- stdlib/public/Synchronization/CMakeLists.txt | 2 + .../libexec/swift-backtrace/CMakeLists.txt | 3 + .../libexec/swift-backtrace/Utils.swift | 2 + .../public/libexec/swift-backtrace/main.swift | 2 + .../SILOptimizer/pullback_inlining.swift | 2 + test/AutoDiff/SILOptimizer/vjp_inlining.swift | 2 + ...56600-symbol-in-ir-file-not-tbd-file.swift | 2 + .../stdlib/tgmath_derivatives.swift.gyb | 2 + .../validation-test/custom_derivatives.swift | 2 + .../separate_tangent_type.swift | 2 + .../availability_returns_twice.swift | 3 + test/ClangImporter/clang_builtins.swift | 2 + ...d_dispatch_dispatchMain_swift_6_mode.swift | 2 + ...ain_customExecutorOnMain_swift6_mode.swift | 2 + .../Runtime/actor_recursive_deinit.swift | 5 + test/Concurrency/Runtime/async.swift | 2 + ...nc_task_executor_default_actor_funcs.swift | 2 + ...executor_unstructured_task_ownership.swift | 2 + .../async_task_locals_copy_to_sync.swift | 2 + .../async_task_withUnsafeCurrentTask.swift | 2 + .../Runtime/cancellation_handler.swift | 2 + .../Runtime/data_race_detection_crash.swift | 2 + .../data_race_detection_legacy_warning.swift | 2 + test/Concurrency/Runtime/exclusivity.swift | 2 + .../exclusivity_custom_executors.swift | 2 + .../Runtime/executor_deinit3.swift | 2 + .../async_task_base_priority.swift | 2 + .../Runtime/distributed_actor_deinit.swift | 5 + test/IRGen/builtin_math.swift | 2 + test/IRGen/sanitize_coverage.swift | 2 + test/Interpreter/SDK/libc.swift | 2 + ...dynamicReplacement_property_observer.swift | 2 + test/Interpreter/dynamic_replacement.swift | 2 + .../dynamic_replacement_chaining.swift | 2 + ...c_replacement_without_previous_calls.swift | 2 + test/Prototypes/BigInt.swift | 2 + test/SILOptimizer/c_string_optimization.swift | 2 + test/Sanitizers/asan/recover.swift | 2 + test/Sanitizers/tsan/basic_future.swift | 2 + .../tsan/norace-block-release.swift | 2 + .../tsan/norace-deinit-run-time.swift | 2 + test/Sanitizers/tsan/tsan.swift | 2 + .../protocol-conformance-redundant.swift | 2 + test/stdlib/FloatConstants.swift | 2 + test/stdlib/MathConstants.swift | 2 + test/stdlib/POSIX.swift | 2 + test/stdlib/PrintFloat.swift.gyb | 2 + test/stdlib/Runtime.swift.gyb | 2 + test/stdlib/VarArgs.swift | 3 + test/stdlib/mmap.swift | 2 + test/stdlib/tgmath.swift.gyb | 2 + test/stdlib/tgmath_optimized.swift | 2 + .../InProcPluginServer.swift | 2 + validation-test/Sanitizers/fuzzer.swift | 2 + validation-test/Sanitizers/tsan-inout.swift | 2 + .../StdlibUnittest/AtomicInt.swift | 2 + .../FailIfChildCrashesDuringShutdown.swift | 2 + .../FailIfChildExitsDuringShutdown.swift | 2 + ...assIfChildCrashedDuringTestExecution.swift | 2 + .../RequireOwnProcess.swift | 2 + validation-test/StdlibUnittest/RaceTest.swift | 2 + validation-test/StdlibUnittest/Stdin.swift | 2 + validation-test/stdlib/POSIXErrorCode.swift | 2 + validation-test/stdlib/String.swift | 2 + .../stdlib/StringSlicesConcurrentAppend.swift | 2 + 105 files changed, 969 insertions(+), 21 deletions(-) create mode 100644 stdlib/public/Platform/FreeBSD.swift.gyb create mode 100644 stdlib/public/Platform/SwiftFreeBSD.h create mode 100644 stdlib/public/Platform/freebsd.modulemap diff --git a/benchmark/single-source/CString.swift b/benchmark/single-source/CString.swift index 2ceca70a6ce6a..edc406f9221b3 100644 --- a/benchmark/single-source/CString.swift +++ b/benchmark/single-source/CString.swift @@ -17,6 +17,8 @@ import Glibc import Musl #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin #endif diff --git a/benchmark/single-source/Radix2CooleyTukey.swift b/benchmark/single-source/Radix2CooleyTukey.swift index b6c1524be406e..a5981d08dbdbd 100644 --- a/benchmark/single-source/Radix2CooleyTukey.swift +++ b/benchmark/single-source/Radix2CooleyTukey.swift @@ -8,6 +8,8 @@ import Glibc import Musl #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin #endif diff --git a/benchmark/single-source/StringEdits.swift b/benchmark/single-source/StringEdits.swift index b91da2ac1ce3e..178acb42e9b67 100644 --- a/benchmark/single-source/StringEdits.swift +++ b/benchmark/single-source/StringEdits.swift @@ -17,6 +17,8 @@ import Glibc import Musl #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin #endif diff --git a/benchmark/single-source/StringMatch.swift b/benchmark/single-source/StringMatch.swift index 37e9359685312..0750323734343 100644 --- a/benchmark/single-source/StringMatch.swift +++ b/benchmark/single-source/StringMatch.swift @@ -17,6 +17,8 @@ import Glibc import Musl #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin #endif diff --git a/benchmark/single-source/Walsh.swift b/benchmark/single-source/Walsh.swift index a00dadeca6299..7cfbaa4cbfcfd 100644 --- a/benchmark/single-source/Walsh.swift +++ b/benchmark/single-source/Walsh.swift @@ -17,6 +17,8 @@ import Glibc import Musl #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin #endif diff --git a/benchmark/utils/ArgParse.swift b/benchmark/utils/ArgParse.swift index 1047352179194..a8b7632840694 100644 --- a/benchmark/utils/ArgParse.swift +++ b/benchmark/utils/ArgParse.swift @@ -16,6 +16,8 @@ import Glibc import Musl #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin #endif diff --git a/benchmark/utils/DriverUtils.swift b/benchmark/utils/DriverUtils.swift index 733c022b60d83..ebc4d3cebca3c 100644 --- a/benchmark/utils/DriverUtils.swift +++ b/benchmark/utils/DriverUtils.swift @@ -16,6 +16,8 @@ import Glibc import Musl #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin import LibProc diff --git a/lib/ClangImporter/ClangIncludePaths.cpp b/lib/ClangImporter/ClangIncludePaths.cpp index 30c1db4a6a9c3..e38ef687f44f9 100644 --- a/lib/ClangImporter/ClangIncludePaths.cpp +++ b/lib/ClangImporter/ClangIncludePaths.cpp @@ -625,8 +625,12 @@ ClangInvocationFileMapping swift::getClangInvocationFileMapping( sysroot = libcFileMapping[0].first; llvm::sys::path::remove_filename(sysroot); } - } else if (triple.isOSGlibc() || triple.isOSOpenBSD() || - triple.isOSFreeBSD()) { + } else if (triple.isOSFreeBSD()) { + libcFileMapping = getLibcFileMapping(ctx, "freebsd.modulemap", + StringRef("SwiftFreeBSD.h"), vfs, + suppressDiagnostic); + result.requiresBuiltinHeadersInSystemModules = true; + } else if (triple.isOSGlibc() || triple.isOSOpenBSD()) { // BSD/Linux Mappings libcFileMapping = getLibcFileMapping(ctx, "glibc.modulemap", StringRef("SwiftGlibc.h"), vfs, diff --git a/lib/DriverTool/autolink_extract_main.cpp b/lib/DriverTool/autolink_extract_main.cpp index 074d1cd68af33..1a3586e0321fc 100644 --- a/lib/DriverTool/autolink_extract_main.cpp +++ b/lib/DriverTool/autolink_extract_main.cpp @@ -236,6 +236,7 @@ int autolink_extract_main(ArrayRef Args, const char *Argv0, "-lswiftSynchronization", "-lswiftGlibc", "-lswiftAndroid", + "-lswiftFreeBSD", "-lBlocksRuntime", // Dispatch-specific Swift runtime libs "-ldispatch", diff --git a/lib/SILGen/SILGen.cpp b/lib/SILGen/SILGen.cpp index c3de2d634ffd7..367ef647080be 100644 --- a/lib/SILGen/SILGen.cpp +++ b/lib/SILGen/SILGen.cpp @@ -470,6 +470,8 @@ FuncDecl *SILGenModule::getExit() { mostLikelyIdentifier = C.getIdentifier("SwiftWASILibc"); } else if (triple.isWindowsMSVCEnvironment()) { mostLikelyIdentifier = C.getIdentifier("ucrt"); + } else if (triple.isOSFreeBSD()) { + mostLikelyIdentifier = C.getIdentifier("SwiftFreeBSD"); } else { mostLikelyIdentifier = C.getIdentifier("SwiftGlibc"); } diff --git a/stdlib/cmake/modules/AddSwiftStdlib.cmake b/stdlib/cmake/modules/AddSwiftStdlib.cmake index 0ddd10571b659..e85007e67e25b 100644 --- a/stdlib/cmake/modules/AddSwiftStdlib.cmake +++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake @@ -146,7 +146,7 @@ function(_add_target_variant_c_compile_link_flags) endif() # Use frame pointers on Linux - if("${CFLAGS_SDK}" STREQUAL "LINUX") + if("${CFLAGS_SDK}" STREQUAL "LINUX" OR "${CFLAGS_SDK}" STREQUAL "FREEBSD") list(APPEND result "-fno-omit-frame-pointer") endif() diff --git a/stdlib/private/RuntimeUnittest/CMakeLists.txt b/stdlib/private/RuntimeUnittest/CMakeLists.txt index 893bf08849166..71c0e8a54ccf5 100644 --- a/stdlib/private/RuntimeUnittest/CMakeLists.txt +++ b/stdlib/private/RuntimeUnittest/CMakeLists.txt @@ -11,7 +11,7 @@ add_swift_target_library(swiftRuntimeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt b/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt index 6d0263a9155a7..b181da568a0c0 100644 --- a/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt +++ b/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt @@ -22,7 +22,7 @@ add_swift_target_library(swiftStdlibCollectionUnittest ${SWIFT_STDLIB_LIBRARY_BU SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt b/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt index e1b11e436a832..da6aa8d3fc1c8 100644 --- a/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt +++ b/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt @@ -13,7 +13,7 @@ add_swift_target_library(swiftStdlibUnicodeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/private/StdlibUnittest/CMakeLists.txt b/stdlib/private/StdlibUnittest/CMakeLists.txt index 5ebc25ecd3f72..65f412052b9be 100644 --- a/stdlib/private/StdlibUnittest/CMakeLists.txt +++ b/stdlib/private/StdlibUnittest/CMakeLists.txt @@ -65,7 +65,7 @@ add_swift_target_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/private/StdlibUnittest/RaceTest.swift b/stdlib/private/StdlibUnittest/RaceTest.swift index dc9f6c702abf7..4668df836319b 100644 --- a/stdlib/private/StdlibUnittest/RaceTest.swift +++ b/stdlib/private/StdlibUnittest/RaceTest.swift @@ -52,6 +52,8 @@ internal import WASILibc #elseif os(Windows) internal import CRT internal import WinSDK +#elseif canImport(FreeBSD) +internal import FreeBSD #endif #if _runtime(_ObjC) diff --git a/stdlib/private/StdlibUnittest/StdlibCoreExtras.swift b/stdlib/private/StdlibUnittest/StdlibCoreExtras.swift index d9782aac9223f..484f9fea4af97 100644 --- a/stdlib/private/StdlibUnittest/StdlibCoreExtras.swift +++ b/stdlib/private/StdlibUnittest/StdlibCoreExtras.swift @@ -24,6 +24,8 @@ internal import Android internal import WASILibc #elseif os(Windows) internal import CRT +#elseif canImport(FreeBSD) +internal import FreeBSD #endif #if _runtime(_ObjC) diff --git a/stdlib/private/StdlibUnittest/StdlibUnittest.swift b/stdlib/private/StdlibUnittest/StdlibUnittest.swift index 254593bb7bc72..087be91055f31 100644 --- a/stdlib/private/StdlibUnittest/StdlibUnittest.swift +++ b/stdlib/private/StdlibUnittest/StdlibUnittest.swift @@ -32,6 +32,8 @@ internal import WASILibc #elseif os(Windows) internal import CRT internal import WinSDK +#elseif os(FreeBSD) +internal import FreeBSD #endif #if _runtime(_ObjC) diff --git a/stdlib/private/SwiftPrivate/CMakeLists.txt b/stdlib/private/SwiftPrivate/CMakeLists.txt index 07b8ac7d0033c..e66e122ce41f8 100644 --- a/stdlib/private/SwiftPrivate/CMakeLists.txt +++ b/stdlib/private/SwiftPrivate/CMakeLists.txt @@ -30,7 +30,7 @@ add_swift_target_library(swiftSwiftPrivate ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/private/SwiftPrivate/IO.swift b/stdlib/private/SwiftPrivate/IO.swift index e8bf2c659fa0d..0e2c847303c63 100644 --- a/stdlib/private/SwiftPrivate/IO.swift +++ b/stdlib/private/SwiftPrivate/IO.swift @@ -27,6 +27,8 @@ import Musl import Android #elseif canImport(WASILibc) import WASILibc +#elseif canImport(FreeBSD) +import FreeBSD #endif let (platform_read, platform_write, platform_close) = (read, write, close) #endif diff --git a/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt b/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt index 83a13affb475d..3a3855393f520 100644 --- a/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt +++ b/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt @@ -41,7 +41,7 @@ add_swift_target_library(swiftSwiftPrivateLibcExtras ${SWIFT_STDLIB_LIBRARY_BUIL SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/private/SwiftPrivateLibcExtras/Subprocess.swift b/stdlib/private/SwiftPrivateLibcExtras/Subprocess.swift index ad15200ac7518..33ac33e7ccd07 100644 --- a/stdlib/private/SwiftPrivateLibcExtras/Subprocess.swift +++ b/stdlib/private/SwiftPrivateLibcExtras/Subprocess.swift @@ -24,6 +24,8 @@ import WASILibc #elseif os(Windows) import CRT import WinSDK +#elseif os(FreeBSD) +import FreeBSD #endif #if !os(WASI) diff --git a/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift b/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift index 27ee869f70609..555ef3b83a6cb 100644 --- a/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift +++ b/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift @@ -23,6 +23,8 @@ import Android import WASILibc #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) +import FreeBSD #endif public func _stdlib_mkstemps(_ template: inout String, _ suffixlen: CInt) -> CInt { diff --git a/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt b/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt index 124f162220585..d78036884475f 100644 --- a/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt +++ b/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt @@ -22,7 +22,7 @@ add_swift_target_library(swiftSwiftPrivateThreadExtras ${SWIFT_STDLIB_LIBRARY_BU SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/private/SwiftPrivateThreadExtras/SwiftPrivateThreadExtras.swift b/stdlib/private/SwiftPrivateThreadExtras/SwiftPrivateThreadExtras.swift index 4ddf17a803136..fdbcb778db2c2 100644 --- a/stdlib/private/SwiftPrivateThreadExtras/SwiftPrivateThreadExtras.swift +++ b/stdlib/private/SwiftPrivateThreadExtras/SwiftPrivateThreadExtras.swift @@ -28,6 +28,8 @@ import WASILibc #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) +import FreeBSD #endif /// An abstract base class to encapsulate the context necessary to invoke diff --git a/stdlib/private/SwiftPrivateThreadExtras/ThreadBarriers.swift b/stdlib/private/SwiftPrivateThreadExtras/ThreadBarriers.swift index e7c43bf02567f..ac212c329f692 100644 --- a/stdlib/private/SwiftPrivateThreadExtras/ThreadBarriers.swift +++ b/stdlib/private/SwiftPrivateThreadExtras/ThreadBarriers.swift @@ -23,6 +23,8 @@ import WASILibc #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) +import FreeBSD #endif // diff --git a/stdlib/private/SwiftReflectionTest/CMakeLists.txt b/stdlib/private/SwiftReflectionTest/CMakeLists.txt index 6dba4e6ac07fb..5b8bfba362c12 100644 --- a/stdlib/private/SwiftReflectionTest/CMakeLists.txt +++ b/stdlib/private/SwiftReflectionTest/CMakeLists.txt @@ -17,7 +17,7 @@ if (SWIFT_INCLUDE_TESTS AND SWIFT_BUILD_DYNAMIC_STDLIB) SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_WINDOWS CRT INSTALL_IN_COMPONENT stdlib-experimental diff --git a/stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift b/stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift index f38adc5eb8ee7..1452c5dc6b1a6 100644 --- a/stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift +++ b/stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift @@ -134,6 +134,8 @@ import Glibc import Musl #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #endif let rtldDefault: UnsafeMutableRawPointer? = nil diff --git a/stdlib/public/Concurrency/CMakeLists.txt b/stdlib/public/Concurrency/CMakeLists.txt index cbf48e729c402..e066e387cde06 100644 --- a/stdlib/public/Concurrency/CMakeLists.txt +++ b/stdlib/public/Concurrency/CMakeLists.txt @@ -183,7 +183,7 @@ add_swift_target_library(swift_Concurrency ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/public/Differentiation/CMakeLists.txt b/stdlib/public/Differentiation/CMakeLists.txt index 16a296bbbe772..2da057363a8e0 100644 --- a/stdlib/public/Differentiation/CMakeLists.txt +++ b/stdlib/public/Differentiation/CMakeLists.txt @@ -45,7 +45,7 @@ add_swift_target_library(swift_Differentiation ${SWIFT_STDLIB_LIBRARY_BUILD_TYPE SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/public/Differentiation/TgmathDerivatives.swift.gyb b/stdlib/public/Differentiation/TgmathDerivatives.swift.gyb index 96fbe23c8237d..3ae87021cab5e 100644 --- a/stdlib/public/Differentiation/TgmathDerivatives.swift.gyb +++ b/stdlib/public/Differentiation/TgmathDerivatives.swift.gyb @@ -22,7 +22,7 @@ import Swift #endif #elseif canImport(Musl) import Musl -#elseif os(Linux) || os(FreeBSD) || os(OpenBSD) || os(PS4) || os(Cygwin) || os(Haiku) +#elseif os(Linux) || os(OpenBSD) || os(PS4) || os(Cygwin) || os(Haiku) import Glibc #elseif os(WASI) import WASILibc @@ -30,6 +30,8 @@ import Swift import CRT #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/stdlib/public/Distributed/CMakeLists.txt b/stdlib/public/Distributed/CMakeLists.txt index 0a3a821da563e..6dba6ee07ac69 100644 --- a/stdlib/public/Distributed/CMakeLists.txt +++ b/stdlib/public/Distributed/CMakeLists.txt @@ -37,7 +37,7 @@ add_swift_target_library(swiftDistributed ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/public/Distributed/LocalTestingDistributedActorSystem.swift b/stdlib/public/Distributed/LocalTestingDistributedActorSystem.swift index 33c208bff38ea..74a1bc69f28fd 100644 --- a/stdlib/public/Distributed/LocalTestingDistributedActorSystem.swift +++ b/stdlib/public/Distributed/LocalTestingDistributedActorSystem.swift @@ -22,6 +22,8 @@ import Musl import Android #elseif os(Windows) import WinSDK +#elseif canImport(FreeBSD) +import FreeBSD #endif /// A `DistributedActorSystem` designed for local only testing. diff --git a/stdlib/public/Platform/CMakeLists.txt b/stdlib/public/Platform/CMakeLists.txt index 7a7cab3da6d59..0bd56248017f0 100644 --- a/stdlib/public/Platform/CMakeLists.txt +++ b/stdlib/public/Platform/CMakeLists.txt @@ -128,9 +128,9 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB) endforeach() endif() -set(swiftGlibc_target_sdks CYGWIN FREEBSD OPENBSD LINUX HAIKU) +set(swiftGlibc_target_sdks CYGWIN OPENBSD LINUX HAIKU) if(SWIFT_FREESTANDING_FLAVOR STREQUAL "linux") - set(swiftGlibc_target_sdks CYGWIN FREEBSD OPENBSD LINUX HAIKU FREESTANDING) + set(swiftGlibc_target_sdks CYGWIN OPENBSD LINUX HAIKU FREESTANDING) endif() add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY ${swift_platform_sources} @@ -149,6 +149,23 @@ add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_O INSTALL_IN_COMPONENT sdk-overlay DEPENDS glibc_modulemap) +add_swift_target_library(swiftFreeBSD ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY + ${swift_platform_sources} + POSIXError.swift + + GYB_SOURCES + ${swift_platform_gyb_sources} + FreeBSD.swift.gyb + + SWIFT_COMPILE_FLAGS + ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} + ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} + ${swift_platform_compile_flags} + LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}" + TARGET_SDKS FREEBSD + INSTALL_IN_COMPONENT sdk-overlay + DEPENDS freebsd_modulemap) + add_swift_target_library(swiftMusl ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY ${swift_platform_sources} POSIXError.swift @@ -308,7 +325,6 @@ add_swift_target_library(swiftAndroid ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK set(glibc_modulemap_target_list) foreach(sdk ${SWIFT_SDKS}) if(NOT "${sdk}" STREQUAL "LINUX" AND - NOT "${sdk}" STREQUAL "FREEBSD" AND NOT "${sdk}" STREQUAL "OPENBSD" AND NOT "${sdk}" STREQUAL "CYGWIN" AND NOT "${sdk}" STREQUAL "HAIKU") @@ -405,6 +421,64 @@ add_custom_target(glibc_modulemap DEPENDS ${glibc_modulemap_target_list}) set_property(TARGET glibc_modulemap PROPERTY FOLDER "Miscellaneous") add_dependencies(sdk-overlay glibc_modulemap) +set(freebsd_modulemap_target_list) +if("FREEBSD" IN_LIST SWIFT_SDKS) + set(freebsd_modulemap_source "freebsd.modulemap") + set(freebsd_header_source "SwiftFreeBSD.h") + + foreach(arch ${SWIFT_SDK_FREEBSD_ARCHITECTURES}) + set(arch_subdir "${SWIFT_SDK_FREEBSD_LIB_SUBDIR}/${arch}") + set(module_dir "${SWIFTLIB_DIR}/${arch_subdir}") + set(module_dir_static "${SWIFTSTATICLIB_DIR}/${arch_subdir}") + + add_custom_command_target( + copy_freebsd_modulemap_resource + COMMAND + "${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir} ${module_dir_static} + COMMAND + "${CMAKE_COMMAND}" "-E" "copy_if_different" + "${CMAKE_CURRENT_SOURCE_DIR}/${freebsd_modulemap_source}" ${module_dir} + COMMAND + "${CMAKE_COMMAND}" "-E" "copy_if_different" + "${CMAKE_CURRENT_SOURCE_DIR}/${freebsd_modulemap_source}" ${module_dir_static} + OUTPUT ${module_dir}/${freebsd_modulemap_source} ${module_dir_static}/${freebsd_modulemap_source} + COMMENT "Copying FreeBSD modulemap to resource directories") + + add_custom_command_target( + copy_freebsd_header_resource + COMMAND + "${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir} ${module_dir_static} + COMMAND + "${CMAKE_COMMAND}" "-E" "copy_if_different" + "${CMAKE_CURRENT_SOURCE_DIR}/${freebsd_header_source}" ${module_dir} + COMMAND + "${CMAKE_COMMAND}" "-E" "copy_if_different" + "${CMAKE_CURRENT_SOURCE_DIR}/${freebsd_header_source}" ${module_dir_static} + OUTPUT ${module_dir}/${freebsd_header_source} ${module_dir_static}/${freebsd_header_source} + COMMENT "Copying FreeBSD header to resource directories") + + add_dependencies(sdk-overlay ${copy_freebsd_modulemap_resource} + ${copy_freebsd_header_resource}) + + list(APPEND freebsd_modulemap_target_list ${copy_freebsd_modulemap_resource} + ${copy_freebsd_header_resource}) + + swift_install_in_component(FILES "${freebsd_modulemap_source}" + "${freebsd_header_source}" + DESTINATION "lib/swift/${arch_subdir}" + COMPONENT sdk-overlay) + if(SWIFT_BUILD_STATIC_STDLIB) + swift_install_in_component(FILES "${freebsd_modulemap_source}" + "${freebsd_header_source}" + DESTINATION "lib/swift_static/${arch_subdir}" + COMPONENT sdk-overlay) + endif() + endforeach() +endif() +add_custom_target(freebsd_modulemap DEPENDS ${freebsd_modulemap_target_list}) +set_property(TARGET freebsd_modulemap PROPERTY FOLDER "Miscellaneous") +add_dependencies(sdk-overlay freebsd_modulemap) + set(android_modulemap_target_list) if("ANDROID" IN_LIST SWIFT_SDKS) set(android_modulemap_source "android.modulemap") diff --git a/stdlib/public/Platform/FreeBSD.swift.gyb b/stdlib/public/Platform/FreeBSD.swift.gyb new file mode 100644 index 0000000000000..29d270779fd6c --- /dev/null +++ b/stdlib/public/Platform/FreeBSD.swift.gyb @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift.org open source project +// +// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors +// Licensed under Apache License v2.0 with Runtime Library Exception +// +// See https://swift.org/LICENSE.txt for license information +// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors +// +//===----------------------------------------------------------------------===// + +@_exported import SwiftFreeBSD // Clang module + +public let MAP_FAILED: UnsafeMutableRawPointer! = UnsafeMutableRawPointer(bitPattern: -1) + +// Constants defined by +@available(swift, deprecated: 3.0, message: "Please use 'Double.pi' or '.pi' to get the value of correct type and avoid casting.") +public let M_PI = Double.pi + +@available(swift, deprecated: 3.0, message: "Please use 'Double.pi / 2' or '.pi / 2' to get the value of correct type and avoid casting.") +public let M_PI_2 = Double.pi / 2 + +@available(swift, deprecated: 3.0, message: "Please use 'Double.pi / 4' or '.pi / 4' to get the value of correct type and avoid casting.") +public let M_PI_4 = Double.pi / 4 + +@available(swift, deprecated: 3.0, message: "Please use '2.squareRoot()'.") +public let M_SQRT2 = 2.squareRoot() + +@available(swift, deprecated: 3.0, message: "Please use '0.5.squareRoot()'.") +public let M_SQRT1_2 = 0.5.squareRoot() + +// Constants defined by +@available(swift, deprecated: 3.0, message: "Please use 'T.radix' to get the radix of a FloatingPoint type 'T'.") +public let FLT_RADIX = Double.radix + +%for type, prefix in [('Float', 'FLT'), ('Double', 'DBL'), ('Float80', 'LDBL')]: +% if type == "Float80": +#if (arch(i386) || arch(x86_64)) +% end +// Where does the 1 come from? C counts the usually-implicit leading +// significand bit, but Swift does not. Neither is really right or wrong. +@available(swift, deprecated: 3.0, message: "Please use '${type}.significandBitCount + 1'.") +public let ${prefix}_MANT_DIG = ${type}.significandBitCount + 1 + +// Where does the 1 come from? C models floating-point numbers as having a +// significand in [0.5, 1), but Swift (following IEEE 754) considers the +// significand to be in [1, 2). This rationale applies to ${prefix}_MIN_EXP +// as well. +@available(swift, deprecated: 3.0, message: "Please use '${type}.greatestFiniteMagnitude.exponent + 1'.") +public let ${prefix}_MAX_EXP = ${type}.greatestFiniteMagnitude.exponent + 1 + +@available(swift, deprecated: 3.0, message: "Please use '${type}.leastNormalMagnitude.exponent + 1'.") +public let ${prefix}_MIN_EXP = ${type}.leastNormalMagnitude.exponent + 1 + +@available(swift, deprecated: 3.0, message: "Please use '${type}.greatestFiniteMagnitude' or '.greatestFiniteMagnitude'.") +public let ${prefix}_MAX = ${type}.greatestFiniteMagnitude + +@available(swift, deprecated: 3.0, message: "Please use '${type}.ulpOfOne' or '.ulpOfOne'.") +public let ${prefix}_EPSILON = ${type}.ulpOfOne + +@available(swift, deprecated: 3.0, message: "Please use '${type}.leastNormalMagnitude' or '.leastNormalMagnitude'.") +public let ${prefix}_MIN = ${type}.leastNormalMagnitude + +@available(swift, deprecated: 3.0, message: "Please use '${type}.leastNonzeroMagnitude' or '.leastNonzeroMagnitude'.") +public let ${prefix}_TRUE_MIN = ${type}.leastNonzeroMagnitude + +% if type == "Float80": +#endif +% end +%end diff --git a/stdlib/public/Platform/SwiftFreeBSD.h b/stdlib/public/Platform/SwiftFreeBSD.h new file mode 100644 index 0000000000000..940618be3c20d --- /dev/null +++ b/stdlib/public/Platform/SwiftFreeBSD.h @@ -0,0 +1,116 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include diff --git a/stdlib/public/Platform/freebsd.modulemap b/stdlib/public/Platform/freebsd.modulemap new file mode 100644 index 0000000000000..e788e85928a96 --- /dev/null +++ b/stdlib/public/Platform/freebsd.modulemap @@ -0,0 +1,505 @@ +module _assert [system] { + textual header "assert.h" +} + +module _complex [system] { + header "complex.h" + export * +} + +module _ctype [system] { + header "ctype.h" + export * +} + +module _malloc [system] { + header "malloc.h" + header "malloc_np.h" + export * +} + +module _errno [system] { + header "errno.h" + export * +} + +module _fenv [system] { + header "fenv.h" + export * +} + +module _float [system] { + header "float.h" + export * +} + +module _inttypes [system] { + header "inttypes.h" + export * +} + +module _iso646 [system] { + header "iso646.h" + export * +} + +module _limits [system] { + header "limits.h" + export * +} + +module _locale [system] { + header "locale.h" + export * +} + +module _math [system] { + header "math.h" + export * + link "m" +} + +module _pty [system] { + header "pty.h" + export * +} + +module _setjmp [system] { + header "setjmp.h" + export * +} + +module _signal [system] { + header "signal.h" + header "sys/ucontext.h" + export * +} + +module _stdalign [system] { + header "stdalign.h" + export * +} + +module _stdarg [system] { + header "stdarg.h" + export * +} + +module _stdatomic [system] { + header "stdatomic.h" + export * +} + +module _stdbool [system] { + header "stdbool.h" + export * +} + +module _stddef [system] { + header "stddef.h" + export * +} + +module _stdint [system] { + header "stdint.h" + export * +} + +module _stdio [system] { + header "stdio.h" + export * +} + +module _stdlib [system] { + header "stdlib.h" + export * +} + +module _string [system] { + header "string.h" + export * +} + +module _strings [system] { + header "strings.h" + export * +} + +module _tgmath [system] { + header "tgmath.h" + export * +} + +module _uchar [system] { + header "uchar.h" + export * +} + +module _wchar [system] { + header "wchar.h" + export * +} + +module _time [system] { + header "time.h" + export * +} + +module _stdnoreturn [system] { + header "stdnoreturn.h" + export * +} + +module _threads [system] { + header "threads.h" + export * + link "stdthreads" +} + +// POSIX +module posix_aio [system] { + header "aio.h" + export * +} + +module posix_cpio [system] { + header "cpio.h" + export * +} + +module posix_dirent [system] { + header "dirent.h" + export * +} + +module posix_dlfcn [system] { + header "dlfcn.h" + export * + link "dl" +} + +module posix_fcntl [system] { + header "fcntl.h" + export * +} + +module posix_fmtmsg [system] { + header "fmtmsg.h" + export * +} + +module posix_fnmatch [system] { + header "fnmatch.h" + export * +} + +module posix_ftw [system] { + header "ftw.h" + export * +} + +module posix_glob [system] { + header "glob.h" + export * +} + +module posix_grp [system] { + header "grp.h" + export * +} + +module posix_iconv [system] { + header "iconv.h" + export * +} + +module posix_langinfo [system] { + header "langinfo.h" + export * +} + +module posix_libgen [system] { + header "libgen.h" + export * +} + +module posix_monetary [system] { + header "monetary.h" + export * +} + +module posix_mqueue [system] { + header "mqueue.h" + export * +} + +module _netdb [system] { + header "netdb.h" + export * +} + +module _nl_types [system] { + header "nl_types.h" + export * +} + +module _poll [system] { + header "poll.h" + export * +} + +module _pwd [system] { + header "pwd.h" + export * +} + +module _regex [system] { + header "regex.h" + export * +} + +module _resolv [system] { + header "resolv.h" + export * +} + +module _sched [system] { + header "sched.h" + export * +} + +module _semaphore [system] { + header "semaphore.h" + export * +} + +module _search [system] { + header "search.h" + export * +} + +module _spawn [system] { + header "spawn.h" + export * +} + +module _sys_event [system] { + header "sys/event.h" + export * +} + +//module _sys_extattr [system] { +// header "sys/extattr.h" +// export * +//} + +module _sys_file [system] { + header "sys/file.h" + export * +} + +module _sys_ioctl [system] { + header "sys/ioctl.h" + export * +} + +//module _sys_ipc [system] { +// header "sys/ipc.h" +// export * +//} + +module _sys_mman [system] { + header "sys/mman.h" + export * +} + +module _sys_mount [system] { + header "sys/mount.h" + export * +} + +module _sys_msg [system] { + header "sys/msg.h" + export * +} + +module _sys_resource [system] { + header "sys/resource.h" + export * +} + +module _sys_select [system] { + header "sys/select.h" + export * +} + +module _sys_sem [system] { + header "sys/sem.h" + export * +} + +module _sys_shm [system] { + header "sys/shm.h" + export * +} + +module _sys_socket [system] { + header "sys/socket.h" + export * +} + +module _sys_stat [system] { + header "sys/stat.h" + export * +} + +module _sys_statvfs [system] { + header "sys/statvfs.h" + export * +} + +module _sys_time [system] { + header "sys/time.h" + export * +} + +module _sys_times [system] { + header "sys/times.h" + export * +} + +module _sys_types [system] { + textual header "sys/types.h" +} + +module _sys_uio [system] { + header "sys/uio.h" + export * +} + +module _sys_un [system] { + header "sys/un.h" + export * +} + +module _sys_wait [system] { + header "sys/wait.h" + export * +} + +module _sysexits [system] { + header "sysexits.h" + export * +} + +module _syslog [system] { + header "syslog.h" + export * +} + +module _tar [system] { + header "tar.h" + export * +} + +module _termios [system] { + header "termios.h" + export * +} + +module _ulimit [system] { + header "ulimit.h" + export * +} + +module _unistd [system] { + header "unistd.h" + export * +} + +module _utime [system] { + header "utime.h" + export * +} + +module _utmpx [system] { + header "utmpx.h" + export * +} + +module _wait [system] { + header "wait.h" + export * +} + +module _wordexp [system] { + header "wordexp.h" + export * +} + +module _netinet [system] { + header "netinet/in.h" + header "netinet/tcp.h" + export * +} + +module _link [system] { + header "link.h" + header "sys/link_elf.h" + export * +} + +module _ifaddrs [system] { + header "ifaddrs.h" + export * +} + +module net_if [system] { + header "net/if.h" + export * +} + +module fts [system] { + header "fts.h" + export * +} + +module pthread [system] { + header "pthread.h" + header "pthread_np.h" + link "pthread" + export * +} + +//module lzma [system] { +// header "lzma.h" +// export * +// link "lzma" +//} + +module util [system] { + header "libutil.h" + export * + link "util" +} + +//module zlib [system] { +// header "zlib.h" +// explicit module zconf { +// header "zconf.h" +// export * +// } +// export * +// link "z" +//} + +module SwiftFreeBSD [system] { + header "SwiftFreeBSD.h" + export * +} + +module CUUID [system] { + header "uuid/uuid.h" + link "uuid" + export * +} diff --git a/stdlib/public/RegexBuilder/CMakeLists.txt b/stdlib/public/RegexBuilder/CMakeLists.txt index 7e63d80d0101e..ef0f0cdd239be 100644 --- a/stdlib/public/RegexBuilder/CMakeLists.txt +++ b/stdlib/public/RegexBuilder/CMakeLists.txt @@ -30,7 +30,7 @@ add_swift_target_library(swiftRegexBuilder ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/public/RegexParser/CMakeLists.txt b/stdlib/public/RegexParser/CMakeLists.txt index 57b8bc980f6a0..91de92fef3dc5 100644 --- a/stdlib/public/RegexParser/CMakeLists.txt +++ b/stdlib/public/RegexParser/CMakeLists.txt @@ -32,7 +32,7 @@ add_swift_target_library(swift_RegexParser ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/public/StringProcessing/CMakeLists.txt b/stdlib/public/StringProcessing/CMakeLists.txt index c7ad4292e2afb..06103f1ecfe28 100644 --- a/stdlib/public/StringProcessing/CMakeLists.txt +++ b/stdlib/public/StringProcessing/CMakeLists.txt @@ -44,7 +44,7 @@ add_swift_target_library(swift_StringProcessing ${SWIFT_STDLIB_LIBRARY_BUILD_TYP SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl - SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_FREEBSD FreeBSD SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc diff --git a/stdlib/public/Synchronization/CMakeLists.txt b/stdlib/public/Synchronization/CMakeLists.txt index 892d105c3f300..3f83eccfc6a79 100644 --- a/stdlib/public/Synchronization/CMakeLists.txt +++ b/stdlib/public/Synchronization/CMakeLists.txt @@ -123,6 +123,8 @@ add_swift_target_library(swiftSynchronization ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES Android SWIFT_MODULE_DEPENDS_WINDOWS WinSDK + SWIFT_MODULE_DEPENDS_FREEBSD + FreeBSD SWIFT_COMPILE_FLAGS ${SWIFT_SYNCHRNOIZATION_SWIFT_FLAGS} diff --git a/stdlib/public/libexec/swift-backtrace/CMakeLists.txt b/stdlib/public/libexec/swift-backtrace/CMakeLists.txt index fcc200202c4cc..0ce824530ed9d 100644 --- a/stdlib/public/libexec/swift-backtrace/CMakeLists.txt +++ b/stdlib/public/libexec/swift-backtrace/CMakeLists.txt @@ -10,6 +10,7 @@ if(SWIFT_BUILD_SDK_OVERLAY) set(wincrt_sdk CRT WinSDK) set(glibc Glibc) set(musl Musl) + set(freebsd FreeBSD) endif() # Similarly, we only want the Runtime dependency if we're building @@ -58,6 +59,7 @@ add_swift_target_executable(swift-backtrace BUILD_WITH_LIBEXEC SWIFT_MODULE_DEPENDS_WINDOWS ${wincrt_sdk} SWIFT_MODULE_DEPENDS_LINUX ${glibc} SWIFT_MODULE_DEPENDS_LINUX_STATIC ${musl} + SWIFT_MODULE_DEPENDS_FREEBSD ${freebsd} DEPLOYMENT_VERSION_OSX ${osx_deployment_target} @@ -87,6 +89,7 @@ if(static_target_sdks) SWIFT_MODULE_DEPENDS_WINDOWS ${wincrt_sdk} SWIFT_MODULE_DEPENDS_LINUX ${glibc} SWIFT_MODULE_DEPENDS_LINUX_STATIC ${musl} + SWIFT_MODULE_DEPENDS_FREEBSD ${freebsd} DEPLOYMENT_VERSION_OSX ${osx_deployment_target} diff --git a/stdlib/public/libexec/swift-backtrace/Utils.swift b/stdlib/public/libexec/swift-backtrace/Utils.swift index 20e164d5b08c3..3c8333cab084d 100644 --- a/stdlib/public/libexec/swift-backtrace/Utils.swift +++ b/stdlib/public/libexec/swift-backtrace/Utils.swift @@ -22,6 +22,8 @@ import Glibc import Musl #elseif canImport(CRT) import CRT +#elseif canImport(FreeBSD) +import FreeBSD #endif import Swift diff --git a/stdlib/public/libexec/swift-backtrace/main.swift b/stdlib/public/libexec/swift-backtrace/main.swift index 963e192b1b194..f11d862bc8b01 100644 --- a/stdlib/public/libexec/swift-backtrace/main.swift +++ b/stdlib/public/libexec/swift-backtrace/main.swift @@ -20,6 +20,8 @@ import Glibc import Musl #elseif canImport(CRT) import CRT +#elseif canImport(FreeBSD) +import FreeBSD #endif @_spi(Formatting) import Runtime diff --git a/test/AutoDiff/SILOptimizer/pullback_inlining.swift b/test/AutoDiff/SILOptimizer/pullback_inlining.swift index fc0cc7f9f14f9..c31582e18db1d 100644 --- a/test/AutoDiff/SILOptimizer/pullback_inlining.swift +++ b/test/AutoDiff/SILOptimizer/pullback_inlining.swift @@ -11,6 +11,8 @@ import _Differentiation import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #else import Foundation #endif diff --git a/test/AutoDiff/SILOptimizer/vjp_inlining.swift b/test/AutoDiff/SILOptimizer/vjp_inlining.swift index 9f839a6c3afa2..2f82f95f89065 100644 --- a/test/AutoDiff/SILOptimizer/vjp_inlining.swift +++ b/test/AutoDiff/SILOptimizer/vjp_inlining.swift @@ -9,6 +9,8 @@ import _Differentiation #if canImport(Glibc) import Glibc +#elseif canImport(FreeBSD) +import FreeBSD #else import Foundation #endif diff --git a/test/AutoDiff/compiler_crashers_fixed/issue-56600-symbol-in-ir-file-not-tbd-file.swift b/test/AutoDiff/compiler_crashers_fixed/issue-56600-symbol-in-ir-file-not-tbd-file.swift index 7a5e395dd6551..d7195c28431d1 100644 --- a/test/AutoDiff/compiler_crashers_fixed/issue-56600-symbol-in-ir-file-not-tbd-file.swift +++ b/test/AutoDiff/compiler_crashers_fixed/issue-56600-symbol-in-ir-file-not-tbd-file.swift @@ -16,6 +16,8 @@ import _Differentiation import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/AutoDiff/stdlib/tgmath_derivatives.swift.gyb b/test/AutoDiff/stdlib/tgmath_derivatives.swift.gyb index 782c8be6b8cd0..b5a43d563a59d 100644 --- a/test/AutoDiff/stdlib/tgmath_derivatives.swift.gyb +++ b/test/AutoDiff/stdlib/tgmath_derivatives.swift.gyb @@ -11,6 +11,8 @@ import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/AutoDiff/validation-test/custom_derivatives.swift b/test/AutoDiff/validation-test/custom_derivatives.swift index 233c5819f40dd..b0c1951346d39 100644 --- a/test/AutoDiff/validation-test/custom_derivatives.swift +++ b/test/AutoDiff/validation-test/custom_derivatives.swift @@ -10,6 +10,8 @@ import StdlibUnittest import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/AutoDiff/validation-test/separate_tangent_type.swift b/test/AutoDiff/validation-test/separate_tangent_type.swift index 87796d5da6b5a..fd1d92047f872 100644 --- a/test/AutoDiff/validation-test/separate_tangent_type.swift +++ b/test/AutoDiff/validation-test/separate_tangent_type.swift @@ -10,6 +10,8 @@ import StdlibUnittest import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/ClangImporter/availability_returns_twice.swift b/test/ClangImporter/availability_returns_twice.swift index 2df836ca38d2d..bc5c910c119f3 100644 --- a/test/ClangImporter/availability_returns_twice.swift +++ b/test/ClangImporter/availability_returns_twice.swift @@ -17,6 +17,9 @@ #elseif canImport(Glibc) import Glibc typealias JumpBuffer = jmp_buf +#elseif canImport(FreeBSD) + import FreeBSD + typealias JumpBuffer = jmp_buf #else #error("Unsupported platform") #endif diff --git a/test/ClangImporter/clang_builtins.swift b/test/ClangImporter/clang_builtins.swift index 24b83bcd6abd8..fa54229b4924b 100644 --- a/test/ClangImporter/clang_builtins.swift +++ b/test/ClangImporter/clang_builtins.swift @@ -10,6 +10,8 @@ import WASILibc #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_dispatch_dispatchMain_swift_6_mode.swift b/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_dispatch_dispatchMain_swift_6_mode.swift index 89a8ff0ce4036..9fc514c01747c 100644 --- a/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_dispatch_dispatchMain_swift_6_mode.swift +++ b/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_dispatch_dispatchMain_swift_6_mode.swift @@ -24,6 +24,8 @@ import Glibc import Musl #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #endif @main struct Main { diff --git a/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_main_customExecutorOnMain_swift6_mode.swift b/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_main_customExecutorOnMain_swift6_mode.swift index 2e59ff1b639b0..15e49af2be394 100644 --- a/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_main_customExecutorOnMain_swift6_mode.swift +++ b/test/Concurrency/Runtime/actor_assert_precondition_executor_checkIsolated_main_customExecutorOnMain_swift6_mode.swift @@ -38,6 +38,8 @@ import WASILibc #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) +import FreeBSD #endif @available(SwiftStdlib 6.0, *) diff --git a/test/Concurrency/Runtime/actor_recursive_deinit.swift b/test/Concurrency/Runtime/actor_recursive_deinit.swift index 2a05c23a23894..1d9fc730dae08 100644 --- a/test/Concurrency/Runtime/actor_recursive_deinit.swift +++ b/test/Concurrency/Runtime/actor_recursive_deinit.swift @@ -23,6 +23,11 @@ import Glibc typealias ThreadID = pthread_t func getCurrentThreadID() -> ThreadID { pthread_self() } func equalThreadIDs(_ a: ThreadID, _ b: ThreadID) -> Bool { pthread_equal(a, b) != 0 } +#elseif canImport(FreeBSD) +import FreeBSD +typealias ThreadID = pthread_t +func getCurrentThreadID() -> ThreadID { pthread_self() } +func equalThreadIDs(_ a: ThreadID, _ b: ThreadID) -> Bool { pthread_equal(a, b) != 0 } #elseif os(Windows) import WinSDK typealias ThreadID = UInt32 diff --git a/test/Concurrency/Runtime/async.swift b/test/Concurrency/Runtime/async.swift index 9360f32c392d1..c742357f69a29 100644 --- a/test/Concurrency/Runtime/async.swift +++ b/test/Concurrency/Runtime/async.swift @@ -18,6 +18,8 @@ import StdlibUnittest import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #endif var asyncTests = TestSuite("Async") diff --git a/test/Concurrency/Runtime/async_task_executor_default_actor_funcs.swift b/test/Concurrency/Runtime/async_task_executor_default_actor_funcs.swift index cb75f8ecb105b..089a6a273db95 100644 --- a/test/Concurrency/Runtime/async_task_executor_default_actor_funcs.swift +++ b/test/Concurrency/Runtime/async_task_executor_default_actor_funcs.swift @@ -18,6 +18,8 @@ import Darwin import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #endif final class QueueSerialExecutor: SerialExecutor { diff --git a/test/Concurrency/Runtime/async_task_executor_unstructured_task_ownership.swift b/test/Concurrency/Runtime/async_task_executor_unstructured_task_ownership.swift index ae76d31dc55ee..b56e1cd473130 100644 --- a/test/Concurrency/Runtime/async_task_executor_unstructured_task_ownership.swift +++ b/test/Concurrency/Runtime/async_task_executor_unstructured_task_ownership.swift @@ -18,6 +18,8 @@ import Darwin import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #endif final class NaiveQueueExecutor: TaskExecutor { diff --git a/test/Concurrency/Runtime/async_task_locals_copy_to_sync.swift b/test/Concurrency/Runtime/async_task_locals_copy_to_sync.swift index 9ebaf08c40916..0d97f4da9a899 100644 --- a/test/Concurrency/Runtime/async_task_locals_copy_to_sync.swift +++ b/test/Concurrency/Runtime/async_task_locals_copy_to_sync.swift @@ -20,6 +20,8 @@ import Darwin import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #endif enum TL { diff --git a/test/Concurrency/Runtime/async_task_withUnsafeCurrentTask.swift b/test/Concurrency/Runtime/async_task_withUnsafeCurrentTask.swift index 5aa0983468caf..13478130c0246 100644 --- a/test/Concurrency/Runtime/async_task_withUnsafeCurrentTask.swift +++ b/test/Concurrency/Runtime/async_task_withUnsafeCurrentTask.swift @@ -12,6 +12,8 @@ import Glibc import MSVCRT #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #else import Darwin #endif diff --git a/test/Concurrency/Runtime/cancellation_handler.swift b/test/Concurrency/Runtime/cancellation_handler.swift index f21ed50b754b7..3d9254837aff8 100644 --- a/test/Concurrency/Runtime/cancellation_handler.swift +++ b/test/Concurrency/Runtime/cancellation_handler.swift @@ -18,6 +18,8 @@ import WASILibc #elseif os(Windows) import WinSDK +#elseif canImport(FreeBSD) + import FreeBSD #endif class Canary { diff --git a/test/Concurrency/Runtime/data_race_detection_crash.swift b/test/Concurrency/Runtime/data_race_detection_crash.swift index c57eb163f8d27..e0bc126297651 100644 --- a/test/Concurrency/Runtime/data_race_detection_crash.swift +++ b/test/Concurrency/Runtime/data_race_detection_crash.swift @@ -26,6 +26,8 @@ import Darwin import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #endif @MainActor func onMainActor() { diff --git a/test/Concurrency/Runtime/data_race_detection_legacy_warning.swift b/test/Concurrency/Runtime/data_race_detection_legacy_warning.swift index beeb40748fc8a..eea5df1a1a0f7 100644 --- a/test/Concurrency/Runtime/data_race_detection_legacy_warning.swift +++ b/test/Concurrency/Runtime/data_race_detection_legacy_warning.swift @@ -27,6 +27,8 @@ import Darwin import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #endif @MainActor func onMainActor() { diff --git a/test/Concurrency/Runtime/exclusivity.swift b/test/Concurrency/Runtime/exclusivity.swift index 59792b315f8cd..dbdbcc905fc00 100644 --- a/test/Concurrency/Runtime/exclusivity.swift +++ b/test/Concurrency/Runtime/exclusivity.swift @@ -35,6 +35,8 @@ import Glibc import Android #elseif canImport(CRT) import CRT +#elseif canImport(FreeBSD) +import FreeBSD #endif @inlinable diff --git a/test/Concurrency/Runtime/exclusivity_custom_executors.swift b/test/Concurrency/Runtime/exclusivity_custom_executors.swift index 6a8fcc4aae6f3..db3df5d2a9ef2 100644 --- a/test/Concurrency/Runtime/exclusivity_custom_executors.swift +++ b/test/Concurrency/Runtime/exclusivity_custom_executors.swift @@ -30,6 +30,8 @@ import Glibc import Android #elseif canImport(CRT) import CRT +#elseif canImport(FreeBSD) +import FreeBSD #endif @inlinable diff --git a/test/Concurrency/Runtime/executor_deinit3.swift b/test/Concurrency/Runtime/executor_deinit3.swift index ef638cf957ff6..bdd2ac399d3f9 100644 --- a/test/Concurrency/Runtime/executor_deinit3.swift +++ b/test/Concurrency/Runtime/executor_deinit3.swift @@ -16,6 +16,8 @@ import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #endif @available(SwiftStdlib 5.1, *) diff --git a/test/Concurrency/async_task_base_priority.swift b/test/Concurrency/async_task_base_priority.swift index 763ef3ad14a14..3fc5fe4795ca4 100644 --- a/test/Concurrency/async_task_base_priority.swift +++ b/test/Concurrency/async_task_base_priority.swift @@ -28,6 +28,8 @@ import WASILibc #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) +import FreeBSD #endif func loopUntil(priority: TaskPriority) async { diff --git a/test/Distributed/Runtime/distributed_actor_deinit.swift b/test/Distributed/Runtime/distributed_actor_deinit.swift index 935ed891198eb..a8d91f3fadb18 100644 --- a/test/Distributed/Runtime/distributed_actor_deinit.swift +++ b/test/Distributed/Runtime/distributed_actor_deinit.swift @@ -29,6 +29,11 @@ import Glibc typealias ThreadID = pthread_t func getCurrentThreadID() -> ThreadID { pthread_self() } func equalThreadIDs(_ a: ThreadID, _ b: ThreadID) -> Bool { pthread_equal(a, b) != 0 } +#elseif canImport(FreeBSD) +import FreeBSD +typealias ThreadID = pthread_t +func getCurrentThreadID() -> ThreadID { pthread_self() } +func equalThreadIDs(_ a: ThreadID, _ b: ThreadID) -> Bool { pthread_equal(a, b) != 0 } #elseif os(Windows) import WinSDK typealias ThreadID = UInt32 diff --git a/test/IRGen/builtin_math.swift b/test/IRGen/builtin_math.swift index 956b2e2e0c5b2..3ed94c7af6587 100644 --- a/test/IRGen/builtin_math.swift +++ b/test/IRGen/builtin_math.swift @@ -10,6 +10,8 @@ import Android #elseif os(Windows) import CRT +#elseif os(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/IRGen/sanitize_coverage.swift b/test/IRGen/sanitize_coverage.swift index e7090acaab692..fa76dab056de5 100644 --- a/test/IRGen/sanitize_coverage.swift +++ b/test/IRGen/sanitize_coverage.swift @@ -19,6 +19,8 @@ import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/Interpreter/SDK/libc.swift b/test/Interpreter/SDK/libc.swift index c68e1f5be7db2..ed2252bc370b0 100644 --- a/test/Interpreter/SDK/libc.swift +++ b/test/Interpreter/SDK/libc.swift @@ -13,6 +13,8 @@ import Darwin #elseif canImport(Glibc) import Glibc +#elseif canImport(FreeBSD) + import FreeBSD #elseif os(Windows) import CRT diff --git a/test/Interpreter/dynamicReplacement_property_observer.swift b/test/Interpreter/dynamicReplacement_property_observer.swift index bbf47ecf410fe..06f6fed38dc05 100644 --- a/test/Interpreter/dynamicReplacement_property_observer.swift +++ b/test/Interpreter/dynamicReplacement_property_observer.swift @@ -19,6 +19,8 @@ import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #elseif os(Windows) import CRT import WinSDK diff --git a/test/Interpreter/dynamic_replacement.swift b/test/Interpreter/dynamic_replacement.swift index 426532a1951d5..48ffdf90f1495 100644 --- a/test/Interpreter/dynamic_replacement.swift +++ b/test/Interpreter/dynamic_replacement.swift @@ -114,6 +114,8 @@ import StdlibUnittest #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/Interpreter/dynamic_replacement_chaining.swift b/test/Interpreter/dynamic_replacement_chaining.swift index 940a361072bd2..f9f1c8f3f746d 100644 --- a/test/Interpreter/dynamic_replacement_chaining.swift +++ b/test/Interpreter/dynamic_replacement_chaining.swift @@ -35,6 +35,8 @@ import StdlibUnittest #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/Interpreter/dynamic_replacement_without_previous_calls.swift b/test/Interpreter/dynamic_replacement_without_previous_calls.swift index 233f52a6aa572..bd98348450213 100644 --- a/test/Interpreter/dynamic_replacement_without_previous_calls.swift +++ b/test/Interpreter/dynamic_replacement_without_previous_calls.swift @@ -21,6 +21,8 @@ import StdlibUnittest #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/Prototypes/BigInt.swift b/test/Prototypes/BigInt.swift index ca7725cede255..4ba51eedcbc5d 100644 --- a/test/Prototypes/BigInt.swift +++ b/test/Prototypes/BigInt.swift @@ -26,6 +26,8 @@ import StdlibUnittest import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/SILOptimizer/c_string_optimization.swift b/test/SILOptimizer/c_string_optimization.swift index 9faea8afec9d2..e585645471627 100644 --- a/test/SILOptimizer/c_string_optimization.swift +++ b/test/SILOptimizer/c_string_optimization.swift @@ -14,6 +14,8 @@ import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/Sanitizers/asan/recover.swift b/test/Sanitizers/asan/recover.swift index 70aafc420ce4e..1d80fab0f3b77 100644 --- a/test/Sanitizers/asan/recover.swift +++ b/test/Sanitizers/asan/recover.swift @@ -33,6 +33,8 @@ // work on other Platforms (e.g. Microsoft Windows). #if canImport(Glibc) import Glibc +#elseif canImport(FreeBSD) + import FreeBSD #else import Darwin.C #endif diff --git a/test/Sanitizers/tsan/basic_future.swift b/test/Sanitizers/tsan/basic_future.swift index d14dbdd89bb3e..2f94b16996239 100644 --- a/test/Sanitizers/tsan/basic_future.swift +++ b/test/Sanitizers/tsan/basic_future.swift @@ -10,6 +10,8 @@ import Dispatch #if canImport(Darwin) import Darwin +#elseif canImport(FreeBSD) +import FreeBSD #elseif canImport(Glibc) import Glibc #endif diff --git a/test/Sanitizers/tsan/norace-block-release.swift b/test/Sanitizers/tsan/norace-block-release.swift index 3d2b2a3b4c0bd..ecf3ba2bcbd9a 100644 --- a/test/Sanitizers/tsan/norace-block-release.swift +++ b/test/Sanitizers/tsan/norace-block-release.swift @@ -15,6 +15,8 @@ import Dispatch #if canImport(Darwin) import Darwin +#elseif canImport(FreeBSD) + import FreeBSD #elseif canImport(Glibc) import Glibc #else diff --git a/test/Sanitizers/tsan/norace-deinit-run-time.swift b/test/Sanitizers/tsan/norace-deinit-run-time.swift index 1c2d585a7046d..e27a853d7133b 100644 --- a/test/Sanitizers/tsan/norace-deinit-run-time.swift +++ b/test/Sanitizers/tsan/norace-deinit-run-time.swift @@ -15,6 +15,8 @@ import Dispatch #if canImport(Darwin) import Darwin +#elseif canImport(FreeBSD) + import FreeBSD #elseif canImport(Glibc) import Glibc #else diff --git a/test/Sanitizers/tsan/tsan.swift b/test/Sanitizers/tsan/tsan.swift index 45894a33970af..138a93c9f1d50 100644 --- a/test/Sanitizers/tsan/tsan.swift +++ b/test/Sanitizers/tsan/tsan.swift @@ -20,6 +20,8 @@ import Glibc #elseif os(Windows) import CRT +#elseif os(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/multifile/protocol-conformance-redundant.swift b/test/multifile/protocol-conformance-redundant.swift index 9a8814221e264..5b9c3c3809194 100644 --- a/test/multifile/protocol-conformance-redundant.swift +++ b/test/multifile/protocol-conformance-redundant.swift @@ -19,6 +19,8 @@ import Darwin import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) +import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/FloatConstants.swift b/test/stdlib/FloatConstants.swift index 7597c7cb70916..ca9d6f2061eda 100644 --- a/test/stdlib/FloatConstants.swift +++ b/test/stdlib/FloatConstants.swift @@ -10,6 +10,8 @@ import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/MathConstants.swift b/test/stdlib/MathConstants.swift index 1257ef12ff7aa..8d48a0a12ea5a 100644 --- a/test/stdlib/MathConstants.swift +++ b/test/stdlib/MathConstants.swift @@ -10,6 +10,8 @@ import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/POSIX.swift b/test/stdlib/POSIX.swift index 42b9edb5f4123..9e52827a0d1d3 100644 --- a/test/stdlib/POSIX.swift +++ b/test/stdlib/POSIX.swift @@ -11,6 +11,8 @@ import SwiftPrivateLibcExtras import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/PrintFloat.swift.gyb b/test/stdlib/PrintFloat.swift.gyb index 5377a6d2b2467..f68529adba280 100644 --- a/test/stdlib/PrintFloat.swift.gyb +++ b/test/stdlib/PrintFloat.swift.gyb @@ -23,6 +23,8 @@ import SwiftPrivateLibcExtras import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/Runtime.swift.gyb b/test/stdlib/Runtime.swift.gyb index 7846a5bc49138..fde5521d45c86 100644 --- a/test/stdlib/Runtime.swift.gyb +++ b/test/stdlib/Runtime.swift.gyb @@ -23,6 +23,8 @@ import SwiftShims #elseif os(Windows) import CRT import WinSDK +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/VarArgs.swift b/test/stdlib/VarArgs.swift index b3f65d0bd6b03..91a7dc1c699d0 100644 --- a/test/stdlib/VarArgs.swift +++ b/test/stdlib/VarArgs.swift @@ -37,6 +37,9 @@ runAllTests() #else typealias CGFloat = Float #endif +#elseif canImport(FreeBSD) + import FreeBSD + typealias CGFloat = Double #else #error("Unsupported platform") #endif diff --git a/test/stdlib/mmap.swift b/test/stdlib/mmap.swift index 2695875543911..721733f9b69f6 100644 --- a/test/stdlib/mmap.swift +++ b/test/stdlib/mmap.swift @@ -12,6 +12,8 @@ import StdlibUnittest import Android // MAP_FAILED is not available on android. let MAP_FAILED = UnsafeMutableRawPointer(bitPattern: -1) +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/tgmath.swift.gyb b/test/stdlib/tgmath.swift.gyb index fe7afe5831faf..03bc08746780f 100644 --- a/test/stdlib/tgmath.swift.gyb +++ b/test/stdlib/tgmath.swift.gyb @@ -29,6 +29,8 @@ import WASILibc #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/test/stdlib/tgmath_optimized.swift b/test/stdlib/tgmath_optimized.swift index 369a7e8ab1266..e7a13cfcc98bf 100644 --- a/test/stdlib/tgmath_optimized.swift +++ b/test/stdlib/tgmath_optimized.swift @@ -14,6 +14,8 @@ import Android #elseif os(Windows) import CRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/tools/swift-plugin-server/Sources/SwiftInProcPluginServer/InProcPluginServer.swift b/tools/swift-plugin-server/Sources/SwiftInProcPluginServer/InProcPluginServer.swift index 2902f8c200eba..da182bdfdba63 100644 --- a/tools/swift-plugin-server/Sources/SwiftInProcPluginServer/InProcPluginServer.swift +++ b/tools/swift-plugin-server/Sources/SwiftInProcPluginServer/InProcPluginServer.swift @@ -23,6 +23,8 @@ import Bionic import Musl #elseif canImport(ucrt) import ucrt +#elseif canImport(FreeBSD) +import FreeBSD #else #error("'malloc' not found") #endif diff --git a/validation-test/Sanitizers/fuzzer.swift b/validation-test/Sanitizers/fuzzer.swift index 2443f30337b97..33b2cd4bbca0a 100644 --- a/validation-test/Sanitizers/fuzzer.swift +++ b/validation-test/Sanitizers/fuzzer.swift @@ -15,6 +15,8 @@ import Darwin.C import Glibc #elseif canImport(MSVCRT) import MSVCRT +#elseif canImport(FreeBSD) +import FreeBSD #endif @_cdecl("LLVMFuzzerTestOneInput") diff --git a/validation-test/Sanitizers/tsan-inout.swift b/validation-test/Sanitizers/tsan-inout.swift index 94b886da31236..9fdb2066848d7 100644 --- a/validation-test/Sanitizers/tsan-inout.swift +++ b/validation-test/Sanitizers/tsan-inout.swift @@ -15,6 +15,8 @@ import Darwin #elseif canImport(Glibc) import Glibc +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/StdlibUnittest/AtomicInt.swift b/validation-test/StdlibUnittest/AtomicInt.swift index 6cb4e039f67a5..d200a4fe00c1c 100644 --- a/validation-test/StdlibUnittest/AtomicInt.swift +++ b/validation-test/StdlibUnittest/AtomicInt.swift @@ -15,6 +15,8 @@ import StdlibUnittest import Glibc #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildCrashesDuringShutdown.swift b/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildCrashesDuringShutdown.swift index 0408bc81bf5ee..e7a48d4154f8c 100644 --- a/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildCrashesDuringShutdown.swift +++ b/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildCrashesDuringShutdown.swift @@ -12,6 +12,8 @@ import StdlibUnittest import MSVCRT #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildExitsDuringShutdown.swift b/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildExitsDuringShutdown.swift index e024a0e070810..8d2cc1d3a74e6 100644 --- a/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildExitsDuringShutdown.swift +++ b/validation-test/StdlibUnittest/ChildProcessShutdown/FailIfChildExitsDuringShutdown.swift @@ -10,6 +10,8 @@ import StdlibUnittest import MSVCRT #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/StdlibUnittest/ChildProcessShutdown/PassIfChildCrashedDuringTestExecution.swift b/validation-test/StdlibUnittest/ChildProcessShutdown/PassIfChildCrashedDuringTestExecution.swift index 8687bde2c1843..a2a76d43cc13e 100644 --- a/validation-test/StdlibUnittest/ChildProcessShutdown/PassIfChildCrashedDuringTestExecution.swift +++ b/validation-test/StdlibUnittest/ChildProcessShutdown/PassIfChildCrashedDuringTestExecution.swift @@ -10,6 +10,8 @@ import StdlibUnittest import MSVCRT #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/StdlibUnittest/ChildProcessShutdown/RequireOwnProcess.swift b/validation-test/StdlibUnittest/ChildProcessShutdown/RequireOwnProcess.swift index a74e4a25165d8..5f1de307053aa 100644 --- a/validation-test/StdlibUnittest/ChildProcessShutdown/RequireOwnProcess.swift +++ b/validation-test/StdlibUnittest/ChildProcessShutdown/RequireOwnProcess.swift @@ -10,6 +10,8 @@ import StdlibUnittest import MSVCRT #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/StdlibUnittest/RaceTest.swift b/validation-test/StdlibUnittest/RaceTest.swift index 59105ea325146..be4901da9ba6a 100644 --- a/validation-test/StdlibUnittest/RaceTest.swift +++ b/validation-test/StdlibUnittest/RaceTest.swift @@ -12,6 +12,8 @@ import StdlibUnittest import Glibc #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/StdlibUnittest/Stdin.swift b/validation-test/StdlibUnittest/Stdin.swift index a6c144e56eabd..1ddac766eccd9 100644 --- a/validation-test/StdlibUnittest/Stdin.swift +++ b/validation-test/StdlibUnittest/Stdin.swift @@ -12,6 +12,8 @@ import StdlibUnittest import MSVCRT #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/stdlib/POSIXErrorCode.swift b/validation-test/stdlib/POSIXErrorCode.swift index 5f126a314ffcb..6f384683e67d7 100644 --- a/validation-test/stdlib/POSIXErrorCode.swift +++ b/validation-test/stdlib/POSIXErrorCode.swift @@ -12,6 +12,8 @@ import StdlibUnittest import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif diff --git a/validation-test/stdlib/String.swift b/validation-test/stdlib/String.swift index cc2219af7e73f..b8dbd9f2fa3ab 100644 --- a/validation-test/stdlib/String.swift +++ b/validation-test/stdlib/String.swift @@ -1237,6 +1237,8 @@ StringTests.test("Conversions") { import Glibc #elseif canImport(Android) import Android +#elseif canImport(FreeBSD) + import FreeBSD #endif StringTests.test("lowercased()") { diff --git a/validation-test/stdlib/StringSlicesConcurrentAppend.swift b/validation-test/stdlib/StringSlicesConcurrentAppend.swift index 041e0e73eb5c6..6a406dac668b5 100644 --- a/validation-test/stdlib/StringSlicesConcurrentAppend.swift +++ b/validation-test/stdlib/StringSlicesConcurrentAppend.swift @@ -10,6 +10,8 @@ import SwiftPrivateThreadExtras import Glibc #elseif os(Windows) import MSVCRT +#elseif canImport(FreeBSD) + import FreeBSD #else #error("Unsupported platform") #endif