From: Matt Austern Date: Mon, 23 Feb 2004 19:49:23 +0000 (+0000) Subject: darwin.h (SUBTARGET_OPTIONS): Add -mmacosx= option. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4fd1ff2bdbb8623d8ddad845d54e924fa1767546;p=gcc.git darwin.h (SUBTARGET_OPTIONS): Add -mmacosx= option. * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f3089cdc1a3..d41719211f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2003-02-23 Matt Austern + + * 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 * config/rs6000.md (movsf_hardfloat): Add POWER form of nop. diff --git a/gcc/config/darwin-protos.h b/gcc/config/darwin-protos.h index 41bad646ce1..1c432bf15a0 100644 --- a/gcc/config/darwin-protos.h +++ b/gcc/config/darwin-protos.h @@ -18,6 +18,8 @@ along with GCC; see the file COPYING. If not, write to 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); diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index a2a3f579fd9..fd5d8b6272d 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -48,6 +48,48 @@ static void update_non_lazy_ptrs (const char *); 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) { diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index f56746df384..b3260fdded3 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -82,6 +82,19 @@ Boston, MA 02111-1307, USA. */ #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 diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index e99a253af33..23db7c00853 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -51,6 +51,11 @@ Boston, MA 02111-1307, USA. */ #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 diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h index 6f193f739c3..5b3abab3523 100644 --- a/gcc/config/rs6000/darwin.h +++ b/gcc/config/rs6000/darwin.h @@ -87,7 +87,8 @@ do { \ 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. */ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 1b6b8c4fe82..3a062399a33 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -462,7 +462,7 @@ in the following sections. -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 @@ -7590,6 +7590,13 @@ See man ld(1) for more information. 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