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     ExternalProject_Add(
0018         ext_nasm
0019         DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0020         URL https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/nasm-2.15.05-win64.zip
0021         URL_HASH SHA256=f5c93c146f52b4f1664fa3ce6579f961a910e869ab0dae431bd871bdd2584ef2
0022 
0023         BUILD_COMMAND ${CMAKE_COMMAND} -E echo Deploying nasm 64-bit dependencies
0024         CONFIGURE_COMMAND ""
0025         INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/rdoff ${EXTPREFIX_heif}/bin/rdoff
0026                 COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/nasm.exe ${EXTPREFIX_heif}/bin/nasm.exe
0027                 COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/ndisasm.exe ${EXTPREFIX_heif}/bin/ndisasm.exe
0028 
0029         UPDATE_COMMAND ""
0030     )
0031 else (WIN32)
0032 ExternalProject_Add(
0033     ext_nasm
0034     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0035     URL https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz
0036     URL_HASH SHA256=9182a118244b058651c576baa9d0366ee05983c4d4ae1d9ddd3236a9f2304997
0037 
0038     CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${EXTPREFIX_heif} ${GLOBAL_AUTOMAKE_PROFILE}
0039 
0040     UPDATE_COMMAND ""
0041     
0042     # automake has an issue when tryin gto build outside of the course tree
0043     # 'sh: 0: Can't open autogen.sh'
0044     BUILD_IN_SOURCE ON
0045 )
0046 endif(WIN32)
0047 
0048 
0049 set(EXTRA_AVIF_DEPS "")
0050 
0051 if (WIN32 AND NOT PERL_FOUND) # Implies strawberry perl
0052     set(LIBAOM_STRAWBERRYPERL_DEP ext_strawberryperl)
0053 endif()
0054 
0055 if(WIN32 AND PERL_EXECUTABLE)
0056     set(LIBAOM_EXTRA_CMAKE_ARGS -DPERL_EXECUTABLE=${PERL_EXECUTABLE})
0057 elseif (NOT WIN32)
0058     set(LIBAOM_EXTRA_CMAKE_ARGS -DCONFIG_PIC=1)
0059 endif()
0060 
0061 if(PERL_FOUND OR USE_STRAWBERRYPERL)
0062     message(STATUS "Building AVIF support using libaom.")
0063 
0064     kis_ExternalProject_Add_with_separate_builds_apple(
0065         ext_libaom
0066         DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0067 
0068         URL https://storage.googleapis.com/aom-releases/libaom-3.6.1.tar.gz
0069         URL_HASH SHA256=42b862f58b3d00bd3902d2dc469526574f5b012e5b178e6a9652845a113d6887
0070 
0071         PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-cdef-Disable-MSVC-optimizations-for-filter_block.patch
0072               COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/android-cpu-features.patch
0073 
0074         # Static library is needed because ffmpeg accesses aom_codec_av1_dx_algo
0075         # which is not exported in Windows compilers.
0076         #
0077         # All boolean libaom-specific 'CONFIG_*' options should have value 0 or 1, because
0078         # they are passed straight to asm files. We cannot use CMake's ON/OFF for them
0079         CMAKE_ARGS ${LIBAOM_EXTRA_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} -DBUILD_SHARED_LIBS=OFF -DENABLE_EXAMPLES=OFF -DENABLE_TESTDATA=OFF -DENABLE_TESTS=OFF -DENABLE_TOOLS=OFF ${GLOBAL_PROFILE} -DCONFIG_RUNTIME_CPU_DETECT=1
0080 
0081         UPDATE_COMMAND ""
0082 
0083         DEPENDS ext_nasm ${LIBAOM_STRAWBERRYPERL_DEP}
0084     )
0085 
0086     set(EXTRA_AVIF_DEPS ext_libaom)
0087 else()
0088     message(WARNING "Perl not available, disabling AVIF support.")
0089 endif()
0090 
0091 # Incorporate Handbrake's extensions for building x265
0092 # Multicoreware added detection of SSE2/3/4.1, so we can freely enable them now
0093 # Also ship their patch for Apple silicon
0094 if (MSVC)
0095     set(x265_LIBDIR "$<CONFIG>/")
0096     set(x265_LIBRARY x265-static.lib)
0097     set(x265_10bit_LIBRARY x265_main10-static.lib)
0098     set(x265_12bit_LIBRARY x265_main12-static.lib)
0099     set(x265_EXTRA_LINK_FLAGS /LIBPATH:${EXTPREFIX_heif}/lib)
0100 else()
0101     set(x265_LIBDIR "")
0102     set(x265_LIBRARY libx265.a)
0103     set(x265_10bit_LIBRARY libx265_main10.a)
0104     set(x265_12bit_LIBRARY libx265_main12.a)
0105     set(x265_EXTRA_LINK_FLAGS -L${EXTPREFIX_heif}/lib)
0106 endif()
0107 ExternalProject_Add(ext_libx265_10bit
0108     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0109     URL https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/x265-snapshot-20220709-12716.tar.gz
0110     URL_HASH SHA256=19ef8b21301f13d795601184884859e9f4a2f87fcda83757bd7dcd588056e926
0111 
0112     SOURCE_SUBDIR source/
0113 
0114     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A01-build-fix.patch
0115         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A02-threads-priority.patch
0116         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A03-threads-pool-adjustments.patch
0117         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A04-64-bit_for_aarch64.patch
0118         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A05-disable-scanPosLast-aarch64-asm.patch
0119         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A06-common-threading.patch
0120         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Silence-nasm-2.15-warnings.patch
0121         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0003-Skip-PDB-in-MinGW.patch
0122 
0123     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
0124     INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${x265_LIBDIR}${x265_LIBRARY} ${EXTPREFIX_heif}/lib/${x265_10bit_LIBRARY}
0125     UPDATE_COMMAND ""
0126 
0127     DEPENDS ext_nasm
0128 )
0129 ExternalProject_Add(ext_libx265_12bit
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} 
0146     -DHIGH_BIT_DEPTH=TRUE -DMAIN12=TRUE -DEXPORT_C_API=FALSE  -DENABLE_CLI=FALSE -DENABLE_SHARED=FALSE
0147     INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${x265_LIBDIR}${x265_LIBRARY} ${EXTPREFIX_heif}/lib/${x265_12bit_LIBRARY}
0148     UPDATE_COMMAND ""
0149 
0150     DEPENDS ext_nasm ext_libx265_10bit
0151 )
0152 ExternalProject_Add(
0153     ext_libx265
0154     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0155     URL https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/x265-snapshot-20220709-12716.tar.gz
0156     URL_HASH SHA256=19ef8b21301f13d795601184884859e9f4a2f87fcda83757bd7dcd588056e926
0157 
0158     SOURCE_SUBDIR source/
0159 
0160     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A01-build-fix.patch
0161         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A02-threads-priority.patch
0162         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A03-threads-pool-adjustments.patch
0163         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A04-64-bit_for_aarch64.patch
0164         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A05-disable-scanPosLast-aarch64-asm.patch
0165         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/A06-common-threading.patch
0166         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Silence-nasm-2.15-warnings.patch
0167         COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0003-Skip-PDB-in-MinGW.patch
0168 
0169     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
0170 
0171     UPDATE_COMMAND ""
0172 
0173     DEPENDS ext_nasm ext_libx265_12bit
0174 )
0175 
0176 ExternalProject_Add(
0177     ext_libheif
0178     DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
0179 
0180     URL https://github.com/strukturag/libheif/releases/download/v1.13.0/libheif-1.13.0.tar.gz
0181     URL_HASH SHA256=c20ae01bace39e89298f6352f1ff4a54b415b33b9743902da798e8a1e51d7ca1
0182 
0183     PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/clang-aom-link-pthread.patch
0184 
0185     CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_heif} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} -DWITH_EXAMPLES=OFF ${GLOBAL_PROFILE}
0186 
0187     UPDATE_COMMAND ""
0188     DEPENDS ${EXTRA_AVIF_DEPS} ext_libde265 ext_libx265
0189 )