update script
This commit is contained in:
@@ -5,8 +5,10 @@ set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
find_package(ECM REQUIRED NO_MODULE)
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
|
||||
find_package(ECM 5.90.0 QUIET NO_MODULE)
|
||||
if(ECM_FOUND)
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
|
||||
endif()
|
||||
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui)
|
||||
find_package(KF6 REQUIRED COMPONENTS Purpose CoreAddons)
|
||||
@@ -22,3 +24,4 @@ target_link_libraries(f0ckmpurposeplugin
|
||||
KF6::Purpose
|
||||
KF6::CoreAddons
|
||||
)
|
||||
|
||||
|
||||
@@ -7,50 +7,93 @@ 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
|
||||
MOC_CANDIDATES=(
|
||||
/usr/lib/qt6/moc
|
||||
/usr/lib/qt6/libexec/moc
|
||||
/usr/libexec/qt6/moc
|
||||
/usr/lib64/qt6/libexec/moc
|
||||
/usr/lib/qt6/bin/moc
|
||||
/usr/lib64/qt6/bin/moc
|
||||
moc-qt6
|
||||
moc6
|
||||
moc
|
||||
)
|
||||
|
||||
for candidate in "${MOC_CANDIDATES[@]}"; do
|
||||
TARGET_BIN=""
|
||||
if [ -x "$candidate" ]; then
|
||||
TARGET_BIN="$candidate"
|
||||
elif command -v "$candidate" &>/dev/null; then
|
||||
TARGET_BIN="$(command -v "$candidate")"
|
||||
fi
|
||||
|
||||
if [ -n "$TARGET_BIN" ]; then
|
||||
VER_OUT="$("$TARGET_BIN" -v 2>&1 || true)"
|
||||
if [[ "$VER_OUT" =~ moc\ 6\. ]] || [[ "$VER_OUT" =~ Qt\ 6\. ]] || [[ "$VER_OUT" =~ 6\.[0-9]+ ]]; then
|
||||
MOC_BIN="$TARGET_BIN"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$MOC_BIN" ]; then
|
||||
echo "Warning: Qt6 moc compiler not found. Skipping Purpose plugin compilation."
|
||||
echo "Warning: Qt6 moc compiler not found (detected Qt5 moc or no moc)."
|
||||
echo "On Arch Linux, please ensure Qt6 development tools are installed:"
|
||||
echo " sudo pacman -S qt6-base kf6-purpose kf6-kcoreaddons"
|
||||
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
|
||||
for path in \
|
||||
/usr/include/KF6/Purpose \
|
||||
/usr/include/KF6/KCoreAddons \
|
||||
/usr/include/KF6 \
|
||||
/usr/include/purpose \
|
||||
/tmp/purpose_devel/usr/include/KF6/Purpose \
|
||||
/tmp/purpose_devel/usr/include/KF6; do
|
||||
if [ -d "$path" ]; then
|
||||
INC_ARGS+=("-I$path")
|
||||
fi
|
||||
done
|
||||
|
||||
for path in \
|
||||
/usr/include/qt6 \
|
||||
/usr/include/qt6/QtCore \
|
||||
/usr/include/qt6/QtGui \
|
||||
/usr/include/x86_64-linux-gnu/qt6 \
|
||||
/usr/include/x86_64-linux-gnu/qt6/QtCore \
|
||||
/usr/include/x86_64-linux-gnu/qt6/QtGui; do
|
||||
if [ -d "$path" ]; then
|
||||
INC_ARGS+=("-I$path")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#INC_ARGS[@]} -eq 0 ]; then
|
||||
echo "Warning: KF6 Purpose headers not found. Skipping Purpose plugin compilation."
|
||||
echo "Warning: KF6 Purpose/Qt6 headers not found. Skipping Purpose plugin compilation."
|
||||
echo "On Arch Linux, install development packages: sudo pacman -S kf6-purpose kf6-kcoreaddons qt6-base"
|
||||
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
|
||||
for lib_path in \
|
||||
/usr/lib/libKF6Purpose.so.6 /usr/lib64/libKF6Purpose.so.6 /usr/lib/x86_64-linux-gnu/libKF6Purpose.so.6 \
|
||||
/usr/lib/libKF6Purpose.so /usr/lib64/libKF6Purpose.so /usr/lib/x86_64-linux-gnu/libKF6Purpose.so; do
|
||||
if [ -f "$lib_path" ]; then
|
||||
LIB_ARGS+=("$lib_path")
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
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
|
||||
for lib_path in \
|
||||
/usr/lib/libKF6CoreAddons.so.6 /usr/lib64/libKF6CoreAddons.so.6 /usr/lib/x86_64-linux-gnu/libKF6CoreAddons.so.6 \
|
||||
/usr/lib/libKF6CoreAddons.so /usr/lib64/libKF6CoreAddons.so /usr/lib/x86_64-linux-gnu/libKF6CoreAddons.so; do
|
||||
if [ -f "$lib_path" ]; then
|
||||
LIB_ARGS+=("$lib_path")
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
BUILD_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "$BUILD_DIR"' EXIT
|
||||
@@ -67,3 +110,4 @@ g++ -shared -fPIC -O2 f0ckmplugin.cpp \
|
||||
popd >/dev/null
|
||||
|
||||
echo "Successfully built f0ckmpurposeplugin.so at $OUTPUT_DIR/f0ckmpurposeplugin.so"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user