diff --git a/m4/ipopt.m4 b/m4/ipopt.m4
index f2be715732f4a7354179c3b404fd000f11f8230d..c10c23ef5c012e0346b320331b370374fd133892 100644
--- a/m4/ipopt.m4
+++ b/m4/ipopt.m4
@@ -10,6 +10,7 @@ AC_DEFUN([DUNE_IPOPT],[
 ac_save_LDFLAGS="$LDFLAGS"
 ac_save_CPPFLAGS="$CPPFLAGS"
 ac_save_LIBS="$LIBS"
+ac_save_PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
 
 ## do nothing if --without-ipopt is used
 AS_IF([test x$with_ipopt != xno], [
@@ -34,10 +35,11 @@ AS_IF([test x$with_ipopt != xno], [
     CPPFLAGS="$CPPFLAGS -I$IPOPT_INCLUDE_PATH"
 
     # Check whether ipopt is installed at all
-    AS_IF([PKG_CONFIG_PATH=$IPOPT_LIB_PATH/pkgconfig $PKG_CONFIG --exists ipopt], [
+    export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$IPOPT_LIB_PATH/pkgconfig"
+    PKG_CHECK_EXISTS([ipopt], [
 	IPOPT_CPPFLAGS="-I$IPOPT_INCLUDE_PATH"
 	HAVE_IPOPT="1"
-    ], [
+    ], [ dnl default rule would fail
 	AC_MSG_WARN([IPOpt not found in $IPOPTROOT])
     ])
 
@@ -89,6 +91,7 @@ AM_CONDITIONAL(IPOPT, test x$HAVE_IPOPT = x1)
 LIBS="$ac_save_LIBS"
 CPPFLAGS="$ac_save_CPPFLAGS"
 LDFLAGS="$ac_save_LDFLAGS"
+PKG_CONFIG_PATH="$ac_save_PKG_CONFIG_PATH"
 
 DUNE_ADD_SUMMARY_ENTRY([IPOpt],[$with_ipopt])