diff --git a/ToDo.desktop b/ToDo.desktop new file mode 100644 index 0000000..1229f0e --- /dev/null +++ b/ToDo.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=ToDo +Comment=Lightweight Qt Todo app +TryExec=Todo +Exec=ToDo %F +Icon=ToDo +Categories=KDE;Qt;ProjectManagement;Office diff --git a/ToDo.pro b/ToDo.pro index 52228f6..ac3f20e 100644 --- a/ToDo.pro +++ b/ToDo.pro @@ -59,9 +59,9 @@ linux-* { QMAKE_CXXFLAGS_RELEASE += -mtune=armv8.6-a+fp16+simd TMP_APP_ARCH = APP_ARCH=\"\\\"aarch64\\\"\" } - equals(QMAKE_HOST.arch, amd64) { + equals(QMAKE_HOST.arch, x86_64) || equals(QMAKE_HOST.arch, amd64) { message("CPU Architecture : amd64") - QMAKE_CXXFLAGS_RELEASE += -march=tigerlake + QMAKE_CXXFLAGS_RELEASE += -march=alderlake QMAKE_CXXFLAGS_RELEASE += -mtune=intel TMP_APP_ARCH = APP_ARCH=\"\\\"amd64\\\"\" } diff --git a/linuxdeployqt.sh b/linuxdeployqt.sh new file mode 100755 index 0000000..1719c5a --- /dev/null +++ b/linuxdeployqt.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +ARCH=$(uname --machine) +ARCH_KERNEL=$(uname -r | cut -d '-' -f 2) +ARCH="${ARCH:-x86_64}" +ARCH_KERNEL="${ARCH_KERNEL:-amd64}" + +QT_PLUGINS=$(qmake6 -query QT_INSTALL_PLUGINS) + +WORKSPACE_DIR="$PWD" +BUILD_DIR="$WORKSPACE_DIR/build/Desktop_Qt_6_10_3-Release" + +export EXTRA_QT_MODULES="sql;" +export EXTRA_QT_PLUGINS="waylandcompositor" +export EXTRA_PLATFORM_PLUGINS='libqwayland.so;libqxcb.so;libqminimalegl.so;libqminimal.so' +export LD_LIBRARY_PATH="$APPDIR/usr/lib:$LD_LIBRARY_PATH" + +if [ ! -d "$BUILD_DIR" ]; then + echo "error: bin not built" 1>&2 + exit 1 +fi + +cleanup() { + rm -rf $TMP_DIR + rm -rf "$BUILD_DIR/appdir" + exit +} + +trap cleanup EXIT + +TMP_DIR=$(mktemp -d '/tmp/linuxdeployqt-XXXXXXX') + +get_tool() { + local author="$1" + local repository="$2" + local branch="$3" + local tool_name="$4" + + local url="https://github.com/$author/$repository/releases/download/$branch/$tool_name-$ARCH.AppImage" + + echo "> wget --quiet --show-progress \"$url\" --output-document \"$TMP_DIR/$tool_name.AppImage\"" + wget --quiet --show-progress "$url" --output-document "$TMP_DIR/$tool_name.AppImage" + if [ $? -ne 0 ]; then + exit 1 + fi + chmod u+x "$TMP_DIR/$tool_name.AppImage" +} + +get_tool "linuxdeploy" "linuxdeploy" "continuous" "linuxdeploy" +if [ $? -ne 0 ]; then + exit 1 +fi + +get_tool "AppImage" "appimagetool" "continuous" "appimagetool" +if [ $? -ne 0 ]; then + exit 1 +fi + +get_tool "linuxdeploy" "linuxdeploy-plugin-qt" "continuous" "linuxdeploy-plugin-qt" +if [ $? -ne 0 ]; then + exit 1 +fi + +cd "$BUILD_DIR" || exit 1 + +echo "> $TMP_DIR/linuxdeploy.AppImage -e ToDo -d ../../ToDo.desktop -i ../../icon.png --appdir ./appdir" +"$TMP_DIR/linuxdeploy.AppImage" -e ToDo -d ../../ToDo.desktop -i ../../icon.png --appdir ./appdir +if [ $? -ne 0 ]; then + cd appdir || exit 1 + cp /lib/x86_64-linux-gnu/libxcb.so.1 ./usr/lib/ + mv ./usr/share/icons/hicolor/512x512/apps/icon.png ./usr/share/icons/hicolor/512x512/apps/ToDo.png + ln -s ./usr/share/icons/hicolor/512x512/apps/ToDo.png ToDo.png + cd .. + + echo "> $TMP_DIR/linuxdeploy.AppImage -e ToDo -d ../../ToDo.desktop -i ../../icon.png --appdir ./appdir" + "$TMP_DIR/linuxdeploy.AppImage" -e ToDo -d ../../ToDo.desktop -i ../../icon.png --appdir ./appdir + if [ $? -ne 0 ]; then + exit 1 + fi +fi + +echo "> $TMP_DIR/linuxdeploy.AppImage --appdir ./appdir --plugin qt --output appimage" +"$TMP_DIR/linuxdeploy.AppImage" --appdir ./appdir --plugin qt --output appimage + +cp -r "$QT_PLUGINS" "$BUILD_DIR/appdir/usr/" +if [ $? -ne 0 ]; then + exit 1 +fi +find "$BUILD_DIR/appdir/usr/plugins" -name "*.debug" -type f -delete +if [ $? -ne 0 ]; then + exit 1 +fi + +cp /usr/lib/x86_64-linux-gnu/libxcb-*.so "$BUILD_DIR/appdir/usr/lib/" +cp $QT_PLUGINS/../lib/libQt6*.so.6 "$BUILD_DIR/appdir/usr/lib/" + +echo "> $TMP_DIR/appimagetool.AppImage ./appdir" +"$TMP_DIR/appimagetool.AppImage" ./appdir +if [ $? -ne 0 ]; then + exit 1 +fi + +echo "done." +exit 0