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
This commit is contained in:
Matt Austern 2004-02-23 19:49:23 +00:00 committed by Matt Austern
parent 6f94dea785
commit 4fd1ff2bdb
7 changed files with 88 additions and 2 deletions

View File

@ -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.

View File

@ -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);

View File

@ -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)
{

View File

@ -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

View File

@ -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

View File

@ -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. */

View File

@ -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