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

0001 project (krita-and-all-its-deps)
0002 
0003 #
0004 # Build all dependencies for Krita and finally Krita itself.
0005 # Parameters: EXTERNALS_DOWNLOAD_DIR place to download all packages
0006 #             INSTALL_ROOT place to install everything to
0007 #             MXE_TOOLCHAIN: the toolchain file to cross-compile using MXE
0008 #
0009 # Example usage: cmake ..\kritadeposx -DEXTERNALS_DOWNLOAD_DIR=/dev2/d -DINSTALL_ROOT=/dev2/i -DWIN64_BUILD=TRUE  -DBOOST_LIBRARYDIR=/dev2/i/lib   -G "Visual Studio 11 Win64"
0010 
0011 if(APPLE)
0012         execute_process(COMMAND sysctl -n hw.optional.arm64 OUTPUT_VARIABLE apple_has_arm64_optional)
0013         if(apple_has_arm64_optional)
0014                 message(STATUS "Building on macos arm")
0015                 cmake_minimum_required(VERSION 3.19.3)
0016         else()
0017         cmake_minimum_required(VERSION 3.7.2)
0018         endif()
0019 else(APPLE)
0020         cmake_minimum_required(VERSION 3.7.0 FATAL_ERROR)
0021 endif()
0022 
0023 #
0024 # If you add a new dependency into 3rdparty folder, do **not** overide
0025 # BUILD_COMMAND and INSTALL_COMMAND with their '-j${SUBMAKE_JOBS}' equivalents,
0026 # unless you need a really custom command for this dep. CMake will pass the
0027 # correct threading option to make/ninja automatically. The variable below is
0028 # Used **only** by custom builds, like sip and boost.
0029 #
0030 
0031 if (NOT SUBMAKE_JOBS)
0032     include(ProcessorCount)
0033     ProcessorCount(NUM_CORES)
0034     if  (NOT NUM_CORES EQUAL 0)
0035         if (NUM_CORES GREATER 2)
0036             # be nice...
0037             MATH( EXPR NUM_CORES "${NUM_CORES} - 2" )
0038         endif()
0039         set(SUBMAKE_JOBS ${NUM_CORES})
0040     else()
0041         set(SUBMAKE_JOBS 1)
0042     endif()
0043 endif()
0044 
0045 MESSAGE("SUBMAKE_JOBS: " ${SUBMAKE_JOBS})
0046 
0047 if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
0048         message(FATAL_ERROR "Compiling in the source directory is not supported. Use for example 'mkdir build; cd build; cmake ..'.")
0049 endif (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
0050 
0051 # Tools must be obtained to work with:
0052 include (ExternalProject)
0053 
0054 LIST (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/kde_macro")
0055 include (KritaToNativePath)
0056 
0057 # allow specification of a directory with pre-downloaded
0058 # requirements
0059 if(NOT IS_DIRECTORY ${EXTERNALS_DOWNLOAD_DIR})
0060     message(FATAL_ERROR "No externals download dir set. Use -DEXTERNALS_DOWNLOAD_DIR")
0061 endif()
0062 
0063 if(NOT IS_DIRECTORY ${INSTALL_ROOT})
0064     message(FATAL_ERROR "No install dir set. Use -DINSTALL_ROOT")
0065 endif()
0066 
0067 set(TOP_INST_DIR ${INSTALL_ROOT})
0068 set(EXTPREFIX "${TOP_INST_DIR}")
0069 set(CMAKE_PREFIX_PATH "${EXTPREFIX}")
0070 
0071 if (${CMAKE_GENERATOR} STREQUAL "Visual Studio 14 2015 Win64")
0072     SET(GLOBAL_PROFILE
0073         -DCMAKE_MODULE_LINKER_FLAGS=/machine:x64
0074         -DCMAKE_EXE_LINKER_FLAGS=/machine:x64
0075         -DCMAKE_SHARED_LINKER_FLAGS=/machine:x64
0076         -DCMAKE_STATIC_LINKER_FLAGS=/machine:x64
0077     )
0078 endif ()
0079 
0080 message( STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}")
0081 message( STATUS "CMAKE_CL_64: ${CMAKE_CL_64}")
0082 
0083 set(GLOBAL_BUILD_TYPE RelWithDebInfo)
0084 set(GLOBAL_PROFILE ${GLOBAL_PROFILE} -DBUILD_TESTING=false)
0085 
0086 if (UNIX AND NOT APPLE)
0087         set(LINUX true)
0088     set(PATCH_COMMAND patch)
0089 endif ()
0090 
0091 if (WIN32 OR LINUX)
0092 option(QT_ENABLE_DEBUG_INFO "Build Qt with full debug info included" OFF)
0093 endif()
0094 
0095 if (WIN32)
0096         option(ENABLE_MSYS2_FIXES "Enable patches that are needed for MSYS2+Clang Krita build" OFF)
0097         option(QT_ENABLE_DYNAMIC_OPENGL "Build Qt with dynamic ANGLE support '-opengl dynamic -angle' (needs env var 'WindowsSdkDir' set to path of Windows 10 SDK)" ON)
0098     option(USE_EXTERNAL_ANGLE "Use a newer custom Google ANGLE build instead of the one bundled in Qt" ON)
0099 
0100     if (QT_ENABLE_DYNAMIC_OPENGL)
0101                 if (DEFINED ENV{WindowsSdkDir})
0102                         message(STATUS "WindowsSdkDir is set to '$ENV{WindowsSdkDir}'")
0103                 else (DEFINED ENV{WindowsSdkDir})
0104                         message(FATAL_ERROR "Environment variable 'WindowsSdkDir' not set! Please set it to path of Windows 10 SDK or disable QT_ENABLE_DYNAMIC_OPENGL")
0105                 endif ()
0106     endif ()
0107 
0108     if(USE_EXTERNAL_ANGLE AND NOT QT_ENABLE_DYNAMIC_OPENGL)
0109         message(WARNING "USE_EXTERNAL_ANGLE does not have any effect when QT_ENABLE_DYNAMIC_OPENGL is disabled.")
0110     endif()
0111 
0112     if(ENABLE_MSYS2_FIXES)
0113         find_package(ZLIB)
0114         find_package(Iconv)
0115         find_package(EXPAT)
0116         find_package(Gettext)
0117         find_package(OpenSSL)
0118     endif()
0119 
0120     if (NOT ZLIB_FOUND)
0121         set (ZLIB_DEP ext_zlib)
0122     endif()
0123     
0124     if (NOT Iconv_FOUND)
0125         set (ICONV_DEP ext_iconv)
0126     endif()
0127     
0128     if (NOT EXPAT_FOUND)
0129         set (EXPAT_DEP ext_expat)
0130     endif()
0131     
0132     if (NOT Gettext_FOUND)
0133         set (GETTEXT_DEP ext_gettext)
0134     endif()
0135     
0136     if (NOT OpenSSL_FOUND)
0137         set (OPENSSL_DEP ext_openssl)
0138     endif()
0139 elseif (APPLE OR ANDROID)
0140     set (ZLIB_DEP ext_zlib)
0141 endif (WIN32)
0142 
0143 if (WIN32)
0144     option(USE_QT_TABLET_WINDOWS "Do not use Krita's forked Wintab and Windows Ink support on Windows, but leave everything to Qt." ON)
0145 endif ()
0146 
0147 set(SECURITY_EXE_LINKER_FLAGS "")
0148 set(SECURITY_SHARED_LINKER_FLAGS "")
0149 set(SECURITY_MODULE_LINKER_FLAGS "")
0150 if (MINGW)
0151         option(USE_MINGW_HARDENING_LINKER "Enable DEP (NX), ASLR and high-entropy ASLR linker flags (mingw-w64)" ON)
0152         if (USE_MINGW_HARDENING_LINKER)
0153                 set(SECURITY_EXE_LINKER_FLAGS "-Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base")
0154                 set(SECURITY_SHARED_LINKER_FLAGS "-Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base")
0155                 set(SECURITY_MODULE_LINKER_FLAGS "-Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base")
0156                 if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
0157                         # Enable high-entropy ASLR for 64-bit
0158                         # The image base has to be >4GB for HEASLR to be enabled.
0159                         # The values used here are kind of arbitrary.
0160                         set(SECURITY_EXE_LINKER_FLAGS "${SECURITY_EXE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000")
0161                         set(SECURITY_SHARED_LINKER_FLAGS "${SECURITY_SHARED_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000")
0162                         set(SECURITY_MODULE_LINKER_FLAGS "${SECURITY_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000")
0163                         set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0164                                 -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0165                                 -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0166                                 -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0167                         )
0168                 endif ()
0169         else ()
0170                 message(WARNING "Linker Security Flags not enabled!")
0171         endif ()
0172 
0173     # Generate reduced debug info
0174     set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -g1")
0175     set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g1")
0176 
0177     # Clang does not generate DWARF aranges data by default, which makes
0178     # DrMingw not able to parse the DWARF debug symbols. Add -gdwarf-aranges
0179     # explicitly.
0180     # See: https://github.com/jrfonseca/drmingw/issues/42#issuecomment-516614561
0181     #
0182     # `-fdebug-info-for-profiling` is needed for proper C++ function signatures
0183     # when using Clang with `-g1`.
0184     if (CMAKE_C_COMPILER_ID STREQUAL "Clang")
0185         set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -gdwarf-aranges -fdebug-info-for-profiling")
0186     endif ()
0187     if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
0188         set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -gdwarf-aranges -fdebug-info-for-profiling")
0189     endif ()
0190 
0191     set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0192         -DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
0193         -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
0194     )
0195 elseif (MSVC)
0196         set(SECURITY_C_FLAGS ${CMAKE_C_FLAGS})
0197         set(SECURITY_CXX_FLAGS ${CMAKE_CXX_FLAGS})
0198         # Increase the stack size to match MinGW's. Prevents crashes with GMic.
0199         set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:4194304")
0200         set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /STACK:4194304")
0201         set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /STACK:4194304")
0202         option(USE_CONTROL_FLOW_GUARD "Enable Control Flow Guard hardening (MSVC)" ON)
0203         if (USE_CONTROL_FLOW_GUARD)
0204                 set(SECURITY_C_FLAGS "${SECURITY_C_FLAGS} /guard:cf")
0205                 set(SECURITY_CXX_FLAGS "${SECURITY_CXX_FLAGS} /guard:cf")
0206                 set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /GUARD:CF")
0207                 set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /GUARD:CF")
0208                 set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /GUARD:CF")
0209         endif (USE_CONTROL_FLOW_GUARD)
0210         set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0211                 -DCMAKE_C_FLAGS=${SECURITY_C_FLAGS}
0212                 -DCMAKE_CXX_FLAGS=${SECURITY_CXX_FLAGS}
0213                 -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0214                 -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0215                 -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0216         )
0217 endif ()
0218 
0219 if (DEFINED EP_PREFIX)
0220         set_directory_properties(PROPERTIES EP_PREFIX ${EP_PREFIX})
0221 endif ()
0222 
0223 if (WIN32)
0224    set(PATCH_COMMAND myptch)
0225 endif()
0226 
0227 if (MSYS)
0228         set(PATCH_COMMAND patch)
0229     set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0230                            -DCMAKE_TOOLCHAIN_FILE=${MXE_TOOLCHAIN}
0231                            -DCMAKE_FIND_PREFIX_PATH=${CMAKE_PREFIX_PATH}
0232                            -DCMAKE_SYSTEM_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include
0233                            -DCMAKE_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include
0234                            -DCMAKE_LIBRARY_PATH=${CMAKE_PREFIX_PATH}/lib
0235                            -DZLIB_ROOT=${CMAKE_PREFIX_PATH}
0236     )
0237     set(GLOBAL_AUTOMAKE_PROFILE  --host=i686-pc-mingw32 )
0238 endif()
0239 
0240 if (APPLE)
0241     set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0242                         -DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH}
0243                         -DCMAKE_INCLUDE_PATH:PATH=${CMAKE_PREFIX_PATH}/include
0244                         -DCMAKE_LIBRARY_PATH:PATH=${CMAKE_PREFIX_PATH}/lib
0245                         -DCMAKE_MACOSX_RPATH=ON
0246                         -DKDE_SKIP_RPATH_SETTINGS=ON
0247                         -DBUILD_WITH_INSTALL_RPATH=ON
0248                         -DAPPLE_SUPPRESS_X11_WARNING=ON
0249                         -DCMAKE_FIND_FRAMEWORK=LAST
0250                         -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
0251          )
0252     set(PATCH_COMMAND patch)
0253 endif ()
0254 
0255 if (ANDROID)
0256   # Increase the stack size to match MinGW's. Prevents crashes with GMic.
0257   set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0258   set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0259   set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0260 
0261   # stl must be consistent: https://github.com/android/ndk/issues/1441
0262   set (GLOBAL_PROFILE ${GLOBAL_PROFILE}
0263                      -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
0264                      -DANDROID_PLATFORM=${ANDROID_PLATFORM}
0265                      -DANDROID_ABI=${ANDROID_ABI}
0266                      -DANDROID_STL=${ANDROID_STL}
0267                      -DCMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}
0268                      -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0269                      -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0270                      -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS})
0271 
0272   # see: https://github.com/android/ndk/issues/929
0273   unset (CMAKE_SYSROOT)
0274 endif()
0275 
0276 function(TestCompileLinkPythonLibs OUTPUT_VARNAME)
0277         include(CheckCXXSourceCompiles)
0278         set(CMAKE_REQUIRED_INCLUDES ${Python_INCLUDE_DIRS})
0279         set(CMAKE_REQUIRED_LIBRARIES ${Python_LIBRARIES})
0280         if (MINGW)
0281                 set(CMAKE_REQUIRED_DEFINITIONS -D_hypot=hypot)
0282         endif ()
0283         unset(${OUTPUT_VARNAME} CACHE)
0284         CHECK_CXX_SOURCE_COMPILES("
0285 // https://bugs.python.org/issue22411
0286 #if defined(_MSC_VER)
0287 #  ifdef _DEBUG
0288 #    undef _DEBUG
0289 #  endif /* _DEBUG */
0290 #endif /* _MSC_VER */
0291 #include <Python.h>
0292 int main(int argc, char *argv[]) {
0293         Py_InitializeEx(0);
0294 }" ${OUTPUT_VARNAME})
0295 endfunction()
0296 
0297 function(DumpSitePackages PYTHONPATH)
0298     if (WIN32)
0299         krita_to_native_path("${${PYTHONPATH}}" _krita_pythonpath)
0300         string(TOLOWER "${_krita_pythonpath}" _krita_pythonpath)
0301     else()
0302         set(_krita_pythonpath ${${PYTHONPATH}})
0303     endif()
0304     execute_process(COMMAND ${CMAKE_COMMAND}
0305         -E env PYTHONPATH=${_krita_pythonpath}
0306         ${Python_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_paths());"
0307         OUTPUT_VARIABLE __sysconfig)
0308     message(STATUS "Python's system directories: ${__sysconfig}")
0309     execute_process(COMMAND ${CMAKE_COMMAND}
0310         -E env PYTHONPATH=${_krita_pythonpath}
0311         ${Python_EXECUTABLE} -c "from setuptools.command import easy_install; print(easy_install.get_site_dirs())"
0312         OUTPUT_VARIABLE __setuptools)
0313     message(STATUS "Python's setuptools directories: ${__setuptools}")
0314 endfunction()
0315 
0316 if (WIN32)
0317     option(ENABLE_PYTHON_DEPS "Enable Python deps (sip, pyqt)" ON)
0318     if (ENABLE_PYTHON_DEPS)
0319         set(KRITA_PYTHONPATH "${INSTALL_ROOT}/lib/site-packages;$ENV{PYTHONPATH}")
0320         message(STATUS "Krita's PEP-0250 root: ${KRITA_PYTHONPATH}")
0321         if (ENABLE_PYTHON_2)
0322             message(FATAL_ERROR "Python 2.7 is not supported on Windows at the moment.")
0323         else(ENABLE_PYTHON_2)
0324             find_package(Python 3.8 EXACT COMPONENTS Development Interpreter)
0325         endif()
0326         if (Python_FOUND)
0327             message(STATUS "Python requirements met.")
0328             TestCompileLinkPythonLibs(CAN_USE_PYTHON_LIBS)
0329             DumpSitePackages(KRITA_PYTHONPATH)
0330             if (NOT CAN_USE_PYTHON_LIBS)
0331                 file(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log ERROR_LOG)
0332                 string(REPLACE "\n" "\n  " ERROR_LOG "${ERROR_LOG}")
0333                 message(FATAL_ERROR "Compiling with Python library failed, please check whether the architecture is correct!\nCMakeError.log:\n  ${ERROR_LOG}\n\n")
0334             endif ()
0335         else ()
0336             message(FATAL_ERROR "Python requirements not met. To disable Python deps, set ENABLE_PYTHON_DEPS to OFF.")
0337         endif ()
0338     endif ()
0339 elseif(UNIX)
0340     if (APPLE)
0341         set(PYTHON_VERSION "3.9")
0342     else()
0343         set(PYTHON_VERSION "3.8")
0344     endif()
0345 
0346     set(KRITA_PYTHONPATH "${INSTALL_ROOT}/lib/python${PYTHON_VERSION}/site-packages")
0347     message(STATUS "Krita's PEP-0250 root: ${KRITA_PYTHONPATH}")
0348 endif ()
0349 
0350 # this list must be dependency-ordered
0351 if (NOT WIN32 OR OPENSSL_DEP)
0352     add_subdirectory( ext_openssl )
0353 endif()
0354 
0355 if (ENABLE_PYTHON_DEPS OR NOT MINGW)
0356         add_subdirectory( ext_python )
0357 endif ()
0358 if (WIN32)
0359     add_subdirectory( ext_patch )
0360 endif ()
0361 add_subdirectory( ext_lzma )
0362 
0363 if (NOT WIN32 OR ICONV_DEP)
0364     add_subdirectory( ext_iconv )
0365 endif()
0366 
0367 if (NOT WIN32 OR GETTEXT_DEP)
0368     add_subdirectory( ext_gettext )
0369 endif()
0370 
0371 if (NOT WIN32 OR ZLIB_DEP)
0372     add_subdirectory( ext_zlib )
0373 endif()
0374 
0375 add_subdirectory( ext_boost )
0376 add_subdirectory( ext_jpeg )
0377 add_subdirectory( ext_tiff )
0378 add_subdirectory( ext_png )
0379 if (WIN32)
0380     add_subdirectory( ext_icoutils )
0381 endif ()
0382 add_subdirectory( ext_eigen3 )
0383 
0384 if (NOT WIN32 OR EXPAT_DEP)
0385     add_subdirectory( ext_expat ) # for exiv2
0386 endif()
0387 
0388 add_subdirectory( ext_exiv2 )
0389 add_subdirectory( ext_lcms2 )
0390 add_subdirectory( ext_openexr )
0391 add_subdirectory( ext_gsl )
0392 add_subdirectory( ext_fftw3 )
0393 add_subdirectory( ext_ocio )
0394 add_subdirectory( ext_openjpeg )
0395 add_subdirectory( ext_fontconfig)
0396 add_subdirectory( ext_freetype)
0397 
0398 if(USE_EXTERNAL_ANGLE AND QT_ENABLE_DYNAMIC_OPENGL)
0399     add_subdirectory(ext_googleangle)
0400 endif()
0401 
0402 add_subdirectory( ext_qt )
0403 add_subdirectory( ext_poppler )
0404 add_subdirectory( ext_libraw )
0405 if (ANDROID)
0406   # gettext replacement
0407   add_subdirectory(ext_libintl-lite)
0408   add_subdirectory(ext_libunwindstack-ndk)
0409 endif()
0410 add_subdirectory( ext_frameworks )
0411 if (ENABLE_PYTHON_DEPS OR NOT MINGW)
0412     add_subdirectory( ext_sip )
0413     add_subdirectory( ext_pyqt )
0414 endif ()
0415 
0416 if (WIN32)
0417     add_subdirectory( ext_drmingw )
0418 endif ()
0419 
0420 if(UNIX)
0421     add_subdirectory( ext_pkgconfig )
0422 endif()
0423 
0424 add_subdirectory( ext_heif )
0425 add_subdirectory(ext_giflib)
0426 add_subdirectory(ext_quazip)
0427 add_subdirectory(ext_seexpr)
0428 add_subdirectory(ext_json_c)
0429 add_subdirectory(ext_mypaint)
0430 
0431 if (UNIX AND NOT APPLE)
0432     add_subdirectory(ext_fcitx-qt)
0433 endif()
0434 
0435 add_subdirectory(ext_webp)
0436 add_subdirectory(ext_jpegxl)
0437 add_subdirectory(ext_xsimd)