]> granicus.if.org Git - llvm/commitdiff
[cmake] Fix dependency issue in TableGen
authorPengxuan Zheng <pzheng@quicinc.com>
Thu, 11 Apr 2019 21:05:15 +0000 (21:05 +0000)
committerPengxuan Zheng <pzheng@quicinc.com>
Thu, 11 Apr 2019 21:05:15 +0000 (21:05 +0000)
Summary:
There is a bug in add_tablegen which causes cmake to fail with the following
error message if LLVM_TABLEGEN is set.

CMake Error at cmake/modules/TableGen.cmake:147 (add_dependencies):
  The dependency target "LLVM-tablegen-host" of target "CLANG-tablegen-host"
  does not exist.
Call Stack (most recent call first):
  tools/clang/utils/TableGen/CMakeLists.txt:3 (add_tablegen)

The issue happens because setting LLVM_TABLEGEN causes cmake to skip generating
the LLVM-tablegen-host target. As a result, a non-existent target was added for
CLANG-tablegen-host causing cmake to fail.

In order to fix this issue, this patch adds a guard to check the validity of the
dependency target before adding it as a dependency.

Reviewers: aganea, smeenai

Reviewed By: aganea

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60576

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358226 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/TableGen.cmake

index 5d921818fcf3d3059e3013e8029ce8c00f507e4c..5a9ccbbbdf179ecee5c3749e36edd54e308d803a 100644 (file)
@@ -143,7 +143,8 @@ macro(add_tablegen target project)
       # Create an artificial dependency between tablegen projects, because they
       # compile the same dependencies, thus using the same build folders.
       # FIXME: A proper fix requires sequentially chaining tablegens.
-      if (NOT ${project} STREQUAL LLVM AND TARGET ${project}-tablegen-host)
+      if (NOT ${project} STREQUAL LLVM AND TARGET ${project}-tablegen-host AND
+          TARGET LLVM-tablegen-host)
         add_dependencies(${project}-tablegen-host LLVM-tablegen-host)
       endif()
     endif()