diff --git a/CMakeLists.txt b/CMakeLists.txt index 59c787ce4a..b272970925 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -211,6 +211,9 @@ endif() set_packaging_parameters() +# setup component categories for installer +set(APP_COMPONENT Runtime) + # add subdirectories for all targets if (NOT ANDROID) add_subdirectory(assignment-client) diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 18e5c190a6..f79c3528bf 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -10,23 +10,40 @@ # macro(GENERATE_INSTALLERS) - if (DEPLOY_PACKAGE AND WIN32) - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/package-bundle") - find_program(MAKENSIS_COMMAND makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\NSIS]) - if (NOT MAKENSIS_COMMAND) - message(FATAL_ERROR "The Nullsoft Scriptable Install Systems is required for generating packaged installers on Windows (http://nsis.sourceforge.net/)") - endif () - add_custom_target( - build-package ALL - DEPENDS interface assignment-client domain-server stack-manager - COMMAND set INSTALLER_SOURCE_DIR=${CMAKE_BINARY_DIR}/package-bundle - COMMAND set INSTALLER_NAME=${CMAKE_BINARY_DIR}/${INSTALLER_NAME} - COMMAND set INSTALLER_SCRIPTS_DIR=${CMAKE_SOURCE_DIR}/examples - COMMAND set INSTALLER_COMPANY=${INSTALLER_COMPANY} - COMMAND set INSTALLER_DIRECTORY=${INSTALLER_DIRECTORY} - COMMAND CMD /C "\"${MAKENSIS_COMMAND}\" ${CMAKE_SOURCE_DIR}/tools/nsis/release.nsi" - ) + include(CPackComponent) - set_target_properties(build-package PROPERTIES EXCLUDE_FROM_ALL TRUE FOLDER "Installer") + if (APPLE) + install(TARGETS ${CLIENT_TARGET} BUNDLE DESTINATION bin COMPONENT ${APP_COMPONENT}) + else () + install(TARGETS ${CLIENT_TARGET} RUNTIME DESTINATION bin COMPONENT ${APP_COMPONENT}) endif () + + cpack_add_component(${APP_COMPONENT} + DISPLAY_NAME "Applications" + Description "The High Fidelity Applications" + GROUP "Runtime" + ) + + cpack_add_component_group(Runtime) + + include(CPack) + # if (DEPLOY_PACKAGE AND WIN32) + # file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/package-bundle") + # find_program(MAKENSIS_COMMAND makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\NSIS]) + # if (NOT MAKENSIS_COMMAND) + # message(FATAL_ERROR "The Nullsoft Scriptable Install Systems is required for generating packaged installers on Windows (http://nsis.sourceforge.net/)") + # endif () + # add_custom_target( + # build-package ALL + # DEPENDS interface assignment-client domain-server stack-manager + # COMMAND set INSTALLER_SOURCE_DIR=${CMAKE_BINARY_DIR}/package-bundle + # COMMAND set INSTALLER_NAME=${CMAKE_BINARY_DIR}/${INSTALLER_NAME} + # COMMAND set INSTALLER_SCRIPTS_DIR=${CMAKE_SOURCE_DIR}/examples + # COMMAND set INSTALLER_COMPANY=${INSTALLER_COMPANY} + # COMMAND set INSTALLER_DIRECTORY=${INSTALLER_DIRECTORY} + # COMMAND CMD /C "\"${MAKENSIS_COMMAND}\" ${CMAKE_SOURCE_DIR}/tools/nsis/release.nsi" + # ) + # + # set_target_properties(build-package PROPERTIES EXCLUDE_FROM_ALL TRUE FOLDER "Installer") + # endif () endmacro() diff --git a/cmake/macros/PackageLibrariesForDeployment.cmake b/cmake/macros/PackageLibrariesForDeployment.cmake index 17b5d5f49d..44d609c064 100644 --- a/cmake/macros/PackageLibrariesForDeployment.cmake +++ b/cmake/macros/PackageLibrariesForDeployment.cmake @@ -1,25 +1,25 @@ -# +# # PackageLibrariesForDeployment.cmake # cmake/macros -# +# # Copyright 2015 High Fidelity, Inc. # Created by Stephen Birarda on February 17, 2014 # # Distributed under the Apache License, Version 2.0. # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -# +# macro(PACKAGE_LIBRARIES_FOR_DEPLOYMENT) - + if (WIN32) configure_file( - ${HIFI_CMAKE_DIR}/templates/FixupBundlePostBuild.cmake.in + ${HIFI_CMAKE_DIR}/templates/FixupBundlePostBuild.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FixupBundlePostBuild.cmake @ONLY ) - + set(PLUGIN_PATH "plugins") - + # add a post-build command to copy DLLs beside the executable add_custom_command( TARGET ${TARGET_NAME} @@ -29,31 +29,18 @@ macro(PACKAGE_LIBRARIES_FOR_DEPLOYMENT) -DBUNDLE_PLUGIN_DIR=$/${PLUGIN_PATH} -P ${CMAKE_CURRENT_BINARY_DIR}/FixupBundlePostBuild.cmake ) - + find_program(WINDEPLOYQT_COMMAND windeployqt PATHS ${QT_DIR}/bin NO_DEFAULT_PATH) - + if (NOT WINDEPLOYQT_COMMAND) message(FATAL_ERROR "Could not find windeployqt at ${QT_DIR}/bin. windeployqt is required.") endif () - + # add a post-build command to call windeployqt to copy Qt plugins add_custom_command( TARGET ${TARGET_NAME} POST_BUILD COMMAND CMD /C "SET PATH=%PATH%;${QT_DIR}/bin && ${WINDEPLOYQT_COMMAND} ${EXTRA_DEPLOY_OPTIONS} $<$,$,$>:--release> $" ) - elseif (DEFINED BUILD_BUNDLE AND BUILD_BUNDLE AND APPLE) - find_program(MACDEPLOYQT_COMMAND macdeployqt PATHS ${QT_DIR}/bin NO_DEFAULT_PATH) - - if (NOT MACDEPLOYQT_COMMAND) - message(FATAL_ERROR "Could not find macdeployqt at ${QT_DIR}/bin. macdeployqt is required.") - endif () - - # add a post-build command to call macdeployqt to copy Qt plugins - add_custom_command( - TARGET ${TARGET_NAME} - POST_BUILD - COMMAND ${MACDEPLOYQT_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${TARGET_NAME}.app -verbose 0 - ) endif () endmacro() diff --git a/cmake/macros/SetupHifiProject.cmake b/cmake/macros/SetupHifiProject.cmake index 212dbe6317..6c150b6c8d 100644 --- a/cmake/macros/SetupHifiProject.cmake +++ b/cmake/macros/SetupHifiProject.cmake @@ -22,11 +22,7 @@ macro(SETUP_HIFI_PROJECT) endif () endforeach() - if (DEFINED BUILD_BUNDLE AND BUILD_BUNDLE AND APPLE) - add_executable(${TARGET_NAME} MACOSX_BUNDLE ${TARGET_SRCS} ${AUTOMTC_SRC} ${AUTOSCRIBE_SHADER_LIB_SRC}) - else () - add_executable(${TARGET_NAME} ${TARGET_SRCS} ${AUTOMTC_SRC} ${AUTOSCRIBE_SHADER_LIB_SRC}) - endif() + add_executable(${TARGET_NAME} ${TARGET_SRCS} ${AUTOMTC_SRC} ${AUTOSCRIBE_SHADER_LIB_SRC}) # include the generated application version header target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/includes") diff --git a/console/CMakeLists.txt b/console/CMakeLists.txt index 490f59acc6..120f185c90 100644 --- a/console/CMakeLists.txt +++ b/console/CMakeLists.txt @@ -5,7 +5,7 @@ if (BUILD_TAGGED_BETA) endif() # add a target that will package the console -add_custom_target(${TARGET_NAME} +add_custom_target(${TARGET_NAME} ALL COMMAND npm run packager -- --out ${CMAKE_CURRENT_BINARY_DIR} ${BETA_OPTION} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) @@ -19,6 +19,6 @@ elseif (UNIX) set(PACKAGED_CONSOLE_FOLDER "server-console-linux-x64") endif () -set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE FOLDER "Installer") +install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGED_CONSOLE_FOLDER}/Server Console.app" DESTINATION bin COMPONENT ${APP_COMPONENT}) consolidate_installer_components() diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index d20e7dd71f..cc2faa2422 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -203,11 +203,8 @@ if (APPLE) target_link_libraries(${TARGET_NAME} ${OpenGL} ${AppKit}) - # install command for OS X bundle - INSTALL(TARGETS ${TARGET_NAME} - BUNDLE DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/install" COMPONENT Runtime - RUNTIME DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/install" COMPONENT Runtime - ) + # setup install of OS X interface bundle + install(TARGETS ${TARGET_NAME} BUNDLE DESTINATION bin COMPONENT ${APP_COMPONENT}) else (APPLE) # copy the resources files beside the executable add_custom_command(TARGET ${TARGET_NAME} POST_BUILD @@ -219,11 +216,12 @@ else (APPLE) $/scripts ) + # setup install of interface target + install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION bin COMPONENT ${APP_COMPONENT}) + # link target to external libraries if (WIN32) target_link_libraries(${TARGET_NAME} wsock32.lib Winmm.lib) - else (WIN32) - # Nothing else required on linux apparently endif() endif (APPLE)