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.
 
 
 

84 lines
3.3 KiB

package("skia")
set_homepage("https://skia.org/")
set_description("A complete 2D graphic library for drawing Text, Geometries, and Images.")
set_urls("https://skia.googlesource.com/skia.git",
"https://github.com/google/skia.git")
add_versions("68046c", "68046cd7be837bd31bc8f0e821a2f82a02dda9cf")
add_deps("python2", "ninja", {kind = "binary"})
add_links("skia")
add_includedirs("include")
add_includedirs("include/android")
add_includedirs("include/atlastext")
add_includedirs("include/c")
add_includedirs("include/codec")
add_includedirs("include/config")
add_includedirs("include/core")
add_includedirs("include/docs")
add_includedirs("include/effects")
add_includedirs("include/encode")
add_includedirs("include/gpu")
add_includedirs("include/pathops")
add_includedirs("include/ports")
add_includedirs("include/private")
add_includedirs("include/svg")
add_includedirs("include/third_party")
add_includedirs("include/utils")
-- @note windows: only can build for vs2017 or vs2015 update 3
on_install("macosx", "linux", "windows", function (package)
local pathes = os.getenv("PATH") or ""
pathes = pathes .. path.envsep() .. path.join(os.curdir(), "depot_tools")
pathes = pathes .. path.envsep() .. path.join(os.curdir(), "bin")
local args = {is_official_build = false,
is_component_build = false,
is_debug = package:debug(),
skia_enable_gpu = true,
skia_enable_pdf = false,
skia_enable_nvpr = false,
skia_enable_tools = false,
skia_use_icu = false,
skia_use_sfntly = false,
skia_use_piex = false,
skia_use_freetype = false,
skia_use_harfbuzz = false,
skia_use_libheif = false,
skia_use_expat = false,
skia_use_libjpeg_turbo = false,
skia_use_libpng = false,
skia_use_libwebp = false,
skia_use_zlib = false}
args.cc = package:build_getenv("cc")
args.cxx = package:build_getenv("cxx")
local argstr = ""
for k, v in pairs(args) do
if type(v) == "string" then
argstr = argstr .. ' ' .. k .. '=\"' .. v .. "\""
else
argstr = argstr .. ' ' .. k .. '=' .. tostring(v)
end
end
os.vrun("python2 tools/git-sync-deps")
os.vrun("bin/gn gen build --args='%s'", argstr:trim())
os.vrun("ninja -C build")
os.cp("include", package:installdir())
os.cp("third_party/skcms/*.h", package:installdir("third_party/skcms"))
if is_plat("windows") then
os.cp("build/*.lib", package:installdir("lib"))
else
os.cp("build/*.a", package:installdir("lib"))
end
end)
on_test(function (package)
assert(package:check_cxxsnippets({test = [[
static void test() {
SkPaint paint;
paint.setStyle(SkPaint::kFill_Style);
}
]]}, {configs = {languages = "c++14"}, includes = "core/SkPaint.h", defines = "DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN"}))
end)