package("mxml")
    set_homepage("https://www.msweet.org/mxml/")
    set_description("Mini-XML is a tiny XML library that you can use to read and write XML and XML-like data files in your application without requiring large non-standard libraries.")
    set_license("Apache-2.0")

    add_urls("https://github.com/michaelrsweet/mxml/releases/download/v$(version)/mxml-$(version).zip")
    add_urls("https://github.com/michaelrsweet/mxml.git")

    add_versions("4.0.4", "01778f753d18df9284d0ffa8eab42beda5adcfc2aba5ab8552a741c42eb3a744")
    add_versions("4.0.3", "a6201ad26ff3d14a84bc0027646ee89aeee858f0c9e69c166bb9705ba1eb55e7")
    add_versions("4.0.2", "7506c88640ae4bcf9b2f50edc6eb32c47b367df9da3dfa24654456b3b45be3a9")
    add_versions("3.3.1", "ca6b05725184866b9e5874329e98be22cbbdc1e733789e08b55b088be207484a")
    add_versions("3.3", "fca59b0d7fae2b9165c223cdce68e45dbf41e21e5e53190d8b214218b8353380")

    if is_plat("macosx", "linux") then
        add_syslinks("pthread")
    end

    on_install("windows", "macosx", "linux", function (package)
        io.gsub("config.h.in", "#undef (.-)\n", "${define %1}\n")
        io.writefile("xmake.lua", [[
            add_rules("mode.debug", "mode.release")
            includes("@builtin/check")
            if is_plat("macosx", "linux") then
                set_configvar("HAVE_PTHREAD_H", 1)
            end
            configvar_check_ctypes("HAVE_LONG_LONG_INT", "long long int")
            configvar_check_cfuncs("HAVE_SNPRINTF", "snprintf", {includes = "stdio.h"})
            configvar_check_cfuncs("HAVE_VASPRINTF", "vasprintf", {includes = "stdio.h", defines = "_GNU_SOURCE"})
            configvar_check_cfuncs("HAVE_VSNPRINTF", "vsnprintf", {includes = "stdio.h"})
            configvar_check_cfuncs("HAVE_STRDUP", "strdup", {includes = "string.h"})
            configvar_check_cfuncs("HAVE_STRLCAT", "strlcat", {includes = "string.h"})
            configvar_check_cfuncs("HAVE_STRLCPY", "strlcpy", {includes = "string.h"})
            target("mxml")
                set_kind("$(kind)")
                add_files("mxml-*.c")
                add_configfiles("config.h.in")
                add_includedirs("$(buildir)")
                add_headerfiles("mxml.h")
                if is_plat("macosx", "linux") then
                    add_syslinks("pthread")
                end
                if is_plat("windows") and is_kind("shared") then
                    add_rules("utils.symbols.export_all")
                end
        ]])
        import("package.tools.xmake").install(package)
    end)

    on_test(function (package)
        assert(package:has_cfuncs("mxmlLoadFile", {includes = "mxml.h"}))
    end)
