a Fortran Building System
Project description
FoBiS — Fortran Building System
Automatic dependency-resolving build tool for modern Fortran projects — no makefiles, no boilerplate.
| ⚡ Zero-configuration builds | 🔗 Automatic dependency resolution | ⚙️ Multi-compiler support | 📄 fobos — the FoBiS makefile |
|---|---|---|---|
Drop FoBiS into any Fortran project and run fobis build. It recursively scans sources, resolves all use and include dependencies, and compiles in the correct order — automatically. |
Parses every source file for module definitions, use statements, and include directives. Builds and updates the full dependency hierarchy on each run, skipping up-to-date objects. | First-class support for GNU gfortran, Intel ifort/ifx, AMD flang, g95, IBM XL, NAG, PGI, NVIDIA nvfortran, and fully custom compilers. MPI, OpenMP, coarray, and coverage variants included. | A concise INI-style configuration file replaces makefiles entirely. Define multiple build modes, templates, variables, and custom rules — all in one readable file. |
| 🚀 Parallel compilation | 🌐 Fetch GitHub dependencies | 🔬 Introspective doctests | 🆓 Free and open source |
Compile independent translation units concurrently with -j N. Dependency ordering is respected automatically; only the safe parallel frontier is compiled in parallel. |
Declare external FoBiS projects in a [dependencies] fobos section. Run fobis fetch to clone, pin to branch/tag/rev, and build — then fobis build picks them up automatically. |
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. | Released under the GNU GPL v3 license. Free to use, study, modify, and distribute. Contributions welcome — see the contributing guidelines. |
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
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@cnr.it · 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fobis_py-3.6.10.tar.gz.
File metadata
- Download URL: fobis_py-3.6.10.tar.gz
- Upload date:
- Size: 64.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6a01e32071c8b04ca93c47b6aa0ff8da3163a3a560b447dd54c05f4a6dcb13b
|
|
| MD5 |
abe64931d96e4566f063e71b1aab15ea
|
|
| BLAKE2b-256 |
c40293f74d64187b71142fc6fbfa88054aee9357e659f4f20b9bb0cf0553f98c
|
Provenance
The following attestation bundles were made for fobis_py-3.6.10.tar.gz:
Publisher:
python-package.yml on szaghi/FoBiS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fobis_py-3.6.10.tar.gz -
Subject digest:
f6a01e32071c8b04ca93c47b6aa0ff8da3163a3a560b447dd54c05f4a6dcb13b - Sigstore transparency entry: 1110232950
- Sigstore integration time:
-
Permalink:
szaghi/FoBiS@c378eb4b0995d868f2de49e1c7fd676e0533ae3a -
Branch / Tag:
refs/tags/v3.6.10 - Owner: https://github.com/szaghi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@c378eb4b0995d868f2de49e1c7fd676e0533ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file fobis_py-3.6.10-py3-none-any.whl.
File metadata
- Download URL: fobis_py-3.6.10-py3-none-any.whl
- Upload date:
- Size: 69.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e23b7753e90e9210ed8bfdbc794cd90d04d22cb47b4144846c2f31d7b4891d1
|
|
| MD5 |
efa63060019454dedf766bf87086dbe3
|
|
| BLAKE2b-256 |
edd871a1d6b139fd2c339f7d8ca228e531093298508b42e43a78cc8485f0a52a
|
Provenance
The following attestation bundles were made for fobis_py-3.6.10-py3-none-any.whl:
Publisher:
python-package.yml on szaghi/FoBiS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fobis_py-3.6.10-py3-none-any.whl -
Subject digest:
0e23b7753e90e9210ed8bfdbc794cd90d04d22cb47b4144846c2f31d7b4891d1 - Sigstore transparency entry: 1110233036
- Sigstore integration time:
-
Permalink:
szaghi/FoBiS@c378eb4b0995d868f2de49e1c7fd676e0533ae3a -
Branch / Tag:
refs/tags/v3.6.10 - Owner: https://github.com/szaghi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@c378eb4b0995d868f2de49e1c7fd676e0533ae3a -
Trigger Event:
push
-
Statement type: