From 988eb0f82f9d18a470e969f9d42e3253c4d7c2c9 Mon Sep 17 00:00:00 2001
From: George Joseph <george.joseph@fairview5.com>
Date: Fri, 20 Jun 2014 21:59:08 +0000
Subject: [PATCH] build: Allow autoconf/ast_ext_tool_check to handle
 cross-compiling better.

ast_ext_tool_check.m4 isn't handling cases where a path to a package is
provided (E.G. --with-mysqlclient=/some/sysroot) and the package has a config
tool (E.G. mysql_config) and the package has its own subdirectories in include
or lib.  For example, mysql's libraries are in ${MYSQLCLIENT_DIR}/usr/lib/mysql
but ast_ext_tool_check sets MYSQLCLIENT_LIB to ${MYSQLCLIENT_DIR}/usr/lib.
libxml2 has the same problem with its includes.  They're in
${LIBXML2_DIR}/usr/include/libxml2 not directly in ${LIBXML2_DIR}/usr/include.
Both cause configure to fail and there are others in the same boat.

The problem is caused by logic in ast_ext_tool_check that overrides the result
of the config tool's --cflags and --libs options if package_DIR is set.

This patch prepends package_DIR (if specified) to the -L and -I results from
the package's config tool instead of overriding them.

Tested by: George Joseph
Tested by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/3550/
........

Merged revisions 416870 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 416871 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@416872 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 autoconf/ast_ext_tool_check.m4 | 62 ++++++++++++++++------------------
 1 file changed, 30 insertions(+), 32 deletions(-)

diff --git a/autoconf/ast_ext_tool_check.m4 b/autoconf/ast_ext_tool_check.m4
index 16e95c49f0..da256c74bc 100644
--- a/autoconf/ast_ext_tool_check.m4
+++ b/autoconf/ast_ext_tool_check.m4
@@ -5,39 +5,37 @@
 # AST_EXT_TOOL_CHECK([package], [tool name], [--cflags], [--libs], [includes], [expression])
 AC_DEFUN([AST_EXT_TOOL_CHECK],
 [
-    if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
-	PBX_$1=0
-	AC_PATH_TOOL(CONFIG_$1, $2, No, [${$1_DIR}/bin:$PATH])
-	if test ! "x${CONFIG_$1}" = xNo; then
-	    if test x"$3" = x ; then A=--cflags ; else A="$3" ; fi
-	    $1_INCLUDE=$(${CONFIG_$1} $A)
-	    if test x"$4" = x ; then A=--libs ; else A="$4" ; fi
-	    $1_LIB=$(${CONFIG_$1} $A)
-	    if test x"$5" != x ; then
-		saved_cppflags="${CPPFLAGS}"
-		if test "x${$1_DIR}" != "x"; then
-		    $1_INCLUDE="-I${$1_DIR}/include"
-		fi
-		CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
+	if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
+		PBX_$1=0
+		AC_PATH_TOOL(CONFIG_$1, $2, No, [${$1_DIR}/bin:$PATH])
+		if test ! "x${CONFIG_$1}" = xNo; then
+			if test x"$3" = x ; then A=--cflags ; else A="$3" ; fi
+			$1_INCLUDE=$(${CONFIG_$1} $A)
+			$1_INCLUDE=$(echo ${$1_INCLUDE} | $SED -e "s|-I|-I${$1_DIR}|g")
+
+			if test x"$4" = x ; then A=--libs ; else A="$4" ; fi
+			$1_LIB=$(${CONFIG_$1} $A)
+			$1_LIB=$(echo ${$1_LIB} | $SED -e "s|-L|-L${$1_DIR}|g")
 
-		saved_libs="${LIBS}"
-		LIBS="${$1_LIB}"
+			if test x"$5" != x ; then
+				saved_cppflags="${CPPFLAGS}"
+				CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
 
-		AC_LINK_IFELSE(
-		    [ AC_LANG_PROGRAM( [ $5 ],
-				       [ $6; ]
-				       )],
-		    [   PBX_$1=1
-			AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 headers.])
-		    ],
-		    []
-		)
-		CPPFLAGS="${saved_cppflags}"
-		LIBS="${saved_libs}"
-	    else
-		PBX_$1=1
-		AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 libraries.])
-	    fi
+				saved_libs="${LIBS}"
+				LIBS=${$1_LIB}
+
+				AC_LINK_IFELSE(
+					[ AC_LANG_PROGRAM( [ $5 ], [ $6; ])],
+					[ PBX_$1=1 AC_DEFINE([HAVE_$1], 1,
+						[Define if your system has the $1 headers.])],
+					[]
+				)
+				CPPFLAGS="${saved_cppflags}"
+				LIBS="${saved_libs}"
+			else
+				PBX_$1=1
+				AC_DEFINE([HAVE_$1], 1, [Define if your system has the $1 libraries.])
+			fi
+		fi
 	fi
-    fi
 ])
-- 
GitLab