Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -17,7 +17,7 @@
set(OPENMP_ENABLE_WERROR FALSE CACHE BOOL
"Enable -Werror flags to turn warnings into errors for supporting compilers.")
set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING
- "suffix of lib installation directory, e.g. 64 => lib64")
+ "Suffix of lib installation directory, e.g. 64 => lib64")
# Group test settings.
set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING
Index: README.rst
===================================================================
--- /dev/null
+++ README.rst
@@ -0,0 +1,332 @@
+========================================
+How to Build the LLVM* OpenMP* Libraries
+========================================
+
+This repository requires `CMake `_ v2.8.0 or above.
+For more information than available in this document please see
+`LLVM's CMake documentation `_ and the
+`official documentation `_.
+
+.. contents::
+ :local:
+
+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:
+
+ .. code-block:: console
+
+ $ mkdir build
+ $ cd build
+ $ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. # 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 include
+ the ``-G `` option:
+
+ .. code-block:: console
+
+ $ cmake -G "Unix Makefiles" ...
+
+ You can see a list of generators CMake supports by executing the cmake command
+ with no arguments.
+
+Instructions to Build
+=====================
+.. code-block:: console
+
+ $ cd openmp_top_level/ [ this directory with libomptarget/, runtime/, etc. ]
+ $ mkdir build
+ $ cd build
+
+ [ Unix* Libraries ]
+ $ cmake -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER= ..
+
+ [ Windows Libraries ]
+ $ cmake -G -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER= -DCMAKE_ASM_MASM_COMPILER=[ml | ml64] -DCMAKE_BUILD_TYPE=Release ..
+
+ $ make
+ $ make install
+
+CMake options
+=============
+
+Builds with CMake can be customized by means of options as already seen above.
+One possibility is to pass them via the command line:
+
+.. code-block:: console
+
+ $ cmake -DOPTION= path/to/source
+
+.. note:: The first value listed is the respective default for that option.
+
+Generic options
+---------------
+
+For full documentation, consult the CMake manual, or execute
+``cmake --help-variable VARIABLE_NAME``.
+
+**CMAKE_BUILD_TYPE** = ``Release|Debug|RelWithDebInfo``
+ Build type can be ``Release``, ``Debug``, or ``RelWithDebInfo`` which chooses
+ the optimization level and presence of debugging symbols.
+
+**CMAKE_C_COMPILER** =
+ Specify the C compiler.
+
+**CMAKE_CXX_COMPILER** =
+ Specify the C++ compiler.
+
+**CMAKE_Fortran_COMPILER** =
+ Specify the Fortran compiler. This option is only needed when
+ **LIBOMP_FORTRAN_MODULES** is ``ON`` (see below). So typically, a Fortran
+ compiler is not needed during the build.
+
+**CMAKE_ASM_MASM_COMPILER** = ``ml|ml64``
+ This option is only relevant for Windows*.
+
+Options for all libraries
+-------------------------
+
+**OPENMP_ENABLE_WERROR** = ``OFF|ON``
+ Treat warnings as errors and fail, if a compiler warning is triggered.
+
+**OPENMP_LIBDIR_SUFFIX** = ``""``
+ Extra suffix to append to the directory where libraries are to be installed.
+
+**OPENMP_TEST_C_COMPILER** = ``${CMAKE_C_COMPILER}``
+ Compiler to use for testing. Defaults to the compiler that was also used for
+ building.
+
+**OPENMP_TEST_CXX_COMPILER** = ``${CMAKE_CXX_COMPILER}``
+ Compiler to use for testing. Defaults to the compiler that was also used for
+ building.
+
+**OPENMP_LLVM_TOOLS_DIR** = ``/path/to/built/llvm/tools``
+ Additional path to search for LLVM tools needed by tests.
+
+**OPENMP_LLVM_LIT_EXECUTABLE** = ``/path/to/llvm-lit``
+ Specify full path to ``llvm-lit`` executable for running tests. The default is
+ to search the ``PATH`` and the directory in **OPENMP_LLVM_TOOLS_DIR**.
+
+**OPENMP_FILECHECK_EXECUTABLE** = ``/path/to/FileCheck``
+ Specify full path to ``FileCheck`` executable for running tests. The default
+ is to search the ``PATH`` and the directory in **OPENMP_LLVM_TOOLS_DIR**.
+
+Options for ``libomp``
+----------------------
+
+**LIBOMP_ARCH** = ``aarch64|arm|i386|mic|mips|mips64|ppc64|ppc64le|x86_64``
+ The default value for this option is chosen based on probing the compiler for
+ architecture macros (e.g., is ``__x86_64__`` predefined by compiler?).
+
+**LIBOMP_MIC_ARCH** = ``knc|knf``
+ Intel(R) MIC architecture to build for. This value is ignored if
+ **LIBOMP_ARCH** does not equal ``mic``.
+
+**LIBOMP_OMP_VERSION** = ``50|45|40|30``
+ OpenMP version to build for. Older versions will disable certain functionality
+ and entry points.
+
+**LIBOMP_LIB_TYPE** = ``normal|profile|stubs``
+ Library type can be ``normal``, ``profile``, or ``stubs``.
+
+**LIBOMP_USE_VERSION_SYMBOLS** = ``ON|OFF``
+ Use versioned symbols for building the library. This option only makes sense
+ for ELF based libraries where version symbols are supported (Linux, some BSD*
+ variants). It is ``OFF`` by default for Windows and Mac, but ``ON`` for other
+ Unix based operating systems.
+
+**LIBOMP_ENABLE_SHARED** = ``ON|OFF``
+ Build a shared library. If this option is ``OFF``, static OpenMP libraries
+ will be built instead of dynamic ones. Note: Static libraries are not
+ supported on Windows.
+
+**LIBOMP_FORTRAN_MODULES** = ``OFF|ON``
+ Create the Fortran modules (requires Fortran compiler).
+
+Mac* Fat Libraries
+""""""""""""""""""
+On OS X* machines, it is possible to build universal (or fat) libraries which
+include both i386 and x86_64 architecture objects in a single archive.
+
+.. code-block:: console
+
+ $ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_OSX_ARCHITECTURES='i386;x86_64' ..
+ $ make
+
+There is also an option **LIBOMP_OSX_ARCHITECTURES** which can be set in case
+this is an LLVM source tree build which will only set the libomp library to a
+universal fat library and prevent having the entire LLVM/Clang build produce
+universal binaries.
+
+Optional features
+"""""""""""""""""
+
+**LIBOMP_USE_ADAPTIVE_LOCKS** = ``ON|OFF``
+ Include adaptive locks, based on Intel(R) Transactional Synchronization
+ Extensions (Intel(R) TSX)? This is x86 specific. This feature is turned ``ON``
+ by default for IA-32 architecture and Intel(R) 64 architecture.
+
+**LIBOMP_USE_INTERNODE_ALIGNMENT** = ``OFF|ON``
+ Align certain data structures on 4096-byte. This option is useful on
+ multi-node systems where a small ``CACHE_LINE`` setting leads to false sharing.
+
+**LIBOMP_OMPT_SUPPORT** = ``OFF|ON``
+ Include support for the OpenMP Tools Interface.
+
+**LIBOMP_OMPT_OPTIONAL** = ``ON|OFF``
+ Include support for optional OMPT functionality. This option is ignored if
+ **LIBOMP_OMPT_SUPPORT** is ``OFF``.
+
+**LIBOMP_STATS** = ``OFF|ON``
+ Include stats-gathering code.
+
+**LIBOMP_USE_DEBUGGER** = ``OFF|ON``
+ Include the friendly debugger interface.
+
+**LIBOMP_USE_HWLOC** = ``OFF|ON``
+ Use `OpenMPI's hwloc library `_ for
+ topology detection and affinity.
+
+**LIBOMP_HWLOC_INSTALL_DIR** = ``/path/to/hwloc/install/dir``
+ Specify install location of hwloc. The configuration system will look for
+ ``hwloc.h`` in ``${LIBOMP_HWLOC_INSTALL_DIR}/include`` and the library in
+ ``${LIBOMP_HWLOC_INSTALL_DIR}/lib``. The default is ``/usr/local``.
+ This option is only used if **LIBOMP_USE_HWLOC** is ``ON``.
+
+Additional compiler flags
+"""""""""""""""""""""""""
+
+These flags are **appended**, they do not overwrite any of the preset flags.
+
+**LIBOMP_CPPFLAGS** =
+ Additional C preprocessor flags.
+
+**LIBOMP_CFLAGS** =
+ Additional C compiler flags.
+
+**LIBOMP_CXXFLAGS** =
+ Additional C++ compiler flags.
+
+**LIBOMP_ASMFLAGS** =
+ Additional assembly flags.
+
+**LIBOMP_LDFLAGS** =
+ Additional linker flags.
+
+**LIBOMP_LIBFLAGS** =
+ Additional libraries to link.
+
+**LIBOMP_FFLAGS** =
+ Additional Fortran compiler flags.
+
+Options for ``libomptarget``
+----------------------------
+
+**LIBOMPTARGET_OPENMP_HEADER_FOLDER** = ``""``
+ Path of the folder that contains ``omp.h``. This is required for testing
+ out-of-tree builds.
+
+**LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER** = ``""``
+ Path of the folder that contains libomp.so. This is required for testing
+ out-of-tree builds.
+
+Options for the NVPTX device RTL
+""""""""""""""""""""""""""""""""
+
+**LIBOMPTARGET_NVPTX_ENABLE_BCLIB** = ``OFF|ON``
+ Enable CUDA LLVM bitcode offloading device RTL. This is used for link time
+ optimization of the OpenMP runtime and application code.
+
+**LIBOMPTARGET_NVPTX_CUDA_COMPILER** =
+ Location of a CUDA compiler capable of emitting LLVM bitcode. Currently only
+ the Clang compiler is supported. If unspecified, the default paths are
+ inspected. This is only used if **LIBOMPTARGET_NVPTX_ENABLE_BCLIB** is ``ON``.
+
+**LIBOMPTARGET_NVPTX_BC_LINKER** =
+ Location of a linker capable of linking LLVM bitcode objects. If unspecified,
+ the default paths are inspected. This is only used if
+ **LIBOMPTARGET_NVPTX_ENABLE_BCLIB** is ``ON``.
+
+**LIBOMPTARGET_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.
+
+**LIBOMPTARGET_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 invocations
+-------------------
+
+.. code-block:: console
+
+ $ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
+ $ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
+ $ cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc ..
+
+Advanced Builds with Various Options
+------------------------------------
+
+- Build the i386 Linux library using GCC*
+
+ .. code-block:: console
+
+ $ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_ARCH=i386 ..
+
+- Build the x86_64 debug Mac library using Clang*
+
+ .. code-block:: console
+
+ $ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBOMP_ARCH=x86_64 -DCMAKE_BUILD_TYPE=Debug ..
+
+- Build the library (architecture determined by probing compiler) using the
+ Intel(R) C Compiler and the Intel(R) C++ Compiler. Also, create Fortran
+ modules with the Intel(R) Fortran Compiler.
+
+ .. code-block:: console
+
+ $ cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort -DLIBOMP_FORTRAN_MODULES=on ..
+
+- Have CMake find the C/C++ compiler, and specify additional flags for the C
+ compiler, preprocessor, and C++ compiler.
+
+ .. code-blocks:: console
+
+ $ cmake -DLIBOMP_CFLAGS='-specific-flag' -DLIBOMP_CPPFLAGS='-DNEW_FEATURE=1 -DOLD_FEATURE=0' -DLIBOMP_CXXFLAGS='--one-specific-flag --two-specific-flag' ..
+
+- Build the stubs library
+
+ .. code-blocks:: console
+
+ $ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_LIB_TYPE=stubs ..
+
+**Footnotes**
+
+.. [*] Other names and brands may be claimed as the property of others.
Index: libomptarget/Build_With_CMake.txt
===================================================================
--- libomptarget/Build_With_CMake.txt
+++ /dev/null
@@ -1,142 +0,0 @@
-#
-#//===----------------------------------------------------------------------===//
-#//
-#// 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 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 openmp_top_level/ [ directory with runtime/, libomptarget/, etc. ]
- $ mkdir build
- $ cd build
-
- [ Unix* Libraries ]
- $ cmake -DCMAKE_C_COMPILER= -DCMAKE_CXX_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=
-Specify the C compiler
-
--DCMAKE_CXX_COMPILER=
-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.
-
--DOPENMP_ENABLE_WERROR=true|false
-Should consider warnings as errors.
-
--DOPENMP_LLVM_LIT_EXECUTABLE=""
-Full path to the llvm-lit tool. Required for testing in out-of-tree builds.
-
--DOPENMP_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=
-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=
-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.
Index: libomptarget/README.txt
===================================================================
--- libomptarget/README.txt
+++ libomptarget/README.txt
@@ -22,12 +22,12 @@
$ cmake path/to/openmp -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER=
$ make
-For details about building, please look at Build_With_CMake.txt
+For details about building, please look at README.rst in the parent directory.
Architectures Supported
=======================
-The current library has been only tested in Linux operating system and the
-following host architectures:
+The current library has been only tested in Linux operating system and the
+following host architectures:
* Intel(R) 64 architecture
* IBM(R) Power architecture (big endian)
* IBM(R) Power architecture (little endian)
@@ -58,17 +58,16 @@
===========================================
The following compilers are known to do compatible code generation for
-this RTL:
+this RTL:
- clang (from https://github.com/clang-ykt )
- - clang (development branch at http://clang.llvm.org - several features still
+ - clang (development branch at http://clang.llvm.org - several features still
under development)
-----------------------------------------------------------------------
Notices
=======
-This library and related compiler support is still under development, so the
+This library and related compiler support is still under development, so the
employed interface is likely to change in the future.
*Other names and brands may be claimed as the property of others.
-
Index: runtime/Build_With_CMake.txt
===================================================================
--- runtime/Build_With_CMake.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-#
-#//===----------------------------------------------------------------------===//
-#//
-#// 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* 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++ -DLIBOMP_ARCH=i386 .. # Initial configuration
- $ make
- ...
- $ make clean
- $ cmake -DLIBOMP_ARCH=x86_64 -DCMAKE_BUILD_TYPE=Debug .. # Second configuration
- $ make
- ...
- $ rm -rf *
- $ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_ARCH=x86_64 .. # 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 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 openmp_top_level/ [ directory with runtime/, etc. ]
- $ mkdir build
- $ cd build
-
- [ Unix* Libraries ]
- $ cmake -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER= ..
-
- [ Intel(R) Many Integrated Core Library (Intel(R) MIC Library) ]
- $ cmake -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER= -DLIBOMP_ARCH=mic ..
-
- [ Windows Libraries ]
- $ cmake -G -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER= -DCMAKE_ASM_MASM_COMPILER=[ml | ml64] -DCMAKE_BUILD_TYPE=Release ..
-
- $ make
- $ make install
-
-==================
-Mac* Fat Libraries
-==================
-On OS X* machines, it is possible to build universal (or fat) libraries which
-include both i386 and x86_64 architecture objects in a
-single archive.
- $ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_OSX_ARCHITECTURES='i386;x86_64' ..
- $ make
-There is also an option -DLIBOMP_OSX_ARCHITECTURES which can be set in case
-this is an LLVM source tree build which will only set the libomp library
-to a universal fat library and prevent having the entire llvm/clang build
-produce universal binaries.
-
-===========
-Micro tests
-===========
-After the library has been built, there are five optional microtests that
-can be performed. Some will be skipped based upon the platform.
-To run the tests,
-$ make libomp-micro-tests
-
-=============
-CMake options
-=============
--DCMAKE_C_COMPILER=
-Specify the C compiler
-
--DCMAKE_CXX_COMPILER=
-Specify the C++ compiler
-
--DCMAKE_Fortran_COMPILER=
-This option is only needed when -DLIBOMP_FORTRAN_MODULES is on.
-So typically, a Fortran compiler is not needed during the build.
-Specify the Fortran compiler
-
--DCMAKE_ASM_MASM_COMPILER=[ml | ml64 ]
-This option is Windows* Only
-
--DLIBOMP_ARCH=i386|x86_64|arm|ppc64|ppc64le|aarch64|mic
-The default for the option is chosen based on the probing the compiler for
-architecture macros (e.g., is __x86_64__ predefined by compiler?).
-
-==== First values listed are the default value ====
--DLIBOMP_LIB_TYPE=normal|profile|stubs
-Library type can be normal, profile, or stubs.
-
--DCMAKE_BUILD_TYPE=Release|Debug|RelWithDebInfo
-Build type can be Release, Debug, or RelWithDebInfo.
-
--DLIBOMP_OMP_VERSION=50|45|40|30
-OpenMP version can be either 50, 45, 40 or 30.
-
--DLIBOMP_MIC_ARCH=knc|knf
-This value is ignored if LIBOMP_ARCH != mic
-Intel(R) MIC Architecture, can be knf or knc.
-
--DLIBOMP_FORTRAN_MODULES=off|on
-Should the Fortran modules be created (requires Fortran compiler)
-
--DLIBOMP_USE_ADAPTIVE_LOCKS=on|off
-Should adaptive (Intel(R) Transactional Synchronization Extensions
-(Intel(R) TSX) based) locks be included? These are x86 specific.
-This feature is turned on by default for IA-32 architecture and
-Intel(R) 64 architecture. Otherwise, it is turned off.
-
--DLIBOMP_USE_INTERNODE_ALIGNMENT=off|on
-Should 4096-byte alignment be used for certain data structures?
-This option is useful on multinode systems where a small CACHE_LINE
-setting leads to false sharing. This option is off by default.
-
--DLIBOMP_USE_VERSION_SYMBOLS=on|off
-Should versioned symbols be used for building the library?
-This option only makes sense for ELF based libraries where version
-symbols are supported (Linux, some BSD* variants). It is off
-by default for Windows and Mac, but on for other Unix based operating
-systems.
-
--DLIBOMP_ENABLE_SHARED=on|off
-Shared library instead of static library? (Note: static libraries are not
-supported on Windows). If LIBOMP_ENABLE_SHARED is off, then static OpenMP
-libraries will be built instead of dynamic ones.
-
--DLIBOMP_OMPT_SUPPORT=off|on
-Should OMPT support be included in the build?
-
--DLIBOMP_OMPT_OPTIONAL=on|off
-Should optional OMPT functionality be included in the build?
-Will be ignored if LIBOMP_OMPT_SUPPORT is off.
-
--DLIBOMP_STATS=off|on
-Should include stats-gathering code be included in the build?
-
--DLIBOMP_USE_DEBUGGER=off|on
-Should the friendly debugger interface be included in the build?
-
--DLIBOMP_USE_HWLOC=off|on
-Should the Hwloc library be used for affinity?
-This option is not supported on Windows.
-http://www.open-mpi.org/projects/hwloc
-
--DLIBOMP_HWLOC_INSTALL_DIR=/path/to/hwloc/install/dir
-Default: /usr/local
-This option is only used if LIBOMP_USE_HWLOC is on.
-Specifies install location of Hwloc. The configuration system will look for
-hwloc.h in ${LIBOMP_HWLOC_INSTALL_DIR}/include and the library in
-${LIBOMP_HWLOC_INSTALL_DIR}/lib.
-
--DOPENMP_LLVM_LIT_EXECUTABLE=/path/to/llvm-lit
-Default: search in PATH
-Specifiy full path to llvm-lit executable for running tests.
-
--DOPENMP_LLVM_TOOLS_DIR=/path/to/built/llvm/tools
-Default: search for tools in path
-Additional path to search for LLVM tools needed by tests.
-
-================================
-How to append flags to the build
-================================
-- These flags are *appended*. They do not
- overwrite any of the preset flags.
--DLIBOMP_CPPFLAGS= -- Additional C preprocessor flags
--DLIBOMP_CFLAGS= -- Additional C compiler flags
--DLIBOMP_CXXFLAGS= -- Additional C++ compiler flags
--DLIBOMP_ASMFLAGS= -- Additional assembly flags
--DLIBOMP_LDFLAGS= -- Additional linker flags
--DLIBOMP_LIBFLAGS= -- Additional libraries to link
--DLIBOMP_FFLAGS= -- Additional Fortran compiler flags
-
-=======================
-Example usages of CMake
-=======================
----- Typical usage ----
-cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc ..
-cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
-cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
-
----- With Various Options ----
-- Build the i386 Linux library using GCC*
-cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_ARCH=i386 ..
-
-- Build the x86_64 debug Mac library using Clang*
-cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBOMP_ARCH=x86_64 -DCMAKE_BUILD_TYPE=Debug ..
-
-- Build the library (architecture determined by probing compiler) using the
- Intel(R) C Compiler and the Intel(R) C++ Compiler. Also, create the fortran modules using
- the Intel(R) Fortran Compiler.
-cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort -DLIBOMP_FORTRAN_MODULES=on ..
-
-- Have CMake Find the C/C++ compiler, and specify additional flags for the C compiler, preprocessor, and C++ compiler.
-cmake -DLIBOMP_CFLAGS='-specific-flag' -DLIBOMP_CPPFLAGS='-DNEW_FEATURE=1 -DOLD_FEATURE=0' -DLIBOMP_CXXFLAGS='--one-specific-flag --two-specific-flag' ..
-
----- Build the stubs library ----
-cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_LIB_TYPE=stubs ..
-
-=========
-Footnotes
-=========
-[*] Other names and brands may be claimed as the property of others.
Index: runtime/README.txt
===================================================================
--- runtime/README.txt
+++ runtime/README.txt
@@ -41,7 +41,7 @@
$ cmake path/to/openmp -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER=
$ make
-For details about building, please look at Build_With_CMake.txt
+For details about building, please look at README.rst in the parent directory.
Architectures Supported
=======================