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

