cmake_minimum_required(VERSION 3.0.0) project(pantalaimon C CXX) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(Qt5Core) find_package(Qt5Qml) find_package(Qt5Quick) # Automatically create moc files set(CMAKE_AUTOMOC ON) # Components PATH execute_process( COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH OUTPUT_VARIABLE ARCH_TRIPLET OUTPUT_STRIP_TRAILING_WHITESPACE ) set(QT_IMPORTS_DIR "lib/${ARCH_TRIPLET}") set(APP_NAME "Pantalaimon UT") set(APP_VERSION "0.5.0") set(PROJECT_NAME "pantalaimon") set(FULL_PROJECT_NAME "pantalaimon.thrrgilag") set(CMAKE_INSTALL_PREFIX /) set(DATA_DIR /) set(DESKTOP_FILE_NAME ${PROJECT_NAME}.desktop) # This command figures out the target architecture for use in the manifest file # Either via the environment variable ARCH (set by Clickable) or dpkg if(DEFINED ENV{ARCH}) set(CLICK_ARCH "$ENV{ARCH}") else() execute_process( COMMAND dpkg-architecture -qDEB_HOST_ARCH OUTPUT_VARIABLE CLICK_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE ) endif() configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json) configure_file(AboutPage.qml.in ${CMAKE_CURRENT_BINARY_DIR}/AboutPage.qml) configure_file(pantalaimon.sh.in ${CMAKE_CURRENT_BINARY_DIR}/pantalaimon.sh) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json DESTINATION ${CMAKE_INSTALL_PREFIX}) install(FILES ${PROJECT_NAME}.apparmor DESTINATION ${DATA_DIR}) install(DIRECTORY assets DESTINATION ${DATA_DIR}) install(DIRECTORY src DESTINATION ${DATA_DIR}) install(DIRECTORY qml DESTINATION ${DATA_DIR}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/AboutPage.qml DESTINATION ${DATA_DIR}qml/) # TODO: example config file for local testing # install(FILES example.conf DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME pantalaimon.conf) file(GLOB_RECURSE OLM_SO_FILES "$ENV{OLM_LIB_INSTALL_DIR}/lib/libolm.so*") install(FILES ${OLM_SO_FILES} DESTINATION ${QT_IMPORTS_DIR}) install(PROGRAMS build/${ARCH_TRIPLET}/pantalaimon/dist/pantalaimon DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME pantalaimonexec) install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/pantalaimon.sh DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME pantalaimon) # Translations file(GLOB_RECURSE I18N_SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po qml/*.qml qml/*.js) list(APPEND I18N_SRC_FILES ${DESKTOP_FILE_NAME}.in.h) find_program(INTLTOOL_MERGE intltool-merge) if(NOT INTLTOOL_MERGE) message(FATAL_ERROR "Could not find intltool-merge, please install the intltool package") endif() find_program(INTLTOOL_EXTRACT intltool-extract) if(NOT INTLTOOL_EXTRACT) message(FATAL_ERROR "Could not find intltool-extract, please install the intltool package") endif() add_custom_target(${DESKTOP_FILE_NAME} ALL COMMENT "Merging translations into ${DESKTOP_FILE_NAME}..." COMMAND LC_ALL=C ${INTLTOOL_MERGE} -d -u ${CMAKE_SOURCE_DIR}/po ${CMAKE_SOURCE_DIR}/${DESKTOP_FILE_NAME}.in ${DESKTOP_FILE_NAME} COMMAND sed -i 's/${PROJECT_NAME}-//g' ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE_NAME} ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE_NAME} DESTINATION ${DATA_DIR}) add_subdirectory(po) # Make source files visible in qtcreator file(GLOB_RECURSE PROJECT_SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} qml/*.qml qml/*.js src/* *.json *.json.in *.apparmor *.desktop.in ) add_custom_target(${PROJECT_NAME}_FILES ALL SOURCES ${PROJECT_SRC_FILES})