aboutsummaryrefslogtreecommitdiff
path: root/runtime/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/CMakeLists.txt')
-rw-r--r--runtime/CMakeLists.txt88
1 files changed, 75 insertions, 13 deletions
diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt
index cad8da6ffb..69498dc1a1 100644
--- a/runtime/CMakeLists.txt
+++ b/runtime/CMakeLists.txt
@@ -2,6 +2,8 @@ set(SYN_VIM_GENERATOR ${PROJECT_SOURCE_DIR}/scripts/genvimvim.lua)
set(GENERATED_RUNTIME_DIR ${PROJECT_BINARY_DIR}/runtime)
set(GENERATED_SYN_VIM ${GENERATED_RUNTIME_DIR}/syntax/vim/generated.vim)
set(GENERATED_HELP_TAGS ${GENERATED_RUNTIME_DIR}/doc/tags)
+set(GENERATED_PACKAGE_DIR ${GENERATED_RUNTIME_DIR}/pack/dist/opt)
+set(FUNCS_DATA ${PROJECT_BINARY_DIR}/funcs_data.mpack)
file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR})
file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}/syntax)
@@ -9,15 +11,57 @@ file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}/syntax/vim)
add_custom_command(OUTPUT ${GENERATED_SYN_VIM}
COMMAND ${LUA_PRG} ${SYN_VIM_GENERATOR}
- ${PROJECT_SOURCE_DIR}/src/nvim ${GENERATED_SYN_VIM}
+ ${PROJECT_SOURCE_DIR}/src/nvim ${GENERATED_SYN_VIM} ${FUNCS_DATA}
DEPENDS
${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/eval.c
+ ${FUNCS_DATA}
)
+if(POLICY CMP0054)
+ cmake_policy(SET CMP0054 OLD)
+endif()
+
+file(GLOB PACKAGES ${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" ${PACKAGE}/doc/*.txt)
+ if("${PACKNAME}_DOC_FILES")
+ file(MAKE_DIRECTORY ${GENERATED_PACKAGE_DIR}/${PACKNAME})
+ add_custom_target("${PACKNAME}-tags"
+ COMMAND ${CMAKE_COMMAND} -E copy_directory
+ ${PACKAGE} ${GENERATED_PACKAGE_DIR}/${PACKNAME}
+ COMMAND "${PROJECT_BINARY_DIR}/bin/nvim"
+ -u NONE -i NONE -e --headless -c "helptags doc" -c quit
+ DEPENDS
+ nvim
+ WORKING_DIRECTORY "${GENERATED_PACKAGE_DIR}/${PACKNAME}"
+ )
+
+ add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags"
+ DEPENDS
+ "${PACKNAME}-tags"
+ )
+
+ 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 ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/pack/dist/opt/${PACKNAME}/doc)
+
+ list(APPEND GENERATED_PACKAGE_TAGS "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags")
+ endif()
+endforeach()
+
file(GLOB DOCFILES ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt)
set(BUILDDOCFILES)
@@ -26,22 +70,25 @@ foreach(DF ${DOCFILES})
list(APPEND BUILDDOCFILES ${GENERATED_RUNTIME_DIR}/doc/${F})
endforeach()
-add_custom_command(OUTPUT copy_docfiles
- COMMAND ${CMAKE_COMMAND} -E copy_directory
+add_custom_target(helptags
+ COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/runtime/doc ${GENERATED_RUNTIME_DIR}/doc
+ COMMAND "${PROJECT_BINARY_DIR}/bin/nvim"
+ -u NONE -i NONE -e --headless -c "helptags ++t doc" -c quit
+ DEPENDS
+ nvim
+ WORKING_DIRECTORY "${GENERATED_RUNTIME_DIR}"
)
add_custom_command(OUTPUT ${GENERATED_HELP_TAGS}
- COMMAND "${PROJECT_BINARY_DIR}/bin/nvim"
- -u NONE
- -i NONE
- -e
- --headless
- -c "helptags ++t ."
- -c quit
DEPENDS
- copy_docfiles
- nvim
+ helptags
+)
+
+add_custom_target(doc_html
+ COMMAND make html
+ DEPENDS
+ ${GENERATED_HELP_TAGS}
WORKING_DIRECTORY "${GENERATED_RUNTIME_DIR}/doc"
)
@@ -50,8 +97,23 @@ add_custom_target(
DEPENDS
${GENERATED_SYN_VIM}
${GENERATED_HELP_TAGS}
+ ${GENERATED_PACKAGE_TAGS}
)
+# Optional targets for nvim.desktop file and icon.
+find_program(XDG_MENU_PRG xdg-desktop-menu)
+find_program(XDG_ICON_PRG xdg-icon-resource)
+if(XDG_MENU_PRG)
+ add_custom_target(desktop-file
+ COMMAND xdg-desktop-menu install --novendor ${PROJECT_SOURCE_DIR}/runtime/nvim.desktop)
+ # add_dependencies(runtime desktop-file)
+endif()
+if(XDG_ICON_PRG)
+ add_custom_target(desktop-icon
+ COMMAND xdg-icon-resource install --novendor --size 128 ${PROJECT_SOURCE_DIR}/runtime/nvim.png)
+ # add_dependencies(runtime desktop-icon)
+endif()
+
# CMake is painful here. It will create the destination using the user's
# current umask, and we don't want that. And we don't just want to install
# the target directory, as it will mess with existing permissions. So this
@@ -78,7 +140,7 @@ endforeach()
file(GLOB_RECURSE RUNTIME_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
- *.vim *.dict *.py *.ps *.tutor)
+ *.vim *.dict *.py *.rb *.ps *.tutor)
foreach(F ${RUNTIME_FILES})
get_filename_component(BASEDIR ${F} PATH)