diff options
| author | Griffin Downs <grdowns@microsoft.com> | 2019-02-27 16:44:17 -0800 |
|---|---|---|
| committer | Griffin Downs <grdowns@microsoft.com> | 2019-02-27 16:44:17 -0800 |
| commit | 1908903508bf057ad05d8a344e5bc55477944cb6 (patch) | |
| tree | 2a23595f1e7d8cc9a6358bfd44a00eb7368d8a1b /ports/libass | |
| parent | b0a2ff18c9f2c9131aed131f5bf0d97c0e23da8e (diff) | |
| parent | 8564602d06d7c4ce236f96a4f0f3ba7c2d769cb0 (diff) | |
| download | vcpkg-1908903508bf057ad05d8a344e5bc55477944cb6.tar.gz vcpkg-1908903508bf057ad05d8a344e5bc55477944cb6.zip | |
Merge branch 'master' of https://github.com/microsoft/vcpkg into dev/grdowns/4802
Diffstat (limited to 'ports/libass')
| -rw-r--r-- | ports/libass/CMakeLists.txt | 63 | ||||
| -rw-r--r-- | ports/libass/CONTROL | 4 | ||||
| -rw-r--r-- | ports/libass/ConstantValues.patch | 43 | ||||
| -rw-r--r-- | ports/libass/config.h.in | 0 | ||||
| -rw-r--r-- | ports/libass/libass.def | 46 | ||||
| -rw-r--r-- | ports/libass/portfile.cmake | 30 |
6 files changed, 186 insertions, 0 deletions
diff --git a/ports/libass/CMakeLists.txt b/ports/libass/CMakeLists.txt new file mode 100644 index 000000000..32d7ef097 --- /dev/null +++ b/ports/libass/CMakeLists.txt @@ -0,0 +1,63 @@ +cmake_minimum_required(VERSION 3.9)
+project(libass C CXX)
+
+set(LIBASS_VERSION 0.14.0)
+
+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config.h.in config.h)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+
+# This is Windows-specific. Other acceptable values on different platforms should be
+# macOS - CONFIG_CORETEXT
+# linux - CONFIG_FONTCONFIG
+add_compile_definitions(CONFIG_DIRECTWRITE)
+add_compile_definitions(CONFIG_FREETYPE)
+add_compile_definitions(CONFIG_FRIBIDI)
+add_compile_definitions(CONFIG_HARFBUZZ)
+
+file (GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/libass/*.c)
+
+list(FILTER SOURCES EXCLUDE REGEX ".*ass_coretext.c$")
+list(FILTER SOURCES EXCLUDE REGEX ".*ass_fontconfig.c$")
+
+find_package(Freetype REQUIRED)
+
+find_path(FRIBIDI_INCLUDE_DIR
+ NAMES fribidi.h
+ PATH_SUFFIXES fribidi)
+
+find_path(HARFBUZZ_INCLUDE_DIR
+ NAMES hb.h
+ PATH_SUFFIXES harfbuzz)
+
+find_library(FRIBIDI_LIBRARY NAMES fribidi)
+find_library(HARFBUZZ_LIBRARY NAMES harfbuzz)
+
+add_library(ass ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/libass.def)
+
+target_include_directories(ass PRIVATE
+ ${FRIBIDI_INCLUDE_DIR}
+ ${HARFBUZZ_INCLUDE_DIR})
+
+target_link_libraries(ass PRIVATE
+ Freetype::Freetype
+ ${FRIBIDI_LIBRARY}
+ ${HARFBUZZ_LIBRARY})
+
+install(TARGETS ass
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib)
+
+# pkgconfig file
+set(prefix ${CMAKE_INSTALL_PREFIX})
+set(exec_prefix ${CMAKE_INSTALL_PREFIX})
+set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
+set(includedir ${CMAKE_INSTALL_PREFIX}/include)
+set(PACKAGE_VERSION ${LIBASS_VERSION})
+set(PKG_REQUIRES_PRIVATE "harfbuzz >= 0.9.5, fribidi >= 0.19.0, freetype2 >= 9.10.3")
+set(PKG_LIBS_PRIVATE -lm)
+configure_file(libass.pc.in libass.pc @ONLY)
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/libass.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
diff --git a/ports/libass/CONTROL b/ports/libass/CONTROL new file mode 100644 index 000000000..ea25ea9a1 --- /dev/null +++ b/ports/libass/CONTROL @@ -0,0 +1,4 @@ +Source: libass +Version: 0.14.0 +Build-Depends: freetype, fribidi, harfbuzz, dirent (windows) +Description: libass is a portable subtitle renderer for the ASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format. diff --git a/ports/libass/ConstantValues.patch b/ports/libass/ConstantValues.patch new file mode 100644 index 000000000..d357032d7 --- /dev/null +++ b/ports/libass/ConstantValues.patch @@ -0,0 +1,43 @@ +--- + libass/ass_outline.c | 4 ++-- + libass/ass_render.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/libass/ass_outline.c b/libass/ass_outline.c +index 1b9afe9..527403e 100644 +--- a/libass/ass_outline.c ++++ b/libass/ass_outline.c +@@ -518,7 +518,7 @@ static bool draw_arc(StrokerState *str, ASS_Vector pt, + ASS_DVector normal0, ASS_DVector normal1, double c, int dir) + { + const int max_subdiv = 15; +- double mul[max_subdiv + 1]; ++ double mul[16]; + + ASS_DVector center; + bool small_angle = true; +@@ -554,7 +554,7 @@ static bool draw_arc(StrokerState *str, ASS_Vector pt, + static bool draw_circle(StrokerState *str, ASS_Vector pt, int dir) + { + const int max_subdiv = 15; +- double mul[max_subdiv + 1], c = 0; ++ double mul[16], c = 0; + + int pos = max_subdiv; + while (c < str->split_cos && pos) { +diff --git a/libass/ass_render.c b/libass/ass_render.c +index 69c4439..f6fa85c 100644 +--- a/libass/ass_render.c ++++ b/libass/ass_render.c +@@ -1235,7 +1235,7 @@ get_bitmap_glyph(ASS_Renderer *render_priv, GlyphInfo *info) + } + + const int n_outlines = 3; +- ASS_Outline outline[n_outlines]; ++ ASS_Outline outline[3]; + outline_copy(&outline[0], info->outline); + outline_copy(&outline[1], info->border[0]); + outline_copy(&outline[2], info->border[1]); +-- +2.18.0.windows.1 + diff --git a/ports/libass/config.h.in b/ports/libass/config.h.in new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ports/libass/config.h.in diff --git a/ports/libass/libass.def b/ports/libass/libass.def new file mode 100644 index 000000000..58bfad3d6 --- /dev/null +++ b/ports/libass/libass.def @@ -0,0 +1,46 @@ +EXPORTS
+ass_library_init
+ass_library_done
+ass_library_version
+ass_set_fonts_dir
+ass_set_extract_fonts
+ass_set_style_overrides
+ass_renderer_init
+ass_renderer_done
+ass_set_frame_size
+ass_set_storage_size
+ass_set_margins
+ass_set_use_margins
+ass_set_aspect_ratio
+ass_set_font_scale
+ass_set_hinting
+ass_set_line_spacing
+ass_get_available_font_providers
+ass_set_fonts
+ass_render_frame
+ass_new_track
+ass_free_track
+ass_alloc_style
+ass_alloc_event
+ass_free_style
+ass_free_event
+ass_process_data
+ass_process_codec_private
+ass_process_chunk
+ass_read_file
+ass_read_memory
+ass_read_styles
+ass_add_font
+ass_clear_fonts
+ass_step_sub
+ass_process_force_style
+ass_set_message_cb
+ass_fonts_update
+ass_set_cache_limits
+ass_flush_events
+ass_set_shaper
+ass_set_line_position
+ass_set_pixel_aspect
+ass_set_selective_style_override_enabled
+ass_set_selective_style_override
+ass_set_check_readorder
diff --git a/ports/libass/portfile.cmake b/ports/libass/portfile.cmake new file mode 100644 index 000000000..040cadc66 --- /dev/null +++ b/ports/libass/portfile.cmake @@ -0,0 +1,30 @@ + +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO libass/libass + REF 98727c3b78f44cb3bbc955fcf5d977ebd911d5ca + SHA512 d466108180cea598b817f89aa21a1021ed2a763580d9aad51b054aa120186af48ab4264907e49ddcb38479a28d87d5431751a28afee9cb83ad7623f002d99c57 + HEAD_REF master + PATCHES ConstantValues.patch +) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/config.h.in DESTINATION ${SOURCE_PATH}) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/libass.def DESTINATION ${SOURCE_PATH}) + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libass RENAME copyright) + +# Since libass uses automake, make and configure, we use a custom CMake file +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) + +file(COPY ${SOURCE_PATH}/libass/ass.h ${SOURCE_PATH}/libass/ass_types.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/ass) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA) + +vcpkg_install_cmake() +vcpkg_copy_pdbs()
\ No newline at end of file |
