@@ -484,58 +484,71 @@ toolchains::Darwin::addProfileGenerationArgs(ArgStringList &Arguments,
484
484
void
485
485
toolchains::Darwin::addDeploymentTargetArgs (ArgStringList &Arguments,
486
486
const JobContext &context) const {
487
- const llvm::Triple &Triple = getTriple ();
488
- // FIXME: Properly handle deployment targets.
489
- assert (Triple.isiOS () || Triple.isWatchOS () || Triple.isMacOSX ());
490
- if (Triple.isiOS ()) {
491
- bool isiOSSimulator = tripleIsiOSSimulator (Triple);
492
- if (Triple.isTvOS ()) {
493
- if (isiOSSimulator)
494
- Arguments.push_back (" -tvos_simulator_version_min" );
495
- else
496
- Arguments.push_back (" -tvos_version_min" );
487
+
488
+ auto addPlatformVersionArg = [&](const llvm::Triple &triple) {
489
+ // Compute the name of the platform for the linker.
490
+ const char *platformName;
491
+ if (tripleIsMacCatalystEnvironment (triple)) {
492
+ platformName = " mac catalyst" ;
497
493
} else {
498
- if (isiOSSimulator)
499
- Arguments.push_back (" -ios_simulator_version_min" );
500
- else if (tripleIsMacCatalystEnvironment (Triple))
501
- Arguments.push_back (" -maccatalyst_version_min" );
502
- else
503
- Arguments.push_back (" -iphoneos_version_min" );
494
+ switch (getDarwinPlatformKind (triple)) {
495
+ case DarwinPlatformKind::MacOS:
496
+ platformName = " macos" ;
497
+ break ;
498
+ case DarwinPlatformKind::IPhoneOS:
499
+ platformName = " ios" ;
500
+ break ;
501
+ case DarwinPlatformKind::IPhoneOSSimulator:
502
+ platformName = " ios-sim" ;
503
+ break ;
504
+ case DarwinPlatformKind::TvOS:
505
+ platformName = " tvos" ;
506
+ break ;
507
+ case DarwinPlatformKind::TvOSSimulator:
508
+ platformName = " tvos-sim" ;
509
+ break ;
510
+ case DarwinPlatformKind::WatchOS:
511
+ platformName = " watchos" ;
512
+ break ;
513
+ case DarwinPlatformKind::WatchOSSimulator:
514
+ platformName = " watchos-sim" ;
515
+ break ;
516
+ }
504
517
}
505
- unsigned major, minor, micro;
506
- Triple.getiOSVersion (major, minor, micro);
507
- addVersionString (context.Args , Arguments, major, minor, micro);
508
518
509
- if (TargetVariant) {
510
- assert (triplesAreValidForZippering (Triple, *TargetVariant));
511
- assert (TargetVariant->isMacOSX ());
512
- Arguments.push_back (" -macosx_version_min" );
513
- unsigned major, minor, micro;
514
- TargetVariant->getMacOSXVersion (major, minor, micro);
515
- addVersionString (context.Args , Arguments, major, minor, micro);
516
- }
517
- } else if (Triple.isWatchOS ()) {
518
- if (tripleIsWatchSimulator (Triple))
519
- Arguments.push_back (" -watchos_simulator_version_min" );
520
- else
521
- Arguments.push_back (" -watchos_version_min" );
519
+ // Compute the platform version.
522
520
unsigned major, minor, micro;
523
- Triple.getOSVersion (major, minor, micro);
524
- addVersionString (context.Args , Arguments, major, minor, micro);
525
- } else {
526
- Arguments.push_back (" -macosx_version_min" );
527
- unsigned major, minor, micro;
528
- Triple.getMacOSXVersion (major, minor, micro);
521
+ if (tripleIsMacCatalystEnvironment (triple)) {
522
+ triple.getiOSVersion (major, minor, micro);
523
+ } else {
524
+ switch (getDarwinPlatformKind ((triple))) {
525
+ case DarwinPlatformKind::MacOS:
526
+ triple.getMacOSXVersion (major, minor, micro);
527
+ break ;
528
+ case DarwinPlatformKind::IPhoneOS:
529
+ case DarwinPlatformKind::IPhoneOSSimulator:
530
+ case DarwinPlatformKind::TvOS:
531
+ case DarwinPlatformKind::TvOSSimulator:
532
+ triple.getiOSVersion (major, minor, micro);
533
+ break ;
534
+ case DarwinPlatformKind::WatchOS:
535
+ case DarwinPlatformKind::WatchOSSimulator:
536
+ triple.getOSVersion (major, minor, micro);
537
+ break ;
538
+ }
539
+ }
540
+
541
+ Arguments.push_back (" -platform_version" );
542
+ Arguments.push_back (platformName);
529
543
addVersionString (context.Args , Arguments, major, minor, micro);
544
+ addVersionString (context.Args , Arguments, 0 , 0 , 0 );
545
+ };
530
546
531
- if (TargetVariant) {
532
- assert (triplesAreValidForZippering (Triple, *TargetVariant));
533
- assert (tripleIsMacCatalystEnvironment (*TargetVariant));
534
- Arguments.push_back (" -maccatalyst_version_min" );
535
- unsigned major, minor, micro;
536
- TargetVariant->getiOSVersion (major, minor, micro);
537
- addVersionString (context.Args , Arguments, major, minor, micro);
538
- }
547
+ addPlatformVersionArg (getTriple ());
548
+
549
+ if (auto targetVariant = getTargetVariant ()) {
550
+ assert (triplesAreValidForZippering (getTriple (), *targetVariant));
551
+ addPlatformVersionArg (*targetVariant);
539
552
}
540
553
}
541
554
0 commit comments