summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authoraustern <austern@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-23 19:49:23 +0000
committeraustern <austern@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-23 19:49:23 +0000
commit70c7868c5558e7d34d511ab16422e0f6aabadc53 (patch)
treeec0e8c8a55e2a939c639128d9ae80c15f5626f59 /gcc
parenta613937c00d67c6d56f5db13fe836ce08babc153 (diff)
downloadgcc-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/ChangeLog16
-rw-r--r--gcc/config/darwin-protos.h2
-rw-r--r--gcc/config/darwin.c42
-rw-r--r--gcc/config/darwin.h13
-rw-r--r--gcc/config/i386/darwin.h5
-rw-r--r--gcc/config/rs6000/darwin.h3
-rw-r--r--gcc/doc/invoke.texi9
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