Polish 'make install' support a bit

In particular:
  * Instead of replicating icons in the repository, install from src/res/oc.ico
  * Pack the game data
  * Remove runclonk script, install clonk binary only into bin/
    (this will make Clonk not run for the moment because it does not find
    its game data, but I intend to change that with a followup patch soon).
Armin Burgmeier 2010-12-30 01:21:07 +01:00
parent 1121db7164
commit bcf61516b5
5 changed files with 42 additions and 15 deletions

View File

@ -1071,30 +1071,57 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY
############################################################################
# installation
############################################################################
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/clonk.desktop DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/clonk.desktop "Path=${CMAKE_INSTALL_PREFIX}/share/${C4PROJECT_DOMAIN}")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/runclonk "#!/bin/sh\n")
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/runclonk "cd ${CMAKE_INSTALL_PREFIX}/share/${C4PROJECT_DOMAIN}\n")
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/runclonk "clonk $*")
# Install the icon into share/icons/hicolor/48x48/apps/clonk.png. Do this by
# extracting the correct size from oc.ico. Currently this is layer 2 - let's
# hope that it stays this way.
# TODO: Check for convert at configure step?
install(CODE "
EXECUTE_PROCESS(COMMAND \"convert\" \"${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc.ico[2]\" \"${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps/clonk.png\" RESULT_VARIABLE CONVERT_RESULT)
IF(NOT \${CONVERT_RESULT} EQUAL 0)
MESSAGE(SEND_ERROR \"Creating icon failed\")
ENDIF()
")
install(DIRECTORY share/ DESTINATION share/)
install(DIRECTORY planet/ DESTINATION share/${C4PROJECT_DOMAIN}/)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/clonk.desktop DESTINATION share/applications)
# Remove previously installed data files
FILE(GLOB OC_INSTALLED_DATA_FILES "${CMAKE_INSTALL_PREFIX}/share/openclonk/*.c4?")
install(CODE "
FOREACH(CURRENT_FILE ${OC_INSTALLED_DATA_FILES})
FILE(REMOVE \${CURRENT_FILE})
ENDFOREACH()
")
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/clonk ${CMAKE_CURRENT_BINARY_DIR}/c4group ${CMAKE_CURRENT_BINARY_DIR}/runclonk DESTINATION bin/)
# Install new files
FILE(GLOB OC_DATA_FILES "${CMAKE_CURRENT_SOURCE_DIR}/planet/*.c4?")
install(DIRECTORY ${OC_DATA_FILES} DESTINATION share/openclonk)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/clonk.desktop DESTINATION share/applications)
# Pack them
install(CODE "
FOREACH(CURRENT_FILE ${OC_DATA_FILES})
GET_FILENAME_COMPONENT(CURRENT_FILENAME \"\${CURRENT_FILE}\" NAME)
MESSAGE(\"Packing \${CURRENT_FILENAME}...\")
EXECUTE_PROCESS(COMMAND \"${CMAKE_CURRENT_BINARY_DIR}/c4group\" \"${CMAKE_INSTALL_PREFIX}/share/openclonk/\${CURRENT_FILENAME}\" \"-p\" RESULT_VARIABLE C4GROUP_RESULT)
IF(NOT \${C4GROUP_RESULT} EQUAL 0)
MESSAGE(SEND_ERROR \"Packing ${CURRENT_FILENAME} failed\")
ENDIF()
ENDFOREACH()
")
# Install binaries
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/clonk ${CMAKE_CURRENT_BINARY_DIR}/c4group DESTINATION bin/)
############################################################################
# CPack support
############################################################################
set(CPACK_PACKAGE_NAME "${C4PROJECT_DOMAIN}")
set(CPACK_PACKAGE_NAME "openclonk")
set(CPACK_PACKAGE_VENDOR "${C4PROJECT_URL}")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenClonk - An game mix out of tactic, strategy and JnR")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenClonk - A game mix out of tactic, strategy and Jump & Run")
set(CPACK_PACKAGE_VERSION "${C4XVER1}.${C4XVER2}.${C4XVER3}")
set(CPACK_PACKAGE_VERSION_MAJOR "${C4XVER1}")
set(CPACK_PACKAGE_VERSION_MINOR "${C4XVER2}")
set(CPACK_PACKAGE_VERSION_PATCH "r${C4REVISION}")
set(CPACK_PACKAGE_FILE_NAME "openclonk${C4XVER1}.${C4XVER2}.${C4XVER3}")
set(CPACK_PACKAGE_VERSION_PATCH "${C4XVER3}")
set(CPACK_PACKAGE_FILE_NAME "openclonk-${C4XVER1}.${C4XVER2}.${C4XVER3}")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "openclonk-src-${C4XVER1}.${C4XVER2}.${C4XVER3}")
set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
# Somebody who uses Debian/Ubuntu should set this
@ -1102,4 +1129,4 @@ set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
set(CPACK_RPM_PACKAGE_REQUIRES "libc6, libgcc1, libx11, libXrandr, libXpm, libGLEW, libGL, libpng, libssl, libSDL-1.2, libSDL_mixer-1.2, gtk2, libjpeg, zlib")
include(CPack)
include(CPack)

View File

@ -3,7 +3,7 @@ Type=Application
Name=OpenClonk
Comment=An action-packed game of strategy, tactics, and skill.
Comment[de]=Ein actiongeladenes Taktikspiel.
GenericName=A multiplayer-action-tactic-skill game
GenericName=Multiplayer action, tactics and skill game
Icon=clonk
Exec=clonk
Categories=Game;ActionGame;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB