From 9995f15a98e8e1c75458a455b1a3ced8c155e634 Mon Sep 17 00:00:00 2001 From: Thomas Anderson Date: Mon, 25 May 2015 04:04:10 -0700 Subject: CMake: Fix helptags generation when prefix is not /usr. #2741 --- CMakeLists.txt | 4 +++- cmake/GenerateHelptags.cmake | 39 --------------------------------------- cmake/GenerateHelptags.cmake.in | 39 +++++++++++++++++++++++++++++++++++++++ config/pathdef.c.in | 2 +- 4 files changed, 43 insertions(+), 41 deletions(-) delete mode 100644 cmake/GenerateHelptags.cmake create mode 100644 cmake/GenerateHelptags.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 2faf5f7393..19e6253853 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -284,7 +284,9 @@ foreach(PROG ${RUNTIME_PROGRAMS}) install_helper(PROGRAMS ${PROG} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/${BASEDIR}) endforeach() -install(SCRIPT ${PROJECT_SOURCE_DIR}/cmake/GenerateHelptags.cmake) +configure_file(${PROJECT_SOURCE_DIR}/cmake/GenerateHelptags.cmake.in + ${PROJECT_BINARY_DIR}/cmake/GenerateHelptags.cmake @ONLY) +install(SCRIPT ${PROJECT_BINARY_DIR}/cmake/GenerateHelptags.cmake) # Go down the tree. diff --git a/cmake/GenerateHelptags.cmake b/cmake/GenerateHelptags.cmake deleted file mode 100644 index bc50db2ca4..0000000000 --- a/cmake/GenerateHelptags.cmake +++ /dev/null @@ -1,39 +0,0 @@ -if(DEFINED ENV{DESTDIR}) - file(TO_CMAKE_PATH - $ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/share/nvim/runtime/doc - HELPTAGS_WORKING_DIRECTORY) -else() - file(TO_CMAKE_PATH - ${CMAKE_INSTALL_PREFIX}/share/nvim/runtime/doc - HELPTAGS_WORKING_DIRECTORY) -endif() - -message(STATUS "Generating helptags in ${HELPTAGS_WORKING_DIRECTORY}.") -if(EXISTS ${HELPTAGS_WORKING_DIRECTORY}/) - message(STATUS "${HELPTAGS_WORKING_DIRECTORY} already exists") - # If the doc directory already exists, helptags could fail due to duplicate - # tags. Tell the user to remove the directory and try again. - set(TROUBLESHOOTING "\nRemove \"${HELPTAGS_WORKING_DIRECTORY}\" and try again.") -endif() - -# Workaround for hanging "yes | nvim -c 'helptags ++t .'" -# and therefore hanging "yes | make install": -# Set INPUT_FILE to an empty file, causing execute_process -# to disregard other standard input (such as "yes |"). -set(EMPTY_FILE ${CMAKE_CURRENT_BINARY_DIR}/.GenerateHelptags) -file(WRITE ${EMPTY_FILE} "") -execute_process( - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bin/nvim - -u NONE - -esX - -c "helptags ++t ." - -c quit - WORKING_DIRECTORY ${HELPTAGS_WORKING_DIRECTORY} - INPUT_FILE ${EMPTY_FILE} - OUTPUT_VARIABLE err - ERROR_VARIABLE err - RESULT_VARIABLE res) - -if(NOT res EQUAL 0) - message(FATAL_ERROR "Generating helptags failed: ${err} - ${res}${TROUBLESHOOTING}") -endif() diff --git a/cmake/GenerateHelptags.cmake.in b/cmake/GenerateHelptags.cmake.in new file mode 100644 index 0000000000..0df10d730e --- /dev/null +++ b/cmake/GenerateHelptags.cmake.in @@ -0,0 +1,39 @@ +if(DEFINED ENV{DESTDIR}) + file(TO_CMAKE_PATH + $ENV{DESTDIR}/@CMAKE_INSTALL_FULL_DATADIR@/nvim/runtime/doc + HELPTAGS_WORKING_DIRECTORY) +else() + file(TO_CMAKE_PATH + @CMAKE_INSTALL_FULL_DATADIR@/nvim/runtime/doc + HELPTAGS_WORKING_DIRECTORY) +endif() + +message(STATUS "Generating helptags in ${HELPTAGS_WORKING_DIRECTORY}.") +if(EXISTS ${HELPTAGS_WORKING_DIRECTORY}/) + message(STATUS "${HELPTAGS_WORKING_DIRECTORY} already exists") + # If the doc directory already exists, helptags could fail due to duplicate + # tags. Tell the user to remove the directory and try again. + set(TROUBLESHOOTING "\nRemove \"${HELPTAGS_WORKING_DIRECTORY}\" and try again.") +endif() + +# Workaround for hanging "yes | nvim -c 'helptags ++t .'" +# and therefore hanging "yes | make install": +# Set INPUT_FILE to an empty file, causing execute_process +# to disregard other standard input (such as "yes |"). +set(EMPTY_FILE ${CMAKE_CURRENT_BINARY_DIR}/.GenerateHelptags) +file(WRITE ${EMPTY_FILE} "") +execute_process( + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bin/nvim + -u NONE + -esX + -c "helptags ++t ." + -c quit + WORKING_DIRECTORY ${HELPTAGS_WORKING_DIRECTORY} + INPUT_FILE ${EMPTY_FILE} + OUTPUT_VARIABLE err + ERROR_VARIABLE err + RESULT_VARIABLE res) + +if(NOT res EQUAL 0) + message(FATAL_ERROR "Generating helptags failed: ${err} - ${res}${TROUBLESHOOTING}") +endif() diff --git a/config/pathdef.c.in b/config/pathdef.c.in index faf4267ce8..4579fbe455 100644 --- a/config/pathdef.c.in +++ b/config/pathdef.c.in @@ -1,5 +1,5 @@ #include "${PROJECT_SOURCE_DIR}/src/nvim/vim.h" -char *default_vim_dir = "${CMAKE_INSTALL_PREFIX}/share/nvim"; +char *default_vim_dir = "${CMAKE_INSTALL_FULL_DATAROOTDIR}/nvim"; char *default_vimruntime_dir = ""; char_u *compiled_user = (char_u *)"${USERNAME}"; char_u *compiled_sys = (char_u *)"${HOSTNAME}"; -- cgit