diff options
Diffstat (limited to 'docs.md')
-rw-r--r-- | docs.md | 47 |
1 files changed, 47 insertions, 0 deletions
@@ -24,9 +24,56 @@ sort: permission-alpha favicon: doc/media/favicon.ico print_creation_date: true extra_mods: iso_fortran_env:https://gcc.gnu.org/onlinedocs/gfortran/ISO_005fFORTRAN_005fENV.html + tomlf:https://toml-f.github.io/toml-f + M_CLI2:https://github.com/urbanjost/M_CLI2 creation_date: %Y-%m-%d %H:%M %z md_extensions: markdown.extensions.toc markdown.extensions.smarty --- [TOC] + +# Fortran package manager developer documentation + +This is the main documentation of the Fortran package manager (*fpm*). +This document serves as developer documentation of *fpm* itself and contains general advice for developing in the *fpm* code base. + + +## The package manifest + +The central object describing an *fpm* project is the package manifest ``fpm.toml``. +The manifest is written in TOML, you can find the TOML specification at the official [TOML homepage](https://toml.io). + +The ``fpm.toml`` file targets project developers and maintainers to relieve them from writing build files for their packages. +With the package manifest a central place to collect information about the project is provided. +It contains the versioning and licensing meta data, as well as the information on external dependencies and the required build-tools or compiler settings. + +The manifest format specific to *fpm* projects is documented in the [manifest reference](page/Manifest.html). + +@Note For a more practical but less complete guide on creating *fpm* projects see the [packaging guide](page/Packaging.html). + +The details of the TOML parsing are implemented with using the [tomlf](https://toml-f.github.io/toml-f) module. +Generally, the interface to all TOML related functions for *fpm* is found in the proxy module [[fpm_toml]]. + +All the manifest types are bundled in [[fpm_manifest]]. +While the specific subtables for the package configuration are found in the ``src/fpm/manifest`` directory, they should be reexported in the [[fpm_manifest]] module if they should be elsewhere in *fpm*. + + +## Command line interface + +*fpm* is mainly used as a command line tool. +To work with an *fpm* project as a user you can completely rely on the command line. + +The command line interface is build with the [M_CLI2](https://github.com/urbanjost/M_CLI2) module and can be found in [[fpm_command_line]]. + + +## Generating this documentation + +This documentation is generated by [FORD](https://github.com/Fortran-FOSS-Programmers/FORD). +For more details on the [project file](https://github.com/fortran-lang/fpm/docs.md) and the comment markup in the source code visit the [FORD documentation](https://github.com/Fortran-FOSS-Programmers/ford/wiki). + +To regenerate this documentation run: + +```shell +ford docs.md +``` |