diff options
author | bjarni <bjarni@openttd.org> | 2006-02-25 18:11:11 +0000 |
---|---|---|
committer | bjarni <bjarni@openttd.org> | 2006-02-25 18:11:11 +0000 |
commit | 4ff6b2a5148fce8f3abb110a4206b12825f243ef (patch) | |
tree | eafdcc56afa5ecd2d9c1be6258e506b21d2c2840 | |
parent | 51ece8d99ae9745d652f60e91b1df920e375675a (diff) | |
download | openttd-4ff6b2a5148fce8f3abb110a4206b12825f243ef.tar.xz |
(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
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | os/macosx/G5_detector.c | 29 | ||||
-rw-r--r-- | os/macosx/Makefile.setup | 10 |
3 files changed, 42 insertions, 0 deletions
@@ -345,6 +345,9 @@ endif 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 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) |