[PATCH] LLVM OpenMP CMake Overhaul

C Bergström cbergstrom at pathscale.com
Tue Jun 23 09:46:40 PDT 2015

Is this patch updated to reflect my review comments?

Again some of your design changes remove features that are
intentionally in the existing cmake by design. They should not be
removed. It's essetial that we maintain a mechanism to allow each
compiler the flexibility to define their own flags. Unlike other llvm
projects, this library is very likely to be used standalone by others
entirely outside the scope of llvm.

So do not remove cmake/${CMAKE_C_COMPILER_ID}/*Flags.cmake directories/files

On Tue, Jun 23, 2015 at 11:30 PM, Jonathan Peyton
<jonathan.l.peyton at intel.com> wrote:
> Hi chandlerc,
> I have been working on overhauling the CMake build system for the LLVM OpenMP Runtime library.  Instead of sending 1000 small updates, I decided to do a complete refactoring/reorganizing/renaming/you-name-it-I-did-it.  **All the interface variables are still the same (LIBOMP_OS, LIBOMP_ARCH, etc.)**.  So there was no change there.  Here are the major changes:
> 1) Renaming internal variables/macros/functions – everything has libomp_ or LIBOMP_ prefixed to it unless maybe if it is a local variable/parameter inside a function/macro.
> 2) config-ix.cmake added – compiler flag checks, linker flag checks, some feature checks, threading-model check.  This means cmake/${CMAKE_C_COMPILER_ID}/*Flags.cmake directories/files are deleted.
> 3) All files inside cmake/ subdirectory are renamed to Libompxyz.cmake
> 4) I cut off most of the vestigial parts that were a part of the translation of build.pl system.  There are still a few that remain like LibompExports.cmake (copying things to exports/ subdirectory) and LibompMicroTests.cmake (small tests to run on the just created library.  This is invoked with make libomp-micro-tests), but these can easily be cut off because they are in their own files and surrounded by an if() guard in the CMakeLists.txt file.
> 5) Added LLVM-architecture detection if we are part of an LLVM build.
> 6) If you want, you can use LIBOMP_ARCH=i386 or LIBOMP_ARCH=x86_64 instead of LIBOMP_ARCH=32 or LIBOMP_ARCH=32e (although 32 and 32e still exist)
> 7) Unused functions/macros have been cut away.
>   rL LLVM
> http://reviews.llvm.org/D10656
> Files:
>   runtime/CMakeLists.txt
>   runtime/cmake/BuildPLRules.cmake
>   runtime/cmake/Clang/AsmFlags.cmake
>   runtime/cmake/Clang/CFlags.cmake
>   runtime/cmake/CommonFlags.cmake
>   runtime/cmake/Definitions.cmake
>   runtime/cmake/GNU/AsmFlags.cmake
>   runtime/cmake/GNU/CFlags.cmake
>   runtime/cmake/GNU/FortranFlags.cmake
>   runtime/cmake/GetArchitecture.cmake
>   runtime/cmake/HelperFunctions.cmake
>   runtime/cmake/Intel/AsmFlags.cmake
>   runtime/cmake/Intel/CFlags.cmake
>   runtime/cmake/Intel/FortranFlags.cmake
>   runtime/cmake/LibompCheckFortranFlag.cmake
>   runtime/cmake/LibompCheckLinkerFlag.cmake
>   runtime/cmake/LibompDefinitions.cmake
>   runtime/cmake/LibompExports.cmake
>   runtime/cmake/LibompGetArchitecture.cmake
>   runtime/cmake/LibompHandleFlags.cmake
>   runtime/cmake/LibompMicroTests.cmake
>   runtime/cmake/LibompSourceFiles.cmake
>   runtime/cmake/LibompUtils.cmake
>   runtime/cmake/MSVC/AsmFlags.cmake
>   runtime/cmake/MSVC/CFlags.cmake
>   runtime/cmake/MicroTests.cmake
>   runtime/cmake/PerlFlags.cmake
>   runtime/cmake/SourceFiles.cmake
>   runtime/cmake/config-ix.cmake
>   runtime/src/CMakeLists.txt
>   http://reviews.llvm.org/settings/panel/emailpreferences/

More information about the llvm-commits mailing list