Commit Graph

14151 Commits

Author SHA1 Message Date
Stephen Kelly dea1df4e5e Memoize usage requirement include directories in a config-specific map
Commit 42ebb188 (Memoize includes and defines from interface libraries.,
2013-02-22) introduced caching of the includes.  Fix the memoization to
be configuration-specific so that we do not accumulate entries across
multiple evaluations in a multi-config generator.
2013-05-06 09:59:28 -04:00
Stephen Kelly 26dba6a162 Fix include dir propagation from conditionally linked targets
Generator expressions, including configuration-specific expressions may
be used as link libraries of targets.  The old-style keywords of
target_link_libraries are handled in terms of new generator expressions.
However, the generator expressions expect target names to be valid
against a regular expression, whereas target_link_libraries does not
require validation.  In generator expression constructed without any
action from the user we need to ensure that only valid expressions are
generated.  Ensure that strings which are not valid target names are not
used in generator expressions which validate the argument.

Code like

 target_link_libraries(B debug A)

generates usage requirement references such as "$<$<CONFIG:DEBUG>:A>".
When cmTarget::GetIncludeDirectories uses such references it generates
expressions like:

 $<TARGET_PROPERTY:$<$<CONFIG:DEBUG>:A>,INTERFACE_INCLUDE_DIRECTORIES>

When the conditions are false such references evaluate as an empty
string and the expression fails with an error such as:

 $<TARGET_PROPERTY:tgt,prop> expression requires a non-empty target name.

Fix this by teaching cmTarget::GetIncludeDirectories to wrap the above
expression inside a conditional:

 $<$<BOOL:$<$<CONFIG:DEBUG>:A>>:...>

so that $<TARGET_PROPERTY:...> will not be evaluated with an empty
target.
2013-05-06 09:55:45 -04:00
Stephen Kelly b8259c3d69 Centralize maintenance of usage requirement include directories
Maintain a target's internal list of usage requirement include
directories whenever the LINK_LIBRARIES property is set by either
target_link_libraries or set_property.
2013-05-06 09:54:11 -04:00
Kitware Robot 78185f598c CMake Nightly Date Stamp 2013-04-25 00:01:03 -04:00
Kitware Robot 90bd164193 CMake Nightly Date Stamp 2013-04-24 00:01:07 -04:00
Kitware Robot 2baf851c34 CMake Nightly Date Stamp 2013-04-23 00:01:07 -04:00
Kitware Robot e55b8ce4a4 CMake Nightly Date Stamp 2013-04-22 00:01:04 -04:00
Kitware Robot d37fe5bc5b CMake Nightly Date Stamp 2013-04-21 00:01:05 -04:00
Kitware Robot 50e96802d2 CMake Nightly Date Stamp 2013-04-20 00:01:03 -04:00
Kitware Robot e6c3595fde CMake Nightly Date Stamp 2013-04-19 00:01:10 -04:00
Kitware Robot 6a3ee5dd4e CMake Nightly Date Stamp 2013-04-18 00:01:08 -04:00
Brad King 52b758b5c2 Merge topic 'doc-get_filename_component'
df71f96 get_filename_component: Document path components more clearly (#14091)
2013-04-17 11:36:30 -04:00
Brad King 8a2763b3ac Merge topic 'missing-fclose-in-trycompile'
ce441fa try_compile: add missing fclose() to recently added error case
2013-04-17 11:35:26 -04:00
Brad King 5b5a365aa6 Merge topic 'fix-clear-INCLUDE_DIRECTORIES-prop'
5a5e0fa Fix clearing of the INCLUDE_DIRECTORIES DIRECTORY property.
2013-04-17 11:35:14 -04:00
Kitware Robot f2958ff984 CMake Nightly Date Stamp 2013-04-17 00:01:08 -04:00
Brad King df71f968cd get_filename_component: Document path components more clearly (#14091)
Organize component names in a table to explain each in more detail.
Clearly state that PATH is the directory name.
2013-04-16 09:02:40 -04:00
Rolf Eike Beer ce441fac07 try_compile: add missing fclose() to recently added error case
In commit 236133e7 (Handle targets in the LINK_LIBRARIES of try_compile,
2013-02-09) an error return case was added without closing the file in
progress.  Add the missing fclose() call.

Spotted by sevenhill.
2013-04-16 08:38:33 -04:00
Kitware Robot 201db269b8 CMake Nightly Date Stamp 2013-04-16 00:01:10 -04:00
Kitware Robot 51e4424df6 CMake Nightly Date Stamp 2013-04-15 00:01:14 -04:00
Kitware Robot ee62ac4f1a CMake Nightly Date Stamp 2013-04-14 00:01:03 -04:00
Kitware Robot edd90f9911 CMake Nightly Date Stamp 2013-04-13 00:01:16 -04:00
Kitware Robot 1513dd399c CMake Nightly Date Stamp 2013-04-12 00:01:08 -04:00
Kitware Robot 6bfa3d8668 CMake Nightly Date Stamp 2013-04-11 00:01:08 -04:00
Stephen Kelly 5a5e0fa9d3 Fix clearing of the INCLUDE_DIRECTORIES DIRECTORY property.
This was broken by commit 18a3195a (Keep track of INCLUDE_DIRECTORIES
as a vector of structs., 2012-11-19).
2013-04-10 18:12:56 +02:00
Kitware Robot c6253fba41 CMake Nightly Date Stamp 2013-04-10 00:01:09 -04:00
Kitware Robot a5b39fd3c6 CMake Nightly Date Stamp 2013-04-09 00:01:09 -04:00
Kitware Robot a96452ec06 CMake Nightly Date Stamp 2013-04-08 00:01:05 -04:00
Kitware Robot 4336fadff0 CMake Nightly Date Stamp 2013-04-07 00:01:04 -04:00
Kitware Robot 88073c8e08 CMake Nightly Date Stamp 2013-04-06 00:01:09 -04:00
Kitware Robot 2d88085204 CMake Nightly Date Stamp 2013-04-05 00:01:10 -04:00
Brad King 9cccd2c29c Merge topic 'usr-move-relocatable'
6c613b4 Handle usr-move without forcing absolute paths (#14041)
2013-04-04 14:20:21 -04:00
Kitware Robot af79291fb4 CMake Nightly Date Stamp 2013-04-04 00:01:08 -04:00
Brad King 6c613b433c Handle usr-move without forcing absolute paths (#14041)
In commit 0c727b90 (install(EXPORT): Force absolute paths for usr-move,
2013-03-08) and commit d4774140 (configure_package_config_file: force
absolute paths for usr-move, 2013-01-24) we supported Linux
distributions implementing the "/usr move" by assuming that installation
to (/usr)?/lib(64)? represents a non-relocatable system package.

When cross-compiling one may prepare a package for installation into a
system location on a target machine but install the package files on the
*host* machine inside another path for use with CMAKE_FIND_ROOT_PATH.
In this case the package development files must still be relocatable.

Handle "/usr move" with a new approach that works with relocatable
files.  Teach configure_package_config_file and install(EXPORT) to
generate special logic in a package configuration file or targets file
for installation under (/usr)?/lib(64)?.  Teach the file to recognize
when it is loaded through a symlink that refers to the same realpath as
its original install destination.  In such a case, use the original
install prefix.  Otherwise, compute the prefix relative to the current
file location to make it relocatable.
2013-04-03 11:19:47 -04:00
Kitware Robot 99f7cc127a CMake Nightly Date Stamp 2013-04-03 00:01:08 -04:00
Brad King 972ae90fc6 Merge topic 'automoc-vs11-workaround'
20c99b1 automoc: Use a pre-build event in VS >= 7
2013-04-02 14:07:02 -04:00
Brad King ec0b84576b Merge topic 'clarify-add_dependencies-error'
de13d68 add_dependencies: Distinguish target v. file dependencies in error (#14050)
2013-04-02 14:06:55 -04:00
Kitware Robot 3423915720 CMake Nightly Date Stamp 2013-04-02 00:01:09 -04:00
Kitware Robot 8869c0febd CMake Nightly Date Stamp 2013-04-01 00:01:04 -04:00
Kitware Robot 8fe0f2be83 CMake Nightly Date Stamp 2013-03-31 00:01:08 -04:00
Kitware Robot f1502d2f88 CMake Nightly Date Stamp 2013-03-30 00:01:15 -04:00
Brad King 20c99b1dbc automoc: Use a pre-build event in VS >= 7
In VS IDE generators add a pre-build event to perform automoc instead of
using a separate custom target.  This reduces the number of targets in the
.sln that need to be loaded by the IDE.

This also works around a VS 11 bug as discussed in issue 13900.

Suggested-by: Hauke Heibel <hauke.heibel@gmail.com>
2013-03-29 15:58:21 -04:00
Brad King de13d68d11 add_dependencies: Distinguish target v. file dependencies in error (#14050)
When called with a non-existent LHS target name the user may be trying
to add file-level dependencies.  Clarify the error message to explain
the difference between target-level and file-level dependencies.  Point
the reader at the commands and options needed for the latter.
2013-03-29 15:00:33 -04:00
Kitware Robot 969a7fde7a CMake Nightly Date Stamp 2013-03-29 00:01:08 -04:00
Brad King 1f16bd24ee Merge topic 'SystemTools-TrimWhitespace-all'
674f918 cmSystemTools: Generalize TrimWhitespace to all whitespace
2013-03-28 10:43:22 -04:00
Brad King 2afcbe3090 Merge topic 'error-on-exported-missing-include-dir'
634bb33 Error if linked target has relative paths in INTERFACE_INCLUDE_DIRECTORIES
2013-03-28 10:42:42 -04:00
Kitware Robot 6a03ea4725 CMake Nightly Date Stamp 2013-03-28 00:01:11 -04:00
Petr Kmoch 674f918a1a cmSystemTools: Generalize TrimWhitespace to all whitespace
Modify cmSystemTools::TrimWhitespace() to remove all leading and
trailing whitespace, not just spaces.
2013-03-27 08:46:55 -04:00
Kitware Robot eb462356cf CMake Nightly Date Stamp 2013-03-27 00:01:09 -04:00
Stephen Kelly 634bb33f3a Error if linked target has relative paths in INTERFACE_INCLUDE_DIRECTORIES
We can do this check only if the TargetName is non-empty, which means
that we're evaluating INTERFACE_INCLUDE_DIRECTORIES from a linked
dependency which was set using target_link_libraries.

It is possible to have relative paths in INCLUDE_DIRECTORIES already
in CMake 2.8.10.2, so that part will require a policy to fix.
2013-03-26 19:56:10 +01:00
Brad King b9e4a5abb4 Merge topic 'error-on-exported-missing-include-dir'
28051f1 Report an error on IMPORTED targets with a faulty INTERFACE
af81a3c install(EXPORT): Ensure clean INTERFACE_INCLUDE_DIRECTORIES
2013-03-26 14:36:45 -04:00