From 9763834170dda77ea25799dba403d6cbd513600f Mon Sep 17 00:00:00 2001 From: Rawan Khalid <145160003+Rawan10101@users.noreply.github.com> Date: Sat, 28 Feb 2026 14:17:46 +0200 Subject: [PATCH] fix(cmake): use host nlua0 binary when cross-compiling #38089 Problem: When cross-compiling, `$` resolves to the target binary, which cannot run on the host machine during the build process. Solution: Allow passing a host native nlua0 binary via `-DNLUA0_HOST_PRG=/path/to/nlua0` when cross-compiling, so code generation can run correctly on the host. --- src/nvim/CMakeLists.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index 132a87be02..711707302d 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -522,8 +522,13 @@ add_custom_command( "${NVIM_VERSION_DEF_H}" DEPENDS "${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef-$.h") -set(LUA_GEN ${LUA_GEN_PRG} ${GENERATOR_PRELOAD} ${PROJECT_SOURCE_DIR} $ ${PROJECT_BINARY_DIR}) -set(LUA_GEN_DEPS ${GENERATOR_PRELOAD} $) +if(CMAKE_CROSSCOMPILING AND NLUA0_HOST_PRG) + set(LUA_GEN ${LUA_GEN_PRG} ${GENERATOR_PRELOAD} ${PROJECT_SOURCE_DIR} ${NLUA0_HOST_PRG} ${PROJECT_BINARY_DIR}) + set(LUA_GEN_DEPS ${GENERATOR_PRELOAD} ${NLUA0_HOST_PRG}) +else() + set(LUA_GEN ${LUA_GEN_PRG} ${GENERATOR_PRELOAD} ${PROJECT_SOURCE_DIR} $ ${PROJECT_BINARY_DIR}) + set(LUA_GEN_DEPS ${GENERATOR_PRELOAD} $) +endif() # Like LUA_GEN but includes also vim.fn, vim.api, vim.uv, etc set(NVIM_LUA $ -u NONE -l ${NVIM_LUA_PRELOAD} ${PROJECT_SOURCE_DIR}) @@ -1024,4 +1029,4 @@ add_target(lintdocurls COMMAND ${NVIM_LUA} scripts/lintdoc.lua true DEPENDS ${DOCFILES} CUSTOM_COMMAND_ARGS USES_TERMINAL) -add_dependencies(lintdocurls nvim) +add_dependencies(lintdocurls nvim) \ No newline at end of file