Commit Graph

20466 Commits

Author SHA1 Message Date
Kitware Robot 6bf6482fa6 CMake Nightly Date Stamp 2016-05-19 00:01:07 -04:00
Brad King 4f17baccad Merge topic 'file-glob-sort'
edcccde7 file: Sort GLOB results to make it deterministic (#14491)
2016-05-18 09:30:59 -04:00
Brad King 570d689776 Merge topic 'ghs-shorter-object-names'
d7233a04 GHS: Use shorter object file names on collision
2016-05-18 09:30:55 -04:00
Brad King 1e876b4691 Merge topic 'clang-format-lexer'
030556b7 cmListFileLexer: Revise C++ coding style using clang-format
e4a92dab cmListFileLexer: Update to flex 2.6
2016-05-18 09:30:50 -04:00
Geoff Viola d7233a0472 GHS: Use shorter object file names on collision 2016-05-18 09:27:19 -04:00
Kitware Robot 529c96c6b7 CMake Nightly Date Stamp 2016-05-18 00:01:07 -04:00
Brad King 030556b72b cmListFileLexer: Revise C++ coding style using clang-format
Manually extract the C++ portion of `cmListFileLexer.in.l` into a
temporary file, format it, and then move it back into the original file.
Manually format C++ code inside the lexer actions to match our style.
Then re-generate the lexer.
2016-05-17 13:27:23 -04:00
Brad King e4a92dab3f cmListFileLexer: Update to flex 2.6
Revise the documented modifications we need to make to the
flex-generated source file according to the needs of the new version.
Update our own implementation to avoid warnings with flex types.
2016-05-17 10:56:37 -04:00
Reiner Herrmann edcccde7d6 file: Sort GLOB results to make it deterministic (#14491)
Even though the `file(GLOB)` documentation specifically warns against
using it to collect a list of source files, projects often do it anyway.
Since it uses `readdir()`, the list of files will be unsorted.
This list is often passed directly to add_executable / add_library.
Linking binaries with an unsorted list will make it unreproducible,
which means that the produced binary will differ depending on the
unpredictable `readdir()` order.

To solve those reproducibility issues in a lot of programs (which don't
explicitly `list(SORT)` the list manually), sort the resulting list of
the `file(GLOB)` command.

A more detailed rationale about reproducible builds is available
[here](https://reproducible-builds.org/).
2016-05-17 10:12:11 -04:00
Brad King 7d2a0aa76c Merge topic 'clang-format-source'
d9fd2f54 Revise C++ coding style using clang-format
82df6dea Empty commit at end of history preceding clang-format style transition
6a13f43f CONTRIBUTING: Add a section on coding style
bf451d9f Add a script to run clang-format on the entire source tree
1e90d78f Configure clang-format for CMake source tree
da60adc3 Tell Git to use a distinct conflict marker size in `.rst` files
2016-05-17 09:33:02 -04:00
Brad King 930ac45cba Merge topic 'clang-format-prep'
c7006d2e cmGeneratorTarget: Protect macro code layout from clang-format
2016-05-17 09:32:59 -04:00
Kitware Robot 8b0be06005 CMake Nightly Date Stamp 2016-05-17 00:01:08 -04:00
Kitware Robot d9fd2f5402 Revise C++ coding style using clang-format
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.
2016-05-16 16:05:19 -04:00
Brad King c7006d2ef1 cmGeneratorTarget: Protect macro code layout from clang-format
The `IMPLEMENT_VISIT_IMPL` macro must preserve a space before the `>`
character in case the `DATATYPE` is a template type ending in `>`.
Manually format the macro layout as clang-format would except for this
space.  Then add markup to tell clang-format not to format this macro.
2016-05-16 16:04:43 -04:00
Brad King bc7598fde0 Merge topic 'cpack-rpm-different-package-names'
44ee2d71 CPack/RPM different package names
2016-05-16 10:11:32 -04:00
Brad King 2b25174da6 Merge topic 'cpack-deb-improvements'
4461e8bb CPack/Deb cpack-deb-improvements release notes
7e940bf7 CPack/Deb test changes due to breaking changes
3b648894 CPack/Deb package release number in file name
316dd613 CPack/Deb proper package file naming
271e03f0 CPack/Deb per-component package architecture
23baaf8d CPack/Deb inter package dependencies
3a55a0e7 CPack/Deb proper component packages file naming
c7f388e7 CPack/Deb generation of postinst and postrm ldconfig files
2d589653 CPack/Deb generation of DEBIAN/shlibs control file
2016-05-16 10:11:30 -04:00
Brad King cd1c3d80d0 Merge topic 'link-item-interface-not-path'
9cb263d7 cmComputeLinkInformation: Do not mark interface library as a path
2016-05-16 10:11:27 -04:00
Kitware Robot fba30b2fc7 CMake Nightly Date Stamp 2016-05-16 00:01:05 -04:00
Kitware Robot 80a2f87968 CMake Nightly Date Stamp 2016-05-15 00:01:05 -04:00
Domen Vrankar 44ee2d717a CPack/RPM different package names
Packagers may now set their own rpm package
file names or request that rpmbuild tool
chooses one for them. It also supports handing
of situations where one spec file may produce
multiple rpm packages.
2016-05-15 03:01:34 +02:00
Kitware Robot b952336902 CMake Nightly Date Stamp 2016-05-14 00:01:08 -04:00
Brad King 9cb263d772 cmComputeLinkInformation: Do not mark interface library as a path
The empty string we add as a link item for an INTERFACE_LIBRARY target
is not a path, so do not mark it as such.  The generators currently
tolerate it either way, but only by accident.
2016-05-13 14:39:53 -04:00
Domen Vrankar 316dd61367 CPack/Deb proper package file naming
Proper Debian packages file naming for single package
setup (breaks compatibility with previous versions)
2016-05-13 10:46:04 -04:00
Alexander Smorkalov 3a55a0e72c CPack/Deb proper component packages file naming
Proper Debian packages file naming for multi-component setup
(breaks compatibility with previous versions)
2016-05-13 10:46:03 -04:00
Alexander Smorkalov c7f388e723 CPack/Deb generation of postinst and postrm ldconfig files
DEBIAN/postinst and DEBAIN/postrm files generation if
the package installs libraries in ldconfig controlled
location (/lib/, /usr/lib/)
2016-05-13 10:46:03 -04:00
Alexander Smorkalov 2d5896530b CPack/Deb generation of DEBIAN/shlibs control file
DEBIAN/shlibs control file generation if the package
contains libraries
2016-05-13 10:46:02 -04:00
Kitware Robot bdc84a9def CMake Nightly Date Stamp 2016-05-13 00:01:07 -04:00
Brad King cb704c0871 Merge topic 'ctest-suppress-Note'
eafe541f CTest: Do not treat "Note: ..." lines as errors (#14394)
2016-05-12 09:28:36 -04:00
Brad King 7057864560 Merge topic 'cmake-gui-locale'
cab095e1 cmake-gui: Always use "C" locale for numbers (#16099)
2016-05-12 09:28:33 -04:00
Clinton Stimpson cab095e11e cmake-gui: Always use "C" locale for numbers (#16099)
Set LC_NUMERIC = "C" at startup after Qt initializes the application
because Qt may have adopted the current locale from the environment.
CMake does not define behavior for non-C-locale numeric behavior.
2016-05-12 09:24:36 -04:00
Kitware Robot 27cda1390a CMake Nightly Date Stamp 2016-05-12 00:01:11 -04:00
Brad King eafe541ff6 CTest: Do not treat "Note: ..." lines as errors (#14394)
Otherwise CTest interprets the Qt5 moc tool output

    Note: No relevant classes found. No output generated.

as a compiler error.
2016-05-11 09:56:51 -04:00
Kitware Robot eb4f510412 CMake Nightly Date Stamp 2016-05-11 00:01:07 -04:00
Brad King 541d20dd9f Merge topic 'find-command-prefix-from-PATH-windows-only'
b30b32a4 Drop find_(library|file|path) prefixes from PATH on non-Windows
2016-05-10 14:40:52 -04:00
Kitware Robot 5fdd7d21f4 CMake Nightly Date Stamp 2016-05-10 00:01:08 -04:00
Brad King b30b32a493 Drop find_(library|file|path) prefixes from PATH on non-Windows
Since commit v3.3.0-rc1~430^2 (Teach find_(library|file|path) to get
prefixes from PATH, 2015-02-18) we search in <prefix>/include and
<prefix>/lib directories for prefixes with bin directories in the PATH
environment variable.  The motivation was to support MSYS, MinGW and
similar Windows platforms in their default environments automatically.
At the time this behavior was thought to be worthwhile in general.

Suggested-by: Chuck Atkins <chuck.atkins@kitware.com>
2016-05-09 12:58:08 -04:00
Brad King 0ac18d40c8 Remove `//------...` horizontal separator comments
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.
2016-05-09 09:41:43 -04:00
Brad King d95fbdb709 Merge topic 'custom-command-CROSSCOMPILING_EMULATOR'
8c2cedc6 CustomCommandGenerator: Add support for CROSSCOMPILING_EMULATOR
2016-05-09 09:01:10 -04:00
Brad King 7ecd9648a1 Merge topic 'clang-format-prep'
afca3735 Help clang-format wrap after braces on long initializer lists
85425a3e Move comments off of class access specifier lines
64b55203 Isolate formatted streaming blocks with clang-format off/on
2016-05-09 09:01:08 -04:00
Brad King 488b82f8cc Merge topic 'fix-export-unset'
f45c16e7 Fix export file variable pollution
2016-05-09 09:01:05 -04:00
Jean-Christophe Fillion-Robin 8c2cedc624 CustomCommandGenerator: Add support for CROSSCOMPILING_EMULATOR
Teach the `add_custom_command` and `add_custom_target' commands to
substitute argv0 with the crosscompiling emulator if it is a target with
the `CROSSCOMPILING_EMULATOR` property set.
2016-05-09 08:56:27 -04:00
Kitware Robot 9183056ed4 CMake Nightly Date Stamp 2016-05-09 00:01:05 -04:00
Kitware Robot e19d7d6073 CMake Nightly Date Stamp 2016-05-08 00:01:05 -04:00
Kitware Robot 7aee319b73 CMake Nightly Date Stamp 2016-05-07 00:01:07 -04:00
Brad King afca373510 Help clang-format wrap after braces on long initializer lists
Add a long comment inside a few braced initializer lists in order to
convince clang-format to break after the opening brace and format the
list without indenting every value past the opening brace.
2016-05-06 15:54:32 -04:00
Brad King 85425a3e6c Move comments off of class access specifier lines
The clang-format tool may turn this:

   public: // comment about access specifier

     // unrelated comment indented with code
     ...

Into:

   public: // comment about access specifier

           // unrelated comment indented with code
     ...

Avoid this by moving comments off of access specifier lines.
2016-05-06 14:51:26 -04:00
Brad King 64b5520346 Isolate formatted streaming blocks with clang-format off/on
The clang-format tool can do a good job formatting most code, but
well-organized streaming blocks are best left manually formatted.

Find blocks of the form

    os <<
      "...\n"
      "...\n"
      ;

using the command

    $ git ls-files -z -- Source |
      egrep -v -z '^Source/kwsys/' |
      xargs -0 pcregrep -M --color=always -B 1 -A 1 -n \
        '<<[^\n]*\n(^ *("[^\n]*("|<<|;)$|;)\n){2,}'

Find blocks of the form

    os << "...\n"
       << "...\n"
       << "...\n";

using the command

    $ git ls-files -z -- Source |
      egrep -v -z '^Source/kwsys/' |
      xargs -0 pcregrep -M --color=always -B 1 -A 1 -n \
        '<<[^\n]*\n(^ *<<[^\n]*(\\n"|<<|;)$\n){2,}'

Surround such blocks with the pair

    /* clang-format off */
    ...
    /* clang-format on */

in order to protect them from update by clang-format.  Use the C-style
`/*...*/` comments instead of C++-style `//...` comments in order to
prevent them from ever being swallowed by re-formatting of surrounding
comments.
2016-05-06 14:25:55 -04:00
Brad King 73601ff831 Merge topic 'ghs-hash-object-locations'
5e428713 GHS: Shorten long object paths with duplicate source names
2016-05-06 08:22:33 -04:00
Geoff Viola 5e4287131b GHS: Shorten long object paths with duplicate source names
Detect when the resulting object path is too long and compute an
alternative name using a hash.
2016-05-06 08:21:05 -04:00
Kitware Robot eb27154f63 CMake Nightly Date Stamp 2016-05-06 00:01:05 -04:00