Index: runtime/Build_With_CMake.txt =================================================================== --- runtime/Build_With_CMake.txt +++ runtime/Build_With_CMake.txt @@ -9,8 +9,8 @@ #//===----------------------------------------------------------------------===// # - Building libiomp5 using CMake - ============================= + How to Build the LLVM* OpenMP* Runtime Library using CMake + =========================================== ---- Version of CMake required: v2.8.0 or above ---- @@ -91,9 +91,6 @@ Unix* systems (Optional as compiler is default): This option is only needed when -Dcreate_fortran_modules is true --DCMAKE_ASM_COMPILER= -This option isn't usually needed for Non-Windows* builds - -DCMAKE_ASM_MASM_COMPILER=[ml | ml64 ] This option is Windows* Only @@ -111,15 +108,12 @@ ====================== ==== Architecture ==== ====================== --Darch=32|32e|arm|ppc64|aarch64|mic +-Darch=32|32e|arm|ppc64|ppc64le|aarch64|mic * Architecture can be 32 (IA-32 architecture), 32e (Intel(R) 64 architecture), - arm (ARM architecture), aarch64 (ARMv8 architecture) or ppc64 (PPC64 architecture). - This option, by default is chosen based on the - CMake variable CMAKE_SIZEOF_VOID_P. If it is 8, then Intel(R) 64 architecture - is assumed. If it is 4, then IA-32 architecture is assumed. If you want to - use a different architecture other than x86 based architecture, you must specify - it when calling cmake initially using this -Darch= option or by changing - the arch value via CMakeCache.txt or the CMake GUI after the initial CMake run. + arm (ARM architecture), aarch64 (ARMv8 architecture), ppc64 (PPC64 architecture), + or ppc64le (little endian PPC64 architecture). +* This option, by default 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 ---- -Dlib_type=normal|profile|stubs @@ -145,34 +139,47 @@ -Dstats=off|on Should include stats-gathering code? +-Dompt_support=off|on +Should OMPT support be turned on? +If ompt_support is off, then both ompt_blame and ompt_trace are ignored. + +-Dompt_blame=on|off +should OMPT blame functionality be turned on? + +-Dompt_trace=on|off +should OMPT trace functionality be turned on? + ===================== ==== Micro tests ==== ===================== -After the library has been built, five microtests are performed. -Some will be skipped based upon the platform. +After the library has been built, there are five optional microtests that +can be performed. Some will be skipped based upon the platform. These tests can be turned on (default) or off with the following options: -Dtest_touch=on|off -- Should the touch test be done? -Dtest_relo=on|off -- Should the position independent code test be done? -Dtest_execstack=on|off -- Should the stack be checked for executability? --Dtest_instr=on|off -- Should the Intel(R) MIC Libraries be checked +-Dtest_instr=on|off -- Should the Intel(R) MIC Libraries be checked for correct instruction set? -Dtest_deps=on|off -- Should libiomp5's dependencies be checked? -Dtests=off|on -- Should any of the above tests be done? +If -Dtests=on is specified, the user can then call: +$ make libiomp-micro-tests +which runs the tests. ============================================ ==== How to append flags to compilation ==== ============================================ - These flags are *appended*. They do not overwrite any of the preset flags. --DUSER_CPP_FLAGS= -- Additional C Preprocessor flags +-DLIBIOMP_CPPFLAGS= -- Additional C Preprocessor flags (typically additional -Ddef=val flags) --DUSER_C_FLAGS= -- Additional C compiler flags --DUSER_CXX_FLAGS= -- Additional C++ compiler flags --DUSER_ASM_FLAGS= -- Additional assembly flags --DUSER_LD_FLAGS= -- Additional linker flags --DUSER_LD_LIB_FLAGS= -- Additional libraries to link +-DLIBIOMP_CFLAGS= -- Additional C compiler flags +-DLIBIOMP_CXXFLAGS= -- Additional C++ compiler flags +-DLIBIOMP_ASMFLAGS= -- Additional assembly flags +-DLIBIOMP_LDFLAGS= -- Additional linker flags +-DLIBIOMP_LIBFLAGS= -- Additional libraries to link to during link phase --DUSER_F_FLAGS= -- Additional Fortran compiler flags +-DLIBIOMP_FFLAGS= -- Additional Fortran compiler flags =================================== ==== Feature Based Compilation ==== @@ -217,12 +224,22 @@ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. ---- With Various Options ---- +- Build the 32 bit Linux library using GCC* cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -Dos=lin -Darch=32 .. + +- Build the 32 bit debug Mac library using Clang* cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -Dos=mac -Darch=32 -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, enabling the libiomp-micro-tests target and using similar rules that build.pl + would use to build the library. cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort -Dtests=on -Dcreate_fortran_modules=on -DUSE_BUILDPL_RULES=on .. -cmake -DUSER_CFLAGS='Werror' -DUSER_CPP_FLAGS='-DNEW_FEATURE=1 -DOLD_FEATURE=0' -DUSER_CXX_FLAGS='-Werror -Wsign-compare' .. ----- Stubs library ---- +- Have CMake Find the C/C++ compiler, and specify additional flags for the C compiler, preprocessor, and C++ compiler. +cmake -DLIBIOMP_CFLAGS='Werror' -DLIBIOMP_CPPFLAGS='-DNEW_FEATURE=1 -DOLD_FEATURE=0' -DLIBIOMP_CXXFLAGS='-Werror -Wsign-compare' .. + +---- Build the stubs library ---- cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -Dlib_type=stubs .. ========= Index: runtime/README.txt =================================================================== --- runtime/README.txt +++ runtime/README.txt @@ -1,6 +1,6 @@ - README for Intel(R) OpenMP* Runtime Library - =========================================== + README for the LLVM* OpenMP* Runtime Library + ============================================ How to Build Documentation ========================== @@ -11,7 +11,7 @@ % doxygen doc/doxygen/config -in this directory. +in the runtime directory. That will produce HTML documentation in the doc/doxygen/generated directory, which can be accessed by pointing a web browser at the @@ -21,11 +21,23 @@ www.doxygen.org. -How to Build the Intel(R) OpenMP* Runtime Library -================================================= +How to Build the LLVM* OpenMP* Runtime Library +============================================== +The library can be built either using Cmake, or using a makefile that +in turn invokes various Perl scripts. For porting, non X86 +architectures, and for those already familiar with Cmake that may be +an easier route to take than the one described here. + +Building with CMake +=================== +The runtime/Build_With_CMake.txt file has a description of how to +build with Cmake. + +Building with the Makefile +========================== The Makefile at the top-level will attempt to detect what it needs to -build the Intel(R) OpenMP* Runtime Library. To see the default settings, +build the LLVM* OpenMP* Runtime Library. To see the default settings, type: make info @@ -37,7 +49,7 @@ current working directory. omp_os: Operating system. By default, the build will attempt to - detect this. Currently supports "linux", "freebsd", "macos", and + detect this. Currently supports "linux", "freebsd", "macos", and "windows". arch: Architecture. By default, the build will attempt to @@ -46,6 +58,8 @@ "32" for IA-32 architecture "32e" for Intel(R) 64 architecture "mic" for Intel(R) Many Integrated Core Architecture + "arm" for ARM* architecture + "aarch64" for Aarch64 (64-bit ARM) architecture "ppc64" for IBM(R) Power architecture (big endian) "ppc64le" for IBM(R) Power architecture (little endian) @@ -74,10 +88,6 @@ make compiler=gcc -There is also an experimental CMake build system. This is *not* yet -supported for production use and resulting binaries have not been checked -for compatibility. - On OS X* machines, it is possible to build universal (or fat) libraries which include both IA-32 architecture and Intel(R) 64 architecture objects in a single archive; just build the 32 and 32e libraries separately, then invoke @@ -121,7 +131,9 @@ =========================================== The following compilers are known to do compatible code generation for -this RTL: icc/icl, gcc. See the documentation for more detail. +this RTL: clang (from the OpenMP development branch at +http://clang-omp.github.io/ ), Intel compilers, GCC. See the documentation +for more details. ----------------------------------------------------------------------- Index: www/README.txt =================================================================== --- www/README.txt +++ www/README.txt @@ -58,6 +58,10 @@ "32" for IA-32 architecture "32e" for Intel(R) 64 architecture "mic" for Intel(R) Many Integrated Core Architecture + "arm" for ARM* architecture + "aarch64" for Aarch64 (64-bit ARM) architecture + "ppc64" for IBM(R) Power architecture (big endian) + "ppc64le" for IBM(R) Power architecture (little endian) If "mic" is specified then "icc" will be used as the compiler, and appropriate k1om binutils will be used. The @@ -75,6 +79,10 @@ mode: Library mode: default is "release". Also supports "debug". +jobs: The number of parallel jobs for the underlying call to make. + This value is sent as the parameter to the -j flag for make. + This value defaults to "1", but can be set to any positive integer. + To use any of the options above, simple add =. For example, if you want to build with gcc instead of icc, type: