1. 04 Apr, 2019 1 commit
  2. 21 Mar, 2019 1 commit
  3. 18 Mar, 2019 3 commits
    • Sebastian Holtermann's avatar
      Rename cmFileTimeComparison to cmFileTimeCache · 21641621
      Sebastian Holtermann authored
      The name `cmFileTimeCache` reflects the functionality of the class more
      appropriately.
      21641621
    • Sebastian Holtermann's avatar
      cmFileTimeComparison: Use cmFileTime internally · 103aa9e4
      Sebastian Holtermann authored
      This replaces OS dependent code in `cmFileTimeComparison` with `cmFileTime`
      instances that provide the required file time load and comparison operations.
      
      A new public `cmFileTimeComparison::Load` method is introduced that,
      for a given file name, updates the `cmFileTimeComparison` cache on demand and
      returns a `cmFileTime` instance on success.
      103aa9e4
    • Sebastian Holtermann's avatar
      New cmFileTime class · 6f24c4e9
      Sebastian Holtermann authored
      The new cmFileTime class stores the file modification time as an OS independent
      nanosecond count.  Its main use is to load and compare file modification times
      in nanosecond and second resolution.
      6f24c4e9
  4. 13 Mar, 2019 1 commit
  5. 25 Feb, 2019 1 commit
  6. 16 Feb, 2019 1 commit
  7. 29 Jan, 2019 1 commit
    • Chuck Atkins's avatar
      macOS: Add missing explicit dependency on CoreServices framework · 475e78d9
      Chuck Atkins authored
      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
      dependency.
      475e78d9
  8. 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
      a6982cff
  9. 16 Jan, 2019 1 commit
  10. 11 Jan, 2019 1 commit
  11. 12 Dec, 2018 6 commits
    • Brad King's avatar
      fileapi: add cmakeFiles v1 · 66154081
      Brad King authored
      Issue: #18398
      66154081
    • Brad King's avatar
      fileapi: add cache v2 · 7489e95b
      Brad King authored
      Start with v2 to distinguish it from server-mode v1.
      
      Issue: #18398
      7489e95b
    • 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.
      a0841b59
    • 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.
      ff69763c
    • Brad King's avatar
      fileapi: add codemodel v2 · 3e922ceb
      Brad King authored
      Start with v2 to distinguish it from server-mode v1.
      
      Issue: #18398
      3e922ceb
    • 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
      eb2ec41a
  12. 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
      compilers.
      
      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.
      410a3e4b
  13. 28 Nov, 2018 1 commit
  14. 11 Nov, 2018 1 commit
  15. 05 Nov, 2018 1 commit
    • Craig Scott's avatar
      CPack: Rename Ext generator to External · 20d5e77a
      Craig Scott authored
      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.
      20d5e77a
  16. 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.
      fc8955e8
  17. 25 Sep, 2018 1 commit
    • Marc Chevrier's avatar
      LINK_DIRECTORIES: Add new properties and commands · a71caab4
      Marc Chevrier authored
      These new capabilities enable to manage link directories
      
      Two new properties:
      * target properties: LINK_DIRECTORIES and INTERFACE_LINK_DIRECTORIES
      
      One new command
      * target_link_directories(): to populate target properties
      
      Fixes: #17215
      a71caab4
  18. 21 Sep, 2018 1 commit
  19. 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.
      fc7e4d1e
  20. 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
      projects.
      80914d88
  21. 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
      c1f5a44b
  22. 30 May, 2018 1 commit
  23. 11 May, 2018 1 commit
    • Alex Turbov's avatar
      CPack: Add NuGet support · f739752a
      Alex Turbov authored
      Create a CPack generator that uses `nuget.exe` to create packages:
      
          https://docs.microsoft.com/en-us/nuget/what-is-nuget
      
      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 supports _all-in-one_ (default), _one-group-per-package_
        and _one-component-per-package_ modes.
      f739752a
  24. 20 Apr, 2018 1 commit
  25. 16 Apr, 2018 1 commit
  26. 29 Mar, 2018 1 commit
  27. 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.
      6be53c66
  28. 22 Feb, 2018 1 commit
    • Brad King's avatar
      CMakeLib: Link to system thread libraries to support std::thread · 94eee5e6
      Brad King authored
      Some environments require linking to thread libraries for `std::thread`.
      Express this direct dependency of CMakeLib explicitly.  Previously this
      was done indirectly through our bundled libuv, but that does not work
      when using a system libuv.
      
      Fixes: #17757
      94eee5e6
  29. 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.
      3ec5f7c1
  30. 24 Jan, 2018 1 commit
    • Alexander Neundorf's avatar
      Generators: remove KDevelop3 generator · 9198e6a2
      Alexander Neundorf authored
      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.
      
      Alex
      9198e6a2
  31. 23 Jan, 2018 1 commit
    • Wouter Klouwen's avatar
      CTest: add safe conversion from cmDuration to integer types · ff62b005
      Wouter Klouwen authored
      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
      provided.
      
      It changes the protential problem areas to use this safe function.
      ff62b005
  32. 17 Jan, 2018 1 commit
  33. 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.
      b0716fbc