Browse Source

drogon: fixed cross compilation (#6895)

* fixed macos x86_64

* fixed cross compilation

* Update xmake.lua

* try to fix

* ci verbose

* remove macos cmake4

* add warning message

---------

Co-authored-by: star9029 <[email protected]>
RigelShrimp 5 months ago
parent
commit
0bf08261a6
1 changed files with 31 additions and 38 deletions
  1. 31 38
      packages/d/drogon/xmake.lua

+ 31 - 38
packages/d/drogon/xmake.lua

@@ -1,11 +1,11 @@
 package("drogon")
-
     set_homepage("https://github.com/an-tao/drogon/")
     set_description("Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows")
     set_license("MIT")
 
     add_urls("https://github.com/an-tao/drogon/archive/refs/tags/$(version).tar.gz",
-             "https://github.com/an-tao/drogon.git")
+             "https://github.com/an-tao/drogon.git", {submodules = false})
+
     add_versions("v1.9.10", "5de93fe16682388f363bb4b26ab00b0253d39108d8e7f53d5637c1b7da59a48f")
     add_versions("v1.9.9", "4155f78196902ef2f9d06b708897c9e8acaa1536cc4a8c8da9726ceb8ada2aaf")
     add_versions("v1.9.8", "62332a4882cc7db1c7cf04391b65c91ddf6fcbb49af129fc37eb0130809e0449")
@@ -53,16 +53,16 @@ package("drogon")
 
     add_deps("cmake")
     add_deps("jsoncpp", "brotli", "zlib")
+    if not is_plat("windows") then
+        add_deps("libuuid")
+    end
 
     if is_plat("windows") then
         -- enable mtt for drogon
         set_policy("package.msbuild.multi_tool_task", true)
         add_syslinks("ws2_32", "rpcrt4", "crypt32", "advapi32", "iphlpapi")
-    else
-        add_deps("libuuid")
-        if is_plat("linux") then
-            add_syslinks("pthread", "dl")
-        end
+    elseif is_plat("linux") then
+        add_syslinks("pthread", "dl")
     end
 
     on_load(function(package)
@@ -90,46 +90,39 @@ package("drogon")
         end
     end)
 
-    on_install("windows|!arm*", "macosx", "linux", function (package)
+    on_install("windows", "macosx", "linux", function (package)
+        if package:is_plat("macosx") and package:is_arch("x86_64") then
+            wprint([[package(drogon) unsupported cmake4 on macos/x86, please use `add_requireconfs("**.cmake", {override = true, version = "<4.0.0"})`]])
+        end
+
         io.replace("cmake/templates/config.h.in", "\"@COMPILATION_FLAGS@@DROGON_CXX_STANDARD@\"", "R\"(@COMPILATION_FLAGS@@DROGON_CXX_STANDARD@)\"", {plain = true})
         io.replace("cmake_modules/FindMySQL.cmake", "PATH_SUFFIXES mysql", "PATH_SUFFIXES mysql mariadb", {plain = true})
 
-        local configs = {"-DBUILD_EXAMPLES=OFF"}
-        local version = package:version()
-        if version:ge("1.8.4") then
-            table.insert(configs, "-DUSE_SUBMODULE=OFF")
-        end
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
-
-        -- no support for windows shared library
-        if not package:is_plat("windows") then
-            local shared = package:config("shared") and "ON" or "OFF"
-            if version:ge("1.8.0") then
-                table.insert(configs, "-DBUILD_SHARED_LIBS=" .. shared)
-            else
-                table.insert(configs, "-DBUILD_DROGON_SHARED=" .. shared)
-            end
-        end
+        local configs = {
+            "-DBUILD_EXAMPLES=OFF",
+            "-DUSE_SUBMODULE=OFF",
+            "-DBUILD_EXAMPLES=OFF",
+        }
+        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"))
+        table.insert(configs, "-DBUILD_DROGON_SHARED=" .. (package:config("shared") and "ON" or "OFF"))
+        table.insert(configs, "-DBUILD_CTL=" .. (package:is_cross() and "OFF" or "ON"))
 
         for name, enabled in pairs(package:configs()) do
             if not package:extraconf("configs", name, "builtin") then
-                    if name == "sqlite3" then
-                        table.insert(configs, "-DBUILD_SQLITE=" .. (enabled and "ON" or "OFF"))
-                    elseif name == "yaml" then
-                        if version:ge("1.8.4") then
-                            table.insert(configs, "-DBUILD_YAML_CONFIG=" .. (enabled and "ON" or "OFF"))
-                        end
-                    elseif name == "cpp20" then
-                        table.insert(configs, "-DCMAKE_CXX_STANDARD=20")
-                    else
-                        table.insert(configs, "-DBUILD_" .. name:upper() .. "="  .. (enabled and "ON" or "OFF"))
+                if name == "sqlite3" then
+                    table.insert(configs, "-DBUILD_SQLITE=" .. (enabled and "ON" or "OFF"))
+                elseif name == "yaml" then
+                    if package:version():ge("1.8.4") then
+                        table.insert(configs, "-DBUILD_YAML_CONFIG=" .. (enabled and "ON" or "OFF"))
                     end
+                elseif name == "cpp20" then
+                    table.insert(configs, "-DCMAKE_CXX_STANDARD=20")
+                else
+                    table.insert(configs, "-DBUILD_" .. name:upper() .. "="  .. (enabled and "ON" or "OFF"))
+                end
             end
         end
-
-        if package:config("pic") ~= false then
-            table.insert(configs, "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")
-        end
         import("package.tools.cmake").install(package, configs)
     end)