summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* cmGlobalGenerator: Initialize generator targets on construction (#15729)Stephen Kelly2015-09-291-15/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Ninja generator and Visual Studio generators are special-cased for the QtAutogen feature. In order to reduce the number of custom targets, the Visual Studio generators prefer to create custom commands instead, and in order to create appropriate Ninja files, generated rcc files are listed as byproducts. This requires the use of the GetConfigCommonSourceFiles API of the cmGeneratorTarget for those generators when initializing the autogen target. The initializer method is called from Compute() after the cmGeneratorTarget objects are created, however the initialization of the object directory occurs later in the InitGeneratorTargets method. That means that the resulting object locations are computed incorrectly and cached before the object directory is determined, so the generated buildsystem can not find the object files. The initialization of the object directory was split from the creation of cmGeneratorTarget instances in commit 0e0258c8 (cmGlobalGenerator: Split creation of generator object from initialization., 2015-07-25). The motivation for the split was to do only what is essential to do early in cases where cmGeneratorTargets need to be created at configure-time. That is required for the purpose of implementing policies CMP0024 and CMP0026, and for try_compile(LINK_LIBRARIES). However, the split was not really necessary. Compute the object directory in the cmGeneratorTarget constructor instead. The QtAutogen unit test already tests the use of TARGET_OBJECTS with AUTOMOC, and that test already passes on Ninja. The reason it already passes is that the QtAutogen target also uses the AUTORCC feature, and specifies several qrc files in its SOURCES. Later in the Compute algorithm (after the InitGeneratorTargets call), the rcc files are determined and target->AddSource is called. The AddSource call clears the previously mentioned cache of source files, causing it to be regenerated when next queried, this time taking account of the object directory. Extend the test suite with a new target which does not make use of AUTORCC with qrc files so that the test added alone would break without the fix in this commit.
* QtAutogen: Split initializer class into separate file.Stephen Kelly2015-09-291-1/+1
|
* QtAutogen: Split initializer methods into separate class.Stephen Kelly2015-09-261-3/+3
|
* QtAutogen: Simplify generator initialization API.Stephen Kelly2015-09-261-10/+11
|
* QtAutogen: Remove unnecessary dereference.Stephen Kelly2015-09-261-3/+3
|
* QtAutogen: Move Source initialization to prior loop.Stephen Kelly2015-09-261-2/+1
| | | | | | | | Ensure that all targets have their _automoc.cpp before attempting to initialize the autogen target. The initialization evaluates generator expressions for target sources, and must include the _automoc.cpp of object library dependents in order for TARGET_OBJECTS to include the object file for the corresponding _automoc.cpp file.
* QtAutogen: Add _automoc.cpp sources before initializing.Stephen Kelly2015-09-261-0/+1
|
* QtAutogen: Move initialization condition to caller.Stephen Kelly2015-09-261-6/+16
|
* QtAutogen: Move condition to prior loop.Stephen Kelly2015-09-261-10/+12
|
* QtAutogen: Move condition to prior loop.Stephen Kelly2015-09-261-15/+16
|
* QtAutogen: Make some methods static.Stephen Kelly2015-09-261-3/+3
|
* cmLocalGenerator: Compute object max path on construction.Stephen Kelly2015-09-241-5/+0
|
* cmGlobalGenerator: Create all local generators after Configure().Stephen Kelly2015-09-241-1/+1
|
* cmGlobalGenerator: Remove unused method.Stephen Kelly2015-09-241-6/+0
|
* cmGlobalGenerator: Create local generators after all makefiles configured.Stephen Kelly2015-09-241-2/+13
|
* cmGlobalGenerator: Create local generator after configuring the makefile.Stephen Kelly2015-09-241-2/+2
|
* cmGlobalGenerator: Add API for the configure step being finished.Stephen Kelly2015-09-181-0/+5
|
* Windows: Set CMAKE_HOST_SYSTEM_VERSION with three componentsGilles Khouzam2015-09-111-5/+8
| | | | | Call GetVersionEx with OSVERSIONINFOEX instead of OSVERSIONINFO so that we can get the dwBuildNumber as a third version component.
* Merge topic 'revert-fix-windows-version-detection'Brad King2015-09-111-46/+10
|\ | | | | | | | | 4c7744c8 Revert "Windows: Fix CMAKE_HOST_SYSTEM_VERSION on Windows >= 8.1 (#15674)"
| * Revert "Windows: Fix CMAKE_HOST_SYSTEM_VERSION on Windows >= 8.1 (#15674)"Brad King2015-09-101-46/+10
| | | | | | | | | | | | | | | | This reverts commit d4736d53cd61f2cbbb36bec682663b74b01dddce. RtlGetVersion is a private API not meant for public use. Another solution to detecting the Windows version will be needed. Reported-by: Gilles Khouzam <Gilles.Khouzam@microsoft.com>
* | Merge topic 'fix-ios-install'Brad King2015-09-011-1/+11
|\ \ | | | | | | | | | | | | | | | | | | ad262917 Xcode: Add unit test for iOS project install (#12506) 48fe617e Fix installation of iOS targets (#12506) d2c2319d Replace CMAKE_XCODE_EFFECTIVE_PLATFORMS with call to PlatformIsAppleIos
| * | Fix installation of iOS targets (#12506)Gregor Jasny2015-08-251-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since cmTarget::ComputeOutputDir results can be used in CMake code of script cmake_install.cmake and in Xcode internals, string ${EFFECTIVE_PLATFORM_NAME} should be used instead of $(EFFECTIVE_PLATFORM_NAME) because it works for both. Value of CMAKE_CFG_INTDIR can't be used in BUILD_TYPE argument of install command since it contains $(EFFECTIVE_PLATFORM_NAME) (e.g. equals to `Release-iphoneos`, `Debug-iphoneos`, etc.).
* | | Merge topic 'refactor-compute'Brad King2015-08-311-5/+4
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 616d8f02 cmGeneratorTarget: Rename method to match operation. ec56d244 cmGlobalGenerator: Process evaluation files after target depends. 1e5349a5 cmGlobalGenerator: Access makefile from makefiles container.
| * | | cmGeneratorTarget: Rename method to match operation.Stephen Kelly2015-08-301-1/+1
| | | | | | | | | | | | | | | | | | | | The manifest is computed, not generated, according to current language used in cmake method naming.
| * | | cmGlobalGenerator: Process evaluation files after target depends.Stephen Kelly2015-08-291-2/+2
| | | | | | | | | | | | | | | | No need to generate the files if computation aborts generation.
| * | | cmGlobalGenerator: Access makefile from makefiles container.Stephen Kelly2015-08-291-2/+1
| | | |
* | | | cmGlobalGenerator: Create global targets directly after Configure.Stephen Kelly2015-08-281-19/+16
| | | |
* | | | cmGlobalGenerator: Fill the project map at compute time.Stephen Kelly2015-08-281-4/+4
| | | |
* | | | cmGlobalGenerator: Rename method.Stephen Kelly2015-08-281-2/+2
| | | |
* | | | cmGlobalGenerator: Avoid cmLocalGenerator until after Configure.Stephen Kelly2015-08-281-4/+4
| | | |
* | | | cmLocalGenerator: Create from already-constructed cmMakefile.Stephen Kelly2015-08-281-6/+7
| | | | | | | | | | | | | | | | Don't manage the lifetime of the cmMakefile with cmLocalGenerator.
* | | | cmGlobalGenerator: Remove MakeLocalGenerator method.Stephen Kelly2015-08-281-7/+1
| | | | | | | | | | | | | | | | Inline implementation to callers.
* | | | cmGlobalGenerator: Require a snapshot to create a local generator.Stephen Kelly2015-08-281-6/+2
| | | |
* | | | cmLocalGenerator: Remove Parent pointer.Stephen Kelly2015-08-281-6/+4
|/ / /
* | | Merge topic 'use-generator-target'Brad King2015-08-271-1/+0
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2b7336f cmGeneratorTarget: Move GetConfigCommonSourceFiles from cmTarget. 69329fff cmGeneratorTarget: Move GetLanguages from cmTarget. 0431f2c4 cmGeneratorTarget: Move ComputeLinkImplementationLanguages from cmTarget. abe9505d cmGeneratorTarget: Move HaveBuildTreeRPath from cmTarget. d4a24c0e cmGeneratorTarget: Move GetLinkImplementation from cmTarget. 83981cf5 cmTarget: Add GetLinkImplMap method. 771e79a2 cmLinkItem: Add cmOptionalLinkImplementation type. 3846ebcf cmLinkItem: Add cmLinkImplementation type. a7f5d70d cmGeneratorTarget: Move compile defintions processing from cmTarget. d051086c cmGeneratorTarget: Move compile features processing from cmTarget. db4cb92b cmGeneratorTarget: Move compile options processing from cmTarget. e6ccbf6f cmGeneratorTarget: Move include directory processing from cmTarget. 8bfb0c53 cmGeneratorTarget: Move link iface helpers from cmTarget. 2cb3e574 cmGeneratorTarget: Move GetImportLinkInterface from cmTarget. 6d3d099b cmGeneratorTarget: Move ComputeLinkInterfaceLibraries from cmTarget. 0db9d927 cmGeneratorTarget: Move GetLinkInterfaceLibraries from cmTarget. ...
| * | | cmGeneratorTarget: Move compile defintions processing from cmTarget.Stephen Kelly2015-08-261-1/+0
| |/ /
* | | Merge topic 'cmState-ProjectName'Brad King2015-08-271-5/+6
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 637c56b4 cmGlobalGenerator: Implement FillProjectMap in terms of cmState. b3f2299e cmState: Move ProjectName from cmMakefile. 6ce940ac cmMakefile: Use std::string in ProjectName API. e8c0341d cmMakefile: Out-of-line GetProjectName.
| * | | cmGlobalGenerator: Implement FillProjectMap in terms of cmState.Stephen Kelly2015-08-251-5/+6
| |/ /
* | | cmGlobalGenerator: Extract new IsExcluded overload.Stephen Kelly2015-08-241-6/+14
| | |
* | | cmGlobalGenerator: Implement IsExcluded in terms of cmState::Snapshot.Stephen Kelly2015-08-241-5/+6
| | |
* | | cmGlobalGenerator: Convert IsExcluded to loop.Stephen Kelly2015-08-241-18/+14
| | |
* | | cmGlobalGenerator: Refactor IsExcluded.Stephen Kelly2015-08-241-2/+10
| | | | | | | | | | | | Make it easier to convert it to a loop.
* | | cmGlobalGenerator: Don't use else after return.Stephen Kelly2015-08-241-6/+3
|/ /
* | cmGlobalGenerator: Rename progress initializer method.Stephen Kelly2015-08-231-1/+1
| |
* | cmGlobalGenerator: Move LG to target map to subclass.Stephen Kelly2015-08-231-44/+0
| | | | | | | | This is the only user.
* | cmGlobalGenerator: Remove clearance of map.Stephen Kelly2015-08-231-1/+0
| | | | | | | | It is always cleared before being re-populated.
* | Merge topic 'global-generator-makefiles'Brad King2015-08-111-23/+45
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6d8a125e cmQtAutoGenerators: Prefer a generator to access global generator. 5f66900e cmGlobalGenerator: Port Find API to cmMakefile. c5b8841f cmGlobalGenerator: Create global targets from cmMakefiles. 8f75ea3b cmGlobalGenerator: Port global target creation to cmMakefile. 56f0540b cmGlobalGenerator: Port Configure-time check to cmMakefile. 19b546ef cmGlobalGenerator: Base final target property computation on Makefiles. f8be9ba9 cmGlobalGenerator: Base progress on Makefiles, not LocalGenerators. bc1097e3 cmExportLibraryDependenciesCommand: Port to cmMakefile. 204aecdf cmGlobalGenerator: Port configure-time code to cmMakefile. 3dd6f0a5 cmake: Port configure-time code to cmMakefile. 73e4df99 cmGlobalGenerator: Store a container of cmMakefiles. 19369937 cmGeneratorTarget: Port internal type to cmGeneratorTarget. 32f131b0 cmGeneratorTarget: Prefer the local generator to access the global.
| * | cmGlobalGenerator: Port Find API to cmMakefile.Stephen Kelly2015-08-071-0/+14
| | |
| * | cmGlobalGenerator: Create global targets from cmMakefiles.Stephen Kelly2015-08-071-2/+2
| | |
| * | cmGlobalGenerator: Port global target creation to cmMakefile.Stephen Kelly2015-08-071-1/+1
| | |