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.

99 lines
4.1 KiB

set_project("libass")
add_requires("freetype", "fribidi", "harfbuzz")
includes("check_cfuncs.lua")
add_rules("mode.debug", "mode.release")
if is_plat("windows") and is_kind("shared") then
add_rules("utils.symbols.export_all")
end
option("asm")
set_default(true)
set_description("compiling with ASM")
add_defines("CONFIG_ASM")
option("large-tiles")
set_default(false)
set_description("use larger tiles in the rasterizer (better performance, slightly worse quality)")
add_defines("CONFIG_LARGE_TILES")
option("system-font-provider")
on_check(function (option)
option:enable(not is_plat("wasm"))
end)
set_description("enable checking for system fonts provider")
target("ass")
set_kind("$(kind)")
add_options("asm", "large-tiles", "system-font-provider")
add_packages("freetype", "fribidi", "harfbuzz")
add_files("libass/*.c|ass_fontconfig.c|ass_directwrite.c|ass_coretext.c",
"libass/c/*.c")
add_includedirs("libass", "libass/c", "$(buildir)")
if not is_plat("windows") then
add_syslinks("m")
end
add_configfiles("config.h.in")
configvar_check_cfuncs("HAVE_STRDUP", "strdup", {includes = "string.h"})
configvar_check_cfuncs("HAVE_STRNDUP", "strndup", {includes = "string.h"})
if has_config("asm") then
if is_arch("x64", "x86", "x86_64") then
set_toolchains("nasm")
add_files("libass/x86/*.asm|utils.asm|x86inc.asm")
add_includedirs("libass/x86")
add_defines("ARCH_X86=1", "private_prefix=ass")
if is_arch("x86") then
add_defines("ARCH_X86_64=0", "BITMODE=32")
else
add_defines("ARCH_X86_64=1", "BITMODE=64")
end
if is_plat("windows") and is_arch("x86") then
add_defines("PREFIX")
elseif is_plat("macosx") then
add_defines("PREFIX", "STACK_ALIGNMENT=16")
elseif is_plat("linux") then
add_defines("STACK_ALIGNMENT=16")
end
elseif is_arch("arm64.*", "aarch64") then
add_files("libass/aarch64/*.S")
add_defines("ARCH_AARCH64")
end
end
if has_config("system-font-provider") then
on_config(function (target)
-- directwrite
if target:is_plat("windows", "mingw") and target:has_cincludes("dwrite_c.h") then
if target:check_csnippets([[#include <winapifamily.h>
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#error Win32 desktop APIs are available
#endif]]) then
target:add("syslinks", "dwrite")
else
target:add("syslinks", "gdi32")
end
if target:kind() == "shared" then
target:add("syslinks", "user32")
end
target:add("files", "libass/ass_directwrite.c")
target:add("defines", "CONFIG_DIRECTWRITE")
end
-- coretext
if target:is_plat("macosx") then
if target:has_cfuncs("CTFontDescriptorCopyAttribute", {includes = "ApplicationServices/ApplicationServices.h"}) then
target:add("frameworks", "ApplicationServices", "CoreFoundation")
target:add("files", "libass/ass_coretext.c")
target:add("defines", "CONFIG_CORETEXT=1")
elseif target:has_cincludes("CoreText/CoreText.h") then
target:add("frameworks", "CoreText", "CoreFoundation")
target:add("files", "libass/ass_coretext.c")
target:add("defines", "CONFIG_CORETEXT=1")
end
end
-- fontconfig
if target:has_cincludes("fontconfig/fontconfig.h") then
target:add("files", "libass/ass_fontconfig.c")
target:add("defines", "CONFIG_FONTCONFIG")
target:add("syslinks", "fontconfig")
end
end)
end
add_headerfiles("libass/ass.h", "libass/ass_types.h", {prefix = "include/libass"})