build: reuse code for deps.txt for both deps and main build

This commit is contained in:
dundargoc 2024-05-28 11:03:49 +02:00 committed by dundargoc
parent 1c6d920052
commit f09f5c45fa
5 changed files with 48 additions and 35 deletions

View File

@ -39,6 +39,12 @@ include(InstallHelpers)
include(PreventInTreeBuilds) include(PreventInTreeBuilds)
include(Util) include(Util)
#-------------------------------------------------------------------------------
# User settings
#-------------------------------------------------------------------------------
set(DEPS_IGNORE_SHA FALSE)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Variables # Variables
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
@ -47,9 +53,6 @@ set(TOUCHES_DIR ${PROJECT_BINARY_DIR}/touches)
file(GLOB DOCFILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt) file(GLOB DOCFILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt)
set_directory_properties(PROPERTIES
EP_PREFIX "${DEPS_BUILD_DIR}")
if(NOT CI_BUILD) if(NOT CI_BUILD)
set(CMAKE_INSTALL_MESSAGE NEVER) set(CMAKE_INSTALL_MESSAGE NEVER)
endif() endif()
@ -241,7 +244,7 @@ add_glob_target(
GLOB_DIRS runtime scripts src test GLOB_DIRS runtime scripts src test
GLOB_PAT *.lua GLOB_PAT *.lua
TOUCH_STRATEGY PER_DIR) TOUCH_STRATEGY PER_DIR)
add_dependencies(lintlua-luacheck lua-dev-deps) add_dependencies(lintlua-luacheck lua_dev_deps)
add_glob_target( add_glob_target(
TARGET lintlua-stylua TARGET lintlua-stylua
@ -300,26 +303,24 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(cmake.packaging) add_subdirectory(cmake.packaging)
endif() endif()
get_externalproject_options(uncrustify ${DEPS_IGNORE_SHA})
ExternalProject_Add(uncrustify ExternalProject_Add(uncrustify
URL https://github.com/uncrustify/uncrustify/archive/uncrustify-0.79.0.tar.gz
URL_HASH SHA256=e7afaeabf636b7f0ce4e3e9747b95f7bd939613a8db49579755dddf44fedca5f
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/uncrustify DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/uncrustify
CMAKE_ARGS ${DEPS_CMAKE_ARGS} CMAKE_ARGS ${DEPS_CMAKE_ARGS}
EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_ALL TRUE
DOWNLOAD_NO_PROGRESS TRUE) ${EXTERNALPROJECT_OPTIONS})
option(USE_BUNDLED_BUSTED "Use bundled busted" ON) option(USE_BUNDLED_BUSTED "Use bundled busted" ON)
if(USE_BUNDLED_BUSTED) if(USE_BUNDLED_BUSTED)
ExternalProject_Add(lua-dev-deps get_externalproject_options(lua_dev_deps ${DEPS_IGNORE_SHA})
URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz ExternalProject_Add(lua_dev_deps
URL_HASH SHA256=27db2495f5eddc7fc191701ec9b291486853530c6125609d3197d03481e8d5a2 DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua_dev_deps
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-dev-deps
SOURCE_DIR ${DEPS_SHARE_DIR} SOURCE_DIR ${DEPS_SHARE_DIR}
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
BUILD_COMMAND "" BUILD_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ""
EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_ALL TRUE
DOWNLOAD_NO_PROGRESS TRUE) ${EXTERNALPROJECT_OPTIONS})
else() else()
add_custom_target(lua-dev-deps) add_custom_target(lua_dev_deps)
endif() endif()

View File

@ -74,25 +74,6 @@ if(APPLE)
message(STATUS "Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}") message(STATUS "Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}")
endif() endif()
set_directory_properties(PROPERTIES
EP_PREFIX "${DEPS_BUILD_DIR}"
CMAKE_CONFIGURE_DEPENDS deps.txt)
file(READ deps.txt DEPENDENCIES)
STRING(REGEX REPLACE "\n" ";" DEPENDENCIES "${DEPENDENCIES}")
foreach(dep ${DEPENDENCIES})
STRING(REGEX REPLACE " " ";" dep "${dep}")
list(GET dep 0 name)
list(GET dep 1 value)
if(NOT ${name})
# _URL variables must NOT be set when USE_EXISTING_SRC_DIR is set,
# otherwise ExternalProject will try to re-download the sources.
if(NOT USE_EXISTING_SRC_DIR)
set(${name} ${value})
endif()
endif()
endforeach()
if(USE_BUNDLED_LUAJIT) if(USE_BUNDLED_LUAJIT)
set(LUA_ENGINE LuaJit) set(LUA_ENGINE LuaJit)
elseif(USE_BUNDLED_LUA) elseif(USE_BUNDLED_LUA)

View File

@ -59,3 +59,8 @@ TREESITTER_MARKDOWN_URL https://github.com/MDeiml/tree-sitter-markdown/archive/v
TREESITTER_MARKDOWN_SHA256 4909d6023643f1afc3ab219585d4035b7403f3a17849782ab803c5f73c8a31d5 TREESITTER_MARKDOWN_SHA256 4909d6023643f1afc3ab219585d4035b7403f3a17849782ab803c5f73c8a31d5
TREESITTER_URL https://github.com/tree-sitter/tree-sitter/archive/v0.22.6.tar.gz TREESITTER_URL https://github.com/tree-sitter/tree-sitter/archive/v0.22.6.tar.gz
TREESITTER_SHA256 e2b687f74358ab6404730b7fb1a1ced7ddb3780202d37595ecd7b20a8f41861f TREESITTER_SHA256 e2b687f74358ab6404730b7fb1a1ced7ddb3780202d37595ecd7b20a8f41861f
UNCRUSTIFY_URL https://github.com/uncrustify/uncrustify/archive/uncrustify-0.79.0.tar.gz
UNCRUSTIFY_SHA256 e7afaeabf636b7f0ce4e3e9747b95f7bd939613a8db49579755dddf44fedca5f
LUA_DEV_DEPS_URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz
LUA_DEV_DEPS_SHA256 27db2495f5eddc7fc191701ec9b291486853530c6125609d3197d03481e8d5a2

View File

@ -58,6 +58,32 @@ if(CMAKE_OSX_SYSROOT)
set(DEPS_C_COMPILER "${DEPS_C_COMPILER} -isysroot${CMAKE_OSX_SYSROOT}") set(DEPS_C_COMPILER "${DEPS_C_COMPILER} -isysroot${CMAKE_OSX_SYSROOT}")
endif() endif()
get_filename_component(rootdir ${PROJECT_SOURCE_DIR} NAME)
if(${rootdir} MATCHES "cmake.deps")
set(depsfile ${PROJECT_SOURCE_DIR}/deps.txt)
else()
set(depsfile ${PROJECT_SOURCE_DIR}/cmake.deps/deps.txt)
endif()
set_directory_properties(PROPERTIES
EP_PREFIX "${DEPS_BUILD_DIR}"
CMAKE_CONFIGURE_DEPENDS ${depsfile})
file(READ ${depsfile} DEPENDENCIES)
STRING(REGEX REPLACE "\n" ";" DEPENDENCIES "${DEPENDENCIES}")
foreach(dep ${DEPENDENCIES})
STRING(REGEX REPLACE " " ";" dep "${dep}")
list(GET dep 0 name)
list(GET dep 1 value)
if(NOT ${name})
# _URL variables must NOT be set when USE_EXISTING_SRC_DIR is set,
# otherwise ExternalProject will try to re-download the sources.
if(NOT USE_EXISTING_SRC_DIR)
set(${name} ${value})
endif()
endif()
endforeach()
function(get_externalproject_options name DEPS_IGNORE_SHA) function(get_externalproject_options name DEPS_IGNORE_SHA)
string(TOUPPER ${name} name_allcaps) string(TOUPPER ${name} name_allcaps)
set(url ${${name_allcaps}_URL}) set(url ${${name_allcaps}_URL})

View File

@ -19,7 +19,7 @@ if(LUA_HAS_FFI)
${TEST_OPTIONS} ${TEST_OPTIONS}
-P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
USES_TERMINAL) USES_TERMINAL)
add_dependencies(unittest lua-dev-deps nvim) add_dependencies(unittest lua_dev_deps nvim)
else() else()
message(WARNING "disabling unit tests: no Luajit FFI in ${LUA_PRG}") message(WARNING "disabling unit tests: no Luajit FFI in ${LUA_PRG}")
endif() endif()
@ -35,7 +35,7 @@ add_custom_target(functionaltest
-P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
DEPENDS printenv-test printargs-test shell-test pwsh-test streams-test tty-test DEPENDS printenv-test printargs-test shell-test pwsh-test streams-test tty-test
USES_TERMINAL) USES_TERMINAL)
add_dependencies(functionaltest lua-dev-deps nvim) add_dependencies(functionaltest lua_dev_deps nvim)
add_custom_target(benchmark add_custom_target(benchmark
COMMAND ${CMAKE_COMMAND} COMMAND ${CMAKE_COMMAND}
@ -44,4 +44,4 @@ add_custom_target(benchmark
-P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
DEPENDS tty-test DEPENDS tty-test
USES_TERMINAL) USES_TERMINAL)
add_dependencies(benchmark lua-dev-deps nvim) add_dependencies(benchmark lua_dev_deps nvim)