1. 25 Jan, 2019 1 commit
  2. 15 Dec, 2018 1 commit
  3. 12 Dec, 2018 1 commit
  4. 18 Sep, 2018 1 commit
  5. 12 Sep, 2018 2 commits
    • Brad King's avatar
      target_link_libraries: Allow use with targets in other directories · a1ad0a69
      Brad King authored
      Previously the command did not allow naming targets on the LHS that
      were not created in the calling directory.  Lift this restriction to
      enable more flexible use by projects.
      Targets named on the RHS will need to be looked up during generation in
      the scope of the call site rather than the scope of the LHS target.
      Introduce an internal syntax in `[INTERFACE_]LINK_LIBRARIES` properties
      to specify target names that need to be looked up in a directory other
      than that containing the target on which the property is set.  Add
      minimal documentation of the syntax to help users that encounter it.
      Unfortunately CMake previously did allow such calls in the case that
      only `INTERFACE` libraries are specified, but those libraries would be
      looked up in the target's directory rather than the caller's.  Add
      policy `CMP0079` to enable the new behavior with new lookup scope in a
      compatible way.
      Fixes: #17943
    • Brad King's avatar
      Make internal TARGET_PROPERTY generator expressions more robust · 2f708f5d
      Brad King authored
      While collecting usage requirements from the `INTERFACE_*` properties of
      directly linked targets, we internally generate `TARGET_PROPERTY:` and
      `TARGET_OBJECTS:` generator expressions to refer to those properties on
      those targets.  At the point we generate these expressions we already
      have a pointer to an exact `cmGeneratorTarget` instance.
      Switch from using the target name in these generator expressions to
      using an internal unique name generated for each `cmGeneratorTarget`
      instance to be referenced.  This avoids depending on the user-facing
      target name to find the same target we already have.
  6. 11 Sep, 2018 1 commit
  7. 30 Aug, 2018 1 commit
  8. 03 Aug, 2018 1 commit
  9. 01 Aug, 2018 1 commit
  10. 01 Jun, 2018 1 commit
    • Kitware Robot's avatar
      Revise C++ coding style using clang-format-6.0 · d7204e64
      Kitware Robot authored
      Run the `clang-format.bash` script to update all our C and C++ code to a
      new style defined by `.clang-format`.  Use `clang-format` version 6.0.
      * If you reached this commit for a line in `git blame`, re-run the blame
        operation starting at the parent of this commit to see older history
        for the content.
      * See the parent commit for instructions to rebase a change across this
        style transition commit.
  11. 25 May, 2018 1 commit
    • Florian Maushart's avatar
      cmake: Add options for parallel builds to --build mode · 1ab3881e
      Florian Maushart authored
      While we already support `cmake --build . -- -j`, the options after `--`
      are specific to the native build tool.  Add new options `--parallel
      [<N>]` and `-j [<N>]` to abstract this and map to the proper option
      for the native build tool.
  12. 23 Jan, 2018 1 commit
  13. 17 Jan, 2018 1 commit
  14. 04 Dec, 2017 1 commit
  15. 19 Nov, 2017 1 commit
  16. 30 Oct, 2017 1 commit
  17. 24 Oct, 2017 1 commit
    • Deniz Bahadir's avatar
      Defer check for sources within a target until generation. · 4e7f6738
      Deniz Bahadir authored
      The `add_library` and `add_executable` commands can now be called with
      no source-files and won't generate a warning or error message, as long
      as source-files will be added later via the `target_sources` command.
      If during the generation step still no sources are associated with
      targets created by such calls a useful error message will be generated
      and generation fails.
      Targets of type `INTERFACE_LIBRARY`, `UTILITY` or `GLOBAL_TARGET` are
      excluded from this check because we do not need sources for these target
      types during generation.
      Fixes: #16872
  18. 19 Oct, 2017 1 commit
    • Brad King's avatar
      Add infrastructure for generators to select a build tool instance · 314613d1
      Brad King authored
      Add cache entry `CMAKE_GENERATOR_INSTANCE` to hold the instance location
      persistently across re-runs of CMake in a given build tree.
      For now we reject the option by default if explicitly set.  It will be
      implemented on a per-generator basis.  Pass the setting into try_compile
      project generation.  Add a RunCMake.GeneratorInstance test to cover
      basic use cases for the option.  Verify that `CMAKE_GENERATOR_INSTANCE`
      is empty by default, and that it is rejected when the generator does not
      support a user setting.
      Issue: #17268
  19. 13 Oct, 2017 1 commit
  20. 07 Sep, 2017 1 commit
    • Sebastian Holtermann's avatar
      Autogen: Iterate source files only once · d1e5eb84
      Sebastian Holtermann authored
      This is a large commit that serves multiple purposes
      - Iterate source files only once and store all extracted
        information in a cmQtAutogenDigest class that can be reused.
        This is brings speed improvements because several properties
        are only evaluated once. More that that it helps to avoid
        duplication of code with non trivial files property checks.
      - Fix the Visual Studio generator to use PRE_BUILD when possible.
      - Convert `for( ... )` loops to C++11 range base loops where possible
        (cmQtAutogen*.cxx only).
      - String concatenation optimizations.
  21. 30 Aug, 2017 1 commit
  22. 26 Aug, 2017 1 commit
  23. 24 Aug, 2017 1 commit
  24. 22 Aug, 2017 1 commit
  25. 14 Jun, 2017 1 commit
  26. 03 Jun, 2017 1 commit
  27. 21 Apr, 2017 1 commit
  28. 18 Apr, 2017 1 commit
  29. 11 Apr, 2017 1 commit
    • Daniel Pfeifer's avatar
      Use quotes for non-system includes · 1d829c86
      Daniel Pfeifer authored
      Automate with:
      git grep -l '#include <cm_' -- Source \
        | xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g'
      git grep -l '#include <cmsys/' -- Source \
        | xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g'
      git grep -l '#include <cm[A-Z]' -- Source \
        | xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
  30. 30 Mar, 2017 1 commit
    • Ruslan Baratov's avatar
      Add policy CMP0069 to enforce INTERPROCEDURAL_OPTIMIZATION · 1588a577
      Ruslan Baratov authored
      Previously the `INTERPROCEDURAL_OPTIMIZATION` target property was
      honored only for the Intel compiler on Linux and otherwise ignored.  In
      order to add support for more compilers incrementally without changing
      behavior in the future, add a new policy whose NEW behavior enforces the
      `INTERPROCEDURAL_OPTIMIZATION` property.  Add flags for supported
      compilers and otherwise produce an error.
  31. 23 Mar, 2017 1 commit
  32. 14 Feb, 2017 1 commit
  33. 20 Jan, 2017 1 commit
    • Gregor Jasny's avatar
      Xcode: Control emission of EFFECTIVE_PLATFORM_NAME · 10c9c73d
      Gregor Jasny authored
      When building with multiple SDKs within one project Xcode requires
      the usage of ${EFFECTIVE_PLATFORM_NAME} to put temporary and build
      outout into separate directories. For example an iOS device and
      simulator build use two different SDKs (iphoneos and iphonesimulator).
      In the past cmake tries to detect embedded toolchains that could
      possibly use simulators and emitted EFFECTIVE_PLATFORM_NAME (EPN)
      at the proper locations. In #16253 Mark noticed that if he
      uses macosx and iphoneos in combination the necessary EPN is not
      emitted. This is because CMake by default assumes macosx SDK which
      does not trigger EPN emission.
      The fist naive approach - enabling EPN unconditionally revealed that
      then the EPN leaks into generator expressions like $<TARGET_FILE:xxx>
      which might be a regression and thus is unacceptable.
      The next approach was to add an CMake property to enable EPN emission
      unconditionally. This solved the reported problem.
      But the EPN leakage also happened for the embedded toolchains already
      without anyone noticing. So the control property was turned into a
      tri-state one:
       * No definition: EPN is activated for embedded toolchains like before
       * ON: EPN is always emitted
       * OFF: EPN is never emitted
      That approach gives the user the chance to disable EPN for embedded
      toolchains and restores generator expression functionality for those.
      Closes: #16253
  34. 08 Nov, 2016 1 commit
  35. 24 Oct, 2016 1 commit
  36. 20 Oct, 2016 1 commit
  37. 19 Oct, 2016 3 commits