Skip to content

Temporarily revert the 5.5 merge of unifying PackageDescription 4.0 and 4.2+ since it broke Windows #3554

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 8 additions & 14 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -113,25 +113,19 @@ let package = Package(
),
],
targets: [
// The `PackageDescription` target provides the API that is available
// to `Package.swift` manifests. Here we build a debug version of the
// library; the bootstrap scripts build the deployable version.
// The `PackageDescription` targets define the API which is available to
// the `Package.swift` manifest files. We build the latest API version
// here which is used when building and running swiftpm without the
// bootstrap script.
.target(
/** Package Definition API */
name: "PackageDescription",
swiftSettings: [
.unsafeFlags(["-package-description-version", "999.0"]),
.unsafeFlags(["-enable-library-evolution"])
.define("PACKAGE_DESCRIPTION_4_2"),
]),

// The `PackagePlugin` target provides the API that is available to
// plugin scripts. Here we build a debug version of the library; the
// bootstrap scripts build the deployable version.

.target(
name: "PackagePlugin",
swiftSettings: [
.unsafeFlags(["-package-description-version", "999.0"]),
.unsafeFlags(["-enable-library-evolution"])
]),
name: "PackagePlugin"),

// MARK: SwiftPM specific support libraries

Expand Down
122 changes: 62 additions & 60 deletions Sources/PackageDescription/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,73 +1,75 @@
# This source file is part of the Swift.org open source project
#
# Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors
# Copyright (c) 2014 - 2019 Apple Inc. and the Swift project authors
# Licensed under Apache License v2.0 with Runtime Library Exception
#
# See http://swift.org/LICENSE.txt for license information
# See http://swift.org/CONTRIBUTORS.txt for Swift project authors

add_library(PackageDescription
BuildSettings.swift
LanguageStandardSettings.swift
PackageDescription.swift
PackageDependency.swift
PackageRequirement.swift
Product.swift
Resource.swift
SupportedPlatforms.swift
Target.swift
Version.swift
Version+StringLiteralConvertible.swift)
foreach(PACKAGE_DESCRIPTION_VERSION 4 4_2)
add_library(PD${PACKAGE_DESCRIPTION_VERSION}
BuildSettings.swift
LanguageStandardSettings.swift
PackageDescription.swift
PackageDependency.swift
PackageRequirement.swift
Product.swift
Resource.swift
SupportedPlatforms.swift
Target.swift
Version.swift
Version+StringLiteralConvertible.swift)

target_compile_options(PackageDescription PUBLIC
$<$<COMPILE_LANGUAGE:Swift>:-package-description-version$<SEMICOLON>999.0>)
target_compile_options(PackageDescription PUBLIC
$<$<COMPILE_LANGUAGE:Swift>:-enable-library-evolution>)
target_compile_definitions(PD${PACKAGE_DESCRIPTION_VERSION} PRIVATE
PACKAGE_DESCRIPTION_${PACKAGE_DESCRIPTION_VERSION})

if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
set(SWIFT_INTERFACE_PATH ${CMAKE_BINARY_DIR}/pm/ManifestAPI/PackageDescription.swiftinterface)
target_compile_options(PackageDescription PUBLIC
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${SWIFT_INTERFACE_PATH}>)
target_link_options(PackageDescription PRIVATE
"SHELL:-Xlinker -install_name -Xlinker @rpath/libPackageDescription.dylib")
endif()
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
set(SWIFT_INTERFACE_PATH ${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}/PackageDescription.swiftinterface)
target_compile_options(PD${PACKAGE_DESCRIPTION_VERSION} PUBLIC
$<$<COMPILE_LANGUAGE:Swift>:-enable-library-evolution>)
target_compile_options(PD${PACKAGE_DESCRIPTION_VERSION} PUBLIC
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${SWIFT_INTERFACE_PATH}>)
target_link_options(PD${PACKAGE_DESCRIPTION_VERSION} PRIVATE
"SHELL:-Xlinker -install_name -Xlinker @rpath/libPackageDescription.dylib")
endif()

set_target_properties(PackageDescription PROPERTIES
Swift_MODULE_NAME PackageDescription
Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/pm/ManifestAPI
INSTALL_NAME_DIR \\@rpath
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/ManifestAPI
OUTPUT_NAME PackageDescription
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/ManifestAPI
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/ManifestAPI
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/ManifestAPI
)
set_target_properties(PD${PACKAGE_DESCRIPTION_VERSION} PROPERTIES
Swift_MODULE_NAME PackageDescription
Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}
INSTALL_NAME_DIR \\@rpath
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}
OUTPUT_NAME PackageDescription
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}
)

if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
if(Foundation_FOUND)
target_link_libraries(PackageDescription PRIVATE
Foundation)
endif()
target_link_options(PackageDescription PRIVATE
"SHELL:-no-toolchain-stdlib-rpath")
set_target_properties(PackageDescription PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "$ORIGIN/../../$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>")
endif()
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
if(Foundation_FOUND)
target_link_libraries(PD${PACKAGE_DESCRIPTION_VERSION} PRIVATE
Foundation)
endif()
target_link_options(PD${PACKAGE_DESCRIPTION_VERSION} PRIVATE
"SHELL:-no-toolchain-stdlib-rpath")
set_target_properties(PD${PACKAGE_DESCRIPTION_VERSION} PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "$ORIGIN/../../$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>")
endif()

if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
install(FILES
${CMAKE_BINARY_DIR}/pm/ManifestAPI/PackageDescription.swiftinterface
${CMAKE_BINARY_DIR}/pm/ManifestAPI/PackageDescription.swiftdoc
DESTINATION lib/swift/pm/ManifestAPI
)
else()
install(FILES
${CMAKE_BINARY_DIR}/pm/ManifestAPI/PackageDescription.swiftmodule
${CMAKE_BINARY_DIR}/pm/ManifestAPI/PackageDescription.swiftdoc
DESTINATION lib/swift/pm/ManifestAPI
)
endif()
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
install(FILES
${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}/PackageDescription.swiftinterface
${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}/PackageDescription.swiftdoc
DESTINATION lib/swift/pm/${PACKAGE_DESCRIPTION_VERSION}
)
else()
install(FILES
${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}/PackageDescription.swiftmodule
${CMAKE_BINARY_DIR}/pm/${PACKAGE_DESCRIPTION_VERSION}/PackageDescription.swiftdoc
DESTINATION lib/swift/pm/${PACKAGE_DESCRIPTION_VERSION}
)
endif()

install(TARGETS PackageDescription
DESTINATION lib/swift/pm/ManifestAPI)
install(TARGETS PD${PACKAGE_DESCRIPTION_VERSION}
DESTINATION lib/swift/pm/${PACKAGE_DESCRIPTION_VERSION})
endforeach()
2 changes: 2 additions & 0 deletions Sources/PackageDescription/LanguageStandardSettings.swift
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ public enum CXXLanguageStandard: String, Encodable {
case gnucxx20 = "gnu++20"
}

#if !PACKAGE_DESCRIPTION_4
/// The version of the Swift language to use for compiling Swift sources in the package.
public enum SwiftVersion {
@available(_PackageDescription, introduced: 4, obsoleted: 5)
Expand Down Expand Up @@ -186,3 +187,4 @@ extension SwiftVersion: Encodable {
try container.encode(value)
}
}
#endif
22 changes: 20 additions & 2 deletions Sources/PackageDescription/PackageDependency.swift
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,11 @@ extension Package.Dependency {
url: String,
_ range: Range<Version>
) -> Package.Dependency {
#if PACKAGE_DESCRIPTION_4
return .init(name: nil, url: url, requirement: .rangeItem(range))
#else
return .init(name: nil, url: url, requirement: ._rangeItem(range))
#endif
}

/// Adds a package dependency starting with a specific minimum version, up to
Expand All @@ -168,7 +172,11 @@ extension Package.Dependency {
url: String,
_ range: Range<Version>
) -> Package.Dependency {
#if PACKAGE_DESCRIPTION_4
return .init(name: name, url: url, requirement: .rangeItem(range))
#else
return .init(name: name, url: url, requirement: ._rangeItem(range))
#endif
}

/// Adds a package dependency starting with a specific minimum version, going
Expand All @@ -194,7 +202,11 @@ extension Package.Dependency {
upper.major, upper.minor, upper.patch + 1,
prereleaseIdentifiers: upper.prereleaseIdentifiers,
buildMetadataIdentifiers: upper.buildMetadataIdentifiers)
#if PACKAGE_DESCRIPTION_4
return .init(name: nil, url: url, requirement: .rangeItem(range.lowerBound..<upperBound))
#else
return .init(name: nil, url: url, requirement: ._rangeItem(range.lowerBound..<upperBound))
#endif
}

/// Adds a package dependency starting with a specific minimum version, going
Expand All @@ -221,9 +233,14 @@ extension Package.Dependency {
upper.major, upper.minor, upper.patch + 1,
prereleaseIdentifiers: upper.prereleaseIdentifiers,
buildMetadataIdentifiers: upper.buildMetadataIdentifiers)
#if PACKAGE_DESCRIPTION_4
return .init(name: name, url: url, requirement: .rangeItem(range.lowerBound..<upperBound))
#else
return .init(name: name, url: url, requirement: ._rangeItem(range.lowerBound..<upperBound))
#endif
}

#if !PACKAGE_DESCRIPTION_4
/// Adds a package dependency to a local package on the filesystem.
///
/// The Swift Package Manager uses the package dependency as-is
Expand All @@ -236,7 +253,7 @@ extension Package.Dependency {
public static func package(
path: String
) -> Package.Dependency {
return .init(name: nil, url: path, requirement: .localPackageItem)
return .init(name: nil, url: path, requirement: ._localPackageItem)
}

/// Adds a package dependency to a local package on the filesystem.
Expand All @@ -254,8 +271,9 @@ extension Package.Dependency {
name: String? = nil,
path: String
) -> Package.Dependency {
return .init(name: name, url: path, requirement: .localPackageItem)
return .init(name: name, url: path, requirement: ._localPackageItem)
}
#endif
}

// Mark common APIs used by mistake as unavailable to provide better error messages.
Expand Down
Loading