diff --git a/cmake/box2d.cmake b/cmake/box2d.cmake index 728390fec..ef50c6bb9 100644 --- a/cmake/box2d.cmake +++ b/cmake/box2d.cmake @@ -1,85 +1,87 @@ set(QML_BOX2D_MODULE "auto" CACHE STRING "Policy for qml-box2d module [auto|submodule|system|disabled]") if (${QML_BOX2D_MODULE} STREQUAL "disabled") # disable all activities depending on qml-box2d set(_disabled_activities "balancebox,land_safe,submarine") message(STATUS "Disabling qml-box2d module and depending activities: ${_disabled_activities}") else() include(qt_helper) getQtQmlPath(_qt_qml_system_path) set (_box2d_system_dir "${_qt_qml_system_path}/Box2D.2.0") if (${QML_BOX2D_MODULE} STREQUAL "submodule") message(STATUS "Building qml-box2d module from submodule") set(_need_box2d_submodule "TRUE") else() # try to find module in system scope find_library(QML_BOX2D_LIBRARY NAMES Box2D libBox2D PATHS ${_box2d_system_dir} NO_DEFAULT_PATH) if (QML_BOX2D_LIBRARY) message(STATUS "Using system qml-box2d plugin at ${QML_BOX2D_LIBRARY}") # for packaging builds, copy the module manually to the correct location if(SAILFISHOS) file(COPY ${_box2d_system_dir}/qmldir ${QML_BOX2D_LIBRARY} DESTINATION share/harbour-gcompris-qt/lib/qml/Box2D.2.0) elseif(ANDROID) file(COPY ${_box2d_system_dir}/qmldir ${QML_BOX2D_LIBRARY} DESTINATION lib/qml/Box2D.2.0) endif() # FIXME: add others as needed else() if (${QML_BOX2D_MODULE} STREQUAL "auto") message(STATUS "Did not find the qml-box2d module in system scope, falling back to submodule build ...") set (_need_box2d_submodule "TRUE") else() message(FATAL_ERROR "Did not find the qml-box2d module in system scope and submodule build was not requested. Can't continue!") endif() endif() endif() if (_need_box2d_submodule) # build qml-box2d ourselves from submodule include(ExternalProject) get_property(_qmake_program TARGET ${Qt5Core_QMAKE_EXECUTABLE} PROPERTY IMPORT_LOCATION) set (_box2d_source_dir ${CMAKE_CURRENT_SOURCE_DIR}/external/qml-box2d) if(WIN32) set (_box2d_library_dir "release/") set (_box2d_library_file "Box2D.dll") elseif(CMAKE_HOST_APPLE) set (_box2d_library_dir "") set (_box2d_library_file "libBox2D.dylib") else() set (_box2d_library_dir "") set (_box2d_library_file "libBox2D.so") endif() set (_box2d_install_dir ${CMAKE_CURRENT_BINARY_DIR}/lib/qml/Box2D.2.0) # make sure submodule is up2date find_package(Git) if(GIT_FOUND) execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) endif() # for visual studio, we need to create a vcxproj if(WIN32 AND NOT MINGW) set(_qmake_options -spec win32-msvc -tp vc) else() set(_qmake_options "") endif() ExternalProject_Add(qml_box2d DOWNLOAD_COMMAND "" SOURCE_DIR ${_box2d_source_dir} CONFIGURE_COMMAND ${_qmake_program} ${_qmake_options} ${_box2d_source_dir}/box2d.pro BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} INSTALL_DIR ${_box2d_install_dir} INSTALL_COMMAND cp ${_box2d_library_dir}${_box2d_library_file} ${_box2d_source_dir}/qmldir ${_box2d_install_dir} ) add_library(qml-box2d SHARED IMPORTED) set_target_properties(qml-box2d PROPERTIES IMPORTED_LOCATION ${_box2d_install_dir}/${_box2d_library_file}) if(SAILFISHOS) install(DIRECTORY ${_box2d_install_dir} DESTINATION share/harbour-gcompris-qt/lib/qml) + elseif(APPLE) + install(DIRECTORY ${_box2d_install_dir} DESTINATION gcompris-qt.app/Contents/lib/qml) else() install(DIRECTORY ${_box2d_install_dir} DESTINATION lib/qml) endif() endif() endif() diff --git a/cmake/qt_helper.cmake b/cmake/qt_helper.cmake index 9e005e906..81696e56c 100644 --- a/cmake/qt_helper.cmake +++ b/cmake/qt_helper.cmake @@ -1,102 +1,106 @@ function(getQtPluginPaths _plugin_target _absolute_path _subdir _file) getQtPluginsPath(_qt_plugins_path) get_target_property(_plugin_path ${_plugin_target} LOCATION) if(NOT _plugin_path) message(FATAL_ERROR "Could not find ${_plugin_target} plugin path") endif() get_filename_component(_plugin_file ${_plugin_path} NAME) get_filename_component(_plugin_dir ${_plugin_path} PATH) file(RELATIVE_PATH _plugin_subdir ${_qt_plugins_path} ${_plugin_dir}) set(${_absolute_path} ${_plugin_path} PARENT_SCOPE) set(${_subdir} ${_plugin_subdir} PARENT_SCOPE) set(${_file} ${_plugin_file} PARENT_SCOPE) endfunction() # Determine Qt5's plugin-path deriving from lib-dir and trying different # locations corresponding to different directory layouts, e.g.: # # Debian: # /usr/lib/i386-linux-gnu/libQt5Qml.so.5.4.1 # /usr/lib/i386-linux-gnu/qt5/plugins/ # Opensuse: # /usr/lib64/libQt5Multimedia.so.5 # /usr/lib64/qt5/plugins/ # Qt installer: # /opt/Qt5.5.1/5.5/gcc/lib/libQt5Qml.so.5.5.1 # /opt/Qt5.5.1/5.5/gcc/plugins/ # # The qml/-dir is always a sibling of the plugins/ dir. function(getQtPluginsPath _path) get_target_property(_lib_file Qt5::Qml LOCATION) get_filename_component(_lib_dir ${_lib_file} PATH) # try $_lib_dir/qt5/plugins (Debian/Opensuse) set(_plugin_root ${_lib_dir}/qt5/plugins) if (NOT IS_DIRECTORY ${_plugin_root}) # try $_lib_dir/../plugins (Qt installer) get_filename_component(_lib_dir_base ${_lib_dir} PATH) - set(_plugin_root ${_lib_dir_base}/plugins) + if(APPLE) + set(_plugin_root ${_lib_dir_base}/../plugins) + else() + set(_plugin_root ${_lib_dir_base}/plugins) + endif() endif() set(${_path} ${_plugin_root} PARENT_SCOPE) endfunction() function(getQtQmlPath _path) getQtPluginsPath(_qt_plugins_path) get_filename_component(_root ${_qt_plugins_path} PATH) set(${_path} ${_root}/qml PARENT_SCOPE) endfunction() function(installQtPlugin _plugin _dest_dir _lib) getQtPluginPaths(${_plugin} _absolute_path _plugin_subdir _plugin_file) #needed to build with msys2 if(MINGW) string(REGEX REPLACE "share/qt5/" "" _plugin_subdir ${_plugin_subdir}) endif() install(FILES ${_absolute_path} DESTINATION ${_dest_dir}/${_plugin_subdir}) set(_lib "\${CMAKE_INSTALL_PREFIX}/${_dest_dir}/${_plugin_subdir}/${_plugin_file}" PARENT_SCOPE) endfunction() function(installQtPlugin2 _plugin _dest_dir _lib ) get_filename_component(_plugin_file ${_plugin} NAME) set(_ext ${CMAKE_SHARED_LIBRARY_SUFFIX}) get_filename_component(_plugin_subdir ${_plugin} PATH) get_filename_component(_plugin_subdir_root ${_plugin_subdir} PATH) getQtPluginsPath(_qt_plugin_path) install(DIRECTORY ${_qt_plugin_path}/${_plugin_subdir} DESTINATION ${_dest_dir}/${_plugin_subdir_root}) if(CMAKE_HOST_WIN32) set(_dbg_suffix "d") else() set(_dbg_suffix "_debug") endif() set(_install_path \${CMAKE_INSTALL_PREFIX}/${_dest_dir}/${_plugin_subdir}) if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_ext}\")") set(_plugin_file ${_plugin_file}${_dbg_suffix}${_ext}) else() install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_dbg_suffix}${_ext}\")") set(_plugin_file ${_plugin_file}${_ext}) endif() set(_lib "${_install_path}/${_plugin_file}" PARENT_SCOPE) endfunction() function(installQmlPlugin _plugin _dest_dir _lib ) get_filename_component(_plugin_file ${_plugin} NAME) set(_ext ${CMAKE_SHARED_LIBRARY_SUFFIX}) get_filename_component(_qml_subdir ${_plugin} PATH) get_filename_component(_qml_subdir_root ${_qml_subdir} PATH) getQtQmlPath(_qt_qml_path) install(DIRECTORY ${_qt_qml_path}/${_qml_subdir} DESTINATION ${_dest_dir}/${_qml_subdir_root}) if(CMAKE_HOST_WIN32) set(_dbg_suffix "d") else() set(_dbg_suffix "_debug") endif() set(_install_path \${CMAKE_INSTALL_PREFIX}/${_dest_dir}/${_qml_subdir}) if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_ext}\")") set(_plugin_file ${_plugin_file}${_dbg_suffix}${_ext}) else() install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_dbg_suffix}${_ext}\")") set(_plugin_file ${_plugin_file}${_ext}) endif() set(_lib "${_install_path}/${_plugin_file}" PARENT_SCOPE) endfunction() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 827c45dda..1a214db68 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,309 +1,318 @@ include(qt_helper) configure_file(config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY) if(WITH_KIOSK_MODE) add_definitions(-DWITH_KIOSK_MODE) endif() if(SAILFISHOS) add_definitions(-DSAILFISHOS) endif() set(gcompris_SRCS ActivityInfo.cpp ActivityInfo.h ActivityInfoTree.cpp ActivityInfoTree.h ApplicationInfo.cpp ApplicationInfo.h ApplicationSettings.cpp ApplicationSettings.h File.cpp File.h Directory.cpp Directory.h DownloadManager.cpp DownloadManager.h GComprisPlugin.cpp GComprisPlugin.h main.cpp config.h.in synth/ADSRenvelope.cpp synth/ADSRenvelope.h synth/GSynth.cpp synth/GSynth.h synth/linearSynthesis.cpp synth/linearSynthesis.h synth/modulation.cpp synth/modulation.h synth/generator.cpp synth/generator.h synth/preset.h synth/preset.cpp synth/waveform.cpp synth/waveform.h ) if(ANDROID) list(APPEND gcompris_SRCS ApplicationAndroid.cpp) else() list(APPEND gcompris_SRCS ApplicationSettingsDefault.cpp ApplicationInfoDefault.cpp) endif() # Resources set(GCOMPRIS_RESOURCES "${PROJECT_SOURCE_DIR}/installer") if(CMAKE_HOST_WIN32) set(gcompris_icon GCompris.ico) set(gcompris_RES ${GCOMPRIS_RESOURCES}/${gcompris_icon} GCompris.rc ) elseif(CMAKE_HOST_APPLE) set(gcompris_icon GCompris.icns) set(gcompris_RES ${GCOMPRIS_RESOURCES}/${gcompris_icon}) set_source_files_properties(${gcompris_RES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") endif() set(used_qt_modules Qt5::Qml Qt5::Quick Qt5::Gui Qt5::Multimedia Qt5::Core Qt5::Svg Qt5::Xml Qt5::XmlPatterns Qt5::Sensors) if(ANDROID) add_library(${GCOMPRIS_EXECUTABLE_NAME} SHARED ${gcompris_SRCS}) set(used_qt_modules ${used_qt_modules} Qt5::AndroidExtras) elseif(CMAKE_HOST_APPLE) add_executable(${GCOMPRIS_EXECUTABLE_NAME} MACOSX_BUNDLE ${gcompris_SRCS} ${gcompris_RES}) elseif(CMAKE_HOST_WIN32) add_executable(${GCOMPRIS_EXECUTABLE_NAME} WIN32 ${gcompris_SRCS} ${gcompris_RES}) elseif(SAILFISHOS) add_executable(${GCOMPRIS_EXECUTABLE_NAME} ${gcompris_SRCS} ${gcompris_RES}) set(used_qt_modules ${used_qt_modules} Qt5::Widgets) else() add_executable(${GCOMPRIS_EXECUTABLE_NAME} ${gcompris_SRCS} ${gcompris_RES}) endif() # only build the lib for testing purpose if(BUILD_TESTING) add_library(gcompris_core SHARED ${gcompris_SRCS}) target_link_libraries(gcompris_core ${used_qt_modules}) endif() target_link_libraries(${GCOMPRIS_EXECUTABLE_NAME} ${used_qt_modules}) GCOMPRIS_ADD_RCC(core *.qml *.js resource/*.${COMPRESSED_AUDIO} resource/*.gif resource/*.png resource/*.svg resource/bonus/* resource/sounds/* resource/fonts/* qmldir COPYING) # Installation # ============ install(TARGETS ${GCOMPRIS_EXECUTABLE_NAME} ARCHIVE DESTINATION bin RUNTIME DESTINATION bin LIBRARY DESTINATION lib BUNDLE DESTINATION .) if(BUILD_STANDALONE) # Qt plugins to install set(_qt_plugins "") if(NOT SAILFISHOS) list(APPEND _qt_plugins Qt5::QJpegPlugin) endif() if(APPLE) - list(APPEND _qt_plugins Qt5::QTgaPlugin Qt5::QTiffPlugin) + list(APPEND _qt_plugins Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QCocoaIntegrationPlugin) elseif(WIN32) list(APPEND _qt_plugins Qt5::QWindowsIntegrationPlugin Qt5::QWindowsAudioPlugin Qt5::AudioCaptureServicePlugin Qt5::DSServicePlugin) elseif(UNIX AND NOT ANDROID AND NOT SAILFISHOS) list(APPEND _qt_plugins Qt5::QXcbIntegrationPlugin Qt5::QXcbEglIntegrationPlugin Qt5::QXcbGlxIntegrationPlugin Qt5::QAlsaPlugin Qt5::QPulseAudioPlugin) endif() list(APPEND _qt_plugins Qt5::genericSensorPlugin Qt5::QtSensorGesturePlugin Qt5::QShakeSensorGesturePlugin) # Qml plugins to install if(WIN32) set(_lib_prefix "") else() set(_lib_prefix "lib") endif() set(_qt_plugins2 imageformats/${_lib_prefix}qsvg) if(UNIX AND NOT ANDROID AND NOT APPLE AND NOT SAILFISHOS) list(APPEND _qt_plugins2 mediaservice/${_lib_prefix}gstaudiodecoder mediaservice/${_lib_prefix}gstcamerabin mediaservice/${_lib_prefix}gstmediacapture mediaservice/${_lib_prefix}gstmediaplayer) elseif(APPLE) - list(APPEND _qt_plugins2 mediaservice/${_lib_prefix}qavfmediaplayer + list(APPEND _qt_plugins2 audio/${_lib_prefix}qtaudio_coreaudio + mediaservice/${_lib_prefix}qavfmediaplayer mediaservice/${_lib_prefix}qtmedia_audioengine mediaservice/${_lib_prefix}qavfcamera) endif() set(_qml_plugins + QtGraphicalEffects/${_lib_prefix}qtgraphicaleffectsplugin + QtGraphicalEffects/private/${_lib_prefix}qtgraphicaleffectsprivate QtQuick/Window.2/${_lib_prefix}windowplugin QtQuick/Particles.2/${_lib_prefix}particlesplugin QtQuick.2/${_lib_prefix}qtquick2plugin QtMultimedia/${_lib_prefix}declarative_multimedia QtSensors/${_lib_prefix}declarative_sensors) if(NOT SAILFISHOS) list(APPEND _qml_plugins QtQuick/Controls/${_lib_prefix}qtquickcontrolsplugin QtQuick/Layouts/${_lib_prefix}qquicklayoutsplugin) endif() set(GCOMPRIS_OTHER_LIBS) if(APPLE) set(_app gcompris-qt.app) set(_qtconf_destdir ${_app}/Contents/Resources) set(_qt_plugins_destdir ${_app}/Contents/plugins) set(_qt_qml_destdir ${_app}/Contents/qml) set(GCOMPRIS_BUNDLE "\${CMAKE_INSTALL_PREFIX}/${_app}") set_target_properties(gcompris-qt PROPERTIES MACOSX_BUNDLE_INFO_STRING "GCompris, Educational game for children 2 to 10" MACOSX_BUNDLE_ICON_FILE "${gcompris_icon}" MACOSX_BUNDLE_GUI_IDENTIFIER "net.gcompris" MACOSX_BUNDLE_LONG_VERSION_STRING "${GCOMPRIS_MAJOR_VERSION}.${GCOMPRIS_MINOR_VERSION}.${GCOMPRIS_PATCH_VERSION}" MACOSX_BUNDLE_BUNDLE_NAME "gcompris-qt" MACOSX_BUNDLE_SHORT_VERSION_STRING "${GCOMPRIS_VERSION}" MACOSX_BUNDLE_BUNDLE_VERSION "${GCOMPRIS_VERSION}" - MACOSX_BUNDLE_COPYRIGHT "GPL License, Copyright 2000-2015 Bruno Coudoin and Others.") + MACOSX_BUNDLE_COPYRIGHT "GPL License, Copyright 2000-2019 Timothee Giet and Others.") set_source_files_properties(${GCOMPRIS_RESOURCES}/${gcompris_icon} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") else() set(_qtconf_destdir bin) set(_qt_plugins_destdir bin/plugins) set(_qt_qml_destdir bin/qml) if(CMAKE_HOST_WIN32) set(GCOMPRIS_BUNDLE "\${CMAKE_INSTALL_PREFIX}/bin/${GCOMPRIS_EXECUTABLE_NAME}.exe") else() set(GCOMPRIS_BUNDLE "\${CMAKE_INSTALL_PREFIX}/bin/${GCOMPRIS_EXECUTABLE_NAME}") endif() endif() # install qt.conf file install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/qt.conf DESTINATION ${_qtconf_destdir}) # install qt plugins foreach(_plugin ${_qt_plugins}) installQtPlugin(${_plugin} ${_qt_plugins_destdir} _lib) list(APPEND GCOMPRIS_OTHER_LIBS ${_lib}) endforeach() foreach(_plugin ${_qt_plugins2}) - installQtPlugin2(${_plugin} ${_qt_plugins_destdir} _lib) + if(APPLE) + installQtPlugin2(${_plugin} ${_qt_plugins_destdir}/../Plugins _lib) + else() + installQtPlugin2(${_plugin} ${_qt_plugins_destdir} _lib) + endif() list(APPEND GCOMPRIS_OTHER_LIBS ${_lib}) endforeach() # install qml plugins foreach(_plugin ${_qml_plugins}) installQmlPlugin(${_plugin} ${_qt_qml_destdir} _lib) list(APPEND GCOMPRIS_OTHER_LIBS ${_lib}) endforeach() - # install QtGraphicalEffects (which is not a lib but only qml files) - set(_qml_subdir QtGraphicalEffects) - getQtQmlPath(_qt_qml_path) - install(DIRECTORY ${_qt_qml_path}/QtGraphicalEffects DESTINATION ${_qt_qml_destdir}) + ## install QtGraphicalEffects (which is not a lib but only qml files) + # BUT, actually there are some libs in it, and this does not work on APPLE. Moved to _qml_plugins instead + # + #set(_qml_subdir QtGraphicalEffects) + #getQtQmlPath(_qt_qml_path) + #install(DIRECTORY ${_qt_qml_path}/QtGraphicalEffects DESTINATION ${_qt_qml_destdir}) # Fix for Linux 'make package' that fails to link with libicu if(UNIX AND NOT APPLE AND NOT SAILFISHOS AND NOT ANDROID) add_library( libicudata SHARED IMPORTED ) FILE(GLOB LIBICUDATA_SO "${Qt5_DIR}/../../libicudata.so.[0-9][0-9]") if ("${LIBICUDATA_SO}" STREQUAL "") FILE(GLOB LIBICUDATA_SO "/usr/lib/*/libicudata.so.[0-9][0-9]") endif() set_target_properties( libicudata PROPERTIES IMPORTED_LOCATION ${LIBICUDATA_SO} ) add_library( libicui18n SHARED IMPORTED ) FILE(GLOB LIBICUI18N_SO "${Qt5_DIR}/../../libicui18n.so.[0-9][0-9]") if ("${LIBICUI18N_SO}" STREQUAL "") FILE(GLOB LIBICUI18N_SO "/usr/lib/*/libicui18n.so.[0-9][0-9]") endif() set_target_properties( libicui18n PROPERTIES IMPORTED_LOCATION ${LIBICUI18N_SO} ) add_library( libicuuc SHARED IMPORTED ) FILE(GLOB LIBICUUC_SO "${Qt5_DIR}/../../libicuuc.so.[0-9][0-9]") if ("${LIBICUUC_SO}" STREQUAL "") FILE(GLOB LIBICUUC_SO "/usr/lib/*/libicuuc.so.[0-9][0-9]") endif() set_target_properties( libicuuc PROPERTIES IMPORTED_LOCATION ${LIBICUUC_SO} ) TARGET_LINK_LIBRARIES(${GCOMPRIS_EXECUTABLE_NAME} libicudata libicui18n libicuuc) endif() endif(BUILD_STANDALONE) # Hack: do not fixup Qt and Qml plugins on Windows because fixup_bundle takes ages (cmake bug ?) -> Johnny : we need this even if it takes time because some required dependencies are pulled here #if(WIN32) set(GCOMPRIS_OTHER_LIBS "") endif() # install fixup_bundle script to resolve and fixup runtime dependencies if(BUILD_STANDALONE AND NOT ANDROID) configure_file(${CMAKE_SOURCE_DIR}/cmake/FixBundle.cmake.in FixBundle.cmake) install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake) # install a startup script for linux bundle if(UNIX AND NOT APPLE AND NOT SAILFISHOS) install(PROGRAMS ../../tools/gcompris-qt.sh DESTINATION bin) endif() endif() if(WIN32 AND NOT MINGW) # install libEGL.dll, libGLESv2.dll, d3dcompiler_47.dll from Qt installation. Not sure if there is a clean way to get them... # Qt5_Dir is like C:/Qt/Qt5.5.1/5.5/mingw492_32/lib/cmake/Qt5 install(FILES ${Qt5_DIR}/../../../bin/libEGL.dll DESTINATION bin) install(FILES ${Qt5_DIR}/../../../bin/libGLESv2.dll DESTINATION bin) install(FILES ${Qt5_DIR}/../../../bin/d3dcompiler_47.dll DESTINATION bin) target_link_libraries(${GCOMPRIS_EXECUTABLE_NAME} ${Qt5_DIR}/../../libEGL.lib) target_link_libraries(${GCOMPRIS_EXECUTABLE_NAME} ${Qt5_DIR}/../../libGLESv2.lib) install(FILES ${Qt5_DIR}/../../../bin/opengl32sw.dll DESTINATION bin) # CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS contains visual c++ libraries install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin) endif() # Packaging # ========= set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "GCompris is a high quality educational software suite, including a large number of activities for children aged 2 to 10.") set(CPACK_PACKAGE_VERSION_MAJOR ${GCOMPRIS_MAJOR_VERSION}) set(CPACK_PACKAGE_VERSION_MINOR ${GCOMPRIS_MINOR_VERSION}) set(CPACK_PACKAGE_VERSION_PATCH ${GCOMPRIS_PATCH_VERSION}) set(CPACK_PACKAGE_VERSION ${GCOMPRIS_VERSION}) set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING") set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README") if(WIN32) set(CPACK_PACKAGE_INSTALL_DIRECTORY "${GCOMPRIS_EXECUTABLE_NAME}-Qt") set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${GCOMPRIS_EXECUTABLE_NAME}-Qt") set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/installer\\\\gcompris-header.bmp") set(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/installer\\\\GCompris-install.ico") set(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/installer\\\\GCompris-uninstall.ico") set(CPACK_NSIS_EXECUTABLES_DIRECTORY "bin") set(CPACK_PACKAGE_EXECUTABLES "${GCOMPRIS_EXECUTABLE_NAME};GCompris") set(CPACK_CREATE_DESKTOP_LINKS "${GCOMPRIS_EXECUTABLE_NAME};GCompris") set(CPACK_NSIS_URL_INFO_ABOUT "https:\\\\\\\\gcompris.net") set(CPACK_NSIS_DISPLAY_NAME "GCompris Educational Software") set(CPACK_NSIS_MUI_FINISHPAGE_RUN "${GCOMPRIS_EXECUTABLE_NAME}") set(CPACK_PACKAGE_VENDOR "GCompris team") else(WIN32) set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/GCompris64.png") endif() if(APPLE) set(CPACK_GENERATOR "DragNDrop") set(CPACK_DMG_DS_STORE "${GCOMPRIS_RESOURCES}/dmg_DS_Store") set(CPACK_DMG_BACKGROUND_IMAGE "${GCOMPRIS_RESOURCES}/dmg_background.png") elseif(WIN32) set(CPACK_GENERATOR "NSIS") elseif(SAILFISHOS) configure_file(${PROJECT_SOURCE_DIR}/platforms/sailfishOS/harbour-gcompris-qt.spec.cmake ${CMAKE_BINARY_DIR}/harbour-gcompris-qt.spec @ONLY) install(FILES ${PROJECT_SOURCE_DIR}/platforms/sailfishOS/harbour-gcompris-qt.desktop DESTINATION share/applications) install(FILES ${PROJECT_SOURCE_DIR}/platforms/sailfishOS/harbour-gcompris-qt.png DESTINATION share/icons/hicolor/86x86/apps) set(CPACK_RPM_PACKAGE_SUMMARY "gcompris-qt") # BUILD_ARCH is either armv7hl or i486 set(CPACK_RPM_PACKAGE_ARCHITECTURE "${BUILD_ARCH}") set(CPACK_RPM_PACKAGE_NAME "${GCOMPRIS_EXECUTABLE_NAME}") set(CPACK_RPM_PACKAGE_VERSION "${GCOMPRIS_VERSION}") set(CPACK_RPM_PACKAGE_LICENSED "GPLv3") set(CPACK_RPM_PACKAGE_URL "https://www.gcompris.org") set(CPACK_RPM_PACKAGE_DESCRIPTION "GCompris is a high quality educational software suite comprising of numerous activities for children aged 2 to 10.") set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_BINARY_DIR}/harbour-gcompris-qt.spec") set(CMAKE_INSTALL_PREFIX "/usr") set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") set(CPACK_GENERATOR "RPM") else() set(CPACK_GENERATOR "STGZ") endif() include(CPack)