Skip to content
  1. Oct 17, 2017
    • Matthias Braun's avatar
      cmake: BSD: Mark /usr/local/include as system include directory · cf3ab11c
      Matthias Braun authored
      We add /usr/local/include to the include directory list for some BSD
      systems. We should mark this as a system directory to avoid files from
      /usr/local/include getting picked over files shipping with llvm.
      
      This typically manifested as gtest headers installed with the system
      getting picked over the ones shipping with llvm.
      
      Patch by Petr Penzin <penzin.dev@gmail.com>
      
      Differential Revision: https://reviews.llvm.org/D37415
      
      llvm-svn: 315952
      cf3ab11c
  2. Oct 15, 2017
    • Krzysztof Parzyszek's avatar
      Phony change to CMakeLists.txt to (hopefully) trigger regeneration · bc7f806c
      Krzysztof Parzyszek authored
      Ninja doesn't seem to recognize a change in a CMakeLists.txt in a
      subdirectory, so r315861 is not having any effect.
      
      llvm-svn: 315870
      bc7f806c
    • Aaron Ballman's avatar
      Reverting r315590; it did not include changes for llvm-tblgen, which is... · 615eb470
      Aaron Ballman authored
      Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people.
      
      Error LNK2019 unresolved external symbol "public: void __cdecl `anonymous namespace'::MatchableInfo::dump(void)const " (?dump@MatchableInfo@?A0xf4f1c304@@QEBAXXZ) referenced in function "public: void __cdecl `anonymous namespace'::AsmMatcherEmitter::run(class llvm::raw_ostream &)" (?run@AsmMatcherEmitter@?A0xf4f1c304@@QEAAXAEAVraw_ostream@llvm@@@Z) llvm-tblgen D:\llvm\2017\utils\TableGen\AsmMatcherEmitter.obj 1
      
      llvm-svn: 315854
      615eb470
  3. Oct 12, 2017
  4. Sep 29, 2017
    • Brian Gesiak's avatar
      Revert "[CMake] Remove `CMAKE_.*_OUTPUT_DIRECTORY` (NFCI)" · 615a3bbd
      Brian Gesiak authored
      Summary:
      It appears polly makes use of the `CMAKE_RUNTIME_OUTPUT_DIRECTORY` variable
      when configuring its lit test suite. Reverting this for now.
      
      llvm-svn: 314551
      615a3bbd
    • Brian Gesiak's avatar
      [CMake] Remove `CMAKE_.*_OUTPUT_DIRECTORY` (NFCI) · cccbed84
      Brian Gesiak authored
      Summary:
      Three `CMAKE_.*_OUTPUT_DIRECTORY` variables used to be set in CMake and
      referenced in various other parts of the project. However, in r198205
      chapuni added a note to "don't set them anymore", and any remaining
      references to them were subsequently removed in r198316 and r199592.
      
      Now that the variables are no longer used anywhere, remove them, along
      with the comments advising against using them any longer.
      
      Test Plan:
      I ran `check-all` and confirmed the tests built and passed.
      
      Reviewers: beanz, chapuni
      
      Reviewed By: beanz
      
      Subscribers: mgorny
      
      Differential Revision: https://reviews.llvm.org/D38389
      
      llvm-svn: 314550
      cccbed84
    • Brian Gesiak's avatar
      [CMake] Fix typo "Wraning" (NFC) · 16b86e7d
      Brian Gesiak authored
      Summary:
      The typo was added in https://reviews.llvm.org/rL247151.
      It should be "warning", not "wraning".
      
      llvm-svn: 314486
      16b86e7d
  5. Sep 27, 2017
    • Brian Gesiak's avatar
      [CMake] Fix typo: "in-tree" -> "in-source" (NFC) · 88f2aa12
      Brian Gesiak authored
      Summary:
      *In-source builds* of LLVM, in which a user invokes `cmake` from within the
      LLVM source directory, or invokes `cmake -B/path/to/source/dir/of/llvm`,
      are explicitly checked for and disallowed by LLVM's `CMakeLists.txt`.
      
      *In-tree builds*, on the other hand, refer to when the source directories
      of projects such as Clang are nested within the `llvm/tools` source
      directory. These are not disallowed, and are in fact a common way of
      building LLVM and Clang.
      
      Revise the comment to match the logic underneath it: it checks for an
      "in-source build", not an "in-tree build".
      
      Reviewers: beanz
      
      Reviewed By: beanz
      
      Subscribers: mgorny
      
      Differential Revision: https://reviews.llvm.org/D38317
      
      llvm-svn: 314348
      88f2aa12
    • Don Hinton's avatar
      Cleanup some problems with LLVM_ENABLE_DUMP in release builds, and · 53eb6371
      Don Hinton authored
      always set LLVM_ENABLE_DUMP=ON for +Asserts builds.
      
      Differential Revision: https://reviews.llvm.org/D38306
      
      llvm-svn: 314346
      53eb6371
  6. Sep 26, 2017
  7. Sep 20, 2017
  8. Sep 16, 2017
    • Zachary Turner's avatar
      Resubmit "[lit] Force site configs to run before source-tree configs" · ce92db13
      Zachary Turner authored
      This is a resubmission of r313270.  It broke standalone builds of
      compiler-rt because we were not correctly generating the llvm-lit
      script in the standalone build directory.
      
      The fixes incorporated here attempt to find llvm/utils/llvm-lit
      from the source tree returned by llvm-config.  If present, it
      will generate llvm-lit into the output directory.  Regardless,
      the user can specify -DLLVM_EXTERNAL_LIT to point to a specific
      lit.py on their file system.  This supports the use case of
      someone installing lit via a package manager.  If it cannot find
      a source tree, and -DLLVM_EXTERNAL_LIT is either unspecified or
      invalid, then we print a warning that tests will not be able
      to run.
      
      Differential Revision: https://reviews.llvm.org/D37756
      
      llvm-svn: 313407
      ce92db13
  9. Sep 15, 2017
  10. Sep 14, 2017
    • Zachary Turner's avatar
      [lit] Force site configs to be run before source-tree configs · a0e55b64
      Zachary Turner authored
      This patch simplifies LLVM's lit infrastructure by enforcing an ordering
      that a site config is always run before a source-tree config.
      
      A significant amount of the complexity from lit config files arises from
      the fact that inside of a source-tree config file, we don't yet know if
      the site config has been run.  However it is *always* required to run
      a site config first, because it passes various variables down through
      CMake that the main config depends on.  As a result, every config
      file has to do a bunch of magic to try to reverse-engineer the location
      of the site config file if they detect (heuristically) that the site
      config file has not yet been run.
      
      This patch solves the problem by emitting a mapping from source tree
      config file to binary tree site config file in llvm-lit.py. Then, during
      discovery when we find a config file, we check to see if we have a
      target mapping for it, and if so we use that instead.
      
      This mechanism is generic enough that it does not affect external users
      of lit. They will just not have a config mapping defined, and everything
      will work as normal.
      
      On the other hand, for us it allows us to make many simplifications:
      
      * We are guaranteed that a site config will be executed first
      * Inside of a main config, we no longer have to assume that attributes
        might not be present and use getattr everywhere.
      * We no longer have to pass parameters such as --param llvm_site_config=<path>
        on the command line.
      * It is future-proof, meaning you don't have to edit llvm-lit.in to add
        support for new projects.
      * All of the duplicated logic of trying various fallback mechanisms of
        finding a site config from the main config are now gone.
      
      One potentially noteworthy thing that was required to implement this
      change is that whereas the ninja check targets previously used the first
      method to spawn lit, they now use the second. In particular, you can no
      longer run lit.py against the source tree while specifying the various
      `foo_site_config=<path>` parameters.  Instead, you need to run
      llvm-lit.py.
      
      Differential Revision: https://reviews.llvm.org/D37756
      
      llvm-svn: 313270
      a0e55b64
  11. Sep 13, 2017
    • Zachary Turner's avatar
      Revert "Determine up front which projects are enabled." · 1929ffd4
      Zachary Turner authored
      This was intended to be a generic CMake solution to a problem
      shared across several projects.  It turns out it doesn't interact
      very well certain CMake configurations, and furthermore the
      "problem" is actually not a problem, as the problematic code
      is never executed to begin with.  So this really isn't solving
      anything.
      
      llvm-svn: 313191
      1929ffd4
    • Zachary Turner's avatar
      Determine up front which projects are enabled. · c7fc9394
      Zachary Turner authored
      Some projects need to add conditional dependencies on other projects.
      compiler-rt is already doing this, and I attempted to add this to
      debuginfo-tests when I ran into the ordering problem, that you can't
      conditionally add a dependency unless that dependency's CMakeLists.txt
      has already been run (which would allow you to say if (TARGET foo).
      
      The solution to this seems to be to determine very early on the entire
      set of projects which is enabled. This is complicated by the fact that
      there are multiple ways to enable projects, and different tree layouts
      (e.g. mono-repo, out of -tree, external, etc). This patch attempts to
      centralize all of this into one place, and then updates compiler-rt to
      demonstrate as a proof of concept how this can simplify code.
      
      Differential Revision: https://reviews.llvm.org/D37637
      
      llvm-svn: 313091
      c7fc9394
  12. Aug 29, 2017
    • Reid Kleckner's avatar
      [cmake] Stop putting the revision info in LLVM_VERSION_STRING · b8ae2b13
      Reid Kleckner authored
      Summary:
      This reduces the number of build actions after a no-op commit from
      thousands to about six, which should be acceptable. If six actions is
      still too many, developers can disable the LLVM_APPEND_VC_REV cmake
      option.
      
      llvm-config.h is a widely included header that should rarely change.
      Before this patch, it would change after every re-configure. Very few
      users of llvm-config.h need to know the precise version, and those that
      do can migrate to incorporating LLVM_REVISION as provided by
      llvm/Support/VCSRevision.h.
      
      This should bring LLVM back to the behavior that it had before r306858
      from June 30 2017. Most LLVM tools will now print a version string like
      "6.0.0svn" instead of "6.0.0-git-c40c2a23de4".
      
      Fixes PR34308
      
      Reviewers: pcc, rafael, hans
      
      Subscribers: mgorny, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D37272
      
      llvm-svn: 312043
      b8ae2b13
  13. Aug 13, 2017
  14. Aug 03, 2017
  15. Aug 02, 2017
  16. Jul 31, 2017
    • Reid Kleckner's avatar
      [lit] Avoid copying llvm/utils/lit/tests/Inputs with lit site configs · 1b4e9ae3
      Reid Kleckner authored
      Summary:
      This is an alternative solution to running the lit test suite on bots
      without polluting the source directory. Each input test suite gets an
      auto-generated site config in the build directory that points back to
      the test input source directory.
      
      This adds some cmake comlexity, but now we don't need to remove and
      re-copy the test input directory before every test.
      
      Reviewers: delcypher, modocache
      
      Subscribers: mgorny, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D36026
      
      llvm-svn: 309602
      1b4e9ae3
  17. Jul 27, 2017
  18. Jul 23, 2017
  19. Jul 20, 2017
  20. Jul 19, 2017
  21. Jul 05, 2017
    • Tom Stellard's avatar
      CMake: Add LLVM_UTILS_INSTALL_DIR option · edd69bc7
      Tom Stellard authored
      Summary:
      This is like the LLVM_TOOLS_INSTALL_DIR option, but for the utils
      that are installed when the LLVM_INSTALL_UTILS.  This option
      defaults to 'bin' to remain consistent with the current behavior, but
      distros may want to install these to libexec/llvm.
      
      Reviewers: beanz
      
      Reviewed By: beanz
      
      Subscribers: llvm-commits, mgorny
      
      Differential Revision: https://reviews.llvm.org/D30655
      
      llvm-svn: 307150
      edd69bc7
  22. Jun 30, 2017
  23. Jun 22, 2017
  24. Jun 17, 2017
    • NAKAMURA Takumi's avatar
      [CMake] Introduce LLVM_TARGET_TRIPLE_ENV as an option to override... · fc7f3b75
      NAKAMURA Takumi authored
      [CMake] Introduce LLVM_TARGET_TRIPLE_ENV as an option to override LLVM_DEFAULT_TARGET_TRIPLE at runtime.
      
      No behavior is changed if LLVM_TARGET_TRIPLE_ENV is blank or undefined.
      
      If LLVM_TARGET_TRIPLE_ENV is "TEST_TARGET_TRIPLE" and $TEST_TARGET_TRIPLE is not blank,
      llvm::sys::getDefaultTargetTriple() returns $TEST_TARGET_TRIPLE.
      Lit resets config.target_triple and config.environment[LLVM_TARGET_TRIPLE_ENV] to change the default target.
      
      Without changing LLVM_DEFAULT_TARGET_TRIPLE nor rebuilding, lit can be run;
      
        TEST_TARGET_TRIPLE=i686-pc-win32 bin/llvm-lit -sv path/to/test/
        TEST_TARGET_TRIPLE=i686-pc-win32 ninja check-clang-tools
      
      Differential Revision: https://reviews.llvm.org/D33662
      
      llvm-svn: 305632
      fc7f3b75
  25. Jun 10, 2017
  26. Jun 09, 2017
  27. May 25, 2017
    • Aaron Ballman's avatar
      Update the documentation and CMake file for Visual Studio generators. · 472278a5
      Aaron Ballman authored
      By default, CMake uses a 32-bit toolchain, even when on a 64-bit platform targeting a 64-bit build. However, due to the size of the binaries involved, this can cause linker instabilities (such as the linker running out of memory). Guide people to the correct solution to get CMake to use the native toolchain.
      
      llvm-svn: 303912
      472278a5
  28. May 03, 2017
    • Tom Stellard's avatar
      CMake: Add LLVM_DYLIB_SYMBOL_VERSIONING option · d6f39ddc
      Tom Stellard authored
      Summary:
      When apps or other libraries link against a library with symbol
      versions, the version string is recorded in the import table, and used
      at runtime to resolve the symbol back to a library that provides that
      version (vaguely like how two-level namespaces work in Mach-O).  ld's
      --default-symver flag tags every exported symbol with a symbol version
      string equal to the library's soname.  Using --default-symver means
      multiple versions of libLLVM can coexist within the same process, at
      least to the extent that they don't try to pass data between each
      other's llvms.
      
      As an example, imagine a language like Rust using llvm for CPU codegen,
      binding to OpenGL, with Mesa as the OpenGL implementation using llvm for
      R600 codegen.  With --default-symver Rust and Mesa will resolve their
      llvm usage to the version each was linked against, which need not match.
      
      (Other ELF platforms like BSD and Solaris might have similar semantics,
      I've not checked.)
      
      This is based on an autoconf version of this patch by Adam Jackson.
      
      This new option can be used to add --default-symver to the linker flags
      for libLLVM.so.
      
      Reviewers: beanz
      
      Reviewed By: beanz
      
      Subscribers: mgorny, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D30997
      
      llvm-svn: 302026
      d6f39ddc
  29. Apr 19, 2017
    • Xin Tong's avatar
      Allow suppressing host and target info in VersionPrinter · 59cb7782
      Xin Tong authored
      Summary:
      VersionPrinter by default outputs information about the Host CPU
      and Default target. Printing this information requires linking in
      a large amount of data, such as supported target triples as C
      strings, which in turn bloats the binary size.
      
      Enable a new CMake option LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO
      which controls printing of the host and target info. This allows
      the target triple names to be dead-code stripped. This is a nice
      win for LLVM clients that wish to minimize their binary size, such
      as graphics drivers.
      
      By default this is ON, so there is no change in the default behavior.
      Clients who wish to suppress this printing can do so by setting this
      option to off via CMake.
      
      A test app on Linux that uses ParseCommandLineOptions() shows a binary
      size reduction of 23KB (from 149K to 126K) for a Release build, and 24KB
      (from 135K to 111K) in a MinSizeRel build.
      
      Reviewers: klimek, beanz, bogner, chandlerc, compnerd
      
      Reviewed By: compnerd
      
      Patch by pammon (Peter Ammon) !
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D30904
      
      llvm-svn: 300630
      59cb7782
  30. Mar 23, 2017
Loading