Skip to content
Snippets Groups Projects
Select Git revision
  • 9b540ee23880b11cbe66f36186abbc5aedc685b1
  • master default protected
  • v1.10.0
  • v1.9.0
  • v1.8.0
  • v1.7.1
  • v1.7.0
  • v1.6.0
  • v1.5.2
  • v1.5.1
  • v1.5.0
  • v1.4.2
  • v1.4.1
  • v1.4
  • v1.4.0
  • v1.3
  • v1.3.0
  • v1.2
  • v1.2.0
  • v1.1
  • v1.1.0
  • v1.0
22 results

netlib-f2c

  • Clone with SSH
  • Clone with HTTPS
  • Tim Kaune's avatar
    Tim Kaune authored
    The package config takes the minimum required CMake version from the
    main project.
    
    Also introduce the maximum supported CMake version for policy management.
    9b540ee2
    History

    Netlib F2C

    This project provides a CMake framework, that automatically downloads and builds the Fortran-to-C converter f2c from Netlib (https://www.netlib.org/f2c/) and the accompanying library libf2c.

    Prerequisites

    What you need:

    Linux (Ubuntu)

    Use your distribution's package manager to install the packages cmake, ninja and gcc.

    $ sudo apt-get install cmake ninja gcc

    Mac OS X

    Homebrew

    $ brew install cmake ninja gcc

    MacPorts

    $ sudo port install cmake ninja gcc

    Windows

    Install Cygwin and use the Cygwin package manager to install the packages cmake, ninja and gcc-core.

    How to compile

    1. (Optional) First, build the LoadStaticSharedTargets project and install it either system-wide or in a central location, e. g. somewhere in your home directory. Please refer to the project README for build instructions. If you skip this step, LoadStaticSharedTargets should automatically be downloaded and included in your build. But you might end up compiling some parts multiple times unnecessarily.

    2. Clone the git repository or download the source code archive and unpack it to an arbitrary directory (e.g. netlib-f2c).

    3. Go to this directory and type cmake --list-presets. A list of available build configurations will be shown to you.

    4. For building with ninja, type cmake --preset ninja-shared-release, if you installed LoadStaticSharedTargets system-wide or not at all. Otherwise, type

      $ cmake -DCMAKE_PREFIX_PATH="/path/to/LoadStaticSharedTargets/install/prefix" --preset ninja-shared-release

      Replace the path to the LoadStaticSharedTargets install prefix with the actual path on your system! The license of the NetlibF2C source code will be shown to you. If you accept this license, add the required variable to the previous command:

      $ cmake -DNetlibF2C_LICENSE_ACCEPTED=YES --preset ninja-shared-release

      or

      $ cmake -DCMAKE_PREFIX_PATH="/path/to/LoadStaticSharedTargets/install/prefix" -DNetlibF2C_LICENSE_ACCEPTED=YES --preset ninja-shared-release

      This will populate the build/shared directory with a CMake build tree.

    5. Now, you can build with cmake --build ./build/shared. You should see some informative terminal output.

    6. Finally, install the built artifacts to the bin folder with cmake --install ./build/shared --prefix ./bin. You can also specify a different install prefix, e. g. if you want to install system-wide: cmake --install ./build/shared --prefix /usr/local (might require sudo). You can also install either only the executable or only the library with cmake --install ./build/shared --prefix <any> --component executable or cmake --install ./build/shared --prefix <any> --component library.

    7. Repeat steps 4. - 6. with cmake --preset ninja-static-release and the build directory ./build/static.

    Now, the f2c code is compiled and you can use it in other projects. The installed f2c package is discoverable by CMake as NetlibF2C. In the CMakeLists.txt of the other project, call:

    find_package(NetlibF2C CONFIG REQUIRED)

    This makes two CMake targets available to you, the Netlib::f2c executable target and the Netlib::libf2c library target (static or shared depends on the value of BUILD_SHARED_LIBS in the other project).

    Then, to help CMake discover the NetlibF2C package, call CMake for the other project like this:

    $ cmake -B ./build -DCMAKE_PREFIX_PATH="/path/to/NetlibF2C/install/prefix"

    Replace the path to the NetlibF2C install prefix with the actual path on your system! If NetlibF2C is installed in a proper system-wide location, the CMAKE_PREFIX_PATH shouldn't be necessary.

    For more information read the f2c executable's man page.

    References

    S. I. Feldman, David M. Gay, Mark W. Maimone, and N. L. Schryer. 1990. A Fortran-to-C Converter. AT&T Bell Laboratories Murray Hill, NJ 07974 (May 1990). Computing Science Technical Report No. 149. https://www.netlib.org/f2c/f2c.pdf