[PATCH 4 of 4] Win32: OpenSSL compilation for x64 targets with MSVC

Sergey Kandaurov pluknet at nginx.com
Fri Feb 10 14:11:48 UTC 2023


> On 20 Dec 2022, at 17:30, Maxim Dounin <mdounin at mdounin.ru> wrote:
> 
> # 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.

I was not able to test x64 case, but looking at the change it's all good.

> 
> 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)

-- 
Sergey Kandaurov


More information about the nginx-devel mailing list