OpenMiInk/third_party/krita-deps-management/ext_pyqt5/CMakeLists.txt
Hellings b8c8ff98e2 Hi
2026-10-16 09:05:56 -04:00

92 lines
No EOL
3.9 KiB
CMake

cmake_minimum_required(VERSION 3.29)
project(ext_pyqt5)
include(${CMAKE_SOURCE_DIR}/../cmake/base-dep-options.cmake)
include(${CMAKE_SOURCE_DIR}/../cmake/krita_initialize_python.cmake)
if(UNIX)
if (QT_ENABLE_ASAN)
set(_extra_pyqt_config --qmake-setting QMAKE_LFLAGS+=-fsanitize=address --qmake-setting QMAKE_CFLAGS+=-fsanitize=address --qmake-setting QMAKE_CXXFLAGS+=-fsanitize=address)
elseif(APPLE)
if(MACOS_ARCHS GREATER 1)
set(_extra_pyqt_config --qmake-setting "QMAKE_APPLE_DEVICE_ARCHS=${CMAKE_OSX_ARCHITECTURES_STR}")
endif()
else ()
unset(_extra_pyqt_config)
endif ()
ExternalProject_Add( ext_pyqt5
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz
URL_HASH SHA256=fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env
"PYTHONPATH=${KRITA_PYTHONPATH}"
${EXTPREFIX}/bin/sip-build --confirm-license --no-designer-plugin --no-qml-plugin --no-dbus-python --no-tools --no-make --jobs ${SUBMAKE_JOBS} ${_extra_pyqt_config}
BUILD_COMMAND ${CMAKE_COMMAND} -E env
"PYTHONPATH=${KRITA_PYTHONPATH}"
make -C <SOURCE_DIR>/build -j${SUBMAKE_JOBS}
# force single-threaded installation to avoid
# race conditions in post-install .py script
INSTALL_COMMAND ${CMAKE_COMMAND} -E env
"PYTHONPATH=${KRITA_PYTHONPATH}"
${CMAKE_COMMAND} -E chdir <SOURCE_DIR>/build
${CMAKE_COMMAND} -DMAKE_COMMAND=make -P ${KRITA_CI_RUN_MAKE_WITH_INSTALL_ROOT} -- -j1 install
COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${KRITA_CI_FIX_PYTHON_SHEBANG_LINES}
BUILD_IN_SOURCE 1
UPDATE_COMMAND ""
)
elseif(WIN32)
if(MINGW)
set(_compiler -c mingw32)
set(_make_command mingw32-make)
elseif(MSVC)
set(_compiler -c msvc)
set(_make_command jom)
endif()
if (QT_ENABLE_ASAN)
set(_extra_pyqt_config --qmake-setting QMAKE_LFLAGS+=-fsanitize=address --qmake-setting QMAKE_CFLAGS+=-fsanitize=address --qmake-setting QMAKE_CXXFLAGS+=-fsanitize=address)
else ()
unset(_extra_pyqt_config)
endif ()
krita_to_native_path("${EXTPREFIX}" _pyqt_prefix)
krita_to_native_path("${KRITA_PYTHONPATH}" _krita_pythonpath)
string(TOLOWER ${_krita_pythonpath} _krita_pythonpath)
krita_to_native_environment_path_list("${_krita_pythonpath}" _krita_pythonpath)
ExternalProject_Add( ext_pyqt5
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz
URL_HASH SHA256=fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env
PYTHONPATH=${_krita_pythonpath}
${EXTPREFIX}/bin/sip-build --confirm-license --no-designer-plugin --no-qml-plugin --no-dbus-python --no-tools --no-make --target-dir ${EXTPREFIX}\\lib\\site-packages --jobs ${SUBMAKE_JOBS} ${_extra_pyqt_config}
BUILD_COMMAND ${CMAKE_COMMAND} -E chdir <SOURCE_DIR>/build
${CMAKE_COMMAND} -E env
PYTHONPATH=${_krita_pythonpath}
${_make_command} -j${SUBMAKE_JOBS}
# force single-threaded installation to avoid
# race conditions in post-install .py script
INSTALL_COMMAND ${CMAKE_COMMAND} -E chdir <SOURCE_DIR>/build
${CMAKE_COMMAND} -E env
PYTHONPATH=${_krita_pythonpath}
${CMAKE_COMMAND} -DMAKE_COMMAND=${_make_command} -P ${KRITA_CI_RUN_MAKE_WITH_INSTALL_ROOT} -- -j1 install
COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${KRITA_CI_FIX_PYTHON_INSTALL_SCHEME}
BUILD_IN_SOURCE 1
UPDATE_COMMAND ""
)
endif()
krita_add_to_ci_targets(ext_pyqt5)