changeset 3084:373267f4bfce draft

(svn r3673) -Codechange: [OSX] changed the makefile to autodetect if it compiles on G5 and then adds flags to optimise for G5 This will not interfere with crosscompiling or universal binaries
author bjarni <bjarni@openttd.org>
date Sat, 25 Feb 2006 18:11:11 +0000
parents 1c099a345438
children 4c39f1af740b
files Makefile os/macosx/G5_detector.c os/macosx/Makefile.setup
diffstat 3 files changed, 42 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile
+++ b/Makefile
@@ -345,6 +345,9 @@
 ifdef OSX
 # these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer
 BASECFLAGS += -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic
+ifdef IS_G5
+BASECFLAGS += -mtune=970 -mcpu=970 -mpowerpc-gpopt
+endif
 else
 ifdef MORPHOS
 BASECFLAGS += -I/gg/os-include -O2 -noixemul -fstrict-aliasing -fexpensive-optimizations
new file mode 100644
--- /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");
+}
--- a/os/macosx/Makefile.setup
+++ b/os/macosx/Makefile.setup
@@ -16,6 +16,16 @@
 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)