diff options
Diffstat (limited to '.appveyor/install.bat')
-rw-r--r-- | .appveyor/install.bat | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/.appveyor/install.bat b/.appveyor/install.bat new file mode 100644 index 00000000..a2aefdd2 --- /dev/null +++ b/.appveyor/install.bat | |||
@@ -0,0 +1,154 @@ | |||
1 | @echo off | ||
2 | |||
3 | cd %APPVEYOR_BUILD_FOLDER% | ||
4 | |||
5 | :: ========================================================= | ||
6 | :: Set some defaults. Infer some variables. | ||
7 | :: | ||
8 | :: These are set globally | ||
9 | if "%LUA_VER%" NEQ "" ( | ||
10 | set LUA=lua | ||
11 | set LUA_SHORTV=%LUA_VER:~0,3% | ||
12 | ) else ( | ||
13 | set LUA=luajit | ||
14 | set LJ_SHORTV=%LJ_VER:~0,3% | ||
15 | set LUA_SHORTV=5.1 | ||
16 | ) | ||
17 | |||
18 | :: unless we specify a platform on appveyor.yaml, we won't get this variable | ||
19 | if not defined platform set platform=x86 | ||
20 | |||
21 | :: defines LUA_DIR so Cmake can find this Lua install | ||
22 | if "%LUA%"=="luajit" ( | ||
23 | set LUA_DIR=c:\lua\%platform%\lj%LJ_SHORTV% | ||
24 | ) else ( | ||
25 | set LUA_DIR=c:\lua\%platform%\%LUA_VER% | ||
26 | ) | ||
27 | |||
28 | :: Now we declare a scope | ||
29 | Setlocal EnableDelayedExpansion EnableExtensions | ||
30 | |||
31 | if not defined LUA_URL set LUA_URL=http://www.lua.org/ftp | ||
32 | if not defined LUAJIT_GIT_REPO set LUAJIT_GIT_REPO=http://luajit.org/git/luajit-2.0.git | ||
33 | if not defined LUAJIT_URL set LUAJIT_URL=http://luajit.org/download | ||
34 | |||
35 | if not defined SEVENZIP set SEVENZIP=7z | ||
36 | :: | ||
37 | :: ========================================================= | ||
38 | |||
39 | :: first create some necessary directories: | ||
40 | mkdir downloads 2>NUL | ||
41 | |||
42 | :: Download and compile Lua (or LuaJIT) | ||
43 | if "%LUA%"=="luajit" ( | ||
44 | if not exist %LUA_DIR% ( | ||
45 | if "%LJ_SHORTV%"=="2.1" ( | ||
46 | :: Clone repository and checkout 2.1 branch | ||
47 | set lj_source_folder=%APPVEYOR_BUILD_FOLDER%\downloads\luajit-%LJ_VER% | ||
48 | if not exist !lj_source_folder! ( | ||
49 | echo Cloning git repo %LUAJIT_GIT_REPO% !lj_source_folder! | ||
50 | git clone %LUAJIT_GIT_REPO% !lj_source_folder! || call :die "Failed to clone repository" | ||
51 | ) | ||
52 | cd !lj_source_folder!\src | ||
53 | git checkout v2.1 || call :die | ||
54 | ) else ( | ||
55 | set lj_source_folder=%APPVEYOR_BUILD_FOLDER%\downloads\luajit-%LJ_VER% | ||
56 | if not exist !lj_source_folder! ( | ||
57 | echo Downloading... %LUAJIT_URL%/LuaJIT-%LJ_VER%.tar.gz | ||
58 | curl --silent --fail --max-time 120 --connect-timeout 30 %LUAJIT_URL%/LuaJIT-%LJ_VER%.tar.gz | %SEVENZIP% x -si -so -tgzip | %SEVENZIP% x -si -ttar -aoa -odownloads | ||
59 | ) | ||
60 | cd !lj_source_folder!\src | ||
61 | ) | ||
62 | :: Compiles LuaJIT | ||
63 | call msvcbuild.bat | ||
64 | |||
65 | mkdir %LUA_DIR% 2> NUL | ||
66 | for %%a in (bin include lib) do ( mkdir "%LUA_DIR%\%%a" ) | ||
67 | |||
68 | for %%a in (luajit.exe lua51.dll) do ( move "!lj_source_folder!\src\%%a" "%LUA_DIR%\bin" ) | ||
69 | |||
70 | move "!lj_source_folder!\src\lua51.lib" "%LUA_DIR%\lib" | ||
71 | for %%a in (lauxlib.h lua.h lua.hpp luaconf.h lualib.h luajit.h) do ( | ||
72 | copy "!lj_source_folder!\src\%%a" "%LUA_DIR%\include" | ||
73 | ) | ||
74 | |||
75 | ) else ( | ||
76 | echo LuaJIT %LJ_VER% already installed at %LUA_DIR% | ||
77 | ) | ||
78 | ) else ( | ||
79 | if not exist %LUA_DIR% ( | ||
80 | :: Download and compile Lua | ||
81 | if not exist downloads\lua-%LUA_VER% ( | ||
82 | curl --silent --fail --max-time 120 --connect-timeout 30 %LUA_URL%/lua-%LUA_VER%.tar.gz | %SEVENZIP% x -si -so -tgzip | %SEVENZIP% x -si -ttar -aoa -odownloads | ||
83 | ) | ||
84 | |||
85 | mkdir downloads\lua-%LUA_VER%\etc 2> NUL | ||
86 | if not exist downloads\lua-%LUA_VER%\etc\winmake.bat ( | ||
87 | curl --silent --location --insecure --fail --max-time 120 --connect-timeout 30 https://github.com/Tieske/luawinmake/archive/master.tar.gz | %SEVENZIP% x -si -so -tgzip | %SEVENZIP% e -si -ttar -aoa -odownloads\lua-%LUA_VER%\etc luawinmake-master\etc\winmake.bat | ||
88 | ) | ||
89 | |||
90 | cd downloads\lua-%LUA_VER% | ||
91 | call etc\winmake | ||
92 | call etc\winmake install %LUA_DIR% | ||
93 | ) else ( | ||
94 | echo Lua %LUA_VER% already installed at %LUA_DIR% | ||
95 | ) | ||
96 | ) | ||
97 | |||
98 | if not exist %LUA_DIR%\bin\%LUA%.exe call :die "Missing Lua interpreter at %LUA_DIR%\bin\%LUA%.exe" | ||
99 | |||
100 | set PATH=%LUA_DIR%\bin;%PATH% | ||
101 | call %LUA% -v | ||
102 | |||
103 | |||
104 | |||
105 | :: Exports the following variables: | ||
106 | endlocal & set PATH=%PATH% | ||
107 | |||
108 | echo. | ||
109 | echo ====================================================== | ||
110 | if "%LUA%"=="luajit" ( | ||
111 | echo Installation of LuaJIT %LJ_VER% done. | ||
112 | ) else ( | ||
113 | echo Installation of Lua %LUA_VER% done. | ||
114 | ) | ||
115 | echo Platform - %platform% | ||
116 | echo LUA - %LUA% | ||
117 | echo LUA_SHORTV - %LUA_SHORTV% | ||
118 | echo LJ_SHORTV - %LJ_SHORTV% | ||
119 | echo. | ||
120 | echo ====================================================== | ||
121 | echo. | ||
122 | |||
123 | goto :eof | ||
124 | |||
125 | |||
126 | |||
127 | |||
128 | |||
129 | |||
130 | |||
131 | |||
132 | |||
133 | |||
134 | |||
135 | |||
136 | |||
137 | |||
138 | |||
139 | |||
140 | |||
141 | |||
142 | :: This blank space is intentional. If you see errors like "The system cannot find the batch label specified 'foo'" | ||
143 | :: then try adding or removing blank lines lines above. | ||
144 | :: Yes, really. | ||
145 | :: http://stackoverflow.com/questions/232651/why-the-system-cannot-find-the-batch-label-specified-is-thrown-even-if-label-e | ||
146 | |||
147 | :: helper functions: | ||
148 | |||
149 | :: for bailing out when an error occurred | ||
150 | :die %1 | ||
151 | echo %1 | ||
152 | exit /B 1 | ||
153 | goto :eof | ||
154 | |||