diff --git a/README.md b/README.md index 97efe0e7..0c3c43ab 100644 --- a/README.md +++ b/README.md @@ -132,11 +132,9 @@ For Emscripten, see https://developer.chrome.com/blog/wasm-debugging-2020 Installation, for *nix - 1. Set the COPYDIR variable in the shell to be where you installed Quake 3 - to. By default it will be /usr/local/games/quake3 if you haven't set it. - This is the path as used by the original Linux Q3 installer and subsequent - point releases. - 2. Run 'make copyfiles'. + 1. Set the CMAKE_INSTALL_PREFIX to your prefered installation directory. + By default it will be set to /opt/quake3/. + 2. ```cmake --install build```. It is also possible to cross compile for Windows under *nix using MinGW. Your distribution may have mingw32 packages available. On debian/Ubuntu, you need to diff --git a/cmake/basegame.cmake b/cmake/basegame.cmake index 3c01c79b..d2f040bf 100644 --- a/cmake/basegame.cmake +++ b/cmake/basegame.cmake @@ -148,18 +148,21 @@ if(BUILD_GAME_LIBRARIES) target_link_libraries( ${CGAME_MODULE_BINARY_BASEGAME} PRIVATE ${COMMON_LIBRARIES}) set_target_properties( ${CGAME_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${CGAME_MODULE_BINARY}) set_output_dirs( ${CGAME_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME}) + install(TARGETS ${CGAME_MODULE_BINARY_BASEGAME} LIBRARY DESTINATION ${BASEGAME}) add_library( ${GAME_MODULE_BINARY_BASEGAME} SHARED ${GAME_SOURCES_BASEGAME} ${GAME_BINARY_SOURCES}) target_compile_definitions( ${GAME_MODULE_BINARY_BASEGAME} PRIVATE QAGAME) target_link_libraries( ${GAME_MODULE_BINARY_BASEGAME} PRIVATE ${COMMON_LIBRARIES}) set_target_properties( ${GAME_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${GAME_MODULE_BINARY}) set_output_dirs( ${GAME_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME}) + install(TARGETS ${GAME_MODULE_BINARY_BASEGAME} LIBRARY DESTINATION ${BASEGAME}) add_library( ${UI_MODULE_BINARY_BASEGAME} SHARED ${UI_SOURCES_BASEGAME} ${UI_BINARY_SOURCES}) target_compile_definitions( ${UI_MODULE_BINARY_BASEGAME} PRIVATE UI) target_link_libraries( ${UI_MODULE_BINARY_BASEGAME} PRIVATE ${COMMON_LIBRARIES}) set_target_properties( ${UI_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${UI_MODULE_BINARY}) set_output_dirs( ${UI_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME}) + install(TARGETS ${UI_MODULE_BINARY_BASEGAME} LIBRARY DESTINATION ${BASEGAME}) endif() if(BUILD_GAME_QVMS) diff --git a/cmake/client.cmake b/cmake/client.cmake index 2af6b6fc..0d6e3aa2 100644 --- a/cmake/client.cmake +++ b/cmake/client.cmake @@ -113,3 +113,7 @@ endforeach() if(POST_CLIENT_CONFIGURE_FUNCTION) cmake_language(CALL ${POST_CLIENT_CONFIGURE_FUNCTION}) endif() + +install(TARGETS ${CLIENT_BINARY} + RUNTIME DESTINATION . + BUNDLE DESTINATION .) diff --git a/cmake/compilers/gnu.cmake b/cmake/compilers/gnu.cmake index cb2ef0ad..9b5714d2 100644 --- a/cmake/compilers/gnu.cmake +++ b/cmake/compilers/gnu.cmake @@ -16,3 +16,5 @@ add_compile_options(-Wall -Wimplicit add_compile_options(-Wno-strict-aliasing -Wno-format-zero-length -Wno-format-nonliteral) + +set(CMAKE_INSTALL_PREFIX /opt/quake3) diff --git a/cmake/missionpack.cmake b/cmake/missionpack.cmake index 0c1388e3..8320700e 100644 --- a/cmake/missionpack.cmake +++ b/cmake/missionpack.cmake @@ -36,18 +36,21 @@ if(BUILD_GAME_LIBRARIES) target_link_libraries( ${CGAME_MODULE_BINARY_MISSIONPACK} PRIVATE ${COMMON_LIBRARIES}) set_target_properties( ${CGAME_MODULE_BINARY_MISSIONPACK} PROPERTIES OUTPUT_NAME ${CGAME_MODULE_BINARY}) set_output_dirs( ${CGAME_MODULE_BINARY_MISSIONPACK} SUBDIRECTORY ${MISSIONPACK}) + install(TARGETS ${CGAME_MODULE_BINARY_MISSIONPACK} LIBRARY DESTINATION ${MISSIONPACK}) add_library( ${GAME_MODULE_BINARY_MISSIONPACK} SHARED ${GAME_SOURCES_MISSIONPACK} ${GAME_BINARY_SOURCES}) target_compile_definitions( ${GAME_MODULE_BINARY_MISSIONPACK} PRIVATE QAGAME MISSIONPACK) target_link_libraries( ${GAME_MODULE_BINARY_MISSIONPACK} PRIVATE ${COMMON_LIBRARIES}) set_target_properties( ${GAME_MODULE_BINARY_MISSIONPACK} PROPERTIES OUTPUT_NAME ${GAME_MODULE_BINARY}) set_output_dirs( ${GAME_MODULE_BINARY_MISSIONPACK} SUBDIRECTORY ${MISSIONPACK}) + install(TARGETS ${GAME_MODULE_BINARY_MISSIONPACK} LIBRARY DESTINATION ${MISSIONPACK}) add_library( ${UI_MODULE_BINARY_MISSIONPACK} SHARED ${UI_SOURCES_MISSIONPACK} ${UI_BINARY_SOURCES}) target_compile_definitions( ${UI_MODULE_BINARY_MISSIONPACK} PRIVATE UI MISSIONPACK) target_link_libraries( ${UI_MODULE_BINARY_MISSIONPACK} PRIVATE ${COMMON_LIBRARIES}) set_target_properties( ${UI_MODULE_BINARY_MISSIONPACK} PROPERTIES OUTPUT_NAME ${UI_MODULE_BINARY}) set_output_dirs( ${UI_MODULE_BINARY_MISSIONPACK} SUBDIRECTORY ${MISSIONPACK}) + install(TARGETS ${UI_MODULE_BINARY_MISSIONPACK} LIBRARY DESTINATION ${MISSIONPACK}) endif() if(BUILD_GAME_QVMS) diff --git a/cmake/renderer_gl1.cmake b/cmake/renderer_gl1.cmake index 2b8ebd5e..4f5abc00 100644 --- a/cmake/renderer_gl1.cmake +++ b/cmake/renderer_gl1.cmake @@ -59,4 +59,6 @@ if(USE_RENDERER_DLOPEN) target_link_options( ${RENDERER_GL1_BINARY} PRIVATE ${RENDERER_LINK_OPTIONS}) set_output_dirs(${RENDERER_GL1_BINARY}) + install(TARGETS ${RENDERER_GL1_BINARY} LIBRARY DESTINATION .) endif() + diff --git a/cmake/renderer_gl2.cmake b/cmake/renderer_gl2.cmake index 8b278bb1..10a6feb9 100644 --- a/cmake/renderer_gl2.cmake +++ b/cmake/renderer_gl2.cmake @@ -91,4 +91,6 @@ if(USE_RENDERER_DLOPEN) target_link_options( ${RENDERER_GL2_BINARY} PRIVATE ${RENDERER_LINK_OPTIONS}) set_output_dirs(${RENDERER_GL2_BINARY}) + install(TARGETS ${RENDERER_GL2_BINARY} LIBRARY DESTINATION .) endif() + diff --git a/cmake/server.cmake b/cmake/server.cmake index 5a06e42d..501d929d 100644 --- a/cmake/server.cmake +++ b/cmake/server.cmake @@ -52,3 +52,5 @@ set_output_dirs(${SERVER_BINARY}) if(POST_SERVER_CONFIGURE_FUNCTION) cmake_language(CALL ${POST_SERVER_CONFIGURE_FUNCTION}) endif() + +install(TARGETS ${SERVER_BINARY} RUNTIME DESTINATION .) diff --git a/cmake/utils/qvm_tools.cmake b/cmake/utils/qvm_tools.cmake index a5ba3f93..d8e6729c 100644 --- a/cmake/utils/qvm_tools.cmake +++ b/cmake/utils/qvm_tools.cmake @@ -82,4 +82,8 @@ function(add_qvm MODULE_NAME) string(REGEX REPLACE "[^A-Za-z0-9]" "_" TARGET_NAME ${MODULE_NAME}) add_custom_target(${TARGET_NAME} ALL DEPENDS ${QVM_FILE}) + + if(ARG_OUTPUT_DIRECTORY) + install(FILES ${QVM_FILE} DESTINATION ${ARG_OUTPUT_DIRECTORY}) + endif() endfunction()