mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00

Previously, all targets were connected in one main target called third-party in order to remove any potentially conflicting shared library. We can make each dependency target independent of each other by only removing shared libraries from luajit and msgpack in their own targets, as only these has unwanted shared libraries.
39 lines
1.2 KiB
CMake
39 lines
1.2 KiB
CMake
# This is similar to the build recipes, but instead downloads a third party
|
|
# binary and installs it under the DEPS_PREFIX.
|
|
# The INSTALL_COMMAND is executed in the folder where downloaded files are
|
|
# extracted and the ${DEPS_INSTALL_DIR} holds the path to the third-party
|
|
# install root.
|
|
function(GetBinaryDep)
|
|
cmake_parse_arguments(_gettool
|
|
"BUILD_IN_SOURCE"
|
|
"TARGET"
|
|
"INSTALL_COMMAND"
|
|
${ARGN})
|
|
|
|
if(NOT _gettool_TARGET OR NOT _gettool_INSTALL_COMMAND)
|
|
message(FATAL_ERROR "Must pass INSTALL_COMMAND and TARGET")
|
|
endif()
|
|
|
|
string(TOUPPER "${_gettool_TARGET}_URL" URL_VARNAME)
|
|
string(TOUPPER "${_gettool_TARGET}_SHA256" HASH_VARNAME)
|
|
set(URL ${${URL_VARNAME}})
|
|
set(HASH ${${HASH_VARNAME}})
|
|
if(NOT URL OR NOT HASH )
|
|
message(FATAL_ERROR "${URL_VARNAME} and ${HASH_VARNAME} must be set")
|
|
endif()
|
|
|
|
if(USE_EXISTING_SRC_DIR)
|
|
unset(URL)
|
|
endif()
|
|
ExternalProject_Add(${_gettool_TARGET}
|
|
URL ${URL}
|
|
URL_HASH SHA256=${HASH}
|
|
DOWNLOAD_NO_PROGRESS TRUE
|
|
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_IN_SOURCE 1
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin
|
|
COMMAND "${_gettool_INSTALL_COMMAND}")
|
|
endfunction()
|