-
Notifications
You must be signed in to change notification settings - Fork 1
/
build-luastatic.sh
executable file
·122 lines (101 loc) · 3.09 KB
/
build-luastatic.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
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
#!/usr/bin/env bash
# Builds d2info.exe (64bit) using MinGW and Luastatic.
# Should be executed from root d2info directory.
# Resulting binary will be in `build/d2info.exe`.
set -euo pipefail
ROOT_DIR=$PWD
BUILD_DIR=$ROOT_DIR/build
rm -rf build
mkdir build
cd build
LUA_VERSION=5.1.5
LFS_VERSION=1.7.0-2
SLEEP_VERSION=1.0.0-2
MEMREADER_VERSION=1.0.0-1
WINDCON_VERSION=1.0.0-2
BITOP_VERSION=1.0.2-3
# ensure luastatic and luarocks are available
which luastatic || { echo "luastatic not found"; exit 1; }
which luarocks || { echo "luarocks not found"; exit 1; }
echo
echo "=== Downloading Lua $LUA_VERSION ==="
echo
curl https://www.lua.org/ftp/lua-$LUA_VERSION.tar.gz | tar xz
echo
echo "=== Downloading memreader $MEMREADER_VERSION ==="
echo
luarocks unpack memreader $MEMREADER_VERSION
echo
echo "=== Downloading windcon $WINDCON_VERSION ==="
echo
luarocks unpack windcon $WINDCON_VERSION
echo
echo "=== Downloading sleep $SLEEP_VERSION ==="
echo
luarocks unpack sleep $SLEEP_VERSION
echo
echo "=== Downloading LuaFileSystem $LFS_VERSION ==="
echo
luarocks unpack luafilesystem $LFS_VERSION
echo
echo "=== Downloading LuaBitOp $BITOP_VERSION ==="
echo
luarocks unpack luabitop $BITOP_VERSION
echo
echo "=== Building Lua ==="
echo
cd lua-$LUA_VERSION
make mingw CC=x86_64-w64-mingw32-gcc AR="x86_64-w64-mingw32-ar rcu"
cp src/liblua.a $BUILD_DIR
cd $BUILD_DIR
echo
echo "=== Building memreader ==="
echo
cd memreader-$MEMREADER_VERSION/memreader
cmake -DCMAKE_TOOLCHAIN_FILE=$ROOT_DIR/scripts/toolchain-mingw.cmake -DLUA_LIBRARIES=$BUILD_DIR/liblua.a -DLUA_INCLUDE_DIR=$BUILD_DIR/lua-$LUA_VERSION/src .
make
cp libmemreader.a $BUILD_DIR
cd $BUILD_DIR
echo
echo "=== Building windcon ==="
echo
cd windcon-$WINDCON_VERSION/lua-windcon
cmake -DCMAKE_TOOLCHAIN_FILE=$ROOT_DIR/scripts/toolchain-mingw.cmake -DLUA_LIBRARIES=$BUILD_DIR/liblua.a -DLUA_INCLUDE_DIR=$BUILD_DIR/lua-$LUA_VERSION/src .
make
cp libwindcon.a $BUILD_DIR
cd $BUILD_DIR
echo
echo "=== Building sleep ==="
echo
cd sleep-$SLEEP_VERSION/sleep
cmake -DCMAKE_TOOLCHAIN_FILE=$ROOT_DIR/scripts/toolchain-mingw.cmake -DLUA_LIBRARIES=$BUILD_DIR/liblua.a -DLUA_INCLUDE_DIR=$BUILD_DIR/lua-$LUA_VERSION/src .
make
cp libsleep.a $BUILD_DIR
cd $BUILD_DIR
echo
echo "=== Building LuaFileSystem $LFS_VERSION ==="
echo
cd luafilesystem-$LFS_VERSION/luafilesystem
x86_64-w64-mingw32-gcc -c -O2 src/lfs.c -I$BUILD_DIR/lua-$LUA_VERSION/src -o src/lfs.o
x86_64-w64-mingw32-ar rcs src/lfs.a src/lfs.o
cp src/lfs.a $BUILD_DIR
cd $BUILD_DIR
echo
echo "=== Building LuaBitOp $BITOP_VERSION ==="
echo
cd luabitop-$BITOP_VERSION/luabitop
x86_64-w64-mingw32-gcc -c -O2 bit.c -I$BUILD_DIR/lua-$LUA_VERSION/src -o bit.o
x86_64-w64-mingw32-ar rcs bit.a bit.o
cp bit.a $BUILD_DIR
cd $BUILD_DIR
echo
echo "=== Copying d2info sources ==="
echo
cp -r $ROOT_DIR/d2info $BUILD_DIR
cp $ROOT_DIR/d2info.lua $BUILD_DIR
echo
echo "=== Building d2info.exe ==="
echo
CC=x86_64-w64-mingw32-gcc luastatic d2info.lua d2info/*.lua liblua.a libmemreader.a libwindcon.a libsleep.a lfs.a bit.a /usr/x86_64-w64-mingw32/lib/libversion.a /usr/x86_64-w64-mingw32/lib/libpsapi.a -Ilua-$LUA_VERSION/src
strip d2info.exe
cd $ROOT_DIR