Skip to content

Latest commit

 

History

History
executable file
·
207 lines (181 loc) · 5.91 KB

make.sh

File metadata and controls

executable file
·
207 lines (181 loc) · 5.91 KB
 
Aug 19, 2009
Aug 19, 2009
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#!/bin/bash
# This script is not robust for all platforms or situations. Use as a rough
# example, but invest effort in what it's trying to do, and what it produces.
# (make sure you don't build in features you don't need, etc).
# Stop if anything produces an error.
set -e
DEBUG=0
if [ "$1" = "--debug" ]; then
echo "debug build!"
DEBUG=1
fi
if [ ! -f data/Data/Animations/Rabbitkick ]; then
echo "We don't see data/Data/Animations/Rabbitkick ..."
echo " Either you're in the wrong directory, or you didn't copy the"
echo " install data into here (it's unreasonably big to store it in"
echo " revision control for no good reason)."
exit 1
fi
APPNAME="Lugaru Installer"
# I use a "cross compiler" to build binaries that are isolated from the
# particulars of my Linux workstation's current distribution. This both
# keeps me at a consistent ABI for generated binaries and prevent subtle
# dependencies from leaking in.
# You may not care about this at all. In which case, just use the
# CC=gcc and CXX=g++ lines instead.
CC=/usr/bin/gcc
CXX=/usr/bin/g++
#CC=/opt/crosstool/gcc-3.3.6-glibc-2.3.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/gcc
#CXX=/opt/crosstool/gcc-3.3.6-glibc-2.3.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/g++
OSTYPE=`uname -s`
if [ "$OSTYPE" = "Linux" ]; then
NCPU=`cat /proc/cpuinfo |grep vendor_id |wc -l`
let NCPU=$NCPU+1
elif [ "$OSTYPE" = "Darwin" ]; then
NCPU=`sysctl -n hw.ncpu`
elif [ "$OSTYPE" = "SunOS" ]; then
NCPU=`/usr/sbin/psrinfo |wc -l |sed -e 's/^ *//g;s/ *$//g'`
else
NCPU=1
fi
if [ "x$NCPU" = "x" ]; then
NCPU=1
fi
if [ "x$NCPU" = "x0" ]; then
NCPU=1
fi
echo "Will use make -j$NCPU. If this is wrong, check NCPU at top of script."
# Show everything that we do here on stdout.
set -x
if [ "$DEBUG" = "1" ]; then
LUASTRIPOPT=
BUILDTYPE=Debug
TRUEIFDEBUG=TRUE
FALSEIFDEBUG=FALSE
else
LUASTRIPOPT=-s
BUILDTYPE=MinSizeRel
TRUEIFDEBUG=FALSE
FALSEIFDEBUG=TRUE
fi
# Clean up previous run, build fresh dirs for Base Archive.
rm -rf image lugaru-installer pdata.zip
mkdir image
mkdir image/guis
mkdir image/scripts
mkdir image/data
mkdir image/meta
# Build MojoSetup binaries from scratch.
# YOU ALWAYS NEED THE LUA PARSER IF YOU WANT UNINSTALL SUPPORT!
cd ../..
rm -rf cmake-build
mkdir cmake-build
cd cmake-build
cmake \
-DCMAKE_BUILD_TYPE=$BUILDTYPE \
-DCMAKE_C_COMPILER=$CC \
-DCMAKE_CXX_COMPILER=$CXX \
-DMOJOSETUP_MULTIARCH=FALSE \
-DMOJOSETUP_ARCHIVE_ZIP=TRUE \
-DMOJOSETUP_ARCHIVE_TAR=FALSE \
-DMOJOSETUP_ARCHIVE_TAR_BZ2=FALSE \
-DMOJOSETUP_ARCHIVE_TAR_GZ=FALSE \
-DMOJOSETUP_GUI_GTKPLUS2=TRUE \
-DMOJOSETUP_GUI_GTKPLUS2_STATIC=FALSE \
-DMOJOSETUP_GUI_NCURSES=TRUE \
-DMOJOSETUP_GUI_NCURSES_STATIC=FALSE \
-DMOJOSETUP_GUI_STDIO=TRUE \
-DMOJOSETUP_GUI_STDIO_STATIC=TRUE \
-DMOJOSETUP_GUI_WWW=FALSE \
-DMOJOSETUP_GUI_WWW_STATIC=FALSE \
-DMOJOSETUP_LUALIB_DB=FALSE \
-DMOJOSETUP_LUALIB_IO=FALSE \
-DMOJOSETUP_LUALIB_MATH=FALSE \
-DMOJOSETUP_LUALIB_OS=FALSE \
-DMOJOSETUP_LUALIB_PACKAGE=FALSE \
-DMOJOSETUP_LUA_PARSER=TRUE \
-DMOJOSETUP_IMAGE_BMP=TRUE \
-DMOJOSETUP_IMAGE_JPG=FALSE \
-DMOJOSETUP_IMAGE_PNG=FALSE \
-DMOJOSETUP_INTERNAL_BZLIB=FALSE \
-DMOJOSETUP_INTERNAL_ZLIB=TRUE \
-DMOJOSETUP_URL_HTTP=FALSE \
-DMOJOSETUP_URL_FTP=FALSE \
..
make -j$NCPU
# Strip the binaries and GUI plugins, put them somewhere useful.
if [ "$DEBUG" != "1" ]; then
strip ./mojosetup
fi
mv ./mojosetup ../examples/lugaru/lugaru-installer
for feh in *.so *.dll *.dylib ; do
if [ -f $feh ]; then
if [ "$DEBUG" != "1" ]; then
strip $feh
fi
mv $feh ../examples/lugaru/image/guis
fi
done
# Compile the Lua scripts, put them in the base archive.
for feh in ../scripts/*.lua ; do
./mojoluac $LUASTRIPOPT -o ../examples/lugaru/image/scripts/${feh}c $feh
done
# Don't want the example config...use our's instead.
rm -f ../examples/lugaru/image/scripts/config.luac
./mojoluac $LUASTRIPOPT -o ../examples/lugaru/image/scripts/config.luac ../examples/lugaru/scripts/config.lua
# Don't want the example app_localization...use our's instead.
rm -f ../examples/lugaru/image/scripts/app_localization.luac
./mojoluac $LUASTRIPOPT -o ../examples/lugaru/image/scripts/app_localization.luac ../examples/lugaru/scripts/app_localization.lua
# Fill in the rest of the Base Archive...
cd ../examples/lugaru
cp -R data/* image/data/
cp meta/* image/meta/
# Need these scripts to do things like install menu items, etc, on Unix.
if [ "$OSTYPE" = "Linux" ]; then
USE_XDG_UTILS=1
fi
if [ "$OSTYPE" = "SunOS" ]; then
USE_XDG_UTILS=1
fi
if [ "x$USE_XDG_UTILS" = "x1" ]; then
mkdir image/meta/xdg-utils
cp ../../meta/xdg-utils/* image/meta/xdg-utils/
chmod a+rx image/meta/xdg-utils/*
fi
if [ "$OSTYPE" = "Darwin" ]; then
# Build up the application bundle for Mac OS X...
APPBUNDLE="$APPNAME.app"
rm -rf "$APPBUNDLE"
cp -Rv ../../misc/MacAppBundleSkeleton "$APPBUNDLE"
perl -w -pi -e 's/YOUR_APPLICATION_NAME_HERE/'"$APPNAME"'/g;' "${APPBUNDLE}/Contents/Info.plist"
mv lugaru-installer "${APPBUNDLE}/Contents/MacOS/mojosetup"
mv image/* "${APPBUNDLE}/Contents/MacOS/"
rmdir image
ibtool --compile "${APPBUNDLE}/Contents/Resources/MojoSetup.nib" ../../misc/MojoSetup.xib
else
# Make a .zip archive of the Base Archive dirs and nuke the originals...
cd image
zip -9r ../pdata.zip *
cd ..
rm -rf image
# Append the .zip archive to the mojosetup binary, so it's "self-extracting."
cat pdata.zip >> ./lugaru-installer
rm -f pdata.zip
fi
# ...and that's that.
set +e
set +x
echo "Successfully built!"
if [ "$DEBUG" = "1" ]; then
echo
echo
echo
echo 'ATTENTION: THIS IS A DEBUG BUILD!'
echo " DON'T DISTRIBUTE TO THE PUBLIC."
echo ' THIS IS PROBABLY BIGGER AND SLOWER THAN IT SHOULD BE.'
echo ' YOU HAVE BEEN WARNED!'
echo
echo
echo
fi
exit 0