Skip to content

Commit 30d2125

Browse files
committed
Add a PackageExtension module and library (analogous to PackageDescription). This contains the APIs that extensions can use.
1 parent c33ad36 commit 30d2125

File tree

5 files changed

+425
-0
lines changed

5 files changed

+425
-0
lines changed

Package.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ let package = Package(
9191
targets: ["PackageDescription"]
9292
),
9393

94+
.library(
95+
name: "PackageExtension",
96+
type: .dynamic,
97+
targets: ["PackageExtension"]
98+
),
99+
94100
.library(
95101
name: "PackageCollectionsModel",
96102
targets: ["PackageCollectionsModel"]
@@ -107,6 +113,9 @@ let package = Package(
107113
swiftSettings: [
108114
.define("PACKAGE_DESCRIPTION_4_2"),
109115
]),
116+
117+
.target(
118+
name: "PackageExtension"),
110119

111120
// MARK: SwiftPM specific support libraries
112121

Sources/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ add_subdirectory(PackageCollections)
1414
add_subdirectory(PackageCollectionsModel)
1515
add_subdirectory(PackageCollectionsSigning)
1616
add_subdirectory(PackageDescription)
17+
add_subdirectory(PackageExtension)
1718
add_subdirectory(PackageGraph)
1819
add_subdirectory(PackageLoading)
1920
add_subdirectory(PackageModel)
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# This source file is part of the Swift.org open source project
2+
#
3+
# Copyright (c) 2021 Apple Inc. and the Swift project authors
4+
# Licensed under Apache License v2.0 with Runtime Library Exception
5+
#
6+
# See http://swift.org/LICENSE.txt for license information
7+
# See http://swift.org/CONTRIBUTORS.txt for Swift project authors
8+
9+
add_library(PackageExtension
10+
PackageExtension.swift)
11+
12+
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
13+
set(SWIFT_INTERFACE_PATH ${CMAKE_BINARY_DIR}/pm/PackageExtension.swiftinterface)
14+
target_compile_options(PackageExtension PUBLIC
15+
$<$<COMPILE_LANGUAGE:Swift>:-enable-library-evolution>)
16+
target_compile_options(PackageExtension PUBLIC
17+
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${SWIFT_INTERFACE_PATH}>)
18+
target_link_options(PackageExtension PRIVATE
19+
"SHELL:-Xlinker -install_name -Xlinker @rpath/libPackageExtension.dylib")
20+
endif()
21+
22+
set_target_properties(PackageExtension PROPERTIES
23+
Swift_MODULE_NAME PackageExtension
24+
Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/pm
25+
INSTALL_NAME_DIR \\@rpath
26+
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm
27+
OUTPUT_NAME PackageExtension
28+
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm
29+
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm
30+
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm
31+
)
32+
33+
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
34+
if(Foundation_FOUND)
35+
target_link_libraries(PackageExtension PRIVATE
36+
Foundation)
37+
endif()
38+
target_link_options(PackageExtension PRIVATE
39+
"SHELL:-no-toolchain-stdlib-rpath")
40+
set_target_properties(PackageExtension PROPERTIES
41+
BUILD_WITH_INSTALL_RPATH TRUE
42+
INSTALL_RPATH "$ORIGIN/../../$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>")
43+
endif()
44+
45+
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
46+
install(FILES
47+
${CMAKE_BINARY_DIR}/pm/PackageExtension.swiftinterface
48+
${CMAKE_BINARY_DIR}/pm/PackageExtension.swiftdoc
49+
DESTINATION lib/swift/pm
50+
)
51+
else()
52+
install(FILES
53+
${CMAKE_BINARY_DIR}/pm/PackageExtension.swiftmodule
54+
${CMAKE_BINARY_DIR}/pm/PackageExtension.swiftdoc
55+
DESTINATION lib/swift/pm
56+
)
57+
endif()
58+
59+
install(TARGETS PackageExtension
60+
DESTINATION lib/swift/pm)

0 commit comments

Comments
 (0)