* config/darwin.h (SUBTARGET_OPTIONS): Add -mmacosx= option.
(macosx_version_min_required): Declare global variable.
* config/darwin-protos.h (darwin_parse_macosx_version_name): Declare.
* config/darwin.c (macosx_version_min_required): Define variable.
(darwin_macosx_vers_tbl): Define. Table mapping text strings of
OS versions to numerical codes.
(darwin_parse_macosx_version_name): Define. Parse -mmacosx=,
set macosx_version_min_required appropriately.
* config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
Invoke darwin_parse_macosx_version_name.
* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Add
darwin_parse_macosx_version_name to Darwin option handling.
* doc/invoke.texi (-mmacosx=): Document.
From-SVN: r78329
+2003-02-23 Matt Austern <austern@apple.com >
+
+ * config/darwin.h (SUBTARGET_OPTIONS): Add -mmacosx= option.
+ (macosx_version_min_required): Declare global variable.
+ * config/darwin-protos.h (darwin_parse_macosx_version_name): Declare.
+ * config/darwin.c (macosx_version_min_required): Define variable.
+ (darwin_macosx_vers_tbl): Define. Table mapping text strings of
+ OS versions to numerical codes.
+ (darwin_parse_macosx_version_name): Define. Parse -mmacosx=,
+ set macosx_version_min_required appropriately.
+ * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
+ Invoke darwin_parse_macosx_version_name.
+ * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Add
+ darwin_parse_macosx_version_name to Darwin option handling.
+ * doc/invoke.texi (-mmacosx=): Document.
+
2004-02-23 Dale Johannesen <dalej@apple.com>
* config/rs6000.md (movsf_hardfloat): Add POWER form of nop.
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+extern void darwin_parse_macosx_version_name (void);
+
extern int name_needs_quotes (const char *);
extern void machopic_validate_stub_or_non_lazy_ptr (const char *, int);
static void update_stubs (const char *);
static const char *machopic_non_lazy_ptr_name (const char*);
+/* Earliest operating system for which generated code is targeted, as string
+ and as integer. The string form is "10.0", "10.1", etc. The corresponding
+ numeric versions are 1000, 1010, etc. This number is used for feature
+ tests of the form "enable_this_feature = macosx_version_min_required >= n",
+ so 0 is a conservative default. */
+
+const char *darwin_macosx_version_name;
+unsigned int macosx_version_min_required = 0;
+
+/* Parse -macosx= option. */
+
+static struct darwin_macosx_vers {
+ const char *vers_str;
+ unsigned int vers_num;
+} darwin_macosx_vers_tbl[] = {
+ { "10.0", 1000 },
+ { "10.1", 1010 },
+ { "10.2", 1020 },
+ { "jaguar", 1020 },
+ { "10.3", 1030 },
+ { "panther", 1030 },
+ { "10.4", 1040 },
+ { "10.5", 1050 },
+ { NULL, 0 }
+};
+
+void darwin_parse_macosx_version_name (void)
+{
+ if (darwin_macosx_version_name)
+ {
+ struct darwin_macosx_vers *v = darwin_macosx_vers_tbl;
+ while (v->vers_str
+ && strcmp (darwin_macosx_version_name, v->vers_str) != 0)
+ v++;
+
+ if (v->vers_str)
+ macosx_version_min_required = v->vers_num;
+ else
+ warning ("-macosx=%s: unrecognized version", darwin_macosx_version_name);
+ }
+}
+
int
name_needs_quotes (const char *name)
{
#undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
+/* Strings provided by SUBTARGET_OPTIONS */
+extern const char *darwin_macosx_version_name;
+
+/* Override rs6000.h/i386.h definition */
+#undef SUBTARGET_OPTIONS
+#define SUBTARGET_OPTIONS \
+ { "macosx=", &darwin_macosx_version_name, \
+ N_("Earliest operating system for which code should be generated"), 0 }
+
+/* Earliest operating system for which generated code is targeted. 1000 for 10.0,
+ 1010 for 10.1, etc. */
+extern unsigned int macosx_version_min_required;
+
/* This table intercepts weirdo options whose names would interfere
with normal driver conventions, and either translates them into
standardly-named options, or adds a 'Z' so that they can get to
#define SUBTARGET_EXTRA_SPECS \
{ "darwin_arch", "i386" },
+#define SUBTARGET_OVERRIDE_OPTIONS \
+do { \
+ darwin_parse_macosx_version_name (); \
+} while (0)
+
/* Use the following macro for any Darwin/x86-specific command-line option
translation. */
#define SUBTARGET_OPTION_TRANSLATE_TABLE
flag_pic = 2; \
} \
} \
-}while(0)
+ darwin_parse_macosx_version_name (); \
+} while (0)
/* We want -fPIC by default, unless we're using -static to compile for
the kernel or some such. */
-single_module -static -sub_library -sub_umbrella @gol
-twolevel_namespace -umbrella -undefined @gol
-unexported_symbols_list -weak_reference_mismatches @gol
--whatsloaded}
+-whatsloaded -mmacosx=@var{ver}}
@emph{MIPS Options}
@gccoptlist{-EL -EB -march=@var{arch} -mtune=@var{arch} @gol
This specifies the @var{executable} that will be loading the build
output file being linked. See man ld(1) for more information.
+@item -mmacosx=@var{ver}
+@opindex mmacosx
+This specifies the earliest version of Mac OS for which code should
+be generated. Specifying @code{-mmacosx=10.2}, for example, allows
+the compiler to use features that were first made available in that
+version of the operating system.
+
@item -allowable_client @var{client_name}
@itemx -arch_only