diff --git a/CMakeLists.txt b/CMakeLists.txt index 31226b36f0..013bcb33d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,11 @@ cmake_minimum_required(VERSION 3.5) + +# Bundled third-party targets are configured in sibling directories and are +# linked together from this top-level fallback logic. +if(POLICY CMP0079) + cmake_policy(SET CMP0079 NEW) +endif() + PROJECT(cr3) set(CMAKE_CXX_STANDARD 20) @@ -202,9 +209,16 @@ endif (NOT MSVC AND NOT DEFINED USE_STATIC_ZLIB) if (NOT ZLIB_FOUND) message("System ZLIB not found, will build local one\n") ADD_SUBDIRECTORY(thirdparty/${REPO_ZLIB_SRCDIR}) - SET(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/${REPO_ZLIB_SRCDIR} ${CMAKE_BINARY_DIR}/thirdparty/${REPO_ZLIB_SRCDIR} CACHE PATH "" FORCE) - SET(ZLIB_LIBRARIES zlibstatic) + SET(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/${REPO_ZLIB_SRCDIR} CACHE PATH "" FORCE) + SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/thirdparty/${REPO_ZLIB_SRCDIR}) SET(ZLIB_LIBRARY zlibstatic) + SET(ZLIB_LIBRARIES zlibstatic) + SET(ZLIB_FOUND TRUE) + # Freetype calls FindZLIB itself and links the modern imported target. + # Keep its package lookup on the bundled target instead of the host search. + if (NOT TARGET ZLIB::ZLIB) + ADD_LIBRARY(ZLIB::ZLIB ALIAS zlibstatic) + endif() endif (NOT ZLIB_FOUND) endif(DEFINED USE_QT_ZLIB) endif(NOT MAC) @@ -219,10 +233,23 @@ endif (NOT MSVC AND NOT CR3_PNG) if (NOT PNG_FOUND) message("System LIBPNG not found, will build local one\n") INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) - SET(ZLIB_LIBRARY ${ZLIB_LIBRARIES}) + SET(PNG_SHARED OFF CACHE BOOL "Build libpng as a shared library." FORCE) + SET(PNG_STATIC ON CACHE BOOL "Build libpng as a static library." FORCE) + SET(PNG_TESTS OFF CACHE BOOL "Build libpng tests." FORCE) + SET(PNG_TOOLS OFF CACHE BOOL "Build libpng tools." FORCE) + SET(PNG_EXECUTABLES OFF CACHE BOOL "Build libpng executables." FORCE) + SET(SKIP_INSTALL_ALL ON CACHE BOOL "Don't install bundled third-party libraries." FORCE) ADD_SUBDIRECTORY(thirdparty/${REPO_LIBPNG_SRCDIR}) - SET(PNG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/${REPO_LIBPNG_SRCDIR} ${CMAKE_BINARY_DIR}/thirdparty/${REPO_LIBPNG_SRCDIR} CACHE PATH "" FORCE) - SET(PNG_LIBRARIES png) + SET(PNG_PNG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/${REPO_LIBPNG_SRCDIR} CACHE PATH "" FORCE) + SET(PNG_INCLUDE_DIR ${PNG_PNG_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/thirdparty/${REPO_LIBPNG_SRCDIR} CACHE PATH "" FORCE) + SET(PNG_INCLUDE_DIRS ${PNG_INCLUDE_DIR}) + SET(PNG_LIBRARY png_static) + SET(PNG_LIBRARIES png_static) + SET(PNG_FOUND TRUE) + # Freetype calls FindPNG itself and links PNG::PNG. + if (NOT TARGET PNG::PNG) + ADD_LIBRARY(PNG::PNG ALIAS png_static) + endif() endif (NOT PNG_FOUND) if (NOT MSVC AND NOT CR3_JPEG) @@ -255,9 +282,6 @@ if (NOT FREETYPE_FOUND) endif (NOT HarfBuzz_FOUND) SET(FT_WITH_ZLIB ON CACHE BOOL "Use system zlib instead of internal library." FORCE) SET(FT_WITH_PNG ON CACHE BOOL "Support PNG compressed OpenType embedded bitmaps." FORCE) - SET(ZLIB_LIBRARY ${ZLIB_LIBRARIES}) - SET(PNG_PNG_INCLUDE_DIR ${PNG_INCLUDE_DIR} CACHE PATH "" FORCE) - SET(PNG_LIBRARY ${PNG_LIBRARIES}) SET(SKIP_INSTALL_ALL ON CACHE BOOL "Don't install anything" FORCE) ADD_SUBDIRECTORY(thirdparty/${REPO_FREETYPE_SRCDIR}) SET(FREETYPE_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/${REPO_FREETYPE_SRCDIR}/include CACHE PATH "" FORCE) @@ -319,6 +343,7 @@ if (NOT ZSTD_FOUND) set(ZSTD_BUILD_TESTS OFF CACHE BOOL "BUILD TESTS" FORCE) set(ZSTD_BUILD_STATIC ON CACHE BOOL "BUILD STATIC LIBRARIES" FORCE) set(ZSTD_BUILD_SHARED OFF CACHE BOOL "BUILD SHARED LIBRARIES" FORCE) + set(SKIP_INSTALL_ALL ON CACHE BOOL "Don't install bundled third-party libraries." FORCE) add_subdirectory(thirdparty/${REPO_ZSTD_SRCDIR}/build/cmake) SET(ZSTD_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/${REPO_ZSTD_SRCDIR}/lib CACHE PATH "Include directories needed to use ZSTD" FORCE) SET(ZSTD_LIBRARIES libzstd_static CACHE FILEPATH "Libraries needed to link to ZSTD" FORCE) diff --git a/android/app/CMakeLists.txt b/android/app/CMakeLists.txt index 92acae16fd..96733eaf0c 100644 --- a/android/app/CMakeLists.txt +++ b/android/app/CMakeLists.txt @@ -39,7 +39,7 @@ add_definitions(-DLVLONG_FILE_SUPPORT=1) add_definitions(-DMAX_IMAGE_SCALE_MUL=2) add_definitions(-DUSE_NANOSVG=1) add_definitions(-DBUNDLED_FRIBIDI=1) -add_definitions(-DKO_LIBUNIBREAK_PATCH=1) # libunibreak patched with "add_lb_get_char_class.patch" file from koreader +add_definitions(-DKO_LIBUNIBREAK_PATCH=1) # lb_get_char_class is provided by bundled libunibreak 7.0 add_definitions(-DUSE_UTF8PROC=1) #set(LOCAL_CFLAGS "-Wno-psabi -Wno-unused-variable -Wno-sign-compare -Wno-write-strings -Wno-main -Wno-unused-but-set-variable -Wno-unused-function -Wall") diff --git a/thirdparty-deploy.sh b/thirdparty-deploy.sh index 7f2ef2ba5f..722fb2ac64 100755 --- a/thirdparty-deploy.sh +++ b/thirdparty-deploy.sh @@ -86,6 +86,13 @@ deploy_package() fi fi + # A previous unpack or patch attempt did not complete. The source tree is + # deploy-script-owned, so start over instead of reusing partial contents. + if [ ! -f .prepared ] && [ -d "${thirdparty_dir}/${SOURCESDIR}" ] + then + rm -r "${thirdparty_dir}/${SOURCESDIR}" >/dev/null 2>&1 || die "rm (partial dir) failed!" + fi + if [ ! -d "${thirdparty_dir}/${SOURCESDIR}" ] then rm -f .unpacked .prepared @@ -114,7 +121,7 @@ deploy_package() then # make sha512 sum file echo "${SHA512} *${SRCFILE}" > "${SRCFILE}.sha512" - ${SHA512SUM} -c "${SRCFILE}.sha512" || if [ "x" = "x" ]; then rm -f .downloaded; rm -f "${SRCFILE}.sha512"; die "Failed to verify checksum!"; fi + ${SHA512SUM} -c "${SRCFILE}.sha512" || if [ "x" = "x" ]; then ${SHA512SUM} "${SRCFILE}"; rm -f .downloaded; rm -f "${SRCFILE}.sha512"; die "Failed to verify checksum!"; fi echo "1" > .verified rm -f "${SRCFILE}.sha512" echo "Checksum OK." @@ -124,7 +131,7 @@ deploy_package() if [ ! -f .unpacked ] then cd "${thirdparty_dir}" || die "chdir to thirdparty_dir failed!" - tar -x${tar_args}f "${pkg_datadir}/${SRCFILE}" || die "Failed to unpack sources!" + tar -x${tar_args}f "${pkg_datadir}/${SRCFILE}" ${TAR_EXCLUDES} || die "Failed to unpack sources!" cd "${pkg_datadir}" || die "chdir failed!" echo "1" > .unpacked echo "Unpacked OK." @@ -151,6 +158,7 @@ deploy_package() unset -v URL unset -v SOURCEDIR unset -v PATCHES + unset -v TAR_EXCLUDES cd "${pwd1}" } diff --git a/thirdparty_repo/freetype.meta.sh b/thirdparty_repo/freetype.meta.sh index 70aedf3568..db064fee5f 100644 --- a/thirdparty_repo/freetype.meta.sh +++ b/thirdparty_repo/freetype.meta.sh @@ -2,12 +2,12 @@ # Metadata for deploy script PN="freetype" -PV="2.11.0" +PV="2.14.3" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". REV="2" SRCFILE="${PN}-${PV}.tar.xz" -SHA512="bf1991f3c382832586be1d21ae73c20840ee8546807ba60d0eb0215134545656c0c8de488f27357d4a4f6497d7cb540998cda98ec59061a3e640036fb209147d" +SHA512="43de86ea70b4b47f6efaae67f3440f65a24ffac29dc6d11203a9764e4f1a749ce1ba7645acd23525220b3ba12ddad8687b962b9f1254e2c0a86070854e85d5a0" URL="https://download.savannah.gnu.org/releases/${PN}/${SRCFILE}" SOURCESDIR="${PN}-${PV}" diff --git a/thirdparty_repo/fribidi.meta.sh b/thirdparty_repo/fribidi.meta.sh index df80d10e02..08bf191b67 100644 --- a/thirdparty_repo/fribidi.meta.sh +++ b/thirdparty_repo/fribidi.meta.sh @@ -2,17 +2,15 @@ # Metadata for deploy script PN="fribidi" -PV="1.0.10" +PV="1.0.16" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". REV="1" SRCFILE="${PN}-${PV}.tar.xz" -SHA512="cb51920012c3c7507c17e2beb1dbbcfb8d7c6404e4cb54b260a332754a0d5b103d8834d77e8795651b3f38069c9bd2e9914c21b001411a72f9ffe1ec1ef2f360" +SHA512="e3a56f36155f6813e3609473639fc533de742309f561c463012dc90b412a1ac7694b765d92669b2cbfaee973ca0e92fa5e926e68a1a078921f26ef17d82ab651" URL="https://github.com/fribidi/fribidi/releases/download/v${PV}/${SRCFILE}" SOURCESDIR="${PN}-${PV}" -PATCHES="01-cmake-static.patch - 9e78abb7ead0781a6160be2e0d27d212ccd6f438.patch - a11d8b3942546906b4a74d2061f50e05e4d33f18.patch" +PATCHES="01-cmake-static.patch" diff --git a/thirdparty_repo/harfbuzz.meta.sh b/thirdparty_repo/harfbuzz.meta.sh index 83af0602f7..70067f5618 100644 --- a/thirdparty_repo/harfbuzz.meta.sh +++ b/thirdparty_repo/harfbuzz.meta.sh @@ -2,12 +2,12 @@ # Metadata for deploy script PN="harfbuzz" -PV="2.8.2" +PV="14.2.1" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". REV="1" SRCFILE="${PN}-${PV}.tar.xz" -SHA512="47f672967ba9e9a1ea21164b9780cbaaad2f4f619811e84d1b6bdb598e5ad60c96e08fadd270460a4ce8e2fb4603fcdd881ba55f2826abc2a4ab439efdc856dc" +SHA512="481dca68900e57895d3671baf0595c2d3a26f4f08d0db5662e83089f0d0ff6dc0c28c64c2811eb0f812b0525ed428e90db44f091a88bef47ace2f97d8285b013" URL="https://github.com/harfbuzz/harfbuzz/releases/download/${PV}/${SRCFILE}" diff --git a/thirdparty_repo/libjpeg.meta.sh b/thirdparty_repo/libjpeg.meta.sh index 08a4de06b0..f1238140be 100644 --- a/thirdparty_repo/libjpeg.meta.sh +++ b/thirdparty_repo/libjpeg.meta.sh @@ -2,16 +2,16 @@ # Metadata for deploy script PN="libjpeg" -PV="9.4.0" +PV="10.0.0" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". REV="1" -SRCFILE="jpegsrc.v9d.tar.gz" -SHA512="c64d3ee269367351211c077a64b2395f2cfa49b9f8257fae62fa1851dc77933a44b436d8c70ceb52b73a5bedff6dbe560cc5d6e3ed5f2997d724e2ede9582bc3" +SRCFILE="jpegsrc.v10.tar.gz" +SHA512="3bdd55d805d76f35cbcd44074e27684a25b40f4811c62374ec9300dde31fa75a17ff3fccfcb8f5947311fa7b07f52dc9cba343562ae4ceb8b3cbe30fda1e4311" URL="http://www.ijg.org/files/${SRCFILE}" -SOURCESDIR="jpeg-9d" +SOURCESDIR="jpeg-10" PATCHES="01-cmake-static.patch 02-preconfigured.patch diff --git a/thirdparty_repo/libpng.meta.sh b/thirdparty_repo/libpng.meta.sh index c4a58a6bf5..7accada926 100644 --- a/thirdparty_repo/libpng.meta.sh +++ b/thirdparty_repo/libpng.meta.sh @@ -2,15 +2,15 @@ # Metadata for deploy script PN="libpng" -PV="1.6.37" +PV="1.6.58" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". REV="1" SRCFILE="${PN}-${PV}.tar.xz" -SHA512="59e8c1059013497ae616a14c3abbe239322d3873c6ded0912403fc62fb260561768230b6ab997e2cccc3b868c09f539fd13635616b9fa0dd6279a3f63ec7e074" +SHA512="5937d6409d7ad564c9dba7969c5d39eea8bbc01936f433bf5936c872ec290dea353783f89bded91e124b3b3b15518320097de365acd3b0bcc922a0e90c94adc8" URL="https://download.sourceforge.net/${PN}/${PN}-${PV}.tar.xz" SOURCESDIR="${PN}-${PV}" -PATCHES="01-cmake-static-r1.patch" +PATCHES= diff --git a/thirdparty_repo/libunibreak.meta.sh b/thirdparty_repo/libunibreak.meta.sh index 5cd55be94a..cfb4344bb5 100644 --- a/thirdparty_repo/libunibreak.meta.sh +++ b/thirdparty_repo/libunibreak.meta.sh @@ -2,16 +2,15 @@ # Metadata for deploy script PN="libunibreak" -PV="4.3" +PV="7.0" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". -REV="1" +REV="4" SRCFILE="${PN}-${PV}.tar.gz" -SHA512="4b53fd169912033403b6ca09047b7b928211fab3607ef26070ab731054138b9a291f7d138d3a479f9cde8edb0fabf8da114da68aee32e60cddf45cc3baae1170" +SHA512="2dec8aa5788486dcbe1f676d31a103f7a3f253a2bf4af7772b3f3019667b352aa04aae369e0838ce6d554b207a2d555738f3510bb1cfec65adcc8c4164aeb00b" URL="https://github.com/adah1972/libunibreak/releases/download/libunibreak_${PV/./_}/${SRCFILE}" SOURCESDIR="${PN}-${PV}" -PATCHES="01-add_lb_get_char_class.patch - 02-cmake-static.patch" +PATCHES="02-cmake-static.patch" diff --git a/thirdparty_repo/patches/fribidi/9e78abb7ead0781a6160be2e0d27d212ccd6f438.patch b/thirdparty_repo/patches/fribidi/9e78abb7ead0781a6160be2e0d27d212ccd6f438.patch deleted file mode 100644 index e61258afaf..0000000000 --- a/thirdparty_repo/patches/fribidi/9e78abb7ead0781a6160be2e0d27d212ccd6f438.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 9e78abb7ead0781a6160be2e0d27d212ccd6f438 Mon Sep 17 00:00:00 2001 -From: Dov Grobgeld -Date: Tue, 18 Aug 2020 23:24:10 +0300 -Subject: [PATCH] Fixed dangling pointer problem found by fuzzing - ---- - lib/fribidi-bidi.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/lib/fribidi-bidi.c b/lib/fribidi-bidi.c -index 634546d..14967a7 100644 ---- a/lib/fribidi-bidi.c -+++ b/lib/fribidi-bidi.c -@@ -83,13 +83,19 @@ merge_with_prev ( - first->next->prev = first; - RL_LEN (first) += RL_LEN (second); - if (second->next_isolate) -- second->next_isolate->prev_isolate = first; -+ second->next_isolate->prev_isolate = second->prev_isolate; -+ /* The following edge case typically shouldn't happen, but fuzz -+ testing shows it does, and the assignment protects against -+ a dangling pointer. */ -+ else if (second->next->prev_isolate == second) -+ second->next->prev_isolate = second->prev_isolate; -+ if (second->prev_isolate) -+ second->prev_isolate->next_isolate = second->next_isolate; - first->next_isolate = second->next_isolate; - - fribidi_free (second); - return first; - } -- - static void - compact_list ( - FriBidiRun *list diff --git a/thirdparty_repo/patches/fribidi/a11d8b3942546906b4a74d2061f50e05e4d33f18.patch b/thirdparty_repo/patches/fribidi/a11d8b3942546906b4a74d2061f50e05e4d33f18.patch deleted file mode 100644 index ed65924d3e..0000000000 --- a/thirdparty_repo/patches/fribidi/a11d8b3942546906b4a74d2061f50e05e4d33f18.patch +++ /dev/null @@ -1,46 +0,0 @@ -From a11d8b3942546906b4a74d2061f50e05e4d33f18 Mon Sep 17 00:00:00 2001 -From: Oleg Oshmyan -Date: Mon, 26 Oct 2020 00:19:31 +0200 -Subject: [PATCH] Skip isolates in fribidi_get_par_direction - -Copy the logic from fribidi_get_par_embedding_levels_ex. - -Most likely, this should have been added in commit -f20b6480b9cd46dae8d82a6f95d9c53558fcfd20 but was omitted by accident. ---- - lib/fribidi-bidi.c | 17 ++++++++++++++--- - 1 file changed, 14 insertions(+), 3 deletions(-) - -diff --git a/lib/fribidi-bidi.c b/lib/fribidi-bidi.c -index 14967a7..ce061d5 100644 ---- a/lib/fribidi-bidi.c -+++ b/lib/fribidi-bidi.c -@@ -397,14 +397,25 @@ fribidi_get_par_direction ( - const FriBidiStrIndex len - ) - { -+ int valid_isolate_count = 0; - register FriBidiStrIndex i; - - fribidi_assert (bidi_types); - - for (i = 0; i < len; i++) -- if (FRIBIDI_IS_LETTER (bidi_types[i])) -- return FRIBIDI_IS_RTL (bidi_types[i]) ? FRIBIDI_PAR_RTL : -- FRIBIDI_PAR_LTR; -+ { -+ if (bidi_types[i] == FRIBIDI_TYPE_PDI) -+ { -+ /* Ignore if there is no matching isolate */ -+ if (valid_isolate_count>0) -+ valid_isolate_count--; -+ } -+ else if (FRIBIDI_IS_ISOLATE(bidi_types[i])) -+ valid_isolate_count++; -+ else if (valid_isolate_count==0 && FRIBIDI_IS_LETTER (bidi_types[i])) -+ return FRIBIDI_IS_RTL (bidi_types[i]) ? FRIBIDI_PAR_RTL : -+ FRIBIDI_PAR_LTR; -+ } - - return FRIBIDI_PAR_ON; - } diff --git a/thirdparty_repo/patches/libpng/01-cmake-static-r1.patch b/thirdparty_repo/patches/libpng/01-cmake-static-r1.patch deleted file mode 100644 index a4b40111d1..0000000000 --- a/thirdparty_repo/patches/libpng/01-cmake-static-r1.patch +++ /dev/null @@ -1,619 +0,0 @@ -diff -urBb libpng-1.6.37-orig/CMakeLists.txt libpng-1.6.37/CMakeLists.txt ---- libpng-1.6.37-orig/CMakeLists.txt 2019-04-14 22:10:32.000000000 +0400 -+++ libpng-1.6.37/CMakeLists.txt 2021-01-26 20:18:08.460121574 +0400 -@@ -1,67 +1,5 @@ --# CMakeLists.txt - --# Copyright (C) 2018 Cosmin Truta --# Copyright (C) 2007,2009-2018 Glenn Randers-Pehrson --# Written by Christian Ehrlicher, 2007 --# Revised by Roger Lowman, 2009-2010 --# Revised by Clifford Yapp, 2011-2012,2017 --# Revised by Roger Leigh, 2016 --# Revised by Andreas Franek, 2016 --# Revised by Sam Serrels, 2017 --# Revised by Vadim Barkov, 2017 --# Revised by Vicky Pfau, 2018 --# Revised by Cameron Cawley, 2018 --# Revised by Cosmin Truta, 2018 --# Revised by Kyle Bentley, 2018 -- --# This code is released under the libpng license. --# For conditions of distribution and use, see the disclaimer --# and license in png.h -- --cmake_minimum_required(VERSION 3.1) --cmake_policy(VERSION 3.1) -- --project(libpng C ASM) --enable_testing() -- --set(PNGLIB_MAJOR 1) --set(PNGLIB_MINOR 6) --set(PNGLIB_RELEASE 37) --set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR}) --set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE}) -- --include(GNUInstallDirs) -- --# needed packages -- --# Allow users to specify location of Zlib. --# Useful if zlib is being built alongside this as a sub-project. --option(PNG_BUILD_ZLIB "Custom zlib Location, else find_package is used" OFF) -- --if(NOT PNG_BUILD_ZLIB) -- find_package(ZLIB REQUIRED) -- include_directories(${ZLIB_INCLUDE_DIR}) --endif() -- --if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU) -- find_library(M_LIBRARY m) --else() -- # libm is not needed and/or not available -- set(M_LIBRARY "") --endif() -- --# COMMAND LINE OPTIONS --option(PNG_SHARED "Build shared lib" ON) --option(PNG_STATIC "Build static lib" ON) --option(PNG_TESTS "Build libpng tests" ON) -- --# Many more configuration options could be added here --option(PNG_FRAMEWORK "Build OS X framework" OFF) --option(PNG_DEBUG "Build with debug output" OFF) --option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON) -- --set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names") --set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings") -+option(PNG_HARDWARE_OPTIMIZATIONS "Enable Hardware Optimizations" ON) - - if(PNG_HARDWARE_OPTIMIZATIONS) - -@@ -196,78 +134,6 @@ - - endif(PNG_HARDWARE_OPTIMIZATIONS) - --# SET LIBNAME --set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR}) -- --# to distinguish between debug and release lib --set(CMAKE_DEBUG_POSTFIX "d") -- --include(CheckCSourceCompiles) --option(ld-version-script "Enable linker version script" ON) --if(ld-version-script AND NOT APPLE) -- # Check if LD supports linker scripts. -- file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 { -- global: sym; -- local: *; --}; -- --VERS_2 { -- global: sym2; -- main; --} VERS_1; --") -- set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) -- set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'") -- check_c_source_compiles("void sym(void) {} --void sym2(void) {} --int main(void) {return 0;} --" HAVE_LD_VERSION_SCRIPT) -- if(NOT HAVE_LD_VERSION_SCRIPT) -- set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE} "-Wl,-M -Wl,${CMAKE_CURRENT_BINARY_DIR}/conftest.map") -- check_c_source_compiles("void sym(void) {} --void sym2(void) {} --int main(void) {return 0;} --" HAVE_SOLARIS_LD_VERSION_SCRIPT) -- endif() -- set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) -- file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map") --endif() -- --# Find symbol prefix. Likely obsolete and unnecessary with recent --# toolchains (it's not done in many other projects). --function(symbol_prefix) -- set(SYMBOL_PREFIX) -- -- execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" "-" -- INPUT_FILE /dev/null -- OUTPUT_VARIABLE OUT -- RESULT_VARIABLE STATUS) -- -- if(CPP_FAIL) -- message(WARNING "Failed to run the C preprocessor") -- endif() -- -- string(REPLACE "\n" ";" OUT "${OUT}") -- foreach(line ${OUT}) -- string(REGEX MATCH "^PREFIX=" found_match "${line}") -- if(found_match) -- string(REGEX REPLACE "^PREFIX=(.*\)" "\\1" prefix "${line}") -- string(REGEX MATCH "__USER_LABEL_PREFIX__" found_match "${prefix}") -- if(found_match) -- string(REGEX REPLACE "(.*)__USER_LABEL_PREFIX__(.*)" "\\1\\2" prefix "${prefix}") -- endif() -- set(SYMBOL_PREFIX "${prefix}") -- endif() -- endforeach() -- -- message(STATUS "Symbol prefix: ${SYMBOL_PREFIX}") -- set(SYMBOL_PREFIX "${SYMBOL_PREFIX}" PARENT_SCOPE) --endfunction() -- --if(UNIX) -- symbol_prefix() --endif() -- - find_program(AWK NAMES gawk awk) - - include_directories(${CMAKE_CURRENT_BINARY_DIR}) -@@ -453,24 +319,7 @@ - "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out") - endif(NOT AWK OR ANDROID) - --# OUR SOURCES --set(libpng_public_hdrs -- png.h -- pngconf.h -- "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" --) --set(libpng_private_hdrs -- pngpriv.h -- pngdebug.h -- pnginfo.h -- pngstruct.h --) --if(AWK AND NOT ANDROID) -- list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h") --endif() --set(libpng_sources -- ${libpng_public_hdrs} -- ${libpng_private_hdrs} -+set(PNG_SOURCES - png.c - pngerror.c - pngget.c -@@ -491,317 +340,6 @@ - ${libpng_mips_sources} - ${libpng_powerpc_sources} - ) --set(pngtest_sources -- pngtest.c --) --set(pngvalid_sources -- contrib/libtests/pngvalid.c --) --set(pngstest_sources -- contrib/libtests/pngstest.c --) --set(pngunknown_sources -- contrib/libtests/pngunknown.c --) --set(pngimage_sources -- contrib/libtests/pngimage.c --) --set(pngfix_sources -- contrib/tools/pngfix.c --) --set(png_fix_itxt_sources -- contrib/tools/png-fix-itxt.c --) -- --if(MSVC) -- add_definitions(-D_CRT_SECURE_NO_DEPRECATE) --endif() -- --if(PNG_DEBUG) -- add_definitions(-DPNG_DEBUG) --endif() -- --# NOW BUILD OUR TARGET --include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR}) -- --unset(PNG_LIB_TARGETS) -- --if(PNG_SHARED) -- add_library(png SHARED ${libpng_sources}) -- set(PNG_LIB_TARGETS png) -- set_target_properties(png PROPERTIES OUTPUT_NAME ${PNG_LIB_NAME}) -- add_dependencies(png genfiles) -- if(MSVC) -- # msvc does not append 'lib' - do it here to have consistent name -- set_target_properties(png PROPERTIES PREFIX "lib") -- set_target_properties(png PROPERTIES IMPORT_PREFIX "lib") -- endif() -- target_link_libraries(png ${ZLIB_LIBRARY} ${M_LIBRARY}) -- -- if(UNIX AND AWK) -- if(HAVE_LD_VERSION_SCRIPT) -- set_target_properties(png PROPERTIES LINK_FLAGS -- "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") -- elseif(HAVE_SOLARIS_LD_VERSION_SCRIPT) -- set_target_properties(png PROPERTIES LINK_FLAGS -- "-Wl,-M -Wl,'${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") -- endif() -- endif() --endif() -- --if(PNG_STATIC) -- # does not work without changing name -- set(PNG_LIB_NAME_STATIC png_static) -- add_library(png_static STATIC ${libpng_sources}) -- add_dependencies(png_static genfiles) -- # MSVC doesn't use a different file extension for shared vs. static -- # libs. We are able to change OUTPUT_NAME to remove the _static -- # for all other platforms. -- if(NOT MSVC) -- set_target_properties(png_static PROPERTIES -- OUTPUT_NAME "${PNG_LIB_NAME}" -- CLEAN_DIRECT_OUTPUT 1) -- else() -- set_target_properties(png_static PROPERTIES -- OUTPUT_NAME "${PNG_LIB_NAME}_static" -- CLEAN_DIRECT_OUTPUT 1) -- endif() -- list(APPEND PNG_LIB_TARGETS png_static) -- if(MSVC) -- # msvc does not append 'lib' - do it here to have consistent name -- set_target_properties(png_static PROPERTIES PREFIX "lib") -- endif() -- target_link_libraries(png_static ${ZLIB_LIBRARY} ${M_LIBRARY}) --endif() -- --if(PNG_FRAMEWORK) -- set(PNG_LIB_NAME_FRAMEWORK png_framework) -- add_library(png_framework SHARED ${libpng_sources}) -- add_dependencies(png_framework genfiles) -- list(APPEND PNG_LIB_TARGETS png_framework) -- set_target_properties(png_framework PROPERTIES -- FRAMEWORK TRUE -- FRAMEWORK_VERSION ${PNGLIB_VERSION} -- MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PNGLIB_MAJOR}.${PNGLIB_MINOR} -- MACOSX_FRAMEWORK_BUNDLE_VERSION ${PNGLIB_VERSION} -- MACOSX_FRAMEWORK_IDENTIFIER org.libpng.libpng -- XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" -- PUBLIC_HEADER "${libpng_public_hdrs}" -- OUTPUT_NAME png) -- target_link_libraries(png_framework ${ZLIB_LIBRARY} ${M_LIBRARY}) --endif() -- --if(NOT PNG_LIB_TARGETS) -- message(SEND_ERROR -- "No library variant selected to build. " -- "Please enable at least one of the following options: " -- "PNG_STATIC, PNG_SHARED, PNG_FRAMEWORK") --endif() -- --if(PNG_SHARED AND WIN32) -- set_target_properties(png PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL) --endif() -- --function(png_add_test) -- set(options) -- set(oneValueArgs NAME COMMAND) -- set(multiValueArgs OPTIONS FILES) -- cmake_parse_arguments(_PAT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) -- -- if(NOT _PAT_NAME) -- message(FATAL_ERROR "png_add_test: Missing NAME argument") -- endif() -- if(NOT _PAT_COMMAND) -- message(FATAL_ERROR "png_add_test: Missing COMMAND argument") -- endif() -- -- set(TEST_OPTIONS "${_PAT_OPTIONS}") -- set(TEST_FILES "${_PAT_FILES}") -- -- configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/test.cmake.in" -- "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake" @ONLY) -- add_test(NAME "${_PAT_NAME}" -- COMMAND "${CMAKE_COMMAND}" -- "-DLIBPNG=$" -- "-DTEST_COMMAND=$" -- -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") --endfunction() -- --if(PNG_TESTS AND PNG_SHARED) -- # Find test PNG files by globbing, but sort lists to ensure -- # consistency between different filesystems. -- file(GLOB PNGSUITE_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/*.png") -- list(SORT PNGSUITE_PNGS) -- file(GLOB TEST_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/testpngs/*.png") -- list(SORT TEST_PNGS) -- -- set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png") -- -- add_executable(pngtest ${pngtest_sources}) -- target_link_libraries(pngtest png) -- -- png_add_test(NAME pngtest COMMAND pngtest FILES "${PNGTEST_PNG}") -- -- add_executable(pngvalid ${pngvalid_sources}) -- target_link_libraries(pngvalid png) -- -- png_add_test(NAME pngvalid-gamma-16-to-8 -- COMMAND pngvalid OPTIONS --gamma-16-to-8) -- png_add_test(NAME pngvalid-gamma-alpha-mode -- COMMAND pngvalid OPTIONS --gamma-alpha-mode) -- png_add_test(NAME pngvalid-gamma-background -- COMMAND pngvalid OPTIONS --gamma-background) -- png_add_test(NAME pngvalid-gamma-expand16-alpha-mode -- COMMAND pngvalid OPTIONS --gamma-alpha-mode --expand16) -- png_add_test(NAME pngvalid-gamma-expand16-background -- COMMAND pngvalid OPTIONS --gamma-background --expand16) -- png_add_test(NAME pngvalid-gamma-expand16-transform -- COMMAND pngvalid OPTIONS --gamma-transform --expand16) -- png_add_test(NAME pngvalid-gamma-sbit -- COMMAND pngvalid OPTIONS --gamma-sbit) -- png_add_test(NAME pngvalid-gamma-threshold -- COMMAND pngvalid OPTIONS --gamma-threshold) -- png_add_test(NAME pngvalid-gamma-transform -- COMMAND pngvalid OPTIONS --gamma-transform) -- png_add_test(NAME pngvalid-progressive-interlace-standard -- COMMAND pngvalid OPTIONS --standard --progressive-read --interlace) -- png_add_test(NAME pngvalid-progressive-size -- COMMAND pngvalid OPTIONS --size --progressive-read) -- png_add_test(NAME pngvalid-progressive-standard -- COMMAND pngvalid OPTIONS --standard --progressive-read) -- png_add_test(NAME pngvalid-standard -- COMMAND pngvalid OPTIONS --standard) -- png_add_test(NAME pngvalid-transform -- COMMAND pngvalid OPTIONS --transform) -- -- add_executable(pngstest ${pngstest_sources}) -- target_link_libraries(pngstest png) -- -- foreach(gamma_type 1.8 linear none sRGB) -- foreach(alpha_type none alpha) -- set(PNGSTEST_FILES) -- foreach(test_png ${TEST_PNGS}) -- string(REGEX MATCH ".*-linear[-.].*" TEST_PNG_LINEAR "${test_png}") -- string(REGEX MATCH ".*-sRGB[-.].*" TEST_PNG_SRGB "${test_png}") -- string(REGEX MATCH ".*-1.8[-.].*" TEST_PNG_G18 "${test_png}") -- string(REGEX MATCH ".*-alpha-.*" TEST_PNG_ALPHA "${test_png}") -- -- set(TEST_PNG_VALID TRUE) -- -- if(TEST_PNG_ALPHA) -- if(NOT "${alpha_type}" STREQUAL "alpha") -- set(TEST_PNG_VALID FALSE) -- endif() -- else() -- if("${alpha_type}" STREQUAL "alpha") -- set(TEST_PNG_VALID FALSE) -- endif() -- endif() -- -- if(TEST_PNG_LINEAR) -- if(NOT "${gamma_type}" STREQUAL "linear") -- set(TEST_PNG_VALID FALSE) -- endif() -- elseif(TEST_PNG_SRGB) -- if(NOT "${gamma_type}" STREQUAL "sRGB") -- set(TEST_PNG_VALID FALSE) -- endif() -- elseif(TEST_PNG_G18) -- if(NOT "${gamma_type}" STREQUAL "1.8") -- set(TEST_PNG_VALID FALSE) -- endif() -- else() -- if(NOT "${gamma_type}" STREQUAL "none") -- set(TEST_PNG_VALID FALSE) -- endif() -- endif() -- -- if(TEST_PNG_VALID) -- list(APPEND PNGSTEST_FILES "${test_png}") -- endif() -- endforeach() -- # Should already be sorted, but sort anyway to be certain. -- list(SORT PNGSTEST_FILES) -- png_add_test(NAME pngstest-${gamma_type}-${alpha_type} -- COMMAND pngstest -- OPTIONS --tmpfile "${gamma_type}-${alpha_type}-" --log -- FILES ${PNGSTEST_FILES}) -- endforeach() -- endforeach() -- -- add_executable(pngunknown ${pngunknown_sources}) -- target_link_libraries(pngunknown png) -- -- png_add_test(NAME pngunknown-discard COMMAND pngunknown OPTIONS --strict default=discard FILES "${PNGTEST_PNG}") -- png_add_test(NAME pngunknown-IDAT COMMAND pngunknown OPTIONS --strict default=discard IDAT=save FILES "${PNGTEST_PNG}") -- png_add_test(NAME pngunknown-if-safe COMMAND pngunknown OPTIONS --strict default=if-safe FILES "${PNGTEST_PNG}") -- png_add_test(NAME pngunknown-sAPI COMMAND pngunknown OPTIONS --strict bKGD=save cHRM=save gAMA=save all=discard iCCP=save sBIT=save sRGB=save FILES "${PNGTEST_PNG}") -- png_add_test(NAME pngunknown-save COMMAND pngunknown OPTIONS --strict default=save FILES "${PNGTEST_PNG}") -- png_add_test(NAME pngunknown-sTER COMMAND pngunknown OPTIONS --strict sTER=if-safe FILES "${PNGTEST_PNG}") -- png_add_test(NAME pngunknown-vpAg COMMAND pngunknown OPTIONS --strict vpAg=if-safe FILES "${PNGTEST_PNG}") -- -- add_executable(pngimage ${pngimage_sources}) -- target_link_libraries(pngimage png) -- -- png_add_test(NAME pngimage-quick COMMAND pngimage OPTIONS --list-combos --log FILES ${PNGSUITE_PNGS}) -- png_add_test(NAME pngimage-full COMMAND pngimage OPTIONS --exhaustive --list-combos --log FILES ${PNGSUITE_PNGS}) --endif() -- --if(PNG_SHARED) -- add_executable(pngfix ${pngfix_sources}) -- target_link_libraries(pngfix png) -- set(PNG_BIN_TARGETS pngfix) -- -- add_executable(png-fix-itxt ${png_fix_itxt_sources}) -- target_link_libraries(png-fix-itxt ${ZLIB_LIBRARY} ${M_LIBRARY}) -- list(APPEND PNG_BIN_TARGETS png-fix-itxt) --endif() -- --# Set a variable with CMake code which: --# Creates a symlink from src to dest (if possible) or alternatively --# copies if different. --include(CMakeParseArguments) -- --function(create_symlink DEST_FILE) -- -- cmake_parse_arguments(S "" "FILE;TARGET" "" ${ARGN}) -- -- if(NOT S_TARGET AND NOT S_FILE) -- message(FATAL_ERROR "create_symlink: Missing TARGET or FILE argument") -- endif() -- -- if(S_TARGET AND S_FILE) -- message(FATAL_ERROR "create_symlink: Both source file ${S_FILE} and build target ${S_TARGET} arguments are present; can only have one.") -- endif() -- -- if(S_FILE) -- # If we don't need to symlink something that's coming from a build target, -- # we can go ahead and symlink/copy at configure time. -- if(CMAKE_HOST_WIN32 AND NOT CYGWIN) -- execute_process( -- COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${S_FILE} ${DEST_FILE} -- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") -- else() -- execute_process( -- COMMAND ${CMAKE_COMMAND} -E create_symlink ${S_FILE} ${DEST_FILE} -- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") -- endif() -- endif() -- -- if(S_TARGET) -- # We need to use generator expressions, which can be a bit tricky, so for -- # simplicity make the symlink a POST_BUILD step and use the TARGET -- # signature of add_custom_command. -- if(CMAKE_HOST_WIN32 AND NOT CYGWIN) -- add_custom_command(TARGET ${S_TARGET} POST_BUILD -- COMMAND "${CMAKE_COMMAND}" -E copy_if_different $ $/${DEST_FILE}) -- else() -- add_custom_command(TARGET ${S_TARGET} POST_BUILD -- COMMAND "${CMAKE_COMMAND}" -E create_symlink $ $/${DEST_FILE}) -- endif() -- endif() -- --endfunction() - - # Create source generation scripts. - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genchk.cmake.in -@@ -811,121 +349,5 @@ - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/gensrc.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake @ONLY) - --# libpng is a library so default to 'lib' --if(NOT DEFINED CMAKE_INSTALL_LIBDIR) -- set(CMAKE_INSTALL_LIBDIR lib) --endif() -- --# CREATE PKGCONFIG FILES --# We use the same files like ./configure, so we have to set its vars. --# Only do this on Windows for Cygwin - the files don't make much sense outside --# of a UNIX look-alike. --if(NOT WIN32 OR CYGWIN OR MINGW) -- set(prefix ${CMAKE_INSTALL_PREFIX}) -- set(exec_prefix ${CMAKE_INSTALL_PREFIX}) -- set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) -- set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) -- set(LIBS "-lz -lm") -- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in -- ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY) -- create_symlink(libpng.pc FILE ${PNGLIB_NAME}.pc) -- -- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in -- ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY) -- create_symlink(libpng-config FILE ${PNGLIB_NAME}-config) --endif() -- --# SET UP LINKS --if(PNG_SHARED) -- set_target_properties(png PROPERTIES --# VERSION 16.${PNGLIB_RELEASE}.1.6.37 -- VERSION 16.${PNGLIB_RELEASE}.0 -- SOVERSION 16 -- CLEAN_DIRECT_OUTPUT 1) --endif() -- --# INSTALL --if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) -- install(TARGETS ${PNG_LIB_TARGETS} -- EXPORT libpng -- RUNTIME DESTINATION bin -- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -- FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- -- if(PNG_SHARED) -- # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin -- if(CYGWIN OR MINGW) -- create_symlink(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png) -- install(FILES $/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} -- DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- endif() -- -- if(NOT WIN32) -- create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png) -- install(FILES $/libpng${CMAKE_SHARED_LIBRARY_SUFFIX} -- DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- endif() -- endif() -- -- if(PNG_STATIC) -- if(NOT WIN32 OR CYGWIN OR MINGW) -- create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static) -- install(FILES $/libpng${CMAKE_STATIC_LIBRARY_SUFFIX} -- DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- endif() -- endif() --endif() -- --if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) -- install(FILES ${libpng_public_hdrs} DESTINATION include) -- install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME}) --endif() --if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL) -- if(NOT WIN32 OR CYGWIN OR MINGW) -- install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin) -- install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin) -- endif() --endif() -- --if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL) -- install(TARGETS ${PNG_BIN_TARGETS} -- RUNTIME DESTINATION bin) --endif() -- --if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL) -- # Install man pages -- if(NOT PNG_MAN_DIR) -- set(PNG_MAN_DIR "share/man") -- endif() -- install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3) -- install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5) -- # Install pkg-config files -- if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW) -- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc -- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) -- install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config -- DESTINATION bin) -- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc -- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) -- install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config -- DESTINATION bin) -- endif() --endif() -- --# Create an export file that CMake users can include() to import our targets. --if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL) -- install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake) --endif() -- --# what's with libpng-manual.txt and all the extra files? -- --# UNINSTALL --# do we need this? -- --# DIST --# do we need this? -- --# to create msvc import lib for mingw compiled shared lib --# pexports libpng.dll > libpng.def --# lib /def:libpng.def /machine:x86 -+add_library(png STATIC ${PNG_SOURCES}) -+add_dependencies(png genfiles) diff --git a/thirdparty_repo/patches/libunibreak/01-add_lb_get_char_class.patch b/thirdparty_repo/patches/libunibreak/01-add_lb_get_char_class.patch deleted file mode 100644 index 66bdd66d3b..0000000000 --- a/thirdparty_repo/patches/libunibreak/01-add_lb_get_char_class.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/src/linebreak.c b/src/linebreak.c -index c2ccdda..45afba2 100644 ---- a/src/linebreak.c -+++ b/src/linebreak.c -@@ -751,6 +751,12 @@ int lb_process_next_char( - - return brk; - } -+enum LineBreakClass lb_get_char_class( -+ struct LineBreakContext *lbpCtx, -+ utf32_t ch) -+{ -+ return get_char_lb_class_lang(ch, lbpCtx->lbpLang); -+} - - /** - * Sets the line breaking information for a generic input string. -diff --git a/src/linebreakdef.h b/src/linebreakdef.h -index 5bb8838..8db80a6 100644 ---- a/src/linebreakdef.h -+++ b/src/linebreakdef.h -@@ -169,3 +169,6 @@ void set_linebreaks( - const char *lang, - char *brks, - get_next_char_t get_next_char); -+enum LineBreakClass lb_get_char_class( -+ struct LineBreakContext *lbpCtx, -+ utf32_t ch); diff --git a/thirdparty_repo/patches/libunibreak/02-cmake-static.patch b/thirdparty_repo/patches/libunibreak/02-cmake-static.patch index 7641e8c7a0..5b011e202b 100644 --- a/thirdparty_repo/patches/libunibreak/02-cmake-static.patch +++ b/thirdparty_repo/patches/libunibreak/02-cmake-static.patch @@ -1,7 +1,7 @@ diff -urBbN libunibreak-4.3-orig/CMakeLists.txt libunibreak-4.3/CMakeLists.txt --- libunibreak-4.3-orig/CMakeLists.txt 1970-01-01 04:00:00.000000000 +0400 +++ libunibreak-4.3/CMakeLists.txt 2021-01-24 18:54:37.740977000 +0400 -@@ -0,0 +1,32 @@ +@@ -0,0 +1,38 @@ +# Custom lightweight cmake project to compile libunibreak as static library + +project(libunibreak C) @@ -29,8 +29,14 @@ diff -urBbN libunibreak-4.3-orig/CMakeLists.txt libunibreak-4.3/CMakeLists.txt + src/linebreakdata.c + src/linebreakdef.c + src/emojidef.c ++ src/emojidata.c ++ src/eastasianwidthdef.c ++ src/eastasianwidthdata.c + src/graphemebreak.c ++ src/graphemebreakdata.c ++ src/indicconjunctbreakdata.c + src/wordbreak.c ++ src/wordbreakdata.c +) + +add_library(unibreak STATIC ${LIBUNIBREAK_SOURCE}) diff --git a/thirdparty_repo/patches/zstd/01-disable-install.patch b/thirdparty_repo/patches/zstd/01-disable-install.patch index bb3ddd61ef..94a1c45c49 100644 --- a/thirdparty_repo/patches/zstd/01-disable-install.patch +++ b/thirdparty_repo/patches/zstd/01-disable-install.patch @@ -1,114 +1,39 @@ -diff -urBb zstd-1.5.0-orig/build/cmake/CMakeLists.txt zstd-1.5.0/build/cmake/CMakeLists.txt ---- zstd-1.5.0-orig/build/cmake/CMakeLists.txt 2021-05-14 18:59:34.000000000 +0400 -+++ zstd-1.5.0/build/cmake/CMakeLists.txt 2021-05-28 09:19:57.329176770 +0400 -@@ -179,25 +179,7 @@ - COMPATIBILITY SameMajorVersion +diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt +--- a/build/cmake/CMakeLists.txt ++++ b/build/cmake/CMakeLists.txt +@@ -205,8 +205,9 @@ write_basic_package_version_file( + + # A Package Config file that works from the build directory ++if(NOT SKIP_INSTALL_ALL) + export(EXPORT zstdExports + FILE "${CMAKE_CURRENT_BINARY_DIR}/zstdTargets.cmake" + NAMESPACE zstd:: ) --# A Package Config file that works from the build directory --export(EXPORT zstdExports -- FILE "${CMAKE_CURRENT_BINARY_DIR}/zstdTargets.cmake" -- NAMESPACE zstd:: -- ) - configure_file(zstdConfig.cmake + # A Package Config file that works from the installation directory +@@ -225,4 +226,5 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zstdConfig.cmake" - COPYONLY + "${CMAKE_CURRENT_BINARY_DIR}/zstdConfigVersion.cmake" + DESTINATION ${ConfigPackageLocation} ) -- --# A Package Config file that works from the installation directory --set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/zstd) --install(EXPORT zstdExports -- FILE zstdTargets.cmake -- NAMESPACE zstd:: -- DESTINATION ${ConfigPackageLocation} -- ) --install(FILES -- zstdConfig.cmake -- "${CMAKE_CURRENT_BINARY_DIR}/zstdConfigVersion.cmake" -- DESTINATION ${ConfigPackageLocation} -- ) -diff -urBb zstd-1.5.0-orig/build/cmake/contrib/gen_html/CMakeLists.txt zstd-1.5.0/build/cmake/contrib/gen_html/CMakeLists.txt ---- zstd-1.5.0-orig/build/cmake/contrib/gen_html/CMakeLists.txt 2021-05-14 18:59:34.000000000 +0400 -+++ zstd-1.5.0/build/cmake/contrib/gen_html/CMakeLists.txt 2021-05-28 09:12:11.229183870 +0400 -@@ -26,5 +26,3 @@ - add_custom_target(zstd_manual.html ALL - ${GENHTML_BINARY} "${LIBVERSION}" "${LIBRARY_DIR}/zstd.h" "${PROJECT_BINARY_DIR}/zstd_manual.html" - DEPENDS gen_html COMMENT "Update zstd manual") -- --install(FILES "${PROJECT_BINARY_DIR}/zstd_manual.html" DESTINATION "${CMAKE_INSTALL_DOCDIR}") -diff -urBb zstd-1.5.0-orig/build/cmake/contrib/pzstd/CMakeLists.txt zstd-1.5.0/build/cmake/contrib/pzstd/CMakeLists.txt ---- zstd-1.5.0-orig/build/cmake/contrib/pzstd/CMakeLists.txt 2021-05-14 18:59:34.000000000 +0400 -+++ zstd-1.5.0/build/cmake/contrib/pzstd/CMakeLists.txt 2021-05-28 09:12:01.379341944 +0400 -@@ -28,5 +28,3 @@ - else() - message(SEND_ERROR "ZSTD currently does not support thread libraries other than pthreads") - endif() -- --install(TARGETS pzstd RUNTIME DESTINATION "bin") -diff -urBb zstd-1.5.0-orig/build/cmake/lib/CMakeLists.txt zstd-1.5.0/build/cmake/lib/CMakeLists.txt ---- zstd-1.5.0-orig/build/cmake/lib/CMakeLists.txt 2021-05-14 18:59:34.000000000 +0400 -+++ zstd-1.5.0/build/cmake/lib/CMakeLists.txt 2021-05-28 09:11:47.186236385 +0400 -@@ -155,21 +155,6 @@ - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libzstd.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") - endif () - --# install target --install(FILES -- "${LIBRARY_DIR}/zstd.h" -- "${LIBRARY_DIR}/zdict.h" -- "${LIBRARY_DIR}/zstd_errors.h" -- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") -- --install(TARGETS ${library_targets} -- EXPORT zstdExports -- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" -- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" -- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" -- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" -- ) -- - # uninstall target - if (NOT TARGET uninstall) - configure_file( -diff -urBb zstd-1.5.0-orig/build/cmake/programs/CMakeLists.txt zstd-1.5.0/build/cmake/programs/CMakeLists.txt ---- zstd-1.5.0-orig/build/cmake/programs/CMakeLists.txt 2021-05-14 18:59:34.000000000 +0400 -+++ zstd-1.5.0/build/cmake/programs/CMakeLists.txt 2021-05-28 09:13:23.344693198 +0400 -@@ -37,15 +37,10 @@ - if (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)") - target_link_libraries(zstd rt) - endif () --install(TARGETS zstd RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - - if (UNIX) - add_custom_target(zstdcat ALL ${CMAKE_COMMAND} -E create_symlink zstd zstdcat DEPENDS zstd COMMENT "Creating zstdcat symlink") - add_custom_target(unzstd ALL ${CMAKE_COMMAND} -E create_symlink zstd unzstd DEPENDS zstd COMMENT "Creating unzstd symlink") -- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zstdcat DESTINATION "${CMAKE_INSTALL_BINDIR}") -- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unzstd DESTINATION "${CMAKE_INSTALL_BINDIR}") -- install(PROGRAMS ${PROGRAMS_DIR}/zstdgrep DESTINATION "${CMAKE_INSTALL_BINDIR}") -- install(PROGRAMS ${PROGRAMS_DIR}/zstdless DESTINATION "${CMAKE_INSTALL_BINDIR}") ++endif() +diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt +--- a/build/cmake/lib/CMakeLists.txt ++++ b/build/cmake/lib/CMakeLists.txt +@@ -268,6 +268,7 @@ set(VERSION "${zstd_VERSION}") - add_custom_target(zstd.1 ALL - ${CMAKE_COMMAND} -E copy ${PROGRAMS_DIR}/zstd.1 . -@@ -65,14 +60,6 @@ - set(MAN_INSTALL_DIR ${CMAKE_INSTALL_MANDIR}/man1) - endif () + configure_file("${LIBRARY_DIR}/libzstd.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libzstd.pc" @ONLY) ++if(NOT SKIP_INSTALL_ALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libzstd.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") -- install(FILES -- ${CMAKE_CURRENT_BINARY_DIR}/zstd.1 -- ${CMAKE_CURRENT_BINARY_DIR}/zstdcat.1 -- ${CMAKE_CURRENT_BINARY_DIR}/unzstd.1 -- ${CMAKE_CURRENT_BINARY_DIR}/zstdgrep.1 -- ${CMAKE_CURRENT_BINARY_DIR}/zstdless.1 -- DESTINATION "${MAN_INSTALL_DIR}") -- - add_executable(zstd-frugal ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/util.c ${PROGRAMS_DIR}/timefn.c ${PROGRAMS_DIR}/fileio.c) - target_link_libraries(zstd-frugal ${PROGRAMS_ZSTD_LINK_TARGET}) - set_property(TARGET zstd-frugal APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_NOBENCH;ZSTD_NODICT;ZSTD_NOTRACE") -@@ -87,7 +74,6 @@ - target_link_libraries(zstd ${THREADS_LIBS}) - - add_custom_target(zstdmt ALL ${CMAKE_COMMAND} -E create_symlink zstd zstdmt DEPENDS zstd COMMENT "Creating zstdmt symlink") -- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zstdmt DESTINATION "${CMAKE_INSTALL_BINDIR}") - endif () - endif () + # install target + install(FILES ${PublicHeaders} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +@@ -281,7 +282,8 @@ install(TARGETS ${library_targets} + BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" + FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT runtime OPTIONAL + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" + ) ++endif() + # uninstall target + if (NOT TARGET uninstall) diff --git a/thirdparty_repo/repo_srcdirs.cmake b/thirdparty_repo/repo_srcdirs.cmake index 636dc99962..01b47e5fb1 100644 --- a/thirdparty_repo/repo_srcdirs.cmake +++ b/thirdparty_repo/repo_srcdirs.cmake @@ -3,12 +3,12 @@ # See /CMakeLists.txt # /android/app/CMakeLists.txt -set(REPO_FREETYPE_SRCDIR "freetype-2.11.0") -set(REPO_FRIBIDI_SRCDIR "fribidi-1.0.10") -set(REPO_HARFBUZZ_SRCDIR "harfbuzz-2.8.2") -set(REPO_LIBJPEG_SRCDIR "jpeg-9d") -set(REPO_LIBPNG_SRCDIR "libpng-1.6.37") -set(REPO_LIBUNIBREAK_SRCDIR "libunibreak-4.3") +set(REPO_FREETYPE_SRCDIR "freetype-2.14.3") +set(REPO_FRIBIDI_SRCDIR "fribidi-1.0.16") +set(REPO_HARFBUZZ_SRCDIR "harfbuzz-14.2.1") +set(REPO_LIBJPEG_SRCDIR "jpeg-10") +set(REPO_LIBPNG_SRCDIR "libpng-1.6.58") +set(REPO_LIBUNIBREAK_SRCDIR "libunibreak-7.0") set(REPO_ZLIB_SRCDIR "zlib-1.3.2") -set(REPO_ZSTD_SRCDIR "zstd-1.5.0") -set(REPO_UTF8PROC_SRCDIR "utf8proc-2.6.1") +set(REPO_ZSTD_SRCDIR "zstd-1.5.7") +set(REPO_UTF8PROC_SRCDIR "utf8proc-2.11.3") diff --git a/thirdparty_repo/repo_srcdirs.mk b/thirdparty_repo/repo_srcdirs.mk index 524e8218d0..364d0a6ac1 100644 --- a/thirdparty_repo/repo_srcdirs.mk +++ b/thirdparty_repo/repo_srcdirs.mk @@ -2,12 +2,12 @@ # For ndk-build project file. # See /android/jni/Android.mk -REPO_FREETYPE_SRCDIR := freetype-2.11.0 -REPO_FRIBIDI_SRCDIR := fribidi-1.0.10 -REPO_HARFBUZZ_SRCDIR := harfbuzz-2.8.2 -REPO_LIBJPEG_SRCDIR := jpeg-9d -REPO_LIBPNG_SRCDIR := libpng-1.6.37 -REPO_LIBUNIBREAK_SRCDIR := libunibreak-4.3 +REPO_FREETYPE_SRCDIR := freetype-2.14.3 +REPO_FRIBIDI_SRCDIR := fribidi-1.0.16 +REPO_HARFBUZZ_SRCDIR := harfbuzz-14.2.1 +REPO_LIBJPEG_SRCDIR := jpeg-10 +REPO_LIBPNG_SRCDIR := libpng-1.6.58 +REPO_LIBUNIBREAK_SRCDIR := libunibreak-7.0 REPO_ZLIB_SRCDIR := zlib-1.3.2 -REPO_ZSTD_SRCDIR := zstd-1.5.0 -REPO_UTF8PROC_SRCDIR := utf8proc-2.6.1 +REPO_ZSTD_SRCDIR := zstd-1.5.7 +REPO_UTF8PROC_SRCDIR := utf8proc-2.11.3 diff --git a/thirdparty_repo/utf8proc.meta.sh b/thirdparty_repo/utf8proc.meta.sh index ac683d86a2..13d798195c 100644 --- a/thirdparty_repo/utf8proc.meta.sh +++ b/thirdparty_repo/utf8proc.meta.sh @@ -2,12 +2,12 @@ # Metadata for deploy script PN="utf8proc" -PV="2.6.1" +PV="2.11.3" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". REV="1" SRCFILE="v${PV}.tar.gz" -SHA512="9a09fe58a63c8c7983b8968b9b2c82f3d188724ed125097ea0de6a18d87569c678e226dc5de183108e47b3f068117e6bb352da1c3d24ebfd8018fb0b2346592e" +SHA512="148701fce506d076f03497b6d085f1993eff743debad4a2f6d3cbac91e19a5c22d9938245bdb460c1b22b51842c7416c42124db7416c684ee63d622490baac0e" URL="https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v${PV}.tar.gz" diff --git a/thirdparty_repo/zstd.meta.sh b/thirdparty_repo/zstd.meta.sh index e133192267..c85786d554 100644 --- a/thirdparty_repo/zstd.meta.sh +++ b/thirdparty_repo/zstd.meta.sh @@ -2,15 +2,17 @@ # Metadata for deploy script PN="zstd" -PV="1.5.0" +PV="1.5.7" # package revision: when patchset is changed (but not version), increase it # when version changed, reset to "1". -REV="1" +REV="2" SRCFILE="${PN}-${PV}.tar.gz" -SHA512="b322fc1b89a556827b7fece2fb0f34c83bf65bb85b2468c791d6d9178a65c81e21f4171b7533cbf12bc1dfb2fd323d3e8c34d86167b157645c27f65186eec659" +SHA512="b4de208f179b68d4c6454139ca60d66ed3ef3893a560d6159a056640f83d3ee67cdf6ffb88971cdba35449dba4b597eaa8b4ae908127ef7fd58c89f40bf9a705" URL="https://github.com/facebook/zstd/releases/download/v${PV}/${SRCFILE}" SOURCESDIR="${PN}-${PV}" +TAR_EXCLUDES="--exclude=${SOURCESDIR}/tests" + PATCHES="01-disable-install.patch"