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)