/
osx_build.sh
executable file
·99 lines (81 loc) · 2.68 KB
/
osx_build.sh
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
#!/bin/bash
distribdir="$(dirname "$0")"
cd "${distribdir}"
source functions.sh
olxdir="$(guess_olx_dir)"
if ! is_olx_dir "$olxdir"; then
echo "Cannot find openlierox dir. Fix functions.sh."
exit 1
fi
mkdir build-osx && {
cd build-osx
# we have to move the CMakeCache.txt away, otherwise cmake will not create a new config
mv "${olxdir}/CMakeCache.txt" "${olxdir}/CMakeCache.txt.tmp"
cmake "${olxdir}"
mv "${olxdir}/CMakeCache.txt.tmp" "${olxdir}/CMakeCache.txt"
}
version=$(get_olx_human_version)
cd build-osx
CFLAGS="-gdwarf-2 -O3 -mmacosx-version-min=10.11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -arch x86_64" # -arch i386 more complicated...
cmake \
-DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CFLAGS" \
-DCMAKE_C_FLAGS_RELEASE="" -DCMAKE_CXX_FLAGS_RELEASE="" \
-DCMAKE_EXE_LINKER_FLAGS="-F/Library/Frameworks -rpath @executable_path/../Frameworks" \
-DDEBUG=Off .
make -j4 || exit 1
rm -r OpenLieroX.app
mkdir -p OpenLieroX.app/Contents/MacOS || exit 1
mkdir -p OpenLieroX.app/Contents/Frameworks || exit 1
echo -n "APPL????" >OpenLieroX.app/Contents/PkgInfo || exit 1
cat >OpenLieroX.app/Contents/Info.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>OpenLieroX</string>
<key>CFBundleIconFile</key>
<string>macosx.icns</string>
<key>CFBundleIdentifier</key>
<string>com.OpenLieroX</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$version</string>
<key>NSMainNibFile</key>
<string>SDLMain</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
EOF
cp bin/openlierox OpenLieroX.app/Contents/MacOS/ || exit 1
cp -a $olxdir/share OpenLieroX.app/Contents/Resources || exit 1
for F in SDL SDL_mixer Ogg Vorbis FreeType; do
cp -a /Library/Frameworks/$F.framework OpenLieroX.app/Contents/Frameworks/ || exit 1
done
{
cd OpenLieroX.app/Contents/MacOS
function liblocalcopy() {
bin="$1"
otool -L "$bin" | grep -E "\t+" | sed -E "s/^[[:space:]]+([^ ]+).*/\1/g" | { while read lib; do {
echo $lib | grep $bin >/dev/null && continue
locallib="$(basename $lib)"
echo $lib | grep -E "^/usr/local/" >/dev/null && {
libnewname="@executable_path/$locallib"
install_name_tool -change "$lib" "$libnewname" "$bin"
cp "$lib" .
chmod u+w $locallib
liblocalcopy $locallib
}
}; done; }
}
liblocalcopy openlierox
}
exit 0