summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.h
Commit message (Collapse)AuthorAgeFilesLines
* Remove extra semicolons from C++ code.Stephen Kelly2014-04-031-1/+1
| | | | | Clang based tools running over the code complain about these, but clang has a fixit for removing them.
* cmGeneratorTarget: Compute target objects on demandStephen Kelly2014-04-021-2/+0
| | | | | | | | | | | | | | | | | | | | | Add a ComputeObjectMapping method to compute the object names. It takes mapping to populate as an out-parameter so that it can be extended in the future with parameters relevant to generator expression evaluation. Remove the supporting cmGeneratorTarget::AddObject method. It is no longer needed as the container member is populated directly. The ComputeObjectMapping method is called whenever objects are requested from the cmGeneratorTarget. Because the Xcode generator makes no such request, explicitly invoke the method from that generator so that the logic of checking for bad sources in object libraries is executed. In a follow-up, the UseObjectLibraries usage may be replaced by a true generator expression evaluator for TARGET_OBJECTS. That will require generators to use cmGeneratorTarget::GetExternalObjects which is not currently the case for Xcode and VS generators.
* cmGlobalGenerator: Add interface to call ForceLinkerLanguagesStephen Kelly2014-03-311-0/+2
| | | | | Avoid calling it too early when cmGeneratorTarget instances don't yet exist.
* cmGlobalGenerator: Make ComputeTargetObjects non-virtualStephen Kelly2014-03-151-1/+1
| | | | | | | | Implement it in terms of the ComputeObjectFilenames virtual method on the local generators. Remove the reimplementation from the global generators which are now all functionally identical.
* cmGlobalGenerator: Extract a ComputeTargetObjectDirectory interface.Stephen Kelly2014-03-131-0/+2
| | | | Make it public for future external calls.
* stringapi: Use strings for program pathsBen Boeckel2014-03-081-4/+4
|
* stringapi: Use strings for generator namesBen Boeckel2014-03-081-4/+4
|
* stringapi: Use strings for directoriesBen Boeckel2014-03-081-3/+3
|
* stringapi: Miscellaneous char* parametersBen Boeckel2014-03-081-4/+4
|
* stringapi: Pass configuration names as stringsBen Boeckel2014-03-081-5/+5
|
* strings: Remove cmStdString referencesBen Boeckel2014-03-081-23/+23
| | | | | | | | | | | 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.
* cmTarget: Remove the project argument to FindTargetBen Boeckel2014-03-081-1/+1
| | | | All callers passed 0 in, so just remove the branch.
* stringapi: Use strings for VS project namesBen Boeckel2014-03-081-4/+4
|
* stringapi: Use strings for AddSubdirectory pathsBen Boeckel2014-03-081-1/+1
|
* stringapi: Use strings in target nameBen Boeckel2014-03-081-9/+10
|
* stringapi: Use strings for the languagesBen Boeckel2014-03-081-10/+11
|
* cmTarget: Find source files on request.Stephen Kelly2014-02-241-1/+0
| | | | | | 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().
* OS X: Make sure RPATHs are unique to avoid possible corruption.Clinton Stimpson2014-02-031-0/+4
| | | | | | | | When using link_directories() and including CMAKE_CFG_INTDIR, one can end up with duplicate RPATHs in the binary which install_name_tool cannot fix without corrupting the binary. Also, the cmake_install.cmake file has been fixed to correctly handle these generator specific variables.
* Merge topic 'constify'Brad King2014-01-131-15/+15
|\ | | | | | | | | | | | | | | | | 2cbf0311 cmGlobalGenerator: Make SelectMakeProgram const. b4ff38a5 cmGlobalGenerator: Make CheckALLOW_DUPLICATE_CUSTOM_TARGETS const 8aeddf1f cmGlobalGenerator: Make some API const. 8fd0f2a7 cmGeneratorTarget: Hold a const global generator. 46315320 cmComputeLinkDepends: Hold a const global generator.
| * cmGlobalGenerator: Make SelectMakeProgram const.Stephen Kelly2014-01-121-4/+4
| |
| * cmGlobalGenerator: Make CheckALLOW_DUPLICATE_CUSTOM_TARGETS constStephen Kelly2014-01-121-1/+1
| |
| * cmGlobalGenerator: Make some API const.Stephen Kelly2014-01-121-10/+10
| |
* | cmake: Future-proof --find-package mode.Stephen Kelly2014-01-131-0/+2
|/ | | | | | | | | Create cmGeneratorTargets before generating generate-time information. C++ interfaces for querying build information is increasingly only available at generate time through the cmGeneratorTarget class. Ensure that the required cmGeneratorTarget instances are created. Use the cmGlobalGenerator access API to access the relevant cmGeneratorTarget instead of creating a temporary one on the stack.
* Don't allow include() of export(EXPORT) file at configure time.Stephen Kelly2014-01-061-0/+2
| | | | | | | | | As a new feature it does not need to participate in CMP0024. Store cmExportBuildFileGenerator instances which correspond to the export(EXPORT) signature in a second map which does not own the pointers. This avoids the need to add cmExportBuildFileGenerator and dependencies to the bootstrap system.
* Merge topic 'rpath-default'Brad King2014-01-021-0/+5
|\ | | | | | | | | d25ad48 OS X: Add CMP0042 to enable MACOSX_RPATH by default
| * OS X: Add CMP0042 to enable MACOSX_RPATH by defaultClinton Stimpson2014-01-021-0/+5
| | | | | | | | | | Also adding documentation for CMAKE_MACOSX_RPATH, and improving documentation for MACOSX_RPATH.
* | Constify autogen handling.Stephen Kelly2013-12-111-1/+2
| |
* | Constify cmGeneratorTarget access.Stephen Kelly2013-12-111-1/+1
| |
* | Constify handling of target dependencies.Stephen Kelly2013-12-111-5/+7
|/
* cmGlobalGenerator: Make NameResolvesToFramework const.Stephen Kelly2013-11-191-2/+2
|
* cmMakefile: Make IsAlias const.Stephen Kelly2013-11-191-1/+1
|
* Merge topic 'cleanup-build-commands'Brad King2013-11-191-6/+15
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4cce44b Help: Document the CMAKE_MAKE_PROGRAM variable in more detail 558c74d VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generators 5229f2d Tests: Do not use an explicit make program for VS generators 72dd738 Tests: Fix MFC test heuristic for empty CMAKE_TEST_MAKEPROGRAM fd6076d Tests: Pass CMAKE_MAKE_PROGRAM instead of --build-makeprogram 68031ab Tests: Configure SubProject-Stage2 test more robustly 003d10c Tests: Simplify VSExcludeFromDefaultBuild configuration e47d934 Tests: Simplify VSProjectInSubdir configuration e965cb1 Tests: Simplify CTest.BuildCommand.ProjectInSubdir configuration 72bf255 Tests: Pass --build-options to every test 4d1d772 ctest: Teach --build-options to allow zero options 96966b5 ctest: Make the --build-makeprogram optional for --build-and-test 91a0211 Simplify some calls to cmGlobalGenerator::Build 123a060 Teach GenerateBuildCommand to find its own make program 5f5c92b VS: Add internal APIs to find MSBuild, devenv/VCExpress, and msdev 4ac75fd Prefer CMAKE_MAKE_PROGRAM over CMAKE_BUILD_TOOL (#14548) ...
| * VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generatorsBrad King2013-11-181-1/+1
| | | | | | | | | | | | | | | | Drop the "Modules/CMakeVS*FindMake.cmake" files. Override the cmGlobalGenerator::FindMakeProgram method for VS generators to use their internal APIs to locate the build tool. Set the CMAKE_MAKE_PROGRAM as a normal variable for use by project code, but do not cache it. This will allow CMake and CTest to select the proper tool at build time.
| * Teach GenerateBuildCommand to find its own make programBrad King2013-11-181-0/+2
| | | | | | | | | | | | | | | | Add a cmGlobalGenerator::SelectMakeProgram method to select a caller-provided make program, the CMAKE_MAKE_PROGRAM cache entry, or a generator-provided default. Call it from all implementations of the GenerateBuildCommand method with the corresponding generator's default, if any.
| * cmGlobalGenerator: Cleanup GenerateBuildCommand APIBrad King2013-11-181-5/+5
| | | | | | | | | | | | | | | | | | 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/+7
| | | | | | | | | | | | 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.
* | CMP0037: Extend policy to reserved names and custom targetsNils Gladitz2013-11-191-0/+2
|/ | | | | | | | Teach add_custom_target to check the policy too. Extend the policy to disallow reserved target names that we use for builtin targets like "all". Extend the RunCMake.CMP0037 test to cover these cases.
* Refactor tool selection for edit_cache (#14544)Brad King2013-11-121-0/+3
| | | | | | | | | 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.
* cmGlobalGenerator: Do not propagate const through GetCMakeInstanceBrad King2013-11-121-2/+1
| | | | | Combine the const and non-const GetCMakeInstance to a const one and return a pointer to non-const cmake from it.
* cmGlobalGenerator: Rename the FinalizeCompileDefinitions method.Stephen Kelly2013-11-071-1/+1
| | | | This will soon also finalize include directories.
* Merge topic 'refactor-autogen-setup'Brad King2013-11-061-1/+3
|\ | | | | | | | | | | | | | | 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-1/+3
| | | | | | | | | | | | | | | | 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.
* | Merge topic 'clear-generator-data'Brad King2013-11-061-1/+2
|\ \ | |/ |/| | | | | 5cf1120 cmGlobalGenerator: Refactor member cleanup between configures
| * cmGlobalGenerator: Refactor member cleanup between configuresBrad King2013-11-051-1/+2
| | | | | | | | | | | | 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-0/+1
|\ \ | |/ |/| | | | | 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-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 'vs-generator-names'Brad King2013-10-311-0/+4
|\ \ | | | | | | | | | | | | 29071fe VS: Add version year to generator names
| * | VS: Add version year to generator namesBrad King2013-10-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename the Visual Studio >= 10 generators to indicate the version year: Visual Studio 10 => Visual Studio 10 2010 Visual Studio 11 => Visual Studio 11 2012 Visual Studio 12 => Visual Stduio 12 2013 Report the names with the year to the list of available generators so that the cmake-gui drop-down shows the years. When selecting a generator from the "-G" option or from an existing CMAKE_GENERATOR cache entry, recognize names without the years for compatibility and map them to the names with years. Update the generator names in the cmake-generators.7 manual.
* | | Merge topic 'use-generator-target'Brad King2013-10-301-0/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 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-0/+1
| | | | | | | | | | | | | | | | | | | | As the generate-time-related API is moving to cmGeneratorTarget, almost all of generation code needs to be able to access instances of it.