Warning, /graphics/krita/3rdparty/ext_heif/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 SET(EXTPREFIX_heif "${EXTPREFIX}" )
0002 
0003 ExternalProject_Add(
0004     ext_libde265
0005     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0006     URL https://github.com/strukturag/libde265/releases/download/v1.0.8/libde265-1.0.8.tar.gz
0007     URL_HASH SHA1=db8fa137a4681ec092e7546d9155bbaa95938e5e
0008 
0009     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Quick-check-for-SSE-support.patch
0010 
0011     CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE}
0012 
0013     UPDATE_COMMAND ""
0014 )
0015 
0016 if (WIN32)
0017     if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
0018         ExternalProject_Add(
0019             ext_nasm
0020             DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0021             URL https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/nasm-2.15.05-win64.zip
0022             URL_HASH SHA256=f5c93c146f52b4f1664fa3ce6579f961a910e869ab0dae431bd871bdd2584ef2
0023 
0024             BUILD_COMMAND ${CMAKE_COMMAND} -E echo Deploying nasm 64-bit dependencies
0025             CONFIGURE_COMMAND ""
0026             INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/rdoff ${EXTPREFIX_heif}/bin/rdoff
0027                     COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/nasm.exe ${EXTPREFIX_heif}/bin/nasm.exe
0028                     COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/ndisasm.exe ${EXTPREFIX_heif}/bin/ndisasm.exe
0029 
0030             UPDATE_COMMAND ""
0031         )
0032     else("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
0033         ExternalProject_Add(
0034             ext_nasm
0035             DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0036             URL https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win32/nasm-2.15.05-win32.zip
0037             URL_HASH SHA256=258c7d1076e435511cf2fdf94e2281eadbdb9e3003fd57f356f446e2bce3119e
0038 
0039             BUILD_COMMAND ${CMAKE_COMMAND} -E echo Deploying nasm 32-bit dependencies
0040             CONFIGURE_COMMAND ""
0041             INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/rdoff ${EXTPREFIX_heif}/bin/rdoff
0042                     COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/nasm.exe ${EXTPREFIX_heif}/bin/nasm.exe
0043                     COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/ndisasm.exe ${EXTPREFIX_heif}/bin/ndisasm.exe
0044 
0045             UPDATE_COMMAND ""
0046         )
0047     endif ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
0048 else (WIN32)
0049 ExternalProject_Add(
0050     ext_nasm
0051     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0052     URL https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz
0053     URL_HASH SHA256=9182a118244b058651c576baa9d0366ee05983c4d4ae1d9ddd3236a9f2304997
0054 
0055     CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${EXTPREFIX_heif} ${GLOBAL_AUTOMAKE_PROFILE}
0056 
0057     UPDATE_COMMAND ""
0058 )
0059 endif(WIN32)
0060 
0061 
0062 set(EXTRA_AVIF_DEPS "")
0063 
0064 find_package(Perl)
0065 if(NOT PERL_FOUND AND WIN32)
0066     ExternalProject_Add(
0067         ext_strawberryperl
0068         DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0069         # From https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-32bit-portable.zip
0070         URL https://files.kde.org/krita/build/dependencies/strawberry-perl-5.32.1.1-32bit-portable.zip
0071         URL_HASH SHA1=28bca91cadd6651c2b2463db8587c170bf17f2fa
0072 
0073         BUILD_COMMAND ${CMAKE_COMMAND} -E echo Deploying Strawberry Perl portable
0074         CONFIGURE_COMMAND ""
0075         INSTALL_COMMAND ""
0076         UPDATE_COMMAND ""
0077 
0078         SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/Strawberry"
0079     )
0080     set(USE_STRAWBERRYPERL 1)
0081     set(LIBAOM_EXTRA_CMAKE_ARGS -DPERL_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/Strawberry/perl/bin/perl.exe)
0082     set(LIBAOM_STRAWBERRYPERL_DEP ext_strawberryperl)
0083 elseif(PERL_FOUND AND WIN32)
0084     set(LIBAOM_EXTRA_CMAKE_ARGS -DPERL_EXECUTABLE=${PERL_EXECUTABLE})
0085 endif()
0086 
0087 if(NOT WIN32)
0088     set(LIBAOM_EXTRA_CMAKE_ARGS -DCONFIG_PIC=1)
0089 endif()
0090 
0091 if(PERL_FOUND OR USE_STRAWBERRYPERL)
0092     message(STATUS "Building AVIF support using libaom.")
0093 
0094     ExternalProject_Add(
0095         ext_libaom
0096         DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0097 
0098         URL https://storage.googleapis.com/aom-releases/libaom-3.5.0.tar.gz
0099         URL_HASH SHA256=d37dbee372e2430a7efde813984ae6d78bdf1fc4080ebe32457c9115408b0738
0100 
0101         CMAKE_ARGS ${LIBAOM_EXTRA_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} -DENABLE_EXAMPLES=OFF -DENABLE_TESTDATA=OFF -DENABLE_TESTS=OFF -DENABLE_TOOLS=OFF ${GLOBAL_PROFILE}
0102 
0103         UPDATE_COMMAND ""
0104 
0105         DEPENDS ext_nasm ${LIBAOM_STRAWBERRYPERL_DEP}
0106     )
0107 
0108     set(EXTRA_AVIF_DEPS ext_libaom)
0109 else()
0110     message(WARNING "Perl not available, disabling AVIF support.")
0111 endif()
0112 
0113 # Incorporate Handbrake's extensions for building x265
0114 # Multicoreware added detection of SSE2/3/4.1, so we can freely enable them now
0115 # Also ship their patch for Apple silicon
0116 if (MSVC)
0117     set(x265_LIBDIR "$<CONFIG>/")
0118     set(x265_LIBRARY x265-static.lib)
0119     set(x265_10bit_LIBRARY x265_main10-static.lib)
0120     set(x265_12bit_LIBRARY x265_main12-static.lib)
0121     set(x265_EXTRA_LINK_FLAGS /LIBPATH:${EXTPREFIX_heif}/lib)
0122 else()
0123     set(x265_LIBDIR "")
0124     set(x265_LIBRARY libx265.a)
0125     set(x265_10bit_LIBRARY libx265_main10.a)
0126     set(x265_12bit_LIBRARY libx265_main12.a)
0127     set(x265_EXTRA_LINK_FLAGS -L${EXTPREFIX_heif}/lib)
0128 endif()
0129 ExternalProject_Add(ext_libx265_10bit
0130     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0131     URL https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/x265-snapshot-20220709-12716.tar.gz
0132     URL_HASH SHA256=19ef8b21301f13d795601184884859e9f4a2f87fcda83757bd7dcd588056e926
0133 
0134     SOURCE_SUBDIR source/
0135 
0136     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A01-build-fix.patch
0137         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A02-threads-priority.patch
0138         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A03-threads-pool-adjustments.patch
0139         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A04-64-bit_for_aarch64.patch
0140         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A05-disable-scanPosLast-aarch64-asm.patch
0141         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A06-common-threading.patch
0142         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Silence-nasm-2.15-warnings.patch
0143         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0003-Skip-PDB-in-MinGW.patch
0144 
0145     CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} -DHIGH_BIT_DEPTH=TRUE -DEXPORT_C_API=FALSE -DENABLE_CLI=FALSE -DENABLE_SHARED=FALSE
0146     INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${x265_LIBDIR}${x265_LIBRARY} ${EXTPREFIX_heif}/lib/${x265_10bit_LIBRARY}
0147 
0148     DEPENDS ext_nasm
0149 )
0150 ExternalProject_Add(ext_libx265_12bit
0151     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0152     URL https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/x265-snapshot-20220709-12716.tar.gz
0153     URL_HASH SHA256=19ef8b21301f13d795601184884859e9f4a2f87fcda83757bd7dcd588056e926
0154 
0155     SOURCE_SUBDIR source/
0156 
0157     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A01-build-fix.patch
0158         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A02-threads-priority.patch
0159         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A03-threads-pool-adjustments.patch
0160         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A04-64-bit_for_aarch64.patch
0161         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A05-disable-scanPosLast-aarch64-asm.patch
0162         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A06-common-threading.patch
0163         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Silence-nasm-2.15-warnings.patch
0164         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0003-Skip-PDB-in-MinGW.patch
0165 
0166     CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} 
0167     -DHIGH_BIT_DEPTH=TRUE -DMAIN12=TRUE -DEXPORT_C_API=FALSE  -DENABLE_CLI=FALSE -DENABLE_SHARED=FALSE
0168     INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${x265_LIBDIR}${x265_LIBRARY} ${EXTPREFIX_heif}/lib/${x265_12bit_LIBRARY}
0169 
0170     DEPENDS ext_nasm
0171 )
0172 ExternalProject_Add(
0173     ext_libx265
0174     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0175     URL https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/x265-snapshot-20220709-12716.tar.gz
0176     URL_HASH SHA256=19ef8b21301f13d795601184884859e9f4a2f87fcda83757bd7dcd588056e926
0177 
0178     SOURCE_SUBDIR source/
0179 
0180     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A01-build-fix.patch
0181         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A02-threads-priority.patch
0182         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A03-threads-pool-adjustments.patch
0183         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A04-64-bit_for_aarch64.patch
0184         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A05-disable-scanPosLast-aarch64-asm.patch
0185         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A06-common-threading.patch
0186         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Silence-nasm-2.15-warnings.patch
0187         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0003-Skip-PDB-in-MinGW.patch
0188 
0189     CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} -DENABLE_SHARED=TRUE  -DENABLE_HDR10_PLUS=TRUE -DEXTRA_LIB:String=${x265_10bit_LIBRARY}$<SEMICOLON>${x265_12bit_LIBRARY} -DEXTRA_LINK_FLAGS:String=${x265_EXTRA_LINK_FLAGS} -DLINKED_10BIT=TRUE -DLINKED_12BIT=TRUE
0190 
0191     UPDATE_COMMAND ""
0192 
0193     DEPENDS ext_nasm ext_libx265_10bit ext_libx265_12bit
0194 )
0195 
0196 ExternalProject_Add(
0197     ext_libheif
0198     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0199 
0200     URL https://github.com/strukturag/libheif/releases/download/v1.13.0/libheif-1.13.0.tar.gz
0201     URL_HASH SHA256=c20ae01bace39e89298f6352f1ff4a54b415b33b9743902da798e8a1e51d7ca1
0202 
0203     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/clang-aom-link-pthread.patch
0204 
0205     CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} -DBUILD_EXAMPLES=OFF ${GLOBAL_PROFILE}
0206 
0207     UPDATE_COMMAND ""
0208     DEPENDS ${EXTRA_AVIF_DEPS} ext_libde265 ext_libx265 ext_jpeg ext_png
0209 )