15936 Commits

Author SHA1 Message Date
Stephen Kelly
6e636f2eba cmTarget: Make the SOURCES origin tracable. 2014-04-02 23:14:02 +02:00
Stephen Kelly
3676fb4963 cmTarget: Allow transitive evaluation of SOURCES property.
Extend the cmGeneratorExpressionDAGChecker with an interface
returning the name of the top target.  Use that to determine
when there is a DAG violation, as required by the RunCMake.Languages
tests.
2014-04-02 23:14:02 +02:00
Stephen Kelly
e6971df6ab cmTarget: Make the source files depend on the config.
Disallow the use of config-specific source files with
the Visual Studio and Xcode generators. They don't have
any way to represent the condition currently.

Use the same common-config API in cmQtAutoGenerators. While
it accepts config-specific files, it doesn't have to support
multiple configurations yet.

Loop over the configs in cmTargetTraceDependencies
and cmGlobalGenerator::WriteSummary and consume all source
files.

Loop over the configs in cmComputeTargetDepends and compute the
object library dependencies for each config.
2014-04-02 23:14:02 +02:00
Stephen Kelly
df753df94b cmGeneratorTarget: Don't add computed sources to the target.
When config-specifig generator expressions are supported, a target
may have SOURCES:

 src1.cpp $<$<CONFIG:Debug>:src2.cpp> $<$<CONFIG:Release>:src3.cpp>

and computation in cmTargetTraceDependencies would add each of the
src2.cpp and src3.cpp sources back to the target without a
config-guard.  That would make the sources be used later when
generating the buildsystem, regardless of the configuration.

Avoid calling AddSource on the target with the result of the
GetSourceFiles call.
2014-04-02 23:14:02 +02:00
Stephen Kelly
869328aac3 cmComputeTargetDepends: Use valid config to compute target depends.
If CMAKE_BUILD_TYPE is set, and user code contains:

 target_link_libraries(myexe prefix_$<$<CONFIG:Debug>:debug>)

then the computation with an empty config was computing a target-level
dependency on a target or library called prefix_, and a dependency
on a target or library called prefix_debug (as expected).

The existing logic skips 'prefix_' because it is not a known target,
and defers to the link-dependencies logic to find the library. The
link-dependencies logic does not incorrectly handle the config as
cmComputeTargetDepends did, and so did not encounter 'prefix_'
during its computation. This likely had no effect on the generated
buildsystem.
2014-04-02 23:14:02 +02:00
Stephen Kelly
aa0a3562dd cmGeneratorTarget: Compute target objects on demand
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.
2014-04-02 23:12:57 +02:00
Stephen Kelly
042c1c834e cmTarget: Compute languages from object libraries on demand. 2014-04-02 23:12:56 +02:00
Stephen Kelly
fdcefe3c42 cmGeneratorTarget: Compute consumed object libraries on demand.
Remove up-front object library computation from cmGlobalGenerator.

Adjust tests for message coming from the generator expression
evaluation.
2014-04-02 23:12:56 +02:00
Stephen Kelly
c355d10865 cmComputeTargetDepends: Track object library depends.
Relieve cmGeneratorTarget of that responsibility.
2014-04-02 23:12:56 +02:00
Stephen Kelly
e5da9e51d0 cmTarget: Allow any generator expression in SOURCES property.
Remove use of UseObjectLibraries from Makefile and Ninja generators. It
is not needed now because those generators use GetExternalObjects
which already contains the objects from object libraries.

The VS10 generator calls both the UseObjectLibraries and the GetExternalObjects
methods. Ensure that duplicates are not created by skipping objects
from object libraries in handling of GetExternalObjects.

Similarly, fix VS6, VS7 and Xcode object handling by skipping
external objects from OBJECT_LIBRARY usage as appropriate.

The error message in the BadSourceExpression1 test is now reported
by the generator expression evaluator, so it has different text.
2014-04-02 23:12:56 +02:00
Stephen Kelly
5702e10677 cmTarget: Include TARGET_OBJECTS genex in target SOURCES property.
Add policy CMP0051 to control this behavior.
2014-04-02 23:12:56 +02:00
Stephen Kelly
857d30b52e cmGlobalGenerator: Add interface to call ForceLinkerLanguages
Avoid calling it too early when cmGeneratorTarget instances don't
yet exist.
2014-03-31 23:18:44 +02:00
Stephen Kelly
28e1d2f8fc cmStringCommand: Add GENEX_STRIP subcommand.
Strip out any generator expressions in the input string.
2014-03-31 23:18:44 +02:00
Stephen Kelly
bf98cc252f Genex: Evaluate TARGET_OBJECTS as a normal expression. 2014-03-31 23:18:44 +02:00
Stephen Kelly
8cd113ad1d cmTarget: Store strings instead of cmSourceFile* to represent SOURCES.
This will allow the strings to contain generator expressions.

At this point, generator expressions are still not part of the
SOURCES property when it is read.
2014-03-31 23:18:44 +02:00
Stephen Kelly
4959f3413c cmSourceFileLocation: Collapse full path for directory comparisons.
Otherwise Matches() ends up doing a comparison of
the directories

 /path/to/dir/subdir/..

and

 /path/to/dir

as strings and not matching where it should.
2014-03-31 23:18:43 +02:00
Stephen Kelly
fcc9287897 cmSourceFileLocation: Remove unused Update method.
The string overload is never called. This allows the removal of
the unused UpdateDirectory method.
2014-03-31 23:18:43 +02:00
Stephen Kelly
59e8740aca cmTarget: Remove AddSourceFile method
It is no longer used.
2014-03-31 23:18:43 +02:00
Stephen Kelly
26d494ba01 cmTarget: Use string API to add sources to cmTarget objects.
Continue to call GetOrCreateSource where necessary to create
cmSourceFile objects which have the GENERATED attribute set.
2014-03-31 23:18:43 +02:00
Stephen Kelly
d38423ecc4 cmTarget: Add a method to obtain list of filenames for sources. 2014-03-31 23:18:43 +02:00
Stephen Kelly
b1cbba68ce cmSourceFileLocation: Make copyable and assignable.
This allows using it in containers and algorithms.
2014-03-31 23:18:43 +02:00
Stephen Kelly
0ed5ce4cd8 cmTarget: Rename AddSource method for backward compatibility.
Add a new AddSource method for future use.
2014-03-31 23:18:43 +02:00
Stephen Kelly
99a9c51f1a cmTarget: Use GetSourceFiles for languages. 2014-03-31 23:18:43 +02:00
Stephen Kelly
beaa7e0377 cmGeneratorTarget: Compute the object directory early.
Ensure it is populated before tracing dependencies.
2014-03-31 23:18:43 +02:00
Kitware Robot
521b930bf4 CMake Nightly Date Stamp 2014-03-31 00:01:05 -04:00
Kitware Robot
9298987a82 CMake Nightly Date Stamp 2014-03-30 00:01:06 -04:00
Kitware Robot
5bad8ae342 CMake Nightly Date Stamp 2014-03-29 00:01:05 -04:00
Kitware Robot
cab2e31443 CMake Nightly Date Stamp 2014-03-28 00:01:05 -04:00
Brad King
ede0419a37 Merge topic 'osx-CFBundle-info-plist'
90e22f8f OS X: Fix Info.plist placement in a CFBundle
2014-03-27 11:12:10 -04:00
Kitware Robot
e03ac807cf CMake Nightly Date Stamp 2014-03-27 00:01:18 -04:00
Brad King
edb506b862 Merge topic 'fix-Qt-Autogen'
71a11252 QtAutogen: Fix use of multiple ui files in a single target.
261acd91 QtAutogen: Use the basename for resource files.
2014-03-26 13:24:43 -04:00
Brad King
a11d1c6135 Merge topic 'dev/custom-ninja-deptypes'
9523d2a5 ninja: Add support for custom depfile formats
2014-03-26 13:24:39 -04:00
Brad King
f04e217cc1 Merge topic 'remove-CMakeFiles-advice'
bccc056b cmake: Advise user to remove CMakeFiles with CMakeCache.txt (#14820)
2014-03-26 13:24:37 -04:00
Brad King
06c9f55449 Merge topic 'haiku-updates'
0cc42b87 Haiku: Fix compiler detection when using distcc
84603d80 Haiku: Enable CMake builtin ELF editor
2014-03-26 13:24:36 -04:00
Brad King
9b536b914b Merge topic 'report-INTERFACE-type-in-conflict'
f1fd3714 cmMakefile: Report type of INTERFACE library in conflict.
2014-03-26 13:24:33 -04:00
Brad King
5ae8f33617 Merge topic 'update-kwsys'
ed6ddb89 Merge branch 'upstream-kwsys' into update-kwsys
12faf00d KWSys 2014-03-19 (a8aa1014)
2014-03-26 13:24:30 -04:00
Tim Blechmann
90e22f8f71 OS X: Fix Info.plist placement in a CFBundle
Fix cmOSXBundleGenerator::CreateCFBundle to place Info.plist under the
same root directory as the rest of the bundle.  Without this, Info.plist
was placed into CMAKE_BINARY_DIR, not CMAKE_CURRENT_BINARY_DIR because
the target path was not generated correctly.
2014-03-26 10:52:23 -04:00
Kitware Robot
a29ea834de CMake Nightly Date Stamp 2014-03-26 00:01:05 -04:00
Kitware Robot
a56a8f9536 CMake Nightly Date Stamp 2014-03-25 00:01:06 -04:00
Stephen Kelly
71a11252e9 QtAutogen: Fix use of multiple ui files in a single target.
Don't store a mapping of the directory to the ui file. The directory
will be a unique key, allowing only one ui file to be specified.
Use the source file name instead as the mapping key.
2014-03-25 01:39:03 +01:00
Stephen Kelly
261acd9109 QtAutogen: Use the basename for resource files.
The rcc tool generates a cpp file with a symbol called qInitResources
or called qInitResources_${name}, if the name is passed. The
qInitResources symbol clashes if multiple qrc files are used in
one target.

Always pass the name to ensure that the symbol is unique. This is also
the behavior of the qtx_add_resource macros.
2014-03-25 01:16:49 +01:00
Kitware Robot
8a306d68e0 CMake Nightly Date Stamp 2014-03-24 00:01:06 -04:00
Ben Boeckel
9523d2a55c ninja: Add support for custom depfile formats
Not everything that isn't MSVC is GCC. I have support for LDC's depfile
format on its way upstream[1], but its future is uncertain. CMake should
at least support this for future depfile formats.

[1]https://github.com/martine/ninja/pull/721
2014-03-23 23:54:13 -04:00
Kitware Robot
6f39a6ff32 CMake Nightly Date Stamp 2014-03-23 00:01:06 -04:00
Kitware Robot
d514e41118 CMake Nightly Date Stamp 2014-03-22 00:01:05 -04:00
Brad King
bccc056ba8 cmake: Advise user to remove CMakeFiles with CMakeCache.txt (#14820) 2014-03-21 08:28:37 -04:00
Adrien Destugues
84603d804c Haiku: Enable CMake builtin ELF editor
Co-Author: Brad King <brad.king@kitware.com>
2014-03-21 08:19:09 -04:00
Kitware Robot
6373e08d43 CMake Nightly Date Stamp 2014-03-21 00:01:16 -04:00
Stephen Kelly
f1fd3714a4 cmMakefile: Report type of INTERFACE library in conflict. 2014-03-20 22:09:32 +01:00
Brad King
ed6ddb89bf Merge branch 'upstream-kwsys' into update-kwsys 2014-03-20 09:42:27 -04:00