mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	third-party: Add helper to fetch binary dependencies
Add cmake script with recipes to download binary dependencies, currently the only dependency is win32yank.
This commit is contained in:
		
							
								
								
									
										10
									
								
								third-party/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								third-party/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							| @@ -120,6 +120,9 @@ set(LUV_SHA256 86a199403856018cd8e5529c8527450c83664a3d36f52d5253cbe909ea6c5a06) | |||||||
| set(GPERF_URL http://ftp.gnu.org/pub/gnu/gperf/gperf-3.0.4.tar.gz) | set(GPERF_URL http://ftp.gnu.org/pub/gnu/gperf/gperf-3.0.4.tar.gz) | ||||||
| set(GPERF_SHA256 767112a204407e62dbc3106647cf839ed544f3cf5d0f0523aaa2508623aad63e) | set(GPERF_SHA256 767112a204407e62dbc3106647cf839ed544f3cf5d0f0523aaa2508623aad63e) | ||||||
|  |  | ||||||
|  | set(WIN32YANK_URL https://github.com/equalsraf/win32yank/releases/download/v0.0.2/win32yank.zip) | ||||||
|  | set(WIN32YANK_SHA256 78869bf68565607cda1b6a3d549e2487d59d6f0f16f9b003e123c0086f90309d) | ||||||
|  |  | ||||||
| if(USE_BUNDLED_UNIBILIUM) | if(USE_BUNDLED_UNIBILIUM) | ||||||
|   include(BuildUnibilium) |   include(BuildUnibilium) | ||||||
| endif() | endif() | ||||||
| @@ -164,6 +167,13 @@ if(USE_BUNDLED_GPERF) | |||||||
|   include(BuildGperf) |   include(BuildGperf) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|  | include(GetBinaryDeps) | ||||||
|  |  | ||||||
|  | if(WIN32) | ||||||
|  |   GetBinaryDep(TARGET win32yank | ||||||
|  |     INSTALL_COMMAND ${CMAKE_COMMAND} -E copy win32yank.exe ${DEPS_INSTALL_DIR}/bin) | ||||||
|  | endif() | ||||||
|  |  | ||||||
| add_custom_target(clean-shared-libraries | add_custom_target(clean-shared-libraries | ||||||
|   COMMAND ${CMAKE_COMMAND} |   COMMAND ${CMAKE_COMMAND} | ||||||
|     -DREMOVE_FILE_GLOB=${DEPS_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}* |     -DREMOVE_FILE_GLOB=${DEPS_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}* | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								third-party/cmake/GetBinaryDeps.cmake
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								third-party/cmake/GetBinaryDeps.cmake
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | # Download and install binary dependencies for windows | ||||||
|  | include(CMakeParseArguments) | ||||||
|  |  | ||||||
|  | # This is similar to the build recipes, but instead downloads a third party | ||||||
|  | # binary and installs it under the 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() | ||||||
|  |  | ||||||
|  |   ExternalProject_Add(${_gettool_TARGET} | ||||||
|  |     PREFIX ${DEPS_BUILD_DIR} | ||||||
|  |     URL ${URL} | ||||||
|  |     DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR} | ||||||
|  |     DOWNLOAD_COMMAND ${CMAKE_COMMAND} | ||||||
|  |       -DPREFIX=${DEPS_BUILD_DIR} | ||||||
|  |       -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR} | ||||||
|  |       -DURL=${URL} | ||||||
|  |       -DEXPECTED_SHA256=${HASH} | ||||||
|  |       -DTARGET=${_gettool_TARGET} | ||||||
|  |       -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} | ||||||
|  |       -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake | ||||||
|  |     CONFIGURE_COMMAND "" | ||||||
|  |     BUILD_IN_SOURCE 1 | ||||||
|  |     CONFIGURE_COMMAND "" | ||||||
|  |     BUILD_COMMAND "" | ||||||
|  |     INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin | ||||||
|  | 		COMMAND "${_gettool_INSTALL_COMMAND}") | ||||||
|  |   list(APPEND THIRD_PARTY_DEPS ${__gettool_TARGET}) | ||||||
|  | endfunction() | ||||||
		Reference in New Issue
	
	Block a user
	 Rui Abreu Ferreira
					Rui Abreu Ferreira