summaryrefslogtreecommitdiff
path: root/os
diff options
context:
space:
mode:
Diffstat (limited to 'os')
-rw-r--r--os/macosx/G5_detector.c29
-rw-r--r--os/macosx/Makefile.setup10
2 files changed, 39 insertions, 0 deletions
diff --git a/os/macosx/G5_detector.c b/os/macosx/G5_detector.c
new file mode 100644
index 000000000..a67cbb51f
--- /dev/null
+++ b/os/macosx/G5_detector.c
@@ -0,0 +1,29 @@
+/* $Id:$ */
+
+#include <mach/mach.h>
+#include <mach/mach_host.h>
+#include <mach/host_info.h>
+#include <mach/machine.h>
+#include <stdio.h>
+
+
+#ifndef CPU_SUBTYPE_POWERPC_970
+#define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100)
+#endif
+
+// this function is a lightly modified version of some code from Apple's developer homepage to detect G5 CPUs at runtime
+main()
+{
+ host_basic_info_data_t hostInfo;
+ mach_msg_type_number_t infoCount;
+ boolean_t is_G5;
+
+ infoCount = HOST_BASIC_INFO_COUNT;
+ host_info(mach_host_self(), HOST_BASIC_INFO,
+ (host_info_t)&hostInfo, &infoCount);
+
+ is_G5 = ((hostInfo.cpu_type == CPU_TYPE_POWERPC) &&
+ (hostInfo.cpu_subtype == CPU_SUBTYPE_POWERPC_970));
+ if (is_G5)
+ printf("1");
+}
diff --git a/os/macosx/Makefile.setup b/os/macosx/Makefile.setup
index c2531815f..3e9e2cf27 100644
--- a/os/macosx/Makefile.setup
+++ b/os/macosx/Makefile.setup
@@ -16,6 +16,16 @@ $(warning Compiling a release build, that is not a universal binary)
endif
endif
+ifndef FAT_BINARY
+ifndef JAGUAR
+ifeq ($(shell uname), Darwin)
+# it's a hardware mac, not crosscompiling
+$(Q)$(CC_HOST) os/macosx/G5_detector.c -o os/macosx/G5_detector
+IS_G5:=$(shell os/macosx/G5_detector)
+endif
+endif
+endif
+
ifdef FAT_BINARY
ifndef STATIC
$(warning Compiling a universal binary, that is not static. Adding static flag)