[PATCH 4 of 4] Win32: OpenSSL compilation for x64 targets with MSVC
Maxim Dounin
mdounin at mdounin.ru
Tue Dec 20 13:30:18 UTC 2022
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1671542914 -10800
# Tue Dec 20 16:28:34 2022 +0300
# Node ID e5a75718823d5ec365703275f3efa87d0b63f8c4
# Parent 6606ed21a7091b060ebec0d082876ddbbbe0ea79
Win32: OpenSSL compilation for x64 targets with MSVC.
To ensure proper target selection the NGX_MACHINE variable is now set
based on the MSVC compiler output, and the OpenSSL target is set based
on it.
This is not important as long as "no-asm" is used (as in misc/GNUmakefile
and win32 build instructions), but might be beneficial if someone is trying
to build OpenSSL with assembler code.
diff -r 6606ed21a709 -r e5a75718823d auto/cc/msvc
--- a/auto/cc/msvc Tue Dec 20 16:27:56 2022 +0300
+++ b/auto/cc/msvc Tue Dec 20 16:28:34 2022 +0300
@@ -22,6 +22,21 @@ have=NGX_COMPILER value="\"cl $NGX_MSVC_
ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'`
+# detect x64 builds
+
+case "$NGX_MSVC_VER" in
+
+ *x64)
+ NGX_MACHINE=amd64
+ ;;
+
+ *)
+ NGX_MACHINE=i386
+ ;;
+
+esac
+
+
# optimizations
# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
diff -r 6606ed21a709 -r e5a75718823d auto/lib/openssl/make
--- a/auto/lib/openssl/make Tue Dec 20 16:27:56 2022 +0300
+++ b/auto/lib/openssl/make Tue Dec 20 16:28:34 2022 +0300
@@ -7,11 +7,24 @@ case "$CC" in
cl)
+ case "$NGX_MACHINE" in
+
+ amd64)
+ OPENSSL_TARGET=VC-WIN64A
+ ;;
+
+ *)
+ OPENSSL_TARGET=VC-WIN32
+ ;;
+
+ esac
+
cat << END >> $NGX_MAKEFILE
$OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE
\$(MAKE) -f auto/lib/openssl/makefile.msvc \
- OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT"
+ OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT" \
+ OPENSSL_TARGET="$OPENSSL_TARGET"
END
diff -r 6606ed21a709 -r e5a75718823d auto/lib/openssl/makefile.msvc
--- a/auto/lib/openssl/makefile.msvc Tue Dec 20 16:27:56 2022 +0300
+++ b/auto/lib/openssl/makefile.msvc Tue Dec 20 16:28:34 2022 +0300
@@ -6,7 +6,7 @@
all:
cd $(OPENSSL)
- perl Configure VC-WIN32 no-shared no-threads \
+ perl Configure $(OPENSSL_TARGET) no-shared no-threads \
--prefix="%cd%/openssl" \
--openssldir="%cd%/openssl/ssl" \
$(OPENSSL_OPT)
More information about the nginx-devel
mailing list