From b685eee47899dfc9fdb065567b029f9c9061ec68 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Fri, 2 Apr 2021 23:11:12 +0300 Subject: [PATCH] Install desktop files and pixmaps from CMake --- cmake/platforms/unix.cmake | 33 +++++++++++++++++++++++---------- cmake/setup.cmake | 5 +++++ puzzle.desktop.in | 10 ++++++++++ 3 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 puzzle.desktop.in 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) - set_target_properties(${TARGET} PROPERTIES - OUTPUT_NAME ${NAME_PREFIX}${NAME}) + 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}) - 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}) + set_target_properties(${TARGET} PROPERTIES + OUTPUT_NAME ${binary_name}) + + 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