Als Teil der Build-Pipeline Modernisierung wurden die Dateien reorganisiert:
themis/
├── CMakeLists.txt # Root CMake (delegiert zu cmake/)
├── cmake/ # ✨ NEW: Alle CMAKE-Dateien
│ ├── CMakeLists.txt # Hauptkonfiguration
│ ├── CMakeLists_debug.txt
│ ├── CMakePresets.json # Build-Profile (MSVC, WSL, Docker)
│ ├── config/ # Feature-Konfiguration
│ ├── modules/ # CMake Module
│ └── ...
├── docker/ # ✨ NEW: Alle Docker-Dateien
│ ├── Dockerfile.themis-server # Production Build
│ ├── Dockerfile.minimal # Minimal Edition
│ ├── docker-compose-minimal.yml
│ └── .dockerignore
├── docs/
│ └── build-guide/ # ✨ NEW: Build-Dokumentation
│ ├── README.md # Index
│ ├── BUILD_WINDOWS.md # MSVC Build
│ ├── BUILD_LINUX.md # WSL/Linux Build
│ ├── BUILD_DOCKER.md # Docker Build
│ └── TROUBLESHOOTING.md # Fehlersuche
└── scripts/
├── build-windows.ps1
├── build-linux.sh
├── build-docker.sh
└── ...
Nach erfolgreichem Build folgen Deployment und Release - diese sind bereits in docs/de/ dokumentiert:
- deployment_strategy.md - Umfassende Deployment-Strategie für alle Editionen
- EDITION_DEPLOYMENT_STRATEGY.md - Edition-spezifische Deployment (Community, Professional, Enterprise, Hyperscaler)
- deployment_docker_multiarch.md - Multi-Arch Docker Deployment (x86_64, ARM64, ARMv7)
- deployment_qnap.md - QNAP NAS Deployment (Docker + Native Build)
- deployment_raspberry_tuning.md - Raspberry Pi Tuning & Deployment
- deployment_arm_build.md - ARM-spezifische Build & Deployment
- updates_distribution_strategy.md - Distributions-Strategie für Releases
- updates_release_manifest.md - Release Manifest Struktur
- RELEASE_NOTES_v1.4.md - Release Notes v1.4
- v1.3.5_RELEASE_BUILD_STRATEGY.md - Release Build-Strategie
- EDITION_CONTROL_MECHANISMS.md - Edition Control & Feature Flags
Nach den Umzügen mussten folgende Dateien angepasst werden:
CMakePresets.json ist jetzt in cmake/CMakePresets.json - CMake findet sie automatisch via ${sourceDir}:
cd C:\VCC\themis
cmake --preset windows-vs2022-release
cmake --build --preset windows-vs2022-release --parallel 8cd /path/to/themis
cmake --preset linux-gcc-release
cmake --build build-wsl --parallel 8cd /path/to/themis
cmake -S . -B build-rpi \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DTHEMIS_BUILD_TESTS=OFF
cmake --build build-rpi --parallel 2 # Weniger Cores auf RPidocker build -f docker/Dockerfile.themis-server \
-t themis-server:hyperscaler-llm \
--build-arg THEMIS_ENABLE_LLM=ON \
--build-arg THEMIS_ENABLE_GPU=ON \
.# WINDOWS - Explizit
cmake -S . -B build-msvc \
-G "Visual Studio 17 2022" -A x64 \
-DCMAKE_BUILD_TYPE=Release \
-DTHEMIS_ENABLE_LLM=ON \
-DTHEMIS_ENABLE_GPU=ON
cmake --build build-msvc --config Release --parallel 8
# LINUX - Explizit
cmake -S . -B build-wsl \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DTHEMIS_ENABLE_LLM=ON \
-DTHEMIS_ENABLE_GPU=ON
cmake --build build-wsl --parallel 8# Windows
.\scripts\run-windows-devbuild.ps1
# Build mit Release-Konfiguration
.\scripts\build-windows.ps1# Linux/WSL
./scripts/build-linux.sh
./scripts/build-docker.sh- ❌
CMakeLists.txt→ ✅ jetzt Delegations-Datei zucmake/CMakeLists.txt - ❌
CMakePresets.json→ ✅ jetztcmake/CMakePresets.json - ❌
Dockerfile.*→ ✅ jetztdocker/Dockerfile.*
- Clean Root: Nur ~20 Dateien statt 40+ im Root
- Clear Purpose: Jedes Verzeichnis hat eine spezifische Rolle
- Easier Navigation: Verwandte Dateien zusammen
- Better Onboarding: Neue Contributor finden Dinge schneller
- CI/CD Friendly: Scripts können gezielt Verzeichnisse referenzieren
| File | Purpose |
|---|---|
cmake/CMakePresets.json |
Zentrale Build-Konfiguration (alle Presets) |
cmake/CMakeLists.txt |
Hauptkonfiguration (2600+ Zeilen) |
cmake/config/ |
Feature Flags, Compiler Settings |
cmake/modules/ |
CMake Module für externe Dependencies |
docker/Dockerfile.themis-server |
Production Container (LLM + GPU) |
docker/docker-compose-minimal.yml |
Dev Environment |
docs/build-guide/ |
Build Documentation |
Nach den Umzügen mussten folgende Dateien angepasst werden:
# Root CMakeLists.txt (neu)
cmake_minimum_required(VERSION 3.20)
add_subdirectory(cmake) # ← Delegiert# cmake/CMakeLists.txt (angepasst)
# Alter Pfad: include(cmake/ModularBuild.cmake)
# Neuer Pfad:
include(${CMAKE_CURRENT_SOURCE_DIR}/ModularBuild.cmake)CMakePresets.json verwendet ${sourceDir} (Root), daher keine Änderungen nötig.
-
✅ Build mit neuem Preset testen:
cmake --preset windows-vs2022-release cmake --build --preset windows-vs2022-release
-
✅ Docker Image bauen:
docker build -f docker/Dockerfile.themis-server \ -t themis-server:test . -
✅ CI/CD Pipelines updaten (
.github/workflows/*) -
✅ Dokumentation für Contributors aktualisiert in
docs/build-guide/
| Platform | Guide | Besonderheiten |
|---|---|---|
| Windows | BUILD_WINDOWS.md | MSVC, Visual Studio 2022 |
| Linux / WSL | BUILD_LINUX.md | GCC, Ninja, ccache |
| Docker | BUILD_DOCKER.md | Multi-Stage, x86_64 + ARM64 |
| ARM (Generisch) | BUILD_ARM.md | Cross-Compilation, Toolchain |
| Raspberry Pi | BUILD_RASPBERRY_PI.md | ARMv8, 64-bit, Systemd |
| QNAP NAS | BUILD_QNAP.md | Docker-preferred, x86_64 + ARM |
| Troubleshooting | TROUBLESHOOTING.md | Häufige Fehler |
- cmake/CMakePresets.json - Alle verfügbaren Presets
- cmake/CMakeLists.txt - Konfigurationsdetails