diff options
author | dundargoc <gocdundar@gmail.com> | 2024-03-18 12:23:53 +0100 |
---|---|---|
committer | dundargoc <33953936+dundargoc@users.noreply.github.com> | 2024-03-23 13:36:12 +0100 |
commit | 2c1e8f7e96926f70151d737ea32f1e6ff3589263 (patch) | |
tree | b15ec6229fcbb724f18a7a7d5db3d10676fd42b7 | |
parent | 881f5e59173a4f1b9a4cb16e425709e40d79d0e9 (diff) | |
download | rneovim-2c1e8f7e96926f70151d737ea32f1e6ff3589263.tar.gz rneovim-2c1e8f7e96926f70151d737ea32f1e6ff3589263.tar.bz2 rneovim-2c1e8f7e96926f70151d737ea32f1e6ff3589263.zip |
build: use `GIT_REPOSITORY` for local URLs
`GIT_REPOSITORY` will cause cmake to rebuild if local dependency
changes, which isn't the case for `URL`.
Also document how to test a different commits of a dependency.
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | CONTRIBUTING.md | 24 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildGettext.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibiconv.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibuv.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibvterm.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLpeg.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLua.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLuajit.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLuv.cmake | 8 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildMsgpack.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildTreesitter.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildTreesitterParsers.cmake | 8 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildUnibilium.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/GetBinaryDeps.cmake | 4 | ||||
-rw-r--r-- | cmake/Deps.cmake | 25 |
16 files changed, 61 insertions, 52 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 009b562953..c3b37cbb35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -309,7 +309,7 @@ ExternalProject_Add(uncrustify CMAKE_ARGS ${DEPS_CMAKE_ARGS} CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS} EXCLUDE_FROM_ALL TRUE - ${EXTERNALPROJECT_OPTIONS}) + DOWNLOAD_NO_PROGRESS TRUE) option(USE_BUNDLED_BUSTED "Use bundled busted" ON) if(USE_BUNDLED_BUSTED) @@ -322,7 +322,7 @@ if(USE_BUNDLED_BUSTED) BUILD_COMMAND "" INSTALL_COMMAND "" EXCLUDE_FROM_ALL TRUE - ${EXTERNALPROJECT_OPTIONS}) + DOWNLOAD_NO_PROGRESS TRUE) else() add_custom_target(lua-dev-deps) endif() diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2f5c2cce5a..b10289a694 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -318,6 +318,30 @@ types, etc. See [:help dev-lua-doc][dev-lua-doc]. - Private functions usually should be underscore-prefixed (named "_foo", not "foo"). - Mark deprecated functions with `@deprecated`. +Third-party dependencies +------------------------ + +To build Nvim using a different commit of a dependency change the appropriate +URL in `cmake.deps/deps.txt`. For example, to use a different version of luajit +replace the value in `LUAJIT_URL` with the wanted commit hash: + +```bash +LUAJIT_URL https://github.com/LuaJIT/LuaJIT/archive/<sha>.tar.gz +``` + +Set `DEPS_IGNORE_SHA` to `TRUE` in `cmake.deps/CMakeLists.txt` to skip hash +check from cmake. + +Alternatively, you may point the URL as a local path where the repository is. +This is convenient when bisecting a problem in a dependency with `git bisect`. +This requires running `make distclean` the first time once to remove traces of +the previous build. Hash checking is always skipped in this case regardless of +`DEPS_IGNORE_SHA`. + +```bash +LUAJIT_URL /home/user/luajit +``` + Reviewing --------- diff --git a/cmake.deps/cmake/BuildGettext.cmake b/cmake.deps/cmake/BuildGettext.cmake index 0d6b323fa2..c80a826f96 100644 --- a/cmake.deps/cmake/BuildGettext.cmake +++ b/cmake.deps/cmake/BuildGettext.cmake @@ -1,8 +1,6 @@ if(MSVC) - get_sha(gettext ${DEPS_IGNORE_SHA}) + get_externalproject_options(gettext ${DEPS_IGNORE_SHA}) ExternalProject_Add(gettext - URL ${GETTEXT_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/gettext PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/GettextCMakeLists.txt diff --git a/cmake.deps/cmake/BuildLibiconv.cmake b/cmake.deps/cmake/BuildLibiconv.cmake index f4d7ace2c6..93dc251166 100644 --- a/cmake.deps/cmake/BuildLibiconv.cmake +++ b/cmake.deps/cmake/BuildLibiconv.cmake @@ -1,8 +1,6 @@ if(MSVC) - get_sha(libiconv ${DEPS_IGNORE_SHA}) + get_externalproject_options(libiconv ${DEPS_IGNORE_SHA}) ExternalProject_Add(libiconv - URL ${LIBICONV_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libiconv PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibiconvCMakeLists.txt diff --git a/cmake.deps/cmake/BuildLibuv.cmake b/cmake.deps/cmake/BuildLibuv.cmake index 98d78db8f1..aacee9fd4a 100644 --- a/cmake.deps/cmake/BuildLibuv.cmake +++ b/cmake.deps/cmake/BuildLibuv.cmake @@ -1,7 +1,5 @@ -get_sha(libuv ${DEPS_IGNORE_SHA}) +get_externalproject_options(libuv ${DEPS_IGNORE_SHA}) ExternalProject_Add(libuv - URL ${LIBUV_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libuv CMAKE_ARGS ${DEPS_CMAKE_ARGS} -D CMAKE_INSTALL_LIBDIR=lib diff --git a/cmake.deps/cmake/BuildLibvterm.cmake b/cmake.deps/cmake/BuildLibvterm.cmake index f928faad01..a3b59d9374 100644 --- a/cmake.deps/cmake/BuildLibvterm.cmake +++ b/cmake.deps/cmake/BuildLibvterm.cmake @@ -1,7 +1,5 @@ -get_sha(libvterm ${DEPS_IGNORE_SHA}) +get_externalproject_options(libvterm ${DEPS_IGNORE_SHA}) ExternalProject_Add(libvterm - URL ${LIBVTERM_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libvterm PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibvtermCMakeLists.txt diff --git a/cmake.deps/cmake/BuildLpeg.cmake b/cmake.deps/cmake/BuildLpeg.cmake index e46a3cb16f..a8455a9976 100644 --- a/cmake.deps/cmake/BuildLpeg.cmake +++ b/cmake.deps/cmake/BuildLpeg.cmake @@ -1,7 +1,5 @@ -get_sha(lpeg ${DEPS_IGNORE_SHA}) +get_externalproject_options(lpeg ${DEPS_IGNORE_SHA}) ExternalProject_Add(lpeg - URL ${LPEG_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lpeg PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/LpegCMakeLists.txt diff --git a/cmake.deps/cmake/BuildLua.cmake b/cmake.deps/cmake/BuildLua.cmake index e47720de47..9a9f90db31 100644 --- a/cmake.deps/cmake/BuildLua.cmake +++ b/cmake.deps/cmake/BuildLua.cmake @@ -40,10 +40,8 @@ set(LUA_CONFIGURE_COMMAND -i ${DEPS_BUILD_DIR}/src/lua/src/luaconf.h) set(LUA_INSTALL_TOP_ARG "INSTALL_TOP=${DEPS_INSTALL_DIR}") -get_sha(lua ${DEPS_IGNORE_SHA}) +get_externalproject_options(lua ${DEPS_IGNORE_SHA}) ExternalProject_Add(lua - URL ${LUA_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua CONFIGURE_COMMAND "${LUA_CONFIGURE_COMMAND}" BUILD_IN_SOURCE 1 diff --git a/cmake.deps/cmake/BuildLuajit.cmake b/cmake.deps/cmake/BuildLuajit.cmake index de9add43ca..c5068d6986 100644 --- a/cmake.deps/cmake/BuildLuajit.cmake +++ b/cmake.deps/cmake/BuildLuajit.cmake @@ -11,10 +11,8 @@ function(BuildLuajit) set(_luajit_TARGET "luajit") endif() - get_sha(luajit ${DEPS_IGNORE_SHA}) + get_externalproject_options(luajit ${DEPS_IGNORE_SHA}) ExternalProject_Add(${_luajit_TARGET} - URL ${LUAJIT_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${_luajit_TARGET} CONFIGURE_COMMAND "${_luajit_CONFIGURE_COMMAND}" BUILD_IN_SOURCE 1 diff --git a/cmake.deps/cmake/BuildLuv.cmake b/cmake.deps/cmake/BuildLuv.cmake index bf87cde68b..beadf028ee 100644 --- a/cmake.deps/cmake/BuildLuv.cmake +++ b/cmake.deps/cmake/BuildLuv.cmake @@ -17,21 +17,17 @@ if(CMAKE_GENERATOR MATCHES "Unix Makefiles" AND list(APPEND LUV_CMAKE_ARGS -D CMAKE_MAKE_PROGRAM=gmake) endif() -get_sha(lua_compat53 ${DEPS_IGNORE_SHA}) +get_externalproject_options(lua_compat53 ${DEPS_IGNORE_SHA}) ExternalProject_Add(lua_compat53 - URL ${LUA_COMPAT53_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua_compat53 CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" ${EXTERNALPROJECT_OPTIONS}) -get_sha(luv ${DEPS_IGNORE_SHA}) +get_externalproject_options(luv ${DEPS_IGNORE_SHA}) ExternalProject_Add(luv DEPENDS lua_compat53 - URL ${LUV_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luv SOURCE_DIR ${DEPS_BUILD_DIR}/src/luv CMAKE_ARGS ${DEPS_CMAKE_ARGS} ${LUV_CMAKE_ARGS} diff --git a/cmake.deps/cmake/BuildMsgpack.cmake b/cmake.deps/cmake/BuildMsgpack.cmake index 8cc648db13..190a37bbc6 100644 --- a/cmake.deps/cmake/BuildMsgpack.cmake +++ b/cmake.deps/cmake/BuildMsgpack.cmake @@ -1,7 +1,5 @@ -get_sha(msgpack ${DEPS_IGNORE_SHA}) +get_externalproject_options(msgpack ${DEPS_IGNORE_SHA}) ExternalProject_Add(msgpack - URL ${MSGPACK_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/msgpack CMAKE_ARGS ${DEPS_CMAKE_ARGS} -D MSGPACK_BUILD_TESTS=OFF diff --git a/cmake.deps/cmake/BuildTreesitter.cmake b/cmake.deps/cmake/BuildTreesitter.cmake index 839b7b19c3..6757185425 100644 --- a/cmake.deps/cmake/BuildTreesitter.cmake +++ b/cmake.deps/cmake/BuildTreesitter.cmake @@ -1,7 +1,5 @@ -get_sha(treesitter ${DEPS_IGNORE_SHA}) +get_externalproject_options(treesitter ${DEPS_IGNORE_SHA}) ExternalProject_Add(treesitter - URL ${TREESITTER_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/treesitter PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/TreesitterCMakeLists.txt diff --git a/cmake.deps/cmake/BuildTreesitterParsers.cmake b/cmake.deps/cmake/BuildTreesitterParsers.cmake index d251d65354..892e5928a5 100644 --- a/cmake.deps/cmake/BuildTreesitterParsers.cmake +++ b/cmake.deps/cmake/BuildTreesitterParsers.cmake @@ -15,14 +15,10 @@ function(BuildTSParser) set(TS_CMAKE_FILE TreesitterParserCMakeLists.txt) endif() - set(NAME treesitter-${TS_LANG}) - string(TOUPPER "TREESITTER_${TS_LANG}_URL" URL_VARNAME) - set(URL ${${URL_VARNAME}}) + set(NAME treesitter_${TS_LANG}) - get_sha(treesitter_${TS_LANG} ${DEPS_IGNORE_SHA}) + get_externalproject_options(${NAME} ${DEPS_IGNORE_SHA}) ExternalProject_Add(${NAME} - URL ${URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME} PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE} diff --git a/cmake.deps/cmake/BuildUnibilium.cmake b/cmake.deps/cmake/BuildUnibilium.cmake index 5cbf8a961b..bb9c8f183b 100644 --- a/cmake.deps/cmake/BuildUnibilium.cmake +++ b/cmake.deps/cmake/BuildUnibilium.cmake @@ -1,7 +1,5 @@ -get_sha(unibilium ${DEPS_IGNORE_SHA}) +get_externalproject_options(unibilium ${DEPS_IGNORE_SHA}) ExternalProject_Add(unibilium - URL ${UNIBILIUM_URL} - ${EXTERNALPROJECT_URL_HASH} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium CMAKE_ARGS ${DEPS_CMAKE_ARGS} CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS} diff --git a/cmake.deps/cmake/GetBinaryDeps.cmake b/cmake.deps/cmake/GetBinaryDeps.cmake index 2f1e237588..6d3ce48e4f 100644 --- a/cmake.deps/cmake/GetBinaryDeps.cmake +++ b/cmake.deps/cmake/GetBinaryDeps.cmake @@ -24,7 +24,7 @@ function(GetBinaryDep) BUILD_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_BIN_DIR} COMMAND "${_gettool_INSTALL_COMMAND}" - ${EXTERNALPROJECT_OPTIONS}) + DOWNLOAD_NO_PROGRESS TRUE) endfunction() # Download executable and move it to DEPS_BIN_DIR @@ -49,5 +49,5 @@ function(GetExecutable) BUILD_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_BIN_DIR} COMMAND ${CMAKE_COMMAND} -E copy <DOWNLOADED_FILE> ${DEPS_BIN_DIR} - ${EXTERNALPROJECT_OPTIONS}) + DOWNLOAD_NO_PROGRESS TRUE) endfunction() diff --git a/cmake/Deps.cmake b/cmake/Deps.cmake index 4700d08427..2e9a78ee22 100644 --- a/cmake/Deps.cmake +++ b/cmake/Deps.cmake @@ -19,7 +19,6 @@ if(APPLE) endif() set(DEPS_CMAKE_CACHE_ARGS -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}) -set(EXTERNALPROJECT_OPTIONS DOWNLOAD_NO_PROGRESS TRUE) # MAKE_PRG if(UNIX) @@ -55,10 +54,24 @@ if(CMAKE_OSX_ARCHITECTURES) endforeach() endif() -function(get_sha name ignore) - unset(EXTERNALPROJECT_URL_HASH) - if(NOT ${ignore}) - string(TOUPPER ${name} name_allcaps) - set(EXTERNALPROJECT_URL_HASH URL_HASH SHA256=${${name_allcaps}_SHA256} PARENT_SCOPE) +function(get_externalproject_options name DEPS_IGNORE_SHA) + string(TOUPPER ${name} name_allcaps) + set(url ${${name_allcaps}_URL}) + + set(EXTERNALPROJECT_OPTIONS DOWNLOAD_NO_PROGRESS TRUE) + + if(EXISTS ${url}) + list(APPEND EXTERNALPROJECT_OPTIONS + GIT_REPOSITORY ${${name_allcaps}_URL}) + if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.18) + list(APPEND EXTERNALPROJECT_OPTIONS GIT_REMOTE_UPDATE_STRATEGY CHECKOUT) + endif() + else() + list(APPEND EXTERNALPROJECT_OPTIONS URL ${${name_allcaps}_URL}) + if(NOT ${DEPS_IGNORE_SHA}) + list(APPEND EXTERNALPROJECT_OPTIONS URL_HASH SHA256=${${name_allcaps}_SHA256}) + endif() endif() + + set(EXTERNALPROJECT_OPTIONS ${EXTERNALPROJECT_OPTIONS} PARENT_SCOPE) endfunction() |