281 Commits

Author SHA1 Message Date
Stephen Kelly
482b3811e4 cmTarget: Move link type enum out.
Remove a reason for generate time code to depend on the cmTarget header/type.
2015-10-15 00:41:22 +02:00
Stephen Kelly
983c00f8f9 Generators: Use GetType from the cmGeneratorTarget. 2015-10-15 00:41:19 +02:00
Stephen Kelly
2293d43d00 cmLocalGenerator: Store cmGeneratorTargets.
Relieve cmMakefile of this responsibility.
2015-10-14 13:32:09 -04:00
Stephen Kelly
1583440509 cmGeneratorExpression: Port interface to cmGeneratorTarget. 2015-10-12 23:07:46 +02:00
Stephen Kelly
11165525ba cmGeneratorExpression: Port to cmLocalGenerator. 2015-10-12 23:07:46 +02:00
Stephen Kelly
ce75c86ec3 cmGeneratorTarget: Move GetSupportDirectory from cmTarget. 2015-10-12 18:39:59 +02:00
Stephen Kelly
526cc7dc52 cmGeneratorTarget: Move HasImportLibrary from cmTarget. 2015-10-12 18:39:59 +02:00
Stephen Kelly
8d2e3e53b9 cmGeneratorTarget: Move HasImplibGNUtoMS from cmTarget. 2015-10-12 18:39:59 +02:00
Stephen Kelly
993aace78a cmGeneratorTarget: Port processILibs to cmGeneratorTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
43ade99577 cmGeneratorTarget: Port getTypedProperty to cmGeneratorTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
5fd2f43f64 cmGeneratorTarget: Port handleSystemIncludesDep to cmGeneratorTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
f7acd74215 cmGeneratorTarget: Port LinkImplClosure to cmGeneratorTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
ceb35b63a7 cmLinkItem: Port to cmGeneratorTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
bf2d061ad3 cmGeneratorTarget: Move FindTargetToLink from cmTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
61c02decce cmHeadToLinkInterfaceMap: Port to cmGeneratorTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
9ca4cae51e cmGeneratorTarget: Move GetUtilityItems from cmTarget. 2015-10-12 18:39:58 +02:00
Stephen Kelly
c7645fca12 cmComputeLinkInformation: Port data interface to cmGeneratorTarget. 2015-10-12 18:39:58 +02:00
Brad King
aad0e62060 Merge topic 'use-generator-target'
1c1c2a12 cmGeneratorTarget: Port ExpandLinkItems away from cmTarget.
c66084f5 cmGeneratorTarget: Port GetImportLinkInterface away from cmTarget.
83c29e39 cmGeneratorTarget: Port ComputeLinkImplementationLibraries away from cmTarget.
19882554 cmGeneratorTarget: Port handleSystemIncludesDep away from cmTarget.
c1f687b1 cmGeneratorTarget: Port GetLinkImplementationLibrariesInternal.
a6e1f05c cmGeneratorTarget: Port ComputeLinkInterface away from cmTarget.
654002fe cmGeneratorTarget: Port ComputeLinkInterfaceLibraries away from cmTarget.
922c8901 cmGeneratorTarget: Port GetLinkInterface away from cmTarget.
eaa5b9cb cmGeneratorTarget: Port cmTargetCollectLinkLanguages away from cmTarget.
f539da12 cmGeneratorTarget: Port GetLinkInterfaceLibraries away from cmTarget.
1c5d70f9 cmGeneratorTarget: Port processILibs away from cmTarget.
064c2488 cmComputeLinkDepends: Port some API to cmGeneratorTarget.
3e428fdc cmGeneratorTarget: Move IsImportedSharedLibWithoutSOName from cmTarget.
110fd2fb cmGeneratorTarget: Move GetOutputTargetType from cmTarget.
e7391699 cmGeneratorTarget: Move HasMacOSXRpathInstallNameDir from cmTarget.
c5718217 cmGeneratorTarget: Move HaveInstallTreeRPATH from cmTarget.
...
2015-10-12 10:26:20 -04:00
Stephen Kelly
1c1c2a1201 cmGeneratorTarget: Port ExpandLinkItems away from cmTarget. 2015-10-10 17:06:56 +02:00
Stephen Kelly
c66084f5d7 cmGeneratorTarget: Port GetImportLinkInterface away from cmTarget. 2015-10-10 11:22:41 +02:00
Stephen Kelly
83c29e3903 cmGeneratorTarget: Port ComputeLinkImplementationLibraries away from cmTarget. 2015-10-10 11:22:27 +02:00
Stephen Kelly
1988255448 cmGeneratorTarget: Port handleSystemIncludesDep away from cmTarget. 2015-10-10 11:22:27 +02:00
Stephen Kelly
c1f687b1ad cmGeneratorTarget: Port GetLinkImplementationLibrariesInternal. 2015-10-10 11:22:20 +02:00
Stephen Kelly
a6e1f05c15 cmGeneratorTarget: Port ComputeLinkInterface away from cmTarget. 2015-10-10 11:21:11 +02:00
Stephen Kelly
654002feb8 cmGeneratorTarget: Port ComputeLinkInterfaceLibraries away from cmTarget. 2015-10-10 11:21:09 +02:00
Stephen Kelly
922c89014f cmGeneratorTarget: Port GetLinkInterface away from cmTarget. 2015-10-10 11:20:30 +02:00
Stephen Kelly
eaa5b9cbb1 cmGeneratorTarget: Port cmTargetCollectLinkLanguages away from cmTarget. 2015-10-10 11:14:32 +02:00
Stephen Kelly
f539da126b cmGeneratorTarget: Port GetLinkInterfaceLibraries away from cmTarget. 2015-10-10 11:14:31 +02:00
Stephen Kelly
1c5d70f9c2 cmGeneratorTarget: Port processILibs away from cmTarget. 2015-10-10 11:14:31 +02:00
Stephen Kelly
3e428fdcb4 cmGeneratorTarget: Move IsImportedSharedLibWithoutSOName from cmTarget. 2015-10-10 11:03:48 +02:00
Stephen Kelly
110fd2fba1 cmGeneratorTarget: Move GetOutputTargetType from cmTarget. 2015-10-10 11:03:48 +02:00
Stephen Kelly
e73916992c cmGeneratorTarget: Move HasMacOSXRpathInstallNameDir from cmTarget. 2015-10-10 11:03:48 +02:00
Stephen Kelly
c5718217ad cmGeneratorTarget: Move HaveInstallTreeRPATH from cmTarget. 2015-10-09 01:04:38 +02:00
Stephen Kelly
bf5eb4a3f3 cmGeneratorTarget: Move ComputePDBOutputDir from cmTarget. 2015-10-09 01:04:38 +02:00
Stephen Kelly
49017cddab cmGeneratorTarget: Move IsNullImpliedByLinkLibraries from cmTarget. 2015-10-09 01:04:38 +02:00
Stephen Kelly
0bae4a416f cmGeneratorTarget: Move output info from cmTarget. 2015-10-09 01:04:38 +02:00
Stephen Kelly
1abc20d81d cmGeneratorTarget: Move UsesDefaultOutputDir from cmTarget. 2015-10-09 01:04:38 +02:00
Stephen Kelly
50dc9b4440 cmGeneratorTarget: Move GetPDBDirectory from cmTarget. 2015-10-09 01:04:37 +02:00
Stephen Kelly
8b0168863e cmGeneratorTarget: Move GetDirectory from cmTarget. 2015-10-09 01:04:37 +02:00
Stephen Kelly
ee44be22cb cmGeneratorTarget: Use local GetProperty method. 2015-10-09 00:07:55 +02:00
Stephen Kelly
df42dbb355 cmGeneratorTarget: Move link implementation from cmTarget. 2015-10-08 23:41:29 +02:00
Stephen Kelly
370bb92c10 cmGeneratorTarget: Issue messages through the local generator. 2015-10-08 23:41:27 +02:00
Stephen Kelly
dce6581b7b cmGeneratorTarget: Move computed sources from cmTarget. 2015-10-07 08:37:58 +02:00
Stephen Kelly
7b6dc0fe45 cmGeneratorTarget: Inline GetSourceFiles from cmTarget. 2015-10-07 08:37:58 +02:00
Stephen Kelly
33f87bb1f5 cmGeneratorTarget: Move AddInterfaceEntries method.
It will be needed here in a follow-up commit.
2015-10-07 08:37:57 +02:00
Stephen Kelly
64f73150b8 cmTarget: Add API for generate-time source addition.
This method is a refactoring artifact.  It will be removed in a
follow-up.
2015-10-07 08:37:57 +02:00
Stephen Kelly
c38e30f68c cmGeneratorTarget: Add methods for generate-time source addition. 2015-10-07 08:37:57 +02:00
Stephen Kelly
5d3776a7eb Access sources through cmGeneratorTarget. 2015-10-07 08:37:56 +02:00
Stephen Kelly
bf28b7874b cmGeneratorTarget: Rename internal member.
Leave the old name available for another use.
2015-10-06 20:16:20 +02:00
Stephen Kelly
9bc6eb8e1f cmGlobalGenerator: Initialize generator targets on construction (#15729)
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.
2015-09-29 09:56:34 -04:00