#!/bin/sh
# Build script for libvncserver (CMake + Ninja) - undocumented dependency
# of x11vnc, see package.toml header for why this port exists.
#
# Deliberately keep the feature surface minimal / no-GTK (project toolkit
# rule): no SDL/GTK/Qt example clients, no systemd, no GnuTLS/gcrypt/SASL/
# FFmpeg/websockets/libsshtunnel. zlib comes from base (/usr/lib); jpeg +
# png come from the Task-5 (M3a) ports already installed at $PREFIX.
#
# illumos socket gotcha (per Task-7a brief + gotcha checklist): sockets.c
# calls socket()/bind()/listen()/accept()/gethostbyname() unconditionally.
# CMake's check_function_exists(socket ...) probe does NOT itself add
# -lsocket/-lnsl to the link line the way autoconf's AC_CHECK_LIB does, so
# without forcing them into the linker flags the final `ninja` link step
# fails with undefined references to socket()/gethostbyname(). Force via
# CMAKE_EXE_LINKER_FLAGS/CMAKE_SHARED_LINKER_FLAGS cache vars.
set -e
cd "$SRCDIR"

export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH"

mkdir -p build && cd build
cmake -G Ninja \
    -DCMAKE_INSTALL_PREFIX="$PREFIX" \
    -DCMAKE_INSTALL_LIBDIR=lib \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_C_FLAGS="-D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS -I$PREFIX/include" \
    -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
    -DCMAKE_EXE_LINKER_FLAGS="-L$PREFIX/lib -R$PREFIX/lib -lsocket -lnsl" \
    -DCMAKE_SHARED_LINKER_FLAGS="-L$PREFIX/lib -R$PREFIX/lib -lsocket -lnsl" \
    -DBUILD_SHARED_LIBS=ON \
    -DWITH_ZLIB=ON \
    -DWITH_LZO=OFF \
    -DWITH_JPEG=ON \
    -DWITH_PNG=ON \
    -DWITH_SDL=OFF \
    -DWITH_GTK=OFF \
    -DWITH_QT=OFF \
    -DWITH_LIBSSHTUNNEL=OFF \
    -DWITH_THREADS=ON \
    -DWITH_GNUTLS=OFF \
    -DWITH_OPENSSL=ON \
    -DWITH_SYSTEMD=OFF \
    -DWITH_GCRYPT=OFF \
    -DWITH_FFMPEG=OFF \
    -DWITH_TIGHTVNC_FILETRANSFER=ON \
    -DWITH_24BPP=ON \
    -DWITH_IPv6=ON \
    -DWITH_WEBSOCKETS=OFF \
    -DWITH_SASL=OFF \
    -DWITH_XCB=ON \
    -DWITH_EXAMPLES=OFF \
    -DWITH_TESTS=OFF \
    ..
ninja -j${JOBS:-1}
DESTDIR="$PKGDIR" ninja install
