LLVMProcessSources.cmake: Improve PARTIAL_SOURCES_INTENDED.
authorNAKAMURA Takumi <geek4civic@gmail.com>
Mon, 17 May 2021 15:01:30 +0000 (00:01 +0900)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Sun, 12 Feb 2023 11:12:37 +0000 (20:12 +0900)
The last non-partial-specified target can collect and check source files.

Case A:
  llvm_add_library(foo PARTIAL_SOURCES_INTENDED ...)
  llvm_add_library(bar PARTIAL_SOURCES_INTENDED ...)
  llvm_add_library(baz ...)

  baz checks source files in foo, bar, and baz.

Case B:
  llvm_add_library(hoge PARTIAL_SOURCES_INTENDED ...)
  llvm_add_library(fuga PARTIAL_SOURCES_INTENDED ...)
  llvm_add_library(piyo PARTIAL_SOURCES_INTENDED ...)
  llvm_check_source_file_list() # Explicitly checks sources in hoge, fuga, and piyo.

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

llvm/cmake/modules/LLVMProcessSources.cmake

index e021943..340aa7b 100644 (file)
@@ -59,9 +59,7 @@ endfunction(find_all_header_files)
 function(llvm_process_sources OUT_VAR)
   cmake_parse_arguments(ARG "PARTIAL_SOURCES_INTENDED" "" "ADDITIONAL_HEADERS;ADDITIONAL_HEADER_DIRS" ${ARGN})
   set(sources ${ARG_UNPARSED_ARGUMENTS})
-  if (NOT ARG_PARTIAL_SOURCES_INTENDED)
-    llvm_check_source_file_list(${sources})
-  endif()
+  llvm_check_source_file_list(${sources})
 
   # This adds .td and .h files to the Visual Studio solution:
   add_td_sources(sources)
@@ -90,6 +88,12 @@ function(llvm_check_source_file_list)
     file(GLOB globbed *.c *.cpp)
   endif()
 
+  set_property(DIRECTORY APPEND PROPERTY LLVM_SOURCE_FILES ${listed})
+  if (ARG_PARTIAL_SOURCES_INTENDED) # llvm_process_source's scope
+    return()
+  endif()
+  get_directory_property(listed LLVM_SOURCE_FILES)
+
   foreach(g ${globbed})
     get_filename_component(fn ${g} NAME)
     if(ARG_SOURCE_DIR)