From 92953c1d7d72529950b2a167ff3782ed532d01ea Mon Sep 17 00:00:00 2001 From: Jianhui Zhao Date: Sun, 12 Jan 2025 20:07:48 +0800 Subject: [PATCH] lua-cjson: add build VARIANT for Lua5.3 Signed-off-by: Jianhui Zhao --- lang/lua-cjson/Makefile | 35 ++++++++-- .../patches/001-add-support-lua5-3.patch | 65 +++++++++++++++++++ 2 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 lang/lua-cjson/patches/001-add-support-lua5-3.patch diff --git a/lang/lua-cjson/Makefile b/lang/lua-cjson/Makefile index 9f76b88614..1e13d7256f 100644 --- a/lang/lua-cjson/Makefile +++ b/lang/lua-cjson/Makefile @@ -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 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)) diff --git a/lang/lua-cjson/patches/001-add-support-lua5-3.patch b/lang/lua-cjson/patches/001-add-support-lua5-3.patch new file mode 100644 index 0000000000..0fe824e7b5 --- /dev/null +++ b/lang/lua-cjson/patches/001-add-support-lua5-3.patch @@ -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}) -- 2.30.2