[llvm] r305142 - Added dependency on the TableGen executable file.

Galina Kistanova via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 10 00:48:50 PDT 2017


Author: gkistanova
Date: Sat Jun 10 02:48:49 2017
New Revision: 305142

URL: http://llvm.org/viewvc/llvm-project?rev=305142&view=rev
Log:
Added dependency on the TableGen executable file.

For the case when LLVM_OPTIMIZED_TABLEGEN is ON (enables LLVM_USE_HOST_TOOLS),
we need both _TABLEGEN_TARGET and _TABLEGEN_EXE in the  DEPENDS list
to have .inc files rebuilt on a tablegen change, as cmake does not propagate
file-level dependencies of custom targets.

We could always have just one dependency on both the target and
the file, but the 2 cases would produce cleaner cmake files.

Modified:
    llvm/trunk/cmake/modules/TableGen.cmake

Modified: llvm/trunk/cmake/modules/TableGen.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/TableGen.cmake?rev=305142&r1=305141&r2=305142&view=diff
==============================================================================
--- llvm/trunk/cmake/modules/TableGen.cmake (original)
+++ llvm/trunk/cmake/modules/TableGen.cmake Sat Jun 10 02:48:49 2017
@@ -30,19 +30,43 @@ function(tablegen project ofn)
     endif()
   endif()
 
-  add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
-    # Generate tablegen output in a temporary file.
-    COMMAND ${${project}_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR}
-    ${LLVM_TABLEGEN_FLAGS} 
-    ${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
-    -o ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
-    # The file in LLVM_TARGET_DEFINITIONS may be not in the current
-    # directory and local_tds may not contain it, so we must
-    # explicitly list it here:
-    DEPENDS ${${project}_TABLEGEN_TARGET} ${local_tds} ${global_tds}
-    ${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
-    COMMENT "Building ${ofn}..."
-    )
+  # We need both _TABLEGEN_TARGET and _TABLEGEN_EXE in the  DEPENDS list
+  # (both the target and the file) to have .inc files rebuilt on
+  # a tablegen change, as cmake does not propagate file-level dependencies
+  # of custom targets. See the following ticket for more information:
+  # https://cmake.org/Bug/view.php?id=15858
+  # We could always have just one dependency on both the target and
+  # the file, but these 2 cases would produce cleaner cmake files.
+  if (${${project}_TABLEGEN_TARGET} STREQUAL ${${project}_TABLEGEN_EXE})
+    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
+      # Generate tablegen output in a temporary file.
+      COMMAND ${${project}_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR}
+      ${LLVM_TABLEGEN_FLAGS}
+      ${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
+      -o ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
+      # The file in LLVM_TARGET_DEFINITIONS may be not in the current
+      # directory and local_tds may not contain it, so we must
+      # explicitly list it here:
+      DEPENDS ${${project}_TABLEGEN_TARGET} ${local_tds} ${global_tds}
+      ${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
+      COMMENT "Building ${ofn}..."
+      )
+  else()
+    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
+      # Generate tablegen output in a temporary file.
+      COMMAND ${${project}_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR}
+      ${LLVM_TABLEGEN_FLAGS}
+      ${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
+      -o ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
+      # The file in LLVM_TARGET_DEFINITIONS may be not in the current
+      # directory and local_tds may not contain it, so we must
+      # explicitly list it here:
+      DEPENDS ${${project}_TABLEGEN_TARGET} ${${project}_TABLEGEN_EXE}
+        ${local_tds} ${global_tds}
+      ${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
+      COMMENT "Building ${ofn}..."
+      )
+  endif()
   add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
     # Only update the real output file if there are any differences.
     # This prevents recompilation of all the files depending on it if there




More information about the llvm-commits mailing list