Initial refactoring to support cpack-based packaging and OBS builds.

This commit is contained in:
Alexander Shaduri
2021-03-09 15:17:25 +04:00
parent 8d6b75057e
commit b0b9c4169e
25 changed files with 328 additions and 291 deletions
+22 -215
View File
@@ -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
#
## <prefix>/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)
+3 -2
View File
@@ -4,5 +4,6 @@
# (C) 2021 Alexander Shaduri <ashaduri@gmail.com>
###############################################################################
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()
+38 -43
View File
@@ -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()
-3
View File
@@ -1,3 +0,0 @@
configure_file("changelog.in" "changelog" ESCAPE_QUOTES @ONLY)
+34
View File
@@ -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)
@@ -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()
# <prefix>/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()

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 766 B

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 766 B

@@ -1,9 +1,14 @@
###############################################################################
# License: BSD Zero Clause License file
# Copyright:
# (C) 2008 - 2021 Alexander Shaduri <ashaduri@gmail.com>
###############################################################################
# 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
+8 -3
View File
@@ -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)
+9 -3
View File
@@ -4,7 +4,7 @@
# (C) 2021 Alexander Shaduri <ashaduri@gmail.com>
###############################################################################
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()