1. 16 Aug, 2017 1 commit
    • Aaron Orenstein's avatar
      Performance: Add an index to Change cmLocalGenerator::GeneratorTargets. · af3fd6f2
      Aaron Orenstein authored
      Add an index to Change cmLocalGenerator::GeneratorTargets for faster lookup by
      name.
      
      Also changed a bunch of uses of cmLocalGenerator::GetGeneratorTargets() to take
      const references instead of copying the vector.
      
      Represent generator targets as a map (name -> target) to make name lookups more
      efficient instead of looping through the entire vector to find the desired one.
      af3fd6f2
  2. 18 May, 2017 2 commits
  3. 19 Oct, 2016 3 commits
  4. 27 Sep, 2016 1 commit
    • Brad King's avatar
      Simplify CMake per-source license notices · 86578ecc
      Brad King authored
      Per-source copyright/license notice headers that spell out copyright holder
      names and years are hard to maintain and often out-of-date or plain wrong.
      Precise contributor information is already maintained automatically by the
      version control tool.  Ultimately it is the receiver of a file who is
      responsible for determining its licensing status, and per-source notices are
      merely a convenience.  Therefore it is simpler and more accurate for
      each source to have a generic notice of the license name and references to
      more detailed information on copyright holders and full license terms.
      
      Our `Copyright.txt` file now contains a list of Contributors whose names
      appeared source-level copyright notices.  It also references version control
      history for more precise information.  Therefore we no longer need to spell
      out the list of Contributors in each source file notice.
      
      Replace CMake per-source copyright/license notice headers with a short
      description of the license and links to `Copyright.txt` and online information
      available from "https://cmake.org/licensing".  The online URL also handles
      cases of modules being copied out of our source into other projects, so we
      can drop our notices about replacing links with full license text.
      
      Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
      of the replacements mechanically.  Manually fix up shebang lines and trailing
      newlines in a few files.  Manually update the notices in a few files that the
      script does not handle.
      86578ecc
  5. 23 Aug, 2016 1 commit
  6. 28 Jun, 2016 1 commit
  7. 16 May, 2016 1 commit
    • Kitware Robot's avatar
      Revise C++ coding style using clang-format · d9fd2f54
      Kitware Robot authored and Brad King's avatar Brad King committed
      Run the `Utilities/Scripts/clang-format.bash` script to update
      all our C++ code to a new style defined by `.clang-format`.
      Use `clang-format` version 3.8.
      
      * 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.
      d9fd2f54
  8. 09 May, 2016 1 commit
    • Brad King's avatar
      Remove `//------...` horizontal separator comments · 0ac18d40
      Brad King authored
      Modern editors provide plenty of ways to visually separate functions.
      Drop the explicit comments that previously served this purpose.
      Use the following command to automate the change:
      
          $ git ls-files -z -- \
              "*.c" "*.cc" "*.cpp" "*.cxx" "*.h" "*.hh" "*.hpp" "*.hxx" |
            egrep -z -v "^Source/cmCommandArgumentLexer\." |
            egrep -z -v "^Source/cmCommandArgumentParser(\.y|\.cxx|Tokens\.h)" |
            egrep -z -v "^Source/cmDependsJavaLexer\." |
            egrep -z -v "^Source/cmDependsJavaParser(\.y|\.cxx|Tokens\.h)" |
            egrep -z -v "^Source/cmExprLexer\." |
            egrep -z -v "^Source/cmExprParser(\.y|\.cxx|Tokens\.h)" |
            egrep -z -v "^Source/cmFortranLexer\." |
            egrep -z -v "^Source/cmFortranParser(\.y|\.cxx|Tokens\.h)" |
            egrep -z -v "^Source/cmListFileLexer\." |
            egrep -z -v "^Source/cm_sha2" |
            egrep -z -v "^Source/(kwsys|CursesDialog/form)/" |
            egrep -z -v "^Utilities/(KW|cm).*/" |
            xargs -0 sed -i '/^\(\/\/---*\|\/\*---*\*\/\)$/ {d;}'
      
      This avoids modifying third-party sources and generated sources.
      0ac18d40
  9. 29 Apr, 2016 1 commit
    • Brad King's avatar
      Format include directive blocks and ordering with clang-format · e1c77472
      Brad King authored
      
      
      Sort include directives within each block (separated by a blank line) in
      lexicographic order (except to prioritize `sys/types.h` first).  First
      run `clang-format` with the config file:
      
          ---
          SortIncludes: false
          ...
      
      Commit the result temporarily.  Then run `clang-format` again with:
      
          ---
          SortIncludes: true
          IncludeCategories:
            - Regex:    'sys/types.h'
              Priority: -1
          ...
      
      Commit the result temporarily.  Start a new branch and cherry-pick the
      second commit.  Manually resolve conflicts to preserve indentation of
      re-ordered includes.  This cleans up the include ordering without
      changing any other style.
      
      Use the following command to run `clang-format`:
      
          $ git ls-files -z -- \
              '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' |
            egrep -z -v '(Lexer|Parser|ParserHelper)\.' |
            egrep -z -v '^Source/cm_sha2' |
            egrep -z -v '^Source/(kwsys|CursesDialog/form)/' |
            egrep -z -v '^Utilities/(KW|cm).*/' |
            egrep -z -v '^Tests/Module/GenerateExportHeader' |
            egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' |
            xargs -0 clang-format -i
      
      This selects source files that do not come from a third-party.
      Inspired-by: Daniel Pfeifer's avatarDaniel Pfeifer <daniel@pfeifer-mail.de>
      e1c77472
  10. 27 Oct, 2015 1 commit
  11. 24 Oct, 2015 1 commit
  12. 20 Oct, 2015 3 commits
  13. 16 Oct, 2015 1 commit
  14. 14 Oct, 2015 4 commits
  15. 12 Oct, 2015 2 commits
  16. 10 Oct, 2015 1 commit
  17. 26 Aug, 2015 4 commits
  18. 01 Jul, 2015 1 commit
  19. 04 May, 2015 1 commit
  20. 03 May, 2015 1 commit
  21. 15 Apr, 2015 1 commit
  22. 27 Mar, 2015 1 commit
    • Brad King's avatar
      Allow add_dependencies() on INTERFACE libraries (#15414) · ac14cbf0
      Brad King authored
      Revert commit v3.0.0-rc1~175^2~20 (add_dependencies: Disallow use with
      INTERFACE_LIBRARY, 2013-12-25).  Teach our dependency analysis to
      transitively follow INTERFACE target utility dependencies as was done or
      IMPORTED targets in commit v2.8.6~127^2~1 (Allow add_dependencies() on
      imported targets, 2010-11-19).  Extend the InterfaceLibrary test with a
      case to cover header generation for a header-only INTERFACE library via
      a custom target.
      ac14cbf0
  23. 11 Jan, 2015 1 commit
  24. 07 Jul, 2014 1 commit
  25. 23 Jun, 2014 4 commits
    • Brad King's avatar
      cmTarget: Lookup targets in LinkInterface and LinkImplementation · d912220e
      Brad King authored
      Instead of storing just the string names in these structures, lookup any
      target associated with each item and store its cmTarget pointer.  Use
      the cmLinkItem class to hold the name and pointer together.  Update
      client sites to use the pre-stored lookup result instead of looking up
      the target name again.
      
      Create a cmTarget::LookupLinkItems helper method to handle the lookup.
      Since lookups are now moving from cmComputeLinkDepends::AddLinkEntries
      to cmTarget::LookupLinkItems, move use of CheckCMP0004 to the latter.
      This drops use of CheckCMP0004 from entries added for _LIB_DEPENDS
      variables by cmComputeLinkDepends::AddVarLinkEntries, but I do not
      think that use was intentional originally anyway.
      d912220e
    • Brad King's avatar
      cmTarget: Add GetUtilityItems to get target ordering dependencies · 097be413
      Brad King authored
      Add a method like GetUtilities but that provides the target names
      already looked up and resolved to cmTarget pointers internally.  Update
      call site in cmComputeTargetDepends::AddTargetDepend to use the
      already-found target instead of looking it up again.
      097be413
    • Brad King's avatar
      cmTarget: Remove 'head' argument from GetLinkImplementation · 0dc9e88d
      Brad King authored
      Many of the 'head' arguments added by commit v2.8.11~289^2~1 (Make
      linking APIs aware of 'head' target, 2013-01-04) turned out not to be
      needed.  The "link implementation" of a target never needs to be
      computed with anything but itself as the 'head' target (except for
      CMP0022 OLD behavior because then it is the link interface).
      
      Remove the unused 'head' target paths.  Add "internal" versions of
      cmTarget::GetDirectLinkLibraries and GetLinkImplementationLibraries
      to support the CMP0022 OLD behavior without otherwise exposing the
      'head' target option of these methods.
      0dc9e88d
    • Brad King's avatar
      cmComputeTargetDepends: Remove unused 'linking' argument · 7b859389
      Brad King authored
      The AddInterfaceDepends method is never called with a non-true value for
      its 'linking' argument.  Drop it.
      7b859389