Skip to content

szaghi/FoBiS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

669 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FoBiS β€” Fortran Building System

Latest Version GitHub tag Build Status Coverage GitHub issues Supported Python versions

License

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 & coverage
fobis 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 skill
fobis 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

Full documentation

Why FoBiS?

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 build

For 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
basic build complex dependancy
GH integration, project install GH integration, dependancies fetch
project install dependancies fetch

Scaffold β€” boilerplate management

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 categories

Project 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.

LLM-assisted commit messages

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 settings

Works 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.

Showcases

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

Author

Stefano Zaghi β€” stefano.zaghi@gmail.com Β· GitHub

Copyrights

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.

Packages

 
 
 

Contributors