build: split core/ from frontends/; prepare for multiple GUI/TUI targets
Reorganise the tree into business vs frontend as separate directories:
src/core/{domain,imports,app} (was system/, imports/, app/)
src/frontends/tui/ (was tui/ + main.cpp)
tests/tui/ (the FTXUI-coupled helper test)
All cross-dir #include paths rewritten; same-dir includes untouched.
CMake: essim_core is the frontend-agnostic business library — links libzip,
pugixml and bsdl, NO GUI toolkit. Each frontend is a self-contained
src/frontends/<name>/ (own CMakeLists, toolkit, main.cpp) that links
essim_core, selected with -DESSIM_FRONTEND=<name> (default tui; 'none' = core +
tests only, no toolkit fetched). FTXUI moved into the tui frontend. Tests are
split: essim_tests links essim_core (no FTXUI), essim_tui_tests links essim_tui.
Verified: default tui build green (ctest 2/2); ESSIM_FRONTEND=none builds the
core + tests with FTXUI never fetched and no `essim` binary.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
#include "app/export.hpp"
|
||||
#include "core/app/export.hpp"
|
||||
|
||||
#include "imports/ods_writer.hpp"
|
||||
#include "system/connect.hpp"
|
||||
#include "system/modules.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signal_type.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/imports/ods_writer.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signal_type.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <fstream>
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "system/component_kind.hpp"
|
||||
#include "core/domain/component_kind.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <string>
|
||||
@@ -1,11 +1,11 @@
|
||||
#include "system/nets.hpp"
|
||||
#include "core/domain/nets.hpp"
|
||||
|
||||
#include "system/connect.hpp"
|
||||
#include "system/modules.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <queue>
|
||||
#include <unordered_map>
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "system/pin_name.hpp"
|
||||
#include "core/domain/pin_name.hpp"
|
||||
|
||||
#include <cstdio>
|
||||
#include <stdexcept>
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#include "connect.hpp"
|
||||
#include "modules.hpp"
|
||||
#include "imports/import_altium.hpp"
|
||||
#include "imports/import_mentor.hpp"
|
||||
#include "imports/import_ods.hpp"
|
||||
#include "core/imports/import_altium.hpp"
|
||||
#include "core/imports/import_mentor.hpp"
|
||||
#include "core/imports/import_ods.hpp"
|
||||
|
||||
System::System() : mods(nullptr), conns(nullptr)
|
||||
{
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef _SYSTEM_HPP_
|
||||
#define _SYSTEM_HPP_
|
||||
|
||||
#include "imports/import_base.hpp"
|
||||
#include "core/imports/import_base.hpp"
|
||||
|
||||
#pragma once
|
||||
class Modules; ///< Forward declaration of the Modules class.
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "import_altium.hpp"
|
||||
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <string>
|
||||
@@ -4,8 +4,8 @@
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
#include "system/parts.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
|
||||
/**
|
||||
* @brief Base class for importing data from a file.
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "import_mentor.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <vector>
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "import_ods.hpp"
|
||||
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
|
||||
#include <pugixml.hpp>
|
||||
#include <zip.h>
|
||||
35
src/frontends/tui/CMakeLists.txt
Normal file
35
src/frontends/tui/CMakeLists.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
# TUI frontend (FTXUI). Builds the `essim` executable against essim_core.
|
||||
#
|
||||
# A frontend is self-contained here: it pulls its own GUI toolkit, compiles its
|
||||
# sources into a library that links essim_core, and produces the `essim` binary
|
||||
# from its own entry point (main.cpp). To add another frontend, create a sibling
|
||||
# src/frontends/<name>/ with the same shape and select it with
|
||||
# -DESSIM_FRONTEND=<name>.
|
||||
|
||||
set(FTXUI_BUILD_DOCS OFF CACHE INTERNAL "")
|
||||
set(FTXUI_BUILD_EXAMPLES OFF CACHE INTERNAL "")
|
||||
set(FTXUI_BUILD_TESTS OFF CACHE INTERNAL "")
|
||||
set(FTXUI_ENABLE_INSTALL OFF CACHE INTERNAL "")
|
||||
|
||||
FetchContent_Declare(ftxui
|
||||
GIT_REPOSITORY https://github.com/ArthurSonzogni/FTXUI.git
|
||||
GIT_TAG v6.1.9
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
FetchContent_MakeAvailable(ftxui)
|
||||
|
||||
# Frontend library = every .cpp here except the entry point.
|
||||
file(GLOB TUI_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
|
||||
list(REMOVE_ITEM TUI_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")
|
||||
|
||||
add_library(essim_tui STATIC ${TUI_SOURCES})
|
||||
target_link_libraries(essim_tui
|
||||
PUBLIC
|
||||
essim_core
|
||||
ftxui::screen
|
||||
ftxui::dom
|
||||
ftxui::component
|
||||
)
|
||||
|
||||
add_executable(essim "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")
|
||||
target_link_libraries(essim PRIVATE essim_tui)
|
||||
@@ -1,21 +1,21 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/analysis.hpp"
|
||||
#include "system/connect.hpp"
|
||||
#include "system/modules.hpp"
|
||||
#include "system/nets.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/persist.hpp"
|
||||
#include "system/pin_role.hpp"
|
||||
#include "system/pin_model.hpp"
|
||||
#include "system/bsdl_model.hpp"
|
||||
#include "system/bsdl_check.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "system/transform.hpp"
|
||||
#include "system/transform_vpx.hpp"
|
||||
#include "core/domain/analysis.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/nets.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/persist.hpp"
|
||||
#include "core/domain/pin_role.hpp"
|
||||
#include "core/domain/pin_model.hpp"
|
||||
#include "core/domain/bsdl_model.hpp"
|
||||
#include "core/domain/bsdl_check.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
#include "core/domain/transform.hpp"
|
||||
#include "core/domain/transform_vpx.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
|
||||
#include "app/export.hpp"
|
||||
#include "system/connect.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/app/export.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <cstdlib>
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
@@ -1,15 +1,15 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/analysis.hpp"
|
||||
#include "system/bsdl_check.hpp"
|
||||
#include "system/connect.hpp"
|
||||
#include "system/modules.hpp"
|
||||
#include "system/nets.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/analysis.hpp"
|
||||
#include "core/domain/bsdl_check.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/nets.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/event.hpp>
|
||||
@@ -1,11 +1,11 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/connect.hpp"
|
||||
#include "system/modules.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "system/transform.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
#include "core/domain/transform.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,15 +1,15 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/analysis.hpp"
|
||||
#include "system/bsdl_check.hpp"
|
||||
#include "system/connect.hpp"
|
||||
#include "system/modules.hpp"
|
||||
#include "system/nets.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/analysis.hpp"
|
||||
#include "core/domain/bsdl_check.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/nets.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/dom/elements.hpp>
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/event.hpp>
|
||||
@@ -1,13 +1,13 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/connect.hpp"
|
||||
#include "system/modules.hpp"
|
||||
#include "system/nets.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/connect.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/nets.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/modules.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,13 +1,13 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/modules.hpp"
|
||||
#include "system/parts.hpp"
|
||||
#include "system/pin_model.hpp"
|
||||
#include "system/pin_role.hpp"
|
||||
#include "system/pins.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "system/transform_vpx.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/parts.hpp"
|
||||
#include "core/domain/pin_model.hpp"
|
||||
#include "core/domain/pin_role.hpp"
|
||||
#include "core/domain/pins.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
#include "core/domain/transform_vpx.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
|
||||
#include "system/modules.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/component_options.hpp>
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include "system/modules.hpp"
|
||||
#include "system/signals.hpp"
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/modules.hpp"
|
||||
#include "core/domain/signals.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <cctype>
|
||||
#include <chrono>
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "tui/tui.hpp"
|
||||
#include "frontends/tui/tui.hpp"
|
||||
|
||||
#include "system/system.hpp"
|
||||
#include "core/domain/system.hpp"
|
||||
|
||||
#include <ftxui/component/component.hpp>
|
||||
#include <ftxui/component/event.hpp>
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "tui/tui_helpers.hpp"
|
||||
#include "frontends/tui/tui_helpers.hpp"
|
||||
|
||||
#include <ftxui/dom/elements.hpp>
|
||||
|
||||
Reference in New Issue
Block a user