Files
MINGW-packages/mingw-w64-cppcheck/PKGBUILD
2023-10-02 11:09:03 +05:30

127 lines
4.6 KiB
Bash

# Maintainer: Yusuke Sasaki <yusuke.sasaki.nuem@gmail.com>
_realname=cppcheck
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=2.12.1
pkgrel=1
pkgdesc="static analysis of C/C++ code (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url="https://cppcheck.sourceforge.io/"
license=('spdx:GPL-3.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
"${MINGW_PACKAGE_PREFIX}-pcre")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-docbook-xsl"
$([[ ${CARCH} != i686 ]] && echo \
"${MINGW_PACKAGE_PREFIX}-qt6-base" \
"${MINGW_PACKAGE_PREFIX}-qt6-charts" \
"${MINGW_PACKAGE_PREFIX}-qt6-declarative" \
"${MINGW_PACKAGE_PREFIX}-qt6-tools" || echo \
"${MINGW_PACKAGE_PREFIX}-qt5-base" \
"${MINGW_PACKAGE_PREFIX}-qt5-charts" \
"${MINGW_PACKAGE_PREFIX}-qt5-tools")
"${MINGW_PACKAGE_PREFIX}-clang"
"${MINGW_PACKAGE_PREFIX}-python"
"${MINGW_PACKAGE_PREFIX}-tinyxml2")
optdepends=("${MINGW_PACKAGE_PREFIX}-python-pygments: cppcheck-htmlreport")
if [[ ${CARCH} != i686 ]]; then
optdepends+=("${MINGW_PACKAGE_PREFIX}-qt6-charts: cppcheck-gui")
else
optdepends+=("${MINGW_PACKAGE_PREFIX}-qt5-charts: cppcheck-gui")
fi
source=(${_realname}-${pkgver}.tar.gz::"https://github.com/danmar/cppcheck/archive/${pkgver}.tar.gz"
'001-cppcheck-2.2-change-language-files-path.patch'
'002-cppcheck-2.2-change-cfg-path.patch')
sha256sums=('2a3d4ba1179419612183ab3d6aed6d3b18be75e98cd6f138ea8e2020905dced2'
'e741bfafbeb3ade454a42563a1c4617ae3dc87fd6a6f409e1ae4b735b68997d3'
'd6e156adc892159d506982bad2048b6c4842ab9dd9f64d047ee36780fb5cf57f')
apply_patch_with_msg() {
for _patch in "$@"
do
msg2 "Applying $_patch"
patch -Nbp1 -i "${srcdir}/$_patch"
done
}
prepare() {
cd "${srcdir}/${_realname}-${pkgver}"
apply_patch_with_msg \
001-cppcheck-2.2-change-language-files-path.patch \
002-cppcheck-2.2-change-cfg-path.patch
}
build() {
mkdir -p "${srcdir}"/build-${MSYSTEM} && cd "${srcdir}"/build-${MSYSTEM}
declare -a extra_config
if check_option "debug" "y"; then
extra_config+=(-DCMAKE_BUILD_TYPE=Debug)
else
extra_config+=(-DCMAKE_BUILD_TYPE=Release)
fi
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=;-DFILESDIR=" \
${MINGW_PREFIX}/bin/cmake.exe \
-G"Ninja" \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DUSE_MATCHCOMPILER=ON \
-DFILESDIR=${MINGW_PREFIX}/share/cppcheck \
-DHAVE_RULES=ON \
-DBUILD_GUI=ON \
-DWITH_QCHART=ON \
-DUSE_BUNDLED_TINYXML2=OFF \
-DUSE_QT6=$([[ ${CARCH} != i686 ]] && echo "ON" || echo "OFF") \
-DCMAKE_CXX_STANDARD=14 \
"${extra_config[@]}" \
../${_realname}-${pkgver}
${MINGW_PREFIX}/bin/cmake --build .
# man
cd "${srcdir}"/${_realname}-${pkgver}
make man \
DB2MAN=${MINGW_PREFIX}/share/xml/docbook/xsl-stylesheets-1.79.2/manpages/docbook.xsl \
FILESDIR=${MINGW_PREFIX}/share/cppcheck
# help
if [[ ${CARCH} != i686 ]]; then
_qhg=${MINGW_PREFIX}/share/qt6/bin/qhelpgenerator
else
_qhg=${MINGW_PREFIX}/bin/qhelpgenerator
fi
${_qhg} gui/help/online-help.qhcp -o gui/help/online-help.qhc
}
check() {
cd "${srcdir}"/build-${MSYSTEM}
${MINGW_PREFIX}/bin/cmake -DBUILD_TESTS=ON ../${_realname}-${pkgver}
${MINGW_PREFIX}/bin/cmake --build .
cd bin && ./testrunner -g -q
}
package() {
cd "${srcdir}"/build-${MSYSTEM}
DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install .
# Fix location of language files
install -d "${pkgdir}"${MINGW_PREFIX}/share/${_realname}/lang
mv "${pkgdir}"${MINGW_PREFIX}/bin/cppcheck_*.qm "${pkgdir}"${MINGW_PREFIX}/share/${_realname}/lang/
# Remove freedesktop (Linux) files
rm -r "${pkgdir}"${MINGW_PREFIX}/share/applications
rm -r "${pkgdir}"${MINGW_PREFIX}/share/icons
cd "${srcdir}"/${_realname}-${pkgver}
# man and COPYING
install -Dpm644 cppcheck.1 "${pkgdir}${MINGW_PREFIX}/share/man/man1/cppcheck.1"
install -Dpm644 COPYING "${pkgdir}${MINGW_PREFIX}/share/licenses/cppcheck/COPYING"
# Install extra files
install -Dpm644 htmlreport/cppcheck-htmlreport "${pkgdir}${MINGW_PREFIX}/bin/cppcheck-htmlreport"
install -d "${pkgdir}${MINGW_PREFIX}/share/cppcheck/help"
install -D gui/help/online-help.qch -t "${pkgdir}${MINGW_PREFIX}/share/cppcheck/help"
install -D gui/help/online-help.qhc -t "${pkgdir}${MINGW_PREFIX}/share/cppcheck/help"
}