|
@@ -0,0 +1,69 @@
|
|
|
+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)
|