-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
82 lines (67 loc) · 2.6 KB
/
CMakeLists.txt
File metadata and controls
82 lines (67 loc) · 2.6 KB
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
cmake_minimum_required(VERSION 3.16)
project(nuts VERSION 3.0.0 LANGUAGES CXX)
set(QT_MAJOR_VERSION 6)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
# Detect host architecture
cmake_host_system_information(RESULT HOST_ARCH QUERY OS_PLATFORM)
message(STATUS "Host architecture: ${HOST_ARCH}")
# CPU optimization option (only relevant for x86_64)
option(USE_X86_64_V3 "Enable x86-64-v3 optimizations (requires AVX2, Haswell/Zen or newer)" ON)
# Apply architecture-specific optimization flags
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64|AMD64)$" OR HOST_ARCH MATCHES "^(x86_64|amd64|AMD64)$")
if(USE_X86_64_V3)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64-v3 -mtune=generic -fexceptions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=x86-64-v3 -mtune=generic")
message(STATUS "Building with x86-64-v3 optimizations (AVX2 required)")
message(STATUS " Minimum CPUs: Intel Haswell (2013+), AMD Zen (2017+)")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -mtune=generic -fexceptions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=x86-64 -mtune=generic")
message(STATUS "Building with x86-64 baseline (maximum compatibility)")
endif()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|ARM64)$" OR HOST_ARCH MATCHES "^(aarch64|arm64|ARM64)$")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a -mtune=generic -fexceptions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mtune=generic")
message(STATUS "Building for ARM64 with ARMv8-A baseline")
else()
message(STATUS "Building for ${CMAKE_SYSTEM_PROCESSOR} with default flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions")
endif()
# Find required packages
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
include(KDEInstallDirs)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(KDECMakeSettings)
include(ECMFindQmlModule)
include(ECMSetupVersion)
include(FeatureSummary)
find_package(Qt6 REQUIRED COMPONENTS
Core
Quick
Qml
DBus
Widgets
Network
Concurrent
)
find_package(KF6 REQUIRED COMPONENTS
CoreAddons
I18n
Notifications
WindowSystem
)
find_package(MauiKit4 REQUIRED)
ecm_find_qmlmodule(org.mauikit.controls 1.0)
find_package(PolkitQt6-1 REQUIRED)
# Build options
option(BUILD_TESTING "Build tests" OFF)
# Add subdirectories
add_subdirectory(src)
add_subdirectory(data)
# Feature summary
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)