#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" OUTPUT_TARGET="${1:-$SCRIPT_DIR}" mkdir -p "$OUTPUT_TARGET" OUTPUT_DIR="$(cd "$OUTPUT_TARGET" && pwd)" MOC_BIN="" for candidate in /usr/libexec/qt6/moc /usr/lib64/qt6/libexec/moc moc-qt6 moc; do if command -v "$candidate" &>/dev/null; then MOC_BIN="$candidate" break elif [ -x "$candidate" ]; then MOC_BIN="$candidate" break fi done if [ -z "$MOC_BIN" ]; then echo "Warning: Qt6 moc compiler not found. Skipping Purpose plugin compilation." exit 0 fi # Detect header search paths INC_ARGS=() if [ -d "/usr/include/KF6/Purpose" ]; then INC_ARGS+=("-I/usr/include/KF6/Purpose" "-I/usr/include/KF6/KCoreAddons" "-I/usr/include/KF6") elif [ -d "/tmp/purpose_devel/usr/include/KF6/Purpose" ]; then INC_ARGS+=("-I/tmp/purpose_devel/usr/include/KF6/Purpose" "-I/tmp/purpose_devel/usr/include/KF6/KCoreAddons" "-I/tmp/purpose_devel/usr/include/KF6") fi if [ -d "/usr/include/qt6" ]; then INC_ARGS+=("-I/usr/include/qt6" "-I/usr/include/qt6/QtCore" "-I/usr/include/qt6/QtGui") fi if [ ${#INC_ARGS[@]} -eq 0 ]; then echo "Warning: KF6 Purpose headers not found. Skipping Purpose plugin compilation." exit 0 fi LIB_ARGS=() if [ -f "/usr/lib64/libKF6Purpose.so.6" ]; then LIB_ARGS+=("/usr/lib64/libKF6Purpose.so.6") elif [ -f "/usr/lib/libKF6Purpose.so.6" ]; then LIB_ARGS+=("/usr/lib/libKF6Purpose.so.6") fi if [ -f "/usr/lib64/libKF6CoreAddons.so.6" ]; then LIB_ARGS+=("/usr/lib64/libKF6CoreAddons.so.6") elif [ -f "/usr/lib/libKF6CoreAddons.so.6" ]; then LIB_ARGS+=("/usr/lib/libKF6CoreAddons.so.6") fi BUILD_DIR="$(mktemp -d)" trap 'rm -rf "$BUILD_DIR"' EXIT cp "$SCRIPT_DIR/f0ckmplugin.cpp" "$SCRIPT_DIR/f0ckmplugin.json" "$BUILD_DIR/" pushd "$BUILD_DIR" >/dev/null "$MOC_BIN" "${INC_ARGS[@]}" f0ckmplugin.cpp -o f0ckmplugin.moc g++ -shared -fPIC -O2 f0ckmplugin.cpp \ "${INC_ARGS[@]}" \ "${LIB_ARGS[@]}" \ -lQt6Core \ -o "$OUTPUT_DIR/f0ckmpurposeplugin.so" popd >/dev/null echo "Successfully built f0ckmpurposeplugin.so at $OUTPUT_DIR/f0ckmpurposeplugin.so"