aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Łuczyński <doubleloop@o2.pl>2021-10-17 14:46:44 +0200
committerJakub Łuczyński <doubleloop@o2.pl>2021-10-18 11:44:15 +0200
commit6b0a2e6996748916c8bd69175f81cfc161a2f180 (patch)
tree5a9e074f2fb805a841491baa983115ab994eed10
parent389a898586c1ed2c6cd50f3099ff50fe0645f86f (diff)
downloadrneovim-6b0a2e6996748916c8bd69175f81cfc161a2f180.tar.gz
rneovim-6b0a2e6996748916c8bd69175f81cfc161a2f180.tar.bz2
rneovim-6b0a2e6996748916c8bd69175f81cfc161a2f180.zip
build(install): rescan GLOB files on rebuild
-rw-r--r--cmake/InstallHelpers.cmake22
-rw-r--r--runtime/CMakeLists.txt16
2 files changed, 28 insertions, 10 deletions
diff --git a/cmake/InstallHelpers.cmake b/cmake/InstallHelpers.cmake
index bebc0d0d17..9d997260cd 100644
--- a/cmake/InstallHelpers.cmake
+++ b/cmake/InstallHelpers.cmake
@@ -154,3 +154,25 @@ function(install_helper)
${RENAME})
endif()
endfunction()
+
+# Without CONFIGURE_DEPENDS globbing reuses cached file tree on rebuild.
+# For example it will ignore new files.
+# CONFIGURE_DEPENDS was introduced in 3.12
+
+function(glob_wrapper outvar)
+ if(${CMAKE_VERSION} VERSION_LESS 3.12)
+ file(GLOB ${outvar} ${ARGN})
+ else()
+ file(GLOB ${outvar} CONFIGURE_DEPENDS ${ARGN})
+ endif()
+ set(${outvar} ${${outvar}} PARENT_SCOPE)
+endfunction()
+
+function(globrecurse_wrapper outvar root)
+ if(${CMAKE_VERSION} VERSION_LESS 3.12)
+ file(GLOB_RECURSE ${outvar} RELATIVE ${root} ${ARGN})
+ else()
+ file(GLOB_RECURSE ${outvar} CONFIGURE_DEPENDS RELATIVE ${root} ${ARGN})
+ endif()
+ set(${outvar} ${${outvar}} PARENT_SCOPE)
+endfunction()
diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt
index 4fdcfc0f33..37029874f2 100644
--- a/runtime/CMakeLists.txt
+++ b/runtime/CMakeLists.txt
@@ -21,12 +21,12 @@ add_custom_command(OUTPUT ${GENERATED_SYN_VIM}
${FUNCS_DATA}
)
-file(GLOB PACKAGES ${PROJECT_SOURCE_DIR}/runtime/pack/dist/opt/*)
+glob_wrapper(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)
+ glob_wrapper("${PACKNAME}_DOC_FILES" ${PACKAGE}/doc/*.txt)
if(${PACKNAME}_DOC_FILES)
file(MAKE_DIRECTORY ${GENERATED_PACKAGE_DIR}/${PACKNAME})
add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags"
@@ -54,7 +54,7 @@ foreach(PACKAGE ${PACKAGES})
endif()
endforeach()
-file(GLOB DOCFILES ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt)
+glob_wrapper(DOCFILES ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt)
set(BUILDDOCFILES)
foreach(DF ${DOCFILES})
@@ -114,9 +114,7 @@ if(NOT APPLE)
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps)
endif()
-file(GLOB_RECURSE RUNTIME_PROGRAMS
- RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
- *.awk *.sh *.bat)
+globrecurse_wrapper(RUNTIME_PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR} *.awk *.sh *.bat)
foreach(PROG ${RUNTIME_PROGRAMS})
get_filename_component(BASEDIR ${PROG} PATH)
@@ -124,10 +122,8 @@ foreach(PROG ${RUNTIME_PROGRAMS})
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/${BASEDIR})
endforeach()
-file(GLOB_RECURSE RUNTIME_FILES
- RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
- rgb.txt
- *.vim *.lua *.dict *.py *.rb *.ps *.spl *.tutor *.tutor.json)
+globrecurse_wrapper(RUNTIME_FILES ${CMAKE_CURRENT_SOURCE_DIR}
+ rgb.txt *.vim *.lua *.dict *.py *.rb *.ps *.spl *.tutor *.tutor.json)
foreach(F ${RUNTIME_FILES})
get_filename_component(BASEDIR ${F} PATH)