diff options
Diffstat (limited to 'libass/meson.build')
-rw-r--r-- | libass/meson.build | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/libass/meson.build b/libass/meson.build new file mode 100644 index 0000000..55a04fc --- /dev/null +++ b/libass/meson.build @@ -0,0 +1,134 @@ +libass_lt_current = 11 +libass_lt_revision = 1 +libass_lt_age = 2 + +libass_so_version = '@0@.@1@.@2@'.format( + libass_lt_current - libass_lt_age, + libass_lt_age, + libass_lt_revision, +) + +src_x86 = files( + 'x86/be_blur.asm', + 'x86/blend_bitmaps.asm', + 'x86/blur.asm', + 'x86/cpuid.asm', + 'x86/rasterizer.asm', +) +src_aarch64 = files( + 'aarch64/asm.S', + 'aarch64/be_blur.S', + 'aarch64/blend_bitmaps.S', + 'aarch64/blur.S', + 'aarch64/rasterizer.S', +) +src_fontconfig = files('ass_fontconfig.c') +src_directwrite = files('ass_directwrite.c') +src_coretext = files('ass_coretext.c') + +libass_src = files( + 'c/c_be_blur.c', + 'c/c_blend_bitmaps.c', + 'c/c_blur.c', + 'c/c_rasterizer.c', + 'ass.c', + 'ass_bitmap.c', + 'ass_bitmap_engine.c', + 'ass_blur.c', + 'ass_cache.c', + 'ass_drawing.c', + 'ass_filesystem.c', + 'ass_font.c', + 'ass_fontselect.c', + 'ass_library.c', + 'ass_outline.c', + 'ass_parse.c', + 'ass_rasterizer.c', + 'ass_render.c', + 'ass_render_api.c', + 'ass_shaper.c', + 'ass_string.c', + 'ass_strtod.c', + 'ass_utils.c', +) + +libass_link_with = [] + +libass_headers = files('ass.h', 'ass_types.h') + +if fontconfig + libass_src += src_fontconfig +endif +if directwrite + libass_src += src_directwrite +endif +if coretext + libass_src += src_coretext +endif + +if enable_asm + asm_sources = [] + if cpu_family == 'x86' + asm_sources = src_x86 + elif cpu_subfamily == 'aarch64' + asm_sources = src_aarch64 + endif + + if asm_is_nasm + libass_src += asm_sources + else + asm_lib = static_library( + 'libass_asm', + config_h, + sources: asm_sources, + c_args: asm_args, + include_directories: incs, + ) + libass_link_with += asm_lib + endif +endif + +if host_system == 'windows' + gen_defs = find_program('../gen_defs.py') + libass_def = custom_target( + 'libass.def', + input: ['libass.sym'], + output: ['libass.def'], + command: [gen_defs, '@INPUT@', '@OUTPUT@'], + ) + kwargs = {'vs_module_defs': libass_def} +else + kwargs = {} +endif + +# this is a list of custom targets for copying the libass public headers into the build +# directory. These targets are passed as part of the libass library build step in order +# to enforce the desired build sequence. +fake_installed_headers = [] +subdir('ass') + +libass = library( + 'ass', + libass_src, + config_h, + link_with: libass_link_with, + version: libass_so_version, + # This emulates the GNU libtool compat/current versioning computation + darwin_versions: [ + '@0@'.format(libass_lt_current + 1), + '@0@.@1@'.format(libass_lt_current + 1, libass_lt_revision), + ], + install: true, + include_directories: incs, + dependencies: deps, + kwargs: kwargs, +) + +libass_dep = declare_dependency( + link_with: libass, + include_directories: incs, + dependencies: deps, + sources: fake_installed_headers, +) + +install_headers(libass_headers, subdir: 'ass') |