1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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"})
|