We are unable to run code at configure time in a cross environemnt, but as we
control the build we can be fairly certain this dependency is met.

Upstream-Status: Inappropriate [embedded specific]

JL 05/07/10
Index: beecrypt-4.2.1/configure.ac
===================================================================
--- beecrypt-4.2.1.orig/configure.ac	2010-11-26 17:12:25.000000000 +0800
+++ beecrypt-4.2.1/configure.ac	2010-11-26 17:12:30.000000000 +0800
@@ -292,32 +292,6 @@
 # Predefines and checks for C++ API support
 AH_TEMPLATE([CPPGLUE],[Define to 1 if you want to include the C++ code])
 
-if test "$ac_with_cplusplus" = yes; then
-  AC_MSG_CHECKING([for IBM's ICU library version >= 2.8])
-  AC_LANG_PUSH(C)
-  AC_RUN_IFELSE([
-    AC_LANG_PROGRAM([[#include <unicode/uversion.h>]],[[
-      #if U_ICU_VERSION_MAJOR_NUM < 2
-      exit(1);
-      #elif U_ICU_VERSION_MAJOR_NUM == 2
-      # if U_ICU_VERSION_MINOR_NUM < 8
-      exit(1);
-      # else
-      exit(0);
-      # endif
-      #else
-      exit(0);
-      #endif
-    ]])],[
-    AC_MSG_RESULT([yes])
-    ],[
-    AC_MSG_RESULT([no])
-    AC_MSG_WARN([disabling cplusplus])
-    ac_with_cplusplus=no
-    ])
-  AC_LANG_POP(C)
-fi
-
 AM_CONDITIONAL([WITH_CPLUSPLUS],[test "$ac_with_cplusplus" = yes])
 
 if test "$ac_with_cplusplus" = yes ; then
