f18

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

Github星跟踪图

F18

F18 is a ground-up implementation of a Fortran front end written in modern C++.
F18, when combined with LLVM, is intended to replace the Flang compiler.

Flang is a Fortran compiler targeting LLVM.
Visit the Flang wiki
for more information about Flang.

Getting Started

Read more about f18 in the documentation directory.
Start with the compiler overview.

To better understand Fortran as a language
and the specific grammar accepted by f18,
read Fortran For C Programmers
and
f18's specifications of the Fortran grammar
and
the OpenMP grammar.

Treatment of language extensions is covered
in this document.

To understand the compilers handling of intrinsics,
see the discussion of intrinsics.

To understand how an f18 program communicates with libraries at runtime,
see the discussion of runtime descriptors.

If you're interested in contributing to the compiler,
read the style guide
and
also review how f18 uses modern C++ features.

Building F18

Get the Source Code

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

Supported C++ compilers

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 version 7.0 and 8.0
using either GNU's libstdc++ or LLVM's libc++.

LLVM dependency

F18 uses components from LLVM.

The instructions to build LLVM can be found at
https://llvm.org/docs/GettingStarted.html.

We highly recommend using the same compiler to compile both llvm and f18.

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

To get the correct LLVM libraries included in your f18 build,
define LLVM_DIR on the cmake command line.

LLVM=<LLVM_INSTALLATION_DIR>/lib/cmake/llvm cmake -DLLVM_DIR=$LLVM ...

where LLVM_INSTALLATION_DIR is
the top-level directory
where llvm is installed.

LLVM dependency for lit Regression tests

F18 has tests that use the lit framework, these tests rely on the
presence of llvm tools as llvm-lit, FileCheck, and others.
These tools are installed when LLVM build set:

LLVM_INSTALL_UTILS=On

to run the regression tests on f18.

Building f18 with GCC

By default,
cmake will search for g++ on your PATH.
The g++ version must be one of the supported versions
in order to build f18.

Or,
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

CXX=/opt/gcc-7.2/bin/g++-7.2 cmake ...

There's a third option!
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> ...

Building f18 with clang

To build f18 with clang,
cmake needs to know how to find clang++
and the GCC library and tools that were used to build clang++.

The CMakeList.txt file expects either CXX or BUILD_WITH_CLANG to be set.

CXX should include the full path to clang++
or clang++ should be found on your PATH.

export CXX=clang++

BUILD_WITH_CLANG can be defined on the cmake command line
where <CLANG_DIRECTORY>
is the path to a clang installation with bin, lib, etc:

cmake -DBUILD_WITH_CLANG=<CLANG_DIRECTORY>

Or GCC can be defined on the f18 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.

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.

Build F18

cd ~/f18/build
cmake -DLLVM_DIR=$LLVM ~/f18/src
make

How to Run the Regression Tests

To run all tests:

cd ~/f18/build
cmake -DLLVM_DIR=$LLVM ~/f18/src
make check-all

To run individual regression tests llvm-lit needs to know the lit
configuration for f18. The parameters in charge of this are:
flang_site_config and flang_config. And they can be set as shown bellow:

<path-to-llvm-lit>/llvm-lit \
 --param flang_site_config=<path-to-f18-build>/test-lit/lit.site.cfg.py \
 --param flang_config=<path-to-f18-build>/test-lit/lit.cfg.py \
  <path-to-fortran-test>

主要指标

概览
名称与所有者flang-compiler/f18
主编程语言
编程语言CMake (语言数: 0)
平台
许可证
所有者活动
创建于2018-01-25 21:34:19
推送于2022-03-01 19:44:00
最后一次提交2022-03-01 11:44:00
发布数0
用户参与
星数228
关注者数13
派生数49
提交数3.1k
已启用问题?
问题数259
打开的问题数57
拉请求数773
打开的拉请求数4
关闭的拉请求数78
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?