diff --git a/packages/a/autotools/xmake.lua b/packages/a/autotools/xmake.lua new file mode 100644 index 000000000..888d52a7b --- /dev/null +++ b/packages/a/autotools/xmake.lua @@ -0,0 +1,11 @@ +package("autotools") + set_kind("binary") + + if is_subhost("msys") then + add_deps("pacman::autotools") + else + add_deps("autoconf", "automake", "libtool") + end + + on_install("@linux", "@macosx", "@bsd", "@msys", function (package) + end) diff --git a/packages/l/libplist/port/xmake.lua b/packages/l/libplist/port/xmake.lua new file mode 100644 index 000000000..4f693e783 --- /dev/null +++ b/packages/l/libplist/port/xmake.lua @@ -0,0 +1,23 @@ +option("version", {default = "2.6.0"}) + +add_rules("mode.debug", "mode.release") + +if not is_plat("windows", "mingw", "msys") then + add_defines("HAVE_STRNDUP") +end + +local version = get_config("version") +if version then + set_version(version, {soname = true}) + add_defines("PACKAGE_VERSION=\"" .. version .. "\"") +end + +target("plist") + set_kind("$(kind)") + add_files("libcnary/*.c|cnary.c", "src/*.c") + add_includedirs("src", "include", "libcnary/include") + add_headerfiles("include/(plist/*.h)") + + if is_kind("static") then + add_defines("LIBPLIST_STATIC") + end diff --git a/packages/l/libplist/xmake.lua b/packages/l/libplist/xmake.lua index c8126f1b0..887b9e84e 100644 --- a/packages/l/libplist/xmake.lua +++ b/packages/l/libplist/xmake.lua @@ -1,31 +1,68 @@ package("libplist") - set_homepage("https://www.libimobiledevice.org/") set_description("Library for Apple Binary- and XML-Property Lists") set_license("LGPL-2.1") - set_urls("https://github.com/libimobiledevice/libplist/archive/$(version).tar.gz", + set_urls("https://github.com/libimobiledevice/libplist/archive/refs/tags/$(version).tar.gz", "https://github.com/libimobiledevice/libplist.git") + + add_versions("2.6.0", "e6491c2fa3370e556ac41b8705dd7f8f0e772c8f78641c3878cabd45bd84d950") add_versions("2.2.0", "7e654bdd5d8b96f03240227ed09057377f06ebad08e1c37d0cfa2abe6ba0cee2") - add_deps("autoconf", "automake", "libtool", "pkg-config") + if is_plat("wasm") then + add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true}) + end - if is_plat("linux") then + if is_plat("linux", "bsd") then add_syslinks("pthread") end - on_install("macosx", "linux", "mingw@macosx", "iphoneos", "cross", function (package) - local configs = {"--disable-dependency-tracking", - "--disable-silent-rules", - "--without-cython"} - table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no")) - table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes")) - local cxflags - if package:is_plat("linux") and package:config("pic") ~= false then - cxflags = "-fPIC" + if on_check then + on_check(function (package) + if package:is_plat("windows") and package:has_tool("cxx", "cl") then + raise("package(libplist) unsupported msvc toolchain now, you can use clang toolchain\nadd_requires(\"libplist\", {configs = {toolchains = \"clang-cl\"}}))") + end + end) + end + + on_load(function (package) + if not (is_subhost("windows") or package:is_plat("windows", "android", "wasm")) then + package:add("deps", "autotools") + end + + if not package:config("shared") then + package:add("defines", "LIBPLIST_STATIC") + end + end) + + on_install(function (package) + local version = package:version() + + if is_subhost("windows") or package:is_plat("windows", "android", "wasm") then + local configs = {} + if version then + configs.version = version + end + os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua") + import("package.tools.xmake").install(package, configs) + else + if version and version:eq("2.2.0") then + io.replace("src/plist.c", "void thread_once", "static void thread_once") + end + + local configs = { + "--disable-dependency-tracking", + "--disable-silent-rules", + "--without-cython", + } + table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no")) + table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes")) + + if version then + table.insert(configs, "PACKAGE_VERSION=" .. version) + end + import("package.tools.autoconf").install(package, configs) end - io.replace("src/plist.c", "void thread_once", "static void thread_once") - import("package.tools.autoconf").install(package, configs, {cxflags = cxflags}) end) on_test(function (package)