# Maintainer: Alexey Pavlov # Contributor: Ray Donnelly _bootstrap=0 _realname=cmake pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" $( [[ _bootstrap == 1 || ${CARCH} == i686 ]] || echo \ "${MINGW_PACKAGE_PREFIX}-ccmake" \ "${MINGW_PACKAGE_PREFIX}-${_realname}-cmcldeps" \ "${MINGW_PACKAGE_PREFIX}-${_realname}-gui" \ "${MINGW_PACKAGE_PREFIX}-${_realname}-docs")) pkgver=3.29.2 _rc="" _pkgver=${pkgver}${_rc} pkgrel=1 pkgdesc="A cross-platform open-source make system (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://www.cmake.org/" msys2_repository_url="https://gitlab.kitware.com/cmake/cmake" msys2_references=( 'archlinux: cmake' "cpe: cpe:2.3:a:cmake_project:cmake" ) license=("spdx:MIT") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" $( (( _bootstrap )) || echo "${MINGW_PACKAGE_PREFIX}-cmake") "${MINGW_PACKAGE_PREFIX}-python-sphinx" "${MINGW_PACKAGE_PREFIX}-bzip2" "${MINGW_PACKAGE_PREFIX}-cppdap" "${MINGW_PACKAGE_PREFIX}-ncurses" "${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-xz" "${MINGW_PACKAGE_PREFIX}-zstd" $([[ ${CARCH} == i686 ]] || echo \ "${MINGW_PACKAGE_PREFIX}-emacs" \ "${MINGW_PACKAGE_PREFIX}-fc" \ "${MINGW_PACKAGE_PREFIX}-qt6-base" \ "${MINGW_PACKAGE_PREFIX}-qt6-tools")) depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-pkgconf" "${MINGW_PACKAGE_PREFIX}-curl" "${MINGW_PACKAGE_PREFIX}-expat" "${MINGW_PACKAGE_PREFIX}-jsoncpp" "${MINGW_PACKAGE_PREFIX}-libarchive" "${MINGW_PACKAGE_PREFIX}-libuv" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-rhash" "${MINGW_PACKAGE_PREFIX}-zlib") source=("https://github.com/Kitware/CMake/releases/download/v${_pkgver}/${_realname}-${_pkgver}.tar.gz" "0001-Disable-response-files-for-MSYS-Generator.patch" "0002-Do-not-install-Qt-bundle-in-cmake-gui.patch" "0004-Output-line-numbers-in-callstacks.patch" "0005-Default-to-ninja-generator.patch") sha256sums=('36db4b6926aab741ba6e4b2ea2d99c9193222132308b4dc824d4123cb730352e' '25793edcbac05bb6d17fa9947b52ace4a6b5ccccf7758e22ae9ae022ed089061' 'f6cf6a6f2729db2b9427679acd09520af2cd79fc26900b19a49cead05a55cd1a' '15fdf3fb1a0f1c153c8cfbdd2b5c64035b7a04de618bfe61d7d74ced0d6a5c4b' '426818278090704d2a12f62ef3dfd94c47b11fa2784bb842989b7f6a09ee7aa2') # Helper macros to help make tasks easier # apply_patch_with_msg() { for _patch in "$@" do msg2 "Applying $_patch" patch -Np1 -i "${srcdir}/$_patch" done } del_file_exists() { for _fname in "$@" do if [ -f $_fname ]; then rm -rf $_fname fi done } # =========================================== # prepare() { cd ${_realname}-${_pkgver} apply_patch_with_msg \ 0001-Disable-response-files-for-MSYS-Generator.patch \ 0002-Do-not-install-Qt-bundle-in-cmake-gui.patch \ 0004-Output-line-numbers-in-callstacks.patch # We want cmake to default to something useful and not MSVC apply_patch_with_msg \ 0005-Default-to-ninja-generator.patch find . -name "*.orig" -exec rm -f {} \; } build() { mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" declare -a _extra_config if (( _bootstrap )); then if [[ ${CARCH} != i686 ]]; then _extra_config+=("--qt-gui" "--qt-qmake=${MINGW_PREFIX}/bin/qmake6.exe" "--sphinx-html") fi if [[ ${MINGW_PACKAGE_PREFIX} != *-clang- ]]; then _fc_compiler=gfortran else _fc_compiler=flang fi MSYSTEM=MINGW FC=${MINGW_PREFIX}/bin/${_fc_compiler}.exe \ "${srcdir}"/${_realname}-${_pkgver}/configure \ --prefix=${MINGW_PREFIX} \ --datadir=share/cmake \ --docdir=share/doc/cmake \ --mandir=share/man \ --system-libs \ --parallel=${NUMBER_OF_PROCESSORS} \ --sphinx-man \ --bootstrap-system-jsoncpp \ --bootstrap-system-libuv \ --bootstrap-system-librhash \ "${_extra_config[@]}" make else if check_option "debug" "n"; then _extra_config+=("-DCMAKE_BUILD_TYPE=Release") else _extra_config+=("-DCMAKE_BUILD_TYPE=Debug") fi if [[ ${CARCH} != i686 ]]; then export PATH=${MINGW_PREFIX}/share/qt6/bin:$PATH _extra_config+=("-DSPHINX_HTML=ON" "-DSPHINX_QTHELP=ON" "-DBUILD_QtDialog=ON" "-DBUILD_CursesDialog=ON") fi MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe -Wno-dev \ -GNinja \ "${_extra_config[@]}" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMake_INSTALL_COMPONENTS=ON \ -DCMAKE_DATA_DIR=share/cmake \ -DCMAKE_DOC_DIR=share/doc/cmake \ -DCMAKE_MAN_DIR=share/man \ -DCMAKE_INFO_DIR=share/info \ -DCMAKE_USE_SYSTEM_LIBRARIES=ON \ -DSPHINX_MAN=ON \ -DBUILD_TESTING=OFF \ -DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python \ ../${_realname}-${_pkgver} ${MINGW_PREFIX}/bin/cmake.exe --build . fi } check() { cd "${srcdir}/build-${MSYSTEM}" if (( _bootstrap )); then ./bin/ctest.exe -j$(($(nproc)+1)) else ${MINGW_PREFIX}/bin/cmake -DBUILD_TESTING=ON ../${_realname}-${_pkgver} ${MINGW_PREFIX}/bin/cmake --build . ${MINGW_PREFIX}/bin/ctest.exe -j$(($(nproc)+1)) || msg2 "Tests failed" fi } package_cmake() { if [[ ${CARCH} != i686 ]]; then optdepends=("${MINGW_PACKAGE_PREFIX}-emacs: for cmake emacs mode") fi cd "${srcdir}/build-${MSYSTEM}" if (( _bootstrap )); then ./bin/cmake.exe \ -DCMAKE_INSTALL_PREFIX:PATH=${pkgdir}${MINGW_PREFIX} \ -DCMAKE_INSTALL_LOCAL_ONLY:BOOL=OFF -P cmake_install.cmake else DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component cmake DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component cpack DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component ctest DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component sphinx-man DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component Unspecified fi if [[ ${CARCH} != i686 ]]; then install -d "${pkgdir}${MINGW_PREFIX}"/share/emacs/site-lisp/ ${MINGW_PREFIX}/bin/emacs -batch -f batch-byte-compile \ "${pkgdir}${MINGW_PREFIX}"/share/emacs/site-lisp/cmake-mode.el fi } package_cmake-cmcldeps() { pkgdesc="CMake wrapper for cl to extract dependencies (mingw-w64)" depends=("${MINGW_PACKAGE_PREFIX}-cmake") cd "${srcdir}/build-${MSYSTEM}" DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component cmcldeps } package_cmake-gui() { pkgdesc+=" (Qt GUI)" depends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-qt6-base") cd "${srcdir}/build-${MSYSTEM}" DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component cmake-gui } package_ccmake() { pkgdesc+=" (curses GUI)" depends=("${MINGW_PACKAGE_PREFIX}-cmake") cd "${srcdir}/build-${MSYSTEM}" DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component ccmake } package_cmake-docs() { pkgdesc+=" (documentation)" depends=() conflicts=("${MINGW_PACKAGE_PREFIX}-cmake-doc-qt") replaces=("${MINGW_PACKAGE_PREFIX}-cmake-doc-qt") provides=("${MINGW_PACKAGE_PREFIX}-cmake-doc-qt") cd "${srcdir}/build-${MSYSTEM}" DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component sphinx-html DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . --component sphinx-qthelp } # template start; name=mingw-w64-splitpkg-wrappers; version=1.0; # vim: set ft=bash : # generate wrappers for _name in "${pkgname[@]}"; do _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}" _func="$(declare -f "${_short}")" eval "${_func/#${_short}/package_${_name}}" done # template end;