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
·
410 lines (382 loc) · 11.2 KB

fatbuild.sh

File metadata and controls

executable file
·
410 lines (382 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
Dec 1, 2010
Dec 1, 2010
11
12
13
14
15
# SDK path
if test x$SDK_PATH = x; then
SDK_PATH=/Developer/SDKs
fi
Apr 27, 2006
Apr 27, 2006
16
17
18
# Generic, cross-platform CFLAGS you always want go here.
CFLAGS="-O3 -g -pipe"
Dec 1, 2010
Dec 1, 2010
19
20
21
22
23
24
25
26
27
28
29
30
# They changed this from "darwin9" to "darwin10" in Xcode 3.2 (Snow Leopard).
GCCUSRPATH_PPC=`ls -d $SDK_PATH/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin*/4.0.1`
if [ ! -d "$GCCUSRPATH_PPC" ]; then
echo "Couldn't find any GCC usr path for 32-bit ppc"
exit 1
fi
GCCUSRPATH_PPC64=`ls -d $SDK_PATH/MacOSX10.5.sdk/usr/lib/gcc/powerpc-apple-darwin*/4.0.1`
if [ ! -d "$GCCUSRPATH_PPC64" ]; then
echo "Couldn't find any GCC usr path for 64-bit ppc"
exit 1
fi
Sep 5, 2009
Sep 5, 2009
31
# PowerPC 32-bit configure flags (10.4 runtime compatibility)
May 10, 2006
May 10, 2006
32
33
34
35
# 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
36
# PowerPC 32-bit compiler flags
Dec 28, 2007
Dec 28, 2007
37
38
CC_PPC="gcc-4.0 -arch ppc"
CXX_PPC="g++-4.0 -arch ppc"
Sep 20, 2009
Sep 20, 2009
39
CFLAGS_PPC="-mmacosx-version-min=10.4"
Sep 5, 2009
Sep 5, 2009
40
CPPFLAGS_PPC="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
Apr 22, 2006
Apr 22, 2006
41
-nostdinc \
Dec 1, 2010
Dec 1, 2010
42
-F$SDK_PATH/MacOSX10.4u.sdk/System/Library/Frameworks \
Dec 1, 2010
Dec 1, 2010
43
-I$GCCUSRPATH_PPC/include \
Dec 1, 2010
Dec 1, 2010
44
-isystem $SDK_PATH/MacOSX10.4u.sdk/usr/include"
Sep 5, 2009
Sep 5, 2009
46
# PowerPC 32-bit linker flags
Jan 6, 2010
Jan 6, 2010
47
LFLAGS_PPC="-arch ppc -Wl,-headerpad_max_install_names -mmacosx-version-min=10.4 \
Dec 1, 2010
Dec 1, 2010
48
-F$SDK_PATH/MacOSX10.4u.sdk/System/Library/Frameworks \
Dec 1, 2010
Dec 1, 2010
49
-L$GCCUSRPATH_PPC \
Dec 1, 2010
Dec 1, 2010
50
-Wl,-syslibroot,$SDK_PATH/MacOSX10.4u.sdk"
Sep 5, 2009
Sep 5, 2009
52
53
54
55
56
57
58
59
# 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
60
CFLAGS_PPC64="-mmacosx-version-min=10.5"
Sep 5, 2009
Sep 5, 2009
61
62
CPPFLAGS_PPC64="-DMAC_OS_X_VERSION_MIN_REQUIRED=1050 \
-nostdinc \
Dec 1, 2010
Dec 1, 2010
63
-F$SDK_PATH/MacOSX10.5.sdk/System/Library/Frameworks \
Dec 1, 2010
Dec 1, 2010
64
-I$GCCUSRPATH_PPC64/include \
Dec 1, 2010
Dec 1, 2010
65
-isystem $SDK_PATH/MacOSX10.5.sdk/usr/include"
Sep 5, 2009
Sep 5, 2009
66
67
# PowerPC 64-bit linker flags
Jan 6, 2010
Jan 6, 2010
68
LFLAGS_PPC64="-arch ppc64 -Wl,-headerpad_max_install_names -mmacosx-version-min=10.5 \
Dec 1, 2010
Dec 1, 2010
69
-F$SDK_PATH/MacOSX10.5.sdk/System/Library/Frameworks \
Dec 1, 2010
Dec 1, 2010
70
-L$GCCUSRPATH_PPC64/ppc64 \
Dec 1, 2010
Dec 1, 2010
71
-Wl,-syslibroot,$SDK_PATH/MacOSX10.5.sdk"
Sep 5, 2009
Sep 5, 2009
72
73
74
75
76
77
# 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"
Dec 1, 2010
Dec 1, 2010
78
79
# They changed this from "darwin9" to "darwin10" in Xcode 3.2 (Snow Leopard).
GCCUSRPATH_X86=`ls -d $SDK_PATH/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin*/4.0.1`
Dec 1, 2010
Dec 1, 2010
80
if [ ! -d "$GCCUSRPATH_X86" ]; then
Dec 1, 2010
Dec 1, 2010
81
82
echo "Couldn't find any GCC usr path for 32-bit x86"
exit 1
Jan 10, 2010
Jan 10, 2010
83
fi
Dec 1, 2010
Dec 1, 2010
84
85
86
GCCUSRPATH_X64=`ls -d $SDK_PATH/MacOSX10.5.sdk/usr/lib/gcc/i686-apple-darwin*/4.0.1`
if [ ! -d "$GCCUSRPATH_X64" ]; then
echo "Couldn't find any GCC usr path for 64-bit x86"
Jan 10, 2010
Jan 10, 2010
87
88
89
exit 1
fi
Sep 5, 2009
Sep 5, 2009
90
# Intel 32-bit compiler flags
Apr 27, 2006
Apr 27, 2006
91
CC_X86="gcc-4.0 -arch i386"
Apr 28, 2006
Apr 28, 2006
92
CXX_X86="g++-4.0 -arch i386"
Apr 27, 2006
Apr 27, 2006
93
CFLAGS_X86="-mmacosx-version-min=10.4"
Apr 22, 2006
Apr 22, 2006
94
CPPFLAGS_X86="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
Apr 28, 2006
Apr 28, 2006
95
-nostdinc \
Dec 1, 2010
Dec 1, 2010
96
-F$SDK_PATH/MacOSX10.4u.sdk/System/Library/Frameworks \
Jan 10, 2010
Jan 10, 2010
97
-I$GCCUSRPATH_X86/include \
Dec 1, 2010
Dec 1, 2010
98
-isystem $SDK_PATH/MacOSX10.4u.sdk/usr/include"
Sep 5, 2009
Sep 5, 2009
100
# Intel 32-bit linker flags
Jan 6, 2010
Jan 6, 2010
101
LFLAGS_X86="-arch i386 -Wl,-headerpad_max_install_names -mmacosx-version-min=10.4 \
Dec 1, 2010
Dec 1, 2010
102
-F$SDK_PATH/MacOSX10.4u.sdk/System/Library/Frameworks \
Jan 10, 2010
Jan 10, 2010
103
-L$GCCUSRPATH_X86 \
Dec 1, 2010
Dec 1, 2010
104
-Wl,-syslibroot,$SDK_PATH/MacOSX10.4u.sdk"
Sep 5, 2009
Sep 5, 2009
106
107
108
109
110
111
112
113
114
115
116
# 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 \
Dec 1, 2010
Dec 1, 2010
117
-F$SDK_PATH/MacOSX10.5.sdk/System/Library/Frameworks \
Dec 1, 2010
Dec 1, 2010
118
-I$GCCUSRPATH_X64/include \
Dec 1, 2010
Dec 1, 2010
119
-isystem $SDK_PATH/MacOSX10.5.sdk/usr/include"
Sep 5, 2009
Sep 5, 2009
120
121
# Intel 64-bit linker flags
Jan 6, 2010
Jan 6, 2010
122
LFLAGS_X64="-arch x86_64 -Wl,-headerpad_max_install_names -mmacosx-version-min=10.5 \
Dec 1, 2010
Dec 1, 2010
123
-F$SDK_PATH/MacOSX10.5.sdk/System/Library/Frameworks \
Dec 1, 2010
Dec 1, 2010
124
-L$GCCUSRPATH_X64/x86_64 \
Dec 1, 2010
Dec 1, 2010
125
-Wl,-syslibroot,$SDK_PATH/MacOSX10.5.sdk"
Sep 5, 2009
Sep 5, 2009
126
127
128
129
#
# Find the configure script
#
Apr 22, 2006
Apr 22, 2006
130
131
132
srcdir=`dirname $0`/..
auxdir=$srcdir/build-scripts
cd $srcdir
133
134
135
136
#
# Figure out which phase to build:
# all,
Sep 5, 2009
Sep 5, 2009
137
138
# 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
140
# clean
141
142
143
144
145
146
147
148
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
149
configure_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
151
configure_x64="yes"
Sep 5, 2009
Sep 5, 2009
153
make_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
155
make_x64="yes"
156
157
158
159
merge="yes"
;;
configure)
configure_ppc="yes"
Sep 5, 2009
Sep 5, 2009
160
configure_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
162
configure_x64="yes"
163
164
165
166
;;
configure-ppc)
configure_ppc="yes"
;;
Sep 5, 2009
Sep 5, 2009
167
168
169
configure-ppc64)
configure_ppc64="yes"
;;
170
171
172
configure-x86)
configure_x86="yes"
;;
Sep 5, 2009
Sep 5, 2009
173
174
175
configure-x64)
configure_x64="yes"
;;
176
177
make)
make_ppc="yes"
Sep 5, 2009
Sep 5, 2009
178
make_ppc64="yes"
Sep 5, 2009
Sep 5, 2009
180
make_x64="yes"
181
182
183
184
185
merge="yes"
;;
make-ppc)
make_ppc="yes"
;;
Sep 5, 2009
Sep 5, 2009
186
187
188
make-ppc64)
make_ppc64="yes"
;;
189
190
191
make-x86)
make_x86="yes"
;;
Sep 5, 2009
Sep 5, 2009
192
193
194
make-x64)
make_x64="yes"
;;
195
196
197
198
merge)
merge="yes"
;;
install)
Apr 22, 2006
Apr 22, 2006
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
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
220
221
clean)
clean_ppc="yes"
Sep 5, 2009
Sep 5, 2009
222
clean_ppc64="yes"
Apr 27, 2006
Apr 27, 2006
223
clean_x86="yes"
Sep 5, 2009
Sep 5, 2009
224
clean_x64="yes"
Apr 27, 2006
Apr 27, 2006
225
226
227
228
;;
clean-ppc)
clean_ppc="yes"
;;
Sep 5, 2009
Sep 5, 2009
229
230
231
clean-ppc64)
clean_ppc64="yes"
;;
Apr 27, 2006
Apr 27, 2006
232
233
234
clean-x86)
clean_x86="yes"
;;
Sep 5, 2009
Sep 5, 2009
235
236
237
clean-x64)
clean_x64="yes"
;;
Apr 22, 2006
Apr 22, 2006
238
*)
Sep 5, 2009
Sep 5, 2009
239
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
240
241
242
243
244
245
246
exit 1
;;
esac
case `uname -p` in
powerpc)
native_path=ppc
;;
Sep 5, 2009
Sep 5, 2009
247
248
249
powerpc64)
native_path=ppc64
;;
Apr 22, 2006
Apr 22, 2006
250
251
252
*86)
native_path=x86
;;
Sep 5, 2009
Sep 5, 2009
253
254
255
x86_64)
native_path=x64
;;
Apr 22, 2006
Apr 22, 2006
256
257
258
*)
echo "Couldn't figure out native architecture path"
exit 1
259
260
261
262
263
264
;;
esac
#
# Create the build directories
#
Sep 5, 2009
Sep 5, 2009
265
for dir in build build/ppc build/ppc64 build/x86 build/x64; do
266
267
268
269
270
271
272
273
if test -d $dir; then
:
else
mkdir $dir || exit 1
fi
done
#
Sep 5, 2009
Sep 5, 2009
274
# Build the PowerPC 32-bit binary
275
276
277
#
if test x$configure_ppc = xyes; then
(cd build/ppc && \
May 10, 2006
May 10, 2006
278
sh ../../configure $CONFIG_PPC CC="$CC_PPC" CXX="$CXX_PPC" CFLAGS="$CFLAGS $CFLAGS_PPC" CPPFLAGS="$CPPFLAGS_PPC" LDFLAGS="$LFLAGS_PPC") || exit 2
279
280
fi
if test x$make_ppc = xyes; then
Apr 28, 2006
Apr 28, 2006
281
(cd build/ppc && ls include && make -j$NJOB) || exit 3
Sep 5, 2009
Sep 5, 2009
285
286
287
288
289
290
291
292
293
294
295
296
# 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
297
298
299
#
if test x$configure_x86 = xyes; then
(cd build/x86 && \
May 10, 2006
May 10, 2006
300
sh ../../configure $CONFIG_X86 CC="$CC_X86" CXX="$CXX_X86" CFLAGS="$CFLAGS $CFLAGS_X86" CPPFLAGS="$CPPFLAGS_X86" LDFLAGS="$LFLAGS_X86") || exit 2
301
302
fi
if test x$make_x86 = xyes; then
Apr 28, 2006
Apr 28, 2006
303
(cd build/x86 && make -j$NJOB) || exit 3
Sep 5, 2009
Sep 5, 2009
306
307
308
309
310
311
312
313
314
315
316
#
# 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
317
318
319
320
#
# Combine into fat binary
#
if test x$merge = xyes; then
Apr 22, 2006
Apr 22, 2006
321
322
323
output=.libs
sh $auxdir/mkinstalldirs build/$output
cd build
Sep 5, 2009
Sep 5, 2009
324
325
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
326
327
328
329
330
331
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 &&
332
333
echo "Build complete!" &&
echo "Files can be found in the build directory.") || exit 4
Apr 22, 2006
Apr 22, 2006
334
cd ..
335
336
337
338
339
fi
#
# Install
#
Apr 22, 2006
Apr 22, 2006
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
380
381
382
383
384
385
386
387
388
389
390
391
392
393
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
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
#
# 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