summaryrefslogtreecommitdiff
path: root/os/macosx/Makefile.setup
blob: 38565ced3c959402105c905eefea76a6ed49f7ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# $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
	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
$(error OpenTTD can not run or compile on MacOS X 10.2. 10.3.9 or newer is needed)
	endif
	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

# 4-byte bools to make YAPF happy
CFLAGS_PPC += -DFOUR_BYTE_BOOL

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
	ifndef OSX_NO_SYSROOT
		CFLAGS_PPC   += -isysroot /Developer/SDKs/MacOSX$(PPC_OSX_TARGET).sdk
		LDFLAGS_PPC  += -Wl,-syslibroot,/Developer/SDKs/MacOSX$(PPC_OSX_TARGET).sdk
	endif
endif

ifdef OTTD_i386
	ifndef OSX_NO_SYSROOT
		CFLAGS_i386  += -isysroot /Developer/SDKs/MacOSX$(i386_OSX_TARGET).sdk
		LDFLAGS_i386 += -Wl,-syslibroot,/Developer/SDKs/MacOSX$(i386_OSX_TARGET).sdk
	endif
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

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

ifdef OTTD_PPC
MACOSX_BUILD:=1
endif
ifdef OTTD_i386
MACOSX_BUILD:=1
endif
ifdef OTTD_PPC970
MACOSX_BUILD:=1
endif