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
|
# 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++
|
Flang is a Fortran compiler targeting LLVM.
|
||||||
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).
|
|
||||||
|
|
||||||
For a proper installation, we assume that the PATH and LD_LIBRARY_PATH environment variables
|
Visit the Flang wiki for more information about Flang:
|
||||||
are properly set to use gcc, g++ and the associated libraries.
|
|
||||||
|
|
||||||
cmake will require that the environment variables CC and CXX are properly set (else it would
|
https://github.com/flang-compiler/flang/wiki
|
||||||
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.
|
|
||||||
|
|
||||||
export CC=gcc
|
Read more about f18 in the documentation directory.
|
||||||
export CXX=g++
|
|
||||||
|
|
||||||
## 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
|
F18 is written in C++17.
|
||||||
build instructions at https://clang.llvm.org/get_started.html .
|
|
||||||
|
|
||||||
## 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
|
Or, if you export CXX,
|
||||||
cd $ROOT
|
cmake will use the variable CXX to find the C++ compiler.
|
||||||
git clone https://github.com/ThePortlandGroup/f18.git
|
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
|
Or, you can reference the GCC installation directory directly.
|
||||||
######## Reminder: If LLVM & Clang were not installed in a standard
|
The CMakeList.txt file
|
||||||
######## location, then you may also have to specify it via the
|
uses the variable GCC
|
||||||
######## CMAKE_MODULE_PATH or CMAKE_PREFIX_PATH variables.
|
as the path to the bin directory
|
||||||
mkdir $ROOT/f18-build
|
containing the C++ compiler.
|
||||||
cd $ROOT/f18-build
|
GCC can be defined on the cmake command line
|
||||||
CC=gcc CXX=g++ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$F18_PREFIX $ROOT/f18
|
where `<GCC_DIRECTORY>` is the path to a GCC installation with bin, lib, etc:
|
||||||
make -j 8
|
```
|
||||||
make install
|
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