aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2010-09-22 21:19:39 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2010-09-22 21:19:39 +0100
commit60cf253a8b1ebaabf6dd476a1177a24ab7f6d48c (patch)
tree6f696b6dcc2f7574f8c3f96ec2645c09aa05edd8 /gcc/config
parente200444e3bf13cabbb9ad5bd29fdc840f82462a8 (diff)
downloadgcc-60cf253a8b1ebaabf6dd476a1177a24ab7f6d48c.zip
gcc-60cf253a8b1ebaabf6dd476a1177a24ab7f6d48c.tar.gz
gcc-60cf253a8b1ebaabf6dd476a1177a24ab7f6d48c.tar.bz2
opts-common.c (prune_options): Make static.
* opts-common.c (prune_options): Make static. Work with decoded options. (decode_cmdline_options_to_array): Call prune_options. Don't resize option array here. * opts.h (prune_options): Remove prototype. * gcc.c (process_command): Take decoded options; don't call decode_cmdline_options_to_array here. Use decoded options for argv[0]. (main): Call decode_cmdline_options_to_array here instead of prune_options. Update call to process_command. * config/darwin-driver.c: Include opts.h. (darwin_default_min_version): Work with decoded options. Don't handle -b or -V here. * config/darwin.h (darwin_default_min_version): Update prototype. (GCC_DRIVER_HOST_INITIALIZATION): Update call to darwin_default_min_version. * config/i386/cygwin.h (mingw_scan): Update prototype. (GCC_DRIVER_HOST_INITIALIZATION): Update call to mingw_scan. * config/i386/cygwin1.c: Include opts.h. (mingw_scan): Work with decoded options. * config/i386/t-cygwin (cygwin1.o): Update dependencies. * config/t-darwin (darwin-driver.o): Update dependencies. From-SVN: r164532
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/darwin-driver.c64
-rw-r--r--gcc/config/darwin.h5
-rw-r--r--gcc/config/i386/cygwin.h7
-rw-r--r--gcc/config/i386/cygwin1.c42
-rw-r--r--gcc/config/i386/t-cygwin4
-rw-r--r--gcc/config/t-darwin2
6 files changed, 63 insertions, 61 deletions
diff --git a/gcc/config/darwin-driver.c b/gcc/config/darwin-driver.c
index b23efc5..099226c 100644
--- a/gcc/config/darwin-driver.c
+++ b/gcc/config/darwin-driver.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "gcc.h"
+#include "opts.h"
#include <sys/sysctl.h>
#include "xregex.h"
@@ -32,11 +33,12 @@ along with GCC; see the file COPYING3. If not see
of the system on which the compiler is running. */
void
-darwin_default_min_version (int * argc_p, char *** argv_p)
+darwin_default_min_version (unsigned int *decoded_options_count,
+ struct cl_decoded_option **decoded_options)
{
- const int argc = *argc_p;
- char ** const argv = *argv_p;
- int i;
+ const unsigned int argc = *decoded_options_count;
+ struct cl_decoded_option *const argv = *decoded_options;
+ unsigned int i;
char osversion[32];
size_t osversion_len = sizeof (osversion) - 1;
static int osversion_name[2] = { CTL_KERN, KERN_OSRELEASE };
@@ -44,34 +46,17 @@ darwin_default_min_version (int * argc_p, char *** argv_p)
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 ("10.0.0") + 6];
/* If the command-line is empty, just return. */
if (argc <= 1)
return;
- /* Don't do this if the user has specified -b or -V at the start
- of the command-line. */
- if (argv[1][0] == '-'
- && (argv[1][1] == 'V' ||
- ((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. */
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)
- return;
-
- /* It doesn't count if it's an argument to a different switch. */
- if (p[0] == '-'
- && ((SWITCH_TAKES_ARG (p[1]) > (p[2] != 0))
- || WORD_SWITCH_TAKES_ARG (p + 1)))
- i++;
- }
+ if (argv[i].opt_index == OPT_mmacosx_version_min_)
+ return;
/* Retrieve the deployment target from the environment and insert
it as a flag. */
@@ -84,12 +69,14 @@ darwin_default_min_version (int * argc_p, char *** argv_p)
to ignore the environment variable, as if it was never set. */
&& macosx_deployment_target[0])
{
- ++*argc_p;
- *argv_p = XNEWVEC (char *, *argc_p);
- (*argv_p)[0] = argv[0];
- (*argv_p)[1] = concat ("-mmacosx-version-min=",
- macosx_deployment_target, NULL);
- memcpy (*argv_p + 2, argv + 1, (argc - 1) * sizeof (char *));
+ ++*decoded_options_count;
+ *decoded_options = XNEWVEC (struct cl_decoded_option,
+ *decoded_options_count);
+ (*decoded_options)[0] = argv[0];
+ generate_option (OPT_mmacosx_version_min_, macosx_deployment_target,
+ 1, CL_DRIVER, &(*decoded_options)[1]);
+ memcpy (*decoded_options + 2, argv + 1,
+ (argc - 1) * sizeof (struct cl_decoded_option *));
return;
}
}
@@ -128,17 +115,20 @@ darwin_default_min_version (int * argc_p, char *** argv_p)
if (major_vers - 4 <= 4)
/* On 10.4 and earlier, the old linker is used which does not
support three-component system versions. */
- sprintf (new_flag, "-mmacosx-version-min=10.%d", major_vers - 4);
+ sprintf (new_flag, "10.%d", major_vers - 4);
else
- sprintf (new_flag, "-mmacosx-version-min=10.%d.%s", major_vers - 4,
+ sprintf (new_flag, "10.%d.%s", major_vers - 4,
minor_vers);
/* Add the new flag. */
- ++*argc_p;
- *argv_p = XNEWVEC (char *, *argc_p);
- (*argv_p)[0] = argv[0];
- (*argv_p)[1] = new_flag;
- memcpy (*argv_p + 2, argv + 1, (argc - 1) * sizeof (char *));
+ ++*decoded_options_count;
+ *decoded_options = XNEWVEC (struct cl_decoded_option,
+ *decoded_options_count);
+ (*decoded_options)[0] = argv[0];
+ generate_option (OPT_mmacosx_version_min_, new_flag,
+ 1, CL_DRIVER, &(*decoded_options)[1]);
+ memcpy (*decoded_options + 2, argv + 1,
+ (argc - 1) * sizeof (struct cl_decoded_option *));
return;
parse_failed:
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 3314acb..f0ff901 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -1059,9 +1059,10 @@ extern int flag_apple_kext;
#define TARGET_HAS_TARGETCM 1
#ifndef CROSS_DIRECTORY_STRUCTURE
-extern void darwin_default_min_version (int * argc, char *** argv);
+extern void darwin_default_min_version (unsigned int *decoded_options_count,
+ struct cl_decoded_option **decoded_options);
#define GCC_DRIVER_HOST_INITIALIZATION \
- darwin_default_min_version (&argc, &argv)
+ darwin_default_min_version (&decoded_options_count, &decoded_options)
#endif /* CROSS_DIRECTORY_STRUCTURE */
/* The Apple assembler and linker do not support constructor priorities. */
diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h
index a8d26e9..67308fc 100644
--- a/gcc/config/i386/cygwin.h
+++ b/gcc/config/i386/cygwin.h
@@ -252,12 +252,13 @@ char *cvt_to_mingw[] =
#undef GEN_CVT_ARRAY
#endif /*GEN_CVT_ARRAY*/
-void mingw_scan (int, const char * const *, const char **);
+void mingw_scan (unsigned int, const struct cl_decoded_option *,
+ const char **);
#if 1
#define GCC_DRIVER_HOST_INITIALIZATION \
do \
{ \
- mingw_scan(argc, (const char * const *) argv, &spec_machine); \
+ mingw_scan (decoded_options_count, decoded_options, &spec_machine); \
} \
while (0)
#else
@@ -277,7 +278,7 @@ do \
add_prefix (&startfile_prefixes,\
concat (standard_startfile_prefix, "w32api", NULL),\
"GCC", PREFIX_PRIORITY_LAST, 0, NULL);\
- mingw_scan(argc, (const char * const *) argv, &spec_machine); \
+ mingw_scan (decoded_options_count, decoded_options, &spec_machine); \
} \
while (0)
#endif
diff --git a/gcc/config/i386/cygwin1.c b/gcc/config/i386/cygwin1.c
index 7de34d2..99d9d8f 100644
--- a/gcc/config/i386/cygwin1.c
+++ b/gcc/config/i386/cygwin1.c
@@ -22,32 +22,42 @@ along with GCC; see the file COPYING3. If not see
#include "system.h"
#include "coretypes.h"
#include "tm.h"
+#include "opts.h"
#include <string.h>
void
-mingw_scan (int argc ATTRIBUTE_UNUSED,
- const char *const *argv,
+mingw_scan (unsigned int decoded_options_count,
+ const struct cl_decoded_option *decoded_options,
const char **spec_machine)
{
+ unsigned int i;
putenv (xstrdup ("GCC_CYGWIN_MINGW=0"));
- while (*++argv)
- if (strcmp (*argv, "-mno-win32") == 0)
- putenv (xstrdup ("GCC_CYGWIN_WIN32=0"));
- else if (strcmp (*argv, "-mwin32") == 0)
- putenv (xstrdup ("GCC_CYGWIN_WIN32=1"));
- else if (strcmp (*argv, "-mno-cygwin") == 0)
+ for (i = 1; i < decoded_options_count; i++)
+ switch (decoded_options[i].opt_index)
{
- char *p = strstr (*spec_machine, "-cygwin");
- if (p)
+ case OPT_mwin32:
+ if (decoded_options[i].value == 0)
+ putenv (xstrdup ("GCC_CYGWIN_WIN32=0"));
+ else
+ putenv (xstrdup ("GCC_CYGWIN_WIN32=1"));
+ break;
+
+ case OPT_mcygwin:
+ if (decoded_options[i].value == 0)
{
- int len = p - *spec_machine;
- char *s = XNEWVEC (char, strlen (*spec_machine) + 3);
- memcpy (s, *spec_machine, len);
- strcpy (s + len, "-mingw32");
- *spec_machine = s;
+ char *p = strstr (*spec_machine, "-cygwin");
+ if (p)
+ {
+ int len = p - *spec_machine;
+ char *s = XNEWVEC (char, strlen (*spec_machine) + 3);
+ memcpy (s, *spec_machine, len);
+ strcpy (s + len, "-mingw32");
+ *spec_machine = s;
+ }
+ putenv (xstrdup ("GCC_CYGWIN_MINGW=1"));
}
- putenv (xstrdup ("GCC_CYGWIN_MINGW=1"));
+ break;
}
return;
}
diff --git a/gcc/config/i386/t-cygwin b/gcc/config/i386/t-cygwin
index af91aa5..a01219c 100644
--- a/gcc/config/i386/t-cygwin
+++ b/gcc/config/i386/t-cygwin
@@ -1,4 +1,4 @@
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010
# Free Software Foundation, Inc.
#
# This file is part of GCC.
@@ -24,7 +24,7 @@ LIBGCC2_INCLUDES += -I$(srcdir)/../winsup/include \
-I$(srcdir)/../winsup/cygwin/include
cygwin1.o: $(srcdir)/config/i386/cygwin1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TM_P_H)
+ $(TM_H) $(TM_P_H) opts.h
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/i386/cygwin1.c
diff --git a/gcc/config/t-darwin b/gcc/config/t-darwin
index b538ccf..70c0da5 100644
--- a/gcc/config/t-darwin
+++ b/gcc/config/t-darwin
@@ -36,7 +36,7 @@ darwin-f.o: $(srcdir)/config/darwin-f.c $(CONFIG_H) $(SYSTEM_H) coretypes.h
$(srcdir)/config/darwin-f.c $(PREPROCESSOR_DEFINES)
darwin-driver.o: $(srcdir)/config/darwin-driver.c \
- $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H)
+ $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) opts.h
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/darwin-driver.c