#!/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 # libvncserver - VNC server/client protocol library (VNC/RFB implementation) # # NOT in the Task-0/xlibre-phase1a-manifest.md port table. Discovered as a # hard build dependency of x11vnc during Task 7a (2026-07-22): x11vnc split # off from the LibVNCServer project in 2016 and its configure.ac now does # PKG_CHECK_MODULES(LIBVNCSERVER, libvncserver >= 0.9.8) + # PKG_CHECK_MODULES(LIBVNCCLIENT, libvncclient >= 0.9.8) unconditionally - # it is no longer a standalone/bundled-source VNC implementation. Added # here as a manifest gap fix so x11vnc can build at all. # https://github.com/LibVNC/libvncserver [package] name = "libvncserver" version = "0.9.15" release = 1 description = "VNC server/client protocol library (used by x11vnc)" url = "https://github.com/LibVNC/libvncserver" license = "MIT" maintainer = "Chris Tusa " arch = "x86_64" [dependencies] runtime = ["libjpeg-turbo", "libpng"] build = ["libjpeg-turbo", "libpng"] [[source]] file = "libvncserver-0.9.15.tar.gz" urls = ["https://github.com/LibVNC/libvncserver/archive/refs/tags/LibVNCServer-0.9.15.tar.gz"] checksum = "62352c7795e231dfce044beb96156065a05a05c974e5de9e023d688d8ff675d7" [build] parallel = true