Change handling of PKG_CONFIG_LIBDIR

When PKG_CONFIG_LIBDIR was unset in the environment, the configure
script was deducing the PKG_CONFIG_LIBDIR from the location of the
pkg-config binary, which doesn't make a lot of sense, and isn't done
by other autotools based packages.

Also, the configure script was checking that the directory really
exists. This forced to create the directory *and* provide an absolute
path in PKG_CONFIG_LIBDIR, which didn't play well with the fact that
at installation time, PKG_CONFIG_LIBDIR is suffixed to DESTDIR, which
means that we got two times the staging directory location.

This patch fixes both of those issues. Also, since ncurses uses a fork
of autoconf 2.13, we can't simply use _AUTORECONF=YES, so we also fix
the configure script in this patch.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/configure
===================================================================
--- a/configure
+++ b/configure
@@ -3623,27 +3623,20 @@
 
 	# Leave this as something that can be overridden in the environment.
 	if test -z "$PKG_CONFIG_LIBDIR" ; then
-		PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`/lib/pkgconfig
+		PKG_CONFIG_LIBDIR="/usr/lib/pkgconfig"
 	fi
+
 	PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
-	if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
 
-# Check whether --enable-pc-files or --disable-pc-files was given.
-if test "${enable_pc_files+set}" = set; then
-  enableval="$enable_pc_files"
-  enable_pc_files=$enableval
-else
-  enable_pc_files=no
-fi;
-		echo "$as_me:3638: result: $enable_pc_files" >&5
-echo "${ECHO_T}$enable_pc_files" >&6
+        # Check whether --enable-pc-files or --disable-pc-files was given.
+	if test "${enable_pc_files+set}" = set; then
+	    enableval="$enable_pc_files"
+	    enable_pc_files=$enableval
 	else
-		echo "$as_me:3641: result: no" >&5
-echo "${ECHO_T}no" >&6
-		{ echo "$as_me:3643: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&5
-echo "$as_me: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&2;}
-		enable_pc_files=no
-	fi
+	    enable_pc_files=no
+	fi;
+	echo "$as_me:3638: result: $enable_pc_files" >&5
+	echo "${ECHO_T}$enable_pc_files" >&6
 fi
 
 echo "$as_me:3649: checking if we should assume mixed-case filenames" >&5
Index: b/configure.in
===================================================================
--- a/configure.in
+++ b/configure.in
@@ -174,20 +174,14 @@
 
 	# Leave this as something that can be overridden in the environment.
 	if test -z "$PKG_CONFIG_LIBDIR" ; then
-		PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`/lib/pkgconfig
+		PKG_CONFIG_LIBDIR="/usr/lib/pkgconfig"
 	fi
 	PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
-	if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
-		AC_ARG_ENABLE(pc-files,
+	AC_ARG_ENABLE(pc-files,
 			[  --enable-pc-files       generate and install .pc files for pkg-config],
 			[enable_pc_files=$enableval],
 			[enable_pc_files=no])
-		AC_MSG_RESULT($enable_pc_files)
-	else
-		AC_MSG_RESULT(no)
-		AC_MSG_WARN(did not find library $PKG_CONFIG_LIBDIR)
-		enable_pc_files=no
-	fi
+	AC_MSG_RESULT($enable_pc_files)
 fi
 AC_SUBST(PKG_CONFIG_LIBDIR)
 
