Home Explore Blog CI



neovim

9th chunk of `src/nvim/CMakeLists.txt`
c1b6b354f70f6a1dd3dcf5e4a53e91da8125a0fc0d1a7d480000000100000fbb
   ${LUA_GEN_DEPS}
    ${API_HEADERS}
    ${MSGPACK_RPC_HEADERS}
    ${API_DISPATCH_GENERATOR}
    ${GENERATOR_C_GRAMMAR}
    ${GENERATOR_HASHY}
    ${GENERATOR_DIR}/dump_bin_array.lua
    ${UI_METADATA}
    ${NVIM_VERSION_LUA}
    ${NVIM_VERSION_GIT_H}
    ${CMAKE_CURRENT_LIST_DIR}/api/dispatch_deprecated.lua
)

add_custom_command(
  OUTPUT ${VIM_MODULE_FILE}
  COMMAND ${CMAKE_COMMAND} -E env
      "LUAC_PRG=${LUAC_PRG}"
      ${LUA_PRG} ${CHAR_BLOB_GENERATOR} -c ${VIM_MODULE_FILE}
      # NB: vim._init_packages and vim.inspect must be be first and second ones
      # respectively, otherwise --luamod-dev won't work properly.
      ${LUA_INIT_PACKAGES_MODULE_SOURCE} "vim._init_packages"
      ${LUA_INSPECT_MODULE_SOURCE} "vim.inspect"
      ${LUA_EDITOR_MODULE_SOURCE} "vim._editor"
      ${LUA_FILETYPE_MODULE_SOURCE} "vim.filetype"
      ${LUA_FS_MODULE_SOURCE} "vim.fs"
      ${LUA_F_MODULE_SOURCE} "vim.F"
      ${LUA_KEYMAP_MODULE_SOURCE} "vim.keymap"
      ${LUA_LOADER_MODULE_SOURCE} "vim.loader"
      ${LUA_DEFAULTS_MODULE_SOURCE} "vim._defaults"
      ${LUA_OPTIONS_MODULE_SOURCE} "vim._options"
      ${LUA_SHARED_MODULE_SOURCE} "vim.shared"
      ${LUA_TEXT_MODULE_SOURCE} "vim.text"
  DEPENDS
    ${CHAR_BLOB_GENERATOR}
    ${LUA_INIT_PACKAGES_MODULE_SOURCE}
    ${LUA_INSPECT_MODULE_SOURCE}
    ${LUA_EDITOR_MODULE_SOURCE}
    ${LUA_FILETYPE_MODULE_SOURCE}
    ${LUA_FS_MODULE_SOURCE}
    ${LUA_F_MODULE_SOURCE}
    ${LUA_KEYMAP_MODULE_SOURCE}
    ${LUA_LOADER_MODULE_SOURCE}
    ${LUA_DEFAULTS_MODULE_SOURCE}
    ${LUA_OPTIONS_MODULE_SOURCE}
    ${LUA_SHARED_MODULE_SOURCE}
    ${LUA_TEXT_MODULE_SOURCE}
  VERBATIM
)

add_custom_command(
  OUTPUT ${GENERATED_UI_EVENTS_CALL}
         ${GENERATED_UI_EVENTS_REMOTE}
         ${UI_METADATA}
         ${GENERATED_UI_EVENTS_CLIENT}
  COMMAND ${LUA_GEN} ${API_UI_EVENTS_GENERATOR}
                     ${CMAKE_CURRENT_LIST_DIR}/api/ui_events.in.h
                     ${GENERATED_UI_EVENTS_CALL}
                     ${GENERATED_UI_EVENTS_REMOTE}
                     ${UI_METADATA}
                     ${GENERATED_UI_EVENTS_CLIENT}
  DEPENDS
    ${LUA_GEN_DEPS}
    ${API_UI_EVENTS_GENERATOR}
    ${GENERATOR_C_GRAMMAR}
    ${GENERATOR_HASHY}
    ${CMAKE_CURRENT_LIST_DIR}/api/ui_events.in.h
)

add_custom_command(OUTPUT ${GENERATED_EX_CMDS_ENUM} ${GENERATED_EX_CMDS_DEFS}
  COMMAND ${LUA_GEN} ${EX_CMDS_GENERATOR} ${GENERATED_EX_CMDS_ENUM} ${GENERATED_EX_CMDS_DEFS} ${CMAKE_CURRENT_LIST_DIR}/ex_cmds.lua
  DEPENDS ${LUA_GEN_DEPS} ${EX_CMDS_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/ex_cmds.lua
)

add_custom_command(OUTPUT ${GENERATED_FUNCS} ${FUNCS_DATA}
  COMMAND ${LUA_GEN} ${FUNCS_GENERATOR} ${GENERATED_FUNCS} ${FUNCS_METADATA} ${FUNCS_DATA} ${CMAKE_CURRENT_LIST_DIR}/eval.lua
  DEPENDS ${LUA_GEN_DEPS} ${FUNCS_GENERATOR} ${GENERATOR_HASHY} ${CMAKE_CURRENT_LIST_DIR}/eval.lua ${FUNCS_METADATA}
)

add_custom_command(OUTPUT ${GENERATED_EVENTS_ENUM} ${GENERATED_EVENTS_NAMES_MAP}
  COMMAND ${LUA_GEN} ${EVENTS_GENERATOR} ${GENERATED_EVENTS_ENUM} ${GENERATED_EVENTS_NAMES_MAP} ${CMAKE_CURRENT_LIST_DIR}/auevents.lua
  DEPENDS ${LUA_GEN_DEPS} ${EVENTS_GENERATOR} ${GENERATOR_HASHY} ${CMAKE_CURRENT_LIST_DIR}/auevents.lua
)

add_custom_command(OUTPUT ${GENERATED_KEYCODE_NAMES}
  COMMAND ${LUA_GEN} ${KEYCODES_GENERATOR} ${GENERATED_KEYCODE_NAMES} ${CMAKE_CURRENT_LIST_DIR}/keycodes.lua
  DEPENDS ${LUA_GEN_DEPS} ${KEYCODES_GENERATOR} ${GENERATOR_HASHY} ${CMAKE_CURRENT_LIST_DIR}/keycodes.lua
)

add_custom_command(OUTPUT ${GENERATED_OPTIONS} ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP} ${GENERATED_OPTION_VARS}
  COMMAND ${LUA_GEN} ${OPTIONS_GENERATOR} ${GENERATED_OPTIONS} ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP} ${GENERATED_OPTION_VARS} ${CMAKE_CURRENT_LIST_DIR}/options.lua
  DEPENDS ${LUA_GEN_DEPS} ${OPTIONS_GENERATOR} ${GENERATOR_HASHY} ${CMAKE_CURRENT_LIST_DIR}/options.lua
)

list(APPEND NVIM_GENERATED_FOR_HEADERS
  "${GENERATED_EX_CMDS_ENUM}"
  "${GENERATED_EVENTS_ENUM}"
  "${GENERATED_KEYSETS_DEFS}"
  "${GENERATED_OPTIONS_ENUM}"

Title: Module and Code Generation Commands
Summary
This section details commands for generating various components of the application using Lua scripts. It creates the `vim` module by bundling several Lua modules, defines UI event handling, generates enumerations and definitions for EX commands, generates function-related code, generates events enumerations and names maps, generates keycode names, and generates options-related code, including enumerations, maps, and variables. All generated header files are then added to a list.