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
·
384 lines (358 loc) · 10.8 KB

fatbuild.sh

File metadata and controls

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