summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'ninja-no-phony-sources'Brad King2014-07-014-44/+44
|\ | | | | | | | | | | | | 93371ed5 Ninja: Skip generating empty phony rules 7243c951 Ninja: Don't limit custom cmd side-effects to build folder (#14972) a33cf6d0 Ninja: Consider only custom commands deps as side-effects (#14972)
| * Ninja: Skip generating empty phony rulesAdam Strzelecki2014-06-302-14/+21
| | | | | | | | | | | | | | | | | | Ninja generator ensures that all custom commands being target dependencies are run before other source compilations. However in case there are no such dependencies it currently generates empty phony rules which clutter the build graph. Teach the Ninja generator to produce such rules only when necessary.
| * Ninja: Don't limit custom cmd side-effects to build folder (#14972)Adam Strzelecki2014-06-301-16/+6
| | | | | | | | | | | | | | | | | | | | Actually custom command can write wherever it wants to, such as temporary folder or source folder, possibly violating rules that only build folder should be affected. Therefore we should consider custom command dependency at any path as possible side effect adding phony rule. We avoid adding phony rules for regular source files (since the paraent commit) so we no longer need the in-build-tree test to avoid them.
| * Ninja: Consider only custom commands deps as side-effects (#14972)Adam Strzelecki2014-06-302-14/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v2.8.12~248^2 (Ninja: Custom Command file depends don't need to exist before building, 2013-06-07) all explicit dependencies inside build folder were considered as possible build command side-effects and phony rules were produced for them in case they don't exist when starting to build. This is unnecessary since regular compile inputs need to exist or cmake will fail. Moreover the exception for sources having GENERATED property that can be missing is already handled by WriteAssumedSourceDependencies. This fixes unwanted phony rules for all regular source files when doing in-source build, causing Ninja not complain when such files gets missing, i.e. during development. Also this reduces number of rules in ninja.build. Now only custom command dependencies are considered as possible side-effects.
* | CMake Nightly Date StampKitware Robot2014-07-011-1/+1
| |
* | Merge topic 'vs14-generator'Brad King2014-06-3011-4/+923
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f0e298ad Help: Add notes for topic 'vs14-generator' 5c105140 Tests: Simplify LoadCommand tests b1cbd577 FindBoost: Add -vc140 mangling for VS 14 bdc7d9c8 VS14: Fix Cl and Link flag tables as previous versions d96b3f68 VS14: Generate flag tables from MSBuild v140 tool files 65624c39 VS14: Add Visual Studio 14 generator (#14982) 8635ac23 Tests/Preprocess: Remove unnecessary VS version tests
| * | VS14: Fix Cl and Link flag tables as previous versionsBrad King2014-06-252-11/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apply the flag table fixes from: commit 9c7f234c (VS: Fix /MANIFESTUAC:NO linker option mapping, 2014-05-07) commit e8633e66 (VS: Fix /analyze:log flag mapping, 2014-04-01) commit f2caf795 (VS: Fix /MAP:mapfile flag mapping, 2013-07-09) to the VS 14 flag tables.
| * | VS14: Generate flag tables from MSBuild v140 tool filesBrad King2014-06-255-3/+759
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Run cmparseMSBuildXML.py on cl.xml, lib.xml, and link.xml to generate our flag tables: python cmparseMSBuildXML.py -x ".../MSBuild/Microsoft.Cpp/v4.0/V140/1033/cl.xml" > cmVS14CLFlagTable.h python cmparseMSBuildXML.py -x ".../MSBuild/Microsoft.Cpp/v4.0/V140/1033/lib.xml" > cmVS14LibFlagTable.h python cmparseMSBuildXML.py -x ".../MSBuild/Microsoft.Cpp/v4.0/V140/1033/link.xml" > cmVS14LinkFlagTable.h Fix up the declaration names at the top of each file. Finally, teach cmVisualStudio10TargetGenerator to select the version of the table matching the version of VS. Co-Author: Pawel Stopinski <diokhan@go2.pl>
| * | VS14: Add Visual Studio 14 generator (#14982)Brad King2014-06-256-1/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Call the generator "Visual Studio 14" without any year because this version of VS does not provide a year in the product name. Copy cmGlobalVisualStudio12Generator to cmGlobalVisualStudio14Generator and update version numbers accordingly. Add the VS14 enumeration value. Teach the platform module Windows-MSVC to set MSVC14 and document the variable. Teach module InstallRequiredSystemLibraries to look for the VS 14 runtime libraries. Teach tests CheckCompilerRelatedVariables, VSExternalInclude, and RunCMake.GeneratorToolset to treat VS 14 as they do VS 10, 11, and 12. Co-Author: Pawel Stopinski <diokhan@go2.pl>
* | | CMake Nightly Date StampKitware Robot2014-06-301-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2014-06-291-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2014-06-281-1/+1
| |/ |/|
* | Merge topic 'bootstrap-cmake-locations'Brad King2014-06-271-1/+6
|\ \ | | | | | | | | | | | | | | | 6650b0fa bootstrap: Fix "make test" and "make package" targets (#14989) bc151757 bootstrap: Clarify name of configured source directory
| * | bootstrap: Fix "make test" and "make package" targets (#14989)Brad King2014-06-251-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.0.0-rc1~374^2 (Refactor internal resource location APIs and initialization, 2013-11-07) a bootstrap-built "cmake" tries to reference "ctest" and "cpack" executables next to itself, which never exist. Teach cmSystemTools::FindCMakeResources, when bootstrap-built, to refer to the "ctest" and "cpack" executables in the location where they will be built after "make".
| * | bootstrap: Clarify name of configured source directoryBrad King2014-06-251-1/+1
| | | | | | | | | | | | | | | Rename CMAKE_ROOT_DIR to CMAKE_BOOTSTRAP_SOURCE_DIR to clarify both that it is only for bootstrap and that it refers to the source directory.
* | | Merge topic 'refactor-link-internals'Brad King2014-06-272-168/+160
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 24637979 cmTarget: Refactor ComputeLinkImplementation 7812d2a9 cmTarget: Pre-indent a block in ComputeLinkImplementation f48d8bd6 cmTarget: Shorten a long line in ComputeLinkImplementation 7b0834e9 cmTarget: Refactor internal LinkImplementation map b8651d97 cmTarget: Remove unnecessary 'mutable' markup 0192be51 cmTarget: De-duplicate link interface evaluation for $<LINK_ONLY> 6ead631b cmTarget: Teach GetLinkInterfaceLibraries to support $<LINK_ONLY> b030a7f1 cmTarget: De-duplicate link interface genex code for $<LINK_ONLY> 1001490d cmTarget: Teach ExpandLinkItems how to support $<LINK_ONLY>
| * | | cmTarget: Refactor ComputeLinkImplementationBrad King2014-06-251-17/+20
| | | | | | | | | | | | | | | | | | | | | | | | Use LinkImplementationPropertyEntries directly instead of asking GetProperty to construct a string for LINK_LIBRARIES. This gives us access to the entry backtraces.
| * | | cmTarget: Pre-indent a block in ComputeLinkImplementationBrad King2014-06-251-37/+37
| | | | | | | | | | | | | | | | Prepare to move it into another block without extra whitespace changes.
| * | | cmTarget: Shorten a long line in ComputeLinkImplementationBrad King2014-06-251-3/+2
| | | | | | | | | | | | | | | | Prepare to change its indentation without exceeding line length limit.
| * | | cmTarget: Refactor internal LinkImplementation mapBrad King2014-06-251-31/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If ComputeLinkImplementationLanguages were ever to cause GetLinkImplementationLibraries to be invoked then a LinkImplMap entry may appear in the middle of computing it in GetLinkInformation. Instead create the map entry up front and store in it boolean values indicating which pieces of the LinkImplementation structure have been populated. This approach leads to shorter code that is easier to follow too.
| * | | cmTarget: Remove unnecessary 'mutable' markupBrad King2014-06-251-19/+19
| | | | | | | | | | | | | | | | | | | | | | | | Members of the cmTargetInternals structure do not need to be made 'mutable' even to cache data because there is no reason for the internal methods to be 'const'.
| * | | cmTarget: De-duplicate link interface evaluation for $<LINK_ONLY>Brad King2014-06-251-32/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Teach GetTransitivePropertyTargets to use the GetLinkInterfaceLibraries method with usage_requirements_only==true instead of evaluating the INTERFACE_LINK_LIBRARIES property directly. This avoids duplicate evaluations and makes use of the caching done by GetLinkInterfaceLibraries.
| * | | cmTarget: Teach GetLinkInterfaceLibraries to support $<LINK_ONLY>Brad King2014-06-252-26/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a 'usage_requirements_only' parameter to GetLinkInterfaceLibraries and supporting internal APIs to pass through to ExpandLinkItems so it knows whether to use SetTransitivePropertiesOnly while evaluating generator expressions.
| * | | cmTarget: De-duplicate link interface genex code for $<LINK_ONLY>Brad King2014-06-251-14/+6
| | | | | | | | | | | | | | | | | | | | | | | | Simplify the implementation of GetTransitivePropertyTargets by using ExpandLinkItems with usage_requirements_only==true to evaluate the generator expressions in the link interface for us.
| * | | cmTarget: Teach ExpandLinkItems how to support $<LINK_ONLY>Brad King2014-06-252-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a 'usage_requirements_only' parameter to ExpandLinkItems so that it knows whether to use SetTransitivePropertiesOnly while evaluating generator expressions. Update existing call sites to pass 'false' since they are for linking and not usage requirements.
* | | | Merge topic 'stringapi-crash-cleanup'Brad King2014-06-271-2/+2
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | 3bae343f cmCPackGenerator: Avoid crash on undefined CMAKE_MAKE_PROGRAM
| * | | | cmCPackGenerator: Avoid crash on undefined CMAKE_MAKE_PROGRAMBrad King2014-06-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 6557382d (stringapi: Use strings for program paths, 2014-02-24), cmGlobalGenerator::GenerateBuildCommand takes the make program path as a std::string. Fix the lookup in cmCPackGenerator::InstallProjectViaInstallCMakeProjects to use GetSafeDefinition for CMAKE_MAKE_PROGRAM to avoid possible construction of std::string from a NULL. Reported-by: Richard Wirth <richard@califax.de>
* | | | | Merge topic 'install-messages'Brad King2014-06-2716-35/+199
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d19b64d6 install(DIRECTORY): Add MESSAGE_NEVER option to avoid output (#13761) c9568de5 install: Add CMAKE_INSTALL_MESSAGE variable (#13761) ec7cf7ea install: Thread message level setting through internal API abebcd23 file(INSTALL): Add undocumented options to control output verbosity 464567a5 file(INSTALL): Report existing DIRECTORY as Up-to-date f701b0b7 file(INSTALL): Do not pre-create DESTINATION for DIRECTORY f0a01962 cmInstallTargetGenerator: Drop default constructor arguments 67815894 Help: Add install() command document section headers
| * | | | | install(DIRECTORY): Add MESSAGE_NEVER option to avoid output (#13761)Brad King2014-06-243-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Installing large directories, e.g., the output of a doxygen run, prints one line per file resulting in too much noise in the build output. Add an option to the install(DIRECTORY) command to not print anything upon make install. Extend the RunCMake.install test with cases covering MESSAGE_NEVER behavior of the install(DIRECTORY) command. Suggested-by: Stefan Eilemann <Stefan.Eilemann@epfl.ch>
| * | | | | install: Add CMAKE_INSTALL_MESSAGE variable (#13761)Brad King2014-06-246-7/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create a variable to allow users to control which installation messages are printed. In particular, provide a "LAZY" setting that prints "Installing" messages but not "Up-to-date" messages. This is desirable for incremental re-installations. Suggested-by: J Decker <d3ck0r@gmail.com>
| * | | | | install: Thread message level setting through internal APIBrad King2014-06-2415-12/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create a cmInstallGenerator::MessageLevel enumeration for future use in specifying install message verbosity. Thread values of the type through constructors and save the value as a member of cmInstallGenerator. Use only a "MessageDefault" value for now.
| * | | | | file(INSTALL): Add undocumented options to control output verbosityBrad King2014-06-241-3/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create options "MESSAGE_ALWAYS", "MESSAGE_LAZY", and "MESSAGE_NEVER" to specify whether to print the "Installing" and "Up-to-date" messages. Extend the RunCMake.file test with cases covering these options.
| * | | | | file(INSTALL): Report existing DIRECTORY as Up-to-dateBrad King2014-06-241-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Teach cmFileCopier::InstallDirectory to detect whether the destination directory exists. If so, report it as "Up-to-date" instead of "Installing". This resolves message asymmetry with file installations. Extend the RunCMake.file and RunCMake.install tests to check the installation output on both the first and second run. Suggested-by: J Decker <d3ck0r@gmail.com>
| * | | | | file(INSTALL): Do not pre-create DESTINATION for DIRECTORYBrad King2014-06-241-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When installing a DIRECTORY, do not pre-create the DESTINATION. The cmFileCopier::InstallDirectory method will create the directory anyway. Give it a chance to detect whether the directory already exists or not.
| * | | | | cmInstallTargetGenerator: Drop default constructor argumentsBrad King2014-06-242-9/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They are used only in cmLocalGenerator::GenerateTargetInstallRules. Move the defaults to a local helper where the context justifies their values.
* | | | | | CMake Nightly Date StampKitware Robot2014-06-271-1/+1
| | | | | |
* | | | | | CMake Nightly Date StampKitware Robot2014-06-261-1/+1
| | | | | |
* | | | | | Merge topic 'refactor-link-internals'Brad King2014-06-2513-403/+442
|\ \ \ \ \ \ | | |_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f5c18c9c cmTarget: Drop GetDirectLinkLibraries methods 281eb3d8 cmTarget: Improve HaveBuildTreeRPATH implementation d912220e cmTarget: Lookup targets in LinkInterface and LinkImplementation edce4351 cmExportFileGenerator: Make SetImportLinkProperty a template 097be413 cmTarget: Add GetUtilityItems to get target ordering dependencies 4dad5fd2 cmTarget: Add cmLinkItem to refer to a target by name and pointer a2723442 Fix scope of transitive target name lookups 069d60fe cmTarget: Add method to lookup other targets in a target's scope 47ab3ca6 cmTarget: Constify GetLinkImplementationClosure results 9f3ed029 cmTarget: Constify GetTransitivePropertyTargets results 6f0951af cmTarget: Drop 'head' target from GetImportInfo 0dc9e88d cmTarget: Remove 'head' argument from GetLinkImplementation 4ac72455 cmTarget: Drop 'head' argument from GetLinkClosure bcdb7ff9 cmTarget: Remove 'head' argument from GetLinkerLanguage bd9b667b cmComputeLinkInformation: Remove 'head' argument 06328dd5 cmTarget: Remove 'head' argument from GetLinkInformation ...
| * | | | | cmTarget: Drop GetDirectLinkLibraries methodsBrad King2014-06-232-47/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Inline the implementation in the last remaining caller and drop the methods.
| * | | | | cmTarget: Improve HaveBuildTreeRPATH implementationBrad King2014-06-231-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use GetLinkImplementationLibraries instead of GetDirectLinkLibraries because it tells us whether there will be any libraries to link after evaluating generator expressions. Also GetDirectLinkLibraries will be dropped soon.
| * | | | | cmTarget: Lookup targets in LinkInterface and LinkImplementationBrad King2014-06-238-101/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of storing just the string names in these structures, lookup any target associated with each item and store its cmTarget pointer. Use the cmLinkItem class to hold the name and pointer together. Update client sites to use the pre-stored lookup result instead of looking up the target name again. Create a cmTarget::LookupLinkItems helper method to handle the lookup. Since lookups are now moving from cmComputeLinkDepends::AddLinkEntries to cmTarget::LookupLinkItems, move use of CheckCMP0004 to the latter. This drops use of CheckCMP0004 from entries added for _LIB_DEPENDS variables by cmComputeLinkDepends::AddVarLinkEntries, but I do not think that use was intentional originally anyway.
| * | | | | cmExportFileGenerator: Make SetImportLinkProperty a templateBrad King2014-06-232-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow the vector of property entries to have any element type that can convert to std::string.
| * | | | | cmTarget: Add GetUtilityItems to get target ordering dependenciesBrad King2014-06-233-4/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a method like GetUtilities but that provides the target names already looked up and resolved to cmTarget pointers internally. Update call site in cmComputeTargetDepends::AddTargetDepend to use the already-found target instead of looking it up again.
| * | | | | cmTarget: Add cmLinkItem to refer to a target by name and pointerBrad King2014-06-231-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many items named in target_link_libraries calls are targets, but not all. Create a cmLinkItem type that acts like std::string so it can name an item but also has a pointer to a cmTarget that is the result of looking up the item name in the referencing target's scope. This will be useful to avoid duplicate lookup operations later.
| * | | | | Fix scope of transitive target name lookupsBrad King2014-06-233-16/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cmTarget, cmGeneratorTarget, and cmGeneratorExpressionEvaluator, fix target name lookups to occur in the cmMakefile context of the target that referenced the name, not the current 'head' target. The context matters for imported targets because they are directory-scoped instead of globally unique. We already do this in cmComputeLinkDepends and cmComputeTargetDepends. Extend the InterfaceLibrary test with an example covering this behavior.
| * | | | | cmTarget: Add method to lookup other targets in a target's scopeBrad King2014-06-233-28/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move the main implementation of cmComputeLinkDepends::FindTargetToLink into cmTarget.
| * | | | | cmTarget: Constify GetLinkImplementationClosure resultsBrad King2014-06-232-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | Populate a vector of "cmTarget const*" instead of "cmTarget*".
| * | | | | cmTarget: Constify GetTransitivePropertyTargets resultsBrad King2014-06-234-14/+15
| | | | | | | | | | | | | | | | | | | | | | | | Populate a vector of "cmTarget const*" instead of "cmTarget*".
| * | | | | cmTarget: Drop 'head' target from GetImportInfoBrad King2014-06-232-40/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move generator expression evaluation for imported library lists out of GetImportInfo and into a new GetImportLinkInterface helper. This avoids duplicating the computation and storage of all imported target info just because some of it is parameterized on the 'head' target.
| * | | | | cmTarget: Remove 'head' argument from GetLinkImplementationBrad King2014-06-237-33/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many of the 'head' arguments added by commit v2.8.11~289^2~1 (Make linking APIs aware of 'head' target, 2013-01-04) turned out not to be needed. The "link implementation" of a target never needs to be computed with anything but itself as the 'head' target (except for CMP0022 OLD behavior because then it is the link interface). Remove the unused 'head' target paths. Add "internal" versions of cmTarget::GetDirectLinkLibraries and GetLinkImplementationLibraries to support the CMP0022 OLD behavior without otherwise exposing the 'head' target option of these methods.