124 lines
2.6 KiB
Bash
124 lines
2.6 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# This implements steps 7 and 8 of the OSX compilation procedure described in Compile.rst
|
||
|
# If build-osx does not exist in the parent directory, it will be created.
|
||
|
|
||
|
LUA_PATCH=1
|
||
|
ME=$PWD/`basename $0`
|
||
|
|
||
|
usage() {
|
||
|
echo "Usage: $0 [options] {DF_OSX_PATH}"
|
||
|
echo -e "\told\t- use on pre-Snow Leopard OSX installations"
|
||
|
echo -e "\tbrew\t- if GCC 4.5 was installed with homebrew"
|
||
|
echo -e "\tport\t- if GCC 4.5 was insalled with macports"
|
||
|
echo -e "\tclean\t- delete ../build-osx before compiling"
|
||
|
echo "Example:"
|
||
|
echo -e "\t$0 old brew ../../../personal/df_osx"
|
||
|
echo -e "\t$0 port clean /Users/dfplayer/df_osx"
|
||
|
exit $1
|
||
|
}
|
||
|
|
||
|
options() {
|
||
|
case $1 in
|
||
|
brew)
|
||
|
echo "Using homebrew gcc."
|
||
|
export CC=/usr/local/bin/gcc-4.5
|
||
|
export CXX=/usr/local/bin/g++-4.5
|
||
|
targetted=1
|
||
|
;;
|
||
|
port)
|
||
|
echo "Using macports gcc."
|
||
|
export CC=/opt/local/bin/gcc-mp-4.5
|
||
|
export CXX=/opt/local/bin/g++-mp-4.5
|
||
|
targetted=1
|
||
|
;;
|
||
|
old)
|
||
|
LUA_PATCH=0
|
||
|
;;
|
||
|
clean)
|
||
|
echo "Deleting ../build-osx"
|
||
|
rm -rf ../build-osx
|
||
|
;;
|
||
|
*)
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
# sanity checks
|
||
|
if [[ $# -lt 1 ]]
|
||
|
then
|
||
|
echo "Not enough arguments."
|
||
|
usage 0
|
||
|
fi
|
||
|
if [[ $# -gt 4 ]]
|
||
|
then
|
||
|
echo "Too many arguments."
|
||
|
usage 1
|
||
|
fi
|
||
|
|
||
|
# run through the arguments
|
||
|
for last
|
||
|
do
|
||
|
options $last
|
||
|
done
|
||
|
# last keeps the last argument
|
||
|
|
||
|
if [[ $targetted -eq 0 ]]
|
||
|
then
|
||
|
echo "You did not specify whether you intalled GCC 4.5 from brew or ports."
|
||
|
echo "If you continue, your default compiler will be used."
|
||
|
read -p "Are you sure you want to continue? [y/N] " -n 1 -r
|
||
|
echo # (optional) move to a new line
|
||
|
if [[ ! $REPLY =~ ^[Yy]$ ]]
|
||
|
then
|
||
|
exit 0
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# check for build folder and start working there
|
||
|
if [[ ! -d ../build-osx ]]
|
||
|
then
|
||
|
mkdir ../build-osx
|
||
|
fi
|
||
|
cd ../build-osx
|
||
|
|
||
|
# patch if necessary
|
||
|
if [[ $LUA_PATCH -ne 0 ]]
|
||
|
then
|
||
|
cd ..
|
||
|
echo "$PWD"
|
||
|
sed -e '1,/'"PATCH""CODE"'/d' "$ME" | patch -p0
|
||
|
cd -
|
||
|
fi
|
||
|
|
||
|
echo "Generate"
|
||
|
cmake .. -DCMAKE_BUILD_TYPE:string=Release -DCMAKE_INSTALL_PREFIX="$last"
|
||
|
echo "Build"
|
||
|
make
|
||
|
echo "Install"
|
||
|
make install
|
||
|
|
||
|
# unpatch if /libarary/luaTypes.cpp was patched
|
||
|
if [[ $LUA_PATCH -ne 0 ]]
|
||
|
then
|
||
|
cd ..
|
||
|
echo -n "un"
|
||
|
sed -e '1,/'"PATCH""CODE"'/d' "$ME" | patch -p0 -R
|
||
|
cd -
|
||
|
fi
|
||
|
|
||
|
exit 0
|
||
|
|
||
|
# PATCHCODE - everything below this line is fed into patch
|
||
|
--- library/LuaTypes.cpp 2014-08-20 00:13:17.000000000 -0700
|
||
|
+++ library/LuaTypes.cpp 2014-08-31 23:31:00.000000000 -0700
|
||
|
@@ -464,7 +464,7 @@
|
||
|
{
|
||
|
case struct_field_info::STATIC_STRING:
|
||
|
{
|
||
|
- int len = strnlen((char*)ptr, field->count);
|
||
|
+ int len = strlen((char*)ptr);
|
||
|
lua_pushlstring(state, (char*)ptr, len);
|
||
|
return;
|
||
|
}
|