Warning, /education/gcompris/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 #=============================================================================
0002 # SPDX-FileCopyrightText: 2014 Johnny Jazeix <jazeix@gmail.com>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005 #=============================================================================
0006 cmake_minimum_required(VERSION 3.7)
0007 
0008 project(gcompris-qt C CXX)
0009 
0010 # get all the redist dll needed for windows when compiling with vc
0011 set(CMAKE_INSTALL_UCRT_LIBRARIES 1)
0012 include(InstallRequiredSystemLibraries)
0013 
0014 # Set c++11 support
0015 set(CMAKE_CXX_STANDARD 11)
0016 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0017 set(CMAKE_CXX_EXTENSIONS OFF)
0018 
0019 # enable qml debugging for DEBUG builds:
0020 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG")
0021 
0022 set(GCOMPRIS_MAJOR_VERSION 3)
0023 set(GCOMPRIS_MINOR_VERSION 1)
0024 set(GCOMPRIS_PATCH_VERSION 0)
0025 
0026 if("${CMAKE_ANDROID_ARCH}" STREQUAL "arm64")
0027   set(GCOMPRIS_PATCH_VERSION 1)
0028 endif()
0029 
0030 # Set the BUILD_DATE
0031 string(TIMESTAMP BUILD_DATE %Y%m)
0032 
0033 # cmake modules setup
0034 find_package(ECM 1.4.0 QUIET NO_MODULE)
0035 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/)
0036 set(CMAKE_PREFIX_PATH "${Qt5_DIR}/")
0037 
0038 # KDE po to qm tools
0039 if(ECM_FOUND)
0040   include(kdeFetchTranslation)
0041   include(ECMAddTests)
0042 
0043   option(BUILD_TESTING "Build and enable unit tests" OFF)
0044   include(ECMCoverageOption)
0045 endif()
0046 
0047 # add tools (cppcheck, clang-tidy...) if build on testing mode only
0048 # (slower compilation)
0049 if(BUILD_TESTING)
0050   include(CodeQualityUtils)
0051 endif()
0052 
0053 set(QT_REQUIRED_VERSION 5.12.0)
0054 
0055 if(CMAKE_SYSTEM_NAME STREQUAL Android)
0056   find_package(ECM)
0057   set(ANDROID 1)
0058   # Require ndk minimum version to 21
0059   if(ANDROID_NDK_REVISION VERSION_LESS "21.0.0")
0060     message(FATAL_ERROR "android ndk 21 minimal required, actually using ${ANDROID_NDK_REVISION}")
0061   endif()
0062   # TODO: possibly should be setup by toolchain one day
0063   set(QT_QMAKE_EXECUTABLE "${_qt5Core_install_prefix}/bin/qmake")
0064   if(ECM_VERSION VERSION_GREATER "5.55.0")
0065     set(QT_REQUIRED_VERSION 5.12.0)
0066   endif()
0067 
0068   # workaround until this fix is in released ECM
0069   if(ECM_VERSION VERSION_LESS "5.15.0")
0070     add_definitions(-DANDROID)
0071   endif()
0072 endif()
0073 
0074 # Set executable filename
0075 if(ANDROID)
0076   set(GCOMPRIS_EXECUTABLE_NAME GCompris)
0077 elseif(WIN32)
0078   set(GCOMPRIS_EXECUTABLE_NAME GCompris)
0079 else()
0080   set(GCOMPRIS_EXECUTABLE_NAME gcompris-qt)
0081 endif()
0082 
0083 set(GCOMPRIS_VERSION ${GCOMPRIS_MAJOR_VERSION}.${GCOMPRIS_MINOR_VERSION})
0084 
0085 # An integer value that represents the version of the application
0086 # Increase it at each release
0087 math(EXPR GCOMPRIS_VERSION_CODE "${GCOMPRIS_MAJOR_VERSION}*10000 + ${GCOMPRIS_MINOR_VERSION}*100 + ${GCOMPRIS_PATCH_VERSION}")
0088 
0089 # prevent build in source directory
0090 if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
0091     message(SEND_ERROR "Building in the source directory is not supported.")
0092     message(FATAL_ERROR "Please remove the created \"CMakeCache.txt\" file, the \"CMakeFiles\"
0093             directory and create a build directory and call \"${CMAKE_COMMAND} <path to the sources>\".")
0094 endif()
0095 
0096 find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED
0097     Qml Quick Gui Multimedia Core Svg LinguistTools Sensors QuickControls2 QuickTemplates2 Charts)
0098 
0099 if(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "5.15.0")
0100   find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED QmlWorkerScript QuickParticles)
0101 endif()
0102 
0103 if(ANDROID)
0104     find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED AndroidExtras)
0105 endif()
0106 
0107 ## For now we workaround CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION to clang with a command variable, so not needed
0108 # if(ANDROID AND ECM_VERSION VERSION_LESS "5.56.0" AND Qt5Core_VERSION VERSION_GREATER "5.11.99")
0109 #   message(FATAL_ERROR "ECM ${ECM_VERSION} not compatible with Qt ${Qt5Core_VERSION} version for android.")
0110 # endif()
0111 
0112 if((UNIX AND NOT APPLE AND NOT ANDROID) OR WIN32)
0113     find_package(OpenSSL REQUIRED)
0114 endif()
0115 
0116 
0117 option(COMPILE_DOC "Enable compilation of GCompris docbook" OFF)
0118 if(COMPILE_DOC)
0119   find_package(KF5 QUIET COMPONENTS DocTools)
0120 endif()
0121 
0122 if(ECM_FOUND)
0123     include(KDEInstallDirs)
0124 
0125     if(ECM_VERSION VERSION_GREATER "1.6.0")
0126         add_subdirectory(images)
0127         install(FILES org.kde.gcompris.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
0128         install(FILES org.kde.gcompris.desktop DESTINATION ${KDE_INSTALL_APPDIR})
0129     else()
0130         message(STATUS "ECM_VERSION is ${ECM_VERSION}, icons and desktop files won't be installed.")
0131     endif()
0132 endif()
0133 
0134 # Tell CMake to run moc when necessary:
0135 set(CMAKE_AUTOMOC ON)
0136 
0137 # As moc files are generated in the binary dir, tell CMake
0138 # to always look for includes there:
0139 set(CMAKE_INCLUDE_CURRENT_DIR ON)
0140 
0141 #get_cmake_property(_variableNames VARIABLES)
0142 #foreach (_variableName ${_variableNames})
0143 #    message("${_variableName}=${${_variableName}}")
0144 #endforeach()
0145 
0146 option(WITH_DOWNLOAD "Internal download" ON)
0147 # @FIXME These permissions should be removed if download is disable
0148 #        but it makes the application crash on exit (tested on Android 6)
0149 set(ANDROID_INTERNET_PERMISSION "<uses-permission android:name=\"android.permission.INTERNET\" />")
0150 set(ANDROID_ACCESS_NETWORK_STATE_PERMISSION "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />")
0151 
0152 set(GRAPHICAL_RENDERER "auto" CACHE STRING "Policy for choosing the renderer backend [opengl|software|auto]")
0153 
0154 # Set output directory
0155 if(CMAKE_HOST_APPLE)
0156   set(_bundle_bin gcompris-qt.app/Contents/MacOS)
0157   set(_data_dest_dir bin/${_bundle_bin}/../Resources)
0158 else()
0159   set(_data_dest_dir share/${GCOMPRIS_EXECUTABLE_NAME})
0160 endif()
0161 if(ANDROID)
0162   # Android .so output
0163   if(Qt5Widgets_VERSION VERSION_LESS "5.14.0")
0164     set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/android-build/libs/${ANDROID_ABI}/)
0165   endif()
0166   set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir} CACHE INTERNAL "" FORCE)
0167   set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/android-build/assets/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE)
0168   set(ANDROID_PACKAGE "net.gcompris.full")
0169   add_subdirectory(android)
0170 elseif(CMAKE_HOST_APPLE)
0171   # MacOSX build
0172   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
0173   set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/translations CACHE INTERNAL "" FORCE)
0174   set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE)
0175 else()
0176   # Desktop build
0177   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
0178   set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/translations CACHE INTERNAL "" FORCE)
0179   set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE)
0180 endif()
0181 
0182 # Always create these folders
0183 add_custom_command(
0184   OUTPUT shareFolders
0185   COMMAND cmake -E make_directory ${GCOMPRIS_TRANSLATIONS_DIR}
0186   COMMAND cmake -E make_directory ${GCOMPRIS_RCC_DIR}
0187   )
0188 add_custom_target(
0189   createShareFolders ALL
0190   DEPENDS shareFolders
0191   )
0192 
0193 include(cmake/rcc.cmake)
0194 
0195 # Translations handling
0196 
0197 # Get all supported locales by GCompris from LanguageList.qml file, excluded the commented ones
0198 file(STRINGS "${CMAKE_SOURCE_DIR}/src/core/LanguageList.qml" handledGComprisLocaleList ENCODING UTF-8 REGEX "[^//]{.*UTF-8")
0199 foreach(localeLine ${handledGComprisLocaleList})
0200   # We match the pattern locale.UTF-8
0201   string(REGEX MATCH ".*\"([a-zA-Z_@]*)\.UTF-8.*" _ ${localeLine})
0202   set(localeFull ${CMAKE_MATCH_1})
0203   list(APPEND gcomprisLocales ${localeFull})
0204   # Add simplified locale
0205   string(REGEX MATCH "([a-zA-Z@]*)_.*" _ ${localeFull})
0206   set(localeShort ${CMAKE_MATCH_1})
0207   list(APPEND gcomprisLocales ${localeShort})
0208 endforeach()
0209 # Remove all duplicated shortened locales
0210 list(REMOVE_DUPLICATES gcomprisLocales)
0211 
0212 #skipping translations can be useful during dev builds
0213 option(SKIP_TRANSLATIONS "Skip building translation files" OFF)
0214 if(NOT SKIP_TRANSLATIONS)
0215   # Get all po files in poqm/
0216   file(GLOB TRANSLATIONS_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "poqm/*/gcompris_qt.po")
0217   foreach(PoSource ${TRANSLATIONS_FILES})
0218     # Get the locale
0219     string(REGEX MATCH "poqm/([a-zA-Z@_\-]*)/gcompris_qt.po" _ ${PoSource})
0220     set(locale ${CMAKE_MATCH_1})
0221 
0222     # search in src/core/LanguageList the line corresponding to the locale. If exists, then add the custom_command
0223     if(NOT ${locale} IN_LIST gcomprisLocales)
0224       message(STATUS "Locale ${locale} not supported by GCompris")
0225       continue()
0226     endif()
0227     message(STATUS "Locale ${locale} is supported by GCompris")
0228 
0229     # Changes the .po extension to .ts
0230     string(REPLACE ".po" ".ts" TsSource ${PoSource})
0231     # Replace qt in gcompris_qt.po with the locale
0232     string(REPLACE "qt" "${locale}" TsSource ${TsSource})
0233     # Removes the poqm/${locale} folder prefix
0234     string(REPLACE "poqm/${locale}/" "" TsSource ${TsSource})
0235     # qm extension filename
0236     string(REPLACE ".ts" ".qm" QmOutput ${TsSource})
0237 
0238     set(OutTsFile ${CMAKE_BINARY_DIR}/tmp/${TsSource})
0239 
0240     add_custom_command(
0241       OUTPUT ${QmOutput}
0242       COMMAND cmake -E make_directory ${GCOMPRIS_TRANSLATIONS_DIR}
0243       COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/tmp
0244       # Remove the obsolete translations and set po in the ts output file
0245       COMMAND msgattrib --no-obsolete  ${CMAKE_CURRENT_SOURCE_DIR}/${PoSource} -o ${OutTsFile}
0246       # Convert the po into ts
0247       COMMAND Qt5::lconvert -if po -of ts -i ${OutTsFile} -o ${OutTsFile}
0248       # Convert the ts in qm removing non finished translations
0249       COMMAND Qt5::lrelease -compress -nounfinished ${OutTsFile} -qm ${GCOMPRIS_TRANSLATIONS_DIR}/${QmOutput}
0250       )
0251     list(APPEND QM_FILES ${QmOutput})
0252   endforeach()
0253 endif()
0254   
0255 # Install translations
0256 if(WIN32)
0257     add_custom_target(BuildTranslations
0258         DEPENDS ${QM_FILES}
0259     )
0260 else()
0261     add_custom_target(BuildTranslations ALL
0262         DEPENDS ${QM_FILES}
0263     )
0264 endif()
0265 
0266 add_custom_command(
0267     OUTPUT doBundleTranslations
0268     COMMAND 7z a -w${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME}
0269                ${CMAKE_BINARY_DIR}/translations-${GCOMPRIS_VERSION}.7z
0270                ${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME}/translations
0271     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0272     )
0273 # Bundle translations
0274 add_custom_target(BundleTranslations
0275   DEPENDS doBundleTranslations
0276   COMMENT "If you want to provide a zip of the translations on a server (run make BuildTranslations first)"
0277   )
0278 
0279 add_custom_command(
0280     OUTPUT doDlAndInstallBundledTranslations
0281     COMMAND curl -fsS -o translations-${GCOMPRIS_VERSION}.7z
0282                https://gcompris.net/download/translations-${GCOMPRIS_VERSION}.7z
0283     COMMAND 7z x -y -o${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME}
0284                translations-${GCOMPRIS_VERSION}.7z
0285     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
0286     )
0287 # Download and install bundled translations
0288 add_custom_target(DlAndInstallBundledTranslations
0289   DEPENDS doDlAndInstallBundledTranslations
0290   COMMENT "Download the bundled translation and install them in the build dir"
0291   )
0292 
0293 if(CMAKE_HOST_APPLE)
0294   install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION ${_bundle_bin})
0295 elseif(ANDROID)
0296   install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION "share")
0297 else()
0298   install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION ${_data_dest_dir})
0299 endif()
0300 
0301 # Build standalone package option -> if ON, we will copy the required Qt files in the build package.
0302 # If OFF, "make install" will not copy Qt files so only GCompris files will be packaged.
0303 # By default, it is true on Windows (as we deliver NSIS package), macOS (bundled), android (apk) and false on linux (to do make install)
0304 # If you want to create a STGZ package for linux (auto-extractible), override this variable by typing : cmake -DBUILD_STANDALONE=ON
0305 if(UNIX AND NOT ANDROID AND NOT APPLE)
0306   option(BUILD_STANDALONE "Build a standalone package when typing 'make package'" OFF)
0307 else()
0308   option(BUILD_STANDALONE "Build a standalone package when typing 'make package'" ON)
0309 endif()
0310 
0311 option(WITH_KIOSK_MODE "Set the kiosk mode by default" OFF)
0312 
0313 if(WIN32)
0314   set(COMPRESSED_AUDIO "mp3" CACHE STRING "Compressed Audio format [ogg|aac|mp3]")
0315 elseif(APPLE)
0316   set(COMPRESSED_AUDIO "aac" CACHE STRING "Compressed Audio format [ogg|aac|mp3]")
0317 else()
0318   set(COMPRESSED_AUDIO "ogg" CACHE STRING "Compressed Audio format [ogg|aac|mp3]")
0319 endif()
0320 
0321 file(GLOB_RECURSE OGG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/ "*.ogg")
0322 
0323 foreach(OGG_FILE ${OGG_FILES})
0324   # This should only replace the extension
0325   string(REGEX REPLACE "ogg$" "aac" AAC_FILE ${OGG_FILE})
0326   add_custom_command(
0327     OUTPUT ${AAC_FILE}
0328     # Put the good line depending on your installation
0329     COMMAND avconv -v warning -i ${OGG_FILE} -acodec libvo_aacenc ${AAC_FILE}
0330     #COMMAND ffmpeg -v warning -i ${OGG_FILE} -acodec aac -strict -2 ${AAC_FILE}
0331     )
0332   list(APPEND AAC_FILES ${AAC_FILE})
0333 
0334   # This should only replace the extension
0335   string(REGEX REPLACE "ogg$" "mp3" MP3_FILE ${OGG_FILE})
0336   add_custom_command(
0337     OUTPUT ${MP3_FILE}
0338     # Put the good line depending on your installation
0339     #COMMAND avconv -v warning -i ${OGG_FILE} -acodec mp3 ${MP3_FILE}
0340     COMMAND ffmpeg -v warning -i ${OGG_FILE} -acodec mp3 -strict -2 ${MP3_FILE}
0341     )
0342   list(APPEND MP3_FILES ${MP3_FILE})
0343 endforeach()
0344 
0345 add_custom_target(
0346   createAacFromOgg
0347   DEPENDS ${AAC_FILES}
0348   )
0349 
0350 add_custom_target(
0351   createMp3FromOgg
0352   DEPENDS ${MP3_FILES}
0353   )
0354 
0355 if(ANDROID)
0356   set(GCOMPRIS_ASSETS_DIR ${GCOMPRIS_RCC_DIR}/../../../ CACHE INTERNAL "" FORCE)
0357 else()
0358   set(GCOMPRIS_ASSETS_DIR ${GCOMPRIS_RCC_DIR} CACHE INTERNAL "" FORCE)
0359 endif()
0360 
0361 # predownload assets (voices and images) and install them in the rcc folder
0362 set(DOWNLOAD_ASSETS "" CACHE STRING "Download and packages images and voices. use a list like: words,en,fr,pt_BR,music to retrieve multiple files")
0363 add_custom_command(
0364     OUTPUT predownloadAssets
0365     COMMAND python3 tools/download-assets.py ${DOWNLOAD_ASSETS} ${COMPRESSED_AUDIO} ${GCOMPRIS_ASSETS_DIR}
0366     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0367     )
0368 
0369 add_custom_command(
0370     OUTPUT assetsFolders
0371     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2"
0372     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2/voices-${COMPRESSED_AUDIO}"
0373     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2/words"
0374     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2/backgroundMusic"
0375     )
0376 # Install assets
0377 add_custom_target(getAssets
0378   DEPENDS assetsFolders predownloadAssets
0379   )
0380 
0381 add_custom_command(
0382     OUTPUT doBundleConvertedOggs
0383     COMMAND 7z a converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z '-ir!src/*${COMPRESSED_AUDIO}'
0384     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0385     )
0386 # Bundle oggs ready to be uploaded on a server. This ease build on system without the appropriate audio
0387 # convertion tools.
0388 add_custom_target(BundleConvertedOggs
0389   DEPENDS doBundleConvertedOggs
0390   COMMENT "Bundle the converted oggs to upload them on a server. First set COMPRESSED_AUDIO appropriately."
0391   )
0392 
0393 add_custom_command(
0394     OUTPUT doDlAndInstallBundledConvertedOggs
0395     COMMAND curl -fsS -o converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z
0396             https://gcompris.net/download/converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z
0397     COMMAND 7z x -y converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z
0398     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0399     )
0400 # Download and install bundled converted oggs
0401 add_custom_target(DlAndInstallBundledConvertedOggs
0402   DEPENDS doDlAndInstallBundledConvertedOggs
0403   COMMENT "Download the bundled converted oggs and install them in the source dir"
0404   )
0405 
0406 if(${GCOMPRIS_PATCH_VERSION} STREQUAL 0)
0407   set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${GCOMPRIS_VERSION})
0408 else()
0409   set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${GCOMPRIS_VERSION}.${GCOMPRIS_PATCH_VERSION})
0410 endif()
0411 
0412 add_custom_target(dist
0413     COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD
0414         | xz > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz
0415     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
0416 
0417 if(KF5_FOUND)
0418     add_subdirectory(docs/docbook)
0419 endif()
0420 
0421 # qml-box2d
0422 include(cmake/box2d.cmake)
0423 
0424 # qtquick-calendar only for Qt6.0 -> 6.2
0425 if(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "6.0" AND Qt5Widgets_VERSION VERSION_LESS "6.3.0")
0426   set(ANDROID_QT_QUICK_CALENDAR_EXTRA_PLUGIN_PATH ",${CMAKE_BINARY_DIR}/lib/qml/QtQuick")
0427   include(cmake/qtquickcalendar.cmake)
0428 endif()
0429 
0430 add_subdirectory(src)
0431 
0432 if (UBUNTU_TOUCH)
0433     add_subdirectory(platforms/ubuntutouch)
0434 endif ()
0435 
0436 # only enable unit tests for linux
0437 if(BUILD_TESTING)
0438   enable_testing()
0439   add_subdirectory(tests)
0440 endif()
0441 
0442 add_custom_target(binaries)
0443 add_dependencies(binaries ${GCOMPRIS_EXECUTABLE_NAME} rcc_core rcc_menu rcc_activities all_activities)