cmake_minimum_required(VERSION 3.16) file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/version.txt" NYMEA_VERSION_LINES) list(LENGTH NYMEA_VERSION_LINES NYMEA_VERSION_COUNT) if(NOT NYMEA_VERSION_COUNT GREATER_EQUAL 1) message(FATAL_ERROR "version.txt must contain at least the application version") endif() list(GET NYMEA_VERSION_LINES 0 NYMEA_APP_VERSION) if(NOT NYMEA_VERSION_COUNT GREATER_EQUAL 2) set(NYMEA_APP_REVISION "0") else() list(GET NYMEA_VERSION_LINES 1 NYMEA_APP_REVISION) endif() project(nymea-app VERSION ${NYMEA_APP_VERSION} LANGUAGES CXX) if(IOS) enable_language(OBJCXX) endif() set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(APPLICATION_NAME "nymea-app" CACHE STRING "Application name") set(ORGANISATION_NAME "nymea" CACHE STRING "Organisation name") option(NYMEA_ENABLE_ZEROCONF "Enable ZeroConf support" OFF) option(NYMEA_USE_MATERIAL_ICONS "Use the Material icon set instead of Suru" OFF) option(NYMEA_ENABLE_FIREBASE "Enable Firebase Cloud Messaging integration" ON) set(NYMEA_OVERLAY_PATH "" CACHE PATH "Optional overlay directory for branding") find_package(Qt6 REQUIRED COMPONENTS Core Gui Network Qml Quick QuickControls2 Svg WebSockets Bluetooth Charts Nfc ) find_package(OpenSSL QUIET) if(ANDROID) include(FetchContent) FetchContent_Declare( android_openssl DOWNLOAD_EXTRACT_TIMESTAMP true URL https://github.com/KDAB/android_openssl/archive/refs/heads/master.zip ) FetchContent_MakeAvailable(android_openssl) include(${android_openssl_SOURCE_DIR}/android_openssl.cmake) set(NYMEA_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/packaging/android" CACHE PATH "Android packaging directory") set(_nymea_app_root_property "nymeaAppRoot=${CMAKE_SOURCE_DIR}") if(NYMEA_ENABLE_FIREBASE) set(_nymea_firebase_property "useFirebase=true") else() set(_nymea_firebase_property "useFirebase=false") endif() file(WRITE "${NYMEA_ANDROID_PACKAGE_SOURCE_DIR}/nymeaapp.properties" "${_nymea_app_root_property}\n${_nymea_firebase_property}\n") configure_file( "${CMAKE_SOURCE_DIR}/version.txt" "${NYMEA_ANDROID_PACKAGE_SOURCE_DIR}/version.txt" COPYONLY ) add_link_options("-Wl,-z,max-page-size=16384") endif() # Make config.h available to all targets configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h @ONLY) # Common warning flags if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_compile_options(-Wall) if(UNIX AND NOT APPLE) add_compile_options(-Wno-deprecated-declarations -Wno-deprecated-copy) endif() endif() set(APP_VERSION ${NYMEA_APP_VERSION}) set(APP_REVISION ${NYMEA_APP_REVISION}) add_subdirectory(libnymea-app) add_subdirectory(experiences) add_subdirectory(nymea-app)