File: CMakeLists.txt

package info (click to toggle)
kosmindoormap 25.04.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 7,452 kB
  • sloc: cpp: 22,013; xml: 551; yacc: 490; lex: 176; sh: 166; makefile: 24; java: 15
file content (137 lines) | stat: -rw-r--r-- 5,113 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org>
# SPDX-License-Identifier: BSD-3-Clause

cmake_minimum_required(VERSION 3.16)

# KDE Application Version, managed by release script
set (RELEASE_SERVICE_VERSION_MAJOR "25")
set (RELEASE_SERVICE_VERSION_MINOR "04")
set (RELEASE_SERVICE_VERSION_MICRO "3")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(KOSMIndoorMap VERSION ${RELEASE_SERVICE_VERSION})

option(BUILD_STANDALONE_APP "Build and install the stand-alone test/demo app." OFF)
option(BUILD_TOOLS_ONLY "Build only the command-line tools." OFF)

find_package(ECM 6.0 REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${ECM_MODULE_PATH})
set(CMAKE_CXX_STANDARD 20)

include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMAddTests)
include(ECMGenerateHeaders)
include(ECMQtDeclareLoggingCategory)
include(ECMDeprecationSettings)
include(ECMSetupVersion)
include(FeatureSummary)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(GenerateExportHeader)
include(ECMDeprecationSettings)
include(ECMAddAndroidApk)

ecm_setup_version(PROJECT VARIABLE_PREFIX KOSMINDOORMAP
    VERSION_HEADER kosmindoormap_version.h
    PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KOSMIndoorMapConfigVersion.cmake"
    SOVERSION 1
)

set(QT_MIN_VERSION 6.5)
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Network)

set(KPublicTransport_DEPENDENCY_TYPE REQUIRED)
if (NOT USE_KPUBLICTRANSPORT AND NOT BUILD_STANDALONE_APP)
    set(KPublicTransport_DEPENDENCY_TYPE RECOMMENDED)
endif()

if (NOT BUILD_TOOLS_ONLY)
    find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Gui Quick)

    if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
        find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
    endif()

    find_package(KF6 REQUIRED COMPONENTS I18n)
    find_package(KPublicTransport)
    set_package_properties(KPublicTransport PROPERTIES TYPE ${KPublicTransport_DEPENDENCY_TYPE} PURPOSE "Integration of public transport realtime data.")
    find_package(KOpeningHours)
    set_package_properties(KOpeningHours PROPERTIES TYPE REQUIRED PURPOSE "Highlight currently open amenities/shops/etc.")
    if (ANDROID)
        find_package(Gradle REQUIRED)
    else()
        find_package(KF6 OPTIONAL_COMPONENTS CoreAddons Service)
    endif()

    find_package(recastnavigation)
    set_package_properties(recastnavigation PROPERTIES TYPE RECOMMENDED PURPOSE "Navigation engine." URL "https://recastnav.com/")
endif()

if (BUILD_TESTING)
    find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Test Widgets)
endif()

if (BUILD_STANDALONE_APP)
    if (NOT ANDROID)
        find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Widgets)
    else()
        find_package(KF6 6.3 REQUIRED COMPONENTS Kirigami)
        find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS QuickControls2 Svg)
        find_package(OpenSSL REQUIRED)
        if (NOT DEFINED BREEZEICONS_DIR AND EXISTS ${CMAKE_SOURCE_DIR}/../breeze-icons)
            set(BREEZEICONS_DIR ${CMAKE_SOURCE_DIR}/../breeze-icons)
        endif()
    endif()
endif()

find_package(ZLIB REQUIRED)
find_package(OsmTools)
set_package_properties(OsmTools PROPERTIES TYPE OPTIONAL PURPOSE "Needed only for regenereating line metadata tables (ie. you most likely don't need this)")

if (NOT BUILD_TOOLS_ONLY)
    find_package(FLEX REQUIRED)
    set_package_properties(FLEX PROPERTIES PURPOSE "MapCSS parser for indoor map rendering.")
    find_package(BISON REQUIRED)
    set_package_properties(BISON PROPERTIES PURPOSE "MapCSS parser for indoor map rendering.")
endif()

if (NOT WIN32)
    # try upstream cmake config first
    set(protobuf_MODULE_COMPATIBLE ON)
    find_package(Protobuf CONFIG)
    if(NOT Protobuf_FOUND)
    # fall back to cmake's protobuf module
       find_package(Protobuf)
    endif()
    set_package_properties(Protobuf PROPERTIES TYPE OPTIONAL PURPOSE "Parsing of OSM PBF files.")
endif()

add_definitions(-DQT_NO_CONTEXTLESS_CONNECT)
ecm_set_disabled_deprecation_versions(QT 6.5 KF 5.240.0)

add_subdirectory(src)
if (BUILD_TESTING)
    add_subdirectory(autotests)
    add_subdirectory(tests)
endif()

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)

set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KOSMIndoorMap")
configure_package_config_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/KOSMIndoorMapConfig.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/KOSMIndoorMapConfig.cmake"
    INSTALL_DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
)

install(FILES
        "${CMAKE_CURRENT_BINARY_DIR}/KOSMIndoorMapConfig.cmake"
        "${CMAKE_CURRENT_BINARY_DIR}/KOSMIndoorMapConfigVersion.cmake"
    DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
    COMPONENT Devel
)
install(EXPORT KOSMIndoorMapTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KOSMIndoorMapTargets.cmake)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kosmindoormap_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR} COMPONENT Devel)
if (NOT BUILD_TOOLS_ONLY)
    ki18n_install(po)
endif()