lua-cjson: add build VARIANT for Lua5.3

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
This commit is contained in:
Jianhui Zhao
2025-01-12 20:07:48 +08:00
committed by Rosen Penev
parent 1302e503a3
commit 92953c1d7d
2 changed files with 96 additions and 4 deletions

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=lua-cjson
PKG_VERSION:=2.1.0
PKG_RELEASE:=3
PKG_RELEASE:=4
PKG_MAINTAINER:=Dirk Chang <dirk@kooiot.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
@@ -18,31 +18,52 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://kyne.au/~mark/software/download/
PKG_HASH:=51bc69cd55931e0cba2ceae39e9efa2483f4292da3a88a1ed470eda829f6c778
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
HOST_BUILD_DEPENDS:=lua/host
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/lua-cjson
define Package/lua-cjson/default
SUBMENU:=Lua
SECTION:=lang
CATEGORY:=Languages
TITLE:=Lua CJSON parser
URL:=https://github.com/mpx/lua-cjson
DEPENDS:= +lua
endef
define Package/lua-cjson/description
define Package/lua-cjson
$(Package/lua-cjson/default)
DEPENDS+=+liblua
VARIANT:=lua-51
endef
define Package/lua-cjson-lua5.3
$(Package/lua-cjson/default)
DEPENDS+=+liblua5.3
VARIANT:=lua-53
endef
define Package/lua-cjson/default/description
Lua CJSON is a fast JSON encoding/parsing module for Lua.
endef
define Package/lua-cjson-5.3/description
Lua5.3 CJSON is a fast JSON encoding/parsing module for Lua.
endef
CMAKE_OPTIONS += \
-DUSE_LUA=ON
CMAKE_HOST_OPTIONS += \
-DLUA_MATH_LIBRARY=m
ifeq ($(BUILD_VARIANT),lua-53)
CMAKE_OPTIONS += -DUSE_LUA53=ON
endif
define Package/lua-cjson/install
$(INSTALL_DIR) $(1)/usr/lib/lua
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson.so $(1)/usr/lib/lua/
@@ -51,5 +72,11 @@ define Package/lua-cjson/install
$(INSTALL_DATA) $(PKG_BUILD_DIR)/lua/cjson/util.lua $(1)/usr/lib/lua/cjson
endef
define Package/lua-cjson-lua5.3/install
$(INSTALL_DIR) $(1)/usr/local/lib/lua/5.3
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson.so $(1)/usr/local/lib/lua/5.3
endef
$(eval $(call HostBuild))
$(eval $(call BuildPackage,lua-cjson))
$(eval $(call BuildPackage,lua-cjson-lua5.3))

View File

@@ -0,0 +1,65 @@
--- a/lua_cjson.c
+++ b/lua_cjson.c
@@ -1227,7 +1227,10 @@ static void json_process_value(lua_State
lua_pushlstring(l, token->value.string, token->string_len);
break;;
case T_NUMBER:
- lua_pushnumber(l, token->value.number);
+ if ((lua_Integer)token->value.number == token->value.number)
+ lua_pushinteger(l, (lua_Integer)token->value.number);
+ else
+ lua_pushnumber(l, token->value.number);
break;;
case T_BOOLEAN:
lua_pushboolean(l, token->value.boolean);
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,8 +15,19 @@ if(NOT CMAKE_BUILD_TYPE)
FORCE)
endif()
-find_package(Lua51 REQUIRED)
-include_directories(${LUA_INCLUDE_DIR})
+if(USE_LUA53)
+ find_path(LUA53_INCLUDE_DIRS lua.h PATH_SUFFIXES lua5.3)
+ find_library(LUA53_LIBRARIES lua5.3)
+
+ if (NOT LUA53_INCLUDE_DIRS OR NOT LUA53_LIBRARIES)
+ message(FATAL_ERROR "Liblua 5.3 is required.")
+ endif()
+
+ include_directories(${LUA53_INCLUDE_DIRS})
+else()
+ find_package(Lua51 REQUIRED)
+ include_directories(${LUA_INCLUDE_DIR})
+endif()
if(NOT USE_INTERNAL_FPCONV)
# Use libc number conversion routines (strtod(), sprintf())
@@ -51,7 +62,12 @@ if(NOT HAVE_ISINF)
endif()
set(_MODULE_LINK "${CMAKE_THREAD_LIBS_INIT}")
-get_filename_component(_lua_lib_dir ${LUA_LIBRARY} PATH)
+
+if(USE_LUA53)
+ get_filename_component(_lua_lib_dir ${LUA53_LIBRARIES} PATH)
+else()
+ get_filename_component(_lua_lib_dir ${LUA_LIBRARY} PATH)
+endif()
if(APPLE)
set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS
@@ -65,7 +81,11 @@ if(WIN32)
# Windows sprintf()/strtod() handle NaN/inf differently. Not supported.
add_definitions(-DDISABLE_INVALID_NUMBERS)
else()
- set(_lua_module_dir "${_lua_lib_dir}/lua/5.1")
+ if(USE_LUA53)
+ set(_lua_module_dir "${_lua_lib_dir}/lua/5.3")
+ else()
+ set(_lua_module_dir "${_lua_lib_dir}/lua/5.1")
+ endif()
endif()
add_library(cjson MODULE lua_cjson.c strbuf.c ${FPCONV_SOURCES})