1. 19 Oct, 2016 1 commit
  2. 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
  3. 19 Sep, 2016 1 commit
  4. 03 Sep, 2016 1 commit
  5. 27 Aug, 2016 3 commits
  6. 29 Jun, 2016 1 commit
    • Brad King's avatar
      Avoid using KWSys auto_ptr by adopting it ourselves · b5ec5b09
      Brad King authored
      Replace use of cmsys::auto_ptr with a CM_AUTO_PTR macro that maps to
      our own implementation adopted from the KWSys auto_ptr implementation.
      Later we may be able to map CM_AUTO_PTR to std::auto_ptr on compilers
      that do not warn about it.
      
      Automate the client site conversions:
      
          git grep -l auto_ptr -- Source/ | grep -v Source/kwsys/ | xargs sed -i \
            's|cmsys::auto_ptr|CM_AUTO_PTR|;s|cmsys/auto_ptr.hxx|cm_auto_ptr.hxx|'
      b5ec5b09
  7. 16 May, 2016 1 commit
    • Kitware Robot's avatar
      Revise C++ coding style using clang-format · d9fd2f54
      Kitware Robot authored
      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 2 commits
    • 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
    • Brad King's avatar
      Source: Stabilize include order · 180538c7
      Brad King authored
      Each source file has a logical first include file.  Include it in an
      isolated block so that tools that sort includes do not move them.
      180538c7
  10. 24 Oct, 2015 2 commits
  11. 14 Oct, 2015 1 commit
    • Stephen Kelly's avatar
      cmState: Move TargetType enum from cmTarget. · eac15298
      Stephen Kelly authored
      Mostly automated:
      
       values=( "EXECUTABLE" "STATIC_LIBRARY" "SHARED_LIBRARY" "MODULE_LIBRARY" "OBJECT_LIBRARY" "UTILITY" "GLOBAL_TARGET" "INTERFACE_LIBRARY" "UNKNOWN_LIBRARY" "TargetType")
       for i in "${values[@]}"; do     git grep -l cmTarget::$i | xargs sed -i "s|cmTarget::$i|cmState::$i|g"; done
      eac15298
  12. 08 Oct, 2015 1 commit
  13. 28 Aug, 2015 2 commits
  14. 18 Aug, 2015 1 commit
    • Bastien Schatt's avatar
      cmLocalVisualStudioGenerator: Use computed .obj extension (#13685) · 3e94f94b
      Bastien Schatt authored
      CMAKE_<LANG>_OUTPUT_EXTENSION tells us the proper extension for the
      current toolchain.  Teach the ComputeObjectFilenames method to use
      GetLanguageOutputExtension to look up the extension instead of
      hard-coding ".obj".  This is already done in the code path for explicit
      file names inside our call to GetObjectFileNameWithoutTarget.
      3e94f94b
  15. 27 May, 2015 1 commit
    • Stephen Kelly's avatar
      cmLocalGenerator: Require a valid cmState::Snapshot in the ctor. · 3b880a07
      Stephen Kelly authored
      Refactor the local generator creation API to accept a
      cmState::Snapshot.  Adjust MakeLocalGenerator to use the 'current'
      snapshot in cases where there is no parent.  Create the snapshot
      for subdirectories in cmMakefile::AddSubdirectory.
      
      This means that snapshots are now created at the point of extending the tree,
      as appropriate, and independently of the cmLocalGenerator and cmMakefile they
      represent the state for.
      3b880a07
  16. 20 May, 2015 1 commit
  17. 19 May, 2015 1 commit
  18. 14 May, 2015 2 commits
  19. 28 Apr, 2015 1 commit
  20. 14 Nov, 2014 1 commit
    • Brad King's avatar
      Add an option for explicit BYPRODUCTS of custom commands (#14963) · e15a7075
      Brad King authored
      A common idiom in CMake-based build systems is to have custom commands
      that generate files not listed explicitly as outputs so that these
      files do not have to be newer than the inputs.  The file modification
      times of such "byproducts" are updated only when their content changes.
      Then other build rules can depend on the byproducts explicitly so that
      their dependents rebuild when the content of the original byproducts
      really does change.
      
      This "undeclared byproduct" approach is necessary for Makefile, VS, and
      Xcode build tools because if a byproduct were listed as an output of a
      rule then the rule would always rerun when the input is newer than the
      byproduct but the byproduct may never be updated.
      
      Ninja solves this problem by offering a 'restat' feature to check
      whether an output was really modified after running a rule and tracking
      the fact that it is up to date separately from its timestamp.  However,
      Ninja also stats all dependencies up front and will only restat files
      that are listed as outputs of rules with the 'restat' option enabled.
      Therefore an undeclared byproduct that does not exist at the start of
      the build will be considered missing and the build will fail even if
      other dependencies would cause the byproduct to be available before its
      dependents build.
      
      CMake works around this limitation by adding 'phony' build rules for
      custom command dependencies in the build tree that do not have any
      explicit specification of what produces them.  This is not optimal
      because it prevents Ninja from reporting an error when an input to a
      rule really is missing.  A better approach is to allow projects to
      explicitly specify the byproducts of their custom commands so that no
      phony rules are needed for them.  In order to work with the non-Ninja
      generators, the byproducts must be known separately from the outputs.
      
      Add a new "BYPRODUCTS" option to the add_custom_command and
      add_custom_target commands to specify byproducts explicitly.  Teach the
      Ninja generator to specify byproducts as outputs of the custom commands.
      In the case of POST_BUILD, PRE_LINK, and PRE_BUILD events on targets
      that link, the byproducts must be specified as outputs of the link rule
      that runs the commands.  Activate 'restat' for such rules so that Ninja
      knows it needs to check the byproducts, but not for link rules that have
      no byproducts.
      e15a7075
  21. 13 Mar, 2014 1 commit
  22. 12 Mar, 2014 2 commits
  23. 08 Mar, 2014 2 commits
  24. 07 Nov, 2012 1 commit
  25. 09 Mar, 2012 1 commit
  26. 06 Mar, 2012 1 commit
    • Brad King's avatar
      VS: Simplify object name computation · 67734be8
      Brad King authored
      Simplify cmLocalVisualStudioGenerator::ComputeObjectNameRequirements to
      loop over the original vector of source files instead of recursively
      traversing source groups just to find the same files.  Drop from
      cmVisualStudio10TargetGenerator::ComputeObjectNames temporary source
      group calculation now that it is not needed for computing object names.
      67734be8
  27. 18 Nov, 2011 1 commit
  28. 14 Nov, 2011 1 commit
    • Brad King's avatar
      Order VS local generator Version ivar values consistently · 1be4b6f4
      Brad King authored
      Move the Version member to the top cmLocalVisualStudioGenerator class
      and set it consistently for instances created by all the global
      generator versions.  Use an enumeration type with values scaled by a
      factor of 10 so we can handle VS 7.1 without out-of-order numbers.
      
      VS 7.1 support for SuppressStartupBanner was broken by commit 25116a3c
      (Fix CMAKE_VERBOSE_MAKEFILE for VS10 vcxproj files, 2011-10-11) because
      it assumed comparison of VS version numbers works.  Now it does.
      1be4b6f4
  29. 11 Apr, 2011 2 commits
  30. 08 Apr, 2011 1 commit
    • Brad King's avatar
      VS10: Fix working directory of consecutive custom commands (#11938) · 06fcbc47
      Brad King authored
      The VS 10 msbuild tool uses a single command shell to invoke all the
      custom command scripts in a project.  Isolate the environment and
      working directory of custom commands using setlocal/endlocal.  The
      form of each command is
      
        set errlev=
        setlocal
        cd c:\work\dir
        if %errorlevel% neq 0 goto :cmEnd
        c:
        if %errorlevel% neq 0 goto :cmEnd
        command1 ...
        if %errorlevel% neq 0 goto :cmEnd
        ...
        commandN ...
        if %errorlevel% neq 0 goto :cmEnd
        :cmEnd
        endlocal & set errlev=%errorlevel%
        if %errlev% neq 0 goto :VCEnd
      
      so that all changes to the environment and working directory are
      isolated within the script and the return code is preserved.
      06fcbc47
  31. 10 Feb, 2011 1 commit
    • Brad King's avatar
      VS: Create a Fortran DLL's import library directory · 2516c05c
      Brad King authored
      The Intel Fortran plugin forgets to create the output directory into
      which it will write a DLL's import library.  Utilize the fix added by
      commit f4b3bdc6 (Create an exe's implib output dir for VS, 2009-06-15)
      and generalized by commit 764ac980 (Generalize exe implib dir creation
      for VS, 2009-06-16).  Create a pre-link rule to make the directory.
      2516c05c