Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
executable file
·
396 lines (369 loc) · 11.2 KB

fatbuild.sh

File metadata and controls

executable file
·
396 lines (369 loc) · 11.2 KB
 
1
2
3
4
#!/bin/sh
#
# Build a fat binary on Mac OS X, thanks Ryan!
Apr 27, 2006
Apr 27, 2006
5
6
# Number of CPUs (for make -j)
NCPU=`sysctl -n hw.ncpu`
Dec 5, 2009
Dec 5, 2009
7
8
9
if test x$NJOB = x; then
NJOB=$NCPU
fi
Apr 27, 2006
Apr 27, 2006
10
11
12
13
# Generic, cross-platform CFLAGS you always want go here.
CFLAGS="-O3 -g -pipe"
Sep 5, 2009
Sep 5, 2009
14
# PowerPC 32-bit configure flags (10.4 runtime compatibility)
May 10, 2006
May 10, 2006
15
16
17
18
# We dynamically load X11, so using the system X11 headers is fine.
CONFIG_PPC="--build=`uname -p`-apple-darwin --host=powerpc-apple-darwin \
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
Sep 5, 2009
Sep 5, 2009
19
# PowerPC 32-bit compiler flags
Dec 28, 2007
Dec 28, 2007
20
21
CC_PPC="gcc-4.0 -arch ppc"
CXX_PPC="g++-4.0 -arch ppc"
Sep 20, 2009
Sep 20, 2009
22
CFLAGS_PPC="-mmacosx-version-min=10.4"
Sep 5, 2009
Sep 5, 2009
23
CPPFLAGS_PPC="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
Apr 22, 2006
Apr 22, 2006
24
-nostdinc \
Sep 5, 2009
Sep 5, 2009
25
26
27
-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \
-I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1/include \
-isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include"
Sep 5, 2009
Sep 5, 2009
29
# PowerPC 32-bit linker flags
Jan 6, 2010
Jan 6, 2010
30
LFLAGS_PPC="-arch ppc -Wl,-headerpad_max_install_names -mmacosx-version-min=10.4 \
Sep 5, 2009
Sep 5, 2009
31
32
33
-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \
-L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1 \
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
Sep 5, 2009
Sep 5, 2009
35
36
37
38
39
40
41
42
# PowerPC 64-bit configure flags (10.5 runtime compatibility)
# We dynamically load X11, so using the system X11 headers is fine.
CONFIG_PPC64="--build=`uname -p`-apple-darwin --host=powerpc-apple-darwin \
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
# PowerPC 64-bit compiler flags
CC_PPC64="gcc-4.0 -arch ppc64"
CXX_PPC64="g++-4.0 -arch ppc64"
Sep 20, 2009
Sep 20, 2009
43
CFLAGS_PPC64="-mmacosx-version-min=10.5"
Sep 5, 2009
Sep 5, 2009
44
45
46
47
48
49
50
CPPFLAGS_PPC64="-DMAC_OS_X_VERSION_MIN_REQUIRED=1050 \
-nostdinc \
-F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks \
-I/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1/include \
-isystem /Developer/SDKs/MacOSX10.5.sdk/usr/include"
# PowerPC 64-bit linker flags
Jan 6, 2010
Jan 6, 2010
51
LFLAGS_PPC64="-arch ppc64 -Wl,-headerpad_max_install_names -mmacosx-version-min=10.5 \
Sep 5, 2009
Sep 5, 2009
52
53
54
55
56
57
58
59
60
61
-F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks \
-L/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1/ppc64 \
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk"
# Intel 32-bit configure flags (10.4 runtime compatibility)
# We dynamically load X11, so using the system X11 headers is fine.
CONFIG_X86="--build=`uname -p`-apple-darwin --host=i386-apple-darwin \
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
# Intel 32-bit configure flags (10.4 runtime compatibility)
May 10, 2006
May 10, 2006
62
63
64
65
# We dynamically load X11, so using the system X11 headers is fine.
CONFIG_X86="--build=`uname -p`-apple-darwin --host=i386-apple-darwin \
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
Jan 10, 2010
Jan 10, 2010
66
67
68
69
70
71
72
73
74
75
# They changed this to "darwin10" in Xcode 3.2 (Snow Leopard).
GCCUSRPATH_X86="$SDK_PATH/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin9/4.0.1"
if [ ! -d "$GCCUSRPATH" ]; then
GCCUSRPATH_X86="$SDK_PATH/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1"
fi
if [ ! -d "$GCCUSRPATH_X86" ]; then
echo "Couldn't find any GCC usr path for x86"
exit 1
fi
Sep 5, 2009
Sep 5, 2009
76
# Intel 32-bit compiler flags
Apr 27, 2006
Apr 27, 2006
77
CC_X86="gcc-4.0 -arch i386"
Apr 28, 2006
Apr 28, 2006
78
CXX_X86="g++-4.0 -arch i386"
Apr 27, 2006
Apr 27, 2006
79
CFLAGS_X86="-mmacosx-version-min=10.4"
Apr 22, 2006
Apr 22, 2006
80
CPPFLAGS_X86="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
Apr 28, 2006
Apr 28, 2006
81
-nostdinc \
Apr 22, 2006
Apr 22, 2006
82
-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \
Jan 10, 2010
Jan 10, 2010
83
-I$GCCUSRPATH_X86/include \
Apr 22, 2006
Apr 22, 2006
84
-isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include"
Sep 5, 2009
Sep 5, 2009
86
# Intel 32-bit linker flags
Jan 6, 2010
Jan 6, 2010
87
LFLAGS_X86="-arch i386 -Wl,-headerpad_max_install_names -mmacosx-version-min=10.4 \
Sep 5, 2009
Sep 5, 2009
88
-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \
Jan 10, 2010
Jan 10, 2010
89
-L$GCCUSRPATH_X86 \
90
91
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
Sep 5, 2009
Sep 5, 2009
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Intel 64-bit configure flags (10.5 runtime compatibility)
# We dynamically load X11, so using the system X11 headers is fine.
CONFIG_X64="--build=`uname -p`-apple-darwin --host=i386-apple-darwin \
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
# Intel 64-bit compiler flags
CC_X64="gcc-4.0 -arch x86_64"
CXX_X64="g++-4.0 -arch x86_64"
CFLAGS_X64="-mmacosx-version-min=10.5"
CPPFLAGS_X64="-DMAC_OS_X_VERSION_MIN_REQUIRED=1050 \
-nostdinc \
-F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks \
-I/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/include \
-isystem /Developer/SDKs/MacOSX10.5.sdk/usr/include"
# Intel 64-bit linker flags
Jan 6, 2010
Jan 6, 2010
108
LFLAGS_X64="-arch x86_64 -Wl,-headerpad_max_install_names -mmacosx-version-min=10.5 \
Sep 5, 2009
Sep 5, 2009
109
110
111
112
-F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks \
-L/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/x86_64 \
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk"
113
114
115
#
# Find the configure script
#
Apr 22, 2006
Apr 22, 2006
116
117
118
srcdir=`dirname $0`/..
auxdir=$srcdir/build-scripts
cd $srcdir
119
120
121
122
#
# Figure out which phase to build:
# all,
Sep 5, 2009
Sep 5, 2009
123
124
# configure, configure-ppc, configure-ppc64, configure-x86, configure-x64
# make, make-ppc, make-ppc64, make-x86, make-x64, merge
Apr 27, 2006
Apr 27, 2006
126
# clean
127
128
129
130
131
132
133
134
if test x"$1" = x; then
phase=all
else
phase="$1"
fi
case $phase in
all)
configure_ppc="yes"
Sep 5, 2009
Sep 5, 2009
135
configure_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
137
configure_x64="yes"
Sep 5, 2009
Sep 5, 2009
139
make_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
141
make_x64="yes"
142
143
144
145
merge="yes"
;;
configure)
configure_ppc="yes"
Sep 5, 2009
Sep 5, 2009
146
configure_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
148
configure_x64="yes"
149
150
151
152
;;
configure-ppc)
configure_ppc="yes"
;;
Sep 5, 2009
Sep 5, 2009
153
154
155
configure-ppc64)
configure_ppc64="yes"
;;
156
157
158
configure-x86)
configure_x86="yes"
;;
Sep 5, 2009
Sep 5, 2009
159
160
161
configure-x64)
configure_x64="yes"
;;
162
163
make)
make_ppc="yes"
Sep 5, 2009
Sep 5, 2009
164
make_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
166
make_x64="yes"
167
168
169
170
171
merge="yes"
;;
make-ppc)
make_ppc="yes"
;;
Sep 5, 2009
Sep 5, 2009
172
173
174
make-ppc64)
make_ppc64="yes"
;;
175
176
177
make-x86)
make_x86="yes"
;;
Sep 5, 2009
Sep 5, 2009
178
179
180
make-x64)
make_x64="yes"
;;
181
182
183
184
merge)
merge="yes"
;;
install)
Apr 22, 2006
Apr 22, 2006
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
install_bin="yes"
install_hdrs="yes"
install_lib="yes"
install_data="yes"
install_man="yes"
;;
install-bin)
install_bin="yes"
;;
install-hdrs)
install_hdrs="yes"
;;
install-lib)
install_lib="yes"
;;
install-data)
install_data="yes"
;;
install-man)
install_man="yes"
;;
Apr 27, 2006
Apr 27, 2006
206
207
clean)
clean_ppc="yes"
Sep 5, 2009
Sep 5, 2009
208
clean_ppc64="yes"
Apr 27, 2006
Apr 27, 2006
209
clean_x86="yes"
Sep 5, 2009
Sep 5, 2009
210
clean_x64="yes"
Apr 27, 2006
Apr 27, 2006
211
212
213
214
;;
clean-ppc)
clean_ppc="yes"
;;
Sep 5, 2009
Sep 5, 2009
215
216
217
clean-ppc64)
clean_ppc64="yes"
;;
Apr 27, 2006
Apr 27, 2006
218
219
220
clean-x86)
clean_x86="yes"
;;
Sep 5, 2009
Sep 5, 2009
221
222
223
clean-x64)
clean_x64="yes"
;;
Apr 22, 2006
Apr 22, 2006
224
*)
Sep 5, 2009
Sep 5, 2009
225
echo "Usage: $0 [all|configure[-ppc|-ppc64|-x86|-x64]|make[-ppc|-ppc64|-x86|-x64]|merge|install|clean[-ppc|-ppc64|-x86|-x64]]"
Apr 22, 2006
Apr 22, 2006
226
227
228
229
230
231
232
exit 1
;;
esac
case `uname -p` in
powerpc)
native_path=ppc
;;
Sep 5, 2009
Sep 5, 2009
233
234
235
powerpc64)
native_path=ppc64
;;
Apr 22, 2006
Apr 22, 2006
236
237
238
*86)
native_path=x86
;;
Sep 5, 2009
Sep 5, 2009
239
240
241
x86_64)
native_path=x64
;;
Apr 22, 2006
Apr 22, 2006
242
243
244
*)
echo "Couldn't figure out native architecture path"
exit 1
245
246
247
248
249
250
;;
esac
#
# Create the build directories
#
Sep 5, 2009
Sep 5, 2009
251
for dir in build build/ppc build/ppc64 build/x86 build/x64; do
252
253
254
255
256
257
258
259
if test -d $dir; then
:
else
mkdir $dir || exit 1
fi
done
#
Sep 5, 2009
Sep 5, 2009
260
# Build the PowerPC 32-bit binary
261
262
263
#
if test x$configure_ppc = xyes; then
(cd build/ppc && \
May 10, 2006
May 10, 2006
264
sh ../../configure $CONFIG_PPC CC="$CC_PPC" CXX="$CXX_PPC" CFLAGS="$CFLAGS $CFLAGS_PPC" CPPFLAGS="$CPPFLAGS_PPC" LDFLAGS="$LFLAGS_PPC") || exit 2
265
266
fi
if test x$make_ppc = xyes; then
Apr 28, 2006
Apr 28, 2006
267
(cd build/ppc && ls include && make -j$NJOB) || exit 3
Sep 5, 2009
Sep 5, 2009
271
272
273
274
275
276
277
278
279
280
281
282
# Build the PowerPC 64-bit binary
#
if test x$configure_ppc64 = xyes; then
(cd build/ppc64 && \
sh ../../configure $CONFIG_PPC64 CC="$CC_PPC64" CXX="$CXX_PPC64" CFLAGS="$CFLAGS $CFLAGS_PPC64" CPPFLAGS="$CPPFLAGS_PPC64" LDFLAGS="$LFLAGS_PPC64") || exit 2
fi
if test x$make_ppc64 = xyes; then
(cd build/ppc64 && ls include && make -j$NJOB) || exit 3
fi
#
# Build the Intel 32-bit binary
283
284
285
#
if test x$configure_x86 = xyes; then
(cd build/x86 && \
May 10, 2006
May 10, 2006
286
sh ../../configure $CONFIG_X86 CC="$CC_X86" CXX="$CXX_X86" CFLAGS="$CFLAGS $CFLAGS_X86" CPPFLAGS="$CPPFLAGS_X86" LDFLAGS="$LFLAGS_X86") || exit 2
287
288
fi
if test x$make_x86 = xyes; then
Apr 28, 2006
Apr 28, 2006
289
(cd build/x86 && make -j$NJOB) || exit 3
Sep 5, 2009
Sep 5, 2009
292
293
294
295
296
297
298
299
300
301
302
#
# Build the Intel 32-bit binary
#
if test x$configure_x64 = xyes; then
(cd build/x64 && \
sh ../../configure $CONFIG_X64 CC="$CC_X64" CXX="$CXX_X64" CFLAGS="$CFLAGS $CFLAGS_X64" CPPFLAGS="$CPPFLAGS_X64" LDFLAGS="$LFLAGS_X64") || exit 2
fi
if test x$make_x64 = xyes; then
(cd build/x64 && make -j$NJOB) || exit 3
fi
303
304
305
306
#
# Combine into fat binary
#
if test x$merge = xyes; then
Apr 22, 2006
Apr 22, 2006
307
308
309
output=.libs
sh $auxdir/mkinstalldirs build/$output
cd build
Sep 5, 2009
Sep 5, 2009
310
311
target=`find . -mindepth 4 -maxdepth 4 -type f -name '*.dylib' | head -1 | sed 's|.*/||'`
(lipo -create -o $output/$target `find . -mindepth 4 -maxdepth 4 -type f -name "*.dylib"` &&
Apr 22, 2006
Apr 22, 2006
312
313
314
315
316
317
ln -sf $target $output/libSDL.dylib &&
lipo -create -o $output/libSDL.a */build/.libs/libSDL.a &&
cp $native_path/build/.libs/libSDL.la $output &&
cp $native_path/build/.libs/libSDL.lai $output &&
cp $native_path/build/libSDL.la . &&
lipo -create -o libSDLmain.a */build/libSDLmain.a &&
318
319
echo "Build complete!" &&
echo "Files can be found in the build directory.") || exit 4
Apr 22, 2006
Apr 22, 2006
320
cd ..
321
322
323
324
325
fi
#
# Install
#
Apr 22, 2006
Apr 22, 2006
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
do_install()
{
echo $*
$* || exit 5
}
if test x$prefix = x; then
prefix=/usr/local
fi
if test x$exec_prefix = x; then
exec_prefix=$prefix
fi
if test x$bindir = x; then
bindir=$exec_prefix/bin
fi
if test x$libdir = x; then
libdir=$exec_prefix/lib
fi
if test x$includedir = x; then
includedir=$prefix/include
fi
if test x$datadir = x; then
datadir=$prefix/share
fi
if test x$mandir = x; then
mandir=$prefix/man
fi
if test x$install_bin = xyes; then
do_install sh $auxdir/mkinstalldirs $bindir
do_install /usr/bin/install -c -m 755 build/$native_path/sdl-config $bindir/sdl-config
fi
if test x$install_hdrs = xyes; then
do_install sh $auxdir/mkinstalldirs $includedir/SDL
for src in $srcdir/include/*.h; do \
file=`echo $src | sed -e 's|^.*/||'`; \
do_install /usr/bin/install -c -m 644 $src $includedir/SDL/$file; \
done
do_install /usr/bin/install -c -m 644 $srcdir/include/SDL_config_macosx.h $includedir/SDL/SDL_config.h
fi
if test x$install_lib = xyes; then
do_install sh $auxdir/mkinstalldirs $libdir
do_install sh build/$native_path/libtool --mode=install /usr/bin/install -c build/libSDL.la $libdir/libSDL.la
do_install /usr/bin/install -c -m 644 build/libSDLmain.a $libdir/libSDLmain.a
do_install ranlib $libdir/libSDLmain.a
fi
if test x$install_data = xyes; then
do_install sh $auxdir/mkinstalldirs $datadir/aclocal
do_install /usr/bin/install -c -m 644 $srcdir/sdl.m4 $datadir/aclocal/sdl.m4
fi
if test x$install_man = xyes; then
do_install sh $auxdir/mkinstalldirs $mandir/man3
for src in $srcdir/docs/man3/*.3; do \
file=`echo $src | sed -e 's|^.*/||'`; \
do_install /usr/bin/install -c -m 644 $src $mandir/man3/$file; \
done
Apr 27, 2006
Apr 27, 2006
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
#
# Clean up
#
do_clean()
{
echo $*
$* || exit 6
}
if test x$clean_x86 = xyes; then
do_clean rm -r build/x86
fi
if test x$clean_ppc = xyes; then
do_clean rm -r build/ppc
fi