to linker.
(DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
darwin_rs6000_override_options.
(C_COMMON_OVERRIDE_OPTIONS): Expect
darwin_macosx_version_min to be non-NULL always.
(TARGET_C99_FUNCTIONS): Likewise.
(CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
(DARWIN_MINVERSION_SPEC): New.
* config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
* config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
to cc1*.
(DARWIN_MINVERSION_SPEC): New.
* config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
value.
* config/darwin-c.c (darwin_cpp_builtins): Expect
darwin_macosx_version_min to be non-NULL always.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122067
138bc75d-0d04-0410-961f-
82ee72b054a4
2007-02-16 Geoffrey Keating <geoffk@apple.com>
+ * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
+ to linker.
+ (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
+ * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
+ darwin_rs6000_override_options.
+ (C_COMMON_OVERRIDE_OPTIONS): Expect
+ darwin_macosx_version_min to be non-NULL always.
+ (TARGET_C99_FUNCTIONS): Likewise.
+ (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
+ (DARWIN_MINVERSION_SPEC): New.
+ * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
+ * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
+ to cc1*.
+ (DARWIN_MINVERSION_SPEC): New.
+ * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
+ value.
+ * config/darwin-c.c (darwin_cpp_builtins): Expect
+ darwin_macosx_version_min to be non-NULL always.
+
* config/rs6000/rs6000.c: Clean up trailing whitespace.
2007-02-16 Uros Bizjak <ubizjak@gmail.com>
to be defined and won't work if it isn't. */
builtin_define_with_value ("__APPLE_CC__", "1", false);
- if (darwin_macosx_version_min)
- builtin_define_with_value ("__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__",
- version_as_macro(), false);
+ builtin_define_with_value ("__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__",
+ version_as_macro(), false);
}
%{headerpad_max_install_names*} \
%{Zimage_base*:-image_base %*} \
%{Zinit*:-init %*} \
- %{mmacosx-version-min=*:-macosx_version_min %*} \
- %{!mmacosx-version-min=*:%{shared-libgcc:-macosx_version_min 10.3}} \
+ -macosx_version_min %(darwin_minversion) \
%{nomultidefs} \
%{Zmulti_module:-multi_module} %{Zsingle_module:-single_module} \
%{Zmultiply_defined*:-multiply_defined %*} \
#define DARWIN_EXTRA_SPECS \
{ "darwin_crt1", DARWIN_CRT1_SPEC }, \
- { "darwin_dylib1", DARWIN_DYLIB1_SPEC },
+ { "darwin_dylib1", DARWIN_DYLIB1_SPEC }, \
+ { "darwin_minversion", DARWIN_MINVERSION_SPEC },
#define DARWIN_DYLIB1_SPEC \
"%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \
Target Report Var(darwin_fix_and_continue)
Generate code suitable for fast turn around debugging
+; The Init here is for the convenience of GCC developers, so that
+; cc1 and cc1plus don't crash if no -mmacosx-version-min is passed. The
+; driver will always pass a -mmacosx-version-min, so in normal use
+; the Init is never used.
mmacosx-version-min=
-Target Joined Report Var(darwin_macosx_version_min)
+Target Joined Report Var(darwin_macosx_version_min) Init("10.1")
The earliest MacOS X version on which this program will run
mone-byte-bool
#undef CC1_SPEC
#define CC1_SPEC "%{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \
+ -mmacosx-version-min=%(darwin_minversion) \
%{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }}"
#undef ASM_SPEC
#define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}"
#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
+/* Determine a minimum version based on compiler options. */
+#define DARWIN_MINVERSION_SPEC "10.4"
+
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
DARWIN_EXTRA_SPECS \
/* Translate config/rs6000/darwin.opt to config/darwin.h. */
#define TARGET_DYNAMIC_NO_PIC (TARGET_MACHO_DYNAMIC_NO_PIC)
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- if (!TARGET_64BIT) builtin_define ("__ppc__"); \
- if (TARGET_64BIT) builtin_define ("__ppc64__"); \
- builtin_define ("__POWERPC__"); \
- builtin_define ("__NATURAL_ALIGNMENT__"); \
- darwin_cpp_builtins (pfile); \
- } \
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ if (!TARGET_64BIT) builtin_define ("__ppc__"); \
+ if (TARGET_64BIT) builtin_define ("__ppc64__"); \
+ builtin_define ("__POWERPC__"); \
+ builtin_define ("__NATURAL_ALIGNMENT__"); \
+ darwin_cpp_builtins (pfile); \
+ } \
while (0)
-
-#define SUBTARGET_OVERRIDE_OPTIONS \
-do { \
- /* The Darwin ABI always includes AltiVec, can't be (validly) turned \
- off. */ \
- rs6000_altivec_abi = 1; \
- TARGET_ALTIVEC_VRSAVE = 1; \
- if (DEFAULT_ABI == ABI_DARWIN) \
- { \
- if (MACHO_DYNAMIC_NO_PIC_P) \
- { \
- if (flag_pic) \
- warning (0, "-mdynamic-no-pic overrides -fpic or -fPIC"); \
- flag_pic = 0; \
- } \
- else if (flag_pic == 1) \
- { \
- flag_pic = 2; \
- } \
- } \
- if (TARGET_64BIT && ! TARGET_POWERPC64) \
- { \
- target_flags |= MASK_POWERPC64; \
- warning (0, "-m64 requires PowerPC64 architecture, enabling"); \
- } \
- if (flag_mkernel) \
- { \
- rs6000_default_long_calls = 1; \
- target_flags |= MASK_SOFT_FLOAT; \
- } \
- \
- /* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes \
- Altivec. */ \
- if (!flag_mkernel && !flag_apple_kext \
- && TARGET_64BIT \
- && ! (target_flags_explicit & MASK_ALTIVEC)) \
- target_flags |= MASK_ALTIVEC; \
- \
- /* Unless the user (not the configurer) has explicitly overridden \
- it with -mcpu=G3 or -mno-altivec, then 10.5+ targets default to \
- G4 unless targetting the kernel. */ \
- if (!flag_mkernel \
- && !flag_apple_kext \
- && darwin_macosx_version_min \
- && strverscmp (darwin_macosx_version_min, "10.5") >= 0 \
- && ! (target_flags_explicit & MASK_ALTIVEC) \
- && ! rs6000_select[1].string) \
- { \
- target_flags |= MASK_ALTIVEC; \
- } \
-} while(0)
+#define SUBTARGET_OVERRIDE_OPTIONS darwin_rs6000_override_options ()
#define C_COMMON_OVERRIDE_OPTIONS do { \
/* On powerpc, __cxa_get_exception_ptr is available starting in the \
10.4.6 libstdc++.dylib. */ \
- if ((! darwin_macosx_version_min \
- || strverscmp (darwin_macosx_version_min, "10.4.6") < 0) \
+ if (strverscmp (darwin_macosx_version_min, "10.4.6") < 0 \
&& flag_use_cxa_get_exception_ptr == 2) \
flag_use_cxa_get_exception_ptr = 0; \
if (flag_mkernel) \
#define CC1_SPEC "\
%{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }} \
%{static: %{Zdynamic: %e conflicting code gen style switches are used}}\
+ -mmacosx-version-min=%(darwin_minversion) \
%{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}}"
#define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}"
#define DARWIN_CRT2_SPEC \
"%{!m64:%:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s)}"
+/* Determine a minimum version based on compiler options. */
+#define DARWIN_MINVERSION_SPEC \
+ "%{mmacosx-version-min=*:%*; \
+ m64:10.4; \
+ shared-libgcc:10.3; \
+ :10.1}"
+
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
DARWIN_EXTRA_SPECS \
#undef TARGET_C99_FUNCTIONS
#define TARGET_C99_FUNCTIONS \
(TARGET_64BIT \
- || (darwin_macosx_version_min \
- && strverscmp (darwin_macosx_version_min, "10.3") >= 0))
+ || strverscmp (darwin_macosx_version_min, "10.3") >= 0)
/* When generating kernel code or kexts, we don't use Altivec by
default, as kernel code doesn't save/restore those registers. */
rs6000_hard_regno_mode_ok_p[m][r] = true;
}
+#if TARGET_MACHO
+/* The Darwin version of SUBTARGET_OVERRIDE_OPTIONS. */
+
+static void
+darwin_rs6000_override_options (void)
+{
+ /* The Darwin ABI always includes AltiVec, can't be (validly) turned
+ off. */
+ rs6000_altivec_abi = 1;
+ TARGET_ALTIVEC_VRSAVE = 1;
+ if (DEFAULT_ABI == ABI_DARWIN)
+ {
+ if (MACHO_DYNAMIC_NO_PIC_P)
+ {
+ if (flag_pic)
+ warning (0, "-mdynamic-no-pic overrides -fpic or -fPIC");
+ flag_pic = 0;
+ }
+ else if (flag_pic == 1)
+ {
+ flag_pic = 2;
+ }
+ }
+ if (TARGET_64BIT && ! TARGET_POWERPC64)
+ {
+ target_flags |= MASK_POWERPC64;
+ warning (0, "-m64 requires PowerPC64 architecture, enabling");
+ }
+ if (flag_mkernel)
+ {
+ rs6000_default_long_calls = 1;
+ target_flags |= MASK_SOFT_FLOAT;
+ }
+
+ /* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes
+ Altivec. */
+ if (!flag_mkernel && !flag_apple_kext
+ && TARGET_64BIT
+ && ! (target_flags_explicit & MASK_ALTIVEC))
+ target_flags |= MASK_ALTIVEC;
+
+ /* Unless the user (not the configurer) has explicitly overridden
+ it with -mcpu=G3 or -mno-altivec, then 10.5+ targets default to
+ G4 unless targetting the kernel. */
+ if (!flag_mkernel
+ && !flag_apple_kext
+ && strverscmp (darwin_macosx_version_min, "10.5") >= 0
+ && ! (target_flags_explicit & MASK_ALTIVEC)
+ && ! rs6000_select[1].string)
+ {
+ target_flags |= MASK_ALTIVEC;
+ }
+}
+#endif
+
/* If not otherwise specified by a target, make 'long double' equivalent to
'double'. */