This page describes the interface for package of functions like on_load(), on_install() or on_test() of the Package Dependencies

package:name

package:get

-- get the dependencies package:get("deps") -- get the links package:get("links") -- get the defined macros package:get("defines")

package:set

-- set the dependencies package:set("deps", "python") -- set the links package:set("links", "sdl2") -- set the defined macros package:set("defines", "SDL_MAIN_HANDLED")

package:add

-- add dependencies package:add("deps", "python") -- add links package:add("links", "sdl2") -- add defined macros package:add("defines", "SDL_MAIN_HANDLED")

package:license

package:description

package:plat

If the package is binary os.host is returned

package:arch

If the package is binary os.arch is returned

package:targetos

package:targetarch

package:is_plat

-- Is the current platform android? package:is_plat("android") -- Is the current platform windows, linux or macosx? package:is_plat("windows", "linux", "macosx")

package:is_arch

-- Is the current architecture x86 package:is_arch("x86") -- Is the current architecture x64 or x86_64 package:is_arch("x64", "x86_64")

package:is_targetos

-- Is the currently targeted OS windows? package:is_targetos("windows") -- Is the currently targeted OS android or iphoneos? package:is_targetos("android", "iphoneos")

package:is_targetarch

-- Is the currently targeted architecture x86 package:is_targetarch("x86") -- Is the currently targeted architecture x64 or x86_64 package:is_targetarch("x64", "x86_64")

package:alias

If the user sets an alias like so:

add_requires("libsdl", {alias = "sdl"})

This alias can be retrieved by

-- returns "sdl" package:alias()

package:urls

Retrieve the URLs set by:

add_urls("https://example.com/library-$(version).zip") -- or so set_urls("https://example.com/library-$(version).zip")

Then write this:

-- returns the table {"https://example.com/library-$(version).zip"} package:urls()

package:dep

local python = package:dep("python") -- returns "python" python:name()

package:deps

-- prints the names of all dependencies for _,dep in pairs(package:deps()) do print(dep:name()) end

package:sourcehash

If the checksum is provided like so:

add_urls("https://example.com/library-$(version).zip", {alias = "example"}) add_versions("example:2.4.1", "29f9983cc7196e882c4bc3d23d7492f9c47574c7cf658afafe7d00c185429941")

You can retrieve the checksum like so:

-- returns "29f9983cc7196e882c4bc3d23d7492f9c47574c7cf658afafe7d00c185429941" package:sourcehash("example") -- or so package:sourcehash(package:url_alias(package:urls()[1]))

package:kind

package:is_binary

package:is_toolchain

package:is_library

package:is_toplevel

package:is_thirdparty

package:is_debug

package:is_supported

package:debug

package:is_cross

package:cachedir

package:installdir

-- returns the installation directory package:installdir() -- returns the subdirectory include inside the installation directory package:installdir("include") -- returns the subdirectory include/files package:installdir("include", "files")

package:scriptdir

package:envs

package:getenv

-- returns a table package:getenv("PATH")

package:setenv

-- sets PATH to {"bin", "lib"} package:setenv("PATH", "bin", "lib")

package:addenv

-- adds "bin" and "lib" to PATH package:addenv("PATH", "bin", "lib")

package:versions

package:version

local version = package:version() -- get the major version version:major() -- get the minor version version:minor() -- get the patch version version:patch()

package:version_str

package:config

-- if configurations are set like so add_require("example", {configs = {enable_x = true, value_y = 6}}) -- these values can be retrieved like so -- returns true package:config("enable_x") -- returns 6 package:config("value_y")

package:config_set

package:config_set("enable_x", true) package:config_set("value_y", 6)

package:configs

-- returns a table with the configuration names as keys and their values as values local configs = package:configs() local enable_x = configs["enable_x"] local value_y = configs["value_y"]

package:buildhash

package:patches

-- returns a table with all patches local patches = package:patches() -- each element contains the keys "url" and "sha256" local url = patches[1]["url"] local sha256 = patches[1]["sha256"]

package:has_cfuncs

This should be used inside on_test like so:

on_test(function (package) assert(package:has_cfuncs("foo")) -- you can also add configs assert(package:has_cfuncs("bar", {includes = "foo_bar.h"})) assert(package:has_cfuncs("blob", {includes = "blob.h", configs = {defines = "USE_BLOB"}})) -- you can even set the language assert(package:has_cfuncs("bla", {configs = {languages = "c99"}})) end)

package:has_cxxfuncs

This should be used inside on_test like so:

on_test(function (package) assert(package:has_cxxfuncs("foo")) -- you can also add configs assert(package:has_cxxfuncs("bar", {includes = "foo_bar.hpp"})) assert(package:has_cxxfuncs("blob", {includes = "blob.hpp", configs = {defines = "USE_BLOB"}})) -- you can even set the language assert(package:has_cxxfuncs("bla", {configs = {languages = "cxx17"}})) end)

package:has_ctypes

This should be used inside on_test like so:

on_test(function (package) assert(package:has_ctypes("foo")) -- you can also add configs assert(package:has_ctypes("bar", {includes = "foo_bar.h"})) assert(package:has_ctypes("blob", {includes = "blob.h", configs = {defines = "USE_BLOB"}})) -- you can even set the language assert(package:has_ctypes("bla", {configs = {languages = "c99"}})) end)

package:has_cxxtypes

This should be used inside on_test like so:

on_test(function (package) assert(package:has_cxxtypes("foo")) -- you can also add configs assert(package:has_cxxtypes("bar", {includes = "foo_bar.hpp"})) assert(package:has_cxxtypes("blob", {includes = "blob.hpp", configs = {defines = "USE_BLOB"}})) -- you can even set the language assert(package:has_cxxtypes("bla", {configs = {languages = "cxx17"}})) end)

package:has_cincludes

This should be used in on_test like so:

on_test(function (package) assert(package:has_cincludes("foo.h")) end)

package:has_cxxincludes

This should be used in on_test like so:

on_test(function (package) assert(package:has_cxxincludes("foo.hpp")) end)

package:check_csnippets

This should be used in on_test like so:

on_test(function (package) assert(package:check_csnippets({test = [[ #define USE_BLOB #include <blob.h> void test(int argc, char** argv) { foo bar; printf("%s", bar.blob); } ]]}, {configs = {languages = "c99"}, includes = "foo.h"})) end)

package:check_cxxsnippets

This should be used in on_test like so:

on_test(function (package) assert(package:check_cxxsnippets({test = [[ #define USE_BLOB #include <blob.hpp> void test(int argc, char** argv) { foo bar(); std::cout << bar.blob; } ]]}, {configs = {languages = "cxx11"}, includes = "foo.hpp"})) end)