[Openmp-commits] [openmp] r243276 - Update Build_With_CMake.txt to reflect changes in CMake refactor
Hans Wennborg
hans at chromium.org
Mon Jul 27 16:22:09 PDT 2015
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
More information about the Openmp-commits
mailing list