From 4ba4b1e0bd1b69e124eb34c95ae9e7c087370efa Mon Sep 17 00:00:00 2001
From: Martin Bark <martin@barkynet.com>
Date: Fri, 6 May 2016 14:48:31 +0100
Subject: [PATCH] auto/lib/openssl/conf: use pkg-config

Change to using pkg-config to find the path to openssl and its
dependencies.

Signed-off-by: Martin Bark <martin@barkynet.com>
---
 auto/lib/openssl/conf | 187 +++++++++++++++++++++---------------------
 1 file changed, 94 insertions(+), 93 deletions(-)

diff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf
index 4fb52df7..9f30490d 100644
--- a/auto/lib/openssl/conf
+++ b/auto/lib/openssl/conf
@@ -1,4 +1,3 @@
-
 # Copyright (C) Igor Sysoev
 # Copyright (C) Nginx, Inc.
 
@@ -7,123 +6,125 @@ if [ $OPENSSL != NONE ]; then
 
     case "$CC" in
 
-        cl | bcc32)
-            have=NGX_OPENSSL . auto/have
-            have=NGX_SSL . auto/have
-
-            CFLAGS="$CFLAGS -DNO_SYS_TYPES_H"
-
-            CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
-            CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
-
-            if [ -f $OPENSSL/ms/do_ms.bat ]; then
-                # before OpenSSL 1.1.0
-                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
-                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
-            else
-                # OpenSSL 1.1.0+
-                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib"
-                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib"
-            fi
-
-            # libeay32.lib requires gdi32.lib
-            CORE_LIBS="$CORE_LIBS gdi32.lib"
-            # OpenSSL 1.0.0 requires crypt32.lib
-            CORE_LIBS="$CORE_LIBS crypt32.lib"
-        ;;
-
-        *)
-            have=NGX_OPENSSL . auto/have
-            have=NGX_SSL . auto/have
-
-            CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
-            CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
-            CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
-            CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
-            CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
-            CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"
-
-            if [ "$NGX_PLATFORM" = win32 ]; then
-                CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32"
-            fi
-        ;;
+	cl | bcc32)
+	    have=NGX_OPENSSL . auto/have
+	    have=NGX_SSL . auto/have
+
+	    CFLAGS="$CFLAGS -DNO_SYS_TYPES_H"
+
+	    CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
+	    CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
+
+	    if [ -f $OPENSSL/ms/do_ms.bat ]; then
+		# before OpenSSL 1.1.0
+		CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
+		CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
+	    else
+		# OpenSSL 1.1.0+
+		CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib"
+		CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib"
+	    fi
+
+	    # libeay32.lib requires gdi32.lib
+	    CORE_LIBS="$CORE_LIBS gdi32.lib"
+	    # OpenSSL 1.0.0 requires crypt32.lib
+	    CORE_LIBS="$CORE_LIBS crypt32.lib"
+	;;
+
+	*)
+	    have=NGX_OPENSSL . auto/have
+	    have=NGX_SSL . auto/have
+
+	    CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
+	    CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
+	    CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
+	    CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
+	    CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
+	    CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"
+
+	    if [ "$NGX_PLATFORM" = win32 ]; then
+		CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32"
+	    fi
+	;;
     esac
 
 else
 
     if [ "$NGX_PLATFORM" != win32 ]; then
 
-        OPENSSL=NO
+	OPENSSL=NO
 
-        ngx_feature="OpenSSL library"
-        ngx_feature_name="NGX_OPENSSL"
-        ngx_feature_run=no
-        ngx_feature_incs="#include <openssl/ssl.h>"
-        ngx_feature_path=
-        ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL $NGX_LIBPTHREAD"
-        ngx_feature_test="SSL_CTX_set_options(NULL, 0)"
-        . auto/feature
+	ngx_feature="OpenSSL library"
+	ngx_feature_name="NGX_OPENSSL"
+	ngx_feature_run=no
+	ngx_feature_incs="#include <openssl/ssl.h>"
+	ngx_feature_path=
+	ngx_feature_path="$(${PKG_CONFIG:=pkg-config} --cflags-only-I openssl|
+			    sed -re 's/(^|\s)-I\s*(\S+)/\1\2/g')"
+	ngx_feature_libs="$(${PKG_CONFIG:=pkg-config} --libs openssl)"
+	ngx_feature_test="SSL_CTX_set_options(NULL, 0)"
+	. auto/feature
 
-        if [ $ngx_found = no ]; then
+	if [ $ngx_found = no ]; then
 
-            # FreeBSD port
+	    # FreeBSD port
 
-            ngx_feature="OpenSSL library in /usr/local/"
-            ngx_feature_path="/usr/local/include"
+	    ngx_feature="OpenSSL library in /usr/local/"
+	    ngx_feature_path="/usr/local/include"
 
-            if [ $NGX_RPATH = YES ]; then
-                ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto"
-            else
-                ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto"
-            fi
+	    if [ $NGX_RPATH = YES ]; then
+		ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto"
+	    else
+		ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto"
+	    fi
 
-            ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
+	    ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
 
-            . auto/feature
-        fi
+	    . auto/feature
+	fi
 
-        if [ $ngx_found = no ]; then
+	if [ $ngx_found = no ]; then
 
-            # NetBSD port
+	    # NetBSD port
 
-            ngx_feature="OpenSSL library in /usr/pkg/"
-            ngx_feature_path="/usr/pkg/include"
+	    ngx_feature="OpenSSL library in /usr/pkg/"
+	    ngx_feature_path="/usr/pkg/include"
 
-            if [ $NGX_RPATH = YES ]; then
-                ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto"
-            else
-                ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto"
-            fi
+	    if [ $NGX_RPATH = YES ]; then
+		ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto"
+	    else
+		ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto"
+	    fi
 
-            ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
+	    ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
 
-            . auto/feature
-        fi
+	    . auto/feature
+	fi
 
-        if [ $ngx_found = no ]; then
+	if [ $ngx_found = no ]; then
 
-            # MacPorts
+	    # MacPorts
 
-            ngx_feature="OpenSSL library in /opt/local/"
-            ngx_feature_path="/opt/local/include"
+	    ngx_feature="OpenSSL library in /opt/local/"
+	    ngx_feature_path="/opt/local/include"
 
-            if [ $NGX_RPATH = YES ]; then
-                ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto"
-            else
-                ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto"
-            fi
+	    if [ $NGX_RPATH = YES ]; then
+		ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto"
+	    else
+		ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto"
+	    fi
 
-            ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
+	    ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
 
-            . auto/feature
-        fi
+	    . auto/feature
+	fi
 
-        if [ $ngx_found = yes ]; then
-            have=NGX_SSL . auto/have
-            CORE_INCS="$CORE_INCS $ngx_feature_path"
-            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
-            OPENSSL=YES
-        fi
+	if [ $ngx_found = yes ]; then
+	    have=NGX_SSL . auto/have
+	    CORE_INCS="$CORE_INCS $ngx_feature_path"
+	    CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
+	    OPENSSL=YES
+	fi
     fi
 
     if [ $OPENSSL != YES ]; then
@@ -136,7 +137,7 @@ into the system, or build the OpenSSL library statically from the source
 with nginx by using --with-openssl=<path> option.
 
 END
-        exit 1
+	exit 1
     fi
 
 fi
-- 
2.17.1