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.5
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.5.tar.gz | 63.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| besa-0.4.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 112.1 kB
Release files / besa-0.4.5.tar.gz
| Download URL | besa-0.4.5.tar.gz |
|---|---|
| Size | 63.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7198b1e0546218b672b6365f7c97e4e854d967b1404b55d5281fa21541f9b018
|
|
BLAKE2b-256 checksum How to use checksums |
354797a9613762c55d8afa988a93cc8536a5107486e1b2dc54beb95331f057d7
|
| 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.5-py3-none-any.whl
| Download URL | besa-0.4.5-py3-none-any.whl |
|---|---|
| Size | 48.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8792b82f79c7c2aa6dfadbf3c915f8ad2b5319992120528e7f444df4fddf793e
|
|
BLAKE2b-256 checksum How to use checksums |
8d5d70381e4ca79d9c9f27d0b29e3d80994165b0b2c3d673f1e7afd501fa2500
|
| 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
|