aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Marakasov <amdmi3@amdmi3.ru>2021-04-02 23:11:12 +0300
committerSimon Tatham <anakin@pobox.com>2021-04-03 10:35:14 +0100
commitb685eee47899dfc9fdb065567b029f9c9061ec68 (patch)
tree8f6bd0a961f6bd0b5a0ae868b8708bc179ba6c72
parentf6434e84964d840160eeff518bc812392c13160f (diff)
downloadpuzzles-b685eee47899dfc9fdb065567b029f9c9061ec68.zip
puzzles-b685eee47899dfc9fdb065567b029f9c9061ec68.tar.gz
puzzles-b685eee47899dfc9fdb065567b029f9c9061ec68.tar.bz2
puzzles-b685eee47899dfc9fdb065567b029f9c9061ec68.tar.xz
Install desktop files and pixmaps from CMake
-rw-r--r--cmake/platforms/unix.cmake31
-rw-r--r--cmake/setup.cmake5
-rw-r--r--puzzle.desktop.in10
3 files changed, 37 insertions, 9 deletions
diff --git a/cmake/platforms/unix.cmake b/cmake/platforms/unix.cmake
index 3398b9d..6cbcbe4 100644
--- a/cmake/platforms/unix.cmake
+++ b/cmake/platforms/unix.cmake
@@ -64,17 +64,30 @@ function(get_platform_puzzle_extra_source_files OUTVAR NAME)
endfunction()
function(set_platform_puzzle_target_properties NAME TARGET)
+ get_target_property(official ${TARGET} official)
+ get_target_property(exename ${TARGET} exename)
+ get_target_property(displayname ${TARGET} displayname)
+ get_target_property(description ${TARGET} description)
+ set(binary_name ${NAME_PREFIX}${NAME})
+
set_target_properties(${TARGET} PROPERTIES
- OUTPUT_NAME ${NAME_PREFIX}${NAME})
+ OUTPUT_NAME ${binary_name})
- if(CMAKE_VERSION VERSION_LESS 3.14)
- # CMake 3.13 and earlier required an explicit install destination.
- install(TARGETS ${TARGET} RUNTIME DESTINATION bin)
- else()
- # 3.14 and above selects a sensible default, which we should avoid
- # overriding here so that end users can override it using
- # CMAKE_INSTALL_BINDIR.
- install(TARGETS ${TARGET})
+ if(${official})
+ if(CMAKE_VERSION VERSION_LESS 3.14)
+ # CMake 3.13 and earlier required an explicit install destination.
+ install(TARGETS ${TARGET} RUNTIME DESTINATION bin)
+ else()
+ # 3.14 and above selects a sensible default, which we should avoid
+ # overriding here so that end users can override it using
+ # CMAKE_INSTALL_BINDIR.
+ install(TARGETS ${TARGET})
+ endif()
+ configure_file(${CMAKE_SOURCE_DIR}/puzzle.desktop.in ${binary_name}.desktop)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/icons/${NAME}-48d24.png
+ DESTINATION share/pixmaps OPTIONAL RENAME ${binary_name}-48d24.png)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${binary_name}.desktop
+ DESTINATION share/applications)
endif()
endfunction()
diff --git a/cmake/setup.cmake b/cmake/setup.cmake
index 8afa455..d9c7663 100644
--- a/cmake/setup.cmake
+++ b/cmake/setup.cmake
@@ -80,6 +80,11 @@ function(puzzle NAME)
add_executable(${EXENAME} ${NAME}.c ${extra_files})
target_link_libraries(${EXENAME}
common ${platform_gui_libs} ${platform_libs})
+ set_property(TARGET ${EXENAME} PROPERTY exename ${EXENAME})
+ set_property(TARGET ${EXENAME} PROPERTY displayname ${OPT_DISPLAYNAME})
+ set_property(TARGET ${EXENAME} PROPERTY description ${OPT_DESCRIPTION})
+ set_property(TARGET ${EXENAME} PROPERTY objective ${OPT_OBJECTIVE})
+ set_property(TARGET ${EXENAME} PROPERTY official ${official})
set_platform_puzzle_target_properties(${NAME} ${EXENAME})
endif()
endfunction()
diff --git a/puzzle.desktop.in b/puzzle.desktop.in
new file mode 100644
index 0000000..fe7e490
--- /dev/null
+++ b/puzzle.desktop.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=${displayname}
+Comment=${description}
+Exec=${binary_name}
+Icon=${binary_name}-48d24
+StartupNotify=false
+Categories=Game;LogicGame;
+Terminal=false