@@ -213,3 +213,113 @@ function(merge_yaml)
213213 WORKING_DIRECTORY ${EXECUTORCH_ROOT}
214214 )
215215endfunction ()
216+
217+ function (append_filelist name outputvar)
218+ # configure_file adds its input to the list of CMAKE_RERUN dependencies
219+ configure_file (
220+ ${PROJECT_SOURCE_DIR} /build /build_variables.bzl
221+ ${PROJECT_BINARY_DIR} /build_variables.bzl COPYONLY
222+ )
223+ execute_process (
224+ COMMAND
225+ "${PYTHON_EXECUTABLE} " -c
226+ "exec(open('${PROJECT_SOURCE_DIR} /build/build_variables.bzl').read());print(';'.join(${name} ))"
227+ WORKING_DIRECTORY "${_rootdir} "
228+ RESULT_VARIABLE _retval
229+ OUTPUT_VARIABLE _tempvar
230+ ERROR_VARIABLE _stderr
231+ )
232+ if (NOT _retval EQUAL 0)
233+ message (
234+ FATAL_ERROR
235+ "Failed to fetch filelist ${name} from build_variables.bzl with output ${_tempvar} and stderr ${_stderr} "
236+ )
237+ endif ()
238+ string (REPLACE "\n " "" _tempvar "${_tempvar} " )
239+ list (APPEND ${outputvar} ${_tempvar} )
240+ set (${outputvar}
241+ "${${outputvar} }"
242+ PARENT_SCOPE
243+ )
244+ endfunction ()
245+
246+ function (validate_build_variables)
247+ include (${EXECUTORCH_SRCS_FILE} )
248+ set (BUILD_VARIABLES_FILELISTS
249+ EXECUTORCH_SRCS
250+ EXECUTORCH_CORE_SRCS
251+ PORTABLE_KERNELS_SRCS
252+ OPTIMIZED_KERNELS_SRCS
253+ QUANTIZED_KERNELS_SRCS
254+ PROGRAM_SCHEMA_SRCS
255+ OPTIMIZED_CPUBLAS_SRCS
256+ OPTIMIZED_NATIVE_CPU_OPS_OSS_SRCS
257+ EXTENSION_DATA_LOADER_SRCS
258+ EXTENSION_MODULE_SRCS
259+ EXTENSION_RUNNER_UTIL_SRCS
260+ EXTENSION_LLM_RUNNER_SRCS
261+ EXTENSION_TENSOR_SRCS
262+ EXTENSION_THREADPOOL_SRCS
263+ EXTENSION_TRAINING_SRCS
264+ TRAIN_XOR_SRCS
265+ EXECUTOR_RUNNER_SRCS
266+ SIZE_TEST_SRCS
267+ MPS_EXECUTOR_RUNNER_SRCS
268+ MPS_BACKEND_SRCS
269+ MPS_SCHEMA_SRCS
270+ XNN_EXECUTOR_RUNNER_SRCS
271+ XNNPACK_BACKEND_SRCS
272+ XNNPACK_SCHEMA_SRCS
273+ VULKAN_SCHEMA_SRCS
274+ CUSTOM_OPS_SRCS
275+ LLAMA_RUNNER_SRCS
276+ )
277+ set (BUILD_VARIABLES_VARNAMES
278+ _executorch__srcs
279+ _executorch_core__srcs
280+ _portable_kernels__srcs
281+ _optimized_kernels__srcs
282+ _quantized_kernels__srcs
283+ _program_schema__srcs
284+ _optimized_cpublas__srcs
285+ _optimized_native_cpu_ops_oss__srcs
286+ _extension_data_loader__srcs
287+ _extension_module__srcs
288+ _extension_runner_util__srcs
289+ _extension_llm_runner__srcs
290+ _extension_tensor__srcs
291+ _extension_threadpool__srcs
292+ _extension_training__srcs
293+ _train_xor__srcs
294+ _executor_runner__srcs
295+ _size_test__srcs
296+ _mps_executor_runner__srcs
297+ _mps_backend__srcs
298+ _mps_schema__srcs
299+ _xnn_executor_runner__srcs
300+ _xnnpack_backend__srcs
301+ _xnnpack_schema__srcs
302+ _vulkan_schema__srcs
303+ _custom_ops__srcs
304+ _llama_runner__srcs
305+ )
306+ foreach (filelist_and_varname IN ZIP_LISTS BUILD_VARIABLES_FILELISTS
307+ BUILD_VARIABLES_VARNAMES
308+ )
309+ append_filelist(
310+ ${filelist_and_varname_0}
311+ "${filelist_and_varname_1} _from_build_variables"
312+ )
313+ if (NOT ${filelist_and_varname_1} STREQUAL
314+ ${filelist_and_varname_1} _from_build_variables
315+ )
316+ message (
317+ FATAL_ERROR
318+ "Buck-generated ${filelist_and_varname_1} does not match hardcoded \
319+ ${filelist_and_varname_0} in build_variables.bzl. Left: \
320+ ${${filelist_and_varname_1} }\n \
321+ Right: ${${filelist_and_varname_1} _from_build_variables}"
322+ )
323+ endif ()
324+ endforeach ()
325+ endfunction ()
0 commit comments