-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
65 lines (54 loc) · 2.2 KB
/
CMakeLists.txt
File metadata and controls
65 lines (54 loc) · 2.2 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
cmake_minimum_required(VERSION 3.20)
project(vivid VERSION 0.1.0 LANGUAGES C CXX OBJC OBJCXX)
set(VIVID_APPCAST_URL "https://vivid.seethroughlab.com/appcast.xml" CACHE STRING
"Sparkle appcast URL for core app updates")
set(VIVID_SPARKLE_PUBLIC_KEY "" CACHE STRING
"Sparkle EdDSA public key (SUPublicEDKey)")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# --- Compiler warnings ---
if(NOT MSVC)
add_compile_options(-Wall -Wextra -Wno-unused-parameter)
endif()
# --- Sanitizer instrumentation (opt-in) ---
option(VIVID_SANITIZE "Enable AddressSanitizer + UndefinedBehaviorSanitizer" OFF)
option(VIVID_SANITIZE_THREAD "Enable ThreadSanitizer (mutually exclusive with VIVID_SANITIZE)" OFF)
if(VIVID_SANITIZE AND VIVID_SANITIZE_THREAD)
message(FATAL_ERROR "Cannot enable both VIVID_SANITIZE and VIVID_SANITIZE_THREAD")
endif()
if(VIVID_SANITIZE)
add_compile_options(-fsanitize=address,undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=address,undefined)
endif()
if(VIVID_SANITIZE_THREAD)
add_compile_options(-fsanitize=thread -fno-omit-frame-pointer)
add_link_options(-fsanitize=thread)
endif()
# --- Optional macOS Accelerate framework ---
if(APPLE)
option(VIVID_ENABLE_ACCELERATE "Enable optional macOS Accelerate framework paths" ON)
endif()
# --- Modular build configuration ---
include(cmake/git_version.cmake) # defines VIVID_CORE_COMMIT, VIVID_CORE_REPO_URL
include(cmake/dependencies.cmake)
include(cmake/operators.cmake)
include(cmake/app.cmake)
include(cmake/tests.cmake)
# --- reset target: wipe user data directories (opt-in) ---
if(APPLE)
set(VIVID_CONFIG_DIR "$ENV{HOME}/Library/Application Support/Vivid")
elseif(WIN32)
set(VIVID_CONFIG_DIR "$ENV{APPDATA}/Vivid")
else()
if(DEFINED ENV{XDG_CONFIG_HOME})
set(VIVID_CONFIG_DIR "$ENV{XDG_CONFIG_HOME}/vivid")
else()
set(VIVID_CONFIG_DIR "$ENV{HOME}/.config/vivid")
endif()
endif()
set(VIVID_WORKSPACE_DIR "$ENV{HOME}/Documents/Vivid")
add_custom_target(reset
COMMAND ${CMAKE_COMMAND} -E rm -rf "${VIVID_CONFIG_DIR}" "${VIVID_WORKSPACE_DIR}"
COMMENT "Removing Vivid user data: ${VIVID_CONFIG_DIR} and ${VIVID_WORKSPACE_DIR}"
VERBATIM
)