+
+##########################################
+# Check if we have required environment variables configured for libhdfs
+if test "$libhdfs" = "yes" ; then
+ hdfs_conf_error=0
+ if test "$JAVA_HOME" = "" ; then
+ echo "configure: JAVA_HOME should be defined to jdk/jvm path"
+ hdfs_conf_error=1
+ fi
+ if test "$FIO_LIBHDFS_INCLUDE" = "" ; then
+ echo "configure: FIO_LIBHDFS_INCLUDE should be defined to libhdfs inlude path"
+ hdfs_conf_error=1
+ fi
+ if test "$FIO_LIBHDFS_LIB" = "" ; then
+ echo "configure: FIO_LIBHDFS_LIB should be defined to libhdfs library path"
+ hdfs_conf_error=1
+ fi
+ if test "$hdfs_conf_error" = "1" ; then
+ exit 1
+ fi
+fi
+echo "HDFS engine $libhdfs"
+
+##########################################
+# Check whether we have MTD
+mtd="no"
+cat > $TMPC << EOF
+#include <string.h>
+#include <mtd/mtd-user.h>
+#include <sys/ioctl.h>
+int main(int argc, char **argv)
+{
+ struct mtd_write_req ops;
+ struct mtd_info_user info;
+ memset(&ops, 0, sizeof(ops));
+ info.type = MTD_MLCNANDFLASH;
+ return ioctl(0, MEMGETINFO, &info);
+}
+EOF
+if compile_prog "" "" "mtd"; then
+ mtd="yes"
+fi
+echo "MTD $mtd"
+
+# Check if we have lex/yacc available
+yacc="no"
+yacc_is_bison="no"
+lex="no"
+arith="no"
+if test "$disable_lex" = "no"; then
+if test "$targetos" != "SunOS" ; then
+LEX=$(which lex 2> /dev/null)
+if test -x "$LEX" ; then
+ lex="yes"
+fi
+YACC=$(which bison 2> /dev/null)
+if test -x "$YACC" ; then
+ yacc="yes"
+ yacc_is_bison="yes"
+else
+ YACC=$(which yacc 2> /dev/null)
+ if test -x "$YACC" ; then
+ yacc="yes"
+ fi
+fi
+if test "$yacc" = "yes" && test "$lex" = "yes" ; then
+ arith="yes"
+fi
+
+if test "$arith" = "yes" ; then
+cat > $TMPC << EOF
+extern int yywrap(void);
+
+int main(int argc, char **argv)
+{
+ yywrap();
+ return 0;
+}
+EOF
+if compile_prog "" "-ll" "lex"; then
+ LIBS="-ll $LIBS"
+else
+ arith="no"
+fi
+fi
+fi
+fi
+
+echo "lex/yacc for arithmetic $arith"
+
+##########################################
+# Check whether we have setmntent/getmntent
+getmntent="no"
+cat > $TMPC << EOF
+#include <stdio.h>
+#include <mntent.h>
+int main(int argc, char **argv)
+{
+ FILE *mtab = setmntent(NULL, "r");
+ struct mntent *mnt = getmntent(mtab);
+ endmntent(mtab);
+ return 0;
+}
+EOF
+if compile_prog "" "" "getmntent"; then
+ getmntent="yes"
+fi
+echo "getmntent $getmntent"
+
+##########################################
+# Check whether we have getmntinfo
+getmntinfo="no"
+cat > $TMPC << EOF
+#include <stdio.h>
+#include <sys/param.h>
+#include <sys/mount.h>
+int main(int argc, char **argv)
+{
+ struct statfs st;
+ return getmntinfo(&st, MNT_NOWAIT);
+}
+EOF
+if compile_prog "" "" "getmntinfo"; then
+ getmntinfo="yes"
+fi
+echo "getmntinfo $getmntinfo"
+
+##########################################
+# Check whether we have _Static_assert
+static_assert="no"
+cat > $TMPC << EOF
+#include <assert.h>
+#include <stdlib.h>
+#undef offsetof
+#ifdef __compiler_offsetof
+#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
+#else
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
+#define container_of(ptr, type, member) ({ \
+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+
+struct foo {
+ int a, b;
+};
+
+int main(int argc, char **argv)
+{
+ _Static_assert(offsetof(struct foo, a) == 0 , "Check");
+ return 0 ;
+}
+EOF
+if compile_prog "" "" "static_assert"; then
+ static_assert="yes"
+fi
+echo "Static Assert $static_assert"
+
+##########################################
+# Check whether we have bool / stdbool.h
+have_bool="no"
+cat > $TMPC << EOF
+#include <stdbool.h>
+int main(int argc, char **argv)
+{
+ bool var = true;
+ return var != false;
+}
+EOF
+if compile_prog "" "" "bool"; then
+ have_bool="yes"
+fi
+echo "bool $have_bool"
+