# Description: A fast JSON parser/generator for C++ with both SAX/DOM style API
# URL: https://github.com/Tencent/rapidjson/
# Maintainer: Tim Biermann, tbier at posteo dot de

name=rapidjson
version=1.1.0
release=3
source=(https://github.com/Tencent/rapidjson/archive/v$version/$name-$version.tar.gz
  gcc14.patch
  0002-Explicitly-disable-copy-assignment-operator.patch
  0003-Three-way-comparison-for-CLang-10-fix-1679.patch
  0004-Fix-recursive-operator-call-in-C-20-1846.patch
  0005-gate-definition-of-symmetric-equality-operators-on-i.patch
  0006-do-not-define-operator-in-C-20.patch
  0007-do-not-include-gtest_src_dir.patch
  0008-Make-valgrind-optional-for-riscv64.patch
  0009-Prevent-int-underflow-when-parsing-exponents.patch
)

build() {
  prt-get isinst ccache && PATH="$(echo ${PATH} | awk -v RS=: -v ORS=: '/ccache/ {next} {print}' | sed 's/:*$//')"

  patch -Np1 -d $name-$version -i $SRC/gcc14.patch
  patch -Np1 -d $name-$version -i $SRC/0002-Explicitly-disable-copy-assignment-operator.patch
  patch -Np1 -d $name-$version -i $SRC/0003-Three-way-comparison-for-CLang-10-fix-1679.patch
  patch -Np1 -d $name-$version -i $SRC/0004-Fix-recursive-operator-call-in-C-20-1846.patch
  patch -Np1 -d $name-$version -i $SRC/0005-gate-definition-of-symmetric-equality-operators-on-i.patch
  patch -Np1 -d $name-$version -i $SRC/0006-do-not-define-operator-in-C-20.patch
  patch -Np1 -d $name-$version -i $SRC/0007-do-not-include-gtest_src_dir.patch
  patch -Np1 -d $name-$version -i $SRC/0008-Make-valgrind-optional-for-riscv64.patch
  patch -Np1 -d $name-$version -i $SRC/0009-Prevent-int-underflow-when-parsing-exponents.patch

  cmake -S $name-$version -B build -G Ninja \
    -D CMAKE_INSTALL_PREFIX=/usr \
    -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \
    -D CMAKE_C_FLAGS_RELEASE="$CFLAGS" \
    -D RAPIDJSON_BUILD_DOC=OFF \
    -D RAPIDJSON_BUILD_EXAMPLES=OFF \
    -D RAPIDJSON_BUILD_TESTS=OFF \
    -Wno-dev
  cmake --build build
  DESTDIR=$PKG cmake --install build
  rm -r $PKG/usr/share/doc
}
