diff --git a/package/ncurses/ncurses-01-fixup-pkg-config-handling.patch b/package/ncurses/ncurses-01-fixup-pkg-config-handling.patch
new file mode 100644
index 0000000..e1cfc75
--- /dev/null
+++ b/package/ncurses/ncurses-01-fixup-pkg-config-handling.patch
@@ -0,0 +1,89 @@
+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)
+ 
diff --git a/package/ncurses/ncurses.mk b/package/ncurses/ncurses.mk
index 72a8030..e0df2aa 100644
--- a/package/ncurses/ncurses.mk
+++ b/package/ncurses/ncurses.mk
@@ -23,7 +23,7 @@
 # USA
 
 # TARGETS
-NCURSES_VERSION = 5.7
+NCURSES_VERSION = 5.9
 NCURSES_SITE = $(BR2_GNU_MIRROR)/ncurses
 NCURSES_INSTALL_STAGING = YES
 NCURSES_DEPENDENCIES = host-ncurses
@@ -41,7 +41,8 @@ NCURSES_CONF_OPT = \
 	--enable-echo \
 	--enable-const \
 	--enable-overwrite \
-	--enable-broken_linker
+	--enable-broken_linker \
+	--enable-pc-files
 
 ifneq ($(BR2_ENABLE_DEBUG),y)
 NCURSES_CONF_OPT += --without-debug
