Home Explore Blog CI



neovim

1st chunk of `runtime/CMakeLists.txt`
af297d06727fe8a186d9de99b8df07922a7d171490efc8210000000100000909
set(GENERATED_RUNTIME_DIR ${PROJECT_BINARY_DIR}/runtime)

set(GENERATED_HELP_TAGS ${GENERATED_RUNTIME_DIR}/doc/tags)
set(GENERATED_PACKAGE_DIR ${GENERATED_RUNTIME_DIR}/pack/dist/opt)
set(GENERATED_SYN_VIM ${GENERATED_RUNTIME_DIR}/syntax/vim/generated.vim)
set(SYN_VIM_GENERATOR ${PROJECT_SOURCE_DIR}/src/gen/gen_vimvim.lua)

file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}/syntax/vim)

get_directory_property(LUA_GEN DIRECTORY ${PROJECT_SOURCE_DIR}/src/nvim DEFINITION LUA_GEN)
get_directory_property(LUA_GEN_DEPS DIRECTORY ${PROJECT_SOURCE_DIR}/src/nvim DEFINITION LUA_GEN_DEPS)

add_custom_command(OUTPUT ${GENERATED_SYN_VIM}
  COMMAND ${LUA_GEN} ${SYN_VIM_GENERATOR} ${GENERATED_SYN_VIM} ${FUNCS_DATA}
    ${PROJECT_SOURCE_DIR}/src/nvim/options.lua
    ${PROJECT_SOURCE_DIR}/src/nvim/auevents.lua
    ${PROJECT_SOURCE_DIR}/src/nvim/ex_cmds.lua
    ${PROJECT_SOURCE_DIR}/src/nvim/vvars.lua
  DEPENDS
    ${LUA_GEN_DEPS}
    ${SYN_VIM_GENERATOR}
    ${PROJECT_SOURCE_DIR}/src/nvim/ex_cmds.lua
    ${PROJECT_SOURCE_DIR}/src/nvim/auevents.lua
    ${PROJECT_SOURCE_DIR}/src/nvim/options.lua
    ${PROJECT_SOURCE_DIR}/src/nvim/vvars.lua
    ${PROJECT_SOURCE_DIR}/src/nvim/eval.c
    ${FUNCS_DATA}
)

file(GLOB PACKAGES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/pack/dist/opt/*)

set(GENERATED_PACKAGE_TAGS)
foreach(PACKAGE ${PACKAGES})
  get_filename_component(PACKNAME ${PACKAGE} NAME)
  file(GLOB "${PACKNAME}_DOC_FILES" CONFIGURE_DEPENDS ${PACKAGE}/doc/*.txt)
  if(${PACKNAME}_DOC_FILES)
    file(MAKE_DIRECTORY ${GENERATED_PACKAGE_DIR}/${PACKNAME})
    add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags"
      COMMAND ${CMAKE_COMMAND} -E copy_directory
        ${PACKAGE} ${GENERATED_PACKAGE_DIR}/${PACKNAME}
      COMMAND $<TARGET_FILE:nvim_bin>
        -u NONE -i NONE -e --headless -c "helptags doc" -c quit
      DEPENDS
        nvim_bin
        nvim_runtime_deps
      WORKING_DIRECTORY "${GENERATED_PACKAGE_DIR}/${PACKNAME}"
    )

    set("${PACKNAME}_DOC_NAMES")
    foreach(DF "${${PACKNAME}_DOC_FILES}")
      get_filename_component(F ${DF} NAME)
      list(APPEND "${PACKNAME}_DOC_NAMES" ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/${F})
    endforeach()

    install_helper(
      FILES ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags "${${PACKNAME}_DOC_NAMES}"
      DESTINATION

Title: CMake Configuration for Generating Runtime Files and Documentation
Summary
This section of the CMake configuration defines variables for generated runtime directories and files, including help tags, package directories, and Vim syntax files. It uses custom commands to generate the Vim syntax file from Lua scripts and to create documentation tags for packages in the runtime directory. The configuration also handles copying package directories and generating help tags within those directories.