1. 29 Jan, 2019 1 commit
    • Chuck Atkins's avatar
      macOS: Add missing explicit dependency on CoreServices framework · 475e78d9
      Chuck Atkins authored and Brad King's avatar Brad King committed
      On Apple, the implementation of cmGlobalXCodeGenerator::Open uses
      LSOpenCFURLRef from CoreServices.  This get's transitively pulled in
      from CMake's libuv build but ends up generating a linker error when
      using an external libuv.  This explicitly adds the appropriate
  2. 23 Jan, 2019 1 commit
    • Kyle Edwards's avatar
      cmMakefile: Impose maximum recursion limit · a6982cff
      Kyle Edwards authored
      In order to keep infinitely-recursive scripts from causing a stack
      overflow in the CMake executable, CMake now imposes a maximum
      recursion limit before issuing an error message. The limit can be
      adjusted at runtime with CMAKE_MAXIMUM_RECURSION_DEPTH.
      Fixes: #18694
  3. 16 Jan, 2019 1 commit
  4. 11 Jan, 2019 1 commit
  5. 12 Dec, 2018 6 commits
    • Brad King's avatar
      fileapi: add cmakeFiles v1 · 66154081
      Brad King authored
      Issue: #18398
    • Brad King's avatar
      fileapi: add cache v2 · 7489e95b
      Brad King authored
      Start with v2 to distinguish it from server-mode v1.
      Issue: #18398
    • Brad King's avatar
      String: Add support for a ""_s string literal syntax · a0841b59
      Brad King authored
      Create a `static_string_view` type that binds only to the static storage
      of string literals.  Teach `cm::String` to borrow from these implicitly.
    • Brad King's avatar
      String: Add a custom string type · ff69763c
      Brad King authored
      Create a `cm::String` type that holds a view of a string buffer and
      optionally shares ownership of the buffer.  Instances can either
      borrow longer-lived storage (e.g. static storage of string literals)
      or internally own a `std::string` instance.  In the latter case,
      share ownership with copies and substrings.  Allocate a new internal
      string only on operations that require mutation.
      This will allow us to recover string sharing semantics that we
      used to get from C++98 std::string copy-on-write implementations.
      Such implementations are not allowed by C++11 so code our own in
      a custom string type instead.
    • Brad King's avatar
      fileapi: add codemodel v2 · 3e922ceb
      Brad King authored
      Start with v2 to distinguish it from server-mode v1.
      Issue: #18398
    • Brad King's avatar
      fileapi: Add protocol v1 infrastructure with support for shared query files · eb2ec41a
      Brad King authored
      Add a file-based API that clients may use to get semantic information
      about the buildsystem that CMake generates.  Clients will write query
      files under a designated location in the build tree, and CMake will
      write reply files for clients to read.
      Start with support for shared stateless query files.  These allow
      clients to share requests for major object versions and get all those
      recognized by CMake.  Once any client has written a shared request to a
      build tree it will persist.  Other clients will not need to overwrite
      the request (since it is stateless) and should not remove it either.
      For now we add only an undocumented object kind to use for testing the
      query and reply infrastructure.  Object kinds providing real semantic
      information will be added later.
      Issue: #18398
  6. 11 Dec, 2018 1 commit
    • Brad King's avatar
      Add support for using C++17 string_view or a fallback · 410a3e4b
      Brad King authored
      Define a `cm::string_view` type implemented via C++17 `std::string_view`
      when available.  Provide a fallback implementation for C++11 and C++14
      The fallback implementation was written by reading documentation of the
      standard spec.  We have no dedicated tests for it, but it will be
      covered by tests of its clients later.
  7. 28 Nov, 2018 1 commit
  8. 11 Nov, 2018 1 commit
  9. 05 Nov, 2018 1 commit
    • Craig Scott's avatar
      CPack: Rename Ext generator to External · 20d5e77a
      Craig Scott authored and Brad King's avatar Brad King committed
      Ext and External were used inconsistently in the code and the
      docs. This change converts all uses of Ext to External, including
      within variable names used by the generator.
  10. 10 Oct, 2018 1 commit
    • Kyle Edwards's avatar
      add_subdirectory: Run subdirectory install rules in correct order · fc8955e8
      Kyle Edwards authored
      Before this change, install rules created by add_subdirectory()
      would be executed after all of the top-level install rules, even
      if they were declared before the top-level rules. This change
      adds a new policy, CMP0082, which interleaves the add_subdirectory()
      install rules with the other install rules so they are run in the
      correct order.
  11. 25 Sep, 2018 1 commit
  12. 21 Sep, 2018 1 commit
  13. 07 Sep, 2018 1 commit
    • Brad King's avatar
      cmLinkItem: Convert to a "sum type" over a string and target pointer · fc7e4d1e
      Brad King authored
      Avoid exposing the item name implicitly as std::string.  When the item
      is a target, avoid storing a second copy of its name.
      Most link item construction is paired with calls to `FindTargetToLink`
      to get the possible target pointer.  Rename these methods to
      `ResolveLinkItem` and refactor them to construct the entire item.
  14. 02 Jul, 2018 1 commit
    • Kyle Edwards's avatar
      CPack: Add "CPack External" generator · 80914d88
      Kyle Edwards authored
      This generator doesn't actually package the files. Instead, it
      provides a metadata JSON file that can be used by external packaging
      software to do its own packaging. This JSON file provides information
      about the components, component groups, installation types, and CMake
  15. 06 Jun, 2018 1 commit
    • Marc Chevrier's avatar
      LINK_OPTIONS: Add new family of properties · c1f5a44b
      Marc Chevrier authored
      This family enable to manage link flags
      Three new properties:
      * directory property: LINK_OPTIONS
      * target properties: LINK_OPTIONS and INTERFACE_LINK_OPTIONS
      Two new commands
      * add_link_options(): to populate directory property
      * target_link_options(): to populate target properties
      Fixes: #16543
  16. 30 May, 2018 1 commit
  17. 11 May, 2018 1 commit
    • Alex Turbov's avatar
      CPack: Add NuGet support · f739752a
      Alex Turbov authored and Brad King's avatar Brad King committed
      Create a CPack generator that uses `nuget.exe` to create packages:
      NuGet packages could be easily produced from a `*.nuspec` file (running
      `nuget pack` in the directory w/ the spec file).  The spec filename does
      not affect the result `*.nupkg` name -- only `id` and `version` elements
      of the spec are used (by NuGet).
      Some implementation details:
      * Minimize C++ code -- use CMake script do to the job. It just let the
        base class (`cmCPackGenerator`) to preinstall everything to a temp
        directory, render the spec file and run `nuget pack` in it, harvesting
        `*.nupkg` files...;
      * Ignore package name (and use default paths) prepared by the base class
        (only `CPACK_TEMPORARY_DIRECTORY` is important) -- final package
        filename is a responsibility of NuGet, so after generation just scan the
        temp directory for the result `*.nupkg` file(s) and update
        `packageFileNames` data-member of the generator;
      * The generator support...
  18. 20 Apr, 2018 1 commit
  19. 16 Apr, 2018 1 commit
  20. 29 Mar, 2018 1 commit
  21. 05 Mar, 2018 1 commit
    • Brad King's avatar
      CTest: Add options to control test process affinity to CPUs · 6be53c66
      Brad King authored
      In commit v2.8.0~170 (ENH: Added ctest test options PROCESSORS and
      RUN_SERIAL, 2009-09-07) CTest learned to track the number of processors
      allocated to running tests in order to balance it against the desired
      level of parallelism.  Extend this idea by introducing a new
      `PROCESSOR_AFFINITY` test property to ask that CTest run a test
      with the CPU affinity mask set.  This will allow a set of tests
      that are running concurrently to use disjoint CPU resources.
  22. 22 Feb, 2018 1 commit
  23. 25 Jan, 2018 1 commit
    • Brad King's avatar
      De-duplicate cmUVSignalHackRAII · 3ec5f7c1
      Brad King authored
      This was added separately in `cmCTestMultiProcessHandler` and
      `cmQtAutoGenerator`.  Factor out the duplicate code into a common header
      for re-use.
  24. 24 Jan, 2018 1 commit
    • Alexander Neundorf's avatar
      Generators: remove KDevelop3 generator · 9198e6a2
      Alexander Neundorf authored and Brad King's avatar Brad King committed
      The last KDevelop3 release was many years ago, in 2008 I think.
      I haven't seen or read about anybody using KDevelop 3 since a
      long time, so I think it can safely be removed from CMake.
      KDevelop 4 (first released in 2010) has its own proper CMake
      support now, independent from this generator.
  25. 23 Jan, 2018 1 commit
    • Wouter Klouwen's avatar
      CTest: add safe conversion from cmDuration to integer types · ff62b005
      Wouter Klouwen authored and Brad King's avatar Brad King committed
      A problem area by recent refactoring of time to std::chrono has been the
      unsafe conversion from duration<double> to std::chrono::seconds, which
      is of an unspecified integer type.
      This commit adds a template function that for a given type provides a
      safe conversion, effectively clamping a duration<double> into what fits
      safely in that type. A specialisation for int and unsigned int are
      It changes the protential problem areas to use this safe function.
  26. 17 Jan, 2018 1 commit
  27. 10 Jan, 2018 1 commit
    • Ben Boeckel's avatar
      cmSourceFileLocation: allow skipping ambiguous extensions · b0716fbc
      Ben Boeckel authored
      The ambiguous extension logic is an old behavior that ends up taking
      lots of extra compute cycles to execute. This is triggered by various
      CMake codepaths which pass extension-less paths down when CMake actually
      knows that they are not ambiguous. These codepaths will be indicated in
      upcoming changes.
      Various APIs have gained a cmSourceFileLocationKind parameter, but they
      are all optional and default to the existing behavior.
  28. 08 Dec, 2017 1 commit
  29. 30 Nov, 2017 1 commit
  30. 29 Nov, 2017 1 commit
    • jdavidberger's avatar
      Add RAII handles for libuv handle types · a3abb85c
      jdavidberger authored and Brad King's avatar Brad King committed
      The `uv_*_t` handle types are closed by `uv_close`, but the semantics
      are tricky.  Calling `uv_close` may not close immediately.  Instead it
      hands ownership to the uv loop to which the handle is currently
      attached.  When the loop decides to close it, a callback is used to
      allow the `uv_close` caller to free resources.
      Provide an abstraction layer as `cm::uv_*_ptr` types corresponding to
      the `uv_*_t` handle types.  Each pointer is either empty (`nullptr`)
      or has an initialized handle attached to a loop.  Use move semantics
      to ensure a single owner of the handle so that clients can predict
      when the handle is destroyed.
  31. 20 Nov, 2017 1 commit
  32. 19 Nov, 2017 4 commits