--- configure.in
+++ configure.in
@@ -527,7 +527,7 @@
 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid strpbrk pipe crypt16 getauthuid)
 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction innetgr setnetgrent getnetgrent endnetgrent)
 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
-AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
+AC_CHECK_FUNCS(setpriv setgroups sysconf mktime rename ftruncate stat64 fstat64)
 AC_CHECK_FUNCS(lstat64 fopen64 lseek64 ftruncate64 readdir64 open64 creat64)
 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
 AC_CHECK_FUNCS(srandom random srand rand usleep)
@@ -1314,7 +1314,7 @@
 # look for a method of setting the effective uid
 seteuid=no;
 if test $seteuid = no; then
-AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
+AC_CACHE_CHECK([for working setresuid],samba_cv_USE_SETRESUID,[
 AC_TRY_RUN([
 #define AUTOCONF_TEST 1
 #define USE_SETRESUID 1
@@ -1322,13 +1322,12 @@
 #include "${srcdir-.}/lib/util_sec.c"],
            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
-    seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
+    seteuid=setresuid
 fi
 fi
 
-
 if test $seteuid = no; then
-AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
+AC_CACHE_CHECK([for working setreuid],samba_cv_USE_SETREUID,[
 AC_TRY_RUN([
 #define AUTOCONF_TEST 1
 #define USE_SETREUID 1
@@ -1336,12 +1335,12 @@
 #include "${srcdir-.}/lib/util_sec.c"],
            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
-    seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
+    seteuid=setreuid
 fi
 fi
 
 if test $seteuid = no; then
-AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
+AC_CACHE_CHECK([for working seteuid],samba_cv_USE_SETEUID,[
 AC_TRY_RUN([
 #define AUTOCONF_TEST 1
 #define USE_SETEUID 1
@@ -1349,12 +1348,12 @@
 #include "${srcdir-.}/lib/util_sec.c"],
            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
-    seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
+    seteuid=seteuid
 fi
 fi
 
 if test $seteuid = no; then
-AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
+AC_CACHE_CHECK([for working setuidx],samba_cv_USE_SETUIDX,[
 AC_TRY_RUN([
 #define AUTOCONF_TEST 1
 #define USE_SETUIDX 1
@@ -1362,10 +1361,41 @@
 #include "${srcdir-.}/lib/util_sec.c"],
            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
-    seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
+    seteuid=setuidx
 fi
 fi
 
+if test $seteuid = no; then
+AC_MSG_WARN([seteuid detection did not work,
+maybe you're cross compiling?
+Using fall back search.])
+AC_CHECK_FUNC(setresuid, [seteuid=setresuid], [
+    AC_CHECK_FUNC(setreuid, [seteuid=setreuid], [
+        AC_CHECK_FUNC(seteuid, [seteuid=seteuid], [
+            AC_CHECK_FUNC(setuidx, [seteuid=setuidx])
+        ])
+    ])
+])
+fi
+
+case "$seteuid" in
+    setresuid)
+	AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
+	;;
+    setreuid)
+	AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
+	;;
+    seteuid)
+	AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
+	;;
+    setuidx)
+	AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
+	;;
+    *)
+	AC_MSG_WARN([*** No way found to do seteuid... very bad])
+	;;
+esac
+
 
 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],

