Thanks for providing the insight needed to make this work on Windows.

On Fri, Oct 12, 2018, 12:17 PM Tom Lane <t...@sss.pgh.pa.us> wrote:

> Pratik Parikh <pratik.p.par...@gmail.com> writes:
> > I have seen the same failure on windows build.  I can only use
> > openssl 1.02(x).
>
> Hmm ... looking at it closer, I realize that part of the problem is
> that with 1.1.0 you need HAVE_BIO_METH_NEW to be defined, and there's
> no mechanism for doing that in the MSVC build code.  Worse, there's
> half a dozen other OpenSSL-version-dependent symbols that get set by
> configure in non-Windows builds, but we have nothing equivalent to
> that for Windows.  Michael P. laid out the situation in a recent commit
> message:
>
>
> Author: Michael Paquier <mich...@paquier.xyz>
> Branch: master Release: REL_11_BR [bde64eb61] 2018-06-19 09:00:33 +0900
>
>     Track new configure flags introduced for version 11 in
> pg_config.h.win32
>
>     The following set of flags mainly matter when building Postgres code
>     with MSVC and those have been forgotten with latest developments:
>     - HAVE_LDAP_INITIALIZE, added by 35c0754f, and marked as disabled.
>     ldap_initialize() is a non-standard extension that provides a way to
> use
>     "ldaps" with OpenLDAP, but it is not supported on Windows, and instead
>     the non-standard ldap_sslinit() is used if WIN32 is defined.  Per input
>     from Thomas Munro.
>     - HAVE_X509_GET_SIGNATURE_NID, added by 054e8c6c, which is used by
>     SCRAM's channel binding tls-server-end-point.  Having this flag
> disabled
>     would cause this channel binding type to be unsupported for Windows
>     builds.
>     - HAVE_SSL_CLEAR_OPTIONS, added recently as of a364dfa4 to disable SSL
>     compression.
>     - HAVE_ASN1_STRING_GET0_DATA, added by 5c6df67, which is used to track
>     a new compatibility with OpenSSL 1.1.0.  This was missing from
>     pg_config.win32.h and is not enabled by default.  HAVE_BIO_GET_DATA,
>     HAVE_OPENSSL_INIT_SSL and HAVE_BIO_METH_NEW gain the same treatment.
>
>     The second and third flags are enabled with this commit, which raises
>     the bar of OpenSSL support to 1.0.2 on Windows as a minimum.  As this
>     is the LTS (long-time support) version of OpenSSL community and knowing
>     that all recent installers referred by OpenSSL upstream don't have
>     anymore 1.0.1 or older, we could live with that requirement.  In order
>     to allow the code to compile with OpenSSL 1.1.0, all the flags
> mentioned
>     above need to be enabled in pg_config.h.win32.
>
>     Author: Michael Paquier
>     Reviewed-by: Andrew Dunstan
>     Discussion: https://postgr.es/m/20180529211559.gf6...@paquier.xyz
>
>
> So the immediate fix for building on Windows is you need to manually
> define all of those in pg_config.h.  We probably ought to try to make
> that less painful, though.  At the very least it'd be good if there
> were just one symbol you had to set manually ...
>
>                         regards, tom lane
>

Reply via email to