lua-cjson: add build VARIANT for Lua5.4
authorJianhui Zhao <[email protected]>
Mon, 5 May 2025 13:32:12 +0000 (21:32 +0800)
committerTianling Shen <[email protected]>
Thu, 22 May 2025 07:59:55 +0000 (15:59 +0800)
Signed-off-by: Jianhui Zhao <[email protected]>
lang/lua-cjson/Makefile
lang/lua-cjson/patches/001-add-support-lua5-3.patch [deleted file]
lang/lua-cjson/patches/001-add-support-lua5-x.patch [new file with mode: 0644]

index 1e13d7256f4f6b4f6c1915528439c8361bc4268f..3a70707efbffea9d1b78e86e43a8b2b0e8a49b34 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lua-cjson
 PKG_VERSION:=2.1.0
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 PKG_MAINTAINER:=Dirk Chang <[email protected]>
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
@@ -46,13 +46,19 @@ define Package/lua-cjson-lua5.3
   VARIANT:=lua-53
 endef
 
+define Package/lua-cjson-lua5.4
+  $(Package/lua-cjson/default)
+  DEPENDS+=+liblua5.4
+  VARIANT:=lua-54
+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
+Package/lua-cjson/description = $(Package/lua-cjson/default/description)
+Package/lua-cjson-lua5.3/description = $(Package/lua-cjson/default/description)
+Package/lua-cjson-lua5.4/description = $(Package/lua-cjson/default/description)
 
 CMAKE_OPTIONS += \
        -DUSE_LUA=ON
@@ -64,6 +70,10 @@ ifeq ($(BUILD_VARIANT),lua-53)
   CMAKE_OPTIONS += -DUSE_LUA53=ON
 endif
 
+ifeq ($(BUILD_VARIANT),lua-54)
+  CMAKE_OPTIONS += -DUSE_LUA54=ON
+endif
+
 define Package/lua-cjson/install
        $(INSTALL_DIR) $(1)/usr/lib/lua
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson.so $(1)/usr/lib/lua/
@@ -77,6 +87,12 @@ define Package/lua-cjson-lua5.3/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson.so $(1)/usr/local/lib/lua/5.3
 endef
 
+define Package/lua-cjson-lua5.4/install
+       $(INSTALL_DIR) $(1)/usr/local/lib/lua/5.4
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson.so $(1)/usr/local/lib/lua/5.4
+endef
+
 $(eval $(call HostBuild))
 $(eval $(call BuildPackage,lua-cjson))
 $(eval $(call BuildPackage,lua-cjson-lua5.3))
+$(eval $(call BuildPackage,lua-cjson-lua5.4))
diff --git a/lang/lua-cjson/patches/001-add-support-lua5-3.patch b/lang/lua-cjson/patches/001-add-support-lua5-3.patch
deleted file mode 100644 (file)
index 0fe824e..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
---- 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})
diff --git a/lang/lua-cjson/patches/001-add-support-lua5-x.patch b/lang/lua-cjson/patches/001-add-support-lua5-x.patch
new file mode 100644 (file)
index 0000000..253cfbd
--- /dev/null
@@ -0,0 +1,78 @@
+--- 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,28 @@ if(NOT CMAKE_BUILD_TYPE)
+         FORCE)
+ endif()
+-find_package(Lua51 REQUIRED)
+-include_directories(${LUA_INCLUDE_DIR})
++if(USE_LUA54)
++    find_path(LUA54_INCLUDE_DIRS lua.h PATH_SUFFIXES lua5.4)
++    find_library(LUA54_LIBRARIES lua5.4)
++
++    if (NOT LUA54_INCLUDE_DIRS OR NOT LUA54_LIBRARIES)
++        message(FATAL_ERROR "Liblua 5.4 is required.")
++    endif()
++
++    include_directories(${LUA54_INCLUDE_DIRS})
++elseif(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 +71,14 @@ if(NOT HAVE_ISINF)
+ endif()
+ set(_MODULE_LINK "${CMAKE_THREAD_LIBS_INIT}")
+-get_filename_component(_lua_lib_dir ${LUA_LIBRARY} PATH)
++
++if(USE_LUA54)
++    get_filename_component(_lua_lib_dir ${LUA54_LIBRARIES} PATH)
++elseif(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 +92,13 @@ 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_LUA54)
++        set(_lua_module_dir "${_lua_lib_dir}/lua/5.4")
++    elseif(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})