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 3.25)
project(example VERSION 1.0.0 LANGUAGES NONE)
find_package(besa CONFIG REQUIRED)
besa_add_feature(mpi)
besa_add_feature(gpu)
besa_keyso_zero_or_one(parallel mpi)
besa_keyso_zero_or_one(acceleration gpu)
besa_keyso_create_feature_space(supported PRODUCT parallel acceleration)
besa_set_feature_space(supported)
besa_configure_complete()
besa_add_subdirectory(DIRECTORY src/core TYPE cpp)
besa_add_subdirectory(DIRECTORY src/gpu TYPE cuda CONDITION gpu)
besa_add_subdirectory(DIRECTORY bin TYPE bin)
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.
Metadata
Release files for besa 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| besa-0.4.0.tar.gz | 60.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| besa-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 105.7 kB
Release files / besa-0.4.0.tar.gz
| Download URL | besa-0.4.0.tar.gz |
|---|---|
| Size | 60.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5829b295f0e373f7959786c1909716cf59479e502dec20e257bfab5f087af3ca
|
|
BLAKE2b-256 checksum How to use checksums |
19d55dcb438974eb60447ed2d3e730f1fcbc436c26ffa2a174add4e9319710a7
|
| 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.0-py3-none-any.whl
| Download URL | besa-0.4.0-py3-none-any.whl |
|---|---|
| Size | 45.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6020949e40aca99464093b773fea3804efe44e64d7bad74f044f928ff7fab4f8
|
|
BLAKE2b-256 checksum How to use checksums |
e78ebbd15058aae1c9303f3f463f7eb6bec565ca12856fe5abb5d05e3e8cc4bb
|
| 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
|