diff options
author | austern <austern@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-02-23 19:49:23 +0000 |
---|---|---|
committer | austern <austern@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-02-23 19:49:23 +0000 |
commit | 70c7868c5558e7d34d511ab16422e0f6aabadc53 (patch) | |
tree | ec0e8c8a55e2a939c639128d9ae80c15f5626f59 /gcc | |
parent | a613937c00d67c6d56f5db13fe836ce08babc153 (diff) | |
download | gcc-70c7868c5558e7d34d511ab16422e0f6aabadc53.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78329 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/config/darwin-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/darwin.c | 42 | ||||
-rw-r--r-- | gcc/config/darwin.h | 13 | ||||
-rw-r--r-- | gcc/config/i386/darwin.h | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/darwin.h | 3 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 9 |
7 files changed, 88 insertions, 2 deletions
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 <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. 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 |