Commit Graph

17836 Commits

Author SHA1 Message Date
Stephen Kelly 26602cf56c cmLocalGenerator: Move variable population inside of condition.
It is only used in the condition, so no need to look for uses
elsewhere when reading the code.
2015-02-17 19:21:36 +01:00
Stephen Kelly cfb8483412 Update comment to match recent dashboard testing. 2015-02-17 19:20:23 +01:00
Stephen Kelly 6010f93632 Revert "cmGlobalGenerator: Fix value type pushed into autogens vector"
This reverts commit ae6fc555a7.

Use the more-natural make_pair algorithm.  The compiler motivating
the need for this is not supported as a host anymore.
2015-02-17 19:19:06 +01:00
Stephen Kelly 0550b9e330 Revert "Attempt to fix the compile of cmake on Sun CC."
This reverts commit a573a85658.

The workaround is not needed on supported SolarisStudio compilers.
2015-02-17 19:18:12 +01:00
Stephen Kelly 62429a1e54 cmGlobalGenerator: Remove unneeded pointer check.
Deleting nullptr is ok.
2015-02-17 19:18:11 +01:00
Stephen Kelly c697c1fafe cmTarget: Remove template argument workaround.
Pre-C++98 compilers required that the template argument be
used in the function parameters.  Those compilers are no longer
supported as hosts, so drop the workaround.
2015-02-17 19:18:11 +01:00
Brad King 5c635fa624 Merge topic 'vs7-OutputDirectory'
fa8b30eb VS: Fix .vcproj and .vfproj file OutputDirectory generation
aa2ba121 VS: Use $(ConfigurationName) as CMAKE_CFG_INTDIR in VS 7, 8, 9
2015-02-17 10:09:13 -05:00
Kitware Robot 034f8e0bd9 CMake Nightly Date Stamp 2015-02-17 00:01:08 -05:00
Brad King fa8b30ebb5 VS: Fix .vcproj and .vfproj file OutputDirectory generation
Teach cmLocalVisualStudio7Generator to set 'OutputDirectory' using the
same method as is used to set the 'OutputFile' in the generated project
file.  Also, OutputDirectory only needs to be set for targets that run the
linker or librarian.  These two changes make the VS 7 OutputDirectory
consistent with what cmVisualStudio10TargetGenerator generates for OutDir.

Without this, since the VS Intel Fortran plugin for VS >= 10 still uses
the VS 7 .vfproj file format, when executing test VSGNUFortran using
Intel Fortran Compiler 15.xx, the following warning is issued just
before compilation:

  TargetPath(...) does not match the Linker's OutputFile property value (...).
  This may cause your project to build incorrectly.
  To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt)
  property values match the value specified in %(Link.OutputFile).

Subsequently, an error is reported during linking.

Inspired-by: Vincent Newsum <vynewsum@gmail.com>
2015-02-16 11:48:16 -05:00
Brad King aa2ba12164 VS: Use $(ConfigurationName) as CMAKE_CFG_INTDIR in VS 7, 8, 9
This will allow us to use a value other than just the config name
for the project OutputDirectory setting used for $(OutDir).

Also use $(ConfigurationName) instead of $(OutDir) for the link
directory configuration suffix since that is a hard-coded instance of
a use case for CMAKE_CFG_INTDIR.
2015-02-16 11:48:04 -05:00
Brad King ec1ec47193 Merge topic 'cmListCommand-algorithms'
116459d3 cmListCommand: Avoid needlessly erasing from vectors.
1c7c35c3 cmListCommand: Replace remove duplicates loop with algorithm.
cebeed24 cmAlgorithms: Add cmRemoveDuplicates algorithm.
3cfe7a4c cmListCommand: Implement REMOVE_ITEM in terms of cmRemoveMatching.
050958a3 cmAlgorithms: Add cmRemoveMatching algorithm.
a77af8f1 cmListCommand: Replace joining loop with cmJoin algorithm.
6a22e401 cmListCommand: Use cmRemoveIndices for REMOVE_AT subcommand.
0b5cf0da cmAlgorithms: Implement algorithm for removing indexes.
069f2440 cmListCommand: Convert loop to find algorithm.
67a26764 cmListCommand: Implement REVERSE subcommand with std::reverse.
1cecd3a5 cmListCommand: Use std::find algorithm for FIND subcommand.
2015-02-16 09:44:44 -05:00
Brad King 7747e1a7f6 Merge topic 'wix-product-fragment'
a2ccbffd CPackWIX: Extend the patching mechanism to allow adding content to <Product>.
2015-02-16 09:44:40 -05:00
Kitware Robot f724ab5e78 CMake Nightly Date Stamp 2015-02-16 00:01:09 -05:00
Stephen Kelly 116459d34f cmListCommand: Avoid needlessly erasing from vectors.
The entire vector will be destroyed at once at the end of the scope,
and the remove algorithms already give us the end of the range of
interesting values, so just use those sentinals.
2015-02-15 20:47:51 +01:00
Stephen Kelly 1c7c35c372 cmListCommand: Replace remove duplicates loop with algorithm. 2015-02-15 20:47:51 +01:00
Stephen Kelly cebeed2486 cmAlgorithms: Add cmRemoveDuplicates algorithm.
Start by creating a vector to hold a unique values of the input range.  We
expect that in most cases, there will be relatively few duplicates, so
reserving enough memory for a complete copy is worthwhile.  Unlike a solution
involving a std::set, this algorithm allocates all the memory it needs
in one go and in one place, so it is more cache friendly.

Populate the unique copy with a lower_bound insert algorithm and record the
indices of duplicates.  This is the same complexity as the std::set insert
algorithm, but without the need to allocate memory on the heap and other
disadvantages of std::set.

Remove the duplicates with the cmRemoveIndices algorithm.
2015-02-15 20:46:25 +01:00
Stephen Kelly 3cfe7a4ca8 cmListCommand: Implement REMOVE_ITEM in terms of cmRemoveMatching. 2015-02-15 19:56:09 +01:00
Stephen Kelly 050958a328 cmAlgorithms: Add cmRemoveMatching algorithm.
Implement it in terms of std::remove_if with a binary search through
a matching range.
2015-02-15 19:56:08 +01:00
Stephen Kelly a77af8f130 cmListCommand: Replace joining loop with cmJoin algorithm. 2015-02-15 19:56:07 +01:00
Stephen Kelly 6a22e40147 cmListCommand: Use cmRemoveIndices for REMOVE_AT subcommand.
Avoid repeatedly looping over the indices to process elements (even
without breaking out of the loop when the element is found).
2015-02-15 19:55:28 +01:00
Stephen Kelly 0b5cf0dabd cmAlgorithms: Implement algorithm for removing indexes.
Implement ContainerAlgorithms::RemoveN to remove N elements to the
end of a container by rotating.  The rotate is implemented in terms
of the efficient swap algorithm, optimized even more in the standard
library implementation when the compiler supports the rvalue-references
feature to move elements.  Implement cmRemoveN with a Range API
for completeness.

std::rotate in C++11 is specified to return an iterator, but
c++98 specifies it to return void.  libstdc++ 5.0 will be the first
version to have the correct return type.  Implement
ContainerAlgorithms::Rotate in terms of std::rotate and return the
correct iterator from it.  While std::rotate requires forward iterators,
 this workaround means cmRotate requires bidirectional iterators.  As
most of CMake uses random access iterators anyway, this should not
be a problem.

Implement cmRemoveIndices in terms of the RemoveN algorithm, such
that each element which is not removed is rotated only once.  This
can not use the cmRemoveN range-API algorithm because that would
require creating a new range, but the range must be taken by reference
and so it can't be a temporary.

These remove algorithms are not part of the STL and I couldn't find them
anywhere else either.
2015-02-15 19:04:31 +01:00
Stephen Kelly 069f2440c4 cmListCommand: Convert loop to find algorithm. 2015-02-15 19:04:30 +01:00
Stephen Kelly 67a26764b5 cmListCommand: Implement REVERSE subcommand with std::reverse. 2015-02-15 18:57:23 +01:00
Stephen Kelly 1cecd3a531 cmListCommand: Use std::find algorithm for FIND subcommand.
Use a ostringstream to account for the input being a variable of type
size_t as a result of using std::distance.  There is no single
format string which portably accepts a size_t.
2015-02-15 14:28:50 +01:00
Kitware Robot fd8112ea7c CMake Nightly Date Stamp 2015-02-15 00:01:08 -05:00
Kitware Robot feb76254c5 CMake Nightly Date Stamp 2015-02-14 00:01:14 -05:00
Brad King d6616181c8 Merge topic 'clean-up-cmFunctionCommand'
78757e7f cmFunctionCommand: Replace loops with cmJoin.
fc1cf265 cmFunctionCommand: Remove counting variable.
e5ebeae7 cmFunctionCommand: Split loop in two.
2015-02-13 11:03:00 -05:00
Brad King cc90fd58ec Merge topic 'xcode-attribute-genex'
bf8f9c29 Xcode: Teach XCODE_ATTRIBUTE target properties about generator expressions
2015-02-13 11:02:58 -05:00
Nils Gladitz a2ccbffd8b CPackWIX: Extend the patching mechanism to allow adding content to <Product>. 2015-02-13 12:09:40 +01:00
Kitware Robot 8d38ff05e2 CMake Nightly Date Stamp 2015-02-13 00:01:16 -05:00
Stephen Kelly 78757e7ffc cmFunctionCommand: Replace loops with cmJoin. 2015-02-12 20:25:21 +01:00
Stephen Kelly fc1cf2654d cmFunctionCommand: Remove counting variable.
Start iteration at correct starting point directly.
2015-02-12 20:25:21 +01:00
Stephen Kelly e5ebeae768 cmFunctionCommand: Split loop in two. 2015-02-12 20:25:20 +01:00
Gregor Jasny bf8f9c29e7 Xcode: Teach XCODE_ATTRIBUTE target properties about generator expressions
Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
2015-02-12 13:35:31 -05:00
Brad King 32821bb319 Merge topic 'clean-up-cmMacroCommand'
b5f98e50 cmMacroCommand: Manipulate target string directly.
83414d5a cmMacroCommand: Move computation of ARGV%n names out of double loop.
9a1f8f35 cmMacroCommand: Move ARGV replacement out of condition.
4aa7bd2a cmMacroCommand: Remove condition around ARGN replacement.
6774c92b cmMacroCommand: Declare tmps in the scope that it's used.
2c4a7298 cmMacroCommand: Declare arg in the scope that it is used.
a551851a cmMacroCommand: Inline variable computation.
f79c0f76 cmMacroCommand: Compute variables outside of two loops.
8e0827b6 cmMacroCommand: Remove intermediate arg variables.
f2c49f59 cmMacroCommand: Remove condition around ARGN computation.
3250a7e5 cmMacroCommand: Remove conditional append of semicolon.
081a13f7 cmMacroCommand: Declare arg variables where used and initialized.
17b5ebd3 cmMacroCommand: Join the args strings outside of the loops.
2015-02-12 11:53:11 -05:00
Brad King e6ae3c6ae0 Merge topic 'use-cmRange'
7c3f6376 Convert loop into two algorithms.
8a399c8c Convert loop to the common pattern.
abfca975 Move loop inside of condition.
0b61b86d Handle last element outside of the loop.
e21f7829 cmTarget: Use a sorted vector in place of a set.
559dc155 cmSet: Replace loop with cmJoin.
0ea71932 cmFindBase: Replace loop with cmJoin on range.
9380e85f Convert loops to cmJoin algorithm with cmRange.
bb10012f cmStringCommand: Accumulate with cmJoin and range adaptors.
0c12f1ea cmAlgorithms: Add a range adaptor and API for adjusting a range.
27c6f017 Use cmJoin to accumulate string ranges.
4e78ebbd cmAlgorithms: Add a Range container and adaptor method.
89102249 Replace common loop pattern with cmJoin
7b8725bf Convert loops populating maybe-empty content into the common pattern.
7ee56f03 Convert loops into the commonly used pattern.
0a4e5674 cmMacroCommand: Remove counting variable.
...
2015-02-12 11:53:04 -05:00
Brad King fc7e15691a Merge topic 'install-DESTINATION-genex'
f30022eb install: Allow generator expressions in TARGETS DESTINATION (#14317)
7607c3d1 cmInstallGenerator: Pass destination explicitly to AddInstallRule
ebd556ca cmInstallGenerator: Fix check for absolute install destinations
290ca8e2 cmInstallGenerator: Refactor computation of absolute install dest
f99991db cmInstallGenerator: Move GetDestination to subclasses that need it
2015-02-12 11:53:02 -05:00
Kitware Robot 09cdcc5430 CMake Nightly Date Stamp 2015-02-12 00:01:15 -05:00
Stephen Kelly b5f98e5012 cmMacroCommand: Manipulate target string directly.
Avoid copying a string from the source, manipulating it, and then
copying it back.  Manipulate it in place instead.
2015-02-11 22:58:34 +01:00
Stephen Kelly 83414d5a07 cmMacroCommand: Move computation of ARGV%n names out of double loop. 2015-02-11 22:58:34 +01:00
Stephen Kelly 9a1f8f35f4 cmMacroCommand: Move ARGV replacement out of condition. 2015-02-11 22:58:34 +01:00
Stephen Kelly 4aa7bd2ac1 cmMacroCommand: Remove condition around ARGN replacement.
There is none for ARGC replacement, so no reason to conditionalize the
replacement.  The computation is already done.
2015-02-11 22:58:34 +01:00
Stephen Kelly 6774c92b58 cmMacroCommand: Declare tmps in the scope that it's used.
We don't particularly need to reuse the string memory here, and this
pattern is not common in CMake.
2015-02-11 22:58:34 +01:00
Stephen Kelly 2c4a7298fc cmMacroCommand: Declare arg in the scope that it is used.
It can make sense to declare objects outside of loops if
the size required by the object can grow (eg std::string when
using getline), but that is not the case here.
2015-02-11 22:58:34 +01:00
Stephen Kelly a551851ab3 cmMacroCommand: Inline variable computation. 2015-02-11 22:58:33 +01:00
Stephen Kelly f79c0f7697 cmMacroCommand: Compute variables outside of two loops.
Avoid computing them from scratch for each argument of each
function.
2015-02-11 22:58:33 +01:00
Stephen Kelly 8e0827b646 cmMacroCommand: Remove intermediate arg variables. 2015-02-11 22:58:33 +01:00
Stephen Kelly f2c49f59d8 cmMacroCommand: Remove condition around ARGN computation.
An empty string is appended if the condition is false, which is
ok for this commit.
2015-02-11 22:58:33 +01:00
Stephen Kelly 3250a7e535 cmMacroCommand: Remove conditional append of semicolon.
The conditions are never true.
2015-02-11 22:58:33 +01:00
Stephen Kelly 081a13f7c0 cmMacroCommand: Declare arg variables where used and initialized.
Make the initialization by population with the expanded* content
unconditional.
2015-02-11 22:58:33 +01:00
Stephen Kelly 17b5ebd383 cmMacroCommand: Join the args strings outside of the loops.
This means that we compute the strings even if not used in the macro
but this shouldn't be expensive and it simplifies the code.
2015-02-11 22:58:31 +01:00
Stephen Kelly 7c3f637680 Convert loop into two algorithms. 2015-02-11 22:58:09 +01:00
Stephen Kelly 8a399c8c9f Convert loop to the common pattern. 2015-02-11 22:58:09 +01:00
Stephen Kelly abfca97525 Move loop inside of condition.
The loop is only executed if the condition is true.
2015-02-11 22:58:09 +01:00
Stephen Kelly 0b61b86df8 Handle last element outside of the loop.
There is no point in checking on each loop iteration whether
it is the last element.
2015-02-11 22:58:08 +01:00
Stephen Kelly e21f7829a2 cmTarget: Use a sorted vector in place of a set.
The vector has a more easy-to-use API.

Join the string with cmJoin, and avoid erasing from the container
in the loop.
2015-02-11 22:58:08 +01:00
Stephen Kelly 559dc15589 cmSet: Replace loop with cmJoin. 2015-02-11 22:58:08 +01:00
Stephen Kelly 0ea719326e cmFindBase: Replace loop with cmJoin on range. 2015-02-11 22:58:08 +01:00
Stephen Kelly 9380e85f86 Convert loops to cmJoin algorithm with cmRange. 2015-02-11 22:58:04 +01:00
Stephen Kelly bb10012fea cmStringCommand: Accumulate with cmJoin and range adaptors. 2015-02-11 22:57:56 +01:00
Stephen Kelly 0c12f1ea0d cmAlgorithms: Add a range adaptor and API for adjusting a range. 2015-02-11 22:57:55 +01:00
Stephen Kelly 27c6f017a1 Use cmJoin to accumulate string ranges.
Avoid using the std::accumulate algorithm which is designed for
numeric types, not complex types.  It introduces unneccessary
copies.

Initialize variables where they are populated.
2015-02-11 22:57:55 +01:00
Stephen Kelly 4e78ebbdf9 cmAlgorithms: Add a Range container and adaptor method.
This can make a pair of iterators API compatible with the
cmJoin algorithm and other range-based algorithms.

Accept different iterator types in the cmRange adaptor so that
a const and non-const iterator are accepted.
2015-02-11 22:57:55 +01:00
Stephen Kelly 8910224950 Replace common loop pattern with cmJoin 2015-02-11 22:57:55 +01:00
Stephen Kelly 7b8725bf84 Convert loops populating maybe-empty content into the common pattern. 2015-02-11 22:57:53 +01:00
Stephen Kelly 7ee56f0399 Convert loops into the commonly used pattern. 2015-02-11 22:57:41 +01:00
Stephen Kelly 0a4e5674ec cmMacroCommand: Remove counting variable.
Start iteration at correct starting point directly.
2015-02-11 22:57:38 +01:00
Brad King f30022eb07 install: Allow generator expressions in TARGETS DESTINATION (#14317)
This will allow per-config destinations for targets in EXPORT sets.
Using multiple install(TARGETS) with separate CONFIGURATIONS is
rejected as a target appearing more than once in an export set.
Now instead one can write

 install(TARGETS foo EXPORT exp DESTINATION lib/$<CONFIG>)

to get a single logical membership of the target in the export set
while still having a per-config destination.
2015-02-11 15:15:33 -05:00
Brad King 7607c3d16a cmInstallGenerator: Pass destination explicitly to AddInstallRule
This will allow specific invocations to transform the destination
before AddInstallRule uses it.
2015-02-11 15:14:01 -05:00
Brad King ebd556caa9 cmInstallGenerator: Fix check for absolute install destinations
In AddInstallRule, check for absolute install destinations before
converting to the absolute install destination.  Previously this
worked only by accident because literal "${CMAKE_INSTALL_PREFIX}"
looks like a relative path.
2015-02-11 15:13:57 -05:00
Brad King 290ca8e2d0 cmInstallGenerator: Refactor computation of absolute install dest
Replace the GetInstallDestination method, which looked up the
Destination ivar, with a new ConvertToAbsoluteDestination method that
takes the nominal destination as an argument.  Update call sites
accordingly.  This will allow some clients to transform the install
destination before calling the method.
2015-02-11 15:12:16 -05:00
Brad King f99991db88 cmInstallGenerator: Move GetDestination to subclasses that need it
The method is used only for EXPORT and TARGET install destinations.
While at it, make it return a std::string by reference instead of a
"const char*".
2015-02-11 15:05:57 -05:00
Stephen Kelly 11ecc31d0a cmMacroCommand: Execute loop only if it has an effect. 2015-02-11 20:51:06 +01:00
Stephen Kelly f95543f8a6 cmMacroCommand: Extract iteration starting point. 2015-02-11 20:51:06 +01:00
Stephen Kelly 9fe8f49353 cmMacroCommand: Replace a loop with cmJoin. 2015-02-11 20:51:06 +01:00
Brad King 108e94ecf1 Merge topic 'export-interface-source-files'
f7e33820 Add release notes for export-interface-source-files.
6da65b39 Allow export of targets with INTERFACE_SOURCES.
736bcb96 Tests: Move IfacePaths test stderr files.
d9f8390d Tests: Run IfacePaths tests with a parameter.
cc152094 Tests: Split part of include_directories test to a generic location.
2015-02-11 09:59:30 -05:00
Brad King 0e6af85263 Merge topic 'try_compile-shorter-names'
f3e9eeed try_compile: Use shorter test executable name with consistent length
2015-02-11 09:59:20 -05:00
Brad King 939167a65c Merge topic 'makefile-missing-comment'
eeb2831b Makefile: Fix regression in target-bound custom command COMMENT output
2015-02-11 09:59:18 -05:00
Kitware Robot 1979330188 CMake Nightly Date Stamp 2015-02-11 00:01:09 -05:00
Stephen Kelly 6da65b3907 Allow export of targets with INTERFACE_SOURCES.
Use the same rules for paths in source and binary dirs in
installed INTERFACE_SOURCES as are used for
INTERFACE_INCLUDE_DIRECTORIES.
2015-02-11 00:51:34 +01:00
Stephen Kelly ac26d4b343 Split cmAlgorithms into a separate header file. 2015-02-10 22:14:18 +01:00
Brad King cbffbf7437 Merge topic 'cmStandardIncludes-cleanup'
af65da0a cmStandardIncludes: Remove list include.
e848cc50 cmStandardIncludes: Remove deque include.
5fea6898 cmStandardIncludes: Remove some VS6 workarounds.
2015-02-10 12:56:08 -05:00
Brad King f3e9eeedf4 try_compile: Use shorter test executable name with consistent length
Since commit v2.8.8~176^2 (try_compile: Use random executable file name,
2012-02-13) the length of the test executable name in generated
try_compile projects has been longer and unpredictable.  With Visual
Studio on windows, the tools try to create paths like:

 CMakeFiles/CMakeTmp/$tgt.dir/Debug/$tgt.tlog/$tgt.lastbuildstate

With the target name repeated up to 3 times, we must make it short and
of consistent length to avoid overrunning the 260 character limit
imposed by VS tools.
2015-02-10 10:28:41 -05:00
Brad King 001cd08187 Merge branch 'makefile-missing-comment' into release 2015-02-10 09:46:23 -05:00
Brad King e2619c13f7 Merge topic 'use-algorithms'
d8639733 cmSystemTools: Remove unnecessary comparison.
803317aa cmSystemTools: Early return if size makes later comparison false.
11093a03 Replace temporary bool by inlining warning condition.
6cd2ee95 Replace loop with member algorithm.
94e993a0 cmComputeLinkDepends: Remove temporary iterator copy.
69dbe51b Replace loop with algorithm.
683fafea Replace a loop with std::transform.
63f584b6 Replace while loop with member insert.
74c4d9d2 Take a size check outside of an inner loop.
71d47115 Use insert member instead of back_inserter.
39622c99 Convert while loop to member insert.
a7fcc148 Convert loop to algorithm.
d46c4f07 Extract a prefix variable from loop.
d59913f0 Take computation out of loop.
3f3db744 cmMakefile: Remove ExpandSourceListArguments.
bd990c80 Remove use of ExpandSourceListArguments.
...
2015-02-10 09:37:57 -05:00
Brad King c548ddc172 Merge topic 'makefile-progress-improvements'
63668954 Help: Add notes for topic 'makefile-progress-improvements'
ae775fe8 Makefile: Change link step message color to bold green
7bb50e4a Makefile: Add progress to link step messages
c6ada827 Makefile: Print all color escape sequences before newline
8521fdf5 Makefile: Fix output during parallel builds (#12991)
69ac6d27 bootstrap: Enable color Makefile output
2015-02-10 09:37:55 -05:00
Brad King 1d6f4b6fcc Merge topic 'try_compile-quote-module-path'
220c427e try_compile: Quote the content of CMAKE_MODULE_PATH to allow for spaces
2015-02-10 09:37:53 -05:00
Brad King db9a2e8966 Merge topic 'no-global-setlocale'
0f870234 Merge branch 'backport-no-global-setlocale' into no-global-setlocale
cd408d93 Add setlocale() calls around use of libarchive APIs (#14934, #15377)
87be2e14 Do not call setlocale() globally in CMake applications (#15377)
2015-02-10 09:37:50 -05:00
Brad King 06e527b36c Merge topic 'xcode-flags-per-language'
d2fe4c42 cmGlobalXCodeGenerator: Rename variable 'lang' => 'llang'
de63ff48 Xcode: Generate Intel Fortran compiler flags in project files
9924486f Xcode: Refactor generation of per-language compiler flags
2015-02-10 09:37:46 -05:00
Nils Gladitz eeb2831b5f Makefile: Fix regression in target-bound custom command COMMENT output
Fix a logic typo introduced by commit v3.1.0-rc1~781^2 (Generalize
cmCustomCommandGenerator to more fields, 2014-03-10).
2015-02-10 09:22:05 -05:00
Kitware Robot 7ab4fb5760 CMake Nightly Date Stamp 2015-02-10 00:01:07 -05:00
Nils Gladitz 220c427e84 try_compile: Quote the content of CMAKE_MODULE_PATH to allow for spaces 2015-02-09 10:51:22 +01:00
Kitware Robot 9bbfe76d2c CMake Nightly Date Stamp 2015-02-09 00:01:09 -05:00
Kitware Robot d30036cfad CMake Nightly Date Stamp 2015-02-08 00:01:08 -05:00
Kitware Robot 8b7e5e5996 CMake Nightly Date Stamp 2015-02-07 00:01:09 -05:00
Brad King ae775fe804 Makefile: Change link step message color to bold green
Avoid displaying red messages when no error has occurred.
2015-02-06 19:07:56 -05:00
Brad King 7bb50e4a31 Makefile: Add progress to link step messages 2015-02-06 19:07:24 -05:00
Brad King c6ada8275b Makefile: Print all color escape sequences before newline
Ensure that the escape sequences do not leak across lines.
2015-02-06 16:41:51 -05:00
Brad King 8772420e2f Merge branch 'no-global-setlocale' into release 2015-02-06 13:38:41 -05:00
Brad King 0f870234fe Merge branch 'backport-no-global-setlocale' into no-global-setlocale
Resolve conflict in Source/CMakeLists.txt by taking both changes.
2015-02-06 13:35:21 -05:00
Brad King cd408d93fd Add setlocale() calls around use of libarchive APIs (#14934, #15377)
The libarchive APIs use nl_langinfo(CODESET) for iconv so they need the
locale to be set for LC_CTYPE.  However, the rest of CMake does not
define any behavior for non-ASCII character classification/conversion so
we do not want to setlocale() globally.  Add a RAII class to save, set,
and restore the locale around calls to libarchive APIs.

Inspired-by: Clinton Stimpson <clinton@elemtech.com>
2015-02-06 13:32:57 -05:00
Brad King 87be2e1427 Do not call setlocale() globally in CMake applications (#15377)
Revert the changes made by commit v3.1.0-rc1~406^2~1 (Encoding: Add
setlocale() to applications, 2014-05-30) and commit v3.1.0-rc1~406^2
(Encoding: Change to only set LC_CTYPE, 2014-06-11), and other setlocale
calls added later in their spirit.  CMake has not been taught how to
deal with non-C locales everywhere.  We do not define any functionality
for character conversions for non-ASCII strings.  Another solution will
be needed to address the original problem motivating addition of
setlocale() calls.
2015-02-06 13:32:26 -05:00
Stephen Kelly af65da0aa9 cmStandardIncludes: Remove list include.
Include it only where used.
2015-02-06 19:04:53 +01:00
Stephen Kelly e848cc5074 cmStandardIncludes: Remove deque include.
Include it only where used.
2015-02-06 19:04:53 +01:00
Stephen Kelly 5fea689834 cmStandardIncludes: Remove some VS6 workarounds.
Added in commit v2.6.0~2824 (COMP: Fix warnings in system headers
on VS6., 2006-08-29), but no longer needed.
2015-02-06 19:04:53 +01:00
Stephen Kelly d8639733a4 cmSystemTools: Remove unnecessary comparison.
We already know the string is uppercase.
2015-02-06 19:04:10 +01:00
Stephen Kelly 803317aab6 cmSystemTools: Early return if size makes later comparison false. 2015-02-06 19:04:10 +01:00
Stephen Kelly 11093a03e0 Replace temporary bool by inlining warning condition. 2015-02-06 19:04:10 +01:00
Stephen Kelly 6cd2ee9524 Replace loop with member algorithm. 2015-02-06 19:04:10 +01:00
Stephen Kelly 94e993a0c1 cmComputeLinkDepends: Remove temporary iterator copy. 2015-02-06 19:04:10 +01:00
Stephen Kelly 69dbe51b08 Replace loop with algorithm. 2015-02-06 19:04:10 +01:00
Stephen Kelly 683fafea08 Replace a loop with std::transform. 2015-02-06 19:04:09 +01:00
Stephen Kelly 63f584b618 Replace while loop with member insert. 2015-02-06 19:04:09 +01:00
Stephen Kelly 74c4d9d27a Take a size check outside of an inner loop. 2015-02-06 19:04:09 +01:00
Stephen Kelly 71d47115d0 Use insert member instead of back_inserter. 2015-02-06 19:04:09 +01:00
Stephen Kelly 39622c995c Convert while loop to member insert. 2015-02-06 19:04:09 +01:00
Stephen Kelly a7fcc148bd Convert loop to algorithm. 2015-02-06 19:04:09 +01:00
Stephen Kelly d46c4f0727 Extract a prefix variable from loop. 2015-02-06 19:04:08 +01:00
Stephen Kelly d59913f001 Take computation out of loop. 2015-02-06 19:04:08 +01:00
Brad King d2fe4c4203 cmGlobalXCodeGenerator: Rename variable 'lang' => 'llang'
In CreateBuildSettings the variable holds the linker language.
Use a more distinctive variable name.
2015-02-06 11:46:03 -05:00
Brad King de63ff489d Xcode: Generate Intel Fortran compiler flags in project files 2015-02-06 11:45:28 -05:00
Brad King 9924486f8a Xcode: Refactor generation of per-language compiler flags 2015-02-06 11:44:41 -05:00
Brad King 8521fdf56e Makefile: Fix output during parallel builds (#12991)
Replace use of separate "cmake -E cmake_progress_report" and "cmake -E
cmake_echo_color" commands to report the progress and message portions
of build output lines with --progress-* options to the latter to print
everything with a single command.  The line buffering of the stdout FILE
stream should cause the whole line to be printed with one atomic write.
This will avoid inter-mixing of line-wise messages from different
processes during a parallel build.
2015-02-06 08:36:51 -05:00
Kitware Robot 3f73531d4e CMake Nightly Date Stamp 2015-02-06 00:01:16 -05:00
Brad King 69ac6d2755 bootstrap: Enable color Makefile output
Build the needed infrastructure during bootstrap in order to allow
"cmake -E cmake_echo_color" to be used unconditionally during
generation.
2015-02-05 16:44:56 -05:00
Stephen Kelly 3f3db74413 cmMakefile: Remove ExpandSourceListArguments. 2015-02-05 20:44:25 +01:00
Stephen Kelly bd990c803b Remove use of ExpandSourceListArguments.
By now, it is only an expensive copy.
2015-02-05 20:44:25 +01:00
Stephen Kelly 5fc53f1edb cmLocalGenerator: Replace loop with find_first_not_of 2015-02-05 20:44:25 +01:00
Stephen Kelly 421eadb45b Remove use of cmsys_stl.
It is not needed.
2015-02-05 20:44:25 +01:00
Brad King 098160d5f2 Begin post-3.2 development 2015-02-05 09:59:04 -05:00
Brad King cb01f15170 CMake 3.2.0-rc1 version update 2015-02-05 09:55:27 -05:00
Brad King 9042c875dc Merge topic 'fix-C-standard-features'
fb3487a9 Features: Fix C90 feature detection.
6027798a Features: Allow setting standard dialect below the default.
9d767810 Features: Populate CMAKE_<LANG>_STANDARD_DEFAULT only for supported compilers.
72537e44 Features: Add dialect compile flags only if default is known.
82c9d686 AppleClang: Remove redundant UNIX condition.
2015-02-05 09:25:14 -05:00
Kitware Robot ebe1f4f896 CMake Nightly Date Stamp 2015-02-05 00:01:15 -05:00
Stephen Kelly 6027798a30 Features: Allow setting standard dialect below the default.
If the requested standard dialect is older than the default dialect
then we must use a flag because we cannot decay to a newer standard.
2015-02-04 18:36:36 -05:00
Stephen Kelly 72537e4436 Features: Add dialect compile flags only if default is known.
The CMAKE_<LANG>_STANDARD_DEFAULT variable indicates whether the
compiler has any notion of standard levels and that CMake knows
about them.  If no language standard levels are available, skip
all logic to attempt to add a flag for the level.

Also fail with an internal error if a bad default value is set.
2015-02-04 18:28:07 -05:00
Brad King 44100adc6c CMake 3.1.2 2015-02-04 13:58:33 -05:00
Brad King f560fdddd1 Merge topic 'fix-default-install-config'
dea42d92 install: Fix regression in default configuration selection
2015-02-04 12:30:17 -05:00
Brad King be072d3fe1 Merge topic 'Qt-AUTOUIC-file-origin'
2fed8e17 QtAutogen: Issue error message with origin file (#15342).
2015-02-04 12:30:12 -05:00
Kitware Robot 5f37785717 CMake Nightly Date Stamp 2015-02-04 00:01:09 -05:00
Stephen Kelly 2fed8e173c QtAutogen: Issue error message with origin file (#15342). 2015-02-03 22:52:17 +01:00
Brad King fdb0799d75 Merge branch 'fix-default-install-config' into release-3.1 2015-02-03 13:23:57 -05:00
Ben Boeckel dea42d9296 install: Fix regression in default configuration selection
The refactoring in commit v3.1.0-rc1~812^2~16 (stringapi: Pass
configuration names as strings, 2014-02-09) broke the code path in
cmLocalGenerator::GenerateInstallRules that intends to pick a default
install configuration for multi-config generators.  Fix the logic to
select an empty default configuration only when using a single-config
generator whose CMAKE_BUILD_TYPE is not set.

Inspired-by: Roman Wüger <roman.wueger@gmx.at>
Reported-by: NoRulez <norulez@me.com>
2015-02-03 13:05:47 -05:00
Brad King 99e3650e66 Merge topic 'make-NOTPARALLEL-not-PHONY'
3cec0c75 Makefile: Generate .NOTPARALLEL without .PHONY (#14312)
2015-02-03 09:46:20 -05:00
Kitware Robot 460f7bcb7d CMake Nightly Date Stamp 2015-02-03 00:01:08 -05:00
Kitware Robot cf38f68685 CMake Nightly Date Stamp 2015-02-02 00:01:07 -05:00
Kitware Robot 8d69764d06 CMake Nightly Date Stamp 2015-02-01 00:01:08 -05:00
Kitware Robot 83ae27dcd1 CMake Nightly Date Stamp 2015-01-31 00:01:16 -05:00
Brad King a01f81b906 Merge topic 'ctest_submmit-CDASH_UPLOAD-encode-url'
18e3771a ctest_submit: Escape URL components in CDASH_UPLOAD mode
2015-01-30 10:39:12 -05:00
Bill Hoffman 18e3771ac7 ctest_submit: Escape URL components in CDASH_UPLOAD mode
Call curl_easy_escape on arguments sent to CDash upload.
2015-01-30 10:36:38 -05:00
Brad King 37662ea4bf Merge branch 'backport-fix-cpack-symlink-create-dir' into release-3.1 2015-01-30 10:24:21 -05:00
Brad King edc9ff9422 Merge topic 'feature-record-msvc'
d3489bdb Features: Record for MSVC 2010-2015
3228fc50 Features: Define meaning for no language standard default
2015-01-30 10:23:10 -05:00
Brad King db4b9fe256 Merge topic 'fix-cpack-symlink-create-dir'
55e68bc9 Merge branch 'backport-fix-cpack-symlink-create-dir' into fix-cpack-symlink-create-dir
4dc5acee CPack: Fix packaging of source tarballs with symbolic links
81221b80 CPack: Fix packaging of source tarballs with symbolic links
2015-01-30 10:23:07 -05:00
Brad King 85fe9400cd Merge topic 'ninja-msvc-only-C-and-CXX'
8a93d3ea Ninja: Use "deps = msvc" only for C and CXX (#15253)
2015-01-30 10:23:05 -05:00
Brad King e62e04f3bb Merge topic 'vs-windows-store-default-language'
500794b0 VS: Set default language in generated Windows Phone and Store projects
4c5574a1 VS: Add missing newlines to .vcxproj generation
2015-01-30 10:23:03 -05:00
Bill Hoffman 4dc5acee63 CPack: Fix packaging of source tarballs with symbolic links
When staging the package installation, if the first file in a directory
happens to be a symbolic link, make sure we create the directory before
trying to create the link.
2015-01-30 10:08:12 -05:00
Bill Hoffman 81221b80e2 CPack: Fix packaging of source tarballs with symbolic links
When staging the package installation, if the first file in a directory
happens to be a symbolic link, make sure we create the directory before
trying to create the link.
2015-01-30 10:06:09 -05:00
Brad King 3cec0c75f7 Makefile: Generate .NOTPARALLEL without .PHONY (#14312)
In commit v3.0.0-rc1~222^2 (Makefile: Allow "gmake target1 target2 -j",
2013-12-18) we added generation of a .NOTPARALLEL rule and told the
generator it is "symbolic" because the file will never be created.
This causes ".PHONY" to be used.  However, "clearmake" does not support
parsing of .PHONY specifically for .NOTPARALLEL, so simply drop it.
This should not affect the role of the .NOTPARALLEL rule for GNU make.
2015-01-30 09:50:09 -05:00
Kitware Robot dea1631a8f CMake Nightly Date Stamp 2015-01-30 00:01:10 -05:00
Brad King 8a93d3ea18 Ninja: Use "deps = msvc" only for C and CXX (#15253)
The "/showIncludes" flag is only available with MS C and C++ compilers,
and on compilers that "simulate" them (like Intel for Windows).  Fix our
logic to choose this type only for MS tools with these languages.  All
other cases need to use "deps = gcc" and define DEP_FILE in the build
rule.
2015-01-29 15:34:24 -05:00
Brad King 3228fc5049 Features: Define meaning for no language standard default
Define an empty string in CMAKE_<LANG>_STANDARD_DEFAULT to mean that
the toolchain has no notion of lanuage standard levels.  In this case
the <LANG>_STANDARD[_REQUIRED] properties will have no effect.

Update the RunCMake.CompileFeatures test to exclude the
LinkImplementationFeatureCycle test when there is no standard default.
It can never fail because no use of specific features will adjust the
CXX_STANDARD level required for any target since the standard levels
have no meaning in this case.
2015-01-29 15:01:40 -05:00
Robert Goulet 500794b0db VS: Set default language in generated Windows Phone and Store projects
Otherwise building such projects gives:

 warning APPX1901: The DefaultLanguage property is either missing from
                   the project file or does not have a value
2015-01-29 14:30:29 -05:00
Robert Goulet 4c5574a15d VS: Add missing newlines to .vcxproj generation 2015-01-29 14:29:01 -05:00
Brad King 326cfe2b30 Merge topic 'xcode-revise-make-program'
ab9fa54d Xcode: Switch to internal CMAKE_MAKE_PROGRAM lookup by generator (#15324)
11e2e6ca Xcode: Select make program at build time
e4055a61 Xcode: Add internal API to find xcodebuild
2015-01-29 09:14:00 -05:00
Brad King 98659aecfd Merge topic 'vs-shader-flags'
4775c901 VS: Add source file property to set extra hlsl shader flags
2015-01-29 09:13:58 -05:00
Brad King 983a98e5b8 Merge topic 'ctest-update-gmake-error-match'
d52b5f88 ctest_build: Update GNU make error message matching (#15379)
2015-01-29 09:13:56 -05:00
Brad King abec4213d6 Merge topic 'fix-OBJECT_DEPENDS-after-path-normalization'
9259d778 Normalize OBJECT_DEPENDS paths to match custom commands (#15366)
2015-01-29 09:13:53 -05:00
Brad King ab9fa54d48 Xcode: Switch to internal CMAKE_MAKE_PROGRAM lookup by generator (#15324)
The "cmakexbuild" wrapper is not needed for Xcode 4 and above, and the
path to it may change when CMake moves.  Avoid storing a specific path
to a build program in CMakeCache.txt and instead compute the value for
CMAKE_MAKE_PROGRAM on demand.  However, if a user does set the value
explicitly then honor it.

This does for Xcode what commit v3.0.0-rc1~260^2~4 (VS: Switch to
internal CMAKE_MAKE_PROGRAM lookup by generators, 2013-11-15) did for
Visual Studio generators.
2015-01-29 09:11:11 -05:00
Kitware Robot 5968ad58fd CMake Nightly Date Stamp 2015-01-29 00:01:09 -05:00
Brad King 11e2e6cadf Xcode: Select make program at build time
Extend the change made in commit v3.0.0-rc1~260^2~16 (Teach
GenerateBuildCommand to find its own make program, 2013-11-13) to have
the Xcode generator pick between "xcodebuild" and CMake's own copy of
"cmakexbuild" at build time based on the version of Xcode.
2015-01-28 14:01:55 -05:00
Brad King e4055a6144 Xcode: Add internal API to find xcodebuild
Teach the Xcode generator to compute the location of this tool or the
cmakexbuild wrapper.  Add internal APIs to get the locations on demand.

Use the "cmakexbuild" wrapper for Xcode < 4, and "xcodebuild" for modern
Xcode.
2015-01-28 13:41:55 -05:00
Brad King 048fb8e3d0 Merge branch 'ctest-update-gmake-error-match' into release 2015-01-28 10:42:07 -05:00
Marco Nolden d52b5f8835 ctest_build: Update GNU make error message matching (#15379)
The "No rule to make target" error message of gmake is not correctly
recognized since GNU make changed the quoting style in commit 23c2b99e9d
(Convert all "`'" quotes to "''" per new GNU Coding Standard guidelines,
2012-03-04).  Fix our regex to match both old and new quoting styles.
2015-01-28 10:32:06 -05:00
Robert Goulet 4775c90145 VS: Add source file property to set extra hlsl shader flags
Create a VS_SHADER_FLAGS source file property so that we can set all
other Visual Studio .hlsl shader file compilation flags.
2015-01-28 09:29:50 -05:00
Brad King e6214b9a52 Merge branch 'fix-OBJECT_DEPENDS-after-path-normalization' into release 2015-01-28 09:07:44 -05:00
Brad King 9259d77881 Normalize OBJECT_DEPENDS paths to match custom commands (#15366)
Custom command path normalization added in commit v3.1.0-rc1~471^2
(add_custom_command: Normalize OUTPUT and DEPENDS paths, 2014-05-28)
broke use of OBJECT_DEPENDS to bring in custom commands because the
latter paths were not normalized too.  Normalize them and add a test
case.

Reported-by: Daniel v. Gerpen
2015-01-28 09:06:21 -05:00
Kitware Robot 0d59fa3ca4 CMake Nightly Date Stamp 2015-01-28 00:01:09 -05:00
Brad King a47b904db2 Merge topic 'file-strings-utf-16'
1f77a700 file: Teach STRINGS to support UTF-16 and UTF-32 encodings
2015-01-27 11:36:45 -05:00
Justin Borodinsky 1f77a7001b file: Teach STRINGS to support UTF-16 and UTF-32 encodings 2015-01-27 11:30:26 -05:00
Brad King af9cf04647 Merge topic 'cmake-E-tar-files-from'
44fd71de cmake: Teach "-E tar" command a "--files-from=" option
2015-01-27 11:22:08 -05:00
Brad King d1b3370d52 Merge topic 'cmake-gui-osx'
8ced6375 cmake-gui: Shrink spacing between search field and checkbox.
b46a1519 cmake-gui: Change install buttons to activate on clicked instead of pressed.
c19539c5 cmake-gui: Fix install menu to be available for Qt5 builds on OS X.
2015-01-27 11:22:01 -05:00
Brad King ef6d030c95 Merge topic 'cmake-builtin-targets-use-ninja-terminal'
bbffaa0e Configure some CMake-provided targets with USES_TERMINAL (#14915)
2015-01-27 11:21:59 -05:00
Brad King 4ef0f7f62f Merge topic 'load-initial-cache-from-stderr-to-stdout'
6cc0f6b5 cmake: Display "loading initial cache" message on stdout
2015-01-27 11:21:57 -05:00
Sylvain Joubert bbffaa0e6c Configure some CMake-provided targets with USES_TERMINAL (#14915)
This will make them use the 'console' pool with the Ninja generator.
Impacted targets are:
- Built-in targets: install, install/local, install/strip, tests,
  package, package_source, rebuild_cache
- Targets provided by the CTestTargets module: Nightly, Continuous,
  Experimental,
  and all their variants (*Start, *Configure, ...)
2015-01-27 11:16:48 -05:00
Kitware Robot 82ba50390f CMake Nightly Date Stamp 2015-01-27 00:01:10 -05:00
Brad King 44fd71decb cmake: Teach "-E tar" command a "--files-from=" option
Read file names from the lines of a specified file.  Reject input lines
starting in '-' to leave room for option parsing to be added later.  Add
just '--add-file=' now to allow files starting in '-' to be specified.
2015-01-26 13:28:31 -05:00
Kevin Wojniak 8ced6375df cmake-gui: Shrink spacing between search field and checkbox.
This allows the search field to show on OS X Yosemite
2015-01-26 09:22:21 -07:00
Kevin Wojniak b46a15194b cmake-gui: Change install buttons to activate on clicked instead of pressed.
This matches the behavior of other buttons.
2015-01-26 09:21:36 -07:00
Kevin Wojniak c19539c594 cmake-gui: Fix install menu to be available for Qt5 builds on OS X. 2015-01-26 09:20:49 -07:00
Brad King 8def82585c Merge topic 'try-run-link-libraries'
d0adcccb try_run: Add tests for LINK_LIBRARIES with mock libraries.
223c5cb7 try_run: Add test for bad link libraries.
e2b1f058 try_run: Add support for LINK_LIBRARIES option.
2015-01-26 10:28:25 -05:00
Matt McCormick e2b1f0583f try_run: Add support for LINK_LIBRARIES option.
Most functionality is already implemented in Source/cmCoreTryCompile.{h,cxx}.
Document and improve argument parsing.

This functionality is already being used by a number of modules, like
CheckCSourceCompiles.cmake, but it is not documented.
2015-01-26 10:05:26 -05:00
Brad King cb243cce13 Merge topic 'update-kwsys'
391748d5 Merge branch 'upstream-kwsys' into update-kwsys
0b9aad75 KWSys 2015-01-23 (d4e7f08e)
2015-01-26 09:51:55 -05:00
Brad King dfdcc42c60 Merge topic 'ninja-rsp_file-calculation'
097e26f4 ninja: use the minimum of all command line length limits (#14892)
2015-01-26 09:51:53 -05:00
Brad King 1337576b24 Merge topic 'curl-default-cainfo'
0abd3e53 cmake: Use a default CA path when not using system curl
6ce346c5 curl: Add CURL_CA_PATH option to CMake build process
2015-01-26 09:51:50 -05:00
Jean-Christophe Fillion-Robin 6cc0f6b512 cmake: Display "loading initial cache" message on stdout
This message has been on stderr since the "-C" option was first added,
but it is informational and not an error.  Other informational messages
go to stdout, so send this one there too.
2015-01-26 09:44:44 -05:00
Kitware Robot e71c35ff26 CMake Nightly Date Stamp 2015-01-26 00:01:09 -05:00
Kitware Robot 5a9d54a67a CMake Nightly Date Stamp 2015-01-25 00:01:08 -05:00
Brad King 391748d57e Merge branch 'upstream-kwsys' into update-kwsys 2015-01-24 07:38:51 -05:00
Kitware Robot 97502ba77b CMake Nightly Date Stamp 2015-01-24 00:01:09 -05:00
Brad King 482c84759f KWSys Directory: Check opendir return value before using it (#15367)
In Directory::GetNumberOfFilesInDirectory add a missing check for NULL.
2015-01-23 13:19:07 -05:00
Ben Boeckel 097e26f490 ninja: use the minimum of all command line length limits (#14892)
When choosing whether to use a response file, consider several possible
command line length limits for the current operating system, and choose
the smallest.
2015-01-23 10:54:13 -05:00
Brad King 154bf8da99 Merge topic 'INTERFACE_SYSTEM_INCLUDE_DIRECTORIES-update'
85857e6d Help: Clarify INTERFACE_SYSTEM_INCLUDE_DIRECTORIES documentation.
ee38062b IncludeDirectories: Respect SYSTEM flag when using CONFIG genex.
2015-01-23 10:50:31 -05:00
Brad King 0abd3e538e cmake: Use a default CA path when not using system curl
When using system curl, we trust it to be configured with desired CA
certs.  When using our own build of curl, we use os-configured CA certs
on Windows and OS X.  On other systems, try to achieve this by searching
for common CA cert locations.  According to a brief investigation, the
curl packages on popular Linux distros are currently configured as:

* Arch: /etc/ssl/certs/ca-certificates.crt
* Debian with OpenSSL: /etc/ssl/certs
* Debian with GNU TLS: /etc/ssl/certs/ca-certificates.crt
* Debian with NSS: /etc/ssl/certs/ca-certificates.crt
* Fedora: /etc/pki/tls/certs/ca-bundle.crt
* Gentoo with OpenSSL: /etc/ssl/certs
* Gentoo without OpenSSL: /etc/ssl/certs/ca-certificates.crt

Teach CMake and CTest to look for these paths and use them as a CA path
or bundle when no other os-configured or user-specified CAs are
available.
2015-01-23 08:57:32 -05:00
Kitware Robot c99e19a4ac CMake Nightly Date Stamp 2015-01-23 00:01:16 -05:00
Stephen Kelly ee38062be8 IncludeDirectories: Respect SYSTEM flag when using CONFIG genex.
Update the Makefile and Ninja generators to use the config when
requesting the include flags.
2015-01-23 00:08:18 +01:00
Brad King c0298947ff Merge topic 'cdash_upload_file_mode'
f3e0b6f1 CTestCoverageCollectGCOV: Add module to run gcov
6dd980e0 ctest_submit: Make CDASH_UPLOAD mode arguments more strict
5dc33f89 ctest_submit: Add CDASH_UPLOAD mode to upload files to CDash
2015-01-22 11:16:45 -05:00
Brad King 3eda92df91 Merge topic 'update-kwsys'
7e468cd8 Merge branch 'upstream-kwsys' into update-kwsys
77444a7d KWSys 2015-01-20 (b33e7b96)
2015-01-22 09:50:40 -05:00
Kitware Robot afe99212d2 CMake Nightly Date Stamp 2015-01-22 00:01:09 -05:00
Brad King 40c11f0f62 Merge topic 'jsoncpp-third-party'
27c6da93 Add option to build CMake against a system jsoncpp
2015-01-21 16:36:22 -05:00
Brad King 7e468cd8f9 Merge branch 'upstream-kwsys' into update-kwsys 2015-01-21 09:15:44 -05:00
Kitware Robot f709776864 CMake Nightly Date Stamp 2015-01-21 00:01:10 -05:00
Brad King 57622bd19d CMake 3.1.1 2015-01-20 11:04:44 -05:00
Brad King 27c6da933e Add option to build CMake against a system jsoncpp
Create a CMAKE_USE_SYSTEM_JSONCPP option.
2015-01-20 10:37:35 -05:00
Brad King 6dd980e0ef ctest_submit: Make CDASH_UPLOAD mode arguments more strict
Disallow mixing of arguments from different command signatures.
Extend the RunCMake.CTestSubmit test to cover such error cases.
2015-01-20 09:33:21 -05:00
Bill Hoffman 5dc33f89b5 ctest_submit: Add CDASH_UPLOAD mode to upload files to CDash
This adds support for the new cdash API where arbitrary files can be
uploaded to the CDash server.  This CDash API communicates via json
files so the json parser jsoncpp was added to the Utilities directory.
2015-01-20 09:33:21 -05:00
Brad King 17cfa09eb2 Merge topic 'cmake-labels-json'
0238d0c3 cmake: Generate an internal 'Labels.json' file next to 'Labels.txt'
bda4f0b6 jsoncpp: Add headers to help CMake include in-source jsoncpp headers
a02fbec5 jsoncpp: Drop doxygen comments that cause Clang warnings
2015-01-20 09:31:59 -05:00
Brad King 0238d0c397 cmake: Generate an internal 'Labels.json' file next to 'Labels.txt'
In each internal target directory we generate a "Labels.txt" file
containing labels for that target and its sources, but it uses an
internal format.  In order to make the list of labels easier to
publish, use a json format and call it "Labels.json".

Since we now use jsoncpp headers, link CMakeLib to the jsoncpp library.
2015-01-20 09:31:11 -05:00
Brad King 1ef4e3ab45 Merge topic 'cmake-E-tar-mtime'
3a60c899 cmake: Teach "-E tar" command a "--mtime=" option
90f9c427 cmake: Teach "-E tar" to report file name on failure to read from disk
2015-01-20 09:20:12 -05:00
Brad King 4970ac3d5f Merge topic 'xcode-target-sort'
9e0176e2 Xcode: Sort targets deterministically and with ALL_BUILD first (#15346)
c0ff542c Xcode: Fix early termination on per-config source file error
2015-01-20 09:19:55 -05:00
Kitware Robot 70eb44b7dc CMake Nightly Date Stamp 2015-01-20 00:01:17 -05:00
Brad King 3a60c899fc cmake: Teach "-E tar" command a "--mtime=" option
Add an option to set the mtime of entries in a tarball so that one can
create a tarball with a consistent content hash (e.g. MD5) for a given
set of files regardless of their current timestamps on disk.  This will
be useful for submission of tarballs to CDash, which tracks content
hashes to avoid duplication.

Inspired-by: Bill Hoffman <bill.hoffman@kitware.com>
2015-01-19 14:16:19 -05:00
Brad King 90f9c42732 cmake: Teach "-E tar" to report file name on failure to read from disk
The libarchive-provided error message does not always include the file
name, so add it to the message ourselves to ensure users know which file
fails.
2015-01-19 14:15:58 -05:00
Brad King 5806f6c5e6 Merge branch 'xcode-target-sort' into release 2015-01-19 13:57:29 -05:00
Brad King 9de2ab7fce Merge topic 'consistent-empty-method'
5f69314e Replace foo.length() pattern with !foo.empty().
fd0c036c Replace 'foo.length() >= 1' pattern with !foo.empty()
f09fde2d Replace 'foo.length() > 0' pattern with !foo.empty().
86b5bdfa Replace 'foo.length() == 0' pattern with foo.empty().
fd7b3712 Replace foo.size() pattern with !foo.empty().
aa773035 Replace !foo.size() pattern with foo.empty().
64592633 cmListCommand: Use empty() and expand whitespace.
607e1938 Replace 'foo.size() != 0' pattern with !foo.empty().
930bd478 Replace 'foo.size() == 0' pattern with foo.empty().
d92887ef Replace 'foo.size() > 0' pattern with !foo.empty().
2015-01-19 09:43:28 -05:00
Brad King a6bbbd0f4a Merge topic 'use-member-insert'
fa889c4d cmakemain: Initialize vector content with iterators directly.
8211010c cmakemain: Use member insert in command line handling code.
b5422573 cmListCommand: Replace loop with member algorithm.
92a37f92 Convert raw loops to set member insert.
aac44e71 Convert raw loops to vector member insert.
2015-01-19 09:43:27 -05:00
Brad King 95d42840e8 Merge topic 'delete-algorithm'
681d965d Use the cmDeleteAll algorithm for types derived from std::map.
4dc0c488 cmDeleteAll: Generalize deletion specialization for map types.
2015-01-19 09:43:25 -05:00
Brad King 373199b1c9 Merge topic 'eclipse-fix-cxx-natures'
6e6e0c40 Eclipse: Add org.eclipse.cdt.core.cnature to CXX projects (#15068)
2015-01-19 09:43:09 -05:00
Ben Boeckel 9e0176e2b3 Xcode: Sort targets deterministically and with ALL_BUILD first (#15346)
The default target in XCode is the first one in the file.

In commit v3.1.0-rc1~286^2 (cmTarget: use a hash_map for cmTargets
typedef, 2014-06-10) the order of the targets stored in cmMakefile was
made non-deterministic instead of lexicographic.  Teach the Xcode
generator to do its own sorting to restore a predictable order.

While at it, place ALL_BUILD first (as is done in VS IDE generators)
explicitly in the comparison function so that it is the default target
even if other targets sort earlier lexicographically (e.g. "AAA").
2015-01-19 08:36:45 -05:00
Brad King c0ff542c58 Xcode: Fix early termination on per-config source file error
In commit v3.1.0-rc1~687^2~4 (cmTarget: Make the source files depend on
the config, 2014-02-13) an early termination case was added to the Xcode
generator.  Fix handling of this case to actually abort all the
generation steps.  Otherwise some of the later steps are attempted
without the preconditions normally established by earlier steps,
possibly leading to a crash.
2015-01-19 08:34:32 -05:00
Kitware Robot 6164f7cef6 CMake Nightly Date Stamp 2015-01-19 00:01:10 -05:00
Stephen Kelly fa889c4d2f cmakemain: Initialize vector content with iterators directly. 2015-01-18 18:24:04 +01:00
Stephen Kelly 8211010c3f cmakemain: Use member insert in command line handling code. 2015-01-18 18:18:43 +01:00
Stephen Kelly b54225732f cmListCommand: Replace loop with member algorithm. 2015-01-18 15:15:17 +01:00
Stephen Kelly 92a37f9279 Convert raw loops to set member insert. 2015-01-18 15:14:47 +01:00
Stephen Kelly aac44e71e6 Convert raw loops to vector member insert. 2015-01-18 15:14:36 +01:00
Stephen Kelly 5f69314ea6 Replace foo.length() pattern with !foo.empty(). 2015-01-18 14:25:25 +01:00
Stephen Kelly fd0c036c0c Replace 'foo.length() >= 1' pattern with !foo.empty() 2015-01-18 14:25:25 +01:00
Stephen Kelly f09fde2d21 Replace 'foo.length() > 0' pattern with !foo.empty(). 2015-01-18 14:25:25 +01:00
Stephen Kelly 86b5bdfa08 Replace 'foo.length() == 0' pattern with foo.empty(). 2015-01-18 14:25:24 +01:00
Stephen Kelly fd7b371293 Replace foo.size() pattern with !foo.empty(). 2015-01-18 14:25:24 +01:00
Stephen Kelly aa773035b7 Replace !foo.size() pattern with foo.empty(). 2015-01-18 14:25:24 +01:00
Stephen Kelly 6459263377 cmListCommand: Use empty() and expand whitespace. 2015-01-18 14:25:24 +01:00
Stephen Kelly 607e19384f Replace 'foo.size() != 0' pattern with !foo.empty(). 2015-01-18 14:25:24 +01:00
Stephen Kelly 930bd47816 Replace 'foo.size() == 0' pattern with foo.empty(). 2015-01-18 14:25:24 +01:00
Stephen Kelly d92887efab Replace 'foo.size() > 0' pattern with !foo.empty(). 2015-01-18 14:25:24 +01:00
Kitware Robot f3e92d2816 CMake Nightly Date Stamp 2015-01-18 00:01:09 -05:00
Stephen Kelly 681d965df1 Use the cmDeleteAll algorithm for types derived from std::map. 2015-01-17 16:22:58 +01:00
Stephen Kelly 4dc0c488f9 cmDeleteAll: Generalize deletion specialization for map types.
Assume that a container whose value_type is a std::pair should have
its second member deleted.
2015-01-17 16:22:58 +01:00
Kitware Robot f8c416f00c CMake Nightly Date Stamp 2015-01-17 00:01:12 -05:00
Brad King ed4b95e12f Merge topic 'fix-ctest_build-output-processing-regression'
509f2713 ctest_build: Fix logic regression in parent that clips build output
2015-01-16 09:43:46 -05:00
Brad King 8741991e4b Merge branch 'release-3.0' into release 2015-01-16 09:04:02 -05:00
Brad King 9a92734cdd Merge branch 'eclipse-fix-cxx-natures' into release-3.0 2015-01-16 08:55:02 -05:00
André Klitzing 6e6e0c4048 Eclipse: Add org.eclipse.cdt.core.cnature to CXX projects (#15068)
Since commit v3.0.0-rc1~335^2~1 (eclipse: Add natures for Eclipse based
on enabled languages, 2013-08-29) CXX projects got only "ccnature", but
Eclipse itself also adds "cnature" when creating C++ projects.  Fix this
by adding both for CXX projects.
2015-01-16 08:54:39 -05:00
Kitware Robot fb354cc59c CMake Nightly Date Stamp 2015-01-16 00:01:16 -05:00
Brad King d58396b722 Merge branch 'fix-COMPILE_FEATURES-genex' into release 2015-01-15 09:59:19 -05:00
Brad King 0fcdc57b7b Merge branch 'cpack-PackageMaker-OSX-10.10' into release 2015-01-15 09:59:12 -05:00
Brad King 4ecc392b42 Merge topic 'delete-algorithm'
65b81da4 cmVariableWatch: Use the cmDeleteAll algorithm with for_each.
30d2de9a cmGeneratorExpressionEvaluator: Replace own algorithm with cmDeleteAll.
4a6e795b Use the cmDeleteAll algorithm instead of trivial raw loops.
abb4a678 Add a generic algorithm for deleting items in a container.
2015-01-15 09:54:04 -05:00
Brad King 6418eef222 Merge topic 'fix-COMPILE_FEATURES-genex'
45ec182d Features: Fix the COMPILE_FEATURES genex for unavailable features.
2bead0eb cmMakefile: Rename a method to what it really does.
2015-01-15 09:54:02 -05:00
Brad King 44612e7407 Merge topic 'fix-LOCATION-with-TARGET_OBJECTS'
23f3798c cmTarget: Compute link language of TARGET_OBJECTS with CMP0026 OLD (#15338)
2015-01-15 09:53:59 -05:00
Brad King fa636e19ce Merge topic 'cpack-PackageMaker-OSX-10.10'
70abf6e7 CPack: Fix PackageMaker internal versioning for OS X 10.10
2015-01-15 09:53:56 -05:00
Brad King 509f2713bf ctest_build: Fix logic regression in parent that clips build output
The sweeping pattern change in commit 238dd2fb (Use insert instead of a
loop in some cases, 2014-11-22) accidentally changed the iterator range
used on the queue in cmCTestBuildHandler::ProcessBuffer.  Instead of
ending at the iterator positioned at the next newline to populate
CurrentProcessingLine, it was changed to go to the end of the queue.
This causes the line to contain newlines and possibly be cut off in the
middle of a line.  Fix this regression by restoring use of the proper
end-of-line position.
2015-01-15 09:32:58 -05:00
Kitware Robot 23c02d2454 CMake Nightly Date Stamp 2015-01-15 00:01:09 -05:00
Brad King a08a444bab Merge branch 'fix-LOCATION-with-TARGET_OBJECTS' into release 2015-01-14 10:34:10 -05:00
Brad King 46eae52968 Merge branch 'backport-cpack_invalid_cmake_generator' into release 2015-01-14 10:33:30 -05:00
Domen Vrankar ea916230ef CPack: Avoid crash on invalid CMake generator name (#15308)
Case where CPACK_CMAKE_GENERATOR value is non existent or
or contains multiple words that were not quoted was not
handled and produced a segmentation fault.
2015-01-14 08:38:23 -05:00
Kitware Robot 2ece34516a CMake Nightly Date Stamp 2015-01-14 00:01:16 -05:00
Stephen Kelly 65b81da458 cmVariableWatch: Use the cmDeleteAll algorithm with for_each. 2015-01-13 23:00:17 +01:00
Stephen Kelly 30d2de9aa8 cmGeneratorExpressionEvaluator: Replace own algorithm with cmDeleteAll. 2015-01-13 23:00:17 +01:00
Stephen Kelly 4a6e795b0c Use the cmDeleteAll algorithm instead of trivial raw loops. 2015-01-13 23:00:17 +01:00
Stephen Kelly abb4a6781f Add a generic algorithm for deleting items in a container.
Specialize for std::map types to delete the second element from
the iterator.  This is not quite general enough that it can
be used everywhere, because CMake inherits from std::map and
creates typedefs with custom comparison functors etc, which
can not use this algorithm.
2015-01-13 23:00:16 +01:00
Stephen Kelly 23f3798c7b cmTarget: Compute link language of TARGET_OBJECTS with CMP0026 OLD (#15338)
Commit v3.1.0-rc1~297^2~5 (cmTarget: Drop 'head' argument from
GetSourceFiles, 2014-07-10) exposed a dormant bug in source file computation,
causing the test case to regress.  After that commit, the source file
computation and caching finds an existing container of source files.  Prior to
that patch, the GetSourceFiles method was called with either a null pointer
for the head cmTarget, or it was called with the this pointer.  The
processSources method is eventually called, which normalizes the difference
between the null pointer and the this pointer for the head target.  However,
the cache key depends on the actual pre-normalized pointer.  The change in
that commit caused the entry to be found in the cache where it was not before,
which resulted in incorrect behavior.

Prior to that commit, the test case also fails if the GetSourceFiles overload
taking a vector<cmSourceFile*> is changed to normalize the head target at
the beginning of the method:

  cmTarget const* head = head_ ? head_ : this;

Such a construct was correctly used in other locations where similar caching
was in place, before being removed in commit v3.1.0-rc1~310^2~25 (cmTarget:
Remove 'head' argument from GetLinkInformation, 2014-06-12), but is not
neccessary anymore.

Commit v3.1.0-rc1~674^2~2 (cmTarget: Cache the cmSourceFiles in
GetSourceFiles., 2014-04-05) introduced the caching, but fails the test case
for an unrelated reason.  That unrelated error was introduced in
commit v3.1.0-rc1~688^2~5 (cmTarget: Allow any generator expression in
SOURCES property., 2014-03-18) and fixed in
commit v3.1.0-rc1~561^2~1 (cmTarget: Fix listing of source files at
configure-time., 2014-04-13).

All commits which fail the test case in the testable way do so when such a
cached version of the source files is found and returned at generate
time.  In the test case, the cached content is populated at configure-time
through the use of the deprecated LOCATION property with CMP0026 OLD.  The
cached content is an empty container for the bar target in the test case,
because its source file 'foo.cpp.o' is not known until generate-time.  That
means that no source files are available to compute the link language and
the reported error is issued.

The actual problem is that the SourceFilesMap should be cleared after
configure time by cmTarget::ClearLinkMaps.  Clear it there now.
2015-01-13 09:36:20 +01:00
Kitware Robot d61c6df2fa CMake Nightly Date Stamp 2015-01-13 00:01:09 -05:00
Stephen Kelly 45ec182d27 Features: Fix the COMPILE_FEATURES genex for unavailable features.
Previously, the genex tested only for CMake knowledge of the feature,
but not compiler knowledge of the feature.
2015-01-12 10:30:43 -05:00
Stephen Kelly 2bead0eb1b cmMakefile: Rename a method to what it really does.
The method does not test availability of compile features.
2015-01-12 10:30:43 -05:00
Brad King dd6c596c12 Merge topic 'join-algorithm'
55a73e6b Use the cmJoin algorithm where possible.
8dc8d756 cmStandardIncludes: Add a join algorithm for string containers.
b5813cee cmInstallCommand: Remove unused variable.
2015-01-12 09:41:02 -05:00
Brad King d9a6ea4599 Merge topic 'add-xz-support'
4035ef78 cmake -E tar: error out on multiple compression formats
d811d238 cmSystemTools: use an enumeration for compression formats
df16dcfb cmake -E tar: add support for .xz files with 'J'
b0a5d393 cmake -E tar: clean up flag documentation
2015-01-12 09:39:40 -05:00
Brad King 212bf1f82a Merge topic 'improve_cobertura'
ab74553d ctest_coverage: Fix parsing of absolute paths in Cobertura files
2015-01-12 09:39:38 -05:00
Ben Boeckel 4035ef786d cmake -E tar: error out on multiple compression formats 2015-01-12 09:36:25 -05:00
Ben Boeckel d811d238ab cmSystemTools: use an enumeration for compression formats
Juggling 3 booleans was unwieldy.
2015-01-12 09:36:25 -05:00
Zack Galbreath ab74553db4 ctest_coverage: Fix parsing of absolute paths in Cobertura files
This commit fixes a segmentation fault I encountered when my
Coverage.xml referenced a system file, eg /usr/lib/python/foo.py.

Similar to other CMake coverage parsers, this one now ignores any
files it finds that are not located within this project's source
or binary directories.
2015-01-12 09:34:50 -05:00
Calin Cascaval 70abf6e780 CPack: Fix PackageMaker internal versioning for OS X 10.10
Avoid using a floating point value to represent the version, since
"10.10" would be treated as "10.1".
2015-01-12 09:12:50 -05:00
Brad King 1f41ec2ac2 Merge branch 'fix-autouic-regression' into release 2015-01-12 09:00:03 -05:00
Brad King b4f62b875b Merge topic 'fix-autouic-regression'
9a673737 QtAutoUic: Add a test for the regression in the parent commit.
7c585699 QtAutoUic: Restore source file AUTOUIC_OPTIONS settings
2015-01-12 08:57:52 -05:00
Brad King b5a467262b Merge topic 'drop-ancient-workarounds'
0f7bdd61 Remove VS 6 special case.
5e92c826 Remove some obsolete stuff.
15e42bb2 cmStandardIncludes: Remove obsolete cmOStringStream.
931e055d Port all cmOStringStream to std::ostringstream.
f194a009 Remove unused cmIStringStream class.
3ec1bb15 cmStandardIncludes: Remove std namespace hack.
bb3bce70 cmStandardIncludes: Remove ANSI_FOR_SCOPE hack.
28fa4923 cmStandardIncludes: Remove iostreams workaround for obsolete Compaq compiler.
837a8a63 cmStandardIncludes: Drop Comeau-related workaround.
4030ddfd Remove Borland-related undef.
17d6a6fd cmStandardIncludes: Remove comment about Borland.
26fb5011 Drop SGI as a CMake host compiler.
2015-01-12 08:57:39 -05:00
Brad King 6c61ffaf9b Merge topic 'sun-better-stdlib'
3660d063 cmTarget: Use insert instead of std::copy.
5c28495f Help: Remove documented restriction on template use.
ac3d3829 Help: Remove documented restriction on find in conditions.
36b8de56 Help: Remove documented restriction on insert APIs.
6162c919 Use two-iterator std::set::insert where appropriate.
238dd2fb Use insert instead of a loop in some cases.
2f7ef7e3 Revert "Misc. fixes for the Oracle / Sun compiler."
4c69ec6f SolarisStudio: Use alternative standard library to build CMake.
2015-01-12 08:57:37 -05:00
Kitware Robot 9fced51858 CMake Nightly Date Stamp 2015-01-12 00:01:19 -05:00
Justin Borodinsky 7c58569930 QtAutoUic: Restore source file AUTOUIC_OPTIONS settings
The "." in the extension was dropped by commit v3.1.0-rc1~556^2~2
(cmSourceFile: Cache the isUiFile check, 2014-02-08) by mistake.  This
caused the options to not be set.
2015-01-11 15:11:18 -05:00
Brad King 20d60c6361 Merge topic 'sln-bom'
61cf781a Encoding:  Write Visual Studio solution file with BOM.
2015-01-11 12:00:26 -05:00
Brad King cb5fc7b993 Merge topic 'fix-empty-target-property-queries'
c6d03a10 tests: add tests for querying properties
76ff92e0 set_tests_properties: fix documentation
28214862 get_test_property: clarify the documentation
34a99094 get_target_property: discern empty from undefined properties (#15333)
2015-01-11 12:00:20 -05:00
Brad King 4a549e7e0e Merge topic 'update-kwsys'
e5b91420 Merge branch 'upstream-kwsys' into update-kwsys
54d83cae KWSys 2015-01-09 (425fa73e)
2015-01-11 12:00:14 -05:00
Brad King ca5fe169aa Merge branch 'fix-empty-target-property-queries' into release 2015-01-11 11:50:14 -05:00
Stephen Kelly 34a990946c get_target_property: discern empty from undefined properties (#15333)
This was accidentally regressed by commit v3.1.0-rc1~812^2~50
(stringapi: Use strings for property names, 2013-09-02).
2015-01-11 11:43:58 -05:00
Stephen Kelly 5e92c82655 Remove some obsolete stuff.
We don't need to run compiler tests for ansi-for etc anymore. All
supported compilers support the features tested here.
2015-01-11 17:06:04 +01:00
Stephen Kelly 15e42bb27c cmStandardIncludes: Remove obsolete cmOStringStream. 2015-01-11 17:06:04 +01:00
Stephen Kelly 931e055d8c Port all cmOStringStream to std::ostringstream.
All compilers hosting CMake support the std class.
2015-01-11 17:06:03 +01:00
Stephen Kelly 3660d063bc cmTarget: Use insert instead of std::copy.
insert can reserve() memory in the container, and this is
more-consistent with the rest of CMake now.
2015-01-11 17:00:56 +01:00
Stephen Kelly ac3d382920 Help: Remove documented restriction on find in conditions.
The necessary conversion is supported by all CMake host compilers.
2015-01-11 17:00:56 +01:00
Stephen Kelly 238dd2fbab Use insert instead of a loop in some cases.
Limit this change to inserting into a vector from a vector.

A follow up change can use insert for inserting into a set.
2015-01-11 17:00:55 +01:00
Stephen Kelly 2f7ef7e38d Revert "Misc. fixes for the Oracle / Sun compiler."
This reverts commit 97b65f8156.
2015-01-11 17:00:55 +01:00
Stephen Kelly 6162c9194b Use two-iterator std::set::insert where appropriate. 2015-01-11 17:00:55 +01:00
Kitware Robot 7e5e8a37b5 CMake Nightly Date Stamp 2015-01-11 00:01:09 -05:00