summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* cmGlobalGenerator: Cleanup GenerateBuildCommand APIBrad King2013-11-181-28/+18
| | | | | | | | | All cmGlobalGenerator::GenerateBuildCommand call sites that need to produce a string now generate "cmake --build" commands. The remaining call sites immediately pass the result to cmSystemTools::RunSingleCommand. Avoid the intermediate string and argument parsing by directly producing a vector of strings. Also drop the ignoreErrors argument because no call sites remain that use it.
* cmGlobalGenerator: Add method to compute "cmake --build" command lineBrad King2013-11-141-0/+40
| | | | | | Create a GenerateCMakeBuildCommand method to generate a command-line string invoking "cmake --build" for a given target and configuration. Optionally allow the "-i" make flag and additional native options.
* cmGlobalGenerator: Drop unused GenerateBuildCommand implementationBrad King2013-11-141-33/+5
| | | | | | This is a virtual method that is overridden by every generator subclass. The base class implementation should never be called, so replace it with a dummy implementation.
* Refactor tool selection for edit_cache (#14544)Brad King2013-11-121-7/+8
| | | | | | | | | Refactor edit_cache tool selection to ask each global generator for its preference. Teach the Ninja generator to always use cmake-gui because Ninja by design cannot run interactive terminal dialogs like ccmake. Teach the Makefile generator to use cmake-gui when also using an "extra" generator whose IDE has no terminal to run ccmake, and otherwise fall back to CMAKE_EDIT_COMMAND selection for normal Makefile build systems.
* Merge topic 'constify'Brad King2013-11-121-7/+4
|\ | | | | | | | | | | | | dcac9be Make accessors for compile-related information const. 19a8a3c cmTarget: Don't finalize include directories in GetIncludeDirectories. 3305364 cmGlobalGenerator: Rename the FinalizeCompileDefinitions method.
| * cmTarget: Don't finalize include directories in GetIncludeDirectories.Stephen Kelly2013-11-071-5/+2
| | | | | | | | Rely on that having been done by the cmGlobalGenerator.
| * cmGlobalGenerator: Rename the FinalizeCompileDefinitions method.Stephen Kelly2013-11-071-2/+2
| | | | | | | | This will soon also finalize include directories.
* | Refactor internal resource location APIs and initializationBrad King2013-11-121-3/+3
|/ | | | | | | | | | | | | | | | | | | | Rename cmSystemTools::FindExecutableDirectory to FindCMakeResources. Teach it to compute the locations of cmake, ctest, cpack, ccmake, and cmake-gui executables, and the location of CMAKE_ROOT. Provide this information from static cmSystemTools::Get<resource>() methods. Refactor code that needs these locations to use the new APIs. Teach FindCMakeResources to use the OS X system API to lookup the executable location. When running from the CMake build tree itself, leave a file in the tree that FindCMakeResources can use to read the location of the source tree. This avoids the need to compile the source tree location into a binary that may be installed and used without the source tree. Teach the QtDialog on OS X to create a "cmake-gui" symlink in the build tree next to "cmake" and the other tools, as is already done in the install tree for the application bundle. This ensures a consistent set of executables are available in one directory.
* Merge topic 'refactor-autogen-setup'Brad King2013-11-061-10/+16
|\ | | | | | | | | | | | | | | 944277d cmAutogen: Gather tool arguments after creating generator targets. d2f4b1e cmAutogen: Rename method to InitializeAutogenTarget 45735f3 cmAutogen: Move autogen target creation to InitializeMocSourceFile. 20a234d cmAutogen: Extract some helper methods for autogen targets.
| * cmAutogen: Gather tool arguments after creating generator targets.Stephen Kelly2013-11-051-9/+15
| | | | | | | | | | | | | | | | This change causes the GetLinkInterfaceDependentStringProperty method, called in SetupAutoGenerateTarget, after the creation of generator targets. In CMake 4.0, the GetLinkInterfaceDependentStringProperty will move to the cmGeneratorTarget class, and this patch is a necessary prerequisite to that.
| * cmAutogen: Rename method to InitializeAutogenTargetStephen Kelly2013-11-051-1/+1
| | | | | | | | This reflects better what it is doing.
* | Merge topic 'clear-generator-data'Brad King2013-11-061-47/+36
|\ \ | |/ |/| | | | | 5cf1120 cmGlobalGenerator: Refactor member cleanup between configures
| * cmGlobalGenerator: Refactor member cleanup between configuresBrad King2013-11-051-47/+36
| | | | | | | | | | | | Factor member cleanup out from cmGlobalGenerator::Configure and the destructor into a dedicated helper to avoid duplication. This fixes clearing of BuildExportSets between configures.
* | Merge topic 'fix-automoc-compile-definitions'Brad King2013-11-051-4/+20
|\ \ | |/ |/| | | | | a1b9465 Automoc: Add directory-level COMPILE_DEFINITIONS to command line (#14535)
| * Automoc: Add directory-level COMPILE_DEFINITIONS to command line (#14535)Stephen Kelly2013-11-051-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit 18412153 (Refactor cmTarget::GetCompileDefinitions..., 2013-06-06) cmQtAutomoc was refactored to get all compile definitions from the target instead of separately asking the target and querying the directory-level COMPILE_DEFINITIONS property value. While the generation process does integrate directory-level COMPILE_DEFINITIONS into the target definitions, this did not happen until after Automoc targets are constructed. Therefore the commit regressed use of directory-level definitions in Automoc targets. Factor the definition finalization logic out from the cmGlobalGenerator::CreateGeneratorTargets method into a new cmGlobalGenerator::FinalizeTargetCompileDefinitions method and call it before constructing Automoc targets. This will place the directory-level definitions into the target in time to use them for the Automoc targets. Extend the QtAutomoc test to cover this case.
* | Merge topic 'clear-evaluation-files'Brad King2013-11-051-0/+8
|\ \ | | | | | | | | | | | | 2e388cc file(GENERATE): Clear internal records between configures
| * | file(GENERATE): Clear internal records between configuresBrad King2013-11-041-0/+8
| |/ | | | | | | | | | | In the CMake interactive dialogs cmGlobalGenerator::Configure may run more than once. Clear the cmGlobalGenerator::EvaluationFiles data between configures to avoid accessing deleted data.
* | Merge topic 'object-library-missing-source'Brad King2013-11-021-0/+1
|\ \ | | | | | | | | | | | | 5a2fc3d Check for OBJECT_LIBRARY source files at start of generation
| * | Check for OBJECT_LIBRARY source files at start of generationBrad King2013-11-011-0/+1
| |/ | | | | | | | | | | | | Teach cmGlobalGenerator::CheckTargets to include OBJECT_LIBRARY targets in the check for source file existence. Extend the RunCMake.ObjectLibrary test to cover this case.
* | Merge topic 'use-generator-target'Brad King2013-10-301-3/+23
|\ \ | | | | | | | | | | | | | | | | | | 638843a Remove the Location member from cmTarget. 90ef1cf Move GenerateTargetManifest to cmGeneratorTarget. 25f1df3 Split CreateGeneratorTargets into two methods.
| * | Split CreateGeneratorTargets into two methods.Stephen Kelly2013-10-271-3/+23
| | | | | | | | | | | | | | | As the generate-time-related API is moving to cmGeneratorTarget, almost all of generation code needs to be able to access instances of it.
* | | Merge topic 'Qt-auto-generators'Brad King2013-10-281-12/+15
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9c87d9c Add automatic rcc invocation for Qt. 84218e1 Add automatic uic invocation for Qt. 94a0ca6 Record which files are skipped by automoc. 18fb758 Run the main executable created in the autogen tests. e485ba1 Rename the QtAutomoc tests to QtAutogen. 7ce65c3 Add extra checks for the AUTOMOC target property. 32771fc Update output messages for generic use. f371ab5 Rename RunAutomoc to RunAutogen. 85b3d6e Extract an SetupAutoMocTarget method. ca124a1 Rename the AutomocInfo.cmake file to be more generic. a342c9f Move some makefile definitions up away from moc-specific code. 98632ef Add the AUTOGEN_TARGETS_FOLDER and obsolete AUTOMOC_TARGETS_FOLDER. 63378ba Rename some variables to reflect broader scope. 97f1aa3 Rename method to reflect generic use. 4abb111 Rename local variable to reflect generic use. 03878c9 Move variable set to where it is used. ...
| * | | Add automatic rcc invocation for Qt.Stephen Kelly2013-10-241-1/+2
| | | | | | | | | | | | | | | | | | | | This replaces the need to invoke qt4_add_resources by allowing adding the source .qrc file directly to the target sources.
| * | | Add automatic uic invocation for Qt.Stephen Kelly2013-10-241-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The source files are already processed by cmQtAutomoc to look for moc includes, so extend that to also look for ui_ includes and find corresponding .ui files to process. This replaces the need to invoke qt4_wrap_ui(). As the ui files are not likely to be part of the SOURCES of the target, store the options associated with them separately in the cmMakefile for querying during the autogen run.
| * | | Rename the cmQtAutoGenerator instances to reflect coming features.Stephen Kelly2013-10-241-6/+6
| | | |
| * | | Rename the cmQtAutomoc class to cmQtAutoGenerators.Stephen Kelly2013-10-241-7/+7
| | | | | | | | | | | | | | | | It will be extended to process .ui and .qrc files too.
* | | | Merge topic 'enable-language-require-compiler'Brad King2013-10-281-25/+95
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | 3e04946 Require CMAKE_<LANG>_COMPILER to be found as a full path 6007f7c CMakeDetermineCompilerId: Always use compiler detected from IDE 332771c CMakeDetermine*Compiler: Remove temporary cache entry
| * | | Require CMAKE_<LANG>_COMPILER to be found as a full pathBrad King2013-10-281-25/+95
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All generators now support detection of the full path to the compiler, so require it to be so. This will allow CMake<LANG>Information.cmake and other logic to assume the full path to the compiler tool is available. The Makefile generators already rejected CMAKE_<LANG>_COMPILER values that did not name an existing compiler. Extend this error message to all generators, make it occur as early as possible, and improve the message with advice about how to set the compiler. If the full path to the compiler is not known, finish enabling languages with a fatal error so configuration does not continue. For now, allow the RC language compiler to not be a full path. Later we will need to detect the full path to "rc" under the VS IDE. Add a RunCMake.CompilerNotFound test to cover failure cases. Fix the RunCMake.CompilerChange test EmptyCompiler case to work when configuration does not continue past enable_language.
* | | Drop compatibility with CMake < 2.4Brad King2013-10-231-23/+0
|/ / | | | | | | | | | | | | | | | | | | | | | | Drop all behavior activated by setting CMAKE_BACKWARDS_COMPATIBILITY to a value lower than 2.4, and generate an error when projects or the user attempt to do so. In the error suggest using a CMake 2.8.x release. Teach cmake_minimum_required to warn about projects that do not require at least CMake 2.4. They are not supported by CMake >= 3.0. Replace the documentation of CMAKE_BACKWARDS_COMPATIBILITY with a reference to policy CMP0001.
* | export(): Process the export() command at generate time.Stephen Kelly2013-10-111-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | Make the API for adding targets string based so that it can easily use cmGeneratorTarget. Teach the cmIncludeCommand to generate the exported file at configure-time instead if it is to be include()d. The RunCMake.ExportWithoutLanguage test now needs a dummy header.h file as expected error from export() is now reported after the missing file error.
* | Merge topic 'apple-clang-id'Brad King2013-10-091-0/+41
|\ \ | | | | | | | | | | | | | | | | | | 1763c31 Set policy CMP0025 to NEW while building CMake itself aa53ee5 Add policy CMP0025 for Apple Clang compiler id compatibility ab65862 Clang: Add separate "AppleClang" compiler id
| * | Add policy CMP0025 for Apple Clang compiler id compatibilityBrad King2013-10-081-0/+41
| |/ | | | | | | | | | | | | | | | | | | The parent commit introduced a separate "AppleClang" compiler id for Apple's Clang distribution. Add a policy in order to support projects that expect this compiler's id to be just "Clang". When the policy is OLD or not set, map AppleClang back to Clang. Continue to use the AppleClang id internally while enabling the language, but set the CMAKE_<LANG>_COMPILER_ID after project() or enable_language() to the compatible value for use by project code.
* | Merge topic 'INTERFACE_LIBRARY-target-type'Brad King2013-10-081-0/+4
|\ \ | | | | | | | | | | | | | | | | | | ce0c303 install: Teach EXPORT option to handle INTERFACE_LIBRARY targets 435c912 export: Add support for INTERFACE_LIBRARY targets fe73226 Add the INTERFACE_LIBRARY target type.
| * | Add the INTERFACE_LIBRARY target type.Stephen Kelly2013-10-071-0/+4
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This target type only contains INTERFACE_* properties, so it can be used as a structural node. The target-specific commands enforce that they may only be used with the INTERFACE keyword when used with INTERFACE_LIBRARY targets. The old-style target properties matching LINK_INTERFACE_LIBRARIES_<CONFIG> are always ignored for this target type. The name of the INTERFACE_LIBRARY must match a validity generator expression. The validity is similar to that of an ALIAS target, but with the additional restriction that it may not contain double colons. Double colons will carry the meaning of IMPORTED or ALIAS targets in CMake 2.8.13. An ALIAS target may be created for an INTERFACE library. At this point it can not be exported and does not appear in the buildsystem and project files are not created for them. That may be added as a feature in a later commit. The generators need some changes to handle the INTERFACE_LIBRARY targets returned by cmComputeLinkInterface::GetItems. The Ninja generator does not use that API, so it doesn't require changes related to that.
* | Fix resetting the compiler on the command line (#14366).Stephen Kelly2013-08-191-2/+10
|/ | | | | | | | Convert the incoming value to a path in the same way that the already-cached value was converted before comparison. Do the actual comparison only one time, after both values are normalized.
* Add the ALIAS target concept for libraries and executables.Stephen Kelly2013-08-021-2/+24
| | | | | | | | | | | | | | | | | * The ALIAS name must match a validity regex. * Executables and libraries may be aliased. * An ALIAS acts immutable. It can not be used as the lhs of target_link_libraries or other commands. * An ALIAS can be used with add_custom_command, add_custom_target, and add_test in the same way regular targets can. * The target of an ALIAS can be retrieved with the ALIASED_TARGET target property. * An ALIAS does not appear in the generated buildsystem. It is kept separate from cmMakefile::Targets for that reason. * A target may have multiple aliases. * An ALIAS target may not itself have an alias. * An IMPORTED target may not have an alias. * An ALIAS may not be exported or imported.
* Merge topic 'tid-system-argument'Brad King2013-07-161-0/+11
|\ | | | | | | | | | | | | | | | | | | 9cf3547 Add the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property. 1925cff Add a SYSTEM parameter to target_include_directories (#14180) 286f227 Extend the cmTargetPropCommandBase interface property handling. 83498d4 Store system include directories in the cmTarget. f1fcbe3 Add Target API to determine if an include is a system include. 2679a34 Remove unused variable.
| * Add the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property.Stephen Kelly2013-07-161-0/+11
| | | | | | | | | | | | | | | | Unlike other target properties, this does not have a corresponding non-INTERFACE variant. This allows propagation of system attribute on include directories from link dependents.
* | Merge topic 'compile-defs-debugging'Brad King2013-07-151-3/+10
|\ \ | | | | | | | | | | | | | | | | | | | | | d7dd010 Add target property debugging for COMPILE_DEFINITIONS 1841215 Refactor cmTarget::GetCompileDefinitions to use an out-vector, not a string. afc9243 Add an overload of cmIDEOptions::AddDefines taking a vector of strings. d95651e Overload cmLocalGenerator::AppendDefines to add a list.
| * | Add target property debugging for COMPILE_DEFINITIONSStephen Kelly2013-07-121-3/+10
| |/ | | | | | | | | | | | | Use constructs similar to those for COMPILE_OPTIONS. This is a little different because there is a command to remove_definitions(), so we can't populate the equivalent target property until generate-time in cmGlobalGenerator.
* | cmake: On configure error suggest looking at CMake*.log filesBrad King2013-07-091-3/+19
|/ | | | | | | | | | When CMake reports failure to configure a project, especially when the toolchain does not initialize properly, the true reason may be clear from reading the CMakeFiles/CMake(Output|Error).log files. Advise users to look at these files if they exist when configuration fails. Add RunCMake.Configure test to check that the log files are mentioned when configuration fails.
* Add whitespace after colons in error messages.Stephen Kelly2013-06-211-7/+7
|
* Fix indentation.Stephen Kelly2013-05-291-1/+1
|
* Merge topic 'genex-generate-file'Brad King2013-05-281-0/+51
|\ | | | | | | | | b983a58 file: Add GENERATE command to produce files at generate time
| * file: Add GENERATE command to produce files at generate timeStephen Kelly2013-05-241-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The idea is to write to a temp file which contains generator expressions, and at generate time, evaluate the generator expressions, and write the result to a file. Because executables on Windows are limited in the length of command line it is possible to use, it is common to write command line arguments to a file instead and specify the file as a source of arguments. This new FILE(GENERATE) subcommand allows the use of generator expressions to create such files so that they can be used with add_custom_command for example.
* | Merge topic 'doc-improvements'Brad King2013-05-161-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7cc2805 Docs: Clarify wording "flag used" => "flag (to|will) be used" 2378a69 Docs: Clarify that CMAKE_*_(PREFIX|SUFFIX) affect filenames 56ca34d Docs: Update description of CMAKE_(BUILD_TYPE|CONFIGURATION_TYPES) 2bab472 VS10: add detailed comment about MIDL processing e619111 Explain distribution of Win9x binary on all Windows versions. 5ca4336 FindwxWidgets: add DOC strings with usual style f57800d Fix spelling and typos (product names) bf019d7 Fix spelling and typos (non-binary) ddac8d3 Fix spelling and typos (affecting binary data / module messages) 86832ce Fix spelling and typos (affecting users)
| * | Fix spelling and typos (affecting binary data / module messages)Andreas Mohr2013-05-071-1/+1
| |/
* | Add projectDir parameter to GenerateBuildCommandPetr Kmoch2013-04-121-5/+7
|/ | | | | | | | Extend the cmGlobalGenerator::GenerateBuildCommand virtual method signature with a "projectDir" parameter specifying the top of the project build tree for which the build command will be generated. Populate it from call sites in cmGlobalGenerator::Build where a fully-generated build tree should be available.
* Merge topic 'fix-automoc-no-qt'Brad King2013-03-131-2/+4
|\ | | | | | | | | | | a223a3b Automoc: Don't create automoc targets if Qt is not used (#13999) 65b5c1e Merge branch 'property-link-depends-no-crash' into fix-automoc-no-qt
| * Automoc: Don't create automoc targets if Qt is not used (#13999)Stephen Kelly2013-03-121-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 79568f95 (automoc: Add source file to target early to set the linker language, 2013-02-20) changed automoc initialization to a two step process. In the first step, the generated source file was added to the target, which allows the link language to be determined. However, this bypassed the check for the availability of Qt itself. At build-time the automoc file could not be generated because the moc tool was not available to create it. The solution is to only add the automoc file to the target if Qt is found.