Stephen Kelly
df42dbb355
cmGeneratorTarget: Move link implementation from cmTarget.
2015-10-08 23:41:29 +02:00
Stephen Kelly
af71c7b479
cmTarget: Remove Compute method.
2015-10-07 20:17:55 +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
776ff8eb0b
cmTarget: Add Compute API for sources.
...
This method is a refactoring artifact. It will be removed in a
follow-up.
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
Chuck Atkins
9784af1b50
CMP0065: Restrict the use of CMAKE_SHARED_LIBRARY_LINK_<LANG>_FLAGS
...
This new policy restricts the addition of the shared library link flags
to executables only when the ENABLE_EXPORTS property is set to True.
2015-09-21 10:12:13 -04:00
Brad King
27e4b21dfa
Merge topic 'use-generator-target'
...
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.
...
2015-08-27 10:07:32 -04:00
Stephen Kelly
c2b7336ff3
cmGeneratorTarget: Move GetConfigCommonSourceFiles from cmTarget.
2015-08-26 19:46:33 +02:00
Stephen Kelly
69329fff70
cmGeneratorTarget: Move GetLanguages from cmTarget.
2015-08-26 19:46:32 +02:00
Stephen Kelly
0431f2c4d7
cmGeneratorTarget: Move ComputeLinkImplementationLanguages from cmTarget.
2015-08-26 19:46:32 +02:00
Stephen Kelly
abe9505df9
cmGeneratorTarget: Move HaveBuildTreeRPath from cmTarget.
2015-08-26 19:46:32 +02:00
Stephen Kelly
d4a24c0e95
cmGeneratorTarget: Move GetLinkImplementation from cmTarget.
2015-08-26 19:46:32 +02:00
Stephen Kelly
83981cf593
cmTarget: Add GetLinkImplMap method.
...
This is a temporary refactoring artifact.
2015-08-26 19:46:31 +02:00
Stephen Kelly
771e79a2bf
cmLinkItem: Add cmOptionalLinkImplementation type.
...
Move the associated Compute* methods to the cmTarget class.
2015-08-26 19:46:31 +02:00
Stephen Kelly
3846ebcf2b
cmLinkItem: Add cmLinkImplementation type.
2015-08-26 19:46:31 +02:00
Stephen Kelly
a7f5d70dde
cmGeneratorTarget: Move compile defintions processing from cmTarget.
2015-08-26 19:46:30 +02:00
Stephen Kelly
d051086cce
cmGeneratorTarget: Move compile features processing from cmTarget.
2015-08-26 19:46:10 +02:00
Stephen Kelly
db4cb92bda
cmGeneratorTarget: Move compile options processing from cmTarget.
2015-08-26 19:45:51 +02:00
Stephen Kelly
e6ccbf6f30
cmGeneratorTarget: Move include directory processing from cmTarget.
2015-08-26 19:45:21 +02:00
Stephen Kelly
8bfb0c53da
cmGeneratorTarget: Move link iface helpers from cmTarget.
2015-08-26 19:39:29 +02:00
Stephen Kelly
2cb3e57402
cmGeneratorTarget: Move GetImportLinkInterface from cmTarget.
2015-08-26 19:39:17 +02:00
Stephen Kelly
6d3d099b4a
cmGeneratorTarget: Move ComputeLinkInterfaceLibraries from cmTarget.
2015-08-26 19:38:57 +02:00
Stephen Kelly
0db9d92787
cmGeneratorTarget: Move GetLinkInterfaceLibraries from cmTarget.
2015-08-26 19:38:37 +02:00
Stephen Kelly
84b847e42f
cmGeneratorTarget: Move ComputeLinkInterface from cmTarget.
2015-08-26 19:38:14 +02:00
Stephen Kelly
6220241fd0
cmGeneratorTarget: Move GetLinkInterface from cmTarget.
2015-08-26 19:37:45 +02:00
Stephen Kelly
6353816786
cmTarget: Add GetHeadToLinkInterfaceMap methods.
2015-08-26 19:37:32 +02:00
Stephen Kelly
f8ca51a054
cmGeneratorTarget: Move ComputeLinkInterface from cmTarget.
2015-08-26 19:36:13 +02:00
Stephen Kelly
d67584ccc4
cmTarget: Move link interface libraries struct out.
2015-08-26 19:35:45 +02:00
Stephen Kelly
de6b289582
cmTarget: Remove vestigal method declaration.
...
The definition was removed in commit v3.1.0-rc1~688^2~5 (cmTarget:
Allow any generator expression in SOURCES property., 2014-03-18).
2015-08-25 23:06:33 +02:00
Gregor Jasny
8c076a8bdb
cmTarget: Remove unused AddSystemIncludeDirectories overload
2015-08-11 08:53:38 -04:00
Stephen Kelly
1f54bc1cf3
cmTarget: Split storage of include directories from genexes.
2015-08-07 17:06:15 +02:00
Stephen Kelly
10040601a2
cmLinkImplementationLibraries: Move to namespace scope.
2015-08-07 00:51:49 +02:00
Stephen Kelly
d9da6ee29f
cmLinkItem: Split to separate file.
2015-08-07 00:51:45 +02:00
Stephen Kelly
f83e84028a
cmGeneratorTarget: Move CompileInfoMap from cmTarget.
2015-08-05 18:20:50 +02:00
Stephen Kelly
b3f0e35308
cmGeneratorTarget: Move GetCompilePDBDirectory from cmTarget.
2015-08-05 18:20:50 +02:00
Stephen Kelly
34c437411d
cmGeneratorTarget: Move GetOutputName from cmTarget.
2015-08-05 18:20:50 +02:00
Stephen Kelly
ee26add4f4
cmGeneratorTarget: Move IsBundleOnApple from cmTarget.
2015-08-05 18:20:49 +02:00
Stephen Kelly
f8076644ce
cmGeneratorTarget: Move GetLinkClosure from cmTarget.
2015-08-05 18:20:49 +02:00
Stephen Kelly
7c809fa2a6
cmGeneratorTarget: Move GetLinkerLanguage from cmTarget.
2015-08-05 18:20:48 +02:00
Stephen Kelly
6da99de323
cmGeneratorTarget: Move GetFrameworkDirectory from cmTarget.
2015-08-05 18:20:48 +02:00
Stephen Kelly
d6bb319b09
cmGeneratorTarget: Move GetFullName from cmTarget.
...
Bring GetFullNameInternal with it.
2015-08-05 18:20:48 +02:00
Stephen Kelly
7a460852fa
cmGeneratorTarget: Move GetAppBundleDirectory from cmTarget.
2015-08-05 18:20:48 +02:00
Stephen Kelly
d560bfd273
cmGeneratorTarget: Move GetInstallNameDir* from cmTarget.
2015-08-05 18:20:47 +02:00
Stephen Kelly
89e2a080e9
cmGeneratorTarget: Move GetMacContentDirectory from cmTarget.
2015-08-05 18:20:47 +02:00
Stephen Kelly
62720e44be
cmGeneratorTarget: Move GetFullNameComponents from cmTarget.
2015-08-05 18:20:47 +02:00
Stephen Kelly
e27d737e27
cmGeneratorTarget: Move IsChrPathUsed from cmTarget.
2015-08-05 18:20:47 +02:00
Stephen Kelly
8d2de00244
cmGeneratorTarget: Move NeedRelinkBeforeInstall from cmTarget.
2015-08-05 18:20:47 +02:00
Stephen Kelly
3df705681b
cmGeneratorTarget: Move GetPDBName from cmTarget.
2015-08-05 18:20:46 +02:00
Stephen Kelly
a45fed81e5
cmGeneratorTarget: Move GetCompilePDBPath from cmTarget.
2015-08-05 18:20:46 +02:00
Stephen Kelly
f0aa660772
cmGeneratorTarget: Move HasSOName from cmTarget.
2015-08-05 18:20:46 +02:00
Stephen Kelly
766839c56d
cmGeneratorTarget: Move GetLibraryNames from cmTarget.
2015-08-05 18:20:46 +02:00
Stephen Kelly
47803e6f8e
cmGeneratorTarget: Move GetExecutableNames from cmTarget.
2015-08-05 18:20:46 +02:00
Stephen Kelly
7da4c9d4ed
cmGeneratorTarget: Move GetLinkImplementationClosure
2015-08-05 18:20:45 +02:00
Stephen Kelly
97f10e488a
cmGeneratorTarget: Move ReportPropertyOrigin from cmTarget.
2015-08-05 18:20:45 +02:00
Stephen Kelly
4b86f5edc9
cmGeneratorTarget: Make CompatibleType enum private again.
2015-08-05 18:20:45 +02:00
Stephen Kelly
5ff813c7a6
cmGeneratorTarget: Move LinkInterfaceDependent methods from cmTarget.
2015-08-05 18:20:45 +02:00
Stephen Kelly
90bad039c4
cmGeneratorTarget: Move CheckPropertyCompatibility from cmTarget.
2015-08-05 18:20:44 +02:00
Stephen Kelly
803a7982b4
cmGeneratorTarget: Move GetLinkInformation from cmTarget
2015-08-05 18:20:44 +02:00
Stephen Kelly
244c5b5dcd
cmGeneratorTarget: Move IsLinkInterfaceDependent* from cmTarget.
2015-08-05 18:20:44 +02:00
Stephen Kelly
12bc571c13
cmGeneratorTarget: Move GetAutoUicOptions from cmTarget.
2015-08-05 18:20:43 +02:00
Stephen Kelly
41abdc17df
cmGeneratorTarget: Move GetSOName from cmTarget..
2015-08-05 18:20:43 +02:00
Brad King
98d6e9ec2d
Merge topic 'use-generator-target'
...
57f03e59
Port some of the cmExportFileGenerator API to cmGeneratorTarget.
57ab0f70
Port cmExportBuildFileGenerator to cmGeneratorTarget.
570938cb
cmExportTryCompileFileGenerator: Create cmGeneratorTargets.
ec38e4c8
Move GetFullPath to cmGeneratorTarget
dfb025bf
Move GetLocationForBuild to cmGeneratorTarget.
9f2dca80
Move GetLocation to cmGeneratorTarget.
c7a8e74b
Always access target location from a cmGeneratorTarget instance.
5b60eaf6
cmTarget: Restore the ImportedGetLocation method.
50b17a61
cmIncludeCommand: Populate the cmGeneratorTargets in deprecated path.
ba266858
cmTarget: Create cmGeneratorTargets before reading deprecated LOCATION.
5ab3a946
cmTarget: Inline GetLocation into deprecated callers.
496f4cd0
cmGlobalGenerator: Create cmGeneratorTargets before QtAutomoc.
de80993a
cmGlobalGenerator: Create cmGeneratorTargets earlier.
611220f7
cmTarget: Use reliable test for CMP0024 and CMP0026 OLD.
bbad6ba5
cmLocalGenerator: Remove unused AddCustomCommandToCreateObject method.
e4dc83ad
cmLocalGenerator: Remove unused AddBuildTargetRule method.
...
2015-07-28 10:08:50 -04:00
Stephen Kelly
ec38e4c84f
Move GetFullPath to cmGeneratorTarget
2015-07-27 21:59:02 +02:00
Stephen Kelly
dfb025bf12
Move GetLocationForBuild to cmGeneratorTarget.
2015-07-27 21:58:50 +02:00
Stephen Kelly
9f2dca805c
Move GetLocation to cmGeneratorTarget.
2015-07-27 21:58:50 +02:00
Stephen Kelly
5b60eaf619
cmTarget: Restore the ImportedGetLocation method.
...
It was removed in commit f154475b
(cmTarget: Refactor GetLocation
API, 2014-03-08), but it is more readable for targets we know are
imported.
2015-07-27 21:58:50 +02:00
Stephen Kelly
c7b39d06f9
cmMakefile: Split accessors for include directories and origins.
2015-07-22 20:25:47 +02:00
Stephen Kelly
b2de25aded
cmMakefile: Split accessors for compile options and origins.
2015-07-22 20:25:46 +02:00
Stephen Kelly
d6239507b2
cmMakefile: Split accessors for compile definitions and origins.
2015-07-22 20:25:45 +02:00
Brad King
6c098a4a72
Merge topic 'fix-target_link_libraries-wrong-dir'
...
30c2e1dd
cmTarget: Fix diagnostic of target_link_libraries in wrong directory (#15626 )
2015-06-26 08:41:16 -04:00
Brad King
30c2e1dd16
cmTarget: Fix diagnostic of target_link_libraries in wrong directory ( #15626 )
...
Since commit v3.3.0-rc1~62^2~5 (cmTarget: Store only cmListFileContext
for CMP0023 handling, 2015-05-18) a call to target_link_libraries on a
target that was defined in another (non-ancestor) directory crashes
because no execution context is left active. Fix this by getting the
execution context from the actual cmMakefile where the current
target_link_libraries call takes place. Test this by verifying that
such calls correctly produce an error diagnostic instead of crashing.
2015-06-25 09:14:26 -04:00
Brad King
d17aa60659
Merge topic 'data-layout'
...
8174e5cd
cmCustomCommand: Remove special member functions.
34e1d6db
cmCustomCommand: Re-arrange data layout.
54cb76f2
cmComputeLinkDepends: Re-arrange data layout.
b661d6c6
cmQtAutoGenerators: Re-arrange data layout.
40844a14
cmProcessTools: Re-arrange data layout.
b1ff32af
cmOrderDirectories: Re-arrange data layout.
dd0417c7
cmInstallTargetGenerator: Re-arrange data layout.
125c4866
cmInstallFilesGenerator: Re-arrange data layout.
92b8b1fc
cmGraphVizWriter: Re-arrange data layout.
7f3e1623
cmGlobalGenerator: Re-arrange data layout.
d9df7fa7
cmComputeComponentGraph: Re-arrange data layout.
db24e41b
cmCommandArgumentParserHelper: Re-arrange data.
4cd13e80
cmComputeLinkInformation: Re-arrange data layout.
3e087a40
cmLocalUnixMakefileGenerator: Re-arrange data layout.
e0421701
cmMakefile: Re-arrange data layout.
c26696eb
cmSourceFile: Re-arrange data.
...
2015-06-08 13:54:11 -04:00
Stephen Kelly
41fef23b9b
cmTarget: Re-arrange data layout.
...
Size with GNU libstdc++-5.1 goes from 840 bytes to 808 bytes.
2015-06-07 09:29:31 +02:00
Stephen Kelly
647488570b
cmTarget: Replace PolicyStatus members with PolicyMap.
...
sizeof(cmTarget) goes from 856 to 840 with GNU libstdc++ 5.1.
2015-06-07 09:29:31 +02:00
Stephen Kelly
ccbc225913
cmGeneratorTarget: Move Feature API from cmTarget.
2015-06-06 15:44:16 +02:00
Stephen Kelly
52919ac8ac
cmMakefile: Make cmListFileBacktrace default constructible.
2015-06-03 01:03:59 +02:00
Brad King
700f1c3b2b
Honor visibility properties for all target types ( #15556 )
...
The <LANG>_VISIBILITY_PRESET and VISIBILITY_INLINES_HIDDEN were first
merged in commit v2.8.12~322 (Merge topic 'VISIBILITY_PRESET-property',
2013-06-05) but worked only for shared libraries and executables with
exports. Prior to commit v3.0.0-rc1~581^2 (GenerateExportHeader:
Deprecate add_compiler_export_flags function., 2013-09-02) the
add_compiler_export_flags function was used to add visibility flags to
all targets.
The visibility flags are useful for sources in all target types because
they may be later linked into shared libraries or executables with
exports. Introduce policy CMP0063 to enable them for all target types
while preserving compatibility with existing projects that do not expect
this.
2015-05-26 09:03:16 -04:00
Brad King
594dd9b36a
Merge topic 'use-std-unordered_map'
...
d7923b82
Use std::unordered_map instead of hash_map where available.
820777af
Tests: Don't rely on ordering of targets in maps.
921d74d8
AutoGen: Don't iterate over a container while populating it.
2015-05-19 11:30:21 -04:00
Stephen Kelly
d7923b82ad
Use std::unordered_map instead of hash_map where available.
2015-05-19 00:07:02 +02:00
Stephen Kelly
52a8d19c9b
cmTarget: Store only cmListFileContext for CMP0023 handling.
...
Only the top level execution context is shown, as appropriate, so
store only that.
2015-05-18 23:55:43 +02:00
Stephen Kelly
b159bff732
Move property definition to cmState.
2015-04-13 20:13:13 +02:00
Brad King
882f48e5ba
Link libraries by full path even in implicit directories
...
When CMP0003 was first introduced we wanted to link all libraries by
full path. However, some projects had problems on platforms where
find_library would find /usr/lib/libfoo.so when the project really
wanted to link to /usr/lib/<arch>/libfoo.so and had been working by
accident because pre-CMP0003 behavior used -lfoo to link.
We first tried to address that in commit v2.6.0~440 (Teach find_library
to avoid returning library paths in system directories, 2008-01-23) by
returning just "foo" for libraries in implicit link directories. This
caused problems for projects expecting find_library to always return a
full path. We ended up using the solution in commit v2.6.0~366 (...
switch library paths found in implicit link directories to use -l,
2008-01-31). However, the special case for libraries in implicit link
directories has also proven problematic and confusing.
Introduce policy CMP0060 to switch to linking all libraries by full path
even if they are in implicit link directories. Explain in the policy
documentation the factors that led to the original approach and now to
this approach.
2015-04-09 11:29:18 -04:00
Gregor Jasny
3714955b9c
OS X: Add handling for XCTest bundles
...
An XCTest bundle is a CFBundle with a special product-type and bundle
extension. For more information about XCTest visit the Mac Developer
library at:
http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/testing_with_xcode/
Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
2015-03-23 09:12:18 -04:00
Stephen Kelly
b734fa4471
Genex: Allow COMPILE_LANGUAGE when processing include directories.
...
Issue an error if this is encountered by an IDE generator.
2015-03-09 20:49:17 +01:00
Stephen Kelly
0b945ea9a6
Genex: Allow COMPILE_LANGUAGE when processing compile definitions.
...
Issue an error if this is encountered by an IDE generator.
2015-03-09 20:49:16 +01:00
Stephen Kelly
5c559f1113
Genex: Enable use of COMPILE_LANGUAGE for compile options.
...
Follow-ups will allow the use of the generator expression
for compile definitions and include directories for non-IDE
generators.
2015-03-09 20:48:57 +01:00
Stephen Kelly
931e055d8c
Port all cmOStringStream to std::ostringstream.
...
All compilers hosting CMake support the std class.
2015-01-11 17:06:03 +01:00
Brad King
16569abfa8
cmTarget: Track internally whether platform is Android
...
Add an IsAndroid member to save whether CMAKE_SYSTEM_NAME is "Android".
2014-09-29 16:05:53 -04:00
Brad King
7b743a2e76
cmTarget: Avoid re-computing head-independent link interfaces
2014-07-21 13:04:04 -04:00
Brad King
46099b82ed
cmTarget: Move ComputeLinkImplementation* to internals
...
There are no external callers, and this will allow the methods to see
the full OptionalLinkImplementation internal structure.
2014-07-21 11:55:56 -04:00
Brad King
36a8184d40
Merge topic 'dev/target-fastpaths'
...
a9c9b66c
cmTarget: use a hash_map for cmTargets typedef
bcb6dbc1
cmTarget: help the optimizer a bit
679f3dee
cmTarget: use hash_set for sets of strings
23d6520d
cmTarget: Allow caching of empty genex expansions
cd54f1db
cmTarget: Only copy GenEx expansions when necessary
b75fc0e1
cmTarget: Don't set properties on custom targets
66076915
cmTarget: Use static strings for special property names
cebefa71
cmTarget: Sort special property checks
97ce676e
cmTarget: Fast path for regular properties
4cfa918a
cmTarget: Factor out common code
85242b7d
cmTarget: Use else/if trees rather than an if tree
2014-07-18 11:00:29 -04:00
Ben Boeckel
a9c9b66c27
cmTarget: use a hash_map for cmTargets typedef
2014-07-17 11:17:52 -04:00
Brad King
c45dd669ab
cmTarget: Cache compatible interface property sets
...
Replace isLinkDependentProperty with a CompatibleInterfaces structure
that records all the compatible interface properties in a set for each
type. This avoids repeatedly traversing the link implementation closure
and asking every target for its compatible interface properties.
2014-07-16 13:38:22 -04:00
Brad King
0a8fbac19a
cmTarget: Drop GetTransitivePropertyTargets method
...
Inline the implementation at the only remaining call site.
2014-07-16 13:31:29 -04:00
Brad King
535fd6ce6d
cmTarget: Make GetLink*Libraries methods safer to use
...
Split the library lists out of LinkImplementation and LinkInterface into
LinkImplementationLibraries and LinkInterfaceLibraries parent classes,
respectively. Return these from GetLinkImplementationLibraries and
GetLinkInterfaceLibraries, respectively, so that callers cannot access
parts of the structures that have not been populated.
2014-07-16 13:31:29 -04:00
Brad King
a0dc1354fe
Merge topic 'refactor-link-internals'
...
1ca0c0e9
cmTarget: Refactor internal imported LinkInterface map
102eea60
cmTarget: Simplify internal ComputeLinkInterfaceLibraries method
b0f57408
cmTarget: Move ComputeLinkInterfaceLibraries to internals
c69e8a55
cmTarget: Refactor internal LinkInterface map
4db3990e
cmTarget: Drop 'head' argument from processSources
4b8130b8
cmTarget: Drop 'head' argument from GetSourceFiles
4c763dd1
cmTarget: Drop 'head' argument from GetLanguages
190cabe7
cmTarget: Drop 'head' argument from ComputeLinkImplementationLanguages
2014-07-16 13:04:21 -04:00
Brad King
8a205b980c
cmTarget: Compile old-style link dependencies only for VS 6
...
Compile all the "ForVS6" cmTarget members only on Windows. No other
platforms support the VS 6 generator.
2014-07-14 14:39:20 -04:00
Brad King
b3b44d138e
cmTarget: Rename old-style link dependencies code as "ForVS6"
...
The old link dependency analysis is now needed only for the VS 6
generator code delimited by CM_USE_OLD_VS6 to support project-provided
project templates. Rename the related cmTarget members to be "ForVS6".
2014-07-14 14:37:04 -04:00
Brad King
b0f5740851
cmTarget: Move ComputeLinkInterfaceLibraries to internals
...
There are no external callers, and this will allow the method to see
the full OptionalLinkInterface internal structure.
2014-07-14 09:55:52 -04:00