# Description: Serial Graph Partitioning and Fill-reducing Matrix Ordering
# URL: https://github.com/KarypisLab/METIS
# Maintainer: Tim Biermann, tbier at posteo dot de
# Depends on: gklib

name=metis
version=5.2.1
release=1
source=(https://github.com/KarypisLab/METIS/archive/refs/tags/v$version.tar.gz
  metis-5.2.1-add-gklib-as-required.patch
  metis-5.2.1-multilib.patch
  metis-5.2.1-respect-user-flags.patch)
renames=($name-$version.tar.gz SKIP SKIP SKIP)

build() {
  #patch -Np1 -d METIS-$version -i $SRC/metis-5.2.1-multilib.patch
  patch -Np1 -d METIS-$version -i $SRC/metis-5.2.1-add-gklib-as-required.patch
  patch -Np1 -d METIS-$version -i $SRC/metis-5.2.1-respect-user-flags.patch

  if prt-get isinst double-conversion; then
    realwidth="#define REALTYPEWIDTH 64"
  else
    realwidth="#define REALTYPEWIDTH 32"
  fi
  idxwidth="#define IDXTYPEWIDTH 64"

  mkdir -p METIS-$version/build/xinclude
  echo ${idxwidth} > METIS-$version/build/xinclude/metis.h
  echo ${realwidth} >> METIS-$version/build/xinclude/metis.h
  cat METIS-$version/include/metis.h >> METIS-$version/build/xinclude/metis.h
  cp METIS-$version/include/CMakeLists.txt METIS-$version/build/xinclude

  cmake -S METIS-$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 SHARED=ON \
    -Wno-dev
  cmake --build build
  DESTDIR=$PKG cmake --install build

  mkdir -p $PKG/usr/lib/pkgconfig
  cat >> $PKG/usr/lib/pkgconfig/metis.pc <<- EOF
prefix=/usr
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include

Name: METIS
Description: Software for partioning unstructured graphes and meshes
Version: ${version}
Cflags: -I\${includedir}
Libs: -L\${libdir} -lmetis -lGKlib
EOF
}
