Jelajahi Sumber

librttopo: add package (#8386)

star9029 2 bulan lalu
induk
melakukan
b229dfb4b0
1 mengubah file dengan 65 tambahan dan 0 penghapusan
  1. 65 0
      packages/l/librttopo/xmake.lua

+ 65 - 0
packages/l/librttopo/xmake.lua

@@ -0,0 +1,65 @@
+package("librttopo")
+    set_homepage("https://git.osgeo.org/gitea/rttopo/librttopo")
+    set_description("RT Topology Library")
+    set_license("GPL-2.0-or-later")
+
+    add_urls("https://gitlab.com/rttopo/rttopo/-/archive/librttopo-$(version)/rttopo-librttopo-$(version).tar.bz2", {alias = "gitlab"})
+    add_urls("https://github.com/CGX-GROUP/librttopo.git",
+             "https://gitlab.com/rttopo/rttopo", {alias = "git"})
+
+    add_versions("gitlab:1.1.0", "4b28732c0322849c8754751a384ee3596d06ab316dfc57fe9bbe757c82a27efe")
+
+    add_versions("git:1.1.0", "librttopo-1.1.0")
+
+    add_deps("geos")
+
+    if is_plat("linux", "bsd") then
+        add_syslinks("m")
+    end
+
+    if on_check then
+        on_check("android", function (package)
+            local ndk = package:toolchain("ndk"):config("ndkver")
+            assert(ndk and tonumber(ndk) > 22, "package(librttopo) dep(geos) require ndk version > 22")
+        end)
+    end
+
+    on_install(function (package)
+        local geos_ver = assert(package:dep("geos"):version(), "geos version not found")
+        os.touch("src/rttopo_config.h")
+        io.writefile("xmake.lua", string.format([[
+            option("ver", {default = "%s"})
+            add_rules("mode.debug", "mode.release")
+            add_requires("geos")
+            target("rttopo")
+                set_kind("$(kind)")
+                add_files("src/*.c")
+                add_includedirs("headers")
+                add_headerfiles("headers/*.h")
+                add_defines("RTGEOM_DEBUG_LEVEL=0")
+                if has_config("ver") then
+                    add_defines("LIBRTGEOM_VERSION=\"" .. get_config("ver") .. "\"")
+                    add_defines("RTGEOM_GEOS_VERSION=%s")
+                    set_version(get_config("ver"), {soname = true})
+                end
+
+                set_configdir("headers")
+                add_configfiles("headers/librttopo_geom.h.in", {pattern = "@(SRID_.-)@"})
+                -- from https://github.com/conan-io/conan-center-index/blob/fcbc22cd090862c62de0332f9d3aac08620d53ca/recipes/librttopo/all/CMakeLists.txt#L6-L7
+                set_configvar("SRID_MAX", "999999")
+                set_configvar("SRID_USR_MAX", "998999")
+
+                if is_kind("shared") and is_plat("windows") then
+                    add_rules("utils.symbols.export_all")
+                end
+                if is_plat("linux", "bsd") then
+                    add_syslinks("m")
+                end
+                add_packages("geos")
+        ]], package:version_str(), (geos_ver:major() .. geos_ver:minor())))
+        import("package.tools.xmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("rtgeom_version", {includes = "librttopo.h"}))
+    end)