Skip to content

Commit 6ad2fe5

Browse files
authored
Fix SwiftPM build dispatch include path on Windows (swiftlang#5033) (swiftlang#5035)
1 parent 28316c7 commit 6ad2fe5

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

CMakeLists.txt

+8-7
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,15 @@ endif()
9696
find_package(dispatch CONFIG)
9797
if(NOT dispatch_FOUND)
9898
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
99-
set(DISPATCH_INCLUDE_PATH "/usr/lib/swift" CACHE STRING "A path to where you can find libdispatch headers")
100-
message("-- dispatch_DIR not found, using dispatch from SDK at ${DISPATCH_INCLUDE_PATH}")
101-
list(APPEND _Foundation_common_build_flags
102-
"-I${DISPATCH_INCLUDE_PATH}"
103-
"-I${DISPATCH_INCLUDE_PATH}/Block")
104-
else()
105-
message(FATAL_ERROR "-- dispatch_DIR is required on this platform")
99+
set(DEFAULT_DISPATCH_INCLUDE_PATH "/usr/lib/swift")
100+
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
101+
set(DEFAULT_DISPATCH_INCLUDE_PATH "$ENV{SDKROOT}usr/include")
106102
endif()
103+
set(DISPATCH_INCLUDE_PATH "${DEFAULT_DISPATCH_INCLUDE_PATH}" CACHE STRING "A path to where you can find libdispatch headers")
104+
message("-- dispatch_DIR not found, using dispatch from SDK at ${DISPATCH_INCLUDE_PATH}")
105+
list(APPEND _Foundation_common_build_flags
106+
"-I${DISPATCH_INCLUDE_PATH}"
107+
"-I${DISPATCH_INCLUDE_PATH}/Block")
107108
endif()
108109
find_package(LibXml2 REQUIRED)
109110
find_package(CURL REQUIRED)

Package.swift

+19-13
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,25 @@
33

44
import PackageDescription
55

6-
var dispatchIncludeFlags: CSetting
6+
var dispatchIncludeFlags: [CSetting]
77
if let environmentPath = Context.environment["DISPATCH_INCLUDE_PATH"] {
8-
dispatchIncludeFlags = .unsafeFlags([
8+
dispatchIncludeFlags = [.unsafeFlags([
99
"-I\(environmentPath)",
1010
"-I\(environmentPath)/Block"
11-
])
11+
])]
1212
} else {
13-
dispatchIncludeFlags = .unsafeFlags([
14-
"-I/usr/lib/swift",
15-
"-I/usr/lib/swift/Block"
16-
], .when(platforms: [.linux, .android]))
13+
dispatchIncludeFlags = [
14+
.unsafeFlags([
15+
"-I/usr/lib/swift",
16+
"-I/usr/lib/swift/Block"
17+
], .when(platforms: [.linux, .android]))
18+
]
19+
if let sdkRoot = Context.environment["SDKROOT"] {
20+
dispatchIncludeFlags.append(.unsafeFlags([
21+
"-I\(sdkRoot)usr\\include",
22+
"-I\(sdkRoot)usr\\include\\Block",
23+
], .when(platforms: [.windows])))
24+
}
1725
}
1826

1927
let coreFoundationBuildSettings: [CSetting] = [
@@ -43,9 +51,8 @@ let coreFoundationBuildSettings: [CSetting] = [
4351
"-include",
4452
"\(Context.packageDirectory)/Sources/CoreFoundation/internalInclude/CoreFoundation_Prefix.h",
4553
// /EHsc for Windows
46-
]),
47-
dispatchIncludeFlags
48-
]
54+
])
55+
] + dispatchIncludeFlags
4956

5057
// For _CFURLSessionInterface, _CFXMLInterface
5158
let interfaceBuildSettings: [CSetting] = [
@@ -71,9 +78,8 @@ let interfaceBuildSettings: [CSetting] = [
7178
"-fno-common",
7279
"-fcf-runtime-abi=swift"
7380
// /EHsc for Windows
74-
]),
75-
dispatchIncludeFlags
76-
]
81+
])
82+
] + dispatchIncludeFlags
7783

7884
let swiftBuildSettings: [SwiftSetting] = [
7985
.define("DEPLOYMENT_RUNTIME_SWIFT"),

0 commit comments

Comments
 (0)