Commit Graph

15836 Commits

Author SHA1 Message Date
Ben Boeckel 11ed3e2cfe stringapi: Add string overload for the Def struct 2014-03-08 13:05:38 -05:00
Ben Boeckel b3bf31a548 stringapi: Miscellaneous char* parameters 2014-03-08 13:05:37 -05:00
Ben Boeckel 5af95c396d typo: Match argument name with the header 2014-03-08 13:05:37 -05:00
Ben Boeckel 2b17626e9b stringapi: Pass strings as install directories in CPack 2014-03-08 13:05:37 -05:00
Ben Boeckel 3def29da3c stringapi: Use strings for feature arguments 2014-03-08 13:05:37 -05:00
Ben Boeckel acb116e3b5 stringapi: Return a string reference for the configuration 2014-03-08 13:05:36 -05:00
Ben Boeckel 84fdc9921c stringapi: Pass configuration names as strings 2014-03-08 13:05:36 -05:00
Brad King f154475b65 cmTarget: Refactor GetLocation API
When given a non-NULL configuration the GetLocation returned the
location for the given configuration.  When given a NULL configuration
the GetLocation method returned a location with the build-system
placeholder for the configuration name.  Split the latter use case out
into a separate GetLocationForBuild method and update call sites
accordingly.
2014-03-08 13:05:36 -05:00
Ben Boeckel cfc2cf9559 cmGeneratorExpression: Tokenize over strings 2014-03-08 13:05:36 -05:00
Ben Boeckel f0ad6631ad Directories: Take strings when setting directories 2014-03-08 13:05:35 -05:00
Ben Boeckel 270eb96df0 strings: Remove cmStdString references
Casts from std::string -> cmStdString were high on the list of things
taking up time. Avoid such implicit casts across function calls by just
using std::string everywhere.

The comment that the symbol name is too long is no longer relevant since
modern debuggers alias the templates anyways and the size is a
non-issue since the underlying methods are generated since it's
inherited.
2014-03-08 13:05:35 -05:00
Ben Boeckel 215b1addf0 stringapi: Take strings in escaping functions 2014-03-08 13:05:35 -05:00
Ben Boeckel 4c53997f38 stringapi: Take strings for utility command names 2014-03-08 13:05:34 -05:00
Ben Boeckel 466abd846f cmTargetLinkLibrariesCommand: Use a string argument 2014-03-08 13:05:34 -05:00
Ben Boeckel 8d60da0cb5 cmTarget: Remove the project argument to FindTarget
All callers passed 0 in, so just remove the branch.
2014-03-08 13:05:34 -05:00
Ben Boeckel 23e9b80f58 stringapi: Use strings for globbing parameters 2014-03-08 13:05:34 -05:00
Ben Boeckel 8455dd0a9a stringapi: Use strings for search paths 2014-03-08 13:05:34 -05:00
Ben Boeckel c3833c7da4 stringapi: Use strings for VS project names 2014-03-08 13:05:33 -05:00
Ben Boeckel d76a6e08d0 stringapi: Use strings for generated file stream names 2014-03-08 13:05:33 -05:00
Ben Boeckel 38c7544578 stringapi: Use strings for documentation names 2014-03-08 13:05:33 -05:00
Ben Boeckel dddbd2c7fa stringapi: Accept strings when setting command errors 2014-03-08 13:05:33 -05:00
Ben Boeckel f3efa3cd16 stringapi: Use strings for cache paths as arguments 2014-03-08 13:05:32 -05:00
Ben Boeckel adcd812917 stringapi: Use strings for AddSubdirectory paths 2014-03-08 13:05:32 -05:00
Ben Boeckel 30bc251b65 stringapi: Use strings for output names in AddCustomCommandToOutput 2014-03-08 13:05:32 -05:00
Ben Boeckel 77f60392d9 stringapi: Accept strings when MD5 hashing data 2014-03-08 13:05:32 -05:00
Ben Boeckel 473ca1ac4a stringapi: Use string for OS X resource names 2014-03-08 13:05:32 -05:00
Ben Boeckel fabf1fbabb stringapi: Use strings in target name 2014-03-08 13:05:31 -05:00
Ben Boeckel a6ae2ea72b stringapi: Use strings in Convert methods in LocalGenerator
The C strings were turned into std::strings internally anyways and most
callers used .c_str().
2014-03-08 13:05:31 -05:00
Ben Boeckel ce5114354c stringapi: Use strings for the languages 2014-03-08 13:05:30 -05:00
Ben Boeckel 83a5e453f8 stringapi: Use strings for test names 2014-03-08 13:05:30 -05:00
Ben Boeckel b26c70cc9a stringapi: Use strings for AddString methods
It gets turned into a string anyways, so pass them in.
2014-03-08 13:05:30 -05:00
Ben Boeckel 9f48d3bac2 stringapi: Use strings in CPack generator parameters
Most of these are turned into strings in the body of the method
(multiple times in some cases). Accept strings to simplify the API and
keep string construction down.
2014-03-08 13:05:30 -05:00
Ben Boeckel 971eb4d56e stringapi: Use strings for TryFullPath 2014-03-08 13:05:30 -05:00
Ben Boeckel 310ef08fed stringapi: Use strings for source names 2014-03-08 13:05:29 -05:00
Ben Boeckel 24e8b929ee genex: Store predicates as a map for faster searching
May warrant a fast path for predicates which more frequently.
2014-03-08 13:05:29 -05:00
Ben Boeckel 22c54a1090 makefile: Remove an unused method 2014-03-08 13:05:29 -05:00
Ben Boeckel f29754573d stringapi: Accept string parameters in methods which store to strings 2014-03-08 13:05:29 -05:00
Ben Boeckel 381d50c149 stringapi: Accept strings in cmStrCmp 2014-03-08 13:05:28 -05:00
Ben Boeckel 3742bb0d32 stringapi: Use strings for variable names
Variable names are always generated by CMake and should never be NULL.
2014-03-08 13:05:28 -05:00
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 b1bbee3e9a Record more policies on targets when created
Policies CMP0027, CMP0038, and CMP0046 have per-target meaning so
record the policy settings on targets as they are created.
2014-03-06 11:05:47 -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 51988a4fce Merge branch 'fix-check-build-system-crash' into release 2014-03-04 10:17:05 -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 42322469e4 Merge branch 'fix-showinclude-warnings' into release 2014-02-26 09:36:02 -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