summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitea/workflows/test.yaml26
-rw-r--r--CMakeLists.txt16
-rw-r--r--README.md8
-rw-r--r--cli/CMakeLists.txt6
4 files changed, 45 insertions, 11 deletions
diff --git a/.gitea/workflows/test.yaml b/.gitea/workflows/test.yaml
new file mode 100644
index 0000000..f4cc879
--- /dev/null
+++ b/.gitea/workflows/test.yaml
@@ -0,0 +1,26 @@
+name: Test
+
+on:
+ push:
+ branches:
+ - '**'
+ pull_request:
+ branches: [master]
+
+jobs:
+ build:
+ runs-on: alpine
+ steps:
+ - name: Set up environment
+ shell: ash {0}
+ run: |
+ apk -U upgrade
+ apk add --no-cache git bash cmake build-base ninja-is-really-ninja boost-dev
+ - uses: actions/checkout@v4
+ - name: Build
+ run: |
+ # Building the TUI fails with an internal compiler error with GCC 14.2.
+ cmake -B build -G Ninja -DKATJA_BUILD_TUI=Off
+ ninja -C build
+ - name: Run tests
+ run: ninja -C build test
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cdbe986..f01ca92 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,25 +2,29 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
-cmake_minimum_required(VERSION 4.0)
-project(Katja)
+cmake_minimum_required(VERSION 3.30)
+project(Katja LANGUAGES CXX)
include(CTest)
include(FetchContent)
+option(KATJA_BUILD_TUI "Build text user interface" ON)
+
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_MODULE_STD 1)
add_library(katja
- katja/database.cpp include/katja/database.hpp
- katja/sbo.cpp include/katja/sbo.hpp
- katja/repository.cpp include/katja/repository.hpp
+ katja/database.cpp include/katja/database.hpp
+ katja/sbo.cpp include/katja/sbo.hpp
+ katja/repository.cpp include/katja/repository.hpp
)
include_directories(include ${Boost_INCLUDE_DIR})
-add_subdirectory(cli)
+if(KATJA_BUILD_TUI)
+ add_subdirectory(cli)
+endif()
if(BUILD_TESTING)
add_subdirectory(tests)
endif()
diff --git a/README.md b/README.md
index 4582401..41fb2fa 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,14 @@ Pass `-DCMAKE_BUILD_TYPE=Debug` or `-DCMAKE_BUILD_TYPE=Release` to
This builds a CLI that can be then found in `./build/bin/katja`.
+### Running the tests
+
+To run the tests follow the build instructions first and then do:
+
+```sh
+ninja -C build test
+```
+
## Project structure
The library code is in `katja/`. Public headers are under `include/`.
diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt
index 1e7921d..100cfe2 100644
--- a/cli/CMakeLists.txt
+++ b/cli/CMakeLists.txt
@@ -9,16 +9,12 @@ FetchContent_Declare(ftxui
GIT_SHALLOW TRUE
EXCLUDE_FROM_ALL
)
-FetchContent_MakeAvailable(ftxui)
-
FetchContent_Declare(toml11
GIT_REPOSITORY https://github.com/ToruNiina/toml11.git
GIT_TAG v4.4.0
GIT_PROGRESS TRUE
)
-FetchContent_MakeAvailable(toml11)
-
-set(FTXUI_BUILD_MODULES ON)
+FetchContent_MakeAvailable(ftxui toml11)
add_executable(katja-cli main.cpp)
target_sources(katja-cli PUBLIC FILE_SET all_my_modules TYPE CXX_MODULES FILES