1. 11 Jul, 2018 2 commits
  2. 21 Jun, 2018 1 commit
  3. 30 May, 2018 1 commit
  4. 02 Feb, 2018 1 commit
    • Sebastian Holtermann's avatar
      Autogen: Improved multi-config include scheme · a8ee7406
      Sebastian Holtermann authored
      For multi configuration generators AUTOMOC generates the
      moc files that are included in `mocs_compilation.cpp`
      in `AUTOGEN_BUILD_DIR/include_$<CONFIG>/`. By doing so each
      configuration reads different moc files when compiling
      `mocs_compilation.cpp`. Since we do not (need to) rewrite
      `mocs_compilation.cpp` on a configuration change anymore,
      the files also does not need to be recompiled anymore.
      Not having to rewrite and recompile `mocs_compilation.cpp`
      on a configuration change anymore was the main objective of
      this patch.
      
      In a similar fashion AUTORCC generates a `qrc_BASE_CMAKE.cpp`
      file below `AUTOGEN_BUILD_DIR/include_$<CONFIG>/` and
      `qrc_BASE.cpp` becomes a mere wrapper that includes this
      actuall rcc output file (when using multi configuration
      generators).
      
      The template files `Modules/AutoRccInfo.cmake.in` and
      `Modules/AutogenInfo.cmake.in` were removed in favor
      of writing the info `.cmake` files manually.
      
      Closes #17230
      a8ee7406
  5. 17 Jan, 2018 2 commits
    • Sebastian Holtermann's avatar
    • Sebastian Holtermann's avatar
      Autogen: Process files concurrently in AUTOMOC and AUTOUIC · a008578d
      Sebastian Holtermann authored
      This introduces concurrent thread processing in the `_autogen`
      target wich processes AUTOMOC and AUTOUIC.
      Source file parsing is distributed among the threads by
      using a job queue from which the threads pull new parse jobs.
      Each thread might start an independent ``moc`` or ``uic`` process.
      Altogether this roughly speeds up the AUTOMOC and AUTOUIC build
      process by the number of physical CPUs on the host system.
      
      The exact number of threads to start in  the `_autogen` target
      is controlled by the new AUTOGEN_PARALLEL target property which
      is initialized by the new CMAKE_AUTOGEN_PARALLEL variable.
      If AUTOGEN_PARALLEL is empty or unset (which is the default)
      the thread count is set to the number of physical CPUs on
      the host system.
      
      The AUTOMOC/AUTOUIC generator and the AUTORCC generator are
      refactored to use a libuv loop internally.
      
      Closes #17422.
      a008578d
  6. 19 Nov, 2017 2 commits
  7. 25 Sep, 2017 1 commit
  8. 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.
      d1e5eb84
  9. 22 Aug, 2017 1 commit
  10. 10 Aug, 2017 1 commit
  11. 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'
      1d829c86
  12. 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 lin...
      86578ecc
  13. 03 Sep, 2016 2 commits
  14. 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
  15. 06 Oct, 2015 1 commit
  16. 05 Oct, 2015 1 commit
  17. 29 Sep, 2015 1 commit