PKG_NAME:=lua-cjson
PKG_VERSION:=2.1.0
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
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
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/
$(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))
+++ /dev/null
---- 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})
--- /dev/null
+--- 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})