mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This nudges the Glibc modulemap just enough to get SwiftPM and later targets building. Without it, Swift tries to import the signal hander APIs through CDispatch instead of Glibc. CDispatch shouldn't be directly imported, so recommending that is nonsensical. This is not a full solution for all headers, but meant to perturb the module machinery sufficiently that it pulls signal.h into glibc correctly. Works around: ``` Swift-Project/swiftpm/Sources/Basics/Cancellator.swift:79:24: error: property '__sigaction_u' is not available due to missing import of defining module 'CDispatch' [#MemberImportVisibility] ```
65 lines
1.8 KiB
Plaintext
65 lines
1.8 KiB
Plaintext
//===--- glibc.modulemap.gyb ----------------------------------------------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// This is a semi-complete modulemap that maps glibc's headers in a roughly
|
|
/// similar way to the Darwin SDK modulemap. We do not take care to list every
|
|
/// single header which may be included by a particular submodule, so there can
|
|
/// still be issues if imported into the same context as one in which someone
|
|
/// included those headers directly.
|
|
///
|
|
/// It's not named just Glibc so that it doesn't conflict in the event of a
|
|
/// future official glibc modulemap.
|
|
module SwiftGlibc [system] {
|
|
% if CMAKE_SDK in ["LINUX", "FREEBSD", "OPENBSD"]:
|
|
link "m"
|
|
% end
|
|
% if CMAKE_SDK in ["LINUX", "FREEBSD", "OPENBSD", "CYGWIN"]:
|
|
link "pthread"
|
|
// FIXME: util contains rarely used functions and not usually needed. Unfortunately
|
|
// link directive doesn't work in the submodule yet.
|
|
% if CMAKE_SDK != "OPENBSD":
|
|
link "util"
|
|
% end
|
|
% end
|
|
|
|
% if CMAKE_SDK not in ["FREEBSD", "OPENBSD", "HAIKU"]:
|
|
link "dl"
|
|
% end
|
|
|
|
% if CMAKE_SDK == "HAIKU":
|
|
link "network"
|
|
link "bsd"
|
|
link "execinfo"
|
|
% end
|
|
|
|
header "SwiftGlibc.h"
|
|
|
|
// <assert.h>'s use of NDEBUG requires textual inclusion.
|
|
textual header "assert.h"
|
|
|
|
export *
|
|
}
|
|
|
|
% if CMAKE_SDK == "FREEBSD":
|
|
module signal_h [system] {
|
|
config_macros _BSD_VISIBLE, _POSIX_VISIBLE
|
|
header "signal.h"
|
|
export *
|
|
}
|
|
% end
|
|
|
|
module CUUID [system] {
|
|
header "uuid/uuid.h"
|
|
link "uuid"
|
|
export *
|
|
}
|