Commit Graph

20504 Commits

Author SHA1 Message Date
Brad King d256ba078a try_compile: Optionally forward custom platform variables to test project
Add a `CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable to specify a list
of custom variables to be forwarded to a `try_compile` test project.
This will be useful for platform information modules or toolchain files
to forward some platform-specific set of variables from the host project
(perhaps set in its cache) to the test project so that it can build the
same way.
2016-05-25 09:36:19 -04:00
Brad King fb4791b37c cmCoreTryCompile: Refactor forwarding of variables to test project
De-duplicate the logic that constructs the cmake `-D` flag used to pass
variables into the test project cache.  Also subsume variables that were
propagated by generating `set()` commands in the project and pass them
as cache entries instead.
2016-05-25 09:36:19 -04:00
Brad King 6052e4b3bf Merge topic 'improve-character-find-and-replace'
5784747d Improve string find: prefer character overloads.
5cec953e Use std::replace for replacing chars in strings.
2a1a2033 cmExtraEclipseCDT4Generator: use std::replace.
34bc6e1f cmCTestScriptHandler: don't call find repeatedly.
2016-05-25 09:34:29 -04:00
Brad King 916d52533e Merge topic 'standard-include-directories'
c1340827 Add a variable to specify language-wide system include directories
44199097 cmMakefile: Optimize AddSystemIncludeDirectories for empty set
a896043b GHS: Compute include directories consistently with other generators
2016-05-25 09:34:24 -04:00
Brad King 2bc55b69db Merge topic 'output-converter-enums'
25d1ef64 Use enums defined in cmOutputConverter using their fully qualified name.
2016-05-25 09:34:19 -04:00
Brad King c13408279f Add a variable to specify language-wide system include directories
Create a `CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable to specify
system include directories for for `<LANG>` compiler command lines.
This plays a role for include directories as the existing
`CMAKE_<LANG>_STANDARD_LIBRARIES` variable does for link libraries.
2016-05-25 09:30:31 -04:00
Daniel Pfeifer 25d1ef6424 Use enums defined in cmOutputConverter using their fully qualified name.
Mostly automated:

values=("RelativeRoot" "NONE" "FULL" "HOME" "START" "HOME_OUTPUT" "START_OUTPUT"
        "OutputFormat" "UNCHANGED" "MAKERULE" "SHELL" "WATCOMQUOTE" "RESPONSE"
        "FortranFormat" "FortranFormatNone" "FortranFormatFixed" "FortranFormatFree")
for i in "${values[@]}"; do git grep -l cmLocalGenerator::$i | xargs sed -i "s|cmLocalGenerator::$i|cmOutputConverter::$i|g"; done
2016-05-25 09:20:09 -04:00
Kitware Robot d5ccab37b3 CMake Nightly Date Stamp 2016-05-25 00:01:07 -04:00
Daniel Pfeifer 5784747d1b Improve string find: prefer character overloads.
Apply fix-its from clang-tidy's performance-faster-string-find checker.
Ignore findings in kwsys.
2016-05-24 23:22:24 +02:00
Daniel Pfeifer 5cec953e6a Use std::replace for replacing chars in strings.
Find uses of `cmSystemTools::ReplaceString` where both `replace` and
`with` are string literals with a size of one.

Automate with:

git grep -l ReplaceString | xargs sed -i "s|cmSystemTools::ReplaceString(\([^,]*\), \"\(.\)\", \"\(.\)\");|std::replace(\1.begin(), \1.end(), '\2', '\3');|g"
git grep -l ReplaceString | xargs sed -i "s|cmSystemTools::ReplaceString(\([^,]*\), \"\(.\)\", \"\\\\\\\\\");|std::replace(\1.begin(), \1.end(), '\2', '\\\\\\\\');|g"
git grep -l ReplaceString | xargs sed -i "s|cmSystemTools::ReplaceString(\([^,]*\), \"\\\\\\\\\", \"\(.\)\");|std::replace(\1.begin(), \1.end(), '\\\\\\\\', '\2');|g"
2016-05-24 23:22:20 +02:00
Daniel Pfeifer 2a1a2033af cmExtraEclipseCDT4Generator: use std::replace. 2016-05-24 23:22:16 +02:00
Daniel Pfeifer 34bc6e1f3b cmCTestScriptHandler: don't call find repeatedly.
Also, prefer the character overload.
2016-05-24 23:22:08 +02:00
Brad King a98a699987 Merge topic 'cpack-deb-different-package-names'
adbd3985 CPack/Deb possibility to change package name
2016-05-24 13:54:03 -04:00
Brad King f77a49ff30 Merge topic 'cpackifw-updates'
06ca7795 CPackIFW: Command cpack_ifw_configure_component learned ESSENTIAL option
222fa595 CPackIFW: Doc decoration
2016-05-24 13:53:53 -04:00
Brad King 4419909756 cmMakefile: Optimize AddSystemIncludeDirectories for empty set
Do not bother looping over all targets if we have no system include
directories to add anyway.
2016-05-24 11:40:35 -04:00
Brad King a896043bac GHS: Compute include directories consistently with other generators
All generators use cmLocalGenerator::GetIncludeDirectories to construct
the final list of include directories for a target.
2016-05-24 11:40:35 -04:00
Kitware Robot ecb4ad2aa2 CMake Nightly Date Stamp 2016-05-24 00:01:36 -04:00
Domen Vrankar adbd3985f8 CPack/Deb possibility to change package name
This patch preserves backward compatibility of
deb package names with previous CMake versions
but similarly to CPack/RPM allows to change
package name format and supports DEB-DEFAULT
setting that produces proper Debian package names.
2016-05-23 19:55:46 +02:00
Konstantin Podsvirov 06ca7795f4 CPackIFW: Command cpack_ifw_configure_component learned ESSENTIAL option 2016-05-23 19:09:03 +03:00
Brad King c75d91a05c Merge topic 'rpath-no-regex'
f4d3c44c Fix support for large RPATH updates (#16105)
2016-05-23 09:42:23 -04:00
Kitware Robot 2c13f1b7f0 CMake Nightly Date Stamp 2016-05-23 00:01:06 -04:00
Kitware Robot 52eeef3264 CMake Nightly Date Stamp 2016-05-22 00:01:04 -04:00
Kitware Robot 24391d9f76 CMake Nightly Date Stamp 2016-05-21 00:01:07 -04:00
Brad King acd039ae0e Merge topic 'minor-cleanup'
40bee43a cmCPackDragNDropGenerator: Replace std::{ostringstream => string}
2016-05-20 09:15:52 -04:00
Kitware Robot 4dc1164387 CMake Nightly Date Stamp 2016-05-20 00:01:07 -04:00
Brad King f4d3c44cc7 Fix support for large RPATH updates (#16105)
Avoid using a KWSys RegularExpression to search for RPATH substrings.
It cannot handle large expressions.
2016-05-19 11:59:25 -04:00
Brad King e0da6c3b56 Merge topic 'ninja-output-path-prefix'
eb076692 Tests: Select RunCMake.Ninja test cases based on ninja version
8a862a4d Ninja: Support embedding of CMake as subninja project
038e7716 Ninja: Pass all build paths through a central method
7c26a6a2 Ninja: Fix path to soname-d target file
ac3cdd9a Ninja: Convert object file names to ninja paths earlier
d4381cb1 Ninja: Convert link library file names like all other output paths
0397c92a Ninja: Pre-compute "CMakeCache.txt" build target name
3b3ecdfa Ninja: Pre-compute "all" build target name
5ca72750 Ninja: Simplify generation of custom target logical path
2016-05-19 10:41:27 -04:00
Brad King 5a9efbfc4b Merge topic 'cpack-ifw-updates'
41199f8c CPackIFW: Add support for Promoting Updates
6ca6b0dd CPackIFW: Add more known QtIFW releases
2016-05-19 10:41:21 -04:00
Kitware Robot 6bf6482fa6 CMake Nightly Date Stamp 2016-05-19 00:01:07 -04:00
Konstantin Podsvirov 41199f8c1e CPackIFW: Add support for Promoting Updates
Add support for this feature added by QtIFW 2.0.3:

  http://doc.qt.io/qtinstallerframework/ifw-updates.html

Add a `cpack_ifw_update_repository` command as porcelain.
2016-05-18 09:49:14 -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 40bee43a58 cmCPackDragNDropGenerator: Replace std::{ostringstream => string} 2016-05-17 13:47:21 -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