mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-08 01:10:28 +00:00
9c96bcb997
Now OSX stores object files in .OSX and instead of making FAT object files, there are one for each architecture Each architecture got their own targets to make a non-FAT binary and in the end, lipo will merge them into one binary It's now possible to select which architectures you want to support by defining OTTD_PPC, OTTD_PPC970 (G5) and/or OTTD_i386 All combos are supported. UNIVERSAL_BINARY and TRIPLE_BINARY can still be used even though it's possible to gain the same result by using the new flags Making a universal build when you already got part of it compiled (say the PPC part), it will reuse it and only compile the i386 part to save time Note: in some cases when you switch flags, you risk that openttd is not updated. Delete it and try again. The Makefile can't solve this except if it forces linking each time This fixes: FS#87 universal binary building borked in 0.4.7 Now universal binaries work on OSX 10.3.9 again Building universal binaries no longer needs to store flags in Makefile.config as the new design makes it possible to figure everything out automatically
122 lines
3.1 KiB
Makefile
122 lines
3.1 KiB
Makefile
# $Id: Makefile 3214 2005-11-17 19:43:37Z bjarni $
|
|
# This makefile is not a standalone makefile, but is called from the general one
|
|
# it contains code specific to MacOS X
|
|
|
|
ifdef RELEASE
|
|
ifndef STATIC
|
|
# all OSX releases needs to be static
|
|
# end users don't tend to have the dynamic libs installed
|
|
$(warning Compiling a dynamic release. It should be static unless you really know what you are doing!!!)
|
|
endif
|
|
endif
|
|
|
|
ifdef RELEASE
|
|
ifndef UNIVERSAL_BINARY
|
|
$(warning Compiling a release build, that is not a universal binary)
|
|
endif
|
|
endif
|
|
|
|
ifdef TRIPLE_BINARY
|
|
ifdef DEBUG
|
|
$(error no G5 optimisation is made in debug builds, so triple binaries aren't possible. Use UNIVERSAL_BINARY instead if you really want a universal debug build)
|
|
endif
|
|
UNIVERSAL_BINARY:=1
|
|
endif
|
|
|
|
ifdef UNIVERSAL_BINARY
|
|
ifndef STATIC
|
|
$(warning Compiling a universal binary, that is not static. Adding static flag)
|
|
STATIC:=1
|
|
endif
|
|
endif
|
|
|
|
ifdef RELEASE
|
|
ifdef DEBUG
|
|
$(warning Compiling a release build, that is a debug build)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(shell uname), Darwin)
|
|
# it's a hardware mac, not crosscompiling
|
|
NATIVE_OSX:=1
|
|
endif
|
|
|
|
ifndef PPC_OSX_TARGET
|
|
PPC_OSX_TARGET:=10.3.9
|
|
endif
|
|
ifndef i386_OSX_TARGET
|
|
i386_OSX_TARGET:=10.4u
|
|
endif
|
|
|
|
ifndef G5_FLAGS
|
|
G5_FLAGS := -mtune=970 -mcpu=970 -mpowerpc-gpopt
|
|
endif
|
|
|
|
ifdef UNIVERSAL_BINARY
|
|
OTTD_PPC:=1
|
|
OTTD_i386:=1
|
|
ifdef TRIPLE_BINARY
|
|
OTTD_PPC970:=1
|
|
endif
|
|
endif
|
|
|
|
# if any targets have been defined by now, we are crosscompiling and we will set up paths accordingly
|
|
ifdef OTTD_PPC
|
|
CFLAGS_PPC += -isysroot /Developer/SDKs/MacOSX$(PPC_OSX_TARGET).sdk
|
|
LDFLAGS_PPC += -Wl,-syslibroot,/Developer/SDKs/MacOSX$(PPC_OSX_TARGET).sdk
|
|
endif
|
|
|
|
ifdef OTTD_i386
|
|
CFLAGS_i386 += -isysroot /Developer/SDKs/MacOSX$(i386_OSX_TARGET).sdk
|
|
LDFLAGS_i386 += -Wl,-syslibroot,/Developer/SDKs/MacOSX$(i386_OSX_TARGET).sdk
|
|
endif
|
|
|
|
ifdef OTTD_PPC970
|
|
ifndef OTTD_PPC
|
|
CFLAGS_PPC += -isysroot /Developer/SDKs/MacOSX$(PPC_OSX_TARGET).sdk
|
|
LDFLAGS_PPC += -Wl,-syslibroot,/Developer/SDKs/MacOSX$(PPC_OSX_TARGET).sdk
|
|
endif
|
|
endif
|
|
|
|
ifdef JAGUAR
|
|
CFLAGS += -isysroot /Developer/SDKs/MacOSX10.2.8.sdk
|
|
LDFLAGS += -Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk
|
|
OTTD_PPC:=1
|
|
endif
|
|
|
|
# setting up flags to make a binary, that fits the system it builds on
|
|
ifdef NATIVE_OSX
|
|
ifndef UNIVERSAL_BINARY
|
|
# we are not crosscompiling for other macs
|
|
ifndef JAGUAR
|
|
# the next line fails if it got whitespace in front of it
|
|
$(shell $(CC) os/macosx/G5_detector.c -o os/macosx/G5_detector)
|
|
IS_G5:=$(shell os/macosx/G5_detector)
|
|
ifeq ($(shell uname -r), 6.8)
|
|
# OSX 10.2.8 uses Darwin 6.8, so we better set JAGUAR so we avoid the stuff that was added in 10.3 or later
|
|
JAGUAR:=1
|
|
OTTD_PPC:=1
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifdef NATIVE_OSX
|
|
ifndef OTTD_PPC
|
|
ifndef OTTD_i386
|
|
ifndef OTTD_PPC970
|
|
# no flags have been set for target versions of OSX, so we will set it to compile for the current host
|
|
ifeq ($(shell uname -p), powerpc)
|
|
ifdef IS_G5
|
|
OTTD_PPC970:=1
|
|
else
|
|
OTTD_PPC:=1
|
|
endif
|
|
else
|
|
# we are not using a PowerPC CPU, so we assume that it's an Intel mac
|
|
OTTD_i386:=1
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif |