Skip to content

Latest commit

 

History

History
executable file
·
103 lines (94 loc) · 2.45 KB

gcc-fat.sh

File metadata and controls

executable file
·
103 lines (94 loc) · 2.45 KB
 
1
2
3
4
#!/bin/sh
#
# Build Universal binaries on Mac OS X, thanks Ryan!
#
Aug 15, 2011
Aug 15, 2011
5
# Usage: ./configure CC="sh gcc-fat.sh" && make && rm -rf x86 x64
Sep 20, 2009
Sep 20, 2009
6
Jun 1, 2013
Jun 1, 2013
7
8
9
10
DEVELOPER="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer"
# Intel 32-bit compiler flags (10.6 runtime compatibility)
GCC_COMPILE_X86="gcc -arch i386 -mmacosx-version-min=10.6 \
11
-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
Jun 1, 2013
Jun 1, 2013
12
-I/usr/local/include"
Jun 1, 2013
Jun 1, 2013
14
GCC_LINK_X86="-mmacosx-version-min=10.6"
Jun 1, 2013
Jun 1, 2013
16
17
# Intel 64-bit compiler flags (10.6 runtime compatibility)
GCC_COMPILE_X64="gcc -arch x86_64 -mmacosx-version-min=10.6 \
Sep 20, 2009
Sep 20, 2009
18
-DMAC_OS_X_VERSION_MIN_REQUIRED=1050 \
Jun 1, 2013
Jun 1, 2013
19
-I/usr/local/include"
Sep 20, 2009
Sep 20, 2009
20
Jun 1, 2013
Jun 1, 2013
21
GCC_LINK_X64="-mmacosx-version-min=10.6"
Sep 20, 2009
Sep 20, 2009
22
23
24
25
26
27
28
29
30
31
32
33
# Output both PowerPC and Intel object files
args="$*"
compile=yes
link=yes
while test x$1 != x; do
case $1 in
--version) exec gcc $1;;
-v) exec gcc $1;;
-V) exec gcc $1;;
-print-prog-name=*) exec gcc $1;;
-print-search-dirs) exec gcc $1;;
Aug 15, 2011
Aug 15, 2011
34
-E) GCC_COMPILE_X86="$GCC_COMPILE_X86 -E"
Sep 20, 2009
Sep 20, 2009
35
GCC_COMPILE_X64="$GCC_COMPILE_X64 -E"
36
37
38
compile=no; link=no;;
-c) link=no;;
-o) output=$2;;
May 1, 2006
May 1, 2006
39
*.c|*.cc|*.cpp|*.S) source=$1;;
40
41
42
43
44
esac
shift
done
if test x$link = xyes; then
GCC_COMPILE_X86="$GCC_COMPILE_X86 $GCC_LINK_X86"
Sep 20, 2009
Sep 20, 2009
45
GCC_COMPILE_X64="$GCC_COMPILE_X64 $GCC_LINK_X64"
46
47
48
49
50
fi
if test x"$output" = x; then
if test x$link = xyes; then
output=a.out
elif test x$compile = xyes; then
May 1, 2006
May 1, 2006
51
output=`echo $source | sed -e 's|.*/||' -e 's|\(.*\)\.[^\.]*|\1|'`.o
Sep 20, 2009
Sep 20, 2009
55
# Compile X86 32-bit
56
57
58
59
60
61
62
63
64
65
if test x"$output" != x; then
dir=x86/`dirname $output`
if test -d $dir; then
:
else
mkdir -p $dir
fi
fi
set -- $args
while test x$1 != x; do
Apr 30, 2006
Apr 30, 2006
66
if test -f "x86/$1" && test "$1" != "$output"; then
67
68
69
70
71
72
73
74
75
76
77
x86_args="$x86_args x86/$1"
else
x86_args="$x86_args $1"
fi
shift
done
$GCC_COMPILE_X86 $x86_args || exit $?
if test x"$output" != x; then
cp $output x86/$output
fi
Sep 20, 2009
Sep 20, 2009
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# Compile X86 32-bit
if test x"$output" != x; then
dir=x64/`dirname $output`
if test -d $dir; then
:
else
mkdir -p $dir
fi
fi
set -- $args
while test x$1 != x; do
if test -f "x64/$1" && test "$1" != "$output"; then
x64_args="$x64_args x64/$1"
else
x64_args="$x64_args $1"
fi
shift
done
$GCC_COMPILE_X64 $x64_args || exit $?
if test x"$output" != x; then
cp $output x64/$output
fi
101
if test x"$output" != x; then
Aug 15, 2011
Aug 15, 2011
102
lipo -create -o $output x86/$output x64/$output