(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
This commit is contained in:
bjarni 2006-02-25 18:11:11 +00:00
parent fb301cced7
commit 8e7c2555fe
3 changed files with 42 additions and 0 deletions

View File

@ -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

29
os/macosx/G5_detector.c Normal file
View File

@ -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");
}

View File

@ -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)