0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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)
This commit is contained in:
K.Takata 2022-03-07 15:16:15 +00:00 committed by Bram Moolenaar
parent 6ca883dd8a
commit d8f8629b1b
5 changed files with 53 additions and 14 deletions

View File

@ -34,10 +34,11 @@ Contents:
11. Building with Ruby support 11. Building with Ruby support
12. Building with Tcl support 12. Building with Tcl support
13. Building with DirectX (DirectWrite) support 13. Building with DirectX (DirectWrite) support
14. Windows 3.1 14. Building with libsodium support
15. MS-DOS 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 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 can also install it via pacman:
$ pacman -S git $ 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 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 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. 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 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. 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] [provided by Michael Soyka, updated by Ken Takata]

View File

@ -670,14 +670,17 @@ endif
ifdef SODIUM ifdef SODIUM
DEFINES += -DHAVE_SODIUM DEFINES += -DHAVE_SODIUM
ifneq ($(SODIUM),yes) ifeq ($(SODIUM),yes)
SODIUM_DLL = libsodium-23.dll
else
SODIUM_DLL = libsodium.dll
CFLAGS += -I $(SODIUM)/include CFLAGS += -I $(SODIUM)/include
endif endif
ifndef DYNAMIC_SODIUM ifndef DYNAMIC_SODIUM
DYNAMIC_SODIUM=yes DYNAMIC_SODIUM=yes
endif endif
ifeq ($(DYNAMIC_SODIUM),yes) ifeq ($(DYNAMIC_SODIUM),yes)
DEFINES += -DDYNAMIC_SODIUM DEFINES += -DDYNAMIC_SODIUM -DDYNAMIC_SODIUM_DLL=\"$(SODIUM_DLL)\"
else else
SODIUMLIB = -lsodium SODIUMLIB = -lsodium
endif endif

View File

@ -391,7 +391,8 @@ SODIUM = no
!if "$(SODIUM)" != "no" !if "$(SODIUM)" != "no"
SOD_INC = /I "$(SODIUM)\include" SOD_INC = /I "$(SODIUM)\include"
! if "$(DYNAMIC_SODIUM)" == "yes" ! 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 = SOD_LIB =
! else ! else
SOD_DEFS = -DHAVE_SODIUM SOD_DEFS = -DHAVE_SODIUM

View File

@ -251,7 +251,7 @@ static struct {
sodium_runtime_link_init(int verbose) sodium_runtime_link_init(int verbose)
{ {
static HINSTANCE hsodium = NULL; static HINSTANCE hsodium = NULL;
const char *libname = "libsodium.dll"; const char *libname = DYNAMIC_SODIUM_DLL;
int i; int i;
if (hsodium != NULL) if (hsodium != NULL)
@ -270,7 +270,7 @@ sodium_runtime_link_init(int verbose)
if ((*sodium_funcname_table[i].ptr = symbol_from_dll(hsodium, if ((*sodium_funcname_table[i].ptr = symbol_from_dll(hsodium,
sodium_funcname_table[i].name)) == NULL) sodium_funcname_table[i].name)) == NULL)
{ {
FreeLibrary(hsodium); close_dll(hsodium);
hsodium = NULL; hsodium = NULL;
if (verbose) if (verbose)
semsg(_(e_could_not_load_library_function_str), sodium_funcname_table[i].name); semsg(_(e_could_not_load_library_function_str), sodium_funcname_table[i].name);

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
4524,
/**/ /**/
4523, 4523,
/**/ /**/