A conversation from early February 2022 in the Prosody IM Chatroom resulted in
determining Lua 5.4 as the target language version ('makes no sense to rely on
CentOS 7 EOL if compiling for Windows').

OpenSSL 3 works fine under Windows, but someone mentioned in the chat that
OpenSSL 1.x is more widespread in common Linux distributions. I'm open to
suggestions here, but if OpenSSL 3 looks good to maintainers, I will keep the
patch like this.

libidn 1.41 requires some patching if Prosody is going to be compiled with MSVC,
like I do. The maintainers said that even Windows builds are compiled on Linux,
so the build process has to be GCC-aware, I guess. Again, I'm open to
all suggestions.

Also, this Makefile is currently not aware of x64 configuration of dependencies.
It must be revised to be able to provide both Win32 and x64 targets, in case of
MSVC.


-- 
You received this message because you are subscribed to the Google Groups 
"prosody-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prosody-dev/5a644645e80cefe411cb.1677714830%40EI08_MatisseX.
# HG changeset patch
# User Vitaly Orekhov <[email protected]>
# Date 1677714727 -10800
#      Thu Mar 02 02:52:07 2023 +0300
# Node ID 5a644645e80cefe411cb761b92211b73d4a7f18a
# Parent  09f4172812fb10c10a1cb7ba8237dd9aeaea4973
Makefile.win: Update dependencies for all utility libraries

A conversation from early February 2022 in the Prosody IM Chatroom resulted in
determining Lua 5.4 as the target language version ('makes no sense to rely on
CentOS 7 EOL if compiling for Windows').

OpenSSL 3 works fine under Windows, but someone mentioned in the chat that
OpenSSL 1.x is more widespread in common Linux distributions. I'm open to
suggestions here, but if OpenSSL 3 looks good to maintainers, I will keep the
patch like this.

libidn 1.41 requires some patching if Prosody is going to be compiled with MSVC,
like I do. The maintainers said that even Windows builds are compiled on Linux,
so the build process has to be GCC-aware, I guess. Again, I'm open to
all suggestions.

Also, this Makefile is currently not aware of x64 configuration of dependencies.
It must be revised to be able to provide both Win32 and x64 targets, in case of
MSVC.

diff -r 09f4172812fb -r 5a644645e80c util-src/Makefile.win
--- a/util-src/Makefile.win	Sat Feb 25 01:33:30 2023 +0300
+++ b/util-src/Makefile.win	Thu Mar 02 02:52:07 2023 +0300
@@ -1,38 +1,67 @@
 
 LUA_PATH=$(LUA_DEV)
-IDN_PATH=..\..\libidn-1.15
-OPENSSL_PATH=..\..\openssl-0.9.8k
+IDN_PATH=..\..\libidn-1.41
+OPENSSL_PATH=..\..\openssl-3.0.8
 
 LUA_INCLUDE=$(LUA_PATH)\include
-LUA_LIB=$(LUA_PATH)\lib\lua5.1.lib
+LUA_LIB=$(LUA_PATH)\lib\lua54.lib
 
-IDN_LIB=$(IDN_PATH)\win32\lib\libidn.lib
+IDN_LIB=$(IDN_PATH)\windows\Win32\libidn.lib
 IDN_INCLUDE1=$(IDN_PATH)\lib
-IDN_INCLUDE2=$(IDN_PATH)\win32\include
-OPENSSL_LIB=$(OPENSSL_PATH)\out32dll\libeay32.lib
+IDN_INCLUDE2=$(IDN_PATH)\windows\include
+OPENSSL_CRYPTO=$(OPENSSL_PATH)\libcrypto.lib
+OPENSSL_LIB=$(OPENSSL_PATH)\libssl.lib
 OPENSSL_INCLUDE=$(OPENSSL_PATH)\include
 
 CL=cl /LD /MD /nologo
 
-all: encodings.dll hashes.dll windows.dll
+all: compat.dll crand.dll crypto.dll encodings.dll hashes.dll net.dll poll.dll ringbuffer.dll signal.dll strbitop.dll table.dll time.dll windows.dll
 
-install: encodings.dll hashes.dll windows.dll
+install: compat.dll crand.dll crypto.dll encodings.dll hashes.dll net.dll poll.dll ringbuffer.dll signal.dll strbitop.dll table.dll time.dll windows.dll
 	copy /Y *.dll ..\util\
 
 clean:
-	del encodings.dll encodings.exp encodings.lib encodings.obj encodings.dll.manifest
-	del hashes.dll hashes.exp hashes.lib hashes.obj hashes.dll.manifest
-	del windows.dll windows.exp windows.lib windows.obj windows.dll.manifest
+	del *.dll *.exp *.lib *.obj *.dll.manifest
+compat.dll: compat.c
+    $(CL) compat.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" /export:luaopen_util_compat
+	del compat.exp compat.lib compat.obj compat.dll.manifest
+crand.dll: crand.c
+    $(CL) crand.c /DWITH_OPENSSL /I"$(LUA_INCLUDE)" /I"$(OPENSSL_INCLUDE)" /link "$(LUA_LIB)" "$(OPENSSL_CRYPTO)" /export:luaopen_util_crand
+	del crand.exp crand.lib crand.obj crand.dll.manifest
 
+crypto.dll: crypto.c
+    $(CL) crypto.c /I"$(LUA_INCLUDE)" /I"$(OPENSSL_INCLUDE)" /link "$(LUA_LIB)" "$(OPENSSL_CRYPTO)" /export:luaopen_util_crypto
+	del crypto.exp crypto.lib crypto.obj crypto.dll.manifest
 encodings.dll: encodings.c
 	$(CL) encodings.c /I"$(LUA_INCLUDE)" /I"$(IDN_INCLUDE1)" /I"$(IDN_INCLUDE2)" /link "$(LUA_LIB)" "$(IDN_LIB)" /export:luaopen_util_encodings
 	del encodings.exp encodings.lib encodings.obj encodings.dll.manifest
 
 hashes.dll: hashes.c
-	$(CL) hashes.c /I"$(LUA_INCLUDE)" /I"$(OPENSSL_INCLUDE)" /link "$(LUA_LIB)" "$(OPENSSL_LIB)" /export:luaopen_util_hashes
+	$(CL) hashes.c /I"$(LUA_INCLUDE)" /I"$(OPENSSL_INCLUDE)" /link "$(LUA_LIB)" "$(OPENSSL_CRYPTO)" "$(OPENSSL_LIB)" /export:luaopen_util_hashes
 	del hashes.exp hashes.lib hashes.obj hashes.dll.manifest
 
+net.dll: net.c
+    $(CL) net.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" ws2_32.lib /export:luaopen_util_net
+    del net.exp net.lib net.obj net.dll.manifest
+poll.dll: poll.c
+    $(CL) poll.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" ws2_32.lib /export:luaopen_util_poll
+    del poll.exp poll.lib poll.obj poll.dll.manifest
+ringbuffer.dll: ringbuffer.c
+    $(CL) ringbuffer.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" kernel32.lib /export:luaopen_util_ringbuffer
+    del ringbuffer.exp ringbuffer.lib ringbuffer.obj ringbuffer.dll.manifest
+signal.dll: signal.c
+    $(CL) signal.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" /export:luaopen_util_signal
+    del signal.exp signal.lib signal.obj signal.dll.manifest
+strbitop.dll: strbitop.c
+    $(CL) strbitop.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" /export:luaopen_util_strbitop
+    del strbitop.exp strbitop.lib strbitop.obj strbitop.dll.manifest
+table.dll: table.c
+    $(CL) table.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" /export:luaopen_util_table
+    del table.exp table.lib table.obj table.dll.manifest
+time.dll: time.c
+    $(CL) time.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" /export:luaopen_util_time
+    del time.exp time.lib time.obj time.dll.manifest
 windows.dll: windows.c
-	$(CL) windows.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" dnsapi.lib /export:luaopen_util_windows
+	$(CL) windows.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" dnsapi.lib advapi32.lib /export:luaopen_util_windows
 	del windows.exp windows.lib windows.obj windows.dll.manifest
 

Reply via email to