diff --git a/ChangeLog.txt b/ChangeLog.txt index b619382e2f..96445c4498 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -7,6 +7,33 @@ Entries may not always be in chronological/commit order. See license at the end of file. */ +2025-10-19 22:12 UTC+0200 Aleksander Czajczynski (hb fki.pl) + * contrib/hbssl/hbssl.h + * contrib/hbssl/hbssl.hbm + * contrib/hbssl/ssl.c + ! HB_OPENSSL_HAS_APPLINK was never checked, + defining HB_OPENSSL_NO_APPLINK didn't do anything + + * make current OpenSSL 3.6.0 build under fresh MSYS2 + shell. MSYS2 does not distribute applink.c, claiming + MingGW C runtime is safe for operation without it. + Have to define HB_OPENSSL_NO_APPLINK and additional + workaround for lacking __int64 type when including + ssl.h. If you need similar workround outside of + MSYS2 shell, setenv: HB_USER_CFLAGS=-DHB_OPENSSL_MSYS + + packages needed: openssl-devel (for headers) + mingw-w64-x86_64-openssl (for libs) + mingw-w64-aarch64-openssl + + * contrib/hbssl/hbssl.hbc + * using Clang or Zig compiler on Windows, build will + now reference libssl and libcrypto instead of old + ssleay32/libeay32 pair when linking. + + * config/win/zig.mk + % unnecessary check + 2025-10-18 23:15 UTC+0200 Aleksander Czajczynski (hb fki.pl) + config/bsd/zig-noauto.mk + config/bsd/zig.mk diff --git a/config/win/zig.mk b/config/win/zig.mk index 3d2ec49c8c..53a806ad69 100644 --- a/config/win/zig.mk +++ b/config/win/zig.mk @@ -3,8 +3,6 @@ RCFLAGS := /I. /I$(HB_HOST_INC) /C 1252 RC_OUT := /FO$(subst x,x, ) RES_EXT := .res -ifeq ($(HB_PLATFORM),win) - IMPLIBFLAGS = -Wl,--out-implib,$(IMP_FILE) -endif +IMPLIBFLAGS = -Wl,--out-implib,$(IMP_FILE) include $(TOP)$(ROOT)config/common/zig.mk diff --git a/contrib/hbssl/hbssl.h b/contrib/hbssl/hbssl.h index 9ce82b327f..835a8686fc 100644 --- a/contrib/hbssl/hbssl.h +++ b/contrib/hbssl/hbssl.h @@ -62,6 +62,18 @@ #endif #endif +/* following can be defined if MSYS/MinGW64 toolchain complains about lacking + '__int64' type inside OpenSSL project headers, also applink.c is not + needed on MinGW C runtime - therefore applink.c is not distributed there */ +#if defined( HB_OPENSSL_MSYS ) + #ifdef __MINGW64__ + #include + #endif + #if ! defined( HB_OPENSSL_NO_APPLINK ) + #define HB_OPENSSL_NO_APPLINK + #endif +#endif + #include #include "hbssl.ch" diff --git a/contrib/hbssl/hbssl.hbc b/contrib/hbssl/hbssl.hbc index 0a77ba5f97..01441c466f 100644 --- a/contrib/hbssl/hbssl.hbc +++ b/contrib/hbssl/hbssl.hbc @@ -13,8 +13,10 @@ skip={dos} {!HB_DYNBIND_OPENSSL&unix}libs=ssl crypto {!HB_DYNBIND_OPENSSL&os2}libs=libssl_s libcrypto_s -{!HB_DYNBIND_OPENSSL&!(HB_STATIC_OPENSSL&!hbdyn)&win&!allmingw}libs=ssleay32 libeay32 -{!HB_DYNBIND_OPENSSL& (HB_STATIC_OPENSSL&!hbdyn)&win&!allmingw}libs=ssleay32 libeay32 +{!HB_DYNBIND_OPENSSL&!(HB_STATIC_OPENSSL&!hbdyn)&win&!allmingw&!clang&!zig}libs=ssleay32 libeay32 +{!HB_DYNBIND_OPENSSL& (HB_STATIC_OPENSSL&!hbdyn)&win&!allmingw&!clang&!zig}libs=ssleay32 libeay32 +{!HB_DYNBIND_OPENSSL&!(HB_STATIC_OPENSSL&!hbdyn)&win&(clang|zig)}libs=ssl crypto +{!HB_DYNBIND_OPENSSL& (HB_STATIC_OPENSSL&!hbdyn)&win&(clang|zig)}libs=ssl crypto {!HB_DYNBIND_OPENSSL&!(HB_STATIC_OPENSSL&!hbdyn)&allmingw}libs=ssl crypto {!HB_DYNBIND_OPENSSL& (HB_STATIC_OPENSSL&!hbdyn)&allmingw}libs=ssl crypto {!HB_DYNBIND_OPENSSL& (HB_STATIC_OPENSSL&!hbdyn)&allwin}libs=crypt32 diff --git a/contrib/hbssl/hbssl.hbm b/contrib/hbssl/hbssl.hbm index d88f5c31e4..0de61913b3 100644 --- a/contrib/hbssl/hbssl.hbm +++ b/contrib/hbssl/hbssl.hbm @@ -31,6 +31,9 @@ # Patent expires in 2010/2011 -cflag=-DOPENSSL_NO_IDEA +# MSYS2 lacks applink.c and __int64 +{MSYSTEM}-cflag=-DHB_OPENSSL_MSYS + # to suppress Apple's deprecation warnings that apply to # the complete OpenSSL API, starting with OS X Lion 10.7 -cflag={allgcc&darwin}-Wno-deprecated diff --git a/contrib/hbssl/ssl.c b/contrib/hbssl/ssl.c index 6fca5b76ba..6f43fe73f9 100644 --- a/contrib/hbssl/ssl.c +++ b/contrib/hbssl/ssl.c @@ -82,6 +82,7 @@ #if ! defined( HB_OPENSSL_NO_APPLINK ) && \ defined( HB_OS_WIN ) && \ defined( HB_CPU_X86 ) && \ + ! defined( HB_OPENSSL_STATIC ) && \ OPENSSL_VERSION_NUMBER >= 0x00908000L /* Enable this to add support for various scenarios when OpenSSL is build with OPENSSL_USE_APPLINK (the default). @@ -93,7 +94,7 @@ /* NOTE: See: http://www.openssl.org/support/faq.html#PROG2 Application must call SSL_init(), so that this module gets linked. [vszakats] */ -#if defined( HB_OS_WIN ) && ! defined( HB_OPENSSL_STATIC ) && OPENSSL_VERSION_NUMBER >= 0x00908000L +#if defined( HB_OPENSSL_HAS_APPLINK ) /* Pull a stub that returns a table with some selected C RTL function pointers. When linking to OpenSSL shared libraries, the function OPENSSL_Applink() exported from