Automatic dependency-resolving build tool for modern Fortran projects β no makefiles, no boilerplate. Package manger highly integrated with GitHub, install and fetch project dependencies. Add instrospective doctests to your Fortran project and exploit AI-powered programmatic buildings with the provided AI skill.
| β‘ Zero-configuration builds Drop FoBiS into any Fortran project and run fobis build. It scans sources, resolves all use, include, and module dependencies automatically, and compiles in the correct order β no makefiles, no boilerplate. Convention-based discovery finds src/, source/, and app/ directories automatically. Quick start |
π fobos β the FoBiS makefile A concise INI-style configuration file replaces makefiles entirely. Define multiple build modes, templates, variables, custom rules, feature flags, multi-target sections, and hooks β all in one readable file. fobos reference |
| π GitHub integration Declare dependencies in a [dependencies] fobos section β fobis fetch clones, pins to branch/tag/rev/semver, and pre-builds them; fobis build picks them up automatically. Reproducible builds via fobos.lock. Install any GitHub-hosted FoBiS project directly with fobis install user/repo. Fetch deps Β· Lock file |
ποΈ Named build profiles & feature flags One-word compiler flag presets ( debug, release, asan, coverage) for every supported compiler. Feature flags let you activate named compile-time options without separate build modes β mix and match freely. Build profiles Β· Feature flags |
π§ͺ Integrated test runner & coveragefobis test discovers, compiles, and runs all Fortran test programs β no external harness needed. fobis coverage generates HTML/XML reports via gcovr or lcov and can fail CI when coverage drops below a threshold. Test runner Β· Coverage |
π¬ Introspective doctests Embed micro-unit-tests directly inside Fortran comment docstrings. FoBiS generates, compiles, and runs volatile test programs automatically β inspired by Python's doctest module, no test harness needed. Doctests |
| β‘ Build cache Content-addressed cache keyed on source commit, compiler, and flags β reuses object files across clean builds and branch switches. fobis cache list/clean for housekeeping. Build cache |
π€ Introspect & Claude Code skillfobis introspect --all emits machine-readable JSON of the full project graph β sources, compiler flags, dependencies, targets. Powers the bundled /fobis Claude Code skill for AI-assisted builds right in your editor. introspect Β· Claude skill |
| π Scaffold β boilerplate sync Keep CI workflows, docs configs, license files, and scripts identical across all your Fortran repos. fobis scaffold status shows drift; fobis scaffold sync fixes it; fobis scaffold init bootstraps new projects. All templates bundled inside FoBiS β no extra dependencies. Scaffold reference |
π§ LLM commit messages Generate well-formed Conventional Commits messages for staged changes via a local LLM. Supports Ollama and any OpenAI-compatible endpoint (LM Studio, vLLM, llama.cpp) β no cloud account, no API key, no data leaving your machine. LLM commit guide |
Modern Fortran's module system is powerful β but tracking inter-module compilation order by hand in a makefile quickly becomes a nightmare as project size grows. Every time you add a module, rename a file, or restructure directories, the makefile needs manual updates.
FoBiS solves this completely. It parses source files on every invocation, rebuilds the dependency graph from scratch, and compiles in the correct order β with no configuration required for simple projects.
# That's it. FoBiS finds all programs, resolves all dependencies, compiles.
fobis buildFor complex projects, a single fobos file in the project root replaces makefiles entirely:
[modes]
modes = debug release
[debug]
compiler = gnu
cflags = -c -O0 -g -Wall
build_dir = ./build/debug/
[release]
compiler = gnu
cflags = -c -O3
build_dir = ./build/release/fobis build -mode release| zero-configuration build | simplify complex dependency |
|---|---|
| GH integration, project install | GH integration, dependancies fetch |
fobis scaffold keeps CI workflows, docs configs, license files, and other boilerplate in sync across all your Fortran repos. All templates are bundled inside FoBiS β no external dependencies.
fobis scaffold status # drift report: OK / OUTDATED / MISSING per file
fobis scaffold sync --dry-run # preview diffs without writing
fobis scaffold sync --yes # apply all updates silently
fobis scaffold init # bootstrap a new project (creates src/, docs/, .github/, β¦)
fobis scaffold list # list all managed files and their categoriesProject variables ({{NAME}}, {{AUTHORS}}, {{REPOSITORY}}, β¦) are resolved from the fobos [project] section, the git remote URL, and git config. See the scaffold reference for full details.
fobis commit generates Conventional Commits messages for your staged changes using a local LLM β no cloud account, no API key, no data leaving your machine.
# Stage your changes as usual
git add fobis/Commit.py fobis/cli/commit.py
# Generate the message (print only β you review before committing)
fobis commit
# Generate and commit in one step after interactive review
fobis commit --apply
# Persist your LLM settings
fobis commit --init-config # creates ~/.config/fobis/config.ini
fobis commit --show-config # inspect effective settingsWorks with Ollama (default) and any OpenAI-compatible server (LM Studio, vLLM, llama.cpp). The default model is qwen3-coder:30b-a3b-q4_K_M β a fast mixture-of-experts model that produces excellent commit messages.
See the LLM commit messages guide for setup instructions, model recommendations, and worked examples.
Projects using FoBiS:
- ADAM β Accelerated fluid Dynamics on Adaptive Mesh refinement grids Β |Β GitHub
- BeFoR64 β Base64 encoding/decoding library for Fortran Β |Β GitHub
- FACE β Fortran ANSI Colors and Escape sequences Β |Β GitHub
- FiNeR β Fortran INI ParseR and generator Β |Β GitHub
- FLAP β Fortran command Line Arguments Parser Β |Β GitHub
- FUNDAL β Fortran UNified Device Acceleration Library Β |Β GitHub
- FOSSIL β FOrtran Stereo (si) Litography parser Β |Β GitHub
- MORTIF β MORTon Indexer (Z-order) Fortran environment Β |Β GitHub
- MOTIOn β Modular (HPC) Optimized Toolkit (for) IO (in fortra)n Β |Β GitHub
- PENF β Portability Environment for Fortran Β |Β GitHub
- StringiFor β Strings Fortran Manipulator with steroids Β |Β GitHub
- VecFor β Vector algebra class for Fortran Β |Β GitHub
- VTKFortran β pure Fortran VTK (XML) API Β |Β GitHub
Stefano Zaghi β stefano.zaghi@gmail.com Β· GitHub
FoBiS is an open source project distributed under the GPL v3 license. Anyone interested in using, developing, or contributing to FoBiS is welcome β see the contributing guidelines.