Skip to content

Commit 92953c1

Browse files
zhaojh329neheb
authored andcommitted
lua-cjson: add build VARIANT for Lua5.3
Signed-off-by: Jianhui Zhao <[email protected]>
1 parent 1302e50 commit 92953c1

File tree

2 files changed

+96
-4
lines changed

2 files changed

+96
-4
lines changed

lang/lua-cjson/Makefile

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
99

1010
PKG_NAME:=lua-cjson
1111
PKG_VERSION:=2.1.0
12-
PKG_RELEASE:=3
12+
PKG_RELEASE:=4
1313
PKG_MAINTAINER:=Dirk Chang <[email protected]>
1414
PKG_LICENSE:=MIT
1515
PKG_LICENSE_FILES:=LICENSE
@@ -18,31 +18,52 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
1818
PKG_SOURCE_URL:=https://kyne.au/~mark/software/download/
1919
PKG_HASH:=51bc69cd55931e0cba2ceae39e9efa2483f4292da3a88a1ed470eda829f6c778
2020

21+
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
22+
2123
HOST_BUILD_DEPENDS:=lua/host
2224

2325
include $(INCLUDE_DIR)/host-build.mk
2426
include $(INCLUDE_DIR)/package.mk
2527
include $(INCLUDE_DIR)/cmake.mk
2628

27-
define Package/lua-cjson
29+
define Package/lua-cjson/default
2830
SUBMENU:=Lua
2931
SECTION:=lang
3032
CATEGORY:=Languages
3133
TITLE:=Lua CJSON parser
3234
URL:=https://github.com/mpx/lua-cjson
33-
DEPENDS:= +lua
3435
endef
3536

36-
define Package/lua-cjson/description
37+
define Package/lua-cjson
38+
$(Package/lua-cjson/default)
39+
DEPENDS+=+liblua
40+
VARIANT:=lua-51
41+
endef
42+
43+
define Package/lua-cjson-lua5.3
44+
$(Package/lua-cjson/default)
45+
DEPENDS+=+liblua5.3
46+
VARIANT:=lua-53
47+
endef
48+
49+
define Package/lua-cjson/default/description
3750
Lua CJSON is a fast JSON encoding/parsing module for Lua.
3851
endef
3952

53+
define Package/lua-cjson-5.3/description
54+
Lua5.3 CJSON is a fast JSON encoding/parsing module for Lua.
55+
endef
56+
4057
CMAKE_OPTIONS += \
4158
-DUSE_LUA=ON
4259

4360
CMAKE_HOST_OPTIONS += \
4461
-DLUA_MATH_LIBRARY=m
4562

63+
ifeq ($(BUILD_VARIANT),lua-53)
64+
CMAKE_OPTIONS += -DUSE_LUA53=ON
65+
endif
66+
4667
define Package/lua-cjson/install
4768
$(INSTALL_DIR) $(1)/usr/lib/lua
4869
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson.so $(1)/usr/lib/lua/
@@ -51,5 +72,11 @@ define Package/lua-cjson/install
5172
$(INSTALL_DATA) $(PKG_BUILD_DIR)/lua/cjson/util.lua $(1)/usr/lib/lua/cjson
5273
endef
5374

75+
define Package/lua-cjson-lua5.3/install
76+
$(INSTALL_DIR) $(1)/usr/local/lib/lua/5.3
77+
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson.so $(1)/usr/local/lib/lua/5.3
78+
endef
79+
5480
$(eval $(call HostBuild))
5581
$(eval $(call BuildPackage,lua-cjson))
82+
$(eval $(call BuildPackage,lua-cjson-lua5.3))
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
--- a/lua_cjson.c
2+
+++ b/lua_cjson.c
3+
@@ -1227,7 +1227,10 @@ static void json_process_value(lua_State
4+
lua_pushlstring(l, token->value.string, token->string_len);
5+
break;;
6+
case T_NUMBER:
7+
- lua_pushnumber(l, token->value.number);
8+
+ if ((lua_Integer)token->value.number == token->value.number)
9+
+ lua_pushinteger(l, (lua_Integer)token->value.number);
10+
+ else
11+
+ lua_pushnumber(l, token->value.number);
12+
break;;
13+
case T_BOOLEAN:
14+
lua_pushboolean(l, token->value.boolean);
15+
--- a/CMakeLists.txt
16+
+++ b/CMakeLists.txt
17+
@@ -15,8 +15,19 @@ if(NOT CMAKE_BUILD_TYPE)
18+
FORCE)
19+
endif()
20+
21+
-find_package(Lua51 REQUIRED)
22+
-include_directories(${LUA_INCLUDE_DIR})
23+
+if(USE_LUA53)
24+
+ find_path(LUA53_INCLUDE_DIRS lua.h PATH_SUFFIXES lua5.3)
25+
+ find_library(LUA53_LIBRARIES lua5.3)
26+
+
27+
+ if (NOT LUA53_INCLUDE_DIRS OR NOT LUA53_LIBRARIES)
28+
+ message(FATAL_ERROR "Liblua 5.3 is required.")
29+
+ endif()
30+
+
31+
+ include_directories(${LUA53_INCLUDE_DIRS})
32+
+else()
33+
+ find_package(Lua51 REQUIRED)
34+
+ include_directories(${LUA_INCLUDE_DIR})
35+
+endif()
36+
37+
if(NOT USE_INTERNAL_FPCONV)
38+
# Use libc number conversion routines (strtod(), sprintf())
39+
@@ -51,7 +62,12 @@ if(NOT HAVE_ISINF)
40+
endif()
41+
42+
set(_MODULE_LINK "${CMAKE_THREAD_LIBS_INIT}")
43+
-get_filename_component(_lua_lib_dir ${LUA_LIBRARY} PATH)
44+
+
45+
+if(USE_LUA53)
46+
+ get_filename_component(_lua_lib_dir ${LUA53_LIBRARIES} PATH)
47+
+else()
48+
+ get_filename_component(_lua_lib_dir ${LUA_LIBRARY} PATH)
49+
+endif()
50+
51+
if(APPLE)
52+
set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS
53+
@@ -65,7 +81,11 @@ if(WIN32)
54+
# Windows sprintf()/strtod() handle NaN/inf differently. Not supported.
55+
add_definitions(-DDISABLE_INVALID_NUMBERS)
56+
else()
57+
- set(_lua_module_dir "${_lua_lib_dir}/lua/5.1")
58+
+ if(USE_LUA53)
59+
+ set(_lua_module_dir "${_lua_lib_dir}/lua/5.3")
60+
+ else()
61+
+ set(_lua_module_dir "${_lua_lib_dir}/lua/5.1")
62+
+ endif()
63+
endif()
64+
65+
add_library(cjson MODULE lua_cjson.c strbuf.c ${FPCONV_SOURCES})

0 commit comments

Comments
 (0)