# Script to build KF5 Frameworks for digiKam bundle. # # Copyright (c) 2015-2019, Gilles Caulier, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # set(EXTPREFIX_frameworks "${EXTPREFIX}") function(InstallKF5Component name version argoptions patch) if(MINGW) # Extract MD5 sums of each KF5 components directly from server. execute_process(COMMAND wget -q -O - -o /dev/null http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz.mirrorlist COMMAND grep "MD5 Hash" COMMAND grep -o -P "(?<=).*(?=)" RESULT_VARIABLE wgetresult OUTPUT_VARIABLE md5sm OUTPUT_STRIP_TRAILING_WHITESPACE ) if(NOT ${wgetresult} MATCHES 0) message(FATAL_ERROR "Cannot download MD5 sum for ${name}!") endif() message(STATUS "--------------------------------") message(STATUS "KF5 component : ${name}") message(STATUS "Component version: ${version}") message(STATUS "Component MD5 : ${md5sm}") message(STATUS "Configure options: ${argoptions}") message(STATUS "Patch to apply : ${patch}") if(NOT "${patch}" STREQUAL "") set(patch "${PATCH_COMMAND};-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/${patch}") endif() ExternalProject_Add(ext_${name} DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} URL file://${EXTERNALS_DOWNLOAD_DIR}/${name}-${version}.0.tar.xz URL_MD5 ${md5sm} INSTALL_DIR ${EXTPREFIX_frameworks} CMAKE_ARGS -DMXE_TOOLCHAIN=${MXE_TOOLCHAIN} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} -DCMAKE_COLOR_MAKEFILE=ON -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_frameworks} -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_TOOLCHAIN_FILE=${MXE_TOOLCHAIN} -DCMAKE_FIND_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCMAKE_SYSTEM_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include -DCMAKE_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include -DCMAKE_LIBRARY_PATH=${CMAKE_PREFIX_PATH}/lib -DBUILD_TESTING=OFF -DZLIB_ROOT=${CMAKE_PREFIX_PATH} -DINSTALL_ROOT=${MXE_INSTALL_PREFIX} ${GLOBAL_PROFILE} "${argoptions}" -Wno-dev PATCH_COMMAND ${patch} UPDATE_COMMAND "" ALWAYS 0 ) ExternalProject_Add_step(ext_${name} before_download # Note : under MXE, curl is not compiled with https support. We cannot use the tarball as under Linux/MacOS. COMMAND wget -N http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz -O ${EXTERNALS_DOWNLOAD_DIR}/${name}-${version}.0.tar.xz DEPENDERS download ) elseif(APPLE) # Extract MD5 sums of each KF5 components directly from server. execute_process(COMMAND wget -q -O - -o /dev/null http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz.mirrorlist COMMAND grep "MD5 Hash" COMMAND grep -o ".*" COMMAND cut -c 5- COMMAND rev COMMAND cut -c 6- COMMAND rev RESULT_VARIABLE wgetresult OUTPUT_VARIABLE md5sm OUTPUT_STRIP_TRAILING_WHITESPACE ) if(NOT ${wgetresult} MATCHES 0) message(FATAL_ERROR "Cannot download MD5 sum for ${name}!") endif() message(STATUS "--------------------------------") message(STATUS "KF5 component : ${name}") message(STATUS "Component version: ${version}") message(STATUS "Component MD5 : ${md5sm}") message(STATUS "Configure options: ${argoptions}") message(STATUS "Patch to apply : ${patch}") if(NOT "${patch}" STREQUAL "") set(patch "${PATCH_COMMAND};-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/${patch};&&") endif() ExternalProject_Add(ext_${name} DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} URL http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz URL_MD5 ${md5sm} PATCH_COMMAND ${patch} cp ${CMAKE_CURRENT_SOURCE_DIR}/../../macports/fixbundledatapath.sh /. && /fixbundledatapath.sh CONFIGURE_COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/../../../../bootstrap.macports /. && sed -i '' -e "s/DBUILD_TESTING=ON/DBUILD_TESTING=OFF/g" /bootstrap.macports && /bootstrap.macports ${EXTPREFIX_frameworks} debug x86_64 "${argoptions}" BUILD_COMMAND cd /build && $(MAKE) INSTALL_COMMAND cd /build && make install/fast BUILD_IN_SOURCE 1 UPDATE_COMMAND "" ALWAYS 0 ) else() # Linux # Extract MD5 sums of each KF5 components directly from server. execute_process(COMMAND wget -q -O - -o /dev/null http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz.mirrorlist COMMAND grep "MD5 Hash" COMMAND grep -o -P "(?<=).*(?=)" RESULT_VARIABLE wgetresult OUTPUT_VARIABLE md5sm OUTPUT_STRIP_TRAILING_WHITESPACE ) if(NOT ${wgetresult} MATCHES 0) message(FATAL_ERROR "Cannot download MD5 sum for ${name}!") endif() message(STATUS "--------------------------------") message(STATUS "KF5 component : ${name}") message(STATUS "Component version: ${version}") message(STATUS "Component MD5 : ${md5sm}") message(STATUS "Configure options: ${argoptions}") message(STATUS "Patch to apply : ${patch}") if(NOT "${patch}" STREQUAL "") set(patch "${PATCH_COMMAND};-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/${patch}") endif() ExternalProject_Add(ext_${name} DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} URL http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz URL_MD5 ${md5sm} PATCH_COMMAND ${patch} INSTALL_DIR ${EXTPREFIX_frameworks} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTPREFIX_frameworks} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} -DCMAKE_SYSTEM_PREFIX_PATH=${EXTPREFIX} -DBUILD_TESTING=OFF "${argoptions}" -Wno-dev UPDATE_COMMAND "" ALWAYS 0 ) endif() endfunction() if(MINGW) set(KF5_VERSION 5.59) # we have Qt 5.12.1 available. elseif(APPLE) set(KF5_VERSION 5.59) # we have Qt 5.11.3 available. else() set(KF5_VERSION 5.59) # we have Qt 5.11.3 available. endif() if(APPLE) set(MacosThreadWeaverPatch threadweaver-macports.patch) set(MacosKauthBackend -DKAUTH_BACKEND_NAME=Apple) endif() InstallKF5Component(extra-cmake-modules ${KF5_VERSION} "" "") InstallKF5Component(kconfig ${KF5_VERSION} "" "") InstallKF5Component(breeze-icons ${KF5_VERSION} "-DBINARY_ICONS_RESOURCE=OFF" "${MacosBreezePatch}") InstallKF5Component(solid ${KF5_VERSION} "" "") InstallKF5Component(kcoreaddons ${KF5_VERSION} "" "") InstallKF5Component(threadweaver ${KF5_VERSION} "" "${MacosThreadWeaverPatch}") InstallKF5Component(kwindowsystem ${KF5_VERSION} "" "") InstallKF5Component(karchive ${KF5_VERSION} "" "") InstallKF5Component(kdbusaddons ${KF5_VERSION} "" "") InstallKF5Component(ki18n ${KF5_VERSION} "" "") InstallKF5Component(kcrash ${KF5_VERSION} "" "") InstallKF5Component(kcodecs ${KF5_VERSION} "" "") InstallKF5Component(kauth ${KF5_VERSION} "${MacosKauthBackend}" "") InstallKF5Component(kguiaddons ${KF5_VERSION} "" "") InstallKF5Component(kwidgetsaddons ${KF5_VERSION} "" "") InstallKF5Component(kitemviews ${KF5_VERSION} "" "") InstallKF5Component(kcompletion ${KF5_VERSION} "" "") InstallKF5Component(kconfigwidgets ${KF5_VERSION} "" "") InstallKF5Component(kiconthemes ${KF5_VERSION} "" "") InstallKF5Component(kservice ${KF5_VERSION} "" "") InstallKF5Component(kglobalaccel ${KF5_VERSION} "" "") InstallKF5Component(kxmlgui ${KF5_VERSION} "" "kxmlgui-drop-ktextwidgets.patch") InstallKF5Component(kbookmarks ${KF5_VERSION} "" "") InstallKF5Component(kimageformats ${KF5_VERSION} "" "") InstallKF5Component(knotifyconfig ${KF5_VERSION} "" "") InstallKF5Component(knotifications ${KF5_VERSION} "" "knotifications-drop-phonon.patch") InstallKF5Component(kjobwidgets ${KF5_VERSION} "" "") InstallKF5Component(sonnet ${KF5_VERSION} "" "") InstallKF5Component(ktextwidgets ${KF5_VERSION} "" "") InstallKF5Component(kio ${KF5_VERSION} "" "kio-drop-ktextwidgets.patch") InstallKF5Component(kinit ${KF5_VERSION} "" "") InstallKF5Component(kdewebkit ${KF5_VERSION} "" "")