aboutsummaryrefslogtreecommitdiff
path: root/docs.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs.md')
-rw-r--r--docs.md47
1 files changed, 47 insertions, 0 deletions
diff --git a/docs.md b/docs.md
index 800cfab..1b4aef1 100644
--- a/docs.md
+++ b/docs.md
@@ -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
+```