Skip to content
  • Jonathan Peyton's avatar
    Large Refactor of CMake build system · 2e013352
    Jonathan Peyton authored
    This commit improves numerous functionalities of the OpenMP CMake build 
    system to be more conducive with LLVM's build system and build philosophies.
    The CMake build system, as it was before this commit, was not up to LLVM's 
    standards and did not implement the configuration stage like most CMake based
    build systems offer (check for compiler flags, libraries, etc.) In order to
    improve it dramatically in a short period of time, a large refactoring had 
    to be done.
    The main changes done with this commit are as follows:
    
    * Compiler flag checks - The flags are no longer grabbed from compiler specific
      directories.  They are checked for availability in config-ix.cmake and added
      accordingly inside LibompHandleFlags.cmake.
    * Feature checks were added in config-ix.cmake.  For example, the standard CMake
      module FindThreads is probed for the threading model to use inside the OpenMP
      library.
    * OS detection - There is no longer a LIBOMP_OS variable, OS-specifc build logic
      is wrapped around the WIN32 and APPLE macros with !(WIN32 OR APPLE) meaning 
      a Unix flavor of some sort.
    * Got rid of vestigial functions/macros/variables
    * Added new libomp_append() function which is used everywhere to conditionally
      or undconditionally append to a list
    * All targets have the libomp prefix so as not to interfere with any other
      project
    * LibompCheckLinkerFlag.cmake module was added which checks for linker flags
      specifically for building shared libraries.
    * LibompCheckFortranFlag.cmake module was added which checks for fortran flag
      availability.
    * Removed most of the cruft from the translation between the perl+Makefile based
      build system and this one.  The remaining components that they share are
      perl scripts which I'm in the process of removing.
    
    There is still more left to do.  The perl scripts still need to be removed, and
    a config.h.in file (or similarly named) needs to be added with #cmakedefine lines
    in it.  But this is a much better first step than the previous system.
    
    Differential Revision: http://reviews.llvm.org/D10656
    
    llvm-svn: 242298
    2e013352
Loading