[llvm-commits] [llvm-gcc-4.2] r54187 - in /llvm-gcc-4.2/trunk/gcc: config/darwin-driver.c config/darwin.h gcc.c

Bill Wendling isanbard at gmail.com
Tue Jul 29 17:33:35 PDT 2008


Author: void
Date: Tue Jul 29 19:33:35 2008
New Revision: 54187

URL: http://llvm.org/viewvc/llvm-project?rev=54187&view=rev
Log:
More merges with Apple's GCC 4.2

Modified:
    llvm-gcc-4.2/trunk/gcc/config/darwin-driver.c
    llvm-gcc-4.2/trunk/gcc/config/darwin.h
    llvm-gcc-4.2/trunk/gcc/gcc.c

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin-driver.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin-driver.c?rev=54187&r1=54186&r2=54187&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin-driver.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin-driver.c Tue Jul 29 19:33:35 2008
@@ -1,4 +1,4 @@
-/* APPLE LOCAL file mainline 2007-06-14 5235474 */
+/* APPLE LOCAL file 5235474 5683689 */
 /* Additional functions for the GCC driver on Darwin native.
    Copyright (C) 2006, 2007 Free Software Foundation, Inc.
    Contributed by Apple Computer Inc.
@@ -37,12 +37,17 @@
 #define WORD_SWITCH_TAKES_ARG(STR) DEFAULT_WORD_SWITCH_TAKES_ARG (STR)
 #endif
 
-/* When running on a Darwin system and using that system's headers and
-   libraries, default the -mmacosx-version-min flag to be the version
-   of the system on which the compiler is running.  */
+/* This function is used when running on a Darwin system and using that
+   system's headers and libraries.  Unless specified otherwise by
+   command-line options or environment variables, this routine will
+   set the appropriate version specification flag to a default value.
+   The version flag used is based on VERS_TYPE, and is either:
+   DARWIN_VERSION_MACOSX to use -mmacosx-version-min and
+   DARWIN_VERSION_IPHONEOS to use -miphoneos-version-min.  */
 
 void
-darwin_default_min_version (int * argc_p, char *** argv_p)
+darwin_default_min_version (int * argc_p, char *** argv_p,
+			    enum darwin_version_type vers_type)
 {
   const int argc = *argc_p;
   char ** const argv = *argv_p;
@@ -54,7 +59,7 @@
   char * version_pend;
   int major_vers;
   char minor_vers[6];
-  static char new_flag[sizeof ("-mmacosx-version-min=10.0.0") + 6];
+  static char new_flag[sizeof ("-mxxxxxx-version-min=99.99.99") + 6];
 
   /* If the command-line is empty, just return.  */
   if (argc <= 1)
@@ -66,14 +71,17 @@
 	  ((argv[1][1] == 'b') && (NULL != strchr(argv[1] + 2,'-')))))
     return;
   
-  /* Don't do this if the user specified -mmacosx-version-min= or
-     -mno-macosx-version-min.  */
+  /* Don't do this if the user specified -mmacosx-version-min=,
+     -miphoneos-version-min, -mno-macosx-version-min, or
+     -mno-iphoneos-version-min.  */
   for (i = 1; i < argc; i++)
     if (argv[i][0] == '-')
       {
 	const char * const p = argv[i];
 	if (strncmp (p, "-mno-macosx-version-min", 23) == 0
-	    || strncmp (p, "-mmacosx-version-min", 20) == 0)
+	    || strncmp (p, "-mno-iphoneos-version-min", 25) == 0
+	    || strncmp (p, "-mmacosx-version-min", 20) == 0
+	    || strncmp (p, "-miphoneos-version-min", 22) == 0)
 	  return;
 	
 	/* It doesn't count if it's an argument to a different switch.  */
@@ -87,12 +95,31 @@
      it as a flag.  */
   {
     const char * macosx_deployment_target;
+    const char * iphoneos_deployment_target;
+    bool iphoneos_env_set, macosx_env_set;
+
     macosx_deployment_target = getenv ("MACOSX_DEPLOYMENT_TARGET");
-    if (macosx_deployment_target
-	/* Apparently, an empty string for MACOSX_DEPLOYMENT_TARGET means
-	   "use the default".  Or, possibly "use 10.1".  We choose
-	   to ignore the environment variable, as if it was never set.  */
-	&& macosx_deployment_target[0])
+    iphoneos_deployment_target = getenv ("IPHONEOS_DEPLOYMENT_TARGET");
+
+    /* We choose to ignore an environment variable set to an empty
+       string.  */
+    macosx_env_set = macosx_deployment_target
+		     && macosx_deployment_target[0];
+    iphoneos_env_set = iphoneos_deployment_target
+		       && iphoneos_deployment_target[0];
+
+    if (macosx_env_set && iphoneos_env_set)
+      {
+	/* Conflicting DEPLOYMENT_TARGETs given.  Don't emit a warning
+	   for now (see rdar://5819018) -- just choose based on
+	   VERS_TYPE.  */
+	if (vers_type == DARWIN_VERSION_IPHONEOS)
+	  macosx_env_set = 0;
+	else
+	  iphoneos_env_set = 0;
+      }
+
+    if (macosx_env_set)
       {
 	++*argc_p;
 	*argv_p = xmalloc (sizeof (char *) * *argc_p);
@@ -102,8 +129,33 @@
 	memcpy (*argv_p + 2, argv + 1, (argc - 1) * sizeof (char *));
 	return;
       }
+
+    if (iphoneos_env_set)
+      {
+	++*argc_p;
+	*argv_p = xmalloc (sizeof (char *) * *argc_p);
+	(*argv_p)[0] = argv[0];
+	(*argv_p)[1] = concat ("-miphoneos-version-min=",
+			       iphoneos_deployment_target, NULL);
+	memcpy (*argv_p + 2, argv + 1, (argc - 1) * sizeof (char *));
+	return;
+      }
   }
 
+  /* For iPhone OS, if no version number is specified, we default to
+     2.0.  */
+  if (vers_type == DARWIN_VERSION_IPHONEOS)
+    {
+      ++*argc_p;
+      *argv_p = xmalloc (sizeof (char *) * *argc_p);
+      (*argv_p)[0] = argv[0];
+      (*argv_p)[1] = xstrdup ("-miphoneos-version-min=2.0");
+      memcpy (*argv_p + 2, argv + 1, (argc - 1) * sizeof (char *));
+      return;
+    }
+
+  gcc_assert (vers_type == DARWIN_VERSION_MACOSX);
+
   /* Determine the version of the running OS.  If we can't, warn user,
      and do nothing.  */
   if (sysctl (osversion_name, ARRAY_SIZE (osversion_name), osversion,

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.h?rev=54187&r1=54186&r2=54187&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Tue Jul 29 19:33:35 2008
@@ -1541,8 +1541,6 @@
 /* APPLE LOCAL begin mainline 2007-06-14 5235474 */
 #ifndef CROSS_DIRECTORY_STRUCTURE
 /* APPLE LOCAL begin ARM 5683689 */
-/* LLVM FIXME: Uncomment!!! */
-#if 0
 extern void darwin_default_min_version (int * argc, char *** argv,
 					enum darwin_version_type vers_type);
 #define GCC_DRIVER_HOST_INITIALIZATION \
@@ -1550,13 +1548,6 @@
   GCC_DRIVER_HOST_INITIALIZATION1; \
   darwin_default_min_version (&argc, &argv, DARWIN_DEFAULT_VERSION_TYPE)
 /* APPLE LOCAL end ARM 5683689 */
-#else
-extern void darwin_default_min_version (int * argc, char *** argv);
-#define GCC_DRIVER_HOST_INITIALIZATION          \
-   /* APPLE LOCAL isysroot 5083137 */ \
-   GCC_DRIVER_HOST_INITIALIZATION1; \
-   darwin_default_min_version (&argc, &argv)
-#endif
 #endif /* CROSS_DIRECTORY_STRUCTURE */
 /* APPLE LOCAL end mainline 2007-06-14 5235474 */
 

Modified: llvm-gcc-4.2/trunk/gcc/gcc.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/gcc.c?rev=54187&r1=54186&r2=54187&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/gcc.c (original)
+++ llvm-gcc-4.2/trunk/gcc/gcc.c Tue Jul 29 19:33:35 2008
@@ -6460,7 +6460,8 @@
 main (int argc, char **argv)
 {
   size_t i;
-  int value;
+  /* APPLE LOCAL uninit warning */
+  int value = 0;
   int linker_was_run = 0;
   int lang_n_infiles = 0;
   int num_linker_inputs = 0;
@@ -7000,9 +7001,7 @@
 		  infiles[i].incompiler = lookup_compiler (infiles[i].name,
 							   strlen (infiles[i].name),
 							   infiles[i].language);
-
-		  if (value < 0)
-		    this_file_error = 1;
+			  
 		}
 	      else if (traditional_cpp_flag)
 			{
@@ -7015,6 +7014,9 @@
 			}
 	    }
 
+	  if (value < 0)
+	    this_file_error = 1;
+  
 	  if (this_file_error)
 	    {
 	      delete_failure_queue ();





More information about the llvm-commits mailing list