bext builds third-party libraries and helper tools used by
BRL-CAD. By default it prefers suitable
system packages and builds local copies only when they are needed.
Clone the repository, configure with the official auto preset, and build:
git clone https://github.com/BRL-CAD/bext
cd bext
cmake --preset auto
cmake --build build/auto --config Release --parallel 8Submodules are populated on demand during configure. For checkout and platform setup details, see INSTALL.md.
The preset workflow relies on CMake's newer preset support. If you are using CMake 3.19 or 3.20, use the raw configure equivalents below.
If you want to fetch a given profile's source submodules up front instead of letting configure fetch them on demand:
cmake -DPROFILE=auto -P CMake/BextBootstrap.cmake
cmake --preset autoUse LIST_ONLY=ON to preview the selected submodules without fetching them,
and GIT_SHALLOW_CLONE=ON to specify shallow clones during bootstrap.
Build selection happens in three layers:
USE_*options decide which dependency families are in scope.- For in-scope packages, the default behavior is to use a suitable system package if one is found and build a local copy only when needed.
ENABLE_<pkg>=ONorOFFoverrides one package explicitly.
Default USE_* values:
USE_BRLCAD=ONUSE_BRLCAD_EXTRA=ONUSE_GDAL=ONUSE_QT=ONUSE_TCL=ONUSE_APPLESEED=OFFUSE_OSPRAY=OFF
ENABLE_ALL=ON changes step 2 by preferring local builds for packages in the
active USE_* groups. It does not turn on groups whose USE_* option is
OFF.
When bext is driven from a BRL-CAD build, BRLCAD_COMPONENTS can further
narrow some BRL-CAD-related packages to only those needed by the requested
component set.
The supported configure entry points are:
auto- standard BRL-CAD-oriented profile using suitable system packages when foundbundled- standard BRL-CAD-oriented profile with bundled/local builds preferred for all active groupsminimal- core BRL-CAD profile without extras, GDAL, Qt, Tcl/Tk, Appleseed, or OSPRayeverything- all current groups enabled with bundled/local builds preferred throughout
Use them like this:
cmake --preset auto
cmake --preset bundled
cmake --preset minimal
cmake --preset everythingBuild using the preset's build directory:
cmake --build build/auto --config Release --parallel 8auto:
cmake ../bext -DCMAKE_BUILD_TYPE=Releasebundled:
cmake ../bext -DENABLE_ALL=ON -DCMAKE_BUILD_TYPE=Releaseminimal:
cmake ../bext \
-DUSE_BRLCAD_EXTRA=OFF \
-DUSE_GDAL=OFF \
-DUSE_QT=OFF \
-DUSE_TCL=OFF \
-DCMAKE_BUILD_TYPE=Releaseeverything:
cmake ../bext \
-DENABLE_ALL=ON \
-DUSE_APPLESEED=ON \
-DUSE_OSPRAY=ON \
-DCMAKE_BUILD_TYPE=ReleaseBy default, CMAKE_INSTALL_PREFIX is the build directory. bext creates two
output trees under that prefix:
install/- files intended to be bundled with downstream softwarenoinstall/- build-only tools and compile-time-only assets
When BRL-CAD consumes a bext build, BRLCAD_EXT_DIR should point at the
parent directory containing both install/ and noinstall/.
If you used the auto preset, BRLCAD_EXT_DIR should be ../bext/build/auto.
Configure BRL-CAD with:
git clone https://github.com/BRL-CAD/brlcad
mkdir brlcad_build
cd brlcad_build
cmake ../brlcad -DBRLCAD_EXT_DIR=../bext_build -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --parallel 8If you built Qt in bext, also enable Qt in BRL-CAD:
cmake ../brlcad \
-DBRLCAD_EXT_DIR=../bext_build \
-DBRLCAD_ENABLE_QT=ON \
-DCMAKE_BUILD_TYPE=Release- INSTALL.md - platform prerequisites, checkout options, and setup caveats
- DEPENDENCIES.md - package-to-group reference, output classification, and dependency addition workflow
- NOTES.md - maintainer notes and submodule procedures