Commit Graph

22111 Commits

Author SHA1 Message Date
Stephen Kelly dfe0c2168b cmArray: Use macro variant of cmArray{Begin,Size,End} for old GCC.
It is not capable of using the template versions.
2013-10-24 16:07:52 +02:00
Stephen Kelly d169b1f037 Genex: Use cmArraySize for targetPolicyWhitelist
For better readability.
2013-10-22 10:45:23 +02:00
Stephen Kelly 86d5d808c8 Genex: Remove use of TransitiveWhitelistCompare
Replace with generic solution based on cmArray* for better
readability.
2013-10-22 10:45:23 +02:00
Stephen Kelly 73d7705416 Add some templates for cleaner array iteration. 2013-10-22 10:45:23 +02:00
Brad King bf02e75079 Merge topic 'INTERFACE_LIBRARY-build-targets'
b04f3b9 Create make rules for INTERFACE_LIBRARY targets.
dba4962 Makefile: Always create clean target command
2013-10-21 09:48:04 -04:00
Stephen Kelly b04f3b9a2a Create make rules for INTERFACE_LIBRARY targets.
The result is that the depends of the target are created.

So,

 add_library(somelib foo.cpp)
 add_library(anotherlib EXCLUDE_FROM_ALL foo.cpp)
 add_library(extra EXCLUDE_FROM_ALL foo.cpp)
 target_link_libraries(anotherlib extra)

 add_library(iface INTERFACE)
 target_link_libraries(iface INTERFACE anotherlib)

Executing 'make iface' will result in the anotherlib and extra targets
being made.

Adding a regular executable to the INTERFACE of an INTERFACE_LIBRARY
will not result in the executable being built with 'make iface' because
of the logic in cmComputeTargetDepends::AddTargetDepend.

So far, this is implemented only for the Makefile generator. Other
generators will follow if this feature is possible for them.

Make INTERFACE_LIBRARY targets part of the all target by default.
Test this by building the all target and making the expected library
EXCLUDE_FROM_ALL.
2013-10-21 09:46:27 -04:00
Brad King 6d1444feac Merge topic 'minor-cleanups'
187385a cmCoreTryCompile: Fix typo in comments.
af2a3ab cmTarget: Remove unused variable.
620b0e9 target_link_libraries(): Fix code snippet in documentation.
2d4ce80 cmPolicies: Fix typo
d6dd264 include(): Use lower case and () to refer to the include() command.
2013-10-21 09:02:31 -04:00
Brad King d06610888d Merge topic 'remove-old-process-execution'
765d783 cmSystemTools: Drop old RunCommand method
52b80b2 exec_program: Re-implement using KWSys Process
c076476 cmake: Drop "cmake -E comspec" Win9x helper
f551135 cmExtraEclipseCDT4Generator: Replace RunCommand with RunSingleCommand
2013-10-21 09:02:26 -04:00
Brad King 595060f383 Merge topic 'policies-generic-docs'
6d50d01 Help: Add introduction section to cmake-policies manual
2013-10-21 09:02:17 -04:00
Brad King 8fa1ceb136 Merge topic 'vs12-parallel-cl-FS'
216afc8 MSVC: Add /FS flag for cl >= 18 to allow parallel compilation (#14492)
2013-10-21 09:02:09 -04:00
Brad King 9fb65d7090 Merge topic 'cmake-syntax-updates'
daa0f6f Add Lua-style long brackets and long comments to CMake language
a8c6523 cmListFileLexer: Convert CRLF -> LF newlines explicitly
dbd9333 cmListFileLexer: Allow a leading UTF-8 Byte-Order-Mark (#11137)
5645783 cmListFileLexer: Allow command names with one letter (#14181)
2013-10-21 09:02:00 -04:00
Kitware Robot ecfcce44b3 CMake Nightly Date Stamp 2013-10-21 00:01:08 -04:00
Brad King 936dec32e5 Merge topic 'target-LOCATION-policy'
abfebef Cygwin: Avoid legacy warnings in RunCMake.CMP0026 test
2013-10-20 07:37:48 -04:00
Brad King f040840f9b Merge topic 'vs-intel-compiler'
1b7117a VS 6: Do not try Intel Fortran .vfproj file with msdev
2013-10-20 07:37:38 -04:00
Stephen Kelly 187385a8ed cmCoreTryCompile: Fix typo in comments.
Add 'S' to match actual variable names.
2013-10-20 12:29:15 +02:00
Kitware Robot 2e68516818 CMake Nightly Date Stamp 2013-10-20 00:01:17 -04:00
Brad King 765d783972 cmSystemTools: Drop old RunCommand method
All calls to this method have been replaced by newer infrastructure.
Remove it and the supporting cmWin32ProcessExecution class.
2013-10-19 07:25:43 -04:00
Brad King 52b80b2643 exec_program: Re-implement using KWSys Process
Drop use of cmSystemTools::RunCommand.  It used popen on UNIX
(equivalent to /bin/sh -c "$command") and direct CreateProcess calls on
Windows.  Implement equivalent behavior using the KWSys Process library.
Copy windows shortpath conversion logic from cmSystemTools::RunCommand.
2013-10-19 07:21:09 -04:00
Brad King c076476d7d cmake: Drop "cmake -E comspec" Win9x helper
Since we dropped Win9x support there is no need for this helper.
2013-10-19 07:19:49 -04:00
Brad King abfebefbb9 Cygwin: Avoid legacy warnings in RunCMake.CMP0026 test
Set the minimum required version of CMake high enough to avoid the
warning for CMAKE_LEGACY_CYGWIN_WIN32.  The warning appears on stderr
and breaks the expected output matching.
2013-10-19 06:47:12 -04:00
Brad King 1b7117a824 VS 6: Do not try Intel Fortran .vfproj file with msdev
Teach CMakeDetermineCompilerId to skip trying to build a .vfproj
file for Intel Fortran under Visual Studio 6.  The msdev command-line
build produces a popup error dialog that hangs the configuration.
2013-10-19 06:37:22 -04:00
Kitware Robot 0645d74118 CMake Nightly Date Stamp 2013-10-19 00:01:07 -04:00
Brad King f551135208 cmExtraEclipseCDT4Generator: Replace RunCommand with RunSingleCommand
Avoid use of the old cmSystemTools::RunCommand by using RunSingleCommand
instead.
2013-10-18 15:08:42 -04:00
Stephen Kelly 6d50d0197a Help: Add introduction section to cmake-policies manual
Explain the concept behind policies.
2013-10-18 14:23:28 -04:00
Stephen Kelly af2a3ab691 cmTarget: Remove unused variable. 2013-10-18 18:58:02 +02:00
Stephen Kelly 620b0e92fc target_link_libraries(): Fix code snippet in documentation.
The porting script seems to have made a mistake here.
2013-10-18 18:52:02 +02:00
Stephen Kelly 2d4ce80549 cmPolicies: Fix typo
Use American spelling: behaviour -> behavior.
2013-10-18 18:52:01 +02:00
Stephen Kelly d6dd264671 include(): Use lower case and () to refer to the include() command. 2013-10-18 18:51:10 +02:00
Brad King 919e1e8453 Merge topic 'INTERFACE-error-with-linked-genex'
70ae6df Handle genexes when evaluating INTERFACE_INCLUDE_DIRECTORIES errors.
2013-10-18 10:43:41 -04:00
Brad King 216afc8a81 MSVC: Add /FS flag for cl >= 18 to allow parallel compilation (#14492)
In generators such as Ninja that can run multiple "cl" processes that
refer to the same compiler .pdb file (/Fd) at the same time, MSVC from
Visual Studio 2013 complains:

 fatal error C1041: cannot open program database '.../vc120.pdb';
 if multiple CL.EXE write to the same .PDB file, please use /FS

According to "cl /?":

 /FS force to use MSPDBSRV.EXE

Add the flag to compilation lines for this compiler version just after the
/Fd option.
2013-10-18 10:28:28 -04:00
Stephen Kelly 70ae6dfd92 Handle genexes when evaluating INTERFACE_INCLUDE_DIRECTORIES errors. 2013-10-18 10:11:49 -04:00
Brad King 36d8d987c7 Merge topic 'help-replace-version'
89448a5 cmRST: Substitute CMake version for |release| as Sphinx does
2013-10-18 10:02:51 -04:00
Brad King de5159236d Merge topic 'fix-policy-versions'
1873205 Update CMP0024/CMP0025/CMP0026 release version
2013-10-18 10:02:44 -04:00
Brad King abf0dc7fd3 Merge topic 'doc-drop-policy-builtin'
5cdaef7 Drop builtin policy "full" documentation
2013-10-18 10:02:31 -04:00
Brad King b051ccbb52 Merge topic 'allow-repeated-LINK-keywords'
dede273 target_link_libraries: Allow repeated use of LINK_{PRIVATE,PUBLIC} keywords.
2013-10-18 10:02:22 -04:00
Brad King 037887e7ab Merge topic 'simplify-cmake-E-command-line'
d4c3de2 cmake: Simplify -E command line processing
2013-10-18 10:02:15 -04:00
Brad King f6cc3b0744 Merge topic 'vs-intel-compiler'
d14898b Intel: Fix detection of MSVC version simulated by pre-11.0 Fortran
a85e17e Intel: When simulating MSVC, re-use Windows-MSVC (#14476)
af40e8c VS: Detect Intel Fortran compiler id and version
b8522a8 VS: Expose Intel Fortran .vfproj format version to CMake language
2d36c9a CMakeDetermineCompilerId: Fix Intel Fortran compiler id detection
a6fd17c VS: Fix CMAKE_<LANG>_COMPILER detection with Intel toolset (#14471)
2013-10-18 10:01:58 -04:00
Brad King eff13ebf33 Merge topic 'coverity-generated-tests'
7eddefd TestDriver.cxx.in: Untrusted array index read.
2013-10-18 10:01:46 -04:00
Brad King d14898b6dc Intel: Fix detection of MSVC version simulated by pre-11.0 Fortran
The Intel Fortran 10 64-bit compiler incorrectly defines _MSC_VER to its
own version (1020) instead of the underlying MSVC tools version.  Since
we expect the compiler to be used only with VS >= 7 tools, assume MSVC
version 13.0 if _MSC_VER is not greater than 1300.
2013-10-18 09:55:59 -04:00
Brad King a85e17e660 Intel: When simulating MSVC, re-use Windows-MSVC (#14476)
Teach CMake(C|CXX|Fortran)CompilerId* to report the MSVC version
simulated by the Intel compiler, if any.  Refactor the Windows-Intel
platform information helper module to load Windows-MSVC instead of
duplicating the information.  Teach Windows-MSVC to understand when
it is loaded as the simulated Fortran compiler (its preprocessor is
simulated).
2013-10-18 09:55:59 -04:00
Brad King af40e8c312 VS: Detect Intel Fortran compiler id and version
Teach CMakeDetermineCompilerId to use a .vfproj project file to
build the Fortran compiler id source file under the Visual Studio
generators.
2013-10-18 09:55:59 -04:00
Brad King b8522a8c8a VS: Expose Intel Fortran .vfproj format version to CMake language
Lookup the Intel VS plugin version on demand in the VS global generator,
compute the corresponding .vfproj format version number, and memoize it.
Add it as a CMAKE_VS_INTEL_Fortran_PROJECT_VERSION platform definition.
2013-10-18 09:55:50 -04:00
Kitware Robot b4de56386c CMake Nightly Date Stamp 2013-10-18 00:01:14 -04:00
Brad King 89448a5bad cmRST: Substitute CMake version for |release| as Sphinx does
Sphinx provides a builtin substitution for the |release| version.
Teach cmRST to replace this with the CMake version number too.
2013-10-17 15:23:45 -04:00
Brad King 1873205a6e Update CMP0024/CMP0025/CMP0026 release version
These policies were introduced after 2.8.12 in anticipation of 2.8.13.
However, we've now decided the next release will be 3.0.0, so update the
version of introduction accordingly.
2013-10-17 15:14:53 -04:00
Brad King 5cdaef7ee9 Drop builtin policy "full" documentation
The full policy documentation was moved to Help/policy/*.rst by commit
f051814e (Convert builtin help to reStructuredText source files,
2013-10-15).  We no longer need the builtin string literals.

In commit 87cc62ca (Drop "full" documentation output types, 2013-09-13)
we dropped code using the LongDescription field of policy definitions.
We need to follow it up with a change similar to commit 399e9c46 (Drop
builtin property documentation, 2013-09-16) to remove the policy
documentation.  Do that now.  Keep the short description as it is used
in policy error and warning messages.
2013-10-17 15:00:20 -04:00
Stephen Kelly dede273193 target_link_libraries: Allow repeated use of LINK_{PRIVATE,PUBLIC} keywords.
This has not been allowed since they were introduced in
commit 91438222 (target_link_libraries: Add LINK_(PUBLIC|PRIVATE)
options, 2011-10-07), but allowing this form makes it more compatible
with the newer PUBLIC and PRIVATE keywords.
2013-10-17 17:37:20 +02:00
Brad King daa0f6f98d Add Lua-style long brackets and long comments to CMake language
Teach the CMake language parser to recognize Lua-style "long bracket"
arguments.  These start with two '[' separated by zero or more '='
characters e.g. "[[" or "[=[" or "[==[".  They end with two ']'
separated by the same number of '=' as the opening bracket.  There is no
nesting of brackets of the same level (number of '=').  No escapes,
variable expansion, or other processing is performed on the content
between such brackets so they always represent exactly one argument.

Also teach CMake to parse and ignore "long comment" syntax.  A long
comment starts with "#" immediately followed by an opening long bracket.
It ends at the matching close long bracket.

Teach the RunCMake.Syntax test to cover long bracket and long comment
cases.
2013-10-17 09:07:00 -04:00
Brad King a8c652342f cmListFileLexer: Convert CRLF -> LF newlines explicitly
Read input files in binary mode instead of text mode and convert CRLF
newlines to LF newlines explicitly in our own buffer.  This is necessary
to read CMake source files with CRLF newlines on platforms whose C
runtime libraries do not transform newlines in text mode.  For example,
a Cygwin or Linux binary may not transform CRLF -> LF in files read from
a Windows filesystem.  Perform the conversion ourselves to ensure that
multi-line string literals in CMake source files have LF newlines
everywhere.
2013-10-17 09:07:00 -04:00
Brad King dbd933365e cmListFileLexer: Allow a leading UTF-8 Byte-Order-Mark (#11137)
Teach the lexer to read a UTF-8, UTF-16 BE/LE, or UTF-32 BE/LE
Byte-Order-Mark from the start of a file if any is present.  Report an
error on files using UTF-16 or UTF-32 and accept a UTF-8 or missing BOM.
2013-10-17 09:06:59 -04:00