package An official xmake package repository
https://xrepo.xmake.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.3 KiB
69 lines
2.3 KiB
set_project("libmetalink") |
|
|
|
option("version", {showmenu = true, default = "0.1.3"}) |
|
|
|
set_version(get_config("version")) |
|
|
|
add_rules("mode.debug", "mode.release") |
|
|
|
add_requires("expat") |
|
add_packages("expat") |
|
|
|
includes("@builtin/check") |
|
|
|
configvar_check_cfuncs("HAVE_MALLOC_H", "malloc", {includes = "malloc.h"}) |
|
|
|
configvar_check_cincludes("HAVE_INTTYPES_H", "inttypes.h") |
|
configvar_check_cincludes("HAVE_ALLOCA_H", "alloca.h") |
|
configvar_check_cincludes("HAVE_TIME64_H", "time64.h") |
|
|
|
target("metalink") |
|
set_kind("$(kind)") |
|
add_files("lib/metalink_*.c", "lib/libexpat_metalink_parser.c") |
|
|
|
add_includedirs("lib/includes") |
|
add_headerfiles("lib/includes/(**.h)") |
|
|
|
add_defines("HAVE_CONFIG_H") |
|
add_includedirs(os.projectdir()) |
|
set_configdir(os.projectdir()) |
|
add_configfiles("config.h.in") |
|
add_configfiles("lib/includes/metalink/metalinkver.h.in", {prefixdir = "metalink", pattern = "@(.-)@"}) |
|
add_headerfiles("(metalink/metalinkver.h)") |
|
|
|
if is_plat("windows") then |
|
add_defines("strncasecmp=_strnicmp") |
|
add_defines("tzname=_tzname") |
|
if is_kind("shared") then |
|
add_rules("utils.symbols.export_all") |
|
end |
|
end |
|
|
|
on_config(function (target) |
|
import("core.base.semver") |
|
|
|
local version = get_config("version") |
|
if version then |
|
version = semver.new(version) |
|
local major = version:major() |
|
local minor = version:minor() |
|
local patch = version:patch() |
|
target:set("configvar", "MAJOR_VERSION", major) |
|
target:set("configvar", "MINOR_VERSION", minor) |
|
target:set("configvar", "PATCH_VERSION", patch) |
|
target:set("configvar", "PACKAGE_VERSION", get_config("version")) |
|
target:set("configvar", "NUMBER_VERSION", format("0x%02x%02x%02x", tonumber(major), tonumber(minor), tonumber(patch))) |
|
end |
|
|
|
if target:has_cfuncs("timegm", {includes = "time.h"}) then |
|
target:add("defines", "HAVE_TIMEGM") |
|
else |
|
target:add("files", path.join(os.projectdir(), "lib/timegm.c")) |
|
end |
|
|
|
if target:has_cfuncs("strptime", {includes = "time.h"}) then |
|
target:add("defines", "HAVE_STRPTIME") |
|
else |
|
target:add("files", path.join(os.projectdir(), "lib/strptime.c")) |
|
end |
|
end)
|
|
|