Skip to content
  1. Oct 05, 2012
    • NAKAMURA Takumi's avatar
      [CMake] Enhance add_llvm_external_project. · 700cd405
      NAKAMURA Takumi authored
        - Substitute hyphen to underscore, s/-/_/g, as the variable name.
        - Additional parameter can be specified as the name of directory.
      
      e.g.) add_llvm_external_project(clang-tools-extra extra)
      
        - LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=/path/to/llvm-srcroot/tools/clang/tools/extra, by default.
        - Build directory is in ${CMAKE_CURRENT_BINARY_DIR}/extra
      
      llvm-svn: 165311
      700cd405
  2. Aug 04, 2012
  3. Jul 12, 2012
  4. Jul 02, 2012
  5. Jun 30, 2012
  6. Jun 29, 2012
  7. Jun 28, 2012
  8. Jun 21, 2012
    • Chandler Carruth's avatar
      Avoid using the recently added APPEND_STRING feature. This should · 582e8a5d
      Chandler Carruth authored
      restore support for CMake versions before 2.8.6 -- sorry for the
      trouble!
      
      llvm-svn: 158930
      582e8a5d
    • Chandler Carruth's avatar
      Completely refactor the structuring of unittest CMake files to match the · 94d02518
      Chandler Carruth authored
      Makefiles, the CMake files in every other part of the LLVM tree, and
      sanity.
      
      This should also restore the output tree structure of all the unit
      tests, sorry for breaking that, and thanks for letting me know.
      
      The fundamental change is to put a CMakeLists.txt file in the unittest
      directory, with a single test binary produced from it. This has several
      advantages:
      
      - No more weird directory stripping in the unittest macro, allowing it
        to be used more readily in other projects.
      - No more directory prefixes on all the source files.
      - Allows correct and precise use of LLVM's per-directory dependency
        system.
      - Allows use of the checking logic for source files that have not been
        added to the CMake build. This uncovered a file being skipped with
        CMake in LLVM and one in Clang's unit tests.
      - Makes Specifying conditional compilation or other custom logic for JIT
        tests easier.
      
      It did require adding the concept of an explicit 'optional' source file
      to the CMake build so that the missing-file check can skip cases where
      the file is *supposed* to be missing. =]
      
      This is another chunk of refactoring the CMake build in order to make it
      usable for other clients like CompilerRT / ASan / TSan.
      
      Note that this is interdependent with a Clang CMake change.
      
      llvm-svn: 158909
      94d02518
    • Chandler Carruth's avatar
      Factor the logic for setting up a GoogleTest unit test executable into · a5d42f83
      Chandler Carruth authored
      a helper function in CMake. This will allow us to share all of this
      logic with Clang, and eventually CompilerRT.
      
      llvm-svn: 158896
      a5d42f83
    • Chandler Carruth's avatar
      Remove one of the LLVM-specific CMake hacks in favor of standard CMake · e530d2ba
      Chandler Carruth authored
      facilities.
      
      This was only used in one place in LLVM, and was used pervasively (but
      with different code!) in Clang. It has no advantages over the standard
      CMake facilities and in some cases disadvantages.
      
      llvm-svn: 158889
      e530d2ba
  9. Apr 26, 2012
    • Michael J. Spencer's avatar
      [CMake] Restructure how Clang, Polly and other external projects get included. · e734f541
      Michael J. Spencer authored
      While making lld build under the tools directory I decided to refactor how this
      works.
      
      There is now a macro, add_llvm_external_project, which takes the name of the
      expected subdirectory. This sets up two CMake options.
      
       * LLVM_EXTERNAL_${NAME}_SOURCE_DIR
           This is the path to the source. It defaults to
           ${CMAKE_CURRENT_SOURCE_DIR}/${name}.
       * LLVM_EXTERNAL_${NAME}_BUILD
           Enable and disable building the tool as part of LLVM.
      
      I chose LLVM_EXTERNAL_${NAME} as a prefix so they all show up together in the
      GUI.
      
      llvm-svn: 155654
      e734f541
  10. Nov 29, 2011
  11. Jul 30, 2011
    • Chandler Carruth's avatar
      Remove yet another buried and hidden implicit dependency: every single · b58053bb
      Chandler Carruth authored
      sub-library for the targets depended on the core target CodeGen library.
      This completely undermined the careful work to separate the those
      libraries, especially the MC-layer ones. This surfaced as circular
      dependencies when the libraries were built as shared libraries where
      CMake doesn't allow cycles.
      
      This should fix PR10537. I'll watch the bots to see if there is fallout
      on other platforms.
      
      llvm-svn: 136565
      b58053bb
    • Chandler Carruth's avatar
      Make my attempt to build up global deps variables actually utilize · 68b23116
      Chandler Carruth authored
      globally scoped constructs. Also, round-trip these dependencies through
      the LLVMConfig.cmake.in file thata is used by CMake-based clients of
      "installed" (or built) LLVM trees.
      
      llvm-svn: 136543
      68b23116
  12. Jul 29, 2011
    • Chandler Carruth's avatar
      Rewrite the CMake build to use explicit dependencies between libraries, · 9d7feab3
      Chandler Carruth authored
      specified in the same file that the library itself is created. This is
      more idiomatic for CMake builds, and also allows us to correctly specify
      dependencies that are missed due to bugs in the GenLibDeps perl script,
      or change from compiler to compiler. On Linux, this returns CMake to
      a place where it can relably rebuild several targets of LLVM.
      
      I have tried not to change the dependencies from the ones in the current
      auto-generated file. The only places I've really diverged are in places
      where I was seeing link failures, and added a dependency. The goal of
      this patch is not to start changing the dependencies, merely to move
      them into the correct location, and an explicit form that we can control
      and change when necessary.
      
      This also removes a serialization point in the build because we don't
      have to scan all the libraries before we begin building various tools.
      We no longer have a step of the build that regenerates a file inside the
      source tree. A few other associated cleanups fall out of this.
      
      This isn't really finished yet though. After talking to dgregor he urged
      switching to a single CMake macro to construct libraries with both
      sources and dependencies in the arguments. Migrating from the two macros
      to that style will be a follow-up patch.
      
      Also, llvm-config is still generated with GenLibDeps.pl, which means it
      still has slightly buggy dependencies. The internal CMake
      'llvm-config-like' macro uses the correct explicitly specified
      dependencies however. A future patch will switch llvm-config generation
      (when using CMake) to be based on these deps as well.
      
      This may well break Windows. I'm getting a machine set up now to dig
      into any failures there. If anyone can chime in with problems they see
      or ideas of how to solve them for Windows, much appreciated.
      
      llvm-svn: 136433
      9d7feab3
  13. Jul 26, 2011
    • Chandler Carruth's avatar
      Clean up a pile of hacks in our CMake build relating to TableGen. · 97c069c1
      Chandler Carruth authored
      The first problem to fix is to stop creating synthetic *Table_gen
      targets next to all of the LLVM libraries. These had no real effect as
      CMake specifies that add_custom_command(OUTPUT ...) directives (what the
      'tablegen(...)' stuff expands to) are implicitly added as dependencies
      to all the rules in that CMakeLists.txt.
      
      These synthetic rules started to cause problems as we started more and
      more heavily using tablegen files from *subdirectories* of the one where
      they were generated. Within those directories, the set of tablegen
      outputs was still available and so these synthetic rules added them as
      dependencies of those subdirectories. However, they were no longer
      properly associated with the custom command to generate them. Most of
      the time this "just worked" because something would get to the parent
      directory first, and run tablegen there. Once run, the files existed and
      the build proceeded happily. However, as more and more subdirectories
      have started using this, the probability of this failing to happen has
      increased. Recently with the MC refactorings, it became quite common for
      me when touching a large enough number of targets.
      
      To add insult to injury, several of the backends *tried* to fix this by
      adding explicit dependencies back to the parent directory's tablegen
      rules, but those dependencies didn't work as expected -- they weren't
      forming a linear chain, they were adding another thread in the race.
      
      This patch removes these synthetic rules completely, and adds a much
      simpler function to declare explicitly that a collection of tablegen'ed
      files are referenced by other libraries. From that, we can add explicit
      dependencies from the smaller libraries (such as every architectures
      Desc library) on this and correctly form a linear sequence. All of the
      backends are updated to use it, sometimes replacing the existing attempt
      at adding a dependency, sometimes adding a previously missing dependency
      edge.
      
      Please let me know if this causes any problems, but it fixes a rather
      persistent and problematic source of build flakiness on our end.
      
      llvm-svn: 136023
      97c069c1
  14. Jul 25, 2011
  15. Apr 29, 2011
    • Nick Lewycky's avatar
      Rename profile_rt.so to libprofile_rt.so under configure+make (it already was · 61aed87a
      Nick Lewycky authored
      under cmake).
      
      Add libprofile_rt.a so that we can tell clang to link against it in --coverage
      mode. Also turn it on by default in cmake builds.
      
      Oscar, this touches a change you made for EXCLUDE_FROM_ALL support -- I think
      I've done the right thing, but please let me know (or fix and commit) if not!
      
      llvm-svn: 130470
      61aed87a
  16. Apr 26, 2011
  17. Apr 05, 2011
  18. Mar 29, 2011
    • Oscar Fuentes's avatar
      Fixed the build of Clang's unit tests on MinGW. Also removed some · 978e5284
      Oscar Fuentes authored
      unnecesary conditionals and introduced a new convenience function.
      
      The problem was that the list of libraries for Clang's unit tests was
      <clang libraries> <system libraries> <llvm libraries>. As the llvm
      libraries references symbols defined on the system libraries, those
      were reported as undefined.
      
      llvm-svn: 128484
      978e5284
  19. Mar 21, 2011
  20. Mar 12, 2011
  21. Feb 22, 2011
  22. Feb 20, 2011
  23. Feb 18, 2011
  24. Dec 22, 2010
  25. Dec 10, 2010
    • NAKAMURA Takumi's avatar
      Add dependency to "make check". · a8c1c3fe
      NAKAMURA Takumi authored
      cmake/modules/AddLLVM.cmake: Add empty "phony" target in add_llvm_loadable_module() even if loadable module were not supported.
      
      llvm-svn: 121455
      a8c1c3fe
  26. Oct 22, 2010
  27. Oct 14, 2010
  28. Sep 25, 2010
    • Oscar Fuentes's avatar
      Reverting "CMake: Don't include tools, unittets, or examples as · 46d8a930
      Oscar Fuentes authored
      available targets unless LLVM_INCLUDE_X is ON. LLVM_BUILD_X implies
      LLVM_INCLUDE_X"
      
      It breaks the configuration phase when cmake is invoked without
      parameters, it is too complex for the purpose and introduces an
      incovenience for the user (as both LLVM_BUILD_X and LLVM_INCLUDE_X
      must set to OFF for not including X on the build)
      
      llvm-svn: 114795
      46d8a930
  29. Sep 24, 2010
  30. Sep 14, 2010
  31. Sep 11, 2010
  32. Sep 10, 2010
Loading