• Stars
    star
    879
  • Rank 51,943 (Top 2 %)
  • Language
    Fortran
  • License
    MIT License
  • Created almost 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fortran Package Manager (fpm)

Fortran Package Manager

Fortran Package Manager (fpm) is a package manager and build system for Fortran. Its key goal is to improve the user experience of Fortran programmers. It does so by making it easier to build your Fortran program or library, run the executables, tests, and examples, and distribute it as a dependency to other Fortran projects. Fpm's user interface is modeled after Rust's Cargo, so if you're familiar with that tool, you will feel at home with fpm. Fpm's long term vision is to nurture and grow the ecosystem of modern Fortran applications and libraries.

Fpm is an early prototype and is evolving rapidly. You can use it to build and package your Fortran projects, as well as to use existing fpm packages as dependencies. Fpm's behavior and user interface may change as it evolves, however as fpm matures and we enter production, we will aim to stay backwards compatible. Please follow the issues to contribute and/or stay up to date with the development. Before opening a bug report or a feature suggestion, please read our Contributor Guide. You can also discuss your ideas and queries with the community in fpm discussions, or more broadly on Fortran-Lang Discourse.

Fortran Package Manager is not to be confused with Jordan Sissel's fpm, a more general, non-Fortran related package manager.

Website: https://fpm.fortran-lang.org/

Download

Fpm is available on many platforms and through multiple package managers, see our Documentation webpage for a list of All Supported Installations.

The easiest installation routes are shown below.

Binary

Binaries for the latest stable release are available to download for Windows, MacOS, and Linux.

Note: On Linux and MacOS, you will need to enable executable permission before you can use the binary.

e.g. $ chmod u+x fpm-0.6.0-linux-x86_64

The binaries at the current tag are updated automatically to always provide the current git version from the default branch.

Conda

Fpm is available on conda-forge, to add conda-forge to your channels use:

conda config --add channels conda-forge

Fpm can be installed with:

conda create -n fpm fpm
conda activate fpm

The conda package manager can be installed from miniforge or from miniconda.

Homebrew

The Fortran Package Manager (fpm) is available for the Homebrew package manager via an additional tap. To install fpm via brew, include the new tap and install using

brew tap fortran-lang/fortran
brew install fpm

Binary distributions are available for MacOS 11 (Catalina) and 12 (Big Sur) for x86_64 architectures. For other platforms fpm will be built locally from source automatically.

Fpm should be available and functional after those steps. For more details checkout the tap here.

Get started

Follow our Quickstart Tutorial to get familiar with fpm.

Start a new project

Creating a new fpm project is as simple as running the command fpm new project_name. This will create a new folder in your current directory with the following contents and initialized as a git repository.

  • fpm.toml – with your project’s name and some default standard meta-data
  • README.md – with your project’s name
  • .gitignore
  • src/project_name.f90 – with a simple hello world subroutine
  • app/main.f90 (if --app flag used) – a program that calls the subroutine
  • test/main.f90 (if --test flag used) – an empty test program

Building your Fortran project with fpm

fpm understands the basic commands:

  • fpm build – build your library, executables and tests
  • fpm run – run executables
  • fpm test – run tests
  • fpm install - installs the executables locally

The command fpm run can optionally accept the name of the specific executable to run, as can fpm test; like fpm run specific_executable. Command line arguments can also be passed to the executable(s) or test(s) with the option -- some arguments.

See additional instructions in the Packaging guide or the manifest reference.

Environmental variables

The table below lists the environment variables that control fpm's choice of compilers, compiler flags, archiver locations, and link flags, each of which can be overridden by passing fpm flags also shown in the table.

Environment Variable Defines Overridden by
FPM_FC Fortran compiler path --compiler
FPM_CC C compiler path --c-compiler
FPM_CXX C++ compiler path --cxx-compiler
FPM_FFLAGS Fortran compiler flags --flag
FPM_CFLAGS C compiler flags --c-flag
FPM_CXXFLAGS C++ compiler flags --cxx-flag
FPM_AR Archiver path --archiver
FPM_LDFLAGS Link flags --link-flag

More Repositories

1

stdlib

Fortran Standard Library
Fortran
1,066
star
2

fprettify

auto-formatter for modern fortran source code
Python
373
star
3

fortls

fortls - Fortran Language Server
Python
249
star
4

vscode-fortran-support

Fortran language support for Visual Studio Code
TypeScript
212
star
5

fortran-lang.org

(deprecated) Fortran website
HTML
130
star
6

minpack

Modernized Minpack: for solving nonlinear equations and nonlinear least squares problems
Fortran
94
star
7

test-drive

The simple testing framework
Fortran
81
star
8

setup-fortran

GitHub action to setup Fortran compiler and toolchain
Shell
75
star
9

fftpack

Double precision version of fftpack
Fortran
67
star
10

http-client

http-client offers a user-friendly, high-level API to make HTTP requests in Fortran.
Fortran
58
star
11

webpage

New Fortran webpage
Python
47
star
12

fpm-registry

Centralized registry of fpm packages
Python
36
star
13

playground

An interactive Fortran playground
JavaScript
34
star
14

fpm-docs

Documentation repository for the Fortran package manager (fpm)
Fortran
34
star
15

setup-fpm

GitHub Action to setup the Fortran Package Manager for CI on Ubuntu, MacOS and Windows.
JavaScript
29
star
16

benchmarks

Fortran benchmarks
C
19
star
17

stdlib-docs

Documentation for https://github.com/fortran-lang/stdlib
HTML
18
star
18

homebrew-fortran

Homebrew tap for Fortran tooling and libraries
Ruby
13
star
19

talks

Repository for talks and presentations about fortran-lang projects
TeX
13
star
20

stdlib-cmake-example

Integration of the Fortran standard library in CMake projects
Fortran
13
star
21

fortran-forum-article-template

Article template for the ACM Fortran Forum
Shell
9
star
22

registry

Registry for Fortran package manager
JavaScript
8
star
23

fpm-metadata

Python model for Fortran package manifests
Python
6
star
24

fpm-on-wheels

Fortran package manager on wheels
Shell
4
star
25

assets

Assets, artwork and graphics for fortran-lang
HTML
3
star
26

fpm-haskell

The legacy Haskell implementation of fpm. No longer under active development.
Haskell
2
star
27

.github

Community-wide resources and default files for Fortran-lang
2
star