Commit Graph

28176 Commits

Author SHA1 Message Date
Brad King 3e3a09d1d3 Merge topic 'clean-up-CMAKE_COMMAND'
6fbd4cae Use cmSystemTools::GetCMakeCommand() to get path to cmake internally
2015-05-21 09:03:52 -04:00
Brad King 2c54622ff5 Merge topic 'cmake-gui-osx-install-command-line'
e462ef74 Help: Add notes for topic 'cmake-gui-osx-install-command-line'
8ea2db26 cmake-gui: Replace command-line install dialog with information box
438ce4a0 cmake-gui: Add --install option to add command-line tools on OS X
41477d5c cmake-gui: Drop undocumented and unused --mac-install option
2015-05-21 09:03:50 -04:00
Brad King f3e4e3ecde Merge topic 'doc-cache-option-space'
b0ea3673 Help: Spell '-D' option consistently across documentation (#15575)
2015-05-21 09:03:48 -04:00
Brad King e604bb1be9 Merge topic 'clean-up-cmQtAutoGenerators'
a5b59fae QtAutogen: Create global generator on the stack.
fe401ede QtAutogen: Use a more-obvious delete-target.
c95a55ad QtAutogen: Remove the need for a local makefile variable.
460e8fb9 QtAutogen: Inline static factory method.
58f41c78 QtAutogen: Remove repeated setters.
2015-05-21 09:03:46 -04:00
Brad King f05d9308c9 Merge topic 'clean-up-cmMakefile'
b9f99155 cmMakefile: Remove VarUsageStack.
2b09d9f3 cmMakefile: Remove VarInitStack.
528d6802 cmMakefile: Use more suitable method name to log var usage.
9118b53b cmMakefile: Move internal method to private scope.
f58c3774 cmMakefile: Mark definitions explicitly erased, even at top level.
ea7b962b cmMakefile: Raise variable in scope explicitly when needed.
c8cb6688 cmMakefile: Use early return to reduce nested code.
bdd1aa91 cmMakefile: Don't use else after return.
c42f0e2b cmMakefile: Remove redundant conditions.
caff8e5a cmCTest: Remove unimplemented method.
bb1e8c3a cmMakefile: Remove Print() debugging facilities.
1363bff8 cmMakefile: Remove duplicate variable initialization.
5b7ff35c cmMakefile: Don't expect the VarStack iterator to support size().
390bc324 cmMakefile: Remove redundant condition.
8ab1cce7 cmMakefile: Rename method to something more appropriate.
2dd5d42f cmMakefile: Make the public ReadListFile method take one param.
...
2015-05-21 09:03:44 -04:00
Brad King a23fdec8d2 Merge topic 'doc-cmake-buildsystem-typo'
7412d100 Help: Fix typo in cmake-buildsystem(7) manual
2015-05-21 09:03:43 -04:00
Brad King 03a65dab30 Merge topic 'run-include-what-you-use'
ada5ffce Add options to run include-what-you-use with the compiler
67fa3da9 cmake: Add internal -E mode to run include-what-you-use with the compiler
2015-05-21 09:03:40 -04:00
Brad King 41d833e1e9 Merge topic 'cleanup-module-policies'
b3795df2 FortranCInterface: Do not use cmake_policy(VERSION)
a4596f20 CheckTypeSize: Do not use cmake_policy(VERSION)
2015-05-21 09:03:38 -04:00
Brad King a696974298 Merge topic 'CheckTypeSyze-CMP0054'
6784f0a6 CheckTypeSize: Avoid if() auto-dereferene in quoted arguments (#15571)
2015-05-21 09:03:37 -04:00
Brad King e462ef74e5 Help: Add notes for topic 'cmake-gui-osx-install-command-line' 2015-05-21 08:59:32 -04:00
Brad King 8ea2db2639 cmake-gui: Replace command-line install dialog with information box
The QMacInstallDialog infrastructure no longer works on modern OS X
versions.  Drop it and replace the dialog with a simple info box that
explains to the user how to run 'cmake-gui --install' to add symlinks.
Also suggest simply modifying the PATH.

This approach is similar to the Xcode 'xcode-select --install' method
of installing Xcode Command Line Tools.
2015-05-21 08:59:32 -04:00
Brad King 438ce4a0fb cmake-gui: Add --install option to add command-line tools on OS X
On OS X add an "--install[=/path/to/bin]" option (defaulting to
/usr/bin) that installs symbolic links into the given directory.
This will help OS X users make the tools available on the command
line even when they sit inside a CMake.app bundle.
2015-05-21 08:59:31 -04:00
Kitware Robot f3c308dd82 CMake Nightly Date Stamp 2015-05-21 00:01:06 -04:00
Brad King 6fbd4cae0d Use cmSystemTools::GetCMakeCommand() to get path to cmake internally
This is much simpler than finding a way to lookup "CMAKE_COMMAND"
everywhere.
2015-05-20 11:20:42 -04:00
Brad King b0ea367308 Help: Spell '-D' option consistently across documentation (#15575)
Always show the option with its argument separate in summary text.
State in the main documentation that the option and its argument can be
given together too.
2015-05-20 08:30:36 -04:00
Kitware Robot e6fac4f8d9 CMake Nightly Date Stamp 2015-05-20 00:01:46 -04:00
Stephen Kelly a5b59fae15 QtAutogen: Create global generator on the stack. 2015-05-20 00:30:16 +02:00
Stephen Kelly fe401ede2a QtAutogen: Use a more-obvious delete-target. 2015-05-20 00:30:15 +02:00
Stephen Kelly c95a55ad5a QtAutogen: Remove the need for a local makefile variable. 2015-05-20 00:30:13 +02:00
Stephen Kelly 460e8fb9ad QtAutogen: Inline static factory method. 2015-05-20 00:23:28 +02:00
Stephen Kelly 58f41c789f QtAutogen: Remove repeated setters.
These methods are called already just before calling the static method.
2015-05-20 00:22:51 +02:00
Stephen Kelly b9f9915516 cmMakefile: Remove VarUsageStack.
Store usage information in the cmDefintions value instead.  We already
pay for the memory as padding in the Def struct, so we might as well
use it.
2015-05-19 22:36:53 +02:00
Stephen Kelly 2b09d9f346 cmMakefile: Remove VarInitStack.
In cmMakefile::PushScope, a copy of the closure of keys initialized
in the parent scope is made.  In PopScope, essentially the same copy
is inserted back into the parent.  That means a lot of duplication
of strings and a lot of string comparisons.  None of it is needed,
because the cmDefinitions keys already provide a canonical
representation of what is initialized.

The removal of the separate container also makes the variable handling
code more easy to reason about in general.

Before this patch, configuring llvm uses 200 KiB for the VarInitStack.
Overall peak memory consumption goes from 35.5 MiB to 35.1 MiB.
2015-05-19 22:36:53 +02:00
Stephen Kelly 528d68021c cmMakefile: Use more suitable method name to log var usage. 2015-05-19 22:36:52 +02:00
Stephen Kelly 9118b53b79 cmMakefile: Move internal method to private scope. 2015-05-19 22:36:52 +02:00
Stephen Kelly f58c3774d1 cmMakefile: Mark definitions explicitly erased, even at top level.
Presumably the intention here is to attempt to optimize memory by not
storing what is not needed.  However, all keys need to be tracked
anyway to implement initialization tracking, and this special case
gets in the way of simplifying the implementation of that.

This doesn't change any observable effects because values set
to 0 are considered not to exist by the cmDefinitions API.
2015-05-19 22:36:52 +02:00
Stephen Kelly ea7b962be2 cmMakefile: Raise variable in scope explicitly when needed.
The Get method implicitly pulls a copy of all variables into a local scope. This
is not necessary.
2015-05-19 22:36:51 +02:00
Stephen Kelly c8cb66880c cmMakefile: Use early return to reduce nested code. 2015-05-19 22:36:51 +02:00
Stephen Kelly bdd1aa91ae cmMakefile: Don't use else after return. 2015-05-19 22:36:51 +02:00
Stephen Kelly c42f0e2b3e cmMakefile: Remove redundant conditions.
This container is never empty.
2015-05-19 22:36:51 +02:00
Stephen Kelly caff8e5a3e cmCTest: Remove unimplemented method. 2015-05-19 22:36:51 +02:00
Stephen Kelly bb1e8c3adf cmMakefile: Remove Print() debugging facilities.
They don't print things that are important in the modern implementation.
2015-05-19 22:36:50 +02:00
Stephen Kelly 1363bff83a cmMakefile: Remove duplicate variable initialization. 2015-05-19 22:36:50 +02:00
Stephen Kelly 5b7ff35c4d cmMakefile: Don't expect the VarStack iterator to support size(). 2015-05-19 22:36:50 +02:00
Stephen Kelly 390bc3244f cmMakefile: Remove redundant condition.
As this is called in the constructor, the definition will never be already
set.
2015-05-19 22:36:49 +02:00
Stephen Kelly 8ab1cce704 cmMakefile: Rename method to something more appropriate.
Allow the name to be used for something more-suitable.
2015-05-19 22:36:49 +02:00
Stephen Kelly 2dd5d42f52 cmMakefile: Make the public ReadListFile method take one param.
Make the existing method a private overload. All external callers
invoke the method with only one argument.
2015-05-19 22:36:49 +02:00
Stephen Kelly f3e6a336f2 cmMakefile: Remove CurrentListFile member.
It is never read externally.  The CollapseFullPath removed in this commit
is a repeat of a similar call inside ReadListFile.
2015-05-19 22:36:48 +02:00
Stephen Kelly 6b9e647239 cmMakefile: Port CurrentListFile clients to GetDefinition.
There is no need to store this as a member variable.
2015-05-19 22:36:48 +02:00
Brad King 7412d100a2 Help: Fix typo in cmake-buildsystem(7) manual 2015-05-19 13:24:11 -04:00
Brad King ada5ffce7b Add options to run include-what-you-use with the compiler
Create a <LANG>_INCLUDE_WHAT_YOU_USE target property (initialized by a
CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE variable) to specify an IWYU command
line to be run along with the compiler.
2015-05-19 13:16:29 -04:00
Bill Hoffman 67fa3da9e8 cmake: Add internal -E mode to run include-what-you-use with the compiler
Add an internal "cmake -E __run_iwyu" mode to wrap the compiler call.
Run a given include-what-you-use command line with the compiler options
and report a warning if it finds anything.  Then run the real compiler.

Co-Author: Brad King <brad.king@kitware.com>
2015-05-19 13:16:29 -04:00
Brad King b3795df2f4 FortranCInterface: Do not use cmake_policy(VERSION)
Do not force a specific policy version in the module because it prevents
projects from setting newer policies to NEW.  In particular, projects
may want to set CMP0056 to NEW to affect any try_compile calls in this
module.

Use of this was added in commit v2.8.2~714 (FortranCInterface: Use CMake
2.8.0 behavior, 2009-11-17) in order to set CMP0007 to NEW.  Simply set
this policy explicitly instead.
2015-05-19 13:00:38 -04:00
Brad King a4596f2048 CheckTypeSize: Do not use cmake_policy(VERSION)
Do not force a specific policy version in the module because it prevents
projects from setting newer policies to NEW.  In particular, projects
may want to set CMP0056 to NEW to affect any try_compile calls in this
module.

Use of this was added in commit v2.8.2~539 (New CheckTypeSize for OS X
Universal Binaries, 2009-12-17) and updated in commit v3.1.0-rc1~511^2~1
(Do not change minimum required version in modules, 2014-05-07).  The
history does not clearly explain why a specific policy version was
introduced.  If specific policies need to be NEW then we can add
explicit settings for them.
2015-05-19 12:56:07 -04:00
Rolf Eike Beer 6784f0a6eb CheckTypeSize: Avoid if() auto-dereferene in quoted arguments (#15571)
Exposed by a CMP0054 warning.  Set CMP0054 to NEW since no code in this
module depends on the old behavior.
2015-05-19 12:47:24 -04:00
Brad King 594dd9b36a Merge topic 'use-std-unordered_map'
d7923b82 Use std::unordered_map instead of hash_map where available.
820777af Tests: Don't rely on ordering of targets in maps.
921d74d8 AutoGen: Don't iterate over a container while populating it.
2015-05-19 11:30:21 -04:00
Brad King 25d22be514 Merge topic 'ninja-per-target-rules'
a390de65 Ninja: Generate separate compile and link rules for each target
2015-05-19 11:09:44 -04:00
Brad King be248ab435 Merge topic 'refactor-cmLocalGenerator'
fa9eb814 cmLocalGenerator: Remove redundant path access.
1933f3d1 cmLocalGenerator: Remove redundant path conversions.
9e4b6cc2 cmState: Store computed relative paths to to current directories.
991f5e49 cmState::Snapshot: Store components for current directories.
57bdc1a2 cmState: Compute and store directory components.
2015-05-19 11:09:39 -04:00
Brad King 0cbc69b9ea Merge topic 'minor-cleanups'
61d52e6e cmListFileBacktrace: Hide the context-stack implementation detail.
a271f7f1 cmTarget: Simplify CMP0023 message loop.
f4300cd4 cmTarget: Simplify output computation.
65a42849 cmTarget: Store context in stack only if different.
9645cba3 cmListFileContext: Implement EqualityComparable.
52a8d19c cmTarget: Store only cmListFileContext for CMP0023 handling.
59ba1215 cmTarget: Remove needless iteration.
18f810a8 cmListFileContext: Sort by line before file.
e96b5d14 cmListFileContext: Implement LessThanComparable.
7eb0dfa0 cmMakefile: Use std::set::insert API to simplify CMP0054 handling.
f9785e0c cmMakefile: Simplify CMP0054 handling.
e17b5e42 cmMakefile: Add access to the top-level execution context.
1ec1bf9f if(): Test the effect of cmMakefileCall use in elseif() handling.
9b4aefad cmMakefile: Replace deques with vectors.
2015-05-19 11:09:36 -04:00
Brad King 56dc91c3ad Merge topic 'clean-up-vs-generators'
dad8b03f VS: Remove obsolete methods.
e435f875 VS: Move version information to global generator.
b5f093f0 VS: Simplify setting of flag table.
2015-05-19 11:09:34 -04:00