I am happy to announce FoBiS v3.7.8
FoBiS has been developed as a Fortran Building System that eliminates manual dependency tracking and makefile maintenance. Nowadays, it can do much more!
Automatic dependency-resolving build tool for modern Fortran projects — no makefiles, no boilerplate.
Package manager with deep GitHub integration for fetching and installing dependencies.
Introspective doctests, AI-powered commits, and scaffold sync for professional project workflows.
| Feature | Description |
|---|---|
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. |
|
| A concise INI-style configuration file replaces makefiles entirely. Define multiple build modes, templates, variables, and custom rules — all in one readable file. | |
Declare dependencies in a [dependencies] fobos section — fobis fetch clones, pins to branch/tag/rev, and pre-builds them; fobis build picks them up automatically. Install any GitHub-hosted FoBiS project directly with fobis install user/repo. |
|
| 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. | |
Pass --json to fobis build, fobis clean, or fobis fetch for machine-readable structured output — ideal for CI and AI agent workflows. Install the bundled /fobis Claude Code skill for expert AI assistance right in your editor. |
|
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. |
|
| Generate well-formed Conventional Commits messages for staged changes via a local LLM. Supports Ollama and any OpenAI-compatible endpoint — no cloud account, no API key, no data leaving your machine. | |
| Released under the GNU GPL v3 license. Free to use, study, modify, and distribute. Contributions welcome. |
Overview
FoBiS parses your source files, builds a complete module dependency graph, and compiles everything in the correct order—automatically.
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.
# Zero-configuration build
fobis build
The Fobos File — Your Fortran Makefile
A concise INI-style configuration file replaces makefiles entirely:
[modes]
modes = debug release
[debug]
compiler = gnu
cflags = -c -O0 -g -Wall
build_dir = ./build/debug/
[release]
template = debug
cflags = -c -O3
- Multiple modes: Define debug, release, coverage, and more
- Templates: Modes inherit settings—define common flags once, override what differs
- Local variables: Use
$varsyntax for DRY configurations - Custom rules: Define project-specific workflows
# Build with a specific mode
fobis build --mode release
Advanced Features
GitHub Dependency Fetching
Declare dependencies in your fobos [dependencies] section—fobis fetch clones, pins to branch/tag/rev, and pre-builds them:
[dependencies]
penf = https://github.com/szaghi/PENF :: tag=v1.5.0
stdlib = https://github.com/fortran-lang/stdlib :: tag=v0.5.0 :: use=fobos
jsonfort = https://github.com/jacobwilliams/json-fortran :: branch=main
Two integration modes:
use=sources(default): Dependency sources compiled inline with your projectuse=fobos: Dependency built as a separate library, linked viadependon
Fetched dependencies are stored in .fobis_deps/ with automatic config persistence.
GitHub Package Installation
Install any GitHub-hosted FoBiS project like a package manager:
# Install latest default branch
fobis install szaghi/FLAP
# Pin to specific tag, custom prefix
fobis install szaghi/FLAP --tag v2.0.0 --prefix ~/.local
# Install from branch with specific mode
fobis install szaghi/FLAP --branch develop --mode gnu
Artifacts (executables, libraries, .mod files) are installed to bin/, lib/, and include/ respectively.
Introspective Doctests
Embed micro-unit-tests directly inside Fortran module docstrings—inspired by Python’s doctest module:
module mymath
implicit none
!> Adds two numbers
!```fortran
! use mymath
! print *, add(2, 3)
!```
!=> 5 <<<
contains
integer function add(a, b)
integer, intent(in) :: a, b
add = a + b
end function
end module
# Run all doctests
fobis doctests
FoBiS generates volatile test programs, compiles them against your modules, and verifies output—no test harness needed.
LLM-Powered Commit Messages
Generate well-formed Conventional Commits messages using a local LLM—no cloud account, no API key, no data leaving your machine:
# Generate commit message for staged changes
fobis commit
# Use Ollama with a specific model
fobis commit --backend ollama --model llama3.2
# Review and apply automatically
fobis commit --apply
Supports Ollama and any OpenAI-compatible endpoint (LM Studio, vLLM, llama.cpp).
JSON Output for CI/CD and AI Agents
Pass --json to fobis build, fobis clean, or fobis fetch for machine-readable structured output—ideal for CI pipelines and AI agent workflows:
fobis build --json
Claude Code Skill
Install the bundled /fobis Claude Code skill for expert AI assistance right in your editor—get contextual help with build issues, dependency management, and project configuration.
Project Scaffolding
Keep CI workflows, docs configs, license files, and boilerplate in sync across all your Fortran repos:
# Check sync status
fobis scaffold status
# Preview updates
fobis scaffold sync --dry-run
# Apply all updates
fobis scaffold sync --yes
# Bootstrap a new project
fobis scaffold init
All templates are bundled inside FoBiS—no external dependencies. Project variables ({{NAME}}, {{AUTHORS}}, {{REPOSITORY}}) are resolved from fobos [project], git remote, and git config.
Parallel Compilation
Build large projects faster with concurrent compilation:
fobis build --jobs 8
FoBiS uses Python’s multiprocessing.Pool to compile independent files in parallel while respecting dependency order.
GNU Makefile Generation
Generate Makefiles for environments without FoBiS.py:
fobis build --makefile
Outputs a standard Makefile with FC, OPTSC, OPTSL, LIBS, and directory variables.
Custom Rules
Define project-specific workflows in your fobos file:
[rule-lint]
help = Run linter on sources
rule = fpm-fortran lint src/
[rule-docs]
help = Generate documentation
rule = ford project.md
Execute with fobis rule lint or fobis rule docs.
What’s New in v3.7.8
- Full Typer CLI migration: Modern CLI with subcommands, better error messages, improved help
- Scaffold subcommand: Complete project boilerplate generation with CI/CD, docs, and license sync
- LLM commit command: AI-powered Conventional Commits message generation via local LLM
- Enhanced fetch: Per-dependency
use=sources|fobosmodes for flexible integration - Install command: GitHub package manager mode with
--tag,--branch,--revpinning - JSON output: Machine-readable output for CI/CD and AI agent workflows
- Improved version resolution: Automatic detection from fobos
[project]and git tags - Better interdependent builds: Automatic loading of fetched dependencies during build
- Claude Code skill: Bundled skill for AI-assisted development
Resources
- Source Code: GitHub - szaghi/FoBiS: FoBiS.py, Fortran projects Building System · GitHub
- Documentation: FoBiS.py
- PyPI: Client Challenge
- Issues: Issues · szaghi/FoBiS · GitHub
- Quick Start: Quick Start | FoBiS.py
FoBiS.py is released under the GNU General Public License v3 (GPLv3).