Lays out Velox Download Manager (IDM-class download manager for Ubuntu 26.04) as a monorepo ready for parallel lane development. No implementation code by design. - docs/: architecture, roadmap M0-M7, IDM-parity GUI spec, engine design, Firefox extension spec, risks/spikes, packaging - contracts/: wire-contract skeleton (JSON Schema + fixture templates) — the single synchronization point between lanes - docs/agents/: one brief per lane (PROTO, CORE, DAEMON, GUI, EXT, PKG/QA) with owned directories, build order and definition of done - CLAUDE.md: rules of engagement — lane ownership, layering, non-negotiables - CMake scaffolding with dev/tsan/release/ci presets Two environment findings shape the design: Firefox here is the Mozilla snap (native-messaging risk, so the extension carries a loopback-WebSocket fallback), and Wayland forbids passive clipboard monitoring (so clipboard capture is explicit-action-first). Co-Authored-By: Claude Opus 5 <[email protected]>
49 lines
1.8 KiB
CMake
49 lines
1.8 KiB
CMake
# Velox Download Manager — top-level build
|
|
# SCAFFOLDING ONLY. Lane PKG/QA owns this file; each add_subdirectory() is enabled by the
|
|
# owning lane when it lands its first target. Nothing here builds yet by design.
|
|
|
|
cmake_minimum_required(VERSION 3.28)
|
|
|
|
project(velox
|
|
VERSION 0.1.0
|
|
DESCRIPTION "IDM-class download manager for Linux"
|
|
LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
option(VELOX_BUILD_GUI "Build the Qt 6 GUI client" ON)
|
|
option(VELOX_BUILD_TESTS "Build unit and integration tests" ON)
|
|
option(VELOX_BUILD_FUZZ "Build libFuzzer targets (clang only)" OFF)
|
|
option(VELOX_ENABLE_MEDIA "Build the HLS/DASH media grabber (M4)" OFF)
|
|
|
|
add_compile_options(-Wall -Wextra -Wpedantic)
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
add_compile_options(-Werror)
|
|
endif()
|
|
|
|
# --- Dependencies (see README bootstrap; none are vendored) --------------------
|
|
# find_package(CURL 8.0 REQUIRED)
|
|
# find_package(SQLite3 REQUIRED)
|
|
# find_package(nlohmann_json 3.11 REQUIRED)
|
|
# find_package(OpenSSL REQUIRED)
|
|
# if(VELOX_BUILD_GUI)
|
|
# find_package(Qt6 6.6 REQUIRED COMPONENTS Widgets Svg Network LinguistTools)
|
|
# qt_standard_project_setup()
|
|
# endif()
|
|
|
|
# --- Targets: each lane enables its own line ----------------------------------
|
|
# add_subdirectory(core) # lane CORE → libveloxcore
|
|
# add_subdirectory(daemon) # lane DAEMON → veloxd
|
|
# add_subdirectory(cli) # lane DAEMON → velox
|
|
# add_subdirectory(nmhost) # lane DAEMON → velox-nmhost
|
|
# if(VELOX_BUILD_GUI)
|
|
# add_subdirectory(gui) # lane GUI → velox-gui
|
|
# endif()
|
|
# if(VELOX_BUILD_TESTS)
|
|
# enable_testing()
|
|
# add_subdirectory(tests)
|
|
# endif()
|