]> granicus.if.org Git - clang/commitdiff
Make the auto-detection hack for the iOS simulator set the target triple correctly...
authorEli Friedman <eli.friedman@gmail.com>
Mon, 16 Jan 2012 18:50:54 +0000 (18:50 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Mon, 16 Jan 2012 18:50:54 +0000 (18:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148249 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains.cpp
test/Driver/ios-simulator-arcruntime.c

index 5a1cd16cf786bc5e34f6a3cfc4b37c338c2b8064..7b2b2d880d543da3f57696af57e875d5047dbbcd 100644 (file)
@@ -534,28 +534,6 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
   Arg *iOSSimVersion = Args.getLastArg(
     options::OPT_mios_simulator_version_min_EQ);
 
-  // FIXME: HACK! When compiling for the simulator we don't get a
-  // '-miphoneos-version-min' to help us know whether there is an ARC runtime
-  // or not; try to parse a __IPHONE_OS_VERSION_MIN_REQUIRED
-  // define passed in command-line.
-  if (!iOSVersion && !iOSSimVersion) {
-    for (arg_iterator it = Args.filtered_begin(options::OPT_D),
-           ie = Args.filtered_end(); it != ie; ++it) {
-      StringRef define = (*it)->getValue(Args);
-      if (define.startswith(SimulatorVersionDefineName())) {
-        unsigned Major = 0, Minor = 0, Micro = 0;
-        if (GetVersionFromSimulatorDefine(define, Major, Minor, Micro) &&
-            Major < 10 && Minor < 100 && Micro < 100) {
-          ARCRuntimeForSimulator = Major < 5 ? ARCSimulator_NoARCRuntime
-                                             : ARCSimulator_HasARCRuntime;
-          LibCXXForSimulator = Major < 5 ? LibCXXSimulator_NotAvailable
-                                         : LibCXXSimulator_Available;
-        }
-        break;
-      }
-    }
-  }
-
   if (OSXVersion && (iOSVersion || iOSSimVersion)) {
     getDriver().Diag(diag::err_drv_argument_not_allowed_with)
           << OSXVersion->getAsString(Args)
@@ -641,6 +619,31 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
     }
   }
 
+  // FIXME: HACK! When compiling for the simulator we can't depend
+  // on getting '-mios-simulator-version-min'; try to parse a
+  // __IPHONE_OS_VERSION_MIN_REQUIRED define passed in command-line.
+  if (OSXVersion) {
+    for (arg_iterator it = Args.filtered_begin(options::OPT_D),
+           ie = Args.filtered_end(); it != ie; ++it) {
+      StringRef define = (*it)->getValue(Args);
+      if (define.startswith(SimulatorVersionDefineName())) {
+        unsigned Major = 0, Minor = 0, Micro = 0;
+        if (GetVersionFromSimulatorDefine(define, Major, Minor, Micro) &&
+            Major < 10 && Minor < 100 && Micro < 100) {
+          std::string iOSSimTarget;
+          llvm::raw_string_ostream(iOSSimTarget)
+              << Major << '.' << Minor << '.' << Micro;
+          const Option *O = Opts.getOption(
+            options::OPT_mios_simulator_version_min_EQ);
+          iOSSimVersion = Args.MakeJoinedArg(0, O, iOSSimTarget);
+          Args.append(iOSSimVersion);
+          OSXVersion = 0;
+        }
+        break;
+      }
+    }
+  }
+
   // Reject invalid architecture combinations.
   if (iOSSimVersion && (getTriple().getArch() != llvm::Triple::x86 &&
                         getTriple().getArch() != llvm::Triple::x86_64)) {
index bec9f7b1fdc81fc7a62eea3be293c29fb5fcb9be..00cc2b5ac7856f9200e65bdd98697684060f5e5c 100644 (file)
@@ -3,4 +3,5 @@
 // 
 
 // CHECK-OPTIONS1-NOT: -fobjc-runtime-has-weak
+// CHECK-OPTIONS2: "-triple" "i386-apple-ios5.0.0"
 // CHECK-OPTIONS2: -fobjc-runtime-has-weak