Mercurial > vim
changeset 27998:ef7d9789919d v8.2.4524
patch 8.2.4524: MS-Windows: cannot build with some sodium libraries
Commit: https://github.com/vim/vim/commit/d8f8629b1bf566e1dada7515e9b146c69e5d9757
Author: K.Takata <kentkt@csc.jp>
Date: Mon Mar 7 15:16:15 2022 +0000
patch 8.2.4524: MS-Windows: cannot build with some sodium libraries
Problem: MS-Windows: cannot build with some sodium libraries.
Solution: Make the DLL name configuragle. Add build instructions.
(Ken Takata, closes #9905)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 07 Mar 2022 16:30:04 +0100 |
parents | ceb745137863 |
children | c8d1520e7878 |
files | src/INSTALLpc.txt src/Make_cyg_ming.mak src/Make_mvc.mak src/crypt.c src/version.c |
diffstat | 5 files changed, 53 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/INSTALLpc.txt +++ b/src/INSTALLpc.txt @@ -34,10 +34,11 @@ 10. Building with Perl support 11. Building with Ruby support 12. Building with Tcl support 13. Building with DirectX (DirectWrite) support -14. Windows 3.1 -15. MS-DOS +14. Building with libsodium support +15. Windows 3.1 +16. MS-DOS -16. Installing after building from sources +17. Installing after building from sources The currently recommended way (that means it has been verified to work) is @@ -247,9 +248,6 @@ MSYS2 has its own git package, and you c $ pacman -S git -For enabling libsodium support, you also need to install the package - - $ pacman -S mingw-w64-x86_64-libsodium 2.3. Keep the build environment up-to-date @@ -846,20 +844,55 @@ Just set DIRECTX to yes: mingw32-make -f Make_ming.mak DIRECTX=yes -14. Windows 3.1x +14. Building with libsodium support +=================================== + +For better encryption support, you can build Vim with libsodium. + +A) Using MSVC + +You can download the latest libsodium library from here: + https://download.libsodium.org/libsodium/releases/ + +At this moment, libsodium-1.0.18-stable-msvc.zip is the latest package. +Unpack it to anywhere you like, and specify the path to the SODIUM option: + + nmake -f Make_mvc.mak SODIUM=C:/path/to/libsodium + (libsodium.dll will be used as the libsodium DLL name.) + +B) Using MinGW + +If you use msys2, you can install the libsodium package by pacman (or pacboy): + + $ pacman -S mingw-w64-x86_64-libsodium # for 64-bit Vim + $ pacman -S mingw-w64-i686-libsodium # for 32-bit Vim + $ pacboy -S libsodium:m # for both 32-bit and 64-bit Vim + +Then set SODIUM to yes: + + mingw32-make -f Make_ming.mak SODIUM=yes + (libsodium-23.dll will be used as the libsodium DLL name.) + +Or you can set the path to libsodium explicitly: + + mingw32-make -f Make_ming.mak SODIUM=C:/path/to/libsodium + (libsodium.dll will be used as the libsodium DLL name.) + + +15. Windows 3.1x ================ The Windows 3.1x support was removed in patch 7.4.1364. -15. MS-DOS +16. MS-DOS ========== The MS-DOS support was removed in patch 7.4.1399. Only very old Vim versions work on MS-DOS because of the limited amount of memory available. -16. Installing after building from sources +17. Installing after building from sources ========================================== [provided by Michael Soyka, updated by Ken Takata]
--- a/src/Make_cyg_ming.mak +++ b/src/Make_cyg_ming.mak @@ -670,14 +670,17 @@ endif ifdef SODIUM DEFINES += -DHAVE_SODIUM - ifneq ($(SODIUM),yes) + ifeq ($(SODIUM),yes) +SODIUM_DLL = libsodium-23.dll + else +SODIUM_DLL = libsodium.dll CFLAGS += -I $(SODIUM)/include endif ifndef DYNAMIC_SODIUM DYNAMIC_SODIUM=yes endif ifeq ($(DYNAMIC_SODIUM),yes) -DEFINES += -DDYNAMIC_SODIUM +DEFINES += -DDYNAMIC_SODIUM -DDYNAMIC_SODIUM_DLL=\"$(SODIUM_DLL)\" else SODIUMLIB = -lsodium endif
--- a/src/Make_mvc.mak +++ b/src/Make_mvc.mak @@ -391,7 +391,8 @@ SODIUM = no !if "$(SODIUM)" != "no" SOD_INC = /I "$(SODIUM)\include" ! if "$(DYNAMIC_SODIUM)" == "yes" -SOD_DEFS = -DHAVE_SODIUM -DDYNAMIC_SODIUM +SODIUM_DLL = libsodium.dll +SOD_DEFS = -DHAVE_SODIUM -DDYNAMIC_SODIUM -DDYNAMIC_SODIUM_DLL=\"$(SODIUM_DLL)\" SOD_LIB = ! else SOD_DEFS = -DHAVE_SODIUM
--- a/src/crypt.c +++ b/src/crypt.c @@ -251,7 +251,7 @@ static struct { sodium_runtime_link_init(int verbose) { static HINSTANCE hsodium = NULL; - const char *libname = "libsodium.dll"; + const char *libname = DYNAMIC_SODIUM_DLL; int i; if (hsodium != NULL) @@ -270,7 +270,7 @@ sodium_runtime_link_init(int verbose) if ((*sodium_funcname_table[i].ptr = symbol_from_dll(hsodium, sodium_funcname_table[i].name)) == NULL) { - FreeLibrary(hsodium); + close_dll(hsodium); hsodium = NULL; if (verbose) semsg(_(e_could_not_load_library_function_str), sodium_funcname_table[i].name);