CMakeLists.txt (4611B)
1 set(GENERATED_RUNTIME_DIR ${PROJECT_BINARY_DIR}/runtime) 2 3 set(GENERATED_HELP_TAGS ${GENERATED_RUNTIME_DIR}/doc/tags) 4 set(GENERATED_PACKAGE_DIR ${GENERATED_RUNTIME_DIR}/pack/dist/opt) 5 set(GENERATED_SYN_VIM ${GENERATED_RUNTIME_DIR}/syntax/vim/generated.vim) 6 set(SYN_VIM_GENERATOR ${PROJECT_SOURCE_DIR}/src/gen/gen_vimvim.lua) 7 8 file(MAKE_DIRECTORY ${GENERATED_RUNTIME_DIR}/syntax/vim) 9 10 get_directory_property(LUA_GEN DIRECTORY ${PROJECT_SOURCE_DIR}/src/nvim DEFINITION LUA_GEN) 11 get_directory_property(LUA_GEN_DEPS DIRECTORY ${PROJECT_SOURCE_DIR}/src/nvim DEFINITION LUA_GEN_DEPS) 12 13 add_custom_command(OUTPUT ${GENERATED_SYN_VIM} 14 COMMAND ${LUA_GEN} ${SYN_VIM_GENERATOR} ${GENERATED_SYN_VIM} ${FUNCS_DATA} 15 ${PROJECT_SOURCE_DIR}/src/nvim/options.lua 16 ${PROJECT_SOURCE_DIR}/src/nvim/auevents.lua 17 ${PROJECT_SOURCE_DIR}/src/nvim/ex_cmds.lua 18 ${PROJECT_SOURCE_DIR}/src/nvim/vvars.lua 19 DEPENDS 20 ${LUA_GEN_DEPS} 21 ${SYN_VIM_GENERATOR} 22 ${PROJECT_SOURCE_DIR}/src/nvim/ex_cmds.lua 23 ${PROJECT_SOURCE_DIR}/src/nvim/auevents.lua 24 ${PROJECT_SOURCE_DIR}/src/nvim/options.lua 25 ${PROJECT_SOURCE_DIR}/src/nvim/vvars.lua 26 ${PROJECT_SOURCE_DIR}/src/nvim/eval.c 27 ${FUNCS_DATA} 28 ) 29 30 file(GLOB PACKAGES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/pack/dist/opt/*) 31 32 set(GENERATED_PACKAGE_TAGS) 33 foreach(PACKAGE ${PACKAGES}) 34 get_filename_component(PACKNAME ${PACKAGE} NAME) 35 file(GLOB "${PACKNAME}_DOC_FILES" CONFIGURE_DEPENDS ${PACKAGE}/doc/*.txt) 36 if(${PACKNAME}_DOC_FILES) 37 file(MAKE_DIRECTORY ${GENERATED_PACKAGE_DIR}/${PACKNAME}) 38 add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags" 39 COMMAND ${CMAKE_COMMAND} -E copy_directory 40 ${PACKAGE} ${GENERATED_PACKAGE_DIR}/${PACKNAME} 41 COMMAND $<TARGET_FILE:nvim_bin> 42 -u NONE -i NONE -e --headless -c "helptags doc" -c quit 43 DEPENDS 44 nvim_bin 45 nvim_runtime_deps 46 WORKING_DIRECTORY "${GENERATED_PACKAGE_DIR}/${PACKNAME}" 47 ) 48 49 set("${PACKNAME}_DOC_NAMES") 50 foreach(DF "${${PACKNAME}_DOC_FILES}") 51 get_filename_component(F ${DF} NAME) 52 list(APPEND "${PACKNAME}_DOC_NAMES" ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/${F}) 53 endforeach() 54 55 install_helper( 56 FILES ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags "${${PACKNAME}_DOC_NAMES}" 57 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/pack/dist/opt/${PACKNAME}/doc) 58 59 list(APPEND GENERATED_PACKAGE_TAGS "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags") 60 endif() 61 endforeach() 62 63 set(BUILDDOCFILES) 64 foreach(DF ${DOCFILES}) 65 get_filename_component(F ${DF} NAME) 66 list(APPEND BUILDDOCFILES ${GENERATED_RUNTIME_DIR}/doc/${F}) 67 endforeach() 68 69 add_custom_command(OUTPUT ${GENERATED_HELP_TAGS} 70 COMMAND ${CMAKE_COMMAND} -E remove_directory doc 71 COMMAND ${CMAKE_COMMAND} -E copy_directory 72 ${PROJECT_SOURCE_DIR}/runtime/doc doc 73 COMMAND $<TARGET_FILE:nvim_bin> 74 -u NONE -i NONE -e --headless -c "helptags ++t doc" -c quit 75 DEPENDS 76 nvim_bin 77 nvim_runtime_deps 78 WORKING_DIRECTORY "${GENERATED_RUNTIME_DIR}" 79 ) 80 81 add_custom_target( 82 nvim_runtime 83 DEPENDS 84 ${GENERATED_SYN_VIM} 85 ${GENERATED_HELP_TAGS} 86 ${GENERATED_PACKAGE_TAGS} 87 ) 88 89 # CMake is painful here. It will create the destination using the user's 90 # current umask, and we don't want that. And we don't just want to install 91 # the target directory, as it will mess with existing permissions. So this 92 # seems like the best compromise. If we create it, then everyone can see it. 93 # If it's preexisting, leave it alone. 94 95 install_helper( 96 FILES ${GENERATED_HELP_TAGS} ${BUILDDOCFILES} 97 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/doc) 98 99 install_helper( 100 FILES ${GENERATED_SYN_VIM} 101 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/syntax/vim) 102 103 if(NOT APPLE) 104 install_helper( 105 FILES ${CMAKE_CURRENT_SOURCE_DIR}/nvim.desktop 106 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications) 107 endif() 108 109 install_helper( 110 FILES ${CMAKE_CURRENT_SOURCE_DIR}/nvim.png 111 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps) 112 113 file(GLOB RUNTIME_ROOT_FILES CONFIGURE_DEPENDS *.vim *.lua *.ico) 114 install_helper(FILES ${RUNTIME_ROOT_FILES} 115 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/) 116 117 file(GLOB RUNTIME_DIRS CONFIGURE_DEPENDS */) 118 foreach(D ${RUNTIME_DIRS}) 119 if(IS_DIRECTORY ${D}) 120 install_helper(DIRECTORY ${D} 121 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/) 122 endif() 123 endforeach() 124 125 # only foo.sh script in runtime/ 126 install_helper(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/less.sh DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/scripts/)