[Openmp-commits] [openmp] r243276 - Update Build_With_CMake.txt to reflect changes in CMake refactor
Hans Wennborg
hans at chromium.org
Tue Jul 28 09:27:23 PDT 2015
Merged in r243440.
Thanks,
Hans
On Tue, Jul 28, 2015 at 7:34 AM, Wilmarth, Terry L
<terry.l.wilmarth at intel.com> wrote:
> Hello Hans,
>
> Johnny is out-of-office for a few days. Yes, I think it is good to merge. It is only a documentation change, and it is documentation that goes with the already merged build changes, correct?
>
> Thanks,
> Terry
>
> -----Original Message-----
> From: openmp-commits-bounces at cs.uiuc.edu [mailto:openmp-commits-bounces at cs.uiuc.edu] On Behalf Of Hans Wennborg
> Sent: Monday, July 27, 2015 6:22 PM
> To: Peyton, Jonathan L
> Cc: openmp-commits at cs.uiuc.edu
> Subject: Re: [Openmp-commits] [openmp] r243276 - Update Build_With_CMake.txt to reflect changes in CMake refactor
>
> Should we merge this to 3.7?
>
> Thanks,
> Hans
>
> On Mon, Jul 27, 2015 at 9:23 AM, Jonathan Peyton
> <jonathan.l.peyton at intel.com> wrote:
>> Author: jlpeyton
>> Date: Mon Jul 27 11:23:42 2015
>> New Revision: 243276
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=243276&view=rev
>> Log:
>> Update Build_With_CMake.txt to reflect changes in CMake refactor
>>
>> This just updates the documentation regarding how to build libomp with CMake.
>>
>> Modified:
>> openmp/trunk/runtime/Build_With_CMake.txt
>>
>> Modified: openmp/trunk/runtime/Build_With_CMake.txt
>> URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/Build_With_CMake.txt?rev=243276&r1=243275&r2=243276&view=diff
>> ==============================================================================
>> --- openmp/trunk/runtime/Build_With_CMake.txt (original)
>> +++ openmp/trunk/runtime/Build_With_CMake.txt Mon Jul 27 11:23:42 2015
>> @@ -9,10 +9,11 @@
>> #//===----------------------------------------------------------------------===//
>> #
>>
>> - How to Build the LLVM* OpenMP* Runtime Library using CMake
>> - ===========================================
>> +==========================================================
>> +How to Build the LLVM* OpenMP* Runtime Library using CMake
>> +==========================================================
>>
>> - ---- Version of CMake required: v2.8.0 or above ----
>> +==== Version of CMake required: v2.8.0 or above ====
>>
>> ============================================
>> How to call cmake initially, then repeatedly
>> @@ -25,16 +26,16 @@ How to call cmake initially, then repeat
>> - Example of configuring, building, reconfiguring, rebuilding:
>> $ mkdir build
>> $ cd build
>> - $ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_ARCH=32 .. # Initial configuration
>> - $ make all common
>> + $ cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_ARCH=i386 .. # Initial configuration
>> + $ make
>> ...
>> $ make clean
>> - $ cmake -DLIBOMP_ARCH=32e -DCMAKE_BUILD_TYPE=Debug .. # Second configuration
>> - $ make all common
>> + $ 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=32e .. # Third configuration
>> - $ make all common
>> + $ 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
>> @@ -54,68 +55,61 @@ Instructions to Build
>> $ mkdir build
>> $ cd build
>>
>> - [ Linux* , Mac* Libraries ]
>> + [ Unix* Libraries ]
>> $ cmake -DCMAKE_C_COMPILER=<C Compiler> -DCMAKE_CXX_COMPILER=<C++ Compiler> ..
>>
>> [ Intel(R) Many Integrated Core Library (Intel(R) MIC Library) ]
>> $ cmake -DCMAKE_C_COMPILER=<C Compiler> -DCMAKE_CXX_COMPILER=<C++ Compiler> -DLIBOMP_ARCH=mic ..
>>
>> [ Windows Libraries ]
>> - $ cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=<C Compiler> -DCMAKE_CXX_COMPILER=<C++ Compiler> -DCMAKE_ASM_MASM_COMPILER=[ml | ml64] -DCMAKE_BUILD_TYPE=Release ..
>> + $ cmake -G <Generator Type> -DCMAKE_C_COMPILER=<C Compiler> -DCMAKE_CXX_COMPILER=<C++ Compiler> -DCMAKE_ASM_MASM_COMPILER=[ml | ml64] -DCMAKE_BUILD_TYPE=Release ..
>>
>> - $ make all common
>> + $ make
>> + $ make install
>>
>> -=================
>> +==================
>> Mac* Fat Libraries
>> -=================
>> +==================
>> 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:
>> - $ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBOMP_ARCH=32 ..
>> - $ make
>> - $ cmake -DLIBOMP_ARCH=32e ..
>> +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
>> -then invoke make again with a special argument as follows:
>> - $ make fat
>> -- The fat target is only available for the LIBOMP_ARCH=32e configuration.
>> -- The fat libraries will be put in exports/mac_32e/lib while the "thin" libraries
>> - will be in exports/mac_32e/lib.thin and exports/mac_32/lib.thin
>> -
>> -================
>> -Compiler options
>> -================
>> +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=<C compiler name>
>> +Specify the C compiler
>> +
>> -DCMAKE_CXX_COMPILER=<C++ compiler name>
>> +Specify the C++ compiler
>>
>> -DCMAKE_Fortran_COMPILER=<Fortran compiler name>
>> -Unix* systems (Optional as compiler is default):
>> -This option is only needed when -DLIBOMP_FORTRAN_MODULES is true
>> +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
>>
>> -=============
>> -Build options
>> -=============
>> -
>> -==========================
>> -==== Operating System ====
>> -==========================
>> --DLIBOMP_OS=lin|mac|win
>> -* Operating system can be lin (Linux*), mac (Mac*), or win (Windows*).
>> - If not specified, cmake will try to determine your current operating system.
>> -
>> -======================
>> -==== Architecture ====
>> -======================
>> --DLIBOMP_ARCH=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), 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?).
>> +-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 ----
>> +==== First values listed are the default value ====
>> -DLIBOMP_LIB_TYPE=normal|profile|stubs
>> Library type can be normal, profile, or stubs.
>>
>> @@ -123,120 +117,86 @@ Library type can be normal, profile, or
>> Build type can be Release, Debug, or RelWithDebInfo.
>>
>> -DLIBOMP_VERSION=5|4
>> -libomp version can be 5 or 4.
>> +libomp major version can be 5 or 4.
>>
>> --DLIBOMP_OMP_VERSION=40|30
>> -OpenMP version can be either 40 or 30.
>> +-DLIBOMP_OMP_VERSION=41|40|30
>> +OpenMP version can be either 41, 40 or 30.
>>
>> -DLIBOMP_MIC_ARCH=knc|knf
>> -Intel(R) MIC Architecture, can be knf or knc.
>> 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_STATS=off|on
>> -Should include stats-gathering code?
>> -
>> --DLIBOMP_OMPT_SUPPORT=off|on
>> -Should OMPT support be turned on? (Not supported on Windows)
>> -If LIBOMP_OMPT_SUPPORT is off, then both ompt_blame and ompt_trace are ignored.
>> -
>> --DLIBOMP_OMPT_BLAME=on|off
>> -Should OMPT blame functionality be turned on?
>> -
>> --DLIBOMP_OMPT_TRACE=on|off
>> -Should OMPT trace functionality be turned on?
>> -
>> -=====================
>> -==== 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.
>> -These tests can be turned on (default) or off with the following options:
>> --DLIBOMP_TEST_TOUCH=on|off -- Should the touch test be done?
>> --DLIBOMP_TEST_RELO=on|off -- Should the position independent code test be done?
>> --DLIBOMP_TEST_EXECSTACK=on|off -- Should the stack be checked for executability?
>> --DLIBOMP_TEST_INSTR=on|off -- Should the Intel(R) MIC Libraries be checked
>> - for correct instruction set?
>> --DLIBOMP_TEST_DEPS=on|off -- Should libomp's dependencies be checked?
>> --DLIBOMP_MICRO_TESTS=off|on -- Should any of the above tests be done?
>> -If -DLIBOMP_MICRO_TESTS=on is specified, the user can then call:
>> -$ make libomp-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.
>> --DLIBOMP_CPPFLAGS=<space-separated flags> -- Additional C Preprocessor flags
>> - (typically additional -Ddef=val flags)
>> --DLIBOMP_CFLAGS=<space-separated flags> -- Additional C compiler flags
>> --DLIBOMP_CXXFLAGS=<space-separated flags> -- Additional C++ compiler flags
>> --DLIBOMP_ASMFLAGS=<space-separated flags> -- Additional assembly flags
>> --DLIBOMP_LDFLAGS=<space-separated flags> -- Additional linker flags
>> --DLIBOMP_LIBFLAGS=<space-separated flags> -- Additional libraries to link
>> - to during link phase
>> --DLIBOMP_FFLAGS=<space-separated flags> -- Additional Fortran compiler flags
>> -
>> -===================================
>> -==== Feature Based Compilation ====
>> -===================================
>> --DLIBOMP_USE_BUILDPL_RULES=false|true
>> -Should the build imitate build.pl's build process.
>> -When this is true, the Unix* Release builds will build libomp
>> -with -O2 and -g flags activated (same as RelWithDebInfo). Then,
>> -the debug info is stripped out of the library and put into libomp.dbg
>> -This is done for interaction with Intel(R) Parallel Amplifier.
>> -
>> --DLIBOMP_USE_ADAPTIVE_LOCKS=true|false
>> +-DLIBOMP_USE_ADAPTIVE_LOCKS=on|off
>> Should adaptive (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.
>> +for i386 and x86_64. Otherwise, it is turned off.
>>
>> --DLIBOMP_USE_INTERNODE_ALIGNMENT=false|true
>> +-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=true|false
>> +-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_USE_PREDEFINED_LINKER_FLAGS=true|false
>> -Should the predefined linker flags in CommonFlags.cmake be included
>> -in the link command? This is true by default and should work for
>> -Linux*, Mac*, and Windows*. The --version-script flag on Unix* based
>> -operating systems will be included regardless.
>> -
>> -========================
>> -Examples usages of CMake
>> -========================
>> +-DLIBOMP_OMPT_SUPPORT=off|on
>> +Should OMPT support be included in the build? (Not supported on Windows)
>> +If LIBOMP_OMPT_SUPPORT is off, then both ompt_blame and ompt_trace are ignored.
>> +
>> +-DLIBOMP_OMPT_BLAME=on|off
>> +Should OMPT blame functionality be included in the build?
>> +
>> +-DLIBOMP_OMPT_TRACE=on|off
>> +Should OMPT trace functionality be included in the build?
>> +
>> +-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?
>> +
>> +================================
>> +How to append flags to the build
>> +================================
>> +- These flags are *appended*. They do not
>> + overwrite any of the preset flags.
>> +-DLIBOMP_CPPFLAGS=<space-separated flags> -- Additional C preprocessor flags
>> +-DLIBOMP_CFLAGS=<space-separated flags> -- Additional C compiler flags
>> +-DLIBOMP_CXXFLAGS=<space-separated flags> -- Additional C++ compiler flags
>> +-DLIBOMP_ASMFLAGS=<space-separated flags> -- Additional assembly flags
>> +-DLIBOMP_LDFLAGS=<space-separated flags> -- Additional linker flags
>> +-DLIBOMP_LIBFLAGS=<space-separated flags> -- Additional libraries to link
>> +-DLIBOMP_FFLAGS=<space-separated flags> -- 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 32 bit Linux library using GCC*
>> -cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_OS=lin -DLIBOMP_ARCH=32 ..
>> +- Build the i386 Linux library using GCC*
>> +cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DLIBOMP_ARCH=i386 ..
>>
>> -- Build the 32 bit debug Mac library using Clang*
>> -cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBOMP_OS=mac -DLIBOMP_ARCH=32 -DCMAKE_BUILD_TYPE=Debug ..
>> +- 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, enabling the libomp-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 -DLIBOMP_MICRO_TESTS=on -DLIBOMP_FORTRAN_MODULES=on -DLIBOMP_USE_BUILDPL_RULES=on ..
>> + 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='Werror' -DLIBOMP_CPPFLAGS='-DNEW_FEATURE=1 -DOLD_FEATURE=0' -DLIBOMP_CXXFLAGS='-Werror -Wsign-compare' ..
>> +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 ..
>>
>>
>> _______________________________________________
>> Openmp-commits mailing list
>> Openmp-commits at dcs-maillist2.engr.illinois.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/openmp-commits
> _______________________________________________
> Openmp-commits mailing list
> Openmp-commits at dcs-maillist2.engr.illinois.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/openmp-commits
More information about the Openmp-commits
mailing list