Skip to content

Commit 8d20b9b

Browse files
authored
Merge pull request #618 from madsmtm/dependency-target-cfgs
Emit `target_os = ...` cfgs on framework dependencies
2 parents 648b388 + 3bdc9bb commit 8d20b9b

File tree

48 files changed

+605
-179
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+605
-179
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ env:
5151
FRAMEWORKS_MACOS_12: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-business-chat --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit
5252
FRAMEWORKS_MACOS_13: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-background-assets --package=objc2-business-chat --package=objc2-call-kit --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-fx --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-screen-capture-kit --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit
5353
FRAMEWORKS_MACOS_14: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-background-assets --package=objc2-business-chat --package=objc2-call-kit --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-fx --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-screen-capture-kit --package=objc2-sensitive-content-analysis --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-symbols --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit
54-
FRAMEWORKS_IOS_10: --package=objc2-foundation --package=objc2-metal --package=objc2-ui-kit
55-
FRAMEWORKS_GNUSTEP: --package=objc2-app-kit --package=objc2-core-data --package=objc2-foundation
54+
FRAMEWORKS_IOS_10: --package=objc2-accounts --package=objc2-ad-support --package=objc2-av-kit --package=objc2-call-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-motion --package=objc2-event-kit --package=objc2-external-accessory --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-multipeer-connectivity --package=objc2-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-social --package=objc2-speech --package=objc2-store-kit --package=objc2-ui-kit --package=objc2-user-notifications
55+
FRAMEWORKS_GNUSTEP: --package=objc2-app-kit --package=objc2-foundation
5656
# END AUTOMATICALLY GENERATED
5757

5858
# The current nightly Rust version. Keep this synced with `rust-toolchain.toml`

crates/header-translator/src/availability.rs

Lines changed: 21 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
//! <https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID583>
21
use std::fmt;
32

43
use clang::{Entity, PlatformAvailability, Version};
@@ -8,27 +7,24 @@ use crate::context::Context;
87
#[derive(Debug, Clone, PartialEq, Default)]
98
struct Unavailable {
109
ios: bool,
11-
ios_app_extension: bool,
1210
macos: bool,
13-
macos_app_extension: bool,
1411
maccatalyst: bool,
1512
watchos: bool,
1613
tvos: bool,
1714
visionos: bool,
1815
}
1916

2017
#[derive(Debug, Clone, PartialEq, Default)]
21-
struct Versions {
22-
ios: Option<Version>,
23-
ios_app_extension: Option<Version>,
24-
macos: Option<Version>,
25-
macos_app_extension: Option<Version>,
26-
maccatalyst: Option<Version>,
27-
watchos: Option<Version>,
28-
tvos: Option<Version>,
29-
visionos: Option<Version>,
18+
pub struct Versions {
19+
pub(crate) macos: Option<Version>,
20+
pub(crate) maccatalyst: Option<Version>,
21+
pub(crate) ios: Option<Version>,
22+
pub(crate) tvos: Option<Version>,
23+
pub(crate) watchos: Option<Version>,
24+
pub(crate) visionos: Option<Version>,
3025
}
3126

27+
/// <https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID583>
3228
#[derive(Debug, Clone, PartialEq)]
3329
pub struct Availability {
3430
unavailable: Unavailable,
@@ -76,48 +72,36 @@ impl Availability {
7672

7773
// TODO: Ensure that a specific platform only appears once
7874
match &*availability.platform {
79-
"ios" => set(
80-
availability,
81-
&mut unavailable.ios,
82-
&mut introduced.ios,
83-
&mut deprecated.ios,
84-
),
85-
"ios_app_extension" => set(
86-
availability,
87-
&mut unavailable.ios_app_extension,
88-
&mut introduced.ios_app_extension,
89-
&mut deprecated.ios_app_extension,
90-
),
9175
"macos" => set(
9276
availability,
9377
&mut unavailable.macos,
9478
&mut introduced.macos,
9579
&mut deprecated.macos,
9680
),
97-
"macos_app_extension" => set(
98-
availability,
99-
&mut unavailable.macos_app_extension,
100-
&mut introduced.macos_app_extension,
101-
&mut deprecated.macos_app_extension,
102-
),
10381
"maccatalyst" => set(
10482
availability,
10583
&mut unavailable.maccatalyst,
10684
&mut introduced.maccatalyst,
10785
&mut deprecated.maccatalyst,
10886
),
109-
"watchos" => set(
87+
"ios" => set(
11088
availability,
111-
&mut unavailable.watchos,
112-
&mut introduced.watchos,
113-
&mut deprecated.watchos,
89+
&mut unavailable.ios,
90+
&mut introduced.ios,
91+
&mut deprecated.ios,
11492
),
11593
"tvos" => set(
11694
availability,
11795
&mut unavailable.tvos,
11896
&mut introduced.tvos,
11997
&mut deprecated.tvos,
12098
),
99+
"watchos" => set(
100+
availability,
101+
&mut unavailable.watchos,
102+
&mut introduced.watchos,
103+
&mut deprecated.watchos,
104+
),
121105
"xros" => set(
122106
availability,
123107
&mut unavailable.visionos,
@@ -127,6 +111,9 @@ impl Availability {
127111
"swift" => {
128112
_swift = Some(availability);
129113
}
114+
platform if platform.ends_with("_app_extension") => {
115+
// Ignore availability attributes for app extensions
116+
}
130117
platform => error!(?platform, "unknown availability platform"),
131118
}
132119
}
@@ -145,9 +132,7 @@ impl Availability {
145132
self.deprecated,
146133
Versions {
147134
ios: None,
148-
ios_app_extension: None,
149135
macos: None,
150-
macos_app_extension: None,
151136
maccatalyst: None,
152137
watchos: None,
153138
tvos: None,

0 commit comments

Comments
 (0)