[flang] Update build instructions (flang-compiler/f18#94)

* Update build instructions

Add an overview and update the build instructions for f18.

Original-commit: flang-compiler/f18@a60060cfe1
Reviewed-on: https://github.com/flang-compiler/f18/pull/94
This commit is contained in:
Steve Scalpone 2018-05-18 13:02:58 -07:00 committed by GitHub
parent 8952deb16e
commit 2a69600b60
1 changed files with 97 additions and 30 deletions

View File

@ -4,45 +4,112 @@ Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
# f18
## Selection of the C/C++ compiler
F18 is a front-end for Fortran.
It is intended to replace the existing front-end in the Flang compiler.
F18 requires a C++17 compiler. The code has been tested with g++
7.2.0, g++ 7.3.0, g++ 8.1.0, and clang 6.0 (using g++ 7.3.0 or 8.1.0 headers,
each with small patches).
Flang is a Fortran compiler targeting LLVM.
For a proper installation, we assume that the PATH and LD_LIBRARY_PATH environment variables
are properly set to use gcc, g++ and the associated libraries.
Visit the Flang wiki for more information about Flang:
cmake will require that the environment variables CC and CXX are properly set (else it would
search for the 'cc' and 'c++' commands which are likely /usr/bin/cc and /usr/bin/c++).
That can be done now or while calling cmake.
https://github.com/flang-compiler/flang/wiki
export CC=gcc
export CXX=g++
Read more about f18 in the documentation directory.
## Installation of LLVM & CLANG 6.0
## Building F18
F18 depends on the LLVM & CLANG libraries even when clang is not used as C++ compiler.
### Selection of the C++ compiler
If those libraries are not provided by your system, then you may want to follow the
build instructions at https://clang.llvm.org/get_started.html .
F18 is written in C++17.
## Installation of F18
The code has been compiled and tested with
GCC versions 7.2.0, 7.3.0, and 8.1.0.
The code has been compiled and tested with clang 6.0
using GCC 7.3.0 or 8.1.0 headers;
however, the headers needed small patches.
######## Choose the installation directory
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.
F18_PREFIX=...
By default,
cmake will search for g++ on your PATH.
The g++ version must be 7.2 or greater in order to build f18.
######## Get Flang sources in $ROOT/f18
cd $ROOT
git clone https://github.com/ThePortlandGroup/f18.git
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
```
######## And build f18 in a dedicated directory
######## Reminder: If LLVM & Clang were not installed in a standard
######## location, then you may also have to specify it via the
######## CMAKE_MODULE_PATH or CMAKE_PREFIX_PATH variables.
mkdir $ROOT/f18-build
cd $ROOT/f18-build
CC=gcc CXX=g++ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$F18_PREFIX $ROOT/f18
make -j 8
make install
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/ThePortlandGroup/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
```