From ed4328c607306a2aa6df4833a0dce4482edbc94c Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 30 Jun 2020 08:51:51 +0100 Subject: [PATCH] Fix missing build dependency on omp_gen. Summary: `include/llvm/Frontend/OpenMP/CMakeLists.txt` creates a new target called `omp_gen`, which is automatically added to `LLVM_COMMON_DEPENDS` by the `add_public_tablegen_target` macro. But it only gets added to the version of `LLVM_COMMON_DEPENDS` in the scope of that subsidiary CMakeLists file, and it doesn't propagate all the way back up to the permanent version of that variable which is actually used to set dependencies. The visible effect is that the output build scripts contain a missing dependency. For example, if I run cmake in Ninja output mode, and then run ninja -t commands tools/clang/examples/PrintFunctionNames/CMakeFiles/PrintFunctionNames.dir/PrintFunctionNames.cpp.o to list all the commands that are prerequisites of building that object file, then the list does not include the llvm-tblgen command that builds `include/llvm/Frontend/OpenMP/OMP.h.inc`, even though that generated include file is needed (by a chain of includes starting from `clang/AST/AST.h`), and that object file can't be compiled without it. This missing dependency can cause intermittent build failures, depending on the order that Ninja (or whatever) happens to schedule its commands. I've fixed it by adding a `set` command in two levels of `CMakeLists.txt` to propagate the modified version of `LLVM_COMMON_DEPENDS` back up through the parent scopes so that `omp_gen` does end up on the version seen by the main `llvm/CMakeLists.txt`. Reviewers: clementval, thakis, chandlerc, jdoerfert Reviewed By: clementval Subscribers: jdenny, mgorny, sstefan1, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D82659 --- llvm/include/llvm/CMakeLists.txt | 2 ++ llvm/include/llvm/Frontend/OpenMP/CMakeLists.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/llvm/include/llvm/CMakeLists.txt b/llvm/include/llvm/CMakeLists.txt index 7cf8699a..29c1c74 100644 --- a/llvm/include/llvm/CMakeLists.txt +++ b/llvm/include/llvm/CMakeLists.txt @@ -7,3 +7,5 @@ add_subdirectory(Frontend/OpenMP) if (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") configure_file(module.modulemap.build module.modulemap COPYONLY) endif (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") + +set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE) diff --git a/llvm/include/llvm/Frontend/OpenMP/CMakeLists.txt b/llvm/include/llvm/Frontend/OpenMP/CMakeLists.txt index 9bdc4b8..5215070 100644 --- a/llvm/include/llvm/Frontend/OpenMP/CMakeLists.txt +++ b/llvm/include/llvm/Frontend/OpenMP/CMakeLists.txt @@ -1,3 +1,5 @@ set(LLVM_TARGET_DEFINITIONS OMP.td) tablegen(LLVM OMP.h.inc --gen-directive-decls) add_public_tablegen_target(omp_gen) + +set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE) -- 2.7.4