Commit Graph

15793 Commits

Author SHA1 Message Date
Ben Boeckel ec97ed7d0c stringapi: Use strings for property names
Property names are always generated by CMake and should never be NULL.
2014-03-08 13:05:28 -05:00
Brad King 607bb914b5 Merge topic 'update-kwsys'
9ba9141e Merge branch 'upstream-kwsys' into update-kwsys
c236691b KWSys 2014-03-06 (9c653603)
2014-03-08 07:03:59 -05:00
Kitware Robot 666c000931 CMake Nightly Date Stamp 2014-03-08 00:01:07 -05:00
Brad King 9ba9141e7e Merge branch 'upstream-kwsys' into update-kwsys 2014-03-07 15:22:35 -05:00
Kitware Robot 00da6ac784 CMake Nightly Date Stamp 2014-03-07 00:01:08 -05:00
Brad King 7c9041bdab Merge topic 'link-libraries-response-files'
489b1c23 Windows: Use response files to specify link libraries for GNU tools
745caae6 Makefile: Rename linker response file boolean to be more specific
5e8e4d0f cmLocalGenerator: Add response file option to OutputLinkLibraries
b9aa5041 cmLocalGenerator: Simplify GetIncludeFlags output formatting
971653b7 cmLocalGenerator: Add format option to ConvertToLinkReference
0c0ef9e7 cmLocalGenerator: Add format option to ConvertToIncludeReference
02bebd60 cmLocalGenerator: Add format option to ConvertToOutputForExisting
c8751709 Makefile: Factor out some duplicate link libraries generation
2014-03-06 09:46:50 -05:00
Kitware Robot 70da6f198f CMake Nightly Date Stamp 2014-03-06 00:01:05 -05:00
Brad King 489b1c23b9 Windows: Use response files to specify link libraries for GNU tools
Work around the command-line-length limit by using an @linklibs.rsp
response file to pass the flags for link libraries.  This allows
very long lists of libraries to be used in addition to the existing
support for passing object files via response file.

Suggested-by: Peter Keuschnigg <peter.keuschnigg@pmu.ac.at>
2014-03-05 13:07:41 -05:00
Brad King 30464fda2c Merge topic 'update-kwsys'
7db95df3 Merge branch 'upstream-kwsys' into update-kwsys
f096786d KWSys 2014-03-03 (b1916e0a)
2014-03-05 11:08:04 -05:00
Brad King a8dced5856 Merge topic 'fix-check-build-system-crash'
3504f9b9 cmake: Fix --check-build-system argument count check (#14784)
2014-03-05 11:08:02 -05:00
Brad King 9e6e9140c2 Merge topic 'fix-CMP0017-check'
7e187eea CMP0017: Fix check when including from CMake source tree
2014-03-05 11:07:58 -05:00
Brad King 745caae6dd Makefile: Rename linker response file boolean to be more specific
Rename local variable useResponseFile to useResponseFileForObjects
when it represents CMAKE_<LANG>_USE_RESPONSE_FILE_FOR_OBJECTS.
2014-03-05 08:54:14 -05:00
Kitware Robot ea95e3eae3 CMake Nightly Date Stamp 2014-03-05 00:01:06 -05:00
Brad King 5e8e4d0f88 cmLocalGenerator: Add response file option to OutputLinkLibraries
Response files require different path conversion to be threaded
through construction of the link libraries flags.
2014-03-04 13:41:59 -05:00
Brad King b9aa504198 cmLocalGenerator: Simplify GetIncludeFlags output formatting
Use the output format argument to ConvertToIncludeReference.
2014-03-04 13:12:54 -05:00
Brad King 971653b767 cmLocalGenerator: Add format option to ConvertToLinkReference
Replace the hard-coded SHELL output format with an optional argument.
2014-03-04 13:12:47 -05:00
Brad King 0c0ef9e7b7 cmLocalGenerator: Add format option to ConvertToIncludeReference
Replace the hard-coded SHELL output format with an optional argument.
2014-03-04 13:04:02 -05:00
Brad King 02bebd60e9 cmLocalGenerator: Add format option to ConvertToOutputForExisting
Replace the hard-coded SHELL output format with an optional argument.
2014-03-04 12:58:57 -05:00
Brad King c87517099a Makefile: Factor out some duplicate link libraries generation
The generators for executable and library targets duplicate the logic to
call the OutputLinkLibraries helper on the local generator.  Factor it
out into a cmMakefileTargetGenerator::CreateLinkLibs method to avoid
dpulication.
2014-03-04 11:20:27 -05:00
Brad King 7db95df39d Merge branch 'upstream-kwsys' into update-kwsys 2014-03-04 10:19:33 -05:00
Brad King 3504f9b9ff cmake: Fix --check-build-system argument count check (#14784)
This internal option requires two arguments, not just one.  Fix the
argument count required to recognize the option.
2014-03-04 10:12:08 -05:00
Brad King 7e187eeacd CMP0017: Fix check when including from CMake source tree
When running CMake from the build tree the CMAKE_ROOT is the
entire source tree.  Fix the CMP0017 check to be specific to
the Modules/ directory under CMAKE_ROOT so that Tests/ does
not count.  Fix the FindPackageTest modules to include FPHSA
by full path from CMAKE_ROOT so that they do not include the
local FPHSA which reports an error meant to test that CMP0017
works.
2014-03-04 09:35:00 -05:00
Kitware Robot 74b982ce73 CMake Nightly Date Stamp 2014-03-04 00:01:05 -05:00
Brad King 909c0533d0 Merge topic 'wix-additions'
642fa25d CPackWIX: support installation of empty directories
378eb5b7 CPackWIX: Allow Windows Installer property customization
2014-03-03 10:06:25 -05:00
Kitware Robot ace6fa5a8b CMake Nightly Date Stamp 2014-03-03 00:01:05 -05:00
Kitware Robot 115ffb0e4d CMake Nightly Date Stamp 2014-03-02 00:01:09 -05:00
Nils Gladitz 642fa25da0 CPackWIX: support installation of empty directories 2014-03-02 00:51:42 +01:00
Nils Gladitz 378eb5b712 CPackWIX: Allow Windows Installer property customization 2014-03-01 23:13:35 +01:00
Kitware Robot c0afb88675 CMake Nightly Date Stamp 2014-03-01 00:01:10 -05:00
Brad King 937714c037 Merge topic 'vs-Fortran-use-OBJECT-lib'
0f55f254 VS: For Intel Fortran .vfproj put OBJECT libs in link line (#14777)
2014-02-28 09:48:41 -05:00
Brad King 47896189aa Merge topic 'no_gcov_error_msg'
0a6f0280 CTest: notify user if gcov cannot be found
2014-02-28 09:48:32 -05:00
Brad King a2215197ff Merge topic 'wix-refactor'
6fcd835c CPackWIX: refactor and cleanup
2014-02-28 09:48:28 -05:00
Zack Galbreath 0a6f028067 CTest: notify user if gcov cannot be found
Emit an error message when we're performing coverage using
gcov and the gcov executable cannot be found.
2014-02-28 09:23:03 -05:00
Kitware Robot a3a178fcac CMake Nightly Date Stamp 2014-02-28 00:01:06 -05:00
Brad King 0f55f2547f VS: For Intel Fortran .vfproj put OBJECT libs in link line (#14777)
The Intel Fortran .vfproj format accepts the $(Configuration) placeholder
in the path to an input file but appears to consider it always out of
date.  Therefore adding OBJECT library objects as external object source
files causes the referencing binary to re-link on every build.  Work
around this problem by putting OBJECT library objects on the link line
as is done for VS < 8 already.
2014-02-27 09:53:16 -05:00
Kitware Robot 0f9dbc1608 CMake Nightly Date Stamp 2014-02-27 00:01:08 -05:00
Brad King 75428cdfb9 Merge topic 'fix-showinclude-warnings'
47702b8d CTest: exclude /showIncludes notes when scraping logs
2014-02-26 09:38:53 -05:00
Brad King 6223621e9a Merge topic 'msvc-compiler-pdb-files'
fba51b09 MSVC: Add properties to configure compiler PDB files (#14762)
3737860a cmTarget: Add per-config compilation info
718a9532 cmTarget: Refactor ComputePDBOutputDir interface
aae5184c Help: Refactor PDB_NAME and PDB_OUTPUT_DIRECTORY docs
b4aac0ca Makefile: Fix per-config linker PDB output directory
2014-02-26 09:38:51 -05:00
Brad King fba51b096e MSVC: Add properties to configure compiler PDB files (#14762)
Since commit v2.8.12~437^2~2 (VS: Separate compiler and linker PDB files
2013-04-05) we no longer set /Fd with the PDB_NAME or PDB_OUTPUT_DIRECTORY
properties.  Those properties now exclusively handle linker PDB files.
Since STATIC libraries do not link their compiler PDB file becomes more
important.  Add new target properties "COMPILE_PDB_NAME[_<CONFIG>]" and
"COMPILE_PDB_OUTPUT_DIRECTORY[_<CONFIG>]" to specify the compiler PDB
file location and pass the value to the MSVC /Fd option.
2014-02-26 09:34:38 -05:00
Nils Gladitz 6fcd835c07 CPackWIX: refactor and cleanup
Extract addtional classes and functions which are getting unsightly large.
Use some of the coding conventions more consistently.
2014-02-26 14:15:13 +01:00
Kitware Robot c859d176a1 CMake Nightly Date Stamp 2014-02-26 00:01:06 -05:00
Nils Gladitz 47702b8d49 CTest: exclude /showIncludes notes when scraping logs
My last related commit e5e3f3d4 (CTest: filter /showIncludes output from
ninja compile launcher, 2013-12-01) filtered /showIncludes messages from
the generated xml output but they also need to be filtered in
ScrapeLog().  Otherwise they are being detected as warnings when using
compilers withs english diagnostics.
2014-02-25 11:23:57 -05:00
Brad King 958cd84431 Merge topic 'dev/faster-parsers'
048be205 Help: Add release notes for the 'faster-parsers' topic
7c565d2f cmGeneratorExpression: Improve parsing in StripEmptyListElements
68eb1757 cmGeneratorExpressionLexer: Use a switch statement to parse
67253133 ExpandListArguments: Optimize the parser
2014-02-25 11:18:14 -05:00
Brad King 049790c0eb Merge topic 'target-SOURCES-refactor'
f9d5b1fd Handle Mac OSX source flags for individual files lazily.
64d39841 cmGeneratorTarget: Classify sources on demand, not up front.
d3682d86 cmGeneratorTarget: Use a method to access the definition file.
5771f81d cmTarget: Add GetTransitiveTargetClosure method.
a6dd4990 cmTarget: Create a temporary cmTarget in checkInterfacePropertyCompatibility
b8b99cc1 cmTarget: Avoid computing languages when computing transitive targets.
01bca553 cmTarget: Move ComputeLinkInterface to the internal class.
d93e1af2 cmTarget: Extract a ComputeLinkInterfaceLibraries method.
3bcb197c cmTarget: Re-arrange the ComputeLinkInterface method.
326d07d2 cmTarget: Extract a ComputeLinkImplementationLanguages method.
21e91350 cmTarget: Change GetTransitivePropertyLinkLibraries to output targets.
f81eb49e cmTarget: Find source files on request.
84e5f5a0 cmTarget: Move SourceFileFlags to cmGeneratorTarget.
2014-02-25 11:18:12 -05:00
Kitware Robot cd8c797a85 CMake Nightly Date Stamp 2014-02-25 00:01:14 -05:00
Brad King 3737860a38 cmTarget: Add per-config compilation info
Add a cmTarget::CompileInfo struct to hold per-configuration information
about the compilation settings in a target.  This is different than
cmTarget::OutputInfo because it applies to any targets that can compile
sources even if they do not link or archive.
2014-02-24 14:14:37 -05:00
Brad King 718a9532c6 cmTarget: Refactor ComputePDBOutputDir interface
Add a runtime parameter to specify the property name prefix.
Update the call site to pass "PDB" to preserve the existing
name for that call path.
2014-02-24 14:12:31 -05:00
Brad King b4aac0caca Makefile: Fix per-config linker PDB output directory
Also, now that all call sites of cmTarget::GetPDBName and
cmTarget::GetPDBDirectory pass the configuration, make the
argument non-optional.
2014-02-24 13:44:24 -05:00
Stephen Kelly f9d5b1fd0f Handle Mac OSX source flags for individual files lazily.
The actual list of files will become config dependent in a follow-up
commit.
2014-02-24 16:45:25 +01:00
Stephen Kelly 64d398416a cmGeneratorTarget: Classify sources on demand, not up front.
Implement a Visitor to hold the sequence of source file tests
for populating outputs.  Use VS 6 and 7 workaround from Brad
King for lack of partial template specialization and function
template specialization capabilities.

This will make it possible to use context dependent generator
expressions to determine the sources of a target.
2014-02-24 16:44:51 +01:00
Stephen Kelly d3682d8647 cmGeneratorTarget: Use a method to access the definition file. 2014-02-24 16:43:25 +01:00
Stephen Kelly 5771f81d91 cmTarget: Add GetTransitiveTargetClosure method.
Replace calls to GetLinkInformation with calls to a method to get only
the target closure, not the link languages etc.  The replaced calls
are used while evaluating generator expressions only.  This makes
transitive generator expression evaluation independent from
the languages of a target.  In a follow-up topic, it will be possible
to make the languages depend on generator expression evaluation, via
evaluation of the SOURCES and INTERFACE_SOURCES target properties.

Because the order of entries is not the same as the final link line,
the order of debug output is different in the RunCMake.CompatibleInterface
test, because the BOOL_PROP7 target property is evaluated first. Adjust
the test to account for that new order.
2014-02-24 16:43:24 +01:00
Stephen Kelly a6dd4990db cmTarget: Create a temporary cmTarget in checkInterfacePropertyCompatibility
This simplifies further refactoring.
2014-02-24 16:43:24 +01:00
Stephen Kelly b8b99cc1e5 cmTarget: Avoid computing languages when computing transitive targets.
For the OLD CMP0022 behavior, we need to treat the implementation
as the interface when computing the interface libraries.  Make it
possible to do that without computing the link languages by adding
a new GetLinkImplementationLibraries method.  Extend the existing
GetLinkImplementation method to populate the languages if the
libraries have already been computed and cached.

Change GetTransitivePropertyTargets to invoke GetLinkInterfaceLibraries
instead of GetLinkInterface.  This is key, as it is a method called
by cmGeneratorExpressionEvaluator.

Change the cmGeneratorExpressionEvaluator to invoke
GetLinkImplementationLibraries instead of GetLinkImplementation.
2014-02-24 16:43:24 +01:00
Stephen Kelly 01bca553b8 cmTarget: Move ComputeLinkInterface to the internal class.
In a follow-up, this will use the OptionalLinkInterface in its
API. That class is in the cmTargetInternals class.
2014-02-24 16:43:24 +01:00
Stephen Kelly d93e1af292 cmTarget: Extract a ComputeLinkInterfaceLibraries method.
When evaluating the SOURCES property, we will need to be able to access
the link libraries without accessing the link languages, as the languages
depend on the SOURCES.
2014-02-24 16:43:24 +01:00
Stephen Kelly 3bcb197c11 cmTarget: Re-arrange the ComputeLinkInterface method.
Arrange the logic so that the part which deals with libraries only is
at the top.  In a follow-up commit, this will be split into two methods.

Ensure that the explanatory CMP0022 comment is only present in one
location.
2014-02-24 16:43:24 +01:00
Stephen Kelly 326d07d27e cmTarget: Extract a ComputeLinkImplementationLanguages method. 2014-02-24 16:43:23 +01:00
Stephen Kelly 21e91350b0 cmTarget: Change GetTransitivePropertyLinkLibraries to output targets.
The callers already skip non-targets, so unify the target search.

Change supporting functions to accept a container of targets instead
of strings where possible.
2014-02-24 16:43:23 +01:00
Stephen Kelly f81eb49e8b cmTarget: Find source files on request.
In a follow-up, the list of sources will become dependent on
the config, so check for existence in cmTarget::GetSourceFiles
instead of up-front with cmGlobalGenerator::CheckTargets().
2014-02-24 16:43:23 +01:00
Stephen Kelly 84e5f5a004 cmTarget: Move SourceFileFlags to cmGeneratorTarget. 2014-02-24 16:43:23 +01:00
Brad King cf42f93d07 Merge topic 'install-FILES-genex'
6e89c8a5 install: Support generator expressions in FILES and PROGRAMS mode
f11f7b34 cmInstallFilesGenerator: Add reference to calling cmMakefile
e190236c Help: Format install() command documentation
2014-02-24 10:40:04 -05:00
Kitware Robot 2f2bb105d5 CMake Nightly Date Stamp 2014-02-24 00:01:04 -05:00
Kitware Robot 01981d8e45 CMake Nightly Date Stamp 2014-02-23 00:01:05 -05:00
Kitware Robot 4e647cf6b5 CMake Nightly Date Stamp 2014-02-22 00:01:06 -05:00
Brad King 6e89c8a5f1 install: Support generator expressions in FILES and PROGRAMS mode
Teach the install(FILES) and install(PROGRAMS) commands to evaluate
generator expressions in the list of files.

Extend the ExportImport test to cover installation cases involving
generator expressions.
2014-02-21 17:05:26 -05:00
Brad King f11f7b34a8 cmInstallFilesGenerator: Add reference to calling cmMakefile
Add a Makefile member to the cmInstallFilesGenerator class and
populate it on construction.  This will be useful in a following
change to evaluate generator expressions with proper context.
2014-02-21 17:05:26 -05:00
Ben Boeckel 7c565d2fd5 cmGeneratorExpression: Improve parsing in StripEmptyListElements
The char-by-char parsing causes lots of reallocations which shouldn't be
necessary. To improve this, fast-path strings without a semicolon,
reserve space in the result, and insert into the result in chunks.
2014-02-21 16:56:06 -05:00
Ben Boeckel 68eb175744 cmGeneratorExpressionLexer: Use a switch statement to parse
Optimize cmGeneratorExpressionLexer::Tokenize to use a switch statement.
The many dereferences of the input pointer were expensive. Also remove
excess pointer arithmetic.
2014-02-21 16:56:06 -05:00
Ben Boeckel 67253133f8 ExpandListArguments: Optimize the parser
Optimize cmSystemTools::ExpandListArguments so as not to build a string
character-by-character. This avoids excess reallocations of the result
string.
2014-02-21 16:56:06 -05:00
Kitware Robot c0bbefbfe7 CMake Nightly Date Stamp 2014-02-21 00:01:11 -05:00
Kitware Robot 44e784342d CMake Nightly Date Stamp 2014-02-20 00:01:10 -05:00
Brad King 28dcccface Begin post-3.0 development 2014-02-19 09:30:37 -05:00
Brad King 7cbab17871 Change version scheme to use only two components for feature levels
Historically CMake used three version components for the feature level.
We released new features while incrementing only the third version
component.  Since commit v2.8.2~105^2~4 (New version scheme to support
branchy workflow, 2010-04-23) we used the fourth version component for
bug-fix releases and the development date:

 <major>.<minor>.<patch>[.<tweak>][-rc<n>] = Release
 <major>.<minor>.<patch>.<date>[-<id>]     = Development

This solidified use of three components for the feature level, and was
necessary to continue releasing 2.x versions because:

* Some existing projects performed floating-point comparisons of
  ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} to 2.x numbers
  so ``x`` could never be higher than 9.

* Version 2.9.<date> was used briefly in post-2.8.0 development in
  CVS prior to the transition to Git, so using it in releases may
  have caused confusion.

Now that we are moving to 3.x versions, these two restrictions go away.
Therefore we now change to use only two components for the feature
level and use the scheme:

 <major>.<minor>.<patch>[-rc<n>] = Release
 <major>.<minor>.<date>[-<id>]   = Development
2014-02-19 09:30:13 -05:00
Brad King 4bb80396e0 CMake 3.0.0-rc1 version update 2014-02-19 09:30:12 -05:00
Brad King e7d3287590 Merge topic 'minor-cleanups'
f6cae4ea Tests: Remove some trailing black lines.
c0ea4c5c Makefile: Fix comment indentation.
5e0c73c7 cmGlobalGenerator: Remove unused variable.
907c09cd include_directory: Add missing include.
a74d125a Help: Fix typo
317d8498 Small typo fix
2014-02-19 08:34:20 -05:00
Kitware Robot 0b3a792bef CMake Nightly Date Stamp 2014-02-19 00:01:07 -05:00
Kitware Robot 586d2ce8a7 CMake Nightly Date Stamp 2014-02-18 00:01:06 -05:00
Brad King b486c6d49a Merge topic 'windows-filesystem-retry-config'
7b1f966a Windows: Make file delete/rename retry configurable
2014-02-17 10:03:11 -05:00
Brad King 10623032c7 Merge topic 'INTERFACE-no-sources'
9db9c1fc cmTarget: Don't try to get sources of an INTERFACE_LIBRARY.
2014-02-17 09:59:49 -05:00
Brad King 65c74eb98f Merge topic 'KateHandleSpacesInPath'
22e5c6c2 Kate: handle spaces in build dir
2014-02-17 09:59:45 -05:00
Alex Neundorf 22e5c6c26b Kate: handle spaces in build dir
They need to be escaped in the json file... I'm quite
sure I tested this before, obviously I didn't test it
correctly.

Alex
2014-02-17 09:54:03 -05:00
Stephen Kelly c0ea4c5c6f Makefile: Fix comment indentation. 2014-02-17 11:14:18 +01:00
Stephen Kelly 5e0c73c78c cmGlobalGenerator: Remove unused variable. 2014-02-17 11:13:44 +01:00
Stephen Kelly 907c09cd31 include_directory: Add missing include.
The cmGeneratorExpression is used here, but the header for it is not
in the include heirarchy.  This would be a compile error if the file
were compiled as a standalone translation unit, but it is instead
used in a mini-unity-build by inclusion in cmCommands.cxx. The header
for cmGeneratorExpression happens to be included first, so the
compilation works fine.

IDEs do not know this however, and flag the use as an error.
2014-02-17 11:08:58 +01:00
Kevin Funk 317d8498aa Small typo fix 2014-02-17 11:07:41 +01:00
Kitware Robot b1d34182b8 CMake Nightly Date Stamp 2014-02-17 00:01:07 -05:00
Kitware Robot 0c958c44af CMake Nightly Date Stamp 2014-02-16 00:01:05 -05:00
Kitware Robot 66bf178346 CMake Nightly Date Stamp 2014-02-15 00:01:11 -05:00
Stephen Kelly 9db9c1fc8b cmTarget: Don't try to get sources of an INTERFACE_LIBRARY.
An an assert to ensure this.
2014-02-14 13:53:14 +01:00
Kitware Robot 945a66a543 CMake Nightly Date Stamp 2014-02-14 00:01:05 -05:00
Brad King 79bb8cfcf3 Merge topic 'dev/ninja-speedup'
26762e16 Ninja: Cache target-level flags
2014-02-13 10:28:32 -05:00
Brad King aa23381253 Merge topic 'osx-sysroot-escape'
77b2e6f1 OS X: Escape path given to -isysroot flag
2014-02-13 10:28:29 -05:00
Ben Boeckel 26762e1681 Ninja: Cache target-level flags
Instead of figuring out target flags per-source file, cache the flags
that are being used. This results in a *much* faster generate time for
Ninja.
2014-02-13 10:20:56 -05:00
Kitware Robot c56854aa0e CMake Nightly Date Stamp 2014-02-13 00:01:07 -05:00
Brad King 54d9e01487 Merge topic 'backward-compatibility'
f2eee72f add_custom_command: Disallow use of SOURCE signatures.
c248a437 Add policy CMP0049 to avoid variable expansion in source lists
2014-02-12 11:31:30 -05:00
Brad King 764d467d24 Merge topic 'dev/fix-sublime-compile-flags'
2d9f93ab Sublime: Pass language and config properly
2014-02-12 11:31:28 -05:00
Brad King 0d177cf383 Merge topic 'cmake-devel-version-macro'
6ca6613a Export: Use the CMAKE_DEVEL_VERSION macro for build-export files.
2014-02-12 11:31:26 -05:00
Stephen Kelly f2eee72fac add_custom_command: Disallow use of SOURCE signatures.
Add CMP0050 to control this behavior.
2014-02-12 11:19:27 -05:00
Stephen Kelly c248a437c4 Add policy CMP0049 to avoid variable expansion in source lists 2014-02-12 11:17:38 -05:00