Commit Graph

33125 Commits

Author SHA1 Message Date
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 441dd9a7e4 Merge topic 'platform-required-rpath-override'
5a21557b AIX,HP: Allow user to override the default runtime path (libpath)
2016-05-18 09:30:53 -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
Brad King eb07669245 Tests: Select RunCMake.Ninja test cases based on ninja version
Some test cases need features not available in Ninja < 1.6, so check the
version before running them.
2016-05-18 09:24:54 -04:00
Kitware Robot 529c96c6b7 CMake Nightly Date Stamp 2016-05-18 00:01:07 -04:00
Brad King 40bee43a58 cmCPackDragNDropGenerator: Replace std::{ostringstream => string} 2016-05-17 13:47:21 -04:00
Matthew Hanna 5a21557b33 AIX,HP: Allow user to override the default runtime path (libpath)
The `CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH` is used by CMake to always
append `-Wl,-blibpath:/usr/lib:/lib` to the link line.  This is needed
by default on these platforms but needs to be overridden in some use
cases (e.g. an environment in which one maintains versioned shared
libraries).  Change our logic to set this value only if it not already
set by the user, project, or toolchain file.
2016-05-17 13:36:29 -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
Nicolas Despres 8a862a4d4b Ninja: Support embedding of CMake as subninja project
Add a `CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable.  When it is set, CMake
generates a `build.ninja` file suitable for embedding into another ninja
project potentially generated by an alien generator.
2016-05-17 09:34:12 -04:00
Nicolas Despres 038e7716e5 Ninja: Pass all build paths through a central method
This gives us a central location to revise paths.
2016-05-17 09:34:11 -04:00
Nicolas Despres 7c26a6a269 Ninja: Fix path to soname-d target file
In WriteLinkStatement we convert all target output paths to ninja-style
paths.  Add a missing conversion for the `soname` file name.
2016-05-17 09:34:10 -04:00
Nicolas Despres ac3cdd9af2 Ninja: Convert object file names to ninja paths earlier
In WriteObjectBuildStatement we pass object file names and directories
to several places that expect paths as Ninja sees them.  Convert them to
Ninja paths before all such uses.
2016-05-17 09:34:09 -04:00
Nicolas Despres d4381cb15d Ninja: Convert link library file names like all other output paths
All paths generated on Ninja-invoked command lines should be passed
through ConvertToNinjaPath.  Fix ConvertToLinkReference to call this
instead of partially duplicating its implementation.
2016-05-17 09:34:09 -04:00
Nicolas Despres 0397c92a15 Ninja: Pre-compute "CMakeCache.txt" build target name 2016-05-17 09:34:08 -04:00
Nicolas Despres 3b3ecdfa48 Ninja: Pre-compute "all" build target name 2016-05-17 09:34:07 -04:00
Brad King 5ca72750c8 Ninja: Simplify generation of custom target logical path
In `AppendTargetOutputs` we generate a logical build target name for
each UTILITY command.  Simplify the logic to avoid testing the result
of `ConvertToNinjaPath`.
2016-05-17 09:34:06 -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 82df6deaaf Empty commit at end of history preceding clang-format style transition
This is an empty commit that precedes an automatic application of
clang-format to update the C++ style of our entire source tree.
This may be helpful to rebase a topic branch that was originally
based on a commit preceding the transition.  One may first rebase
the topic on this commit.  Then use one of the following approaches.

*   Rewrite the topic, including this commit, using `git filter-branch`
    `--tree-filter` with `Utilities/Scripts/clang-format.bash` to update
    the style in every commit.  Rebase the revised topic, excluding the
    rewrite of this commit, on the style transition commit.

OR

*   Add a `.git/info/grafts` entry to change the parent of the first
    commit in the topic from this commit to the style transition commit.
    Rewrite the topic using `git filter-branch --tree-filter` with
    `Utilities/Scripts/clang-format.bash` to update the style in every
    commit.  Then remove the graft, which was resolved by the filter.

See `git help filter-branch` and `git help repository-layout` for
details.
2016-05-16 16:04:46 -04:00
Brad King 6a13f43f30 CONTRIBUTING: Add a section on coding style
Document that we now define our coding style with `clang-format`.
2016-05-16 16:04:46 -04:00
Brad King bf451d9ff9 Add a script to run clang-format on the entire source tree
List all sources in version control and filter out those that we should
not format for various reasons.  Then run the clang-format tool to do an
in-place update.
2016-05-16 16:04:46 -04:00
Brad King 1e90d78f99 Configure clang-format for CMake source tree
After discussion among developers we settled on the Mozilla style
with a few tweaks:

* Do not align operator arguments.

* Do not always break after a function return type.

* Limit to 79 columns instead of 80 to fit edge cases
  better in 80-column terminals as CMake has always done.

* Format for C++98 instead of C++11 because CMake is written
  in the former language.

Co-Author: Daniel Pfeifer <daniel@pfeifer-mail.de>
2016-05-16 16:04:46 -04:00
Brad King da60adc363 Tell Git to use a distinct conflict marker size in `.rst` files
Use a long conflict marker size that is unlikely to be in conflict
with a `=======` section header underline.
2016-05-16 16:04:46 -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 d082810949 Merge topic 'boost-component-headers'
c2e8d515 FindBoost: Add checks for component-specific headers
2016-05-16 10:11:43 -04:00
Brad King 1ba8067618 Merge topic 'boost-1.61'
328eff90 FindBoost: Update dependencies for Boost 1.61
2016-05-16 10:11:41 -04:00
Brad King 856804f9a9 Merge topic 'findpkgconfig-target'
df97b979 FindPkgConfig: optionally create imported target for the found libraries
2016-05-16 10:11:38 -04:00
Brad King d3db070e9e Merge topic 'cpack-rpm-adding-dist-to-release-tag'
f5089cfc CPack/RPM adding dist to release tag test
f7003a60 CPack/RPM release dist tag support
2016-05-16 10:11:35 -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
Roger Leigh c2e8d5150e FindBoost: Add checks for component-specific headers
This supplements the existing library checks, to
cater for the possibility that the libraries are
present but the headers are not.  This can happen
when the Boost collections is split up into
multiple packages and not all are installed,
and will avoid the checks silently passing when
the build would subsequently fail.
2016-05-16 09:57:46 -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
Domen Vrankar f5089cfccd CPack/RPM adding dist to release tag test
Tests and release notes
2016-05-14 20:21:32 +02:00
Harry Mallon f7003a6055 CPack/RPM release dist tag support
Some Linux distros require Release tag
to be set to <ReleaseVersion><Dist>.
2016-05-14 20:21:32 +02:00
Rolf Eike Beer df97b9793f FindPkgConfig: optionally create imported target for the found libraries 2016-05-14 09:31:41 +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
Roger Leigh 328eff90eb FindBoost: Update dependencies for Boost 1.61 2016-05-13 19:39:41 +01:00
Domen Vrankar 4461e8bb55 CPack/Deb cpack-deb-improvements release notes 2016-05-13 10:46:05 -04:00
Domen Vrankar 7e940bf74a CPack/Deb test changes due to breaking changes
New CPack/Deb tests and changes to old tests
as package file names and inter component dependency
detection was changed.
2016-05-13 10:46:05 -04:00
Domen Vrankar 3b64889436 CPack/Deb package release number in file name
Debian packages file naming format must contain
revision number - package release number
(breaks compatibility with previous versions)
2016-05-13 10:46:04 -04:00