Ver Fonte

reflect-cpp: fix deps (#4466)

* reflect-cpp: fix deps

* fix wasm

* remove find_package on wasm
star9029 há 1 ano atrás
pai
commit
e81e21e7c1

+ 46 - 0
packages/r/reflect-cpp/patches/0.11.1/cmake.patch

@@ -0,0 +1,46 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e537c90..ea16a73 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -38,20 +38,16 @@ if(REFLECTCPP_USE_BUNDLED_DEPENDENCIES)
+         add_library(reflectcpp STATIC src/yyjson.c)
+     endif()
+ else()
+-    if (REFLECTCPP_BUILD_SHARED)
+-        add_library(reflectcpp SHARED)
+-    else()
+-        add_library(reflectcpp STATIC)
+-    endif()
++    add_library(reflectcpp INTERFACE)
+ endif()
+ 
+ set_target_properties(reflectcpp PROPERTIES LINKER_LANGUAGE CXX)
+-target_compile_features(reflectcpp PUBLIC cxx_std_20)
++target_compile_features(reflectcpp INTERFACE cxx_std_20)
+ 
+ if(REFLECTCPP_USE_BUNDLED_DEPENDENCIES)
+     target_include_directories(reflectcpp PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/rfl/thirdparty>)
+ else()
+-    target_include_directories(reflectcpp PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include> )
++    target_include_directories(reflectcpp INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include> )
+     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DREFLECTCPP_NO_BUNDLED_DEPENDENCIES")
+     find_package(ctre CONFIG REQUIRED)
+     find_package(yyjson CONFIG REQUIRED)
+@@ -103,7 +99,7 @@ if (REFLECTCPP_YAML OR REFLECTCPP_BUILD_BENCHMARKS)
+     target_link_libraries(reflectcpp INTERFACE yaml-cpp::yaml-cpp)
+ endif ()
+ 
+-target_compile_options(reflectcpp PRIVATE -Wall)
++# target_compile_options(reflectcpp PRIVATE -Wall)
+ 
+ if (REFLECTCPP_BUILD_TESTS)
+     if (MSVC)
+@@ -137,7 +133,7 @@ install(
+ file(GLOB_RECURSE RFL_HEADERS RELATIVE ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR}/include/*" )
+ 
+ target_sources(reflectcpp
+-    PUBLIC
++    INTERFACE
+     FILE_SET reflectcpp_headers    
+     TYPE HEADERS
+     BASE_DIRS $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>

+ 16 - 8
packages/r/reflect-cpp/xmake.lua

@@ -10,6 +10,7 @@ package("reflect-cpp")
     add_versions("v0.11.1", "e45f112fb3f14507a4aa53b99ae2d4ab6a4e7b2d5f04dd06fec00bf7faa7bbdc")
     add_versions("v0.10.0", "d2c8876d993ddc8c57c5804e767786bdb46a2bdf1a6cd81f4b14f57b1552dfd7")
 
+    add_patches("0.11.1", "patches/0.11.1/cmake.patch", "a43ae2c6de455054ab860adfb309da7bd376c31c493c8bab0ebe07aae0805205")
     add_patches("0.10.0", "patches/0.10.0/cmake.patch", "b8929c0a13bd4045cbdeea0127e08a784e2dc8c43209ca9f056fff4a3ab5c4d3")
 
     add_configs("bson", {description = "Enable Bson Support.", default = false, type = "boolean", readonly = true})
@@ -25,13 +26,8 @@ package("reflect-cpp")
 
     on_check(function (package)
         if package:is_plat("windows") then
-            import("core.tool.toolchain")
-
-            local msvc = toolchain.load("msvc", {plat = package:plat(), arch = package:arch()})
-            if msvc then
-                local vs = msvc:config("vs")
-                assert(vs and tonumber(vs) >= 2022, "package(reflect-cpp): need vs >= 2022")
-            end
+            local vs = package:toolchain("msvc"):config("vs")
+            assert(vs and tonumber(vs) >= 2022, "package(reflect-cpp): need vs >= 2022")
         else
             assert(package:check_cxxsnippets({test = [[
                 #include <ranges>
@@ -74,10 +70,22 @@ package("reflect-cpp")
         if package:config("yaml") then
             package:add("deps", "yaml-cpp")
         end
+
+        local version = package:version()
+        if version and version:ge("0.11.1") then
+            package:add("deps", "ctre")
+            package:add("defines", "REFLECTCPP_NO_BUNDLED_DEPENDENCIES")
+        end
     end)
 
     on_install(function (package)
-        import("package.tools.cmake").install(package)
+        local version = package:version()
+        if version and version:ge("0.11.1") and package:is_plat("wasm") then
+            io.replace("CMakeLists.txt", "find_package(ctre CONFIG REQUIRED)", "", {plain = true})
+            io.replace("CMakeLists.txt", "find_package(yyjson CONFIG REQUIRED)", "", {plain = true})
+            io.replace("CMakeLists.txt", "target_link_libraries(reflectcpp INTERFACE yyjson::yyjson)", "", {plain = true})
+        end
+        import("package.tools.cmake").install(package, {"-DREFLECTCPP_USE_BUNDLED_DEPENDENCIES=OFF"})
     end)
 
     on_test(function (package)

+ 31 - 15
packages/y/yyjson/xmake.lua

@@ -1,10 +1,11 @@
 package("yyjson")
-
     set_homepage("https://github.com/ibireme/yyjson")
     set_description("The fastest JSON library in C.")
+    set_license("MIT")
 
     add_urls("https://github.com/ibireme/yyjson/archive/$(version).tar.gz",
              "https://github.com/ibireme/yyjson.git")
+
     add_versions("0.9.0", "59902bea55585d870fd7681eabe6091fbfd1a8776d1950f859d2dbbd510c74bd")
     add_versions("0.8.0", "b2e39ac4c65f9050820c6779e6f7dd3c0d3fed9c6667f91caec0badbedce00f3")
     add_versions("0.5.1", "b484d40b4e20cc3174a6fdc160d0f20f961417f9cb3f6dc1cf6555fffa8359f3")
@@ -13,22 +14,37 @@ package("yyjson")
     add_versions("0.3.0", "f5ad3e3be40f0307a732c2b8aff9a1ba6014a6b346f3ec0b128459607748e990")    
     add_versions("0.2.0", "43aacdc6bc3876dc1322200c74031b56d8d7838c04e46ca8a8e52e37ea6128da")
 
+    on_load(function (package)
+        local version = package:version()
+        if version and version:ge("0.9.0") then
+            package:add("deps", "cmake")
+        end
+    end)
+
     on_install(function (package)
-        io.writefile("xmake.lua", [[
-            add_rules("mode.debug", "mode.release")
-            target("yyjson")
-                set_kind("$(kind)")
-                add_files("src/*.c")
-                add_headerfiles("src/*.h")
-                if is_kind("shared") and is_plat("windows") then
-                    add_defines("YYJSON_EXPORTS")
-                end
-        ]])
-        local configs = {}
-        if package:config("shared") then
-            configs.kind = "shared"
+        local version = package:version()
+        if version and version:ge("0.9.0") then
+            local configs = {}
+            table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+            table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+            import("package.tools.cmake").install(package, configs)
+
+            if package:config("shared") and package:is_plat("windows") then
+                package:add("defines", "YYJSON_IMPORTS")
+            end
+        else
+            io.writefile("xmake.lua", [[
+                add_rules("mode.debug", "mode.release")
+                target("yyjson")
+                    set_kind("$(kind)")
+                    add_files("src/*.c")
+                    add_headerfiles("src/*.h")
+                    if is_kind("shared") and is_plat("windows") then
+                        add_defines("YYJSON_EXPORTS")
+                    end
+            ]])
+            import("package.tools.xmake").install(package)
         end
-        import("package.tools.xmake").install(package, configs)
     end)
 
     on_test(function (package)