aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt59
-rw-r--r--src/yuescript/yuescript.cpp6
-rw-r--r--yuescript-dev-1.rockspec2
3 files changed, 46 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2de475c..fc2c234 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,27 +1,50 @@
1project(yue CXX) 1project(yue CXX)
2cmake_minimum_required(VERSION 3.1) 2cmake_minimum_required(VERSION 3.1)
3 3
4set(LUA_LIBDIR ${LUA_INCDIR}/../lib " " ${LUA_INCDIR}/../../lib) 4set(LUA_LIBDIR ${LUA_INCDIR}/../lib ${LUA_INCDIR}/../../lib)
5set(LUA_INCLUDE_DIR "${LUA_INCDIR}")
6
7get_filename_component(LUA_EXEC_NAME ${LUA} NAME)
8if (LUA_EXEC_NAME STREQUAL "luajit")
9 find_library(LUA_LIBRARIES
10 NAMES luajit libluajit
11 PATHS ${LUA_LIBDIR}
12 NO_DEFAULT_PATH)
13elseif (LUA_EXEC_NAME MATCHES "lua5\.4" OR LUA_EXEC_NAME MATCHES "lua54")
14 find_library(LUA_LIBRARIES
15 NAMES lua54 lua5.4 liblua54 liblua5.4 lua liblua
16 PATHS ${LUA_LIBDIR}
17 NO_DEFAULT_PATH)
18elseif (LUA_EXEC_NAME MATCHES "lua5\.3" OR LUA_EXEC_NAME MATCHES "lua53")
19 find_library(LUA_LIBRARIES
20 NAMES lua53 lua5.3 liblua53 liblua5.3 lua liblua
21 PATHS ${LUA_LIBDIR}
22 NO_DEFAULT_PATH)
23elseif (LUA_EXEC_NAME MATCHES "lua5\.2" OR LUA_EXEC_NAME MATCHES "lua52")
24 find_library(LUA_LIBRARIES
25 NAMES lua52 lua5.2 liblua52 liblua5.2 lua liblua
26 PATHS ${LUA_LIBDIR}
27 NO_DEFAULT_PATH)
28elseif (LUA_EXEC_NAME MATCHES "lua5\.1" OR LUA_EXEC_NAME MATCHES "lua51")
29 find_library(LUA_LIBRARIES
30 NAMES lua51 lua5.1 liblua51 liblua5.1 lua liblua
31 PATHS ${LUA_LIBDIR}
32 NO_DEFAULT_PATH)
33else ()
34 find_library(LUA_LIBRARIES
35 NAMES lua liblua
36 PATHS ${LUA_LIBDIR}
37 NO_DEFAULT_PATH)
38endif()
5 39
6find_package(Lua) 40if (LUA_LIBRARIES MATCHES "LUA_LIBRARIES-NOTFOUND")
7if (LUA_FOUND) 41 find_package(Lua)
8 set(LUA_LIBRARIES "${LUA_LIBRARY}") 42 if (LUA_FOUND)
43 set(LUA_LIBRARIES "${LUA_LIBRARY}")
44 endif()
9else () 45else ()
10 message(STATUS "Lua: using information from luarocks") 46 message(STATUS "Lua: using information from luarocks")
11 set(LUA_INCLUDE_DIR "${LUA_INCDIR}") 47endif()
12 get_filename_component(LUA_EXEC_NAME ${LUA} NAME_WE)
13 if (LUA_EXEC_NAME STREQUAL "luajit")
14 find_library(LUA_LIBRARIES
15 NAMES luajit libluajit
16 PATHS ${LUA_LIBDIR}
17 NO_DEFAULT_PATH)
18 elseif ()
19 find_library(LUA_LIBRARIES
20 NAMES lua lua54 lua53 lua52 lua51 liblua liblua54 liblua53 liblua52 liblua51 liblua5.4 liblua5.3 liblua5.2 liblua5.1
21 PATHS ${LUA_LIBDIR}
22 NO_DEFAULT_PATH)
23 endif()
24endif()
25 48
26message(STATUS "Lua: " ${LUA}) 49message(STATUS "Lua: " ${LUA})
27message(STATUS "Lua include: " ${LUA_INCLUDE_DIR}) 50message(STATUS "Lua include: " ${LUA_INCLUDE_DIR})
diff --git a/src/yuescript/yuescript.cpp b/src/yuescript/yuescript.cpp
index 20fa258..ed09aaa 100644
--- a/src/yuescript/yuescript.cpp
+++ b/src/yuescript/yuescript.cpp
@@ -161,7 +161,7 @@ struct yue_stack {
161static int yuetoast(lua_State* L) { 161static int yuetoast(lua_State* L) {
162 size_t size = 0; 162 size_t size = 0;
163 const char* input = luaL_checklstring(L, 1, &size); 163 const char* input = luaL_checklstring(L, 1, &size);
164 int flattenLevel = 2; 164 int flattenLevel = 0;
165 if (lua_isnoneornil(L, 2) == 0) { 165 if (lua_isnoneornil(L, 2) == 0) {
166 flattenLevel = static_cast<int>(luaL_checkinteger(L, 2)); 166 flattenLevel = static_cast<int>(luaL_checkinteger(L, 2));
167 flattenLevel = std::max(std::min(2, flattenLevel), 0); 167 flattenLevel = std::max(std::min(2, flattenLevel), 0);
@@ -270,8 +270,10 @@ static int yuetoast(lua_State* L) {
270 lua_pushinteger(L, node->m_begin.m_col); 270 lua_pushinteger(L, node->m_begin.m_col);
271 lua_rawseti(L, -2, 3); 271 lua_rawseti(L, -2, 3);
272 for (int i = count, j = 4; i >= 1; i--, j++) { 272 for (int i = count, j = 4; i >= 1; i--, j++) {
273 lua_rawgeti(L, tableIndex, len); 273 lua_rawgeti(L, tableIndex, len - i + 1);
274 lua_rawseti(L, -2, j); 274 lua_rawseti(L, -2, j);
275 }
276 for (int i = 1; i <= count; i++) {
275 lua_pushnil(L); 277 lua_pushnil(L);
276 lua_rawseti(L, tableIndex, len); 278 lua_rawseti(L, tableIndex, len);
277 len--; 279 len--;
diff --git a/yuescript-dev-1.rockspec b/yuescript-dev-1.rockspec
index bcf4933..397254b 100644
--- a/yuescript-dev-1.rockspec
+++ b/yuescript-dev-1.rockspec
@@ -19,8 +19,8 @@ dependencies = {
19build = { 19build = {
20 type = "cmake", 20 type = "cmake",
21 variables = { 21 variables = {
22 LUA_INCDIR = "$(LUA_INCDIR)",
23 LUA = "$(LUA)", 22 LUA = "$(LUA)",
23 LUA_INCDIR = "$(LUA_INCDIR)",
24 CMAKE_BUILD_TYPE="Release" 24 CMAKE_BUILD_TYPE="Release"
25 }, 25 },
26 install = { 26 install = {