Skip to main content

BESA

BESA is a declarative CMake project model. Projects describe features, valid feature spaces, and semantic source units; BESA lowers that model into CMake targets and a machine-readable manifest. The same model is consumed by cpdocs, so documentation does not require a second project description.

Features and source languages are independent concepts. A project feature such as gpu may select a CUDA source unit, but the feature is still just a project capability while cuda is the unit's language.

cmake_minimum_required(VERSION 4.3)
project(example VERSION 1.0.0 LANGUAGES NONE)
find_package(besa CONFIG REQUIRED)
include(cmake/options.cmake) # Native CMake CACHE options and besa_finalize_options()

if(BUILD_SOURCE)
  besa_add_subdirectory(DIRECTORY src/cpp TYPE cpp)
endif()
if(BUILD_TESTING)
  add_subdirectory(test)
endif()

Built-in semantic types are c, cpp, cuda, hip, fortran, and bin. Their manifest languages are respectively c, cpp, cuda, hip, fortran, and no single language for bin. C/C++/CUDA/HIP units use include/ and lib/; Fortran additionally uses mod/; bin turns top-level .c/.cpp files into executables.

Generators register a custom type that resolves to one built-in type:

besa_register_subdirectory_type(
  jnum
  FUNCTION jnum_add_subdirectory
  RESOLVES_TO cpp
  GENERATED
)

besa_add_subdirectory(DIRECTORY schema TYPE jnum)

BESA owns the generated prefix and the global codegen target. The callback receives SOURCE_DIR, BUILD_DIR, OUTPUT_DIR, and OUTPUT_TARGET_VARIABLE; any extra ARGS supplied to besa_add_subdirectory() are forwarded unchanged. This lets cpdocs build codegen on the host and then read the generated include/, lib/, and (for Fortran) mod/ roots without building the target application.

Registered features are independent by default. Use besa_features_conflict(a b) for a pairwise exclusion; retain besa_keyso_* and besa_set_feature_space when precise feature spaces are needed. BESA writes its semantic manifest inside the build tree (build/besa/manifest.json) and exports both CMake and CPS package descriptions when public targets are installed. An installation-time JSON manifest enumerates the actual installed paths. src/cpp/module/*.cppm files are optional and automatically attached to the existing library as public C++ module interfaces.

Metadata

Release files for besa 0.4.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for besa 0.4.6
File Size Uploaded
besa-0.4.6.tar.gz 63.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for besa 0.4.6
File Interpreter ABI Platform
besa-0.4.6-py3-none-any.whl Python 3 none any Details

Total release size: 112.1 kB

Release files / besa-0.4.6.tar.gz

Download URL besa-0.4.6.tar.gz
Size 63.7 kB
Tags Source
SHA-256 checksum
How to use checksums
167dea7c55dcbbf81f57f57e6ee221a2d1f7c7e6ab05e34ad4c8bfbb511f905c
BLAKE2b-256 checksum
How to use checksums
cea026bc6e1b8215f8edb5b36c9e8939bce9d4690fa555506563621e144d3ada
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.18.1 {"ci":null,"cpu":"x86_64","distro":{"libc":{"lib":"glibc","version":"2.44"},"name":"Arch Linux"},"implementation":{"name":"CPython","version":"3.14.7"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.6.4 25 Aug 2026","python":"3.14.7","system":{"name":"Linux","release":"6.18.54-1-lts"}} HTTPX2/2.13.1

Release files / besa-0.4.6-py3-none-any.whl

Download URL besa-0.4.6-py3-none-any.whl
Size 48.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c6e23eb9820a1ec5d86e659e6668495f00b72022fcd75b36a9554eedcf785581
BLAKE2b-256 checksum
How to use checksums
7813563f4db173e2aedb71bc7abef9f3a3da2e7886fe37fae66d7276a70b4052
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.18.1 {"ci":null,"cpu":"x86_64","distro":{"libc":{"lib":"glibc","version":"2.44"},"name":"Arch Linux"},"implementation":{"name":"CPython","version":"3.14.7"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.6.4 25 Aug 2026","python":"3.14.7","system":{"name":"Linux","release":"6.18.54-1-lts"}} HTTPX2/2.13.1

Release history Release notifications | RSS feed

This release

0.4.6 This release

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page