From b491d3a3b9f4ecc74697f602a58b10021f2d185a Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 08:54:01 -0400 Subject: [PATCH 01/19] [ass] Add --enable-asm This help to have much better performance with libass. --- cmake/ass.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmake/ass.cmake b/cmake/ass.cmake index 0bcc4a6..71bd0b7 100644 --- a/cmake/ass.cmake +++ b/cmake/ass.cmake @@ -1,4 +1,12 @@ cmake_minimum_required(VERSION 3.10) + +if(NOT CMAKE_ANDROID_ARCH STREQUAL "arm") + set(ASS_ASM_ARG "--enable-asm") +else() + # libass doesn't support arm 32 bits asm. + set(ASS_ASM_ARG "--disable-asm") +endif() + ExternalProject_Add(ep_ass DEPENDS ep_fontconfig ep_harfbuzz ep_freetype ep_fribidi ep_unibreak SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} @@ -13,6 +21,7 @@ ExternalProject_Add(ep_ass --disable-shared --enable-fontconfig --enable-libunibreak + ${ASS_ASM_ARG} --srcdir=/ BUILD_COMMAND make INSTALL_COMMAND make install From e2c89904bf02f88d540010daa0a42e1c3b601ef1 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 08:58:51 -0400 Subject: [PATCH 02/19] [actions\setup-libraries\action] Install nasm When libass use the flag --enable-asm, it use nasm, so we need to install it. --- .github/actions/setup-libraries/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-libraries/action.yml b/.github/actions/setup-libraries/action.yml index 97ce80f..3da28f1 100644 --- a/.github/actions/setup-libraries/action.yml +++ b/.github/actions/setup-libraries/action.yml @@ -8,7 +8,7 @@ runs: using: "composite" steps: - name: Install dependencies - run: sudo apt install gperf gettext autopoint + run: sudo apt install gperf gettext autopoint nasm shell: bash - name: Running autogen.sh in unibreak From 77adfbf3231e70fb3dcc20a07cdedf6e30823545 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 09:37:08 -0400 Subject: [PATCH 03/19] Use `--with-pic` flag instead of passing `-fPIC` Without this, I was getting this error with libass: ``` checking for nasm... yes checking if nasm supports vpmovzxwd... no configure: WARNING: nasm is too old (found NASM version 2.16.01); ASM functions are disabled. configure: WARNING: Install nasm-2.10 or later for a significantly faster libass build. configure: error: Assembly was requested, but cannot be built; see prior messages. ``` --- CMakeLists.txt | 6 ++---- cmake/ass.cmake | 1 + cmake/expat.cmake | 1 + cmake/fontconfig.cmake | 1 + cmake/fribidi.cmake | 1 + cmake/unibreak.cmake | 1 + 6 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 86d0563..a629365 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,11 +45,9 @@ set(PLATFORM_COMPILE_ENV_CMDS PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/lib/pkgconfig) set(PLATFORM_COMPILE_ENV_FLAGS - "CFLAGS=${CMAKE_C_FLAGS} -fPIC --target=${CMAKE_C_COMPILER_TARGET}" - "CXXFLAGS=${CMAKE_CXX_FLAGS} -fPIC --target=${CMAKE_CXX_COMPILER_TARGET}" + "CFLAGS=${CMAKE_C_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}" + "CXXFLAGS=${CMAKE_CXX_FLAGS} --target=${CMAKE_CXX_COMPILER_TARGET}" "LDFLAGS=${CMAKE_SHARED_LINKER_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}" - "ASFLAGS= -fPIC" - "YASMFLAGS= -fPIC" ) set(PLATFORM_CONFIGURE_ENV ${PLATFORM_COMPILE_ENV_CMDS} diff --git a/cmake/ass.cmake b/cmake/ass.cmake index 71bd0b7..644eb94 100644 --- a/cmake/ass.cmake +++ b/cmake/ass.cmake @@ -19,6 +19,7 @@ ExternalProject_Add(ep_ass --prefix= --enable-static --disable-shared + --with-pic --enable-fontconfig --enable-libunibreak ${ASS_ASM_ARG} diff --git a/cmake/expat.cmake b/cmake/expat.cmake index 1a34d3e..34ad635 100644 --- a/cmake/expat.cmake +++ b/cmake/expat.cmake @@ -9,6 +9,7 @@ ExternalProject_Add(ep_expat --prefix= --enable-static --disable-shared + --with-pic --without-tests --without-docbook BUILD_COMMAND make diff --git a/cmake/fontconfig.cmake b/cmake/fontconfig.cmake index 3ce50ec..0b44e69 100644 --- a/cmake/fontconfig.cmake +++ b/cmake/fontconfig.cmake @@ -9,6 +9,7 @@ ExternalProject_Add(ep_fontconfig --prefix= --enable-static --disable-shared + --with-pic BUILD_COMMAND make INSTALL_COMMAND make install ) \ No newline at end of file diff --git a/cmake/fribidi.cmake b/cmake/fribidi.cmake index 9b075ff..7045054 100644 --- a/cmake/fribidi.cmake +++ b/cmake/fribidi.cmake @@ -9,6 +9,7 @@ ExternalProject_Add(ep_fribidi --prefix= --enable-static --disable-shared + --with-pic --disable-docs --disable-option-checking BUILD_COMMAND make diff --git a/cmake/unibreak.cmake b/cmake/unibreak.cmake index 3922a67..a351a0b 100644 --- a/cmake/unibreak.cmake +++ b/cmake/unibreak.cmake @@ -9,6 +9,7 @@ ExternalProject_Add(ep_unibreak --prefix= --enable-static --disable-shared + --with-pic BUILD_COMMAND make INSTALL_COMMAND make install ) From 7e6d2f35ba8445dbf5e5ba449f2db47b77cfe50e Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 09:37:55 -0400 Subject: [PATCH 04/19] [fribidi] Remove flag `--disable-option-checking` It doesn't have any purpose --- cmake/fribidi.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/fribidi.cmake b/cmake/fribidi.cmake index 7045054..97589f0 100644 --- a/cmake/fribidi.cmake +++ b/cmake/fribidi.cmake @@ -11,7 +11,6 @@ ExternalProject_Add(ep_fribidi --disable-shared --with-pic --disable-docs - --disable-option-checking BUILD_COMMAND make INSTALL_COMMAND make install ) From 1078c5ed7bf65d4f56a66e919fa64a68b3b0f3ae Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:05:43 -0400 Subject: [PATCH 05/19] [fribidi] Remove `-disable-docs` since this option doesn't exist Fix this warning: `configure: WARNING: unrecognized options: --disable-docs` --- cmake/fribidi.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/fribidi.cmake b/cmake/fribidi.cmake index 97589f0..ba4d1cf 100644 --- a/cmake/fribidi.cmake +++ b/cmake/fribidi.cmake @@ -10,7 +10,6 @@ ExternalProject_Add(ep_fribidi --enable-static --disable-shared --with-pic - --disable-docs BUILD_COMMAND make INSTALL_COMMAND make install ) From 22d53ba2cd7290dd1780c1bf1eca87f1e9f65484 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:12:08 -0400 Subject: [PATCH 06/19] Only pass `--host` to autoconf As said in the android documentation (https://developer.android.com/ndk/guides/other_build_systems#autoconf), we only need to specify `--host`. Also, CMAKE_C_COMPILER_TARGET doesn't contains the right value. For the ABI armeabi-v7a, CMAKE_C_COMPILER_TARGET = armv7-none-linux-androideabi21. It should be armv7a-linux-androideabi. For the ABI arm64-v8a, CMAKE_C_COMPILER_TARGET = aarch64-none-linux-android21. It should be aarch64-linux-android. For the ABI x86, CMAKE_C_COMPILER_TARGET = i686-none-linux-android21. It should be i686-linux-android. For the ABI x86-64, CMAKE_C_COMPILER_TARGET = x86_64-none-linux-android21. It should be x86_64-linux-android. --- CMakeLists.txt | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a629365..6d53d3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,16 +11,6 @@ set(EXTERNAL_PROJECT_CMAKE_ARGS include(${CMAKE_TOOLCHAIN_FILE}) -# fribidi and unibreak can't match ANDROID_HOST_TAG!!! -if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux) - set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64-linux") -elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin) - set(ANDROID_HOST_TAG darwin-x86_64) - set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64-darwin") -elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows) - set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64-windows") -endif() - # # Set some convenience variables. # @@ -53,10 +43,21 @@ set(PLATFORM_COMPILE_ENV_FLAGS set(PLATFORM_CONFIGURE_ENV ${PLATFORM_COMPILE_ENV_CMDS} ${PLATFORM_COMPILE_ENV_FLAGS}) +# From https://developer.android.com/ndk/guides/other_build_systems#autoconf +if(CMAKE_ANDROID_ARCH STREQUAL "arm") + set(HOST_TRIPLET "armv7a-linux-androideabi") +elseif(CMAKE_ANDROID_ARCH STREQUAL "arm64") + set(HOST_TRIPLET "aarch64-linux-android") +elseif(CMAKE_ANDROID_ARCH STREQUAL "x86") + set(HOST_TRIPLET "i686-linux-android") +elseif(CMAKE_ANDROID_ARCH STREQUAL "x86_64") + set(HOST_TRIPLET "x86_64-linux-android") +else() + message(FATAL_ERROR "Unsupported CMAKE_ANDROID_ARCH: ${CMAKE_ANDROID_ARCH}") +endif() + set(PLATFORM_BUILD_AND_HOST - "--build=${CMAKE_HOST_SYSTEM_PROCESSOR}" - "--host=${CMAKE_C_COMPILER_TARGET}" - "--target=${CMAKE_C_COMPILER_TARGET}" + "--host=${HOST_TRIPLET}" ) # From bb89f6b6ed99cc65fd56792e8e0b1764868e045b Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:15:40 -0400 Subject: [PATCH 07/19] Update libass to 0.17.5 --- README.md | 2 +- src/ass | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d6a301..bf41e73 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Build libass for Android. * [freetype](https://gitlab.freedesktop.org/freetype/freetype) [v2.13.3](https://gitlab.freedesktop.org/freetype/freetype/-/tags/VER-2-13-3) * [expat](https://github.com/libexpat/libexpat) [2.7.1](https://github.com/libexpat/libexpat/releases/tag/R_2_7_1) * [fontconfig](https://gitlab.freedesktop.org/fontconfig/fontconfig) [master with daa175d2](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/commit/daa175d234b8a362eedd4c18c33537cc2d19cd98) -* [ass](https://github.com/libass/libass) [v0.17.4](https://github.com/libass/libass/releases/tag/0.17.4) +* [ass](https://github.com/libass/libass) [v0.17.5](https://github.com/libass/libass/releases/tag/0.17.5) ## how to use diff --git a/src/ass b/src/ass index bbb3c7f..4a05d81 160000 --- a/src/ass +++ b/src/ass @@ -1 +1 @@ -Subproject commit bbb3c7f1570a4a021e52683f3fbdf74fe492ae84 +Subproject commit 4a05d8127f525943ebf45fdc6497c9e665947f0d From a7e49cacfa0f8758237418428bef0a8bc2c3b23e Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:17:42 -0400 Subject: [PATCH 08/19] Update expat to 2.8.4 --- README.md | 2 +- src/expat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bf41e73..6f6ee85 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Build libass for Android. * [harfbuzz](https://github.com/harfbuzz/harfbuzz) [v11.3.3](https://github.com/harfbuzz/harfbuzz/releases/tag/11.2.1) * [fribidi](https://github.com/fribidi/fribidi) [v1.0.16](https://github.com/fribidi/fribidi/releases/tag/v1.0.16) * [freetype](https://gitlab.freedesktop.org/freetype/freetype) [v2.13.3](https://gitlab.freedesktop.org/freetype/freetype/-/tags/VER-2-13-3) -* [expat](https://github.com/libexpat/libexpat) [2.7.1](https://github.com/libexpat/libexpat/releases/tag/R_2_7_1) +* [expat](https://github.com/libexpat/libexpat) [2.8.4](https://github.com/libexpat/libexpat/releases/tag/R_2_8_4) * [fontconfig](https://gitlab.freedesktop.org/fontconfig/fontconfig) [master with daa175d2](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/commit/daa175d234b8a362eedd4c18c33537cc2d19cd98) * [ass](https://github.com/libass/libass) [v0.17.5](https://github.com/libass/libass/releases/tag/0.17.5) diff --git a/src/expat b/src/expat index f9a3eeb..12cf0b1 160000 --- a/src/expat +++ b/src/expat @@ -1 +1 @@ -Subproject commit f9a3eeb3e09fbea04b1c451ffc422ab2f1e45744 +Subproject commit 12cf0b1f25f026a022fe728ad8f7e3d017285b80 From f9cc374e5e6b67d8fdcc5dca2173546b11d424a6 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:19:36 -0400 Subject: [PATCH 09/19] Update fontconfig to 2.18.3 --- README.md | 2 +- src/fontconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6f6ee85..5f02792 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Build libass for Android. * [fribidi](https://github.com/fribidi/fribidi) [v1.0.16](https://github.com/fribidi/fribidi/releases/tag/v1.0.16) * [freetype](https://gitlab.freedesktop.org/freetype/freetype) [v2.13.3](https://gitlab.freedesktop.org/freetype/freetype/-/tags/VER-2-13-3) * [expat](https://github.com/libexpat/libexpat) [2.8.4](https://github.com/libexpat/libexpat/releases/tag/R_2_8_4) -* [fontconfig](https://gitlab.freedesktop.org/fontconfig/fontconfig) [master with daa175d2](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/commit/daa175d234b8a362eedd4c18c33537cc2d19cd98) +* [fontconfig](https://gitlab.freedesktop.org/fontconfig/fontconfig) [v2.18.3](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/tags/2.18.3) * [ass](https://github.com/libass/libass) [v0.17.5](https://github.com/libass/libass/releases/tag/0.17.5) ## how to use diff --git a/src/fontconfig b/src/fontconfig index daa175d..0f23672 160000 --- a/src/fontconfig +++ b/src/fontconfig @@ -1 +1 @@ -Subproject commit daa175d234b8a362eedd4c18c33537cc2d19cd98 +Subproject commit 0f236723a3c26bd9745e32ba2b3ee21e5f809295 From 2a240272f3659a39164762f01a06c06f53f1d4e0 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:29:03 -0400 Subject: [PATCH 10/19] Update freetype to 2.14.3 --- README.md | 2 +- src/freetype | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5f02792..574fa96 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Build libass for Android. * [unibreak](https://github.com/adah1972/libunibreak) [v6.1](https://github.com/adah1972/libunibreak/releases/tag/libunibreak_6_1) * [harfbuzz](https://github.com/harfbuzz/harfbuzz) [v11.3.3](https://github.com/harfbuzz/harfbuzz/releases/tag/11.2.1) * [fribidi](https://github.com/fribidi/fribidi) [v1.0.16](https://github.com/fribidi/fribidi/releases/tag/v1.0.16) -* [freetype](https://gitlab.freedesktop.org/freetype/freetype) [v2.13.3](https://gitlab.freedesktop.org/freetype/freetype/-/tags/VER-2-13-3) +* [freetype](https://gitlab.freedesktop.org/freetype/freetype) [v2.14.3](https://gitlab.freedesktop.org/freetype/freetype/-/tags/VER-2-14-3) * [expat](https://github.com/libexpat/libexpat) [2.8.4](https://github.com/libexpat/libexpat/releases/tag/R_2_8_4) * [fontconfig](https://gitlab.freedesktop.org/fontconfig/fontconfig) [v2.18.3](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/tags/2.18.3) * [ass](https://github.com/libass/libass) [v0.17.5](https://github.com/libass/libass/releases/tag/0.17.5) diff --git a/src/freetype b/src/freetype index 42608f7..0a0221a 160000 --- a/src/freetype +++ b/src/freetype @@ -1 +1 @@ -Subproject commit 42608f77f20749dd6ddc9e0536788eaad70ea4b5 +Subproject commit 0a0221a1347e2f1e07c395263540026e9a0aa7c7 From 65bfd2c7b79a1d27e40f725703ec14e3336ee187 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:46:46 -0400 Subject: [PATCH 11/19] Update harfbuzz to 14.4.0 --- README.md | 2 +- src/harfbuzz | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 574fa96..a1ddc50 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Build libass for Android. ## library version * [unibreak](https://github.com/adah1972/libunibreak) [v6.1](https://github.com/adah1972/libunibreak/releases/tag/libunibreak_6_1) -* [harfbuzz](https://github.com/harfbuzz/harfbuzz) [v11.3.3](https://github.com/harfbuzz/harfbuzz/releases/tag/11.2.1) +* [harfbuzz](https://github.com/harfbuzz/harfbuzz) [v14.4.0](https://github.com/harfbuzz/harfbuzz/releases/tag/14.4.0) * [fribidi](https://github.com/fribidi/fribidi) [v1.0.16](https://github.com/fribidi/fribidi/releases/tag/v1.0.16) * [freetype](https://gitlab.freedesktop.org/freetype/freetype) [v2.14.3](https://gitlab.freedesktop.org/freetype/freetype/-/tags/VER-2-14-3) * [expat](https://github.com/libexpat/libexpat) [2.8.4](https://github.com/libexpat/libexpat/releases/tag/R_2_8_4) diff --git a/src/harfbuzz b/src/harfbuzz index c3fcbff..36cb489 160000 --- a/src/harfbuzz +++ b/src/harfbuzz @@ -1 +1 @@ -Subproject commit c3fcbffa651cea70400552f2a8bd695ad11023c1 +Subproject commit 36cb489cb02ce4b92099669ba9f9bea348eff93f From b4328f442d873232e940e2e4d6ec5b13a3ea0897 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 16:50:39 -0400 Subject: [PATCH 12/19] Update unibreak to 7.0 --- .gitmodules | 1 - README.md | 2 +- src/unibreak | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index a72eba9..07c1626 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,6 @@ [submodule "src/unibreak"] path = src/unibreak url = https://github.com/adah1972/libunibreak.git - branch = libunibreak_6_1 [submodule "src/harfbuzz"] path = src/harfbuzz url = https://github.com/harfbuzz/harfbuzz.git diff --git a/README.md b/README.md index a1ddc50..24937a9 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Build libass for Android. ## library version -* [unibreak](https://github.com/adah1972/libunibreak) [v6.1](https://github.com/adah1972/libunibreak/releases/tag/libunibreak_6_1) +* [unibreak](https://github.com/adah1972/libunibreak) [v7.0](https://github.com/adah1972/libunibreak/releases/tag/libunibreak_7_0) * [harfbuzz](https://github.com/harfbuzz/harfbuzz) [v14.4.0](https://github.com/harfbuzz/harfbuzz/releases/tag/14.4.0) * [fribidi](https://github.com/fribidi/fribidi) [v1.0.16](https://github.com/fribidi/fribidi/releases/tag/v1.0.16) * [freetype](https://gitlab.freedesktop.org/freetype/freetype) [v2.14.3](https://gitlab.freedesktop.org/freetype/freetype/-/tags/VER-2-14-3) diff --git a/src/unibreak b/src/unibreak index 304585d..3ce4bfa 160000 --- a/src/unibreak +++ b/src/unibreak @@ -1 +1 @@ -Subproject commit 304585d8e2d63187507368d612c3d5fff1486368 +Subproject commit 3ce4bfa3129ff3738046a44a6db533d2ce25af2b From 12f248a892dfeb95ef480bb8536673b9659eff80 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 19:12:40 -0400 Subject: [PATCH 13/19] [fontconfig] Set ac_cv_va_copy to fix compilation --- cmake/fontconfig.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmake/fontconfig.cmake b/cmake/fontconfig.cmake index 0b44e69..28f47e1 100644 --- a/cmake/fontconfig.cmake +++ b/cmake/fontconfig.cmake @@ -5,6 +5,13 @@ ExternalProject_Add(ep_fontconfig INSTALL_DIR ${CMAKE_BINARY_DIR} CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env ${PLATFORM_CONFIGURE_ENV} + # m4/va_copy.m4 AC_RUN_IFELSE has no cross-compiling fallback. + # Due to that, the check fails with: + # checking for va_copy() function... configure: error: in `PATH/libass-cmake/build/ep_fontconfig-prefix/src/ep_fontconfig-build': + # configure: error: cannot run test program while cross compiling + # To avoid this failure, set its cache variable to skip the runtime check. + # The NDK toolchain always provides C99 va_copy(). + ac_cv_va_copy=C99 //configure ${PLATFORM_BUILD_AND_HOST} --prefix= --enable-static From 2d7794f89a0597b0e2eed10004a6c339fd0823ca Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 19:16:56 -0400 Subject: [PATCH 14/19] Update actions/checkout to v7 --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 9daff7b..bb1d061 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: submodules: true From 188f3d985fc047da57abcca8833f76d58e6c5e4d Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 19:17:43 -0400 Subject: [PATCH 15/19] Update actions/upload-artifact to v7 --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index bb1d061..be3b5e2 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -45,7 +45,7 @@ jobs: working-directory: build run: cmake --build . - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v7 with: name: build-${{ matrix.ANDROID_ABI }} path: | From b2274883364e5043b9690d7ba1bd329590a1b48c Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 19:18:25 -0400 Subject: [PATCH 16/19] Update actions/download-artifact to v8 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dfac933..7930b2d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Download artifact - uses: actions/download-artifact@v6 + uses: actions/download-artifact@v8 with: path: artifacts From 39c72a4d53fd6528379ca42d72ae89401e285a12 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 19:47:57 -0400 Subject: [PATCH 17/19] [README] Fix autogen instruction --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 24937a9..ee93b52 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,11 @@ Build libass for Android. ### autogen ``` -cd ./src/unibreak && ./autogen.sh -cd ./src/fribidi && ./autogen.sh -cd ./src/fontconfig && ./autogen.sh -cd ./src/expat/expat && ./buildconf.sh -cd ./src/ass && ./autogen.sh +cd ./src/unibreak && NOCONFIGURE=1 ./autogen.sh && cd - +cd ./src/fribidi && NOCONFIGURE=1 ./autogen.sh && cd - +cd ./src/fontconfig && NOCONFIGURE=1 ./autogen.sh && cd - +cd ./src/expat/expat && ./buildconf.sh && cd - +cd ./src/ass && ./autogen.sh && cd - ``` ### add ass cmake to CMakeList.txt From 816b4964758bc255abcb6f74eded103b244faf42 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 20:15:16 -0400 Subject: [PATCH 18/19] Add PKG_CONFIG_LIBDIR Without this, pkg-config could actually use system libraries because PKG_CONFIG_PATH simply add a path to search. For example, in my case, since I have json-c installed on my system, I was getting this error `ld.lld: error: unable to find library -ljson-c` because fontconfig was trying to link to it. --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d53d3a..39cc960 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,8 @@ set(PLATFORM_COMPILE_ENV_CMDS OBJDUMP=${CMAKE_OBJDUMP} RANLIB=${CMAKE_RANLIB} STRIP=${CMAKE_STRIP} - PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/lib/pkgconfig) + PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/lib/pkgconfig + PKG_CONFIG_LIBDIR=) set(PLATFORM_COMPILE_ENV_FLAGS "CFLAGS=${CMAKE_C_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}" From 930371f0c8e8c7dae2fc3262674a4227e825ce62 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Mon, 7 Sep 2026 20:31:55 -0400 Subject: [PATCH 19/19] Find NDK zlib Fix this error: ``` 2026-09-08T00:16:52.3705815Z checking for FREETYPE... no 2026-09-08T00:16:52.3706403Z configure: error: Package requirements (freetype2 >= 21.0.15) were not met: 2026-09-08T00:16:52.3706874Z 2026-09-08T00:16:52.3707083Z Package 'zlib', required by 'freetype2', not found 2026-09-08T00:16:52.3707446Z 2026-09-08T00:16:52.3707743Z Consider adjusting the PKG_CONFIG_PATH environment variable if you 2026-09-08T00:16:52.3708382Z installed software in a non-standard prefix. 2026-09-08T00:16:52.3708715Z 2026-09-08T00:16:52.3739357Z Alternatively, you may set the environment variables FREETYPE_CFLAGS 2026-09-08T00:16:52.3740176Z and FREETYPE_LIBS to avoid the need to call pkg-config. 2026-09-08T00:16:52.3740726Z See the pkg-config man page for more details. ``` --- CMakeLists.txt | 1 + cmake/zlib.cmake | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 cmake/zlib.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 39cc960..c32d758 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,6 +83,7 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/cmake/files/meson-cross-android.in) unset(MESON_SYSTEM_CPU_FAMILY) endif() +include(cmake/zlib.cmake) include(cmake/unibreak.cmake) include(cmake/fribidi.cmake) include(cmake/freetype.cmake) diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake new file mode 100644 index 0000000..be3411c --- /dev/null +++ b/cmake/zlib.cmake @@ -0,0 +1,23 @@ +# The Android NDK toolchain ships its own zlib in the sysroot, +# but it does not provide a zlib.pc. +# Since freetype's generated freetype2.pc declares `Requires.private: +# zlib`, pkg-config needs a zlib.pc to resolve that dependency. +set(NDK_ZLIB_HEADER "${CMAKE_SYSROOT}/usr/include/zlib.h") +set(NDK_ZLIB_VERSION "1.0.0") +if(EXISTS ${NDK_ZLIB_HEADER}) + file(STRINGS ${NDK_ZLIB_HEADER} NDK_ZLIB_VERSION_LINE REGEX "#define ZLIB_VERSION ") + string(REGEX REPLACE ".*#define ZLIB_VERSION \"([^\"]+)\".*" "\\1" NDK_ZLIB_VERSION "${NDK_ZLIB_VERSION_LINE}") +endif() + +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/lib/pkgconfig) +file(WRITE ${CMAKE_BINARY_DIR}/lib/pkgconfig/zlib.pc +"Name: zlib +Description: zlib compression library (provided by the Android NDK toolchain) +Version: ${NDK_ZLIB_VERSION} +Libs: -lz +Cflags: +") + +unset(NDK_ZLIB_HEADER) +unset(NDK_ZLIB_VERSION) +unset(NDK_ZLIB_VERSION_LINE)