| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| | |
30c2e1dd 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.
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
...
|
| | |
| | |
| | |
| | | |
Size with GNU libstdc++-5.1 goes from 840 bytes to 808 bytes.
|
| | |
| | |
| | |
| | | |
sizeof(cmTarget) goes from 856 to 840 with GNU libstdc++ 5.1.
|
|/ / |
|
|/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
|/
|
|
|
| |
Only the top level execution context is shown, as appropriate, so
store only that.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Issue an error if this is encountered by an IDE generator.
|
|
|
|
| |
Issue an error if this is encountered by an IDE generator.
|
|
|
|
|
|
| |
Follow-ups will allow the use of the generator expression
for compile definitions and include directories for non-IDE
generators.
|
|
|
|
| |
All compilers hosting CMake support the std class.
|
|
|
|
| |
Add an IsAndroid member to save whether CMAKE_SYSTEM_NAME is "Android".
|
| |
|
|
|
|
|
| |
There are no external callers, and this will allow the methods to see
the full OptionalLinkImplementation internal structure.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| | |
Inline the implementation at the only remaining call site.
|
|/
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| | |
There are no external callers, and this will allow the method to see
the full OptionalLinkInterface internal structure.
|
| |
| |
| |
| | |
No call sites need it to be anything but 'this'.
|
| |
| |
| |
| | |
No call sites need it to be anything but 'this'.
|
| |
| |
| |
| | |
No call sites need it to be anything but 'this'.
|
| |
| |
| |
| |
| | |
Compile all the "ForVS6" cmTarget members only on Windows. No other
platforms support the VS 6 generator.
|
|/
|
|
|
|
| |
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".
|
|
|
|
|
|
| |
Implementation of CMP0027 OLD behavior needs to know whether each entry
in LinkImplementation::Libraries came from a generator expression or
not. Add a FromGenex member to cmLinkImplItem to record this.
|
|
|
|
| |
Allow clients to provide backtrace context on evaluation diagnostics.
|
|
|
|
|
|
|
| |
Create a cmLinkImplItem class derived from cmLinkItem so more
information can be added to link implementation entries than link
interface entries. Convert the LinkImplementation Libraries member to
hold it. Update client sites accordingly.
|
|
|
|
|
|
|
| |
Add a 'usage_requirements_only' parameter to GetLinkInterfaceLibraries
and supporting internal APIs to pass through to ExpandLinkItems so it
knows whether to use SetTransitivePropertiesOnly while evaluating
generator expressions.
|
|
|
|
|
|
|
| |
Add a 'usage_requirements_only' parameter to ExpandLinkItems so that it
knows whether to use SetTransitivePropertiesOnly while evaluating
generator expressions. Update existing call sites to pass 'false' since
they are for linking and not usage requirements.
|
|
|
|
|
| |
Inline the implementation in the last remaining caller and drop the
methods.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of storing just the string names in these structures, lookup any
target associated with each item and store its cmTarget pointer. Use
the cmLinkItem class to hold the name and pointer together. Update
client sites to use the pre-stored lookup result instead of looking up
the target name again.
Create a cmTarget::LookupLinkItems helper method to handle the lookup.
Since lookups are now moving from cmComputeLinkDepends::AddLinkEntries
to cmTarget::LookupLinkItems, move use of CheckCMP0004 to the latter.
This drops use of CheckCMP0004 from entries added for _LIB_DEPENDS
variables by cmComputeLinkDepends::AddVarLinkEntries, but I do not
think that use was intentional originally anyway.
|
|
|
|
|
|
|
| |
Add a method like GetUtilities but that provides the target names
already looked up and resolved to cmTarget pointers internally. Update
call site in cmComputeTargetDepends::AddTargetDepend to use the
already-found target instead of looking it up again.
|
|
|
|
|
|
|
|
| |
Many items named in target_link_libraries calls are targets, but not
all. Create a cmLinkItem type that acts like std::string so it can name
an item but also has a pointer to a cmTarget that is the result of
looking up the item name in the referencing target's scope. This will
be useful to avoid duplicate lookup operations later.
|
|
|
|
|
| |
Move the main implementation of cmComputeLinkDepends::FindTargetToLink
into cmTarget.
|
|
|
|
| |
Populate a vector of "cmTarget const*" instead of "cmTarget*".
|
|
|
|
| |
Populate a vector of "cmTarget const*" instead of "cmTarget*".
|
|
|
|
|
|
|
| |
Move generator expression evaluation for imported library lists out of
GetImportInfo and into a new GetImportLinkInterface helper. This avoids
duplicating the computation and storage of all imported target info just
because some of it is parameterized on the 'head' target.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Many of the 'head' arguments added by commit v2.8.11~289^2~1 (Make
linking APIs aware of 'head' target, 2013-01-04) turned out not to be
needed. The "link implementation" of a target never needs to be
computed with anything but itself as the 'head' target (except for
CMP0022 OLD behavior because then it is the link interface).
Remove the unused 'head' target paths. Add "internal" versions of
cmTarget::GetDirectLinkLibraries and GetLinkImplementationLibraries
to support the CMP0022 OLD behavior without otherwise exposing the
'head' target option of these methods.
|
|
|
|
| |
It is only ever passed the 'this' target itself.
|
|
|
|
|
|
| |
It is only ever called with the 'this' target as the head.
Co-Author: Stephen Kelly <steveire@gmail.com>
|
|
|
|
|
|
| |
No call sites use it anyway.
Co-Author: Stephen Kelly <steveire@gmail.com>
|