forked from OSchip/llvm-project
143 lines
5.4 KiB
Plaintext
143 lines
5.4 KiB
Plaintext
#
|
|
#//===----------------------------------------------------------------------===//
|
|
#//
|
|
#// The LLVM Compiler Infrastructure
|
|
#//
|
|
#// This file is dual licensed under the MIT and the University of Illinois Open
|
|
#// Source Licenses. See LICENSE.txt for details.
|
|
#//
|
|
#//===----------------------------------------------------------------------===//
|
|
#
|
|
|
|
=====================================================================
|
|
How to Build the LLVM* OpenMP* Offloading Runtime Library using CMake
|
|
=====================================================================
|
|
|
|
==== Version of CMake required: v2.8.0 or above ====
|
|
|
|
============================================
|
|
How to call cmake initially, then repeatedly
|
|
============================================
|
|
- When calling cmake for the first time, all needed compiler options
|
|
must be specified on the command line. After this initial call to
|
|
cmake, the compiler definitions must not be included for further calls
|
|
to cmake. Other options can be specified on the command line multiple
|
|
times including all definitions in the Build options section below.
|
|
- Example of configuring, building, reconfiguring, rebuilding:
|
|
$ mkdir build
|
|
$ cd build
|
|
$ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. # Initial configuration
|
|
$ make
|
|
...
|
|
$ make clean
|
|
$ cmake -DCMAKE_BUILD_TYPE=Debug .. # Second configuration
|
|
$ make
|
|
...
|
|
$ rm -rf *
|
|
$ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. # Third configuration
|
|
$ make
|
|
- Notice in the example how the compiler definitions are only specified
|
|
for an empty build directory, but other Build options are used at any time.
|
|
- The file CMakeCache.txt which is created after the first call to cmake
|
|
is a configuration file which holds all the values for the Build options.
|
|
These configuration values can be changed using a text editor to modify
|
|
CMakeCache.txt as opposed to using definitions on the command line.
|
|
- To have cmake create a particular type of build generator file simply
|
|
inlude the -G <Generator name> option:
|
|
$ cmake -G "Unix Makefiles" ...
|
|
You can see a list of generators cmake supports by executing cmake with
|
|
no arguments and a list will be printed.
|
|
|
|
=====================
|
|
Instructions to Build
|
|
=====================
|
|
$ cd libomptarget_top_level/ [ directory with plugins/ , deviceRTLs/ , etc. ]
|
|
$ mkdir build
|
|
$ cd build
|
|
|
|
[ Unix* Libraries ]
|
|
$ cmake -DCMAKE_C_COMPILER=<C Compiler> -DCMAKE_CXX_COMPILER=<C++ Compiler> ..
|
|
|
|
$ make
|
|
$ make install
|
|
|
|
===========
|
|
Tests
|
|
===========
|
|
After the library has been built, there are optional tests that can be
|
|
performed. Some will be skipped based upon the platform.
|
|
To run the tests,
|
|
$ make check-libomptarget
|
|
|
|
=============
|
|
CMake options
|
|
=============
|
|
-DCMAKE_C_COMPILER=<C compiler name>
|
|
Specify the C compiler
|
|
|
|
-DCMAKE_CXX_COMPILER=<C++ compiler name>
|
|
Specify the C++ compiler
|
|
|
|
==== First values listed are the default value ====
|
|
-DCMAKE_BUILD_TYPE=Release|Debug|RelWithDebInfo
|
|
Build type can be Release, Debug, or RelWithDebInfo.
|
|
|
|
-DLIBOMPTARGET_ENABLE_WERROR=true|false
|
|
Should consider warnings as errors.
|
|
|
|
-DLIBOMPTARGET_LLVM_LIT_EXECUTABLE=""
|
|
Full path to the llvm-lit tool. Required for testing in out-of-tree builds.
|
|
|
|
-DLIBOMPTARGET_FILECHECK_EXECUTABLE=""
|
|
Full path to the FileCheck tool. Required for testing in out-of-tree builds.
|
|
|
|
-DLIBOMPTARGET_OPENMP_HEADER_FOLDER=""
|
|
Path of the folder that contains omp.h. This is required for testing
|
|
out-of-tree builds.
|
|
|
|
-DLIBOMPTARGET_OPENMP_HOST_RTL_FOLDER=""
|
|
Path of the folder that contains libomp.so. This is required for testing
|
|
out-of-tree builds.
|
|
|
|
==== NVPTX device RTL specific ====
|
|
-DLIBOMPTARGET_NVPTX_ENABLE_BCLIB=false|true
|
|
Enable CUDA LLVM bitcode offloading device RTL. This is used for
|
|
link time optimization of the omp runtime and application code.
|
|
|
|
-DLIBOMPTARGET_NVPTX_CUDA_COMPILER=<CUDA compiler name>
|
|
Location of a CUDA compiler capable of emitting LLVM bitcode.
|
|
Currently only the Clang compiler is supported. This is only used
|
|
when building the CUDA LLVM bitcode offloading device RTL. If
|
|
unspecified, the default paths are inspected.
|
|
|
|
-DLIBOMPTARGET_NVPTX_BC_LINKER=<LLVM bitcode linker>
|
|
Location of a linker capable of linking LLVM bitcode objects.
|
|
This is only used when building the CUDA LLVM bitcode offloading
|
|
device RTL. If unspecified, the default paths are inspected.
|
|
|
|
-DLIBOMPTARGET_NVPTX_ALTERNATE_HOST_COMPILER=""
|
|
Host compiler to use with NVCC. This compiler is not going to be used to produce
|
|
any binary. Instead, this is used to overcome the input compiler checks done by
|
|
NVCC. E.g. if using a default host compiler that is not compatible with NVCC,
|
|
this option can be use to pass to NVCC a valid compiler to avoid the error.
|
|
|
|
-DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITY="35"
|
|
Comma-separated list of CUDA compute capabilities that should be supported by
|
|
the NVPTX device RTL. E.g. for compute capabilities 3.0 and 3.5, the option
|
|
"30,35" should be used.
|
|
|
|
=======================
|
|
Example usages of CMake
|
|
=======================
|
|
---- Typical usage ----
|
|
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
|
|
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
|
|
|
|
---- Request an NVPTX runtime library that supports compute capability 5.0 ----
|
|
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITY="50"
|
|
|
|
=========
|
|
Footnotes
|
|
=========
|
|
[*] Other names and brands may be claimed as the property of others.
|