Browse Source

Merge topic 'remove-TARGET_DEFINED-genex'

cbf0756 Revert "Add the TARGET_DEFINED generator expression"
21a342c Remove use of TARGET_DEFINED from the target_link_libraries test.
47b8d32 Remove use of TARGET_DEFINED from the ExportImport test.
2e39d21 Remove use of TARGET_DEFINED from target_include_directories test.
Brad King 12 years ago
parent
commit
b4bb074d8b

+ 0 - 1
Source/cmDocumentGeneratorExpressions.h

@@ -37,7 +37,6 @@
   "target in the same buildsystem. Expands to the empty string "        \
   "otherwise.\n"                                                        \
   "  $<TARGET_FILE:tgt>        = main file (.exe, .so.1.2, .a)\n"       \
-  "  $<TARGET_DEFINED:tgt>     = '1' if tgt is a target, else '0'\n"    \
   "  $<TARGET_LINKER_FILE:tgt> = file used to link (.a, .lib, .so)\n"   \
   "  $<TARGET_SONAME_FILE:tgt> = file with soname (.so.3)\n"            \
   "where \"tgt\" is the name of a target.  "                            \

+ 0 - 18
Source/cmGeneratorExpressionEvaluator.cxx

@@ -291,22 +291,6 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode
 } configurationTestNode;
 
 
-static const struct TargetDefinedNode : public cmGeneratorExpressionNode
-{
-  TargetDefinedNode() {}
-
-  virtual int NumExpectedParameters() const { return 1; }
-
-  std::string Evaluate(const std::vector<std::string> &parameters,
-                       cmGeneratorExpressionContext *context,
-                       const GeneratorExpressionContent *,
-                       cmGeneratorExpressionDAGChecker *) const
-  {
-    return context->Makefile->FindTargetToUse(parameters.front().c_str())
-      ? "1" : "0";
-  }
-} targetDefinedNode;
-
 //----------------------------------------------------------------------------
 static const char* targetPropertyTransitiveWhitelist[] = {
     "INTERFACE_INCLUDE_DIRECTORIES"
@@ -969,8 +953,6 @@ cmGeneratorExpressionNode* GetNode(const std::string &identifier)
     return &buildInterfaceNode;
   else if (identifier == "INSTALL_INTERFACE")
     return &installInterfaceNode;
-  else if (identifier == "TARGET_DEFINED")
-    return &targetDefinedNode;
   else if (identifier == "INSTALL_PREFIX")
     return &installPrefixNode;
   return 0;

+ 0 - 2
Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt

@@ -18,7 +18,5 @@ add_executable(consumer
 
 target_compile_definitions(consumer
   PRIVATE $<TARGET_PROPERTY:target_compile_definitions,INTERFACE_COMPILE_DEFINITIONS>
-  $<$<TARGET_DEFINED:notdefined>:SHOULD_NOT_BE_DEFINED>
-  $<$<TARGET_DEFINED:target_compile_definitions>:SHOULD_BE_DEFINED>
   -DDASH_D_DEFINE
 )

+ 0 - 8
Tests/CMakeCommands/target_compile_definitions/consumer.cpp

@@ -11,14 +11,6 @@
 #error Expected MY_INTERFACE_DEFINE
 #endif
 
-#ifdef SHOULD_NOT_BE_DEFINED
-#error Unexpected SHOULD_NOT_BE_DEFINED
-#endif
-
-#ifndef SHOULD_BE_DEFINED
-#error Expected SHOULD_BE_DEFINED
-#endif
-
 #ifndef DASH_D_DEFINE
 #error Expected DASH_D_DEFINE
 #endif

+ 3 - 3
Tests/CMakeCommands/target_include_directories/CMakeLists.txt

@@ -30,12 +30,12 @@ target_include_directories(target_include_directories
   PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/poison"
 )
 target_include_directories(target_include_directories
-  BEFORE PUBLIC "$<$<TARGET_DEFINED:target_include_directories>:${CMAKE_CURRENT_BINARY_DIR}/cure>"
+  BEFORE PUBLIC "$<$<STREQUAL:$<TARGET_PROPERTY:target_include_directories,TYPE>,EXECUTABLE>:${CMAKE_CURRENT_BINARY_DIR}/cure>"
 )
 
-# Has no effect because the target is not defined:
+# Has no effect because the target type is not SHARED_LIBRARY:
 target_include_directories(target_include_directories
-  BEFORE PUBLIC "$<$<TARGET_DEFINED:notdefined>:${CMAKE_CURRENT_BINARY_DIR}/poison>"
+  BEFORE PUBLIC "$<$<STREQUAL:$<TARGET_PROPERTY:target_include_directories,TYPE>,SHARED_LIBRARY>:${CMAKE_CURRENT_BINARY_DIR}/poison>"
 )
 
 add_executable(consumer

+ 4 - 4
Tests/CMakeCommands/target_link_libraries/CMakeLists.txt

@@ -103,7 +103,7 @@ target_compile_definitions(depG INTERFACE
 )
 
 add_executable(targetC targetC.cpp)
-# Creates a generator expression for include directories like
-#  $<$<TARGET_DEFINED:$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:depG>>:\
-#    $<TARGET_PROPERTY:$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:depG>,INTERFACE_INCLUDE_DIRECTORIES>>
-target_link_libraries(targetC $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:depG>)
+# The TARGET_PROPERTY expression is duplicated below to test that there is no
+# shortcutting of the evaluation by returning an empty string.
+set(_exe_test $<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>)
+target_link_libraries(targetC $<$<AND:${_exe_test},${_exe_test}>:depG>)

+ 1 - 1
Tests/ExportImport/Export/CMakeLists.txt

@@ -149,7 +149,7 @@ set_property(TARGET testLibRequired APPEND PROPERTY
     $<BUILD_INTERFACE:$<TARGET_PROPERTY:testLibIncludeRequired5,INTERFACE_INCLUDE_DIRECTORIES>>
     $<INSTALL_INTERFACE:$<TARGET_PROPERTY:testLibIncludeRequired6,INTERFACE_INCLUDE_DIRECTORIES>>
     # Test that the below is non-fatal
-    $<$<TARGET_DEFINED:not_a_target>:$<TARGET_PROPERTY:not_a_target,INTERFACE_INCLUDE_DIRECTORIES>>
+    $<$<STREQUAL:one,two>:$<TARGET_PROPERTY:not_a_target,INTERFACE_INCLUDE_DIRECTORIES>>
 )
 
 set_property(TARGET testLibRequired APPEND PROPERTY