Commit Graph

26680 Commits

Author SHA1 Message Date
Evangelos Foutras 802d0aa0b0 FindRuby: Fix output check in _RUBY_CONFIG_VAR
Since commit v2.8.8~173^2 (FindRuby: clean up querying variables from
Ruby, 2012-02-17) we query RbConfig::CONFIG first and, if the command
fails or its output equates to a false constant, then fall back to
querying Config::CONFIG.

Due to the above, an error condition exists with Ruby 2.2.0; when
querying RbConfig::CONFIG['TEENY'], the output of '0' will be discarded
since it matches the false constant '0'.

In previous versions this wasn't a problem, but Ruby 2.2 has completely
removed Config::CONFIG. This causes RUBY_VERSION_PATCH to be set to an
empty string and the Ruby version to be detected as '2.2.' (instead of
'2.2.0').

Fix the output check to explicitly look for an empty string before using
the fallback query method. (Someone more familiar with Ruby might be
able to deem the fallback as unnecessary and fully remove it.)
2015-01-11 14:49:51 -05:00
Stephen Kelly 00f66a0451 Record compile features for GNU on Apple.
Tested with GNU 4.8 binary (bottle) from homebrew, and assumed to work
with the others.
2015-01-11 18:34:25 +01:00
Brad King 30289e07ce Merge branch 'release' 2015-01-11 12:05:43 -05:00
Brad King 68f9e67242 Merge topic 'tests-encoding'
9a8ab866 Encoding:  Modify tests to work using non-ascii paths.
2015-01-11 12:00:30 -05:00
Brad King 56324568cf Merge topic 'FindCUDA.cmake/UseCMAKE_CXX_FLAGS_separableCompilation'
b4e54f9b FindCUDA: Add relevant CMAKE_{C,CXX}_FLAGS for separable compilation
2015-01-11 12:00:28 -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 775fb2e0b0 Merge topic 'feature_record_msvc'
2d738ce3 Help: Add notes for topic 'feature_record_msvc'
f73718c9 Features: Enable writing of MSVC compiler feature header.
64c30bdc Features: Record for MSVC C++ 2015 and MSVC C 2010-2015.
225c0ef8 Features: Record for MSVC 2010-2013.
2015-01-11 12:00:24 -05:00
Brad King 1c0d6a7cb5 Merge topic 'refactor-CompileFeatures-test'
a15675ef Features: Quote all compiler names when comparing with COMPILER_ID
07d1f6fc Features: Properly evaluate if the compiler supports cxx_final.
6296192d Features: Add a comment explaining part of test.
c13656e7 Features: Test nullptr as a side-effect activation of static_assert.
3e34e833 Features: Test feature propagation with more-common features.
b3e86f4e Features: Test an expectation of whether OVERRIDE_CONTROL is expected
2015-01-11 12:00:22 -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 f098e0e22b Merge topic 'kwsys-Terminal-xterm-termite'
2866a503 KWSys Terminal: Add xterm-termite to VT100 color support whitelist
2015-01-11 12:00:16 -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
Ben Boeckel c6d03a1072 tests: add tests for querying properties 2015-01-11 11:45:44 -05:00
Ben Boeckel 76ff92e0c9 set_tests_properties: fix documentation
The error is raised if the *test* doesn't exist, not the property.
2015-01-11 11:45:43 -05:00
Ben Boeckel 282148628f get_test_property: clarify the documentation
If either the test or the property doesn't exist, NOTFOUND will be used.
No error is raised in either case.
2015-01-11 11:45:43 -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
Brad King 2d738ce37a Help: Add notes for topic 'feature_record_msvc' 2015-01-11 11:37:12 -05:00
Robert Maynard f73718c9b8 Features: Enable writing of MSVC compiler feature header.
Notes:
VS2015 and above are the only MSVC versions to support cxx_final, so remove
usages from the tests, and instead only test for cxx_override.

VS2012 and above to conform to cxx_decltype_incomplete_return_types
proposal, but without support for auto return types the dcl.type.simple
example in the proposal doesn't compile.

VS2013 and above to conform to the updated cxx_contextual_conversions proposal,
but VS2010 and above pass the test.

Compilers such as MSVC have no explicit flags to enable C++11 mode,
it just is always on. So only run the link tests with compilers that require
a flag to specify the language version.
2015-01-11 11:32:36 -05:00
Stephen Kelly 0f7bdd61da Remove VS 6 special case. 2015-01-11 17:06:04 +01: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 5c28495fba Help: Remove documented restriction on template use. 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 36b8de563c Help: Remove documented restriction on insert APIs. 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
Stephen Kelly 4c69ec6f12 SolarisStudio: Use alternative standard library to build CMake.
SolarisStudio ships a very old RogueWave standard library
implementation (libCstd) and uses it by default for backward compatibility.
The macros defined when building the system libCstd need to be the same as
the macros defined when using it for binary compatibility reasons etc.  The
SolarisStudio compiler driver adds macros such as _RWSTD_NO_MEMBER_TEMPLATES and
_RWSTD_NO_CLASS_PARTIAL_SPEC etc. These macros disable certain APIs in the
standard library headers.

Although the compiler supports the features 'member templates' and 'partial
template specialization', the standard library does not provide APIs which
rely on those features.  This means that std::vector::insert in libCStd does
not accept a pair of iterators from a different type of container, because
that requires member templates, and reverse_iterator<const T> can not
be constructed from a reverse_iterator<T> because that requires partial
specialization (or at least the _RWSTD_NO_CLASS_PARTIAL_SPEC define) and
member templates.

This causes many problems while building CMake using SolarisStudio, which
have not been well understood until now.  The problems are usually
attributed to compiler limitations, while actually the problem is in
the standard library, as in commit v3.0.0-rc1~99^2~1 (Help: Document non-use
of std::set::insert., 2014-01-24) and commit 107dcac3 (Fix compilation with
the Oracle / Sun compiler (#15318), 2014-12-12).

SolarisStudio 12.3 and earlier also ships a version of stlport which may be
used instead of libCstd by specifying -library=stlport4

 https://docs.oracle.com/cd/E18659_01/html/821-1383/bkakg.html

SolarisStudio 12.4 ships a version of libstdc++ from GCC 4.8.2 which may be
used by specifying -std=c++03 or -std=c++11 etc

 http://docs.oracle.com/cd/E37069_01/html/E37075/bkamw.html#OSSCPgnaof

Use these more-capable standard library implementations when building cmake.
This will allow more use of 'normal' C++ (such as std::vector::insert), and cause
fewer surprises resulting from dashboards using SolarisStudio.

Because cmake is not a library linked against by 3rd parties and does not have
external dependencies, issues related to mixing code using libCStd and libstdc++
do not apply.
2015-01-11 17:00:55 +01:00
Stephen Kelly 3ad893b5c2 Features: Record for historical Xcode clang versions. 2015-01-11 16:52:27 +01:00
Stephen Kelly 98965fb12d Features: Record dialect flags for AppleClang 4.0+. 2015-01-11 16:52:05 +01:00
Robert Maynard a15675efc3 Features: Quote all compiler names when comparing with COMPILER_ID
In preparation of adding MSVC support we need to quote all compiler names,
as MSVC is also a CMake variable.
2015-01-11 16:47:58 +01:00
Robert Maynard 64c30bdc48 Features: Record for MSVC C++ 2015 and MSVC C 2010-2015.
Initializer lists are only properly supported in 2015 and above.
Previous Visual Studio releases said they supported initializer lists
but silently produced bad code.
2015-01-11 16:47:58 +01:00
Robert Maynard 07d1f6fca1 Features: Properly evaluate if the compiler supports cxx_final.
Previously we expanded HAVE_FINAL to determine what the copied_file number
would be, but when we don't have cxx_final than HAVE_FINAL is not defined.
What we really want is to use expected_result.
2015-01-11 16:47:58 +01:00
Stephen Kelly 225c0ef88b Features: Record for MSVC 2010-2013. 2015-01-11 16:47:58 +01:00
Kitware Robot 7e5e8a37b5 CMake Nightly Date Stamp 2015-01-11 00:01:09 -05:00
Brad King bc045555b5 Merge topic 'doc-CXX_STANDARD-14'
72a0d6df Help: Document valid 14 value for CXX_STANDARD. (#15339)
2015-01-10 12:14:59 -05:00
Brad King 427d932498 Merge topic 'doc-if-variable-not-defined'
7a2c3f0c Help: Clarify if(<variable>) documentation (#15335)
2015-01-10 12:14:56 -05:00
Brad King e5b9142097 Merge branch 'upstream-kwsys' into update-kwsys 2015-01-10 12:09:04 -05:00
KWSys Robot 54d83caecf KWSys 2015-01-09 (425fa73e)
Extract upstream KWSys using the following shell commands.

$ git archive --prefix=upstream-kwsys/ 425fa73e | tar x
$ git shortlog --no-merges --abbrev=8 --format='%h %s' 5a15cb3b..425fa73e
Ben Boeckel (1):
      425fa73e Add missing malloc return value casts

Simon Gomizelj (1):
      2f0165f1 Terminal: Add xterm-termite to VT100 color support whitelist

Stephen Kelly (3):
      e4fe1d1a SystemTools: Refactor selection of Windows directory APIs
      af86ac7d SystemTools: Fix build with SunCC/stlport.
      d30c9b03 Workaround SolarisStudio bug with libstdc++.

Change-Id: Ib8fbe15d1ee072ac8d8506d92c8883056b224a89
2015-01-10 12:09:01 -05:00
Brad King 4729547a5b XL: Fix link flags for executables on Linux with XL compilers
Use "-Wl,-export-dynamic" with XL to match the "-rdynamic" flag used
with GNU-like compilers.
2015-01-10 12:03:19 -05:00
Kitware Robot ccd0046667 CMake Nightly Date Stamp 2015-01-10 00:01:15 -05:00
Ben Boeckel df16dcfb44 cmake -E tar: add support for .xz files with 'J' 2015-01-09 10:35:01 -05:00
Kitware Robot 4aa9c64511 CMake Nightly Date Stamp 2015-01-09 00:01:10 -05:00
Clinton Stimpson 9a8ab86645 Encoding: Modify tests to work using non-ascii paths.
For complex*, CustomCommand and OutDir tests, non-ascii paths
are avoided in test code by using relative paths, and setting
the working when running the test.  This also avoids the
need to internationalize the test code.

For RunCMake.GeneratorExpression, use a UTF-8 encoding in
file(STRINGS) to retrieve the compiled absolute path correctly.
2015-01-08 20:56:51 -07:00
Ben Boeckel b0a5d3932d cmake -E tar: clean up flag documentation 2015-01-08 16:56:17 -05:00
Stephen Kelly 55a73e6b1f Use the cmJoin algorithm where possible. 2015-01-08 22:28:18 +01:00
Stephen Kelly 8dc8d756bc cmStandardIncludes: Add a join algorithm for string containers.
This requires the input range to supply BidirectionalIterators, which
is not a problem for where it is currently useful to us.  The alternative
would be to not invoke --last;, and instead create an output iterator
similar to std::ostream_iterator, but which puts the delimiter before
the item to output.
2015-01-08 22:28:18 +01:00
Stephen Kelly b5813ceeb5 cmInstallCommand: Remove unused variable. 2015-01-08 22:25:18 +01:00