forked from OSchip/llvm-project
[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:
parent
8952deb16e
commit
2a69600b60
127
flang/README.md
127
flang/README.md
|
@ -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
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue