Handle reading empty properties defined by the link interface.

This was segfaulting before.
Advance more when preprocessing exported strings.

When evaluating TARGET_PROPERTY here, we can skip to the comma
location. We need to calculate it though as the string may have
just been changed.
Tests: Avoid CTestLimitDashJ crash on Borland 5.8 builds

The test added by commit e378ba5f (Add CTestLimitDashJ test, 2012-12-26)
crashes with CTest compiled by Borland 5.8.  There seems to be interaction
among the large number of internal ctest runs.  It is probably related to
the undiscovered underlying issue mentioned in commit 32478069 (CTest:
Prevent creation of unbounded number of tests in ctest, 2012-12-18) when
fixing the symptom covered by the CTestLimitDashJ test.

Add --force-new-ctest-process to avoid the crash.  Further investigation
will still be needed to identify the true problem.
Merge topic 'avoid-CTestLimitDashJ-crash-on-Borland' into next

19f3208 Tests: Avoid CTestLimitDashJ crash on Borland 5.8 builds
Fix use of cmTypeMacro in new command classes

Both commit 8a37ebec (Add the target_include_directories command,
2013-01-01) and commit fc61a7a7 (Add the target_compile_definitions
command, 2013-01-08) added command implementations deriving from the new
cmTargetPropCommandBase class.  Fix cmTypeMacro declarations of the
inheritance relationship.
Merge topic 'new-command-class-type-macros' into next

9397270 Fix use of cmTypeMacro in new command classes
Make it an error for INSTALL_PREFIX to be evaluated.

An empty string is not likely going to produce expected results
in any evaluation context. It is replaced by preprocessing
currently.
Export targets to a targets file, not a Config file.
Add a way to exclude INTERFACE properties from exported targets.

Projects set interface requirements upstream, and existing
downstreams use of target_link_libraries will consume those interfaces.

This can create a backward compatibility concern as the result may
be changing the order of include directories of downstreams, or another
side-effect of using the INTERFACE properties.

Provide a way for them to emulate the behavior of a version-based
policy in the config file.
Add API to check if we're reading a includes or defines property.

This will allow the implementation of the LINKED generator expression.
Add the $<LINKED:...> generator expression.

This is both a short form of using a TARGET_DEFINED expression
together with a TARGET_PROPERTY definition, and a way to strip
non-target content from interface properties when exporting.
Add includes and compile definitions with target_link_libraries.

This establishes that linking is used to propagate usage-requirements
between targets in CMake code. The use of the target_link_libraries
command as the API for this is chosen because introducing a new command
would introduce confusion due to multiple commands which differ only in
a subtle way.
Test workaround of bad interface include directories from depends.
Merge topic 'tll-includes-defines' into next

e7b579b Test workaround of bad interface include directories from depends.
77cecb7 Add includes and compile definitions with target_link_libraries.
0b92602 Add the $<LINKED:...> generator expression.
0fa7f69 Add API to check if we're reading a includes or defines property.
2c3654c Add a way to exclude INTERFACE properties from exported targets.
d4297d5 Export targets to a targets file, not a Config file.
df4d2b2 Make it an error for INSTALL_PREFIX to be evaluated.
7ceeba9 Advance more when preprocessing exported strings.
30268b4 Handle reading empty properties defined by the link interface.
Fix cmSystemTools::RenameFile race on Windows

Since commit d46d8df0 (Re-implemented cmGeneratedFileStream to look like a
real stream and replace the destination file atomically, 2004-11-03) our
RenameFile implementation tries to deal with MoveFile not replacing
read-only files.  In order to avoid the Get/SetFileAttributes pair we used
stat to test for existence of the destination file.  This has a race in
which the destination could be created between the test for existence and
the MoveFile call.

Remove the stat call and use GetFileAttributes to detect whether the file
exists.  This shortens the race but does not eliminate it.  Use a loop to
try multiple times in case we lose the race.  While at it, drop Win9x
support and always use MoveFileEx.
Merge topic 'fix-atomic-rename-on-Windows' into next

2e4188e Fix cmSystemTools::RenameFile race on Windows