Coder Social home page Coder Social logo

ibara / f18 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from flang-compiler/f18

0.0 3.0 0.0 5.16 MB

F18 is a front-end for Fortran intended to replace the existing front-end in the Flang compiler

License: Apache License 2.0

CMake 1.05% C++ 92.52% Fortran 5.93% Shell 0.50%

f18's Introduction

f18

F18 is a front-end for Fortran. It is intended to replace the existing front-end in the Flang compiler.

Flang is a Fortran compiler targeting LLVM.

Visit the Flang wiki for more information about Flang:

https://github.com/flang-compiler/flang/wiki

Read more about f18 in the documentation directory.

Building F18

Selection of the C++ compiler

F18 is written in C++17.

The code has been compiled and tested with GCC versions 7.2.0, 7.3.0, 8.1.0, and 8.2.0. The code has been compiled and tested with clang 6.0 using either GCC 7.3.0 or 8.1.0 headers; however, the headers needed small patches.

To build and install f18, there are several options for specifying the C++ compiler. You can have the proper C++ compiler on your path, or you can set the environment variable CXX, or you can define the variable GCC on the cmake command line.

By default, cmake will search for g++ on your PATH. The g++ version must be 7.2 or greater in order to build f18.

Or, if you export CXX, cmake will use the variable CXX to find the C++ compiler. CXX should include the full path to the compiler or a name that will be found on your PATH, e.g. g++-7.2, assuming g++-7.2 is on your PATH.

export CXX=g++-7.2

Or, you can reference the GCC installation directory directly. The CMakeList.txt file uses the variable GCC as the path to the bin directory containing the C++ compiler. GCC can be defined on the cmake command line where <GCC_DIRECTORY> is the path to a GCC installation with bin, lib, etc:

cmake -DGCC=<GCC_DIRECTORY>

To use f18 after it is built, the environment variables PATH and LD_LIBRARY_PATH must be set to use GCC and its associated libraries.

LLVM and Clang dependency

F18 uses components from version 6.0 of LLVM and clang (even when f18 is not compiled with clang).

The instructions to build LLVM and clang can be found at https://clang.llvm.org/get_started.html.

The f18 CMakeList.txt file uses the environment variable Clang_DIR to find the installed components.

To get the correct LLVM and clang libraries included in your f18 build, set the environment variable Clang_DIR to the lib/cmake/clang directory in the clang install directory.

Installation Directory

To specify a custom install location, add -DCMAKE_INSTALL_PREFIX=<INSTALL_PREFIX> to the cmake command where <INSTALL_PREFIX> is the path where f18 should be installed.

Build Types

To create a debug build, add -DCMAKE_BUILD_TYPE=Debug to the cmake command. Debug builds execute slowly.

To create a release build, add -DCMAKE_BUILD_TYPE=Release to the cmake command. Release builds execute quickly.

Get the Source Code

cd where/you/want/the/source
git clone https://github.com/flang-compiler/f18.git

Build F18

cd where/you/want/to/build
export Clang_DIR=<CLANG_CMAKE_DIRECTORY>
cmake <your custom options> where/you/put/the/source/f18
make

f18's People

Contributors

klausler avatar tskeith avatar schauveau avatar schweitzpgi avatar sscalpone avatar hsuauthai avatar austinwells avatar

Watchers

James Cloos avatar Brian Callahan avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.