99 lines
2.9 KiB
CMake
99 lines
2.9 KiB
CMake
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)
|