20521 Commits

Author SHA1 Message Date
Sebastian Holtermann
488ea8c709 Autogen: Generate not included moc files in subdirectories (#12873)
Not included moc files generated from a source file in
CMAKE_CURRENT_SOURCE_DIR/SUBDIR
will be generated in the directory
CMAKE_CURRENT_BINARY_DIR/TARGETNAME_automoc.dir/SUBDIR/
2016-04-22 08:49:22 -04:00
Sebastian Holtermann
66caae45f6 Autogen: Check added for name collisions of generated qrc_NAME.cpp files 2016-04-22 08:49:22 -04:00
Sebastian Holtermann
663d093d45 Autogen: Check added for name collisions of generated ui_NAME.h files 2016-04-22 08:49:21 -04:00
Sebastian Holtermann
8295d43713 Autogen: Check added for name collisions of generated moc files
The test exits with an error if two or more source files
would generate the same moc file.
2016-04-22 08:49:21 -04:00
Kitware Robot
02f663f15c CMake Nightly Date Stamp 2016-04-22 00:01:05 -04:00
Kitware Robot
9b5929da22 CMake Nightly Date Stamp 2016-04-21 00:01:05 -04:00
Rolf Eike Beer
2263949b78 cmGlobalXCodeGenerator: do not pass char* to cmSystemTools::CollapseFullPath()
This takes a std::string&, so directly pass the object to it instead of
converting back and forth.
2016-04-20 23:35:01 +02:00
Rolf Eike Beer
2b25ce30ca make cmGlobalXCodeGenerator::XCodeEscapePath() take a std::string&
All callers already have one, and it was immediately converted to one
internally. Just keep the old one around, and only modify it when needed.
2016-04-20 23:35:01 +02:00
Rolf Eike Beer
ffedf3527d make cmGlobalXCodeGenerator::BuildObjectListOrString::Add() take a string&
All callers already have these objects, and it is only passed to other methods
taking such, so avoid all conversions in between.
2016-04-20 23:34:57 +02:00
Rolf Eike Beer
6100bdff38 cmGlobalXCodeGenerator: directly call CreateString() with std::string
This function already takes a const std::string&, no need to convert the input
to a char* before passing it in.
2016-04-20 23:34:05 +02:00
Rolf Eike Beer
068358e1ed cmMakefile::AddCacheDefinition: avoid conversions between char* and string
Running the testsuite this function is entered more than 126,000 times. Reorder
the code flow so that a conversion from char* to std::string is only done when
the cache entry is a path one, which happens only ~50 times during the
testsuite.
2016-04-20 23:33:17 +02:00
Brad King
f223652790 Merge topic 'autogen-cleanups'
840b830b Autogen: Qrc processing: Generate single map with final input / output names
bc4c7751 Autogen: Ui processing: Generate single map with final input / output names
47e60bc5 Autogen: Split out UI file generation code to dedicated method
cf679ea8 Autogen: Split out moc file generation code to dedicated method
3ea1d090 Autogen: Rename method GenerateQrc{ => Files}
8ced8bb9 Autogen: New logCommand method. It prints commands using std::cout.
95064a6d Autogen: Rename header extension Join method to JoinExts
7a73c404 Autogen: Use SystemTools string functions instead of rolling out own
2016-04-20 09:52:34 -04:00
Kitware Robot
0a05b2bd41 CMake Nightly Date Stamp 2016-04-20 00:01:05 -04:00
Sebastian Holtermann
840b830bc6 Autogen: Qrc processing: Generate single map with final input / output names 2016-04-19 12:59:13 -04:00
Sebastian Holtermann
bc4c7751ab Autogen: Ui processing: Generate single map with final input / output names
The single map allows name collision testing (in a later commit)
2016-04-19 12:59:06 -04:00
Sebastian Holtermann
47e60bc5a0 Autogen: Split out UI file generation code to dedicated method 2016-04-19 12:52:36 -04:00
Sebastian Holtermann
cf679ea8dc Autogen: Split out moc file generation code to dedicated method 2016-04-19 12:51:26 -04:00
Sebastian Holtermann
3ea1d09082 Autogen: Rename method GenerateQrc{ => Files} 2016-04-19 12:49:47 -04:00
Sebastian Holtermann
8ced8bb95a Autogen: New logCommand method. It prints commands using std::cout. 2016-04-19 12:49:22 -04:00
Sebastian Holtermann
95064a6d35 Autogen: Rename header extension Join method to JoinExts
While at it, simplify the signature and avoid a trailing separator.
2016-04-19 12:48:05 -04:00
Sebastian Holtermann
7a73c404dd Autogen: Use SystemTools string functions instead of rolling out own 2016-04-19 12:44:08 -04:00
Kitware Robot
7d4c99a957 CMake Nightly Date Stamp 2016-04-19 00:01:05 -04:00
Brad King
fa4ae9fb12 Merge topic 'refactor-cmListFileBacktrace'
0f96ef00 Remove unused cmake::IssueMessage overload
563bf9dd cmState: Remove unused entry point fields from snapshot data
7c36d206 cmListFileBacktrace: Refactor storage to provide efficient value semantics
1f6bd8a9 cmState: Avoid accumulating snapshot storage for backtraces
18b6676b cmState: Add Snapshot method to get bottom of call stack
2016-04-18 11:07:07 -04:00
Brad King
ef713503c8 Merge topic 'minor-cleanups'
2faa8b36 Add call stack to unused/uninitialized variable warnings
da07c506 cmLocalGenerator: Simplify IssueMessage implementation
cc7aed77 cmLocalGenerator: Use own IssueMessage method
c50285de cmOutputConverter: Assert construction with a valid snapshot
b6ed71b1 cmMakefile: Move cmMakefileCall to .cxx file
a559f0f6 cmWhileCommand: Simplify context construction
7503deb2 cmIfCommand: Simplify execution context construction
2016-04-18 11:07:04 -04:00
Brad King
0f96ef00cb Remove unused cmake::IssueMessage overload
All callers now pass a full backtrace so we do not need the alternative
that takes a cmListFileContext directly.  Drop this overload to remove
the code duplication.
2016-04-18 09:21:19 -04:00
Brad King
563bf9dd8a cmState: Remove unused entry point fields from snapshot data
This information is now kept in cmMakefile::Backtrace.
2016-04-18 09:21:19 -04:00
Brad King
7c36d2067b cmListFileBacktrace: Refactor storage to provide efficient value semantics
Since commit v3.4.0-rc1~321^2~2 (Genex: Store a backtrace, not a pointer
to one, 2015-07-08) we treat cmListFileBacktrace instances as
lightweight values.  This was true at the time only because the
backtrace information was kept in the cmState snapshot hierarchy.
However, that forced us to accumulate a lot of otherwise short-lived
snapshots just to have the backtrace fields available for reference by
cmListFileBacktrace instances.  Recent refactoring made backtrace
instances independent of the snapshot hierarchy to avoid accumulating
short-lived snapshots.  This came at the cost of making backtrace values
heavy again, leading to lots of string coying and slower execution.

Fix this by refactoring cmListFileBacktrace to provide value semantics
with efficient shared storage underneath.  Teach cmMakefile to maintain
its call stack using an instance of cmListFileBacktrace.  This approach
allows the current backtrace to be efficiently saved whenever it is
needed.

Also teach cmListFileBacktrace the notion of a file-level scope.  This
is useful for messages about the whole file (e.g. during parsing) that
are not specific to any line within it.  Push the CMakeLists.txt scope
for each directory and never pop it.  This ensures that we always have
some context information and simplifies cmMakefile::IssueMessage.
Push/pop a file-level scope as each included file is processed.  This
supersedes cmParseFileScope and improves diagnostic message context
information in a few places.  Fix the corresponding test cases to expect
the improved output.
2016-04-18 09:21:19 -04:00
Brad King
0256ea55ab Merge topic 'cmPolicies-missing-include'
cc684857 cmPolicies.cxx: Add missing include <ctype.h> for isdigit (#16066)
2016-04-18 08:57:37 -04:00
Brad King
f5c8a46808 Merge topic 'cmake-host-solaris'
5dc6cfd6 Solaris: Add a CMAKE_HOST_SOLARIS variable (#16061)
2016-04-18 08:57:29 -04:00
Brad King
0f6a8f7a46 Merge topic 'cmake-gui-osx-install-mkdir'
32d569af cmake-gui: Teach --install make destination directory (#16064)
2016-04-18 08:57:27 -04:00
Kitware Robot
49c4d665dc CMake Nightly Date Stamp 2016-04-18 00:01:05 -04:00
Kitware Robot
6f139d31ca CMake Nightly Date Stamp 2016-04-17 00:01:05 -04:00
Kitware Robot
94179ecf22 CMake Nightly Date Stamp 2016-04-16 00:01:08 -04:00
Brad King
cc684857c2 cmPolicies.cxx: Add missing include <ctype.h> for isdigit (#16066) 2016-04-15 13:46:15 -04:00
Stafen Teleman
5dc6cfd6ea Solaris: Add a CMAKE_HOST_SOLARIS variable (#16061) 2016-04-15 13:25:45 -04:00
Brad King
32d569af9a cmake-gui: Teach --install make destination directory (#16064)
Ensure the destination directory exists before creating symlinks in it.
2016-04-15 13:23:41 -04:00
Brad King
1f6bd8a93f cmState: Avoid accumulating snapshot storage for backtraces
Changes during post-3.3/pre-3.4 development refactored storage of most
configure-time information, including variable bindings and function
scopes.  All scopes (even short-lived) were kept persistently for
possible future debugging features, causing huge accumulated memory
usage.  This was mostly addressed by commit v3.4.1~4^2 (cmState: Avoid
accumulating snapshot storage for short-lived scopes, 2015-11-24).

Since then we still keep short-lived scopes when they are needed for a
backtrace.  This is because since commit v3.4.0-rc1~378^2
(cmListFileBacktrace: Implement in terms of cmState::Snapshot,
2015-05-29) backtraces have been lightweight objects that simply point
into the snapshot tree.  While the intention of this approach was to
avoid duplicating the call stack file path strings, the cost turned out
to be holding on to the entire call stack worth of scope snapshots,
which is much worse.

Furthermore, since commit v3.4.0-rc2~1^2 (cmIfCommand: Issue CMP0054
warning with appropriate context, 2015-10-20) all conditions used in
`if()` commands hold a backtrace for use in diagnostic messages.  Even
though the backtrace is short-lived it still causes the scope snapshot
to be kept.  This means that code like

    function(foo)
      if(0)
      endif()
    endfunction()

    foreach(i RANGE 1000000)
      foo()
    endforeach()

accumulates storage for the function call scope snapshots.

Fix this by partially reverting commit v3.4.0-rc1~378^2 and saving the
entire call stack during cmListFileBacktrace construction.  This way
we can avoid keeping short-lived scope snapshot storage in all cases.
2016-04-15 10:31:39 -04:00
Brad King
18b6676bff cmState: Add Snapshot method to get bottom of call stack
The bottom of the call stack is always a long-lived snapshot and can be
saved for later use with cmOutputConverter.
2016-04-15 10:31:39 -04:00
Brad King
2faa8b3620 Add call stack to unused/uninitialized variable warnings
In commit v2.8.4~32^2~14 (Use cmake::IssueMessage for warnings,
2010-12-07) these warnings became formatted.  It is more informative to
give the full call stack with such warnings.  Also it is easier to
implement warnings with a full call stack because we do not have to
construct a custom backtrace with only the top.
2016-04-15 10:13:12 -04:00
Brad King
da07c506b9 cmLocalGenerator: Simplify IssueMessage implementation
This method was added by commit v3.4.0-rc1~424^2~6 (cmLocalGenerator:
Add IssueMessage method, 2015-06-13) in order to reduce callers'
dependency on cmMakefile.  Currently the implementation of
cmLocalGenerator::IssueMessage is just a copy of the post-configure code
path in cmMakefile::IssueMessage.  De-duplicate the implementation by
simply calling the cmMakefile copy for now.  This will simplify upcoming
refactoring of backtraces.  The dependency on cmMakefile can be removed
by future work once that is done.
2016-04-15 10:13:08 -04:00
Brad King
cc7aed77a8 cmLocalGenerator: Use own IssueMessage method 2016-04-15 08:34:05 -04:00
Brad King
c50285dee6 cmOutputConverter: Assert construction with a valid snapshot
We unconditionally use information from the snapshot so it must be
valid.
2016-04-15 08:34:05 -04:00
Brad King
b6ed71b17c cmMakefile: Move cmMakefileCall to .cxx file 2016-04-15 08:32:15 -04:00
Brad King
a559f0f6b0 cmWhileCommand: Simplify context construction 2016-04-15 08:31:59 -04:00
Brad King
7503deb2c5 cmIfCommand: Simplify execution context construction 2016-04-15 08:29:42 -04:00
Kitware Robot
c42aa3ed8b CMake Nightly Date Stamp 2016-04-15 00:01:05 -04:00
Kitware Robot
003d4e5752 CMake Nightly Date Stamp 2016-04-14 00:01:06 -04:00
Brad King
f5da19edd0 Merge topic 'cmState-rename-include-snapshot'
c54ed781 cmState: Rename CallStack snapshots to IncludeFile
2016-04-13 09:58:21 -04:00
Brad King
eae4cee0b5 Merge topic 'try_compile-config-flags'
bd581a37 try_compile: Honor CMAKE_<LANG>_FLAGS_<CONFIG> changes (#16054)
82ef90fc cmCoreTryCompile: Factor out config lookup for re-use
2016-04-13 09:58:18 -04:00
Brad King
1dc78fecc7 Merge topic 'clang-tidy'
5e62444c Add options to run clang-tidy with the compiler
2016-04-13 09:58:08 -04:00