From b0b9c4169e6e8a564ed67cf71e59ef339cb2ac70 Mon Sep 17 00:00:00 2001 From: Alexander Shaduri Date: Tue, 9 Mar 2021 15:17:25 +0400 Subject: [PATCH] Initial refactoring to support cpack-based packaging and OBS builds. --- CMakeLists.txt | 237 ++---------------- contrib/CMakeLists.txt | 5 +- data/CMakeLists.txt | 81 +++--- debian.dist/CMakeLists.txt | 3 - packaging/CMakeLists.txt | 34 +++ .../cpack_debian}/debian-postinst.in.sh | 0 .../cpack_debian}/debian-postrm.in.sh | 0 {data => packaging}/cpack_options.cmake | 210 +++++++++++++++- .../cpack_rpm}/rpm-post-install.in.sh | 0 .../cpack_rpm}/rpm-post-uninstall.in.sh | 0 {data => packaging}/nsis/distribution.in.txt | 0 {data => packaging}/nsis/gsmartcontrol.in.nsi | 0 {data => packaging}/nsis/nsi_install.ico | Bin {data => packaging}/nsis/nsi_uninstall.ico | Bin .../obs_debian}/changelog.in | 0 {debian.dist => packaging/obs_debian}/compat | 0 {debian.dist => packaging/obs_debian}/control | 0 .../obs_debian}/copyright | 0 {debian.dist => packaging/obs_debian}/menu | 0 .../obs_debian}/postinst | 0 {debian.dist => packaging/obs_debian}/postrm | 0 {debian.dist => packaging/obs_debian}/rules | 0 .../obs_rpm/gsmartcontrol.spec | 26 +- src/CMakeLists.txt | 11 +- src/ui/CMakeLists.txt | 12 +- 25 files changed, 328 insertions(+), 291 deletions(-) delete mode 100644 debian.dist/CMakeLists.txt create mode 100644 packaging/CMakeLists.txt rename {data => packaging/cpack_debian}/debian-postinst.in.sh (100%) rename {data => packaging/cpack_debian}/debian-postrm.in.sh (100%) rename {data => packaging}/cpack_options.cmake (50%) rename {data => packaging/cpack_rpm}/rpm-post-install.in.sh (100%) rename {data => packaging/cpack_rpm}/rpm-post-uninstall.in.sh (100%) rename {data => packaging}/nsis/distribution.in.txt (100%) rename {data => packaging}/nsis/gsmartcontrol.in.nsi (100%) rename {data => packaging}/nsis/nsi_install.ico (100%) rename {data => packaging}/nsis/nsi_uninstall.ico (100%) rename {debian.dist => packaging/obs_debian}/changelog.in (100%) rename {debian.dist => packaging/obs_debian}/compat (100%) rename {debian.dist => packaging/obs_debian}/control (100%) rename {debian.dist => packaging/obs_debian}/copyright (100%) rename {debian.dist => packaging/obs_debian}/menu (100%) rename {debian.dist => packaging/obs_debian}/postinst (100%) rename {debian.dist => packaging/obs_debian}/postrm (100%) rename {debian.dist => packaging/obs_debian}/rules (100%) rename gsmartcontrol.in.spec => packaging/obs_rpm/gsmartcontrol.spec (81%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 53aa832..f7442a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,226 +36,33 @@ option(APP_BUILD_EXAMPLES "Build examples" OFF) option(APP_BUILD_TESTS "Build tests" OFF) -configure_file(gsmartcontrol.in.spec gsmartcontrol.spec) - +# Install documentation +set(DOC_FILES + LICENSE.LGPL3.txt + LICENSE.txt + NEWS.txt + README.md +) +if (WIN32) + install(FILES ${DOC_FILES} DESTINATION doc/) + install(DIRECTORY docs DESTINATION doc/ + PATTERN "*.yml" EXCLUDE + PATTERN "CNAME" EXCLUDE + ) +else() + install(FILES ${DOC_FILES} DESTINATION "${CMAKE_INSTALL_DOCDIR}/gsmartcontrol/") + install(DIRECTORY docs DESTINATION "${CMAKE_INSTALL_DOCDIR}/gsmartcontrol/" + PATTERN "*.yml" EXCLUDE + PATTERN "CNAME" EXCLUDE + ) +endif() add_subdirectory(contrib) add_subdirectory(data) -add_subdirectory(debian.dist) add_subdirectory(dependencies) +add_subdirectory(packaging) add_subdirectory(src) -include(data/cpack_options.cmake) - - - -# TODO - -## NSIS installer support. -## Requires installed NSIS, smartctl-nc.exe, smartctl.exe, update-smart-drivedb.exe. -## Gtkmm and pcre dlls are required if linking against them. -## dos2unix on build machine. -## Execute only with win32 build present. -# -#WIN_ZIP_NAME = $(PACKAGE)-$(VERSION)-@WINDOWS_SUFFIX@ -# -# -#win-dist: win-dist-nocleanup win-dist-cleanup -# -#win-dist-nocleanup: win-dist-prepare nsis-dist-nocleanup win-zip-dist-nocleanup -# -#win-dist-cleanup: win-zip-dist-cleanup nsis-dist-cleanup -# rm -rf win-dist -# -#win-dist-clean: win-dist-cleanup -# rm -f gsmartcontrol-*.exe gsmartcontrol-*.zip -# -# -#win-dist-prepare-all: nsis-dist-prepare win-zip-dist-prepare -# -# -## All of GTK+ -#GTK_BIN_FILES = gdk-pixbuf-query-loaders.exe \ -# gspawn-win32-helper-console.exe \ -# gspawn-win32-helper.exe \ -# gspawn-win64-helper-console.exe \ -# gspawn-win64-helper.exe \ -# gtk-query-immodules-3.0.exe \ -# gtk-update-icon-cache-3.0.exe \ -# libatk-1.*.dll \ -# libatkmm-1.*.dll \ -# libbz2-*.dll \ -# libcairo-*.dll \ -# libcairomm-1*.dll \ -# libepoxy-*.dll \ -# libffi-*.dll \ -# libexpat-*.dll \ -# libfontconfig-*.dll \ -# libfreetype-*.dll \ -# libgdk-3*.dll \ -# libgdk_pixbuf-2.*.dll \ -# libgdkmm-3.*.dll \ -# libgio-2.*.dll \ -# libgiomm-2.*.dll \ -# libglib-2.*.dll \ -# libglibmm*2.*.dll \ -# libgmodule-2.*.dll \ -# libgobject-2.*.dll \ -# libgraphite*.dll \ -# libgthread-2.*.dll \ -# libgtk-3*.dll \ -# libgtkmm-3*.dll \ -# libharfbuzz*.dll \ -# libiconv*.dll \ -# libintl*.dll \ -# libjasper*.dll \ -# libjpeg*.dll \ -# liblzma*.dll \ -# libpango*-1.*.dll \ -# libpixman*.dll \ -# libpng16-*.dll \ -# libsigc-2.*.dll \ -# libstdc++-*.dll \ -# libtiff-*.dll \ -# libwinpthread-*.dll \ -# libxml2-*.dll \ -# zlib1.dll -# -# -## Don't strip smartctl (it will only change the header), and -## don't strip update-smart-drivedb (it will break its CRC check). -#win-dist-prepare: all -# $(MKDIR_P) win-dist -# cp $(top_srcdir)/data/icon_*.png win-dist/ -# -# $(MKDIR_P) win-dist/ui -# cp $(top_srcdir)/src/ui/* win-dist/ui/ -# -# $(MKDIR_P) win-dist/doc -# cp data/nsis/distribution.txt win-dist/doc/ -# cp $(top_srcdir)/doc/* win-dist/doc/ -# -# cp src/gsmartcontrol.exe src/gsmartcontrol.exe.manifest win-dist/ -# -# unix2dos win-dist/doc/*.txt -# -# cp -p "@WINDOWS_SYSROOT@"/bin/drivedb.h win-dist/ -# cp -p "@WINDOWS_SYSROOT@"/bin/smartctl-nc.exe win-dist/ -# cp -p "@WINDOWS_SYSROOT@"/bin/smartctl.exe win-dist/ -# cp -p "@WINDOWS_SYSROOT@"/bin/update-smart-drivedb.exe win-dist/ -# -# for file in $(GTK_BIN_FILES); do for f in "@WINDOWS_SYSROOT@/bin/"$$file; do if test -f "$${f}"; then cp -p "$${f}" win-dist/; fi; done; done -# -## /etc/gtk-3.0/ should contain settings.ini with a win32 theme. -# $(MKDIR_P) win-dist/etc -# $(MKDIR_P) win-dist/etc/fonts -# $(MKDIR_P) win-dist/etc/gtk-3.0 -# cp -p "@WINDOWS_SYSROOT@"/etc/fonts/fonts.conf win-dist/etc/fonts/ -## cp -p "@WINDOWS_SYSROOT@"/etc/gtk-3.0/im-multipress.conf win-dist/etc/gtk-3.0/ -# cp -p "@WINDOWS_SYSROOT@"/etc/gtk-3.0/settings.ini win-dist/etc/gtk-3.0/ -# -# $(MKDIR_P) win-dist/share -# cp -p -r "@WINDOWS_SYSROOT@"/share/themes win-dist/share -# -## needed for file chooser -# $(MKDIR_P) win-dist/share/glib-2.0 -# cp -p -r "@WINDOWS_SYSROOT@"/share/glib-2.0/schemas win-dist/share/glib-2.0 -# -## $(MKDIR_P) win-dist/share/icons -## cp -p "@WINDOWS_SYSROOT@"/share/icons/hicolor win-dist/share/icons -# -## needed for window titlebar (if using client-side decorations), -## tree sorting indicators, GUI icons. -# $(MKDIR_P) win-dist/share/icons/Adwaita/16x16/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/16x16/actions/window-close-symbolic.symbolic.png win-dist/share/icons/Adwaita/16x16/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/16x16/actions/window-maximize-symbolic.symbolic.png win-dist/share/icons/Adwaita/16x16/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/16x16/actions/window-minimize-symbolic.symbolic.png win-dist/share/icons/Adwaita/16x16/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/16x16/actions/window-restore-symbolic.symbolic.png win-dist/share/icons/Adwaita/16x16/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/16x16/actions/pan-down-symbolic.symbolic.png win-dist/share/icons/Adwaita/16x16/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/16x16/actions/pan-up-symbolic.symbolic.png win-dist/share/icons/Adwaita/16x16/actions -# $(MKDIR_P) win-dist/share/icons/Adwaita/16x16/status -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/16x16/status/dialog-information.png win-dist/share/icons/Adwaita/16x16/status -# $(MKDIR_P) win-dist/share/icons/Adwaita/22x22/status -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/22x22/status/dialog-information.png win-dist/share/icons/Adwaita/22x22/status -# $(MKDIR_P) win-dist/share/icons/Adwaita/24x24/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/24x24/actions/window-close-symbolic.symbolic.png win-dist/share/icons/Adwaita/24x24/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/24x24/actions/window-maximize-symbolic.symbolic.png win-dist/share/icons/Adwaita/24x24/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/24x24/actions/window-minimize-symbolic.symbolic.png win-dist/share/icons/Adwaita/24x24/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/24x24/actions/window-restore-symbolic.symbolic.png win-dist/share/icons/Adwaita/24x24/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/24x24/actions/pan-down-symbolic.symbolic.png win-dist/share/icons/Adwaita/24x24/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/24x24/actions/pan-up-symbolic.symbolic.png win-dist/share/icons/Adwaita/24x24/actions -# $(MKDIR_P) win-dist/share/icons/Adwaita/24x24/status -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/24x24/status/dialog-information.png win-dist/share/icons/Adwaita/24x24/status -# $(MKDIR_P) win-dist/share/icons/Adwaita/32x32/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/32x32/actions/window-close-symbolic.symbolic.png win-dist/share/icons/Adwaita/32x32/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/32x32/actions/window-maximize-symbolic.symbolic.png win-dist/share/icons/Adwaita/32x32/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/32x32/actions/window-minimize-symbolic.symbolic.png win-dist/share/icons/Adwaita/32x32/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/32x32/actions/window-restore-symbolic.symbolic.png win-dist/share/icons/Adwaita/32x32/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/32x32/actions/pan-down-symbolic.symbolic.png win-dist/share/icons/Adwaita/32x32/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/32x32/actions/pan-up-symbolic.symbolic.png win-dist/share/icons/Adwaita/32x32/actions -# $(MKDIR_P) win-dist/share/icons/Adwaita/32x32/status -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/32x32/status/dialog-information.png win-dist/share/icons/Adwaita/32x32/status -# $(MKDIR_P) win-dist/share/icons/Adwaita/48x48/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/48x48/actions/window-close-symbolic.symbolic.png win-dist/share/icons/Adwaita/48x48/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/48x48/actions/window-maximize-symbolic.symbolic.png win-dist/share/icons/Adwaita/48x48/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/48x48/actions/window-minimize-symbolic.symbolic.png win-dist/share/icons/Adwaita/48x48/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/48x48/actions/window-restore-symbolic.symbolic.png win-dist/share/icons/Adwaita/48x48/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/48x48/actions/pan-down-symbolic.symbolic.png win-dist/share/icons/Adwaita/48x48/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/48x48/actions/pan-up-symbolic.symbolic.png win-dist/share/icons/Adwaita/48x48/actions -# $(MKDIR_P) win-dist/share/icons/Adwaita/48x48/status -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/48x48/status/dialog-information.png win-dist/share/icons/Adwaita/48x48/status -# $(MKDIR_P) win-dist/share/icons/Adwaita/64x64/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/64x64/actions/window-close-symbolic.symbolic.png win-dist/share/icons/Adwaita/64x64/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/64x64/actions/window-maximize-symbolic.symbolic.png win-dist/share/icons/Adwaita/64x64/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/64x64/actions/window-minimize-symbolic.symbolic.png win-dist/share/icons/Adwaita/64x64/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/64x64/actions/window-restore-symbolic.symbolic.png win-dist/share/icons/Adwaita/64x64/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/64x64/actions/pan-down-symbolic.symbolic.png win-dist/share/icons/Adwaita/64x64/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/64x64/actions/pan-up-symbolic.symbolic.png win-dist/share/icons/Adwaita/64x64/actions -## $(MKDIR_P) win-dist/share/icons/Adwaita/64x64/status -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/64x64/status/dialog-information.png win-dist/share/icons/Adwaita/64x64/status -# $(MKDIR_P) win-dist/share/icons/Adwaita/96x96/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/96x96/actions/window-close-symbolic.symbolic.png win-dist/share/icons/Adwaita/96x96/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/96x96/actions/window-maximize-symbolic.symbolic.png win-dist/share/icons/Adwaita/96x96/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/96x96/actions/window-minimize-symbolic.symbolic.png win-dist/share/icons/Adwaita/96x96/actions -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/96x96/actions/window-restore-symbolic.symbolic.png win-dist/share/icons/Adwaita/96x96/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/96x96/actions/pan-down-symbolic.symbolic.png win-dist/share/icons/Adwaita/96x96/actions -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/96x96/actions/pan-up-symbolic.symbolic.png win-dist/share/icons/Adwaita/96x96/actions -## $(MKDIR_P) win-dist/share/icons/Adwaita/96x96/status -## cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/96x96/status/dialog-information.png win-dist/share/icons/Adwaita/96x96/status -# $(MKDIR_P) win-dist/share/icons/Adwaita/256x256/status -# cp -p "@WINDOWS_SYSROOT@"/share/icons/Adwaita/256x256/status/dialog-information.png win-dist/share/icons/Adwaita/256x256/status -# -## other -# cp -p "@WINDOWS_SYSROOT@"/bin/libgcc_s_*.dll win-dist/ -# cp -p "@WINDOWS_SYSROOT@"/bin/libpcre-1.dll win-dist/ -# cp -p "@WINDOWS_SYSROOT@"/bin/libpcrecpp-0.dll win-dist/ -# -# -#nsis-dist-prepare: win-dist-prepare -# cp -a win-dist nsis-dist -# cp $(top_srcdir)/data/gsmartcontrol.ico nsis-dist/ -# cp data/nsis/*.nsi $(top_srcdir)/data/nsis/nsi_* nsis-dist/ -# unix2dos nsis-dist/*.nsi -# -#nsis-dist-nocleanup: nsis-dist-prepare -# cd nsis-dist && @NSIS_EXEC@ gsmartcontrol.nsi -# mv nsis-dist/$(PACKAGE)-$(VERSION)-@WINDOWS_SUFFIX@.exe . -# -#nsis-dist-cleanup: -# rm -rf nsis-dist -# -#nsis-dist: nsis-dist-prepare nsis-dist-nocleanup nsis-dist-cleanup -# -# -#win-zip-dist-prepare: win-dist-prepare -# cp -a win-dist $(WIN_ZIP_NAME) -# -#win-zip-dist-nocleanup: win-zip-dist-prepare -# zip -K -9r $(WIN_ZIP_NAME).zip $(WIN_ZIP_NAME) -# -#win-zip-dist-cleanup: -# rm -rf $(WIN_ZIP_NAME) -# -#win-zip-dist: win-zip-dist-prepare win-zip-dist-nocleanup win-zip-dist-cleanup +include(packaging/cpack_options.cmake) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index ea3bfcd..a87b2b6 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -4,5 +4,6 @@ # (C) 2021 Alexander Shaduri ############################################################################### -install(DIRECTORY "cron-based_noadmin" DESTINATION "${CMAKE_INSTALL_DOCDIR}/gsmartcontrol/contrib/") - +if (NOT WIN32) + install(DIRECTORY "cron-based_noadmin" DESTINATION "${CMAKE_INSTALL_DOCDIR}/gsmartcontrol/contrib/") +endif() diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 0b31a80..eb83da8 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -6,63 +6,58 @@ # Generate files - -# Variables for .in files -set(WINDOWS_SUFFIX "win32") -if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set(WINDOWS_SUFFIX "win64") -endif() - -configure_file("nsis/distribution.in.txt" "nsis/distribution.txt" ESCAPE_QUOTES @ONLY) -configure_file("nsis/gsmartcontrol.in.nsi" "nsis/gsmartcontrol.nsi" ESCAPE_QUOTES @ONLY) - configure_file("gsmartcontrol.appdata.in.xml" "gsmartcontrol.appdata.xml" ESCAPE_QUOTES @ONLY) configure_file("gsmartcontrol.in.desktop" "gsmartcontrol.desktop" ESCAPE_QUOTES @ONLY) configure_file("gsmartcontrol-root.in.sh" "gsmartcontrol-root.sh" ESCAPE_QUOTES @ONLY) configure_file("org.gsmartcontrol.in.policy" "gsmartcontrol.policy" ESCAPE_QUOTES @ONLY) -configure_file("debian-postinst.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/postinst" ESCAPE_QUOTES @ONLY) -configure_file("debian-postrm.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/postrm" ESCAPE_QUOTES @ONLY) - -configure_file("rpm-post-install.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/rpm-post-install.sh" ESCAPE_QUOTES @ONLY) -configure_file("rpm-post-uninstall.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/rpm-post-uninstall.sh" ESCAPE_QUOTES @ONLY) - # Install app icons -foreach(dir 16 22 24 32 48 64 128 256) - install(FILES "${dir}/gsmartcontrol.png" - DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/${dir}x${dir}/apps/") -endforeach() -install(CODE "execute_process (COMMAND gtk-update-icon-cache-3.0 -t -f \"@CMAKE_INSTALL_DATADIR@/icons/hicolor\")") +if (NOT WIN32) + foreach(dir 16 22 24 32 48 64 128 256) + install(FILES "${dir}/gsmartcontrol.png" + DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/${dir}x${dir}/apps/") + endforeach() + install(CODE "execute_process (COMMAND gtk-update-icon-cache-3.0 -t -f \"@CMAKE_INSTALL_DATADIR@/icons/hicolor\")") +endif() -# Application pixmap (fallback icon for desktop files). -# Same as 48/gsmartcontrol.png. -# Also, xpm for debian menu, 32x32. -install(FILES 48/gsmartcontrol.png gsmartcontrol.xpm - DESTINATION "${CMAKE_INSTALL_DATADIR}/pixmaps/") - -# We don't install .ico (it's only for Windows) +if (WIN32) + # .ico file + install(FILES gsmartcontrol.ico DESTINATION .) +endif() # Install internal icons -install(FILES icon_cddvd.png icon_hdd.png - DESTINATION "${CMAKE_INSTALL_DATADIR}/gsmartcontrol/icons") +if (WIN32) + install(FILES icon_cddvd.png icon_hdd.png + DESTINATION .) +else() + install(FILES icon_cddvd.png icon_hdd.png + DESTINATION "${CMAKE_INSTALL_DATADIR}/gsmartcontrol/icons") +endif() # Desktop file -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol.desktop" - DESTINATION "${CMAKE_INSTALL_DATADIR}/gsmartcontrol/icons/") +if (NOT WIN32) + # Application pixmap (fallback icon for desktop files). + # Same as 48/gsmartcontrol.png. + # Also, xpm for debian menu, 32x32. + install(FILES 48/gsmartcontrol.png gsmartcontrol.xpm + DESTINATION "${CMAKE_INSTALL_DATADIR}/pixmaps/") -# Appdata file -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol.appdata.xml" - DESTINATION "${CMAKE_INSTALL_DATADIR}/metainfo/") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol.desktop" + DESTINATION "${CMAKE_INSTALL_DATADIR}/gsmartcontrol/icons/") -# PolKit file -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/org.gsmartcontrol.policy" - DESTINATION "${CMAKE_INSTALL_DATADIR}/polkit-1/actions/") + # Appdata file + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol.appdata.xml" + DESTINATION "${CMAKE_INSTALL_DATADIR}/metainfo/") -# Man pages -install(FILES "gsmartcontrol.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1/") -install(FILES "gsmartcontrol.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1/" RENAME "gsmartcontrol-root.1") + # PolKit file + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/org.gsmartcontrol.policy" + DESTINATION "${CMAKE_INSTALL_DATADIR}/polkit-1/actions/") -# Scripts (this goes to bin, not sbin, as it doesn't require root privileges before running) -install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol-root.sh" TYPE BIN RENAME "gsmartcontrol-root") + # Man pages + install(FILES "gsmartcontrol.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1/") + install(FILES "gsmartcontrol.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1/" RENAME "gsmartcontrol-root.1") + # Scripts (this goes to bin, not sbin, as it doesn't require root privileges before running) + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol-root.sh" TYPE BIN RENAME "gsmartcontrol-root") +endif() diff --git a/debian.dist/CMakeLists.txt b/debian.dist/CMakeLists.txt deleted file mode 100644 index 83cd9bb..0000000 --- a/debian.dist/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ - -configure_file("changelog.in" "changelog" ESCAPE_QUOTES @ONLY) - diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt new file mode 100644 index 0000000..6b17fef --- /dev/null +++ b/packaging/CMakeLists.txt @@ -0,0 +1,34 @@ + +# Variables for nsis .in files +set(WINDOWS_SUFFIX "win32") +if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set(WINDOWS_SUFFIX "win64") +endif() +configure_file("nsis/distribution.in.txt" "nsis/distribution.txt" ESCAPE_QUOTES @ONLY NEWLINE_STYLE DOS) +configure_file("nsis/gsmartcontrol.in.nsi" "nsis/gsmartcontrol.nsi" ESCAPE_QUOTES @ONLY NEWLINE_STYLE DOS) + +# NSIS helpers +if (WIN32) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/nsis/distribution.txt" DESTINATION doc/) + + # nsis file, only for cross-compilation + if (NOT ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/nsis/gsmartcontrol.nsi" DESTINATION .) + endif() +endif() + + +# CPack Debian +configure_file("cpack_debian/debian-postinst.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/cpack_debian/postinst" ESCAPE_QUOTES @ONLY) +configure_file("cpack_debian/debian-postrm.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/cpack_debian/postrm" ESCAPE_QUOTES @ONLY) + +# CPack RPM +configure_file("cpack_rpm/rpm-post-install.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/cpack_rpm/rpm-post-install.sh" ESCAPE_QUOTES @ONLY) +configure_file("cpack_rpm/rpm-post-uninstall.in.sh" "${CMAKE_CURRENT_BINARY_DIR}/cpack_rpm/rpm-post-uninstall.sh" ESCAPE_QUOTES @ONLY) + +# OBS Debian +configure_file("obs_debian/changelog.in" "obs_debian/changelog" ESCAPE_QUOTES @ONLY) + +# OBS RPM +#configure_file(obs_rpm/gsmartcontrol.in.spec obs_rpm/gsmartcontrol.spec) + diff --git a/data/debian-postinst.in.sh b/packaging/cpack_debian/debian-postinst.in.sh similarity index 100% rename from data/debian-postinst.in.sh rename to packaging/cpack_debian/debian-postinst.in.sh diff --git a/data/debian-postrm.in.sh b/packaging/cpack_debian/debian-postrm.in.sh similarity index 100% rename from data/debian-postrm.in.sh rename to packaging/cpack_debian/debian-postrm.in.sh diff --git a/data/cpack_options.cmake b/packaging/cpack_options.cmake similarity index 50% rename from data/cpack_options.cmake rename to packaging/cpack_options.cmake index e7e054d..9b0126c 100644 --- a/data/cpack_options.cmake +++ b/packaging/cpack_options.cmake @@ -140,9 +140,9 @@ endif() #configure_file("${CMAKE_SOURCE_DIR}/data/package_data/rpm-post-install.in.sh" "${CMAKE_BINARY_DIR}/rpm-post-install.sh" ESCAPE_QUOTES @ONLY) #configure_file("${CMAKE_SOURCE_DIR}/data/package_data/rpm-post-uninstall.in.sh" "${CMAKE_BINARY_DIR}/rpm-post-uninstall #.sh" ESCAPE_QUOTES @ONLY) -# -#set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/data/rpm-post-install.sh") -#set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/data/rpm-post-uninstall.sh") + +set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/cpack_rpm/rpm-post-install.sh") +set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/cpack_rpm/rpm-post-uninstall.sh") @@ -162,8 +162,203 @@ endif() # "${CMAKE_BINARY_DIR}/postinst" ESCAPE_QUOTES @ONLY) #configure_file("${CMAKE_SOURCE_DIR}/data/package_data/debian-postrm.in.sh" # "${CMAKE_BINARY_DIR}/postrm" ESCAPE_QUOTES @ONLY) -# -#set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_BINARY_DIR}/data/postinst;${CMAKE_BINARY_DIR}/data/postrm") + +set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + "${CMAKE_BINARY_DIR}/packaging/cpack_debian/postinst;${CMAKE_BINARY_DIR}/packaging/cpack_debian/postrm") + + + + + +# Install GTK+ and other dependencies in Windows. +# Requires installed smartctl-nc.exe, smartctl.exe, update-smart-drivedb.exe in bin subdirectory of sysroot. +# Gtkmm and pcre dlls are required. +# dos2unix is required on build machine. +if (WIN32) + option(APP_WINDOWS_SYSROOT "Location of system root for Windows binaries, for packing" "${CMAKE_FIND_ROOT_PATH}") + + set(WINDOWS_SUFFIX "win32") + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set(WINDOWS_SUFFIX "win64") + endif() + + # TODO unix2dos doc/*.txt + + # Smartmontools + install(FILES + "${APP_WINDOWS_SYSROOT}/bin/drivedb.h" + "${APP_WINDOWS_SYSROOT}/bin/smartctl-nc.exe" + "${APP_WINDOWS_SYSROOT}/bin/smartctl.exe" + "${APP_WINDOWS_SYSROOT}/bin/update-smart-drivedb.exe" + DESTINATION . + ) + + # GCC Runtime + file(GLOB MATCHED_FILES LIST_DIRECTORIES false RELATIVE "${APP_WINDOWS_SYSROOT}/bin" "libgcc_s_*.dll") + install(FILES ${MATCHED_FILES} DESTINATION .) + + # PCRE + install(FILES "${APP_WINDOWS_SYSROOT}/bin/libpcre-1.dll" DESTINATION .) + install(FILES "${APP_WINDOWS_SYSROOT}/bin/libpcrecpp-0.dll" DESTINATION .) + + + # All of GTK+ + set(GTK_FILES + gdk-pixbuf-query-loaders.exe + gspawn-win32-helper-console.exe + gspawn-win32-helper.exe + gspawn-win64-helper-console.exe + gspawn-win64-helper.exe + gtk-query-immodules-3.0.exe + gtk-update-icon-cache-3.0.exe + libatk-1.*.dll + libatkmm-1.*.dll + libbz2-*.dll + libcairo-*.dll + libcairomm-1*.dll + libepoxy-*.dll + libffi-*.dll + libexpat-*.dll + libfontconfig-*.dll + libfreetype-*.dll + libgdk-3*.dll + libgdk_pixbuf-2.*.dll + libgdkmm-3.*.dll + libgio-2.*.dll + libgiomm-2.*.dll + libglib-2.*.dll + libglibmm*2.*.dll + libgmodule-2.*.dll + libgobject-2.*.dll + libgraphite*.dll + libgthread-2.*.dll + libgtk-3*.dll + libgtkmm-3*.dll + libharfbuzz*.dll + libiconv*.dll + libintl*.dll + libjasper*.dll + libjpeg*.dll + liblzma*.dll + libpango*-1.*.dll + libpixman*.dll + libpng16-*.dll + libsigc-2.*.dll + libstdc++-*.dll + libtiff-*.dll + libwinpthread-*.dll + libxml2-*.dll + zlib1.dll + ) + foreach(pattern ${GTK_FILES}) + file(GLOB MATCHED_FILES LIST_DIRECTORIES false RELATIVE "${APP_WINDOWS_SYSROOT}/bin" ${pattern}) + if (NOT "${MATCHED_FILES}" STREQUAL "") + install(FILES ${MATCHED_FILES} DESTINATION .) + endif() + endforeach() + + # /etc/gtk-3.0/ should contain settings.ini with a win32 theme. + install(FILES "${APP_WINDOWS_SYSROOT}/etc/fonts/fonts.conf" DESTINATION "etc/fonts/") +# install(FILES "${APP_WINDOWS_SYSROOT}/etc/gtk-3.0/im-multipress.conf" DESTINATION "etc/gtk-3.0/") + install(FILES "${APP_WINDOWS_SYSROOT}/etc/gtk-3.0/settings.ini" DESTINATION "etc/gtk-3.0/") + + install(DIRECTORY "${APP_WINDOWS_SYSROOT}/share/themes" DESTINATION "share/") + + # needed for file chooser + install(DIRECTORY "${APP_WINDOWS_SYSROOT}/share/glib-2.0/schemas" DESTINATION "share/glib-2.0/") + +# install(DIRECTORY "${APP_WINDOWS_SYSROOT}/share/icons/hicolor" DESTINATION "share/icons/") + + # needed for window titlebar (if using client-side decorations), + # tree sorting indicators, GUI icons. + install(FILES +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/16x16/actions/window-close-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/16x16/actions/window-maximize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/16x16/actions/window-minimize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/16x16/actions/window-restore-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/16x16/actions/pan-down-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/16x16/actions/pan-up-symbolic.symbolic.png" + DESTINATION "share/icons/Adwaita/16x16/actions/" + ) + install(FILES + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/16x16/status/dialog-information.png" + DESTINATION "share/icons/Adwaita/16x16/status/" + ) + install(FILES + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/22x22/status/dialog-information.png" + DESTINATION "share/icons/Adwaita/22x22/status/" + ) + install(FILES +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/24x24/actions/window-close-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/24x24/actions/window-maximize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/24x24/actions/window-minimize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/24x24/actions/window-restore-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/24x24/actions/pan-down-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/24x24/actions/pan-up-symbolic.symbolic.png" + DESTINATION "share/icons/Adwaita/24x24/actions/" + ) + install(FILES + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/24x24/status/dialog-information.png" + DESTINATION "share/icons/Adwaita/24x24/status/" + ) + install(FILES +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/32x32/actions/window-close-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/32x32/actions/window-maximize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/32x32/actions/window-minimize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/32x32/actions/window-restore-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/32x32/actions/pan-down-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/32x32/actions/pan-up-symbolic.symbolic.png" + DESTINATION "share/icons/Adwaita/32x32/actions/" + ) + install(FILES + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/32x32/status/dialog-information.png" + DESTINATION "share/icons/Adwaita/32x32/status/" + ) + install(FILES +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/48x48/actions/window-close-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/48x48/actions/window-maximize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/48x48/actions/window-minimize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/48x48/actions/window-restore-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/48x48/actions/pan-down-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/48x48/actions/pan-up-symbolic.symbolic.png" + DESTINATION "share/icons/Adwaita/48x48/actions/" + ) + install(FILES + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/48x48/status/dialog-information.png" + DESTINATION "share/icons/Adwaita/48x48/status/" + ) + install(FILES +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/64x64/actions/window-close-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/64x64/actions/window-maximize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/64x64/actions/window-minimize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/64x64/actions/window-restore-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/64x64/actions/pan-down-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/64x64/actions/pan-up-symbolic.symbolic.png" + DESTINATION "share/icons/Adwaita/64x64/actions/" + ) + install(FILES + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/64x64/status/dialog-information.png" + DESTINATION "share/icons/Adwaita/64x64/status/" + ) + install(FILES +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/96x96/actions/window-close-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/96x96/actions/window-maximize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/96x96/actions/window-minimize-symbolic.symbolic.png" +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/96x96/actions/window-restore-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/96x96/actions/pan-down-symbolic.symbolic.png" + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/96x96/actions/pan-up-symbolic.symbolic.png" + DESTINATION "share/icons/Adwaita/96x96/actions/" + ) +# install(FILES +# "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/96x96/status/dialog-information.png" +# DESTINATION "share/icons/Adwaita/96x96/status/" +# ) + install(FILES + "${APP_WINDOWS_SYSROOT}/share/icons/Adwaita/256x256/status/dialog-information.png" + DESTINATION "share/icons/Adwaita/256x256/status/" + ) +endif() + # All CPack variables must be set before this @@ -171,6 +366,10 @@ include(CPack) if (WIN32) + + # TODO Support NSIS in Linux + # cd nsis-dist && @NSIS_EXEC@ gsmartcontrol.nsi + add_custom_target(package_nsis COMMAND "${CMAKE_CPACK_COMMAND}" -G NSIS -C Release COMMENT "Creating NSIS installer..." @@ -224,4 +423,3 @@ if (UNIX) endif() - diff --git a/data/rpm-post-install.in.sh b/packaging/cpack_rpm/rpm-post-install.in.sh similarity index 100% rename from data/rpm-post-install.in.sh rename to packaging/cpack_rpm/rpm-post-install.in.sh diff --git a/data/rpm-post-uninstall.in.sh b/packaging/cpack_rpm/rpm-post-uninstall.in.sh similarity index 100% rename from data/rpm-post-uninstall.in.sh rename to packaging/cpack_rpm/rpm-post-uninstall.in.sh diff --git a/data/nsis/distribution.in.txt b/packaging/nsis/distribution.in.txt similarity index 100% rename from data/nsis/distribution.in.txt rename to packaging/nsis/distribution.in.txt diff --git a/data/nsis/gsmartcontrol.in.nsi b/packaging/nsis/gsmartcontrol.in.nsi similarity index 100% rename from data/nsis/gsmartcontrol.in.nsi rename to packaging/nsis/gsmartcontrol.in.nsi diff --git a/data/nsis/nsi_install.ico b/packaging/nsis/nsi_install.ico similarity index 100% rename from data/nsis/nsi_install.ico rename to packaging/nsis/nsi_install.ico diff --git a/data/nsis/nsi_uninstall.ico b/packaging/nsis/nsi_uninstall.ico similarity index 100% rename from data/nsis/nsi_uninstall.ico rename to packaging/nsis/nsi_uninstall.ico diff --git a/debian.dist/changelog.in b/packaging/obs_debian/changelog.in similarity index 100% rename from debian.dist/changelog.in rename to packaging/obs_debian/changelog.in diff --git a/debian.dist/compat b/packaging/obs_debian/compat similarity index 100% rename from debian.dist/compat rename to packaging/obs_debian/compat diff --git a/debian.dist/control b/packaging/obs_debian/control similarity index 100% rename from debian.dist/control rename to packaging/obs_debian/control diff --git a/debian.dist/copyright b/packaging/obs_debian/copyright similarity index 100% rename from debian.dist/copyright rename to packaging/obs_debian/copyright diff --git a/debian.dist/menu b/packaging/obs_debian/menu similarity index 100% rename from debian.dist/menu rename to packaging/obs_debian/menu diff --git a/debian.dist/postinst b/packaging/obs_debian/postinst similarity index 100% rename from debian.dist/postinst rename to packaging/obs_debian/postinst diff --git a/debian.dist/postrm b/packaging/obs_debian/postrm similarity index 100% rename from debian.dist/postrm rename to packaging/obs_debian/postrm diff --git a/debian.dist/rules b/packaging/obs_debian/rules similarity index 100% rename from debian.dist/rules rename to packaging/obs_debian/rules diff --git a/gsmartcontrol.in.spec b/packaging/obs_rpm/gsmartcontrol.spec similarity index 81% rename from gsmartcontrol.in.spec rename to packaging/obs_rpm/gsmartcontrol.spec index 3439fe6..5fccb34 100644 --- a/gsmartcontrol.in.spec +++ b/packaging/obs_rpm/gsmartcontrol.spec @@ -1,9 +1,14 @@ +############################################################################### +# License: BSD Zero Clause License file +# Copyright: +# (C) 2008 - 2021 Alexander Shaduri +############################################################################### # This spec file is for openSUSE Build Service. # Supported distributions: openSUSE, Fedora, CentOS, RHEL. Name: gsmartcontrol -Version: @CMAKE_PROJECT_VERSION@ +Version: git Release: 0 License: GPL-3.0 Url: https://gsmartcontrol.shaduri.dev/ @@ -18,26 +23,20 @@ Group: Hardware/Other %global debug_package %{nil} -# For non-specified distributions we don't specify any dependencies to avoid errors. - +# For distributions that are not listed here we don't specify any dependencies to avoid errors. # SUSE / OpenSUSE. SLES also defines the correct suse_version. %if 0%{?suse_version} - Requires: smartmontools >= 5.43, polkit, bash, xterm -BuildRequires: gcc-c++, libstdc++-devel, pcre-devel, gtkmm3-devel >= 3.4.0 +BuildRequires: cmake pkg-config gcc-c++, libstdc++-devel, pcre-devel, gtkmm3-devel >= 3.4.0 BuildRequires: update-desktop-files BuildRequires: fdupes - %endif - # Fedora, CentOS, RHEL %if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version} - Requires: smartmontools >= 5.43, polkit, bash, xterm -BuildRequires: gcc-c++, pcre-devel, gtkmm30-devel >= 3.4.0 - +BuildRequires: cmake pkg-config gcc-c++, pcre-devel, gtkmm30-devel >= 3.4.0 %endif @@ -48,16 +47,14 @@ Technology) data in hard disk and solid-state drives. It allows you to inspect the drive's SMART data to determine its health, as well as run various tests on it. -%prep +%prep %setup -q %configure - %build make %{?_smp_mflags} - %install # %%makeinstall @@ -67,20 +64,17 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/icon-theme.cache %if 0%{?suse_version} - %suse_update_desktop_file -n %{name} # There are some png file duplicates, hardlink them. %fdupes # We install icons, so this is needed. -%if 0%{?suse_version} >= 1140 %post %icon_theme_cache_post %postun %icon_theme_cache_postun -%endif # endif suse %endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5aeeba9..7c49818 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -35,7 +35,7 @@ target_sources(gsmartcontrol PRIVATE # Win32 resource file if (WIN32) - configure_file("gsc_winres.in.rc" "${CMAKE_CURRENT_BINARY_DIR}/gsc_winres.rc" ESCAPE_QUOTES @ONLY) + configure_file("gsc_winres.in.rc" "${CMAKE_CURRENT_BINARY_DIR}/gsc_winres.rc" ESCAPE_QUOTES @ONLY NEWLINE_STYLE DOS) file(COPY "${CMAKE_SOURCE_DIR}/data/gsmartcontrol.ico" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") # required by winres target_sources(gsmartcontrol PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/gsc_winres.rc") endif() @@ -46,7 +46,8 @@ if (WIN32) if (CMAKE_SIZEOF_VOID_P EQUAL 8) set(WINDOWS_ARCH "amd64") endif() - configure_file("gsmartcontrol.exe.in.manifest" "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol.exe.manifest" ESCAPE_QUOTES @ONLY) + configure_file("gsmartcontrol.exe.in.manifest" "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol.exe.manifest" + ESCAPE_QUOTES @ONLY NEWLINE_STYLE DOS) # We link the manifest into the binary instead of installing it. # install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gsmartcontrol.exe.manifest" DESTINATION "${CMAKE_INSTALL_SBINDIR}/") @@ -62,7 +63,11 @@ target_link_libraries(gsmartcontrol build_config ) -install(TARGETS gsmartcontrol DESTINATION "${CMAKE_INSTALL_SBINDIR}/") +if (WIN32) + install(TARGETS gsmartcontrol DESTINATION .) +else() + install(TARGETS gsmartcontrol DESTINATION "${CMAKE_INSTALL_SBINDIR}/") +endif() add_subdirectory(build_config) diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index dbffc5e..b4ce71b 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -4,7 +4,7 @@ # (C) 2021 Alexander Shaduri ############################################################################### -install(FILES +set(UI_FILES gsc_about_dialog.glade gsc_add_device_window.glade gsc_executor_log_window.glade @@ -12,6 +12,12 @@ install(FILES gsc_main_window.glade gsc_preferences_window.glade gsc_text_window.glade - - DESTINATION "${CMAKE_INSTALL_DATADIR}/gsmartcontrol/ui/" ) + +if (WIN32) + install(FILES ${UI_FILES} + DESTINATION "ui/") +else() + install(FILES ${UI_FILES} + DESTINATION "${CMAKE_INSTALL_DATADIR}/gsmartcontrol/ui/") +endif()