summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorK.Takata <kentkt@csc.jp>2022-03-07 15:16:15 +0000
committerBram Moolenaar <Bram@vim.org>2022-03-07 15:16:15 +0000
commitd8f8629b1bf566e1dada7515e9b146c69e5d9757 (patch)
treeb6206939ce6839fd684f76c620b7a17b753739fe
parent6ca883dd8a585a85acdf9303b434211ea91872a7 (diff)
patch 8.2.4524: MS-Windows: cannot build with some sodium librariesv8.2.4524
Problem: MS-Windows: cannot build with some sodium libraries. Solution: Make the DLL name configuragle. Add build instructions. (Ken Takata, closes #9905)
-rw-r--r--src/INSTALLpc.txt51
-rw-r--r--src/Make_cyg_ming.mak7
-rw-r--r--src/Make_mvc.mak3
-rw-r--r--src/crypt.c4
-rw-r--r--src/version.c2
5 files changed, 53 insertions, 14 deletions
diff --git a/src/INSTALLpc.txt b/src/INSTALLpc.txt
index b70758c9f7..51b315b234 100644
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -34,10 +34,11 @@ Contents:
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 can also install it via pacman:
$ 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]
diff --git a/src/Make_cyg_ming.mak b/src/Make_cyg_ming.mak
index 7c1cbd9c9a..a2d8f3b1e5 100644
--- 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
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 7b16c59714..aaaf5303dd 100644
--- 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
diff --git a/src/crypt.c b/src/crypt.c
index d66e50cc48..86f4846368 100644
--- 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);
diff --git a/src/version.c b/src/version.c
index a2f9d297f2..450d49bf17 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4524,
+/**/
4523,
/**/
4522,