gfio_check="no"
libhdfs="no"
pmemblk="no"
+devdax="no"
disable_lex=""
+disable_pmem="no"
prefix=/usr/local
# parse options
;;
--enable-libhdfs) libhdfs="yes"
;;
- --enable-pmemblk) pmemblk="yes"
- ;;
--disable-lex) disable_lex="yes"
;;
--enable-lex) disable_lex="no"
;;
--disable-optimizations) disable_opt="yes"
;;
+ --disable-pmem) disable_pmem="yes"
+ ;;
--help)
show_help="yes"
;;
echo "--disable-numa Disable libnuma even if found"
echo "--disable-gfapi Disable gfapi"
echo "--enable-libhdfs Enable hdfs support"
- echo "--enable-pmemblk Enable NVML libpmemblk support"
echo "--disable-lex Disable use of lex/yacc for math"
+ echo "--disable-pmem Disable pmem based engines even if found"
echo "--enable-lex Enable use of lex/yacc for math"
echo "--disable-shm Disable SHM support"
echo "--disable-optimizations Don't enable compiler optimizations"
if test -z "$CC" ; then
if test ! -z "$build_32bit_win" && test "$build_32bit_win" = "yes"; then
CC="i686-w64-mingw32-gcc"
+ if test -e "../zlib/contrib/vstudio/vc14/x86/ZlibStatReleaseWithoutAsm/zlibstat.lib"; then
+ echo "Building with zlib support"
+ output_sym "CONFIG_ZLIB"
+ echo "LIBS=../zlib/contrib/vstudio/vc14/x86/ZlibStatReleaseWithoutAsm/zlibstat.lib" >> $config_host_mak
+ fi
else
CC="x86_64-w64-mingw32-gcc"
+ if test -e "../zlib/contrib/vstudio/vc14/x64/ZlibStatReleaseWithoutAsm/zlibstat.lib"; then
+ echo "Building with zlib support"
+ output_sym "CONFIG_ZLIB"
+ echo "LIBS=../zlib/contrib/vstudio/vc14/x64/ZlibStatReleaseWithoutAsm/zlibstat.lib" >> $config_host_mak
+ fi
fi
fi
output_sym "CONFIG_LITTLE_ENDIAN"
output_sym "CONFIG_TLS_THREAD"
output_sym "CONFIG_IPV6"
echo "CC=$CC" >> $config_host_mak
- echo "BUILD_CFLAGS=$CFLAGS -include config-host.h -D_GNU_SOURCE" >> $config_host_mak
+ echo "BUILD_CFLAGS=$CFLAGS -I../zlib -include config-host.h -D_GNU_SOURCE" >> $config_host_mak
+
exit 0
;;
esac
fi
elif check_define __arm__ ; then
cpu="arm"
+elif check_define __aarch64__ ; then
+ cpu="aarch64"
elif check_define __hppa__ ; then
cpu="hppa"
else
armv*b|armv*l|arm)
cpu="arm"
;;
+ aarch64)
+ cpu="arm64"
+ ;;
hppa|parisc|parisc64)
cpu="hppa"
;;
clockid_t="no"
cat > $TMPC << EOF
#include <stdio.h>
+#include <string.h>
#include <time.h>
int main(int argc, char **argv)
{
- clockid_t cid = 0;
+ clockid_t cid;
+ memset(&cid, 0, sizeof(cid));
return clock_gettime(cid, NULL);
}
EOF
fi
echo "Rados Block Device engine $rbd"
+##########################################
+# check for rbd_poll
+rbd_poll="no"
+if test "$rbd" = "yes"; then
+cat > $TMPC << EOF
+#include <rbd/librbd.h>
+#include <sys/eventfd.h>
+
+int main(int argc, char **argv)
+{
+ rbd_image_t image;
+ rbd_completion_t comp;
+
+ int fd = eventfd(0, EFD_NONBLOCK);
+ rbd_set_image_notification(image, fd, EVENT_TYPE_EVENTFD);
+ rbd_poll_io_events(image, comp, 1);
+
+ return 0;
+}
+EOF
+if compile_prog "" "-lrbd -lrados" "rbd"; then
+ rbd_poll="yes"
+fi
+echo "rbd_poll $rbd_poll"
+fi
+
##########################################
# check for rbd_invaidate_cache()
rbd_inval="no"
fi
echo "MTD $mtd"
+##########################################
+# Check whether we have libpmem
+libpmem="no"
+cat > $TMPC << EOF
+#include <libpmem.h>
+int main(int argc, char **argv)
+{
+ int rc;
+ rc = pmem_is_pmem(0, 0);
+ return 0;
+}
+EOF
+if compile_prog "" "-lpmem" "libpmem"; then
+ libpmem="yes"
+ LIBS="-lpmem $LIBS"
+fi
+echo "libpmem $libpmem"
+
+##########################################
+# Check whether we have libpmemblk
+# libpmem is a prerequisite
+libpmemblk="no"
+if test "$libpmem" = "yes"; then
+ cat > $TMPC << EOF
+#include <libpmemblk.h>
+int main(int argc, char **argv)
+{
+ PMEMblkpool *pbp;
+ pbp = pmemblk_open("", 0);
+ return 0;
+}
+EOF
+ if compile_prog "" "-lpmemblk" "libpmemblk"; then
+ libpmemblk="yes"
+ LIBS="-lpmemblk $LIBS"
+ fi
+fi
+echo "libpmemblk $libpmemblk"
+
+# Choose the ioengines
+if test "$libpmem" = "yes" && test "$disable_pmem" = "no"; then
+ devdax="yes"
+ if test "$libpmemblk" = "yes"; then
+ pmemblk="yes"
+ fi
+fi
+
##########################################
# Report whether pmemblk engine is enabled
-echo "NVML libpmemblk engine $pmemblk"
+echo "NVML pmemblk engine $pmemblk"
+
+##########################################
+# Report whether dev-dax engine is enabled
+echo "NVML dev-dax engine $devdax"
# Check if we have lex/yacc available
yacc="no"
##########################################
# Check whether we have getmntinfo
+# These are originally added for BSDs, but may also work
+# on other operating systems with getmntinfo(3).
+
+# getmntinfo(3) for FreeBSD/DragonFlyBSD/OpenBSD.
+# Note that NetBSD needs -Werror to catch warning as error.
getmntinfo="no"
cat > $TMPC << EOF
#include <stdio.h>
#include <sys/mount.h>
int main(int argc, char **argv)
{
- struct statfs st;
+ struct statfs *st;
return getmntinfo(&st, MNT_NOWAIT);
}
EOF
-if compile_prog "" "" "getmntinfo"; then
+if compile_prog "-Werror" "" "getmntinfo"; then
getmntinfo="yes"
fi
echo "getmntinfo $getmntinfo"
+# getmntinfo(3) for NetBSD.
+getmntinfo_statvfs="no"
+cat > $TMPC << EOF
+#include <stdio.h>
+#include <sys/statvfs.h>
+int main(int argc, char **argv)
+{
+ struct statvfs *st;
+ return getmntinfo(&st, MNT_NOWAIT);
+}
+EOF
+# Skip the test if the one with statfs arg is detected.
+if test "$getmntinfo" != "yes" && compile_prog "-Werror" "" "getmntinfo_statvfs"; then
+ getmntinfo_statvfs="yes"
+ echo "getmntinfo_statvfs $getmntinfo_statvfs"
+fi
+
##########################################
# Check whether we have _Static_assert
static_assert="no"
fi
echo "bool $have_bool"
+##########################################
+# check march=armv8-a+crc+crypto
+march_armv8_a_crc_crypto="no"
+if test "$cpu" = "arm64" ; then
+ cat > $TMPC <<EOF
+int main(void)
+{
+ return 0;
+}
+EOF
+ if compile_prog "-march=armv8-a+crc+crypto" "" ""; then
+ march_armv8_a_crc_crypto="yes"
+ CFLAGS="$CFLAGS -march=armv8-a+crc+crypto -DARCH_HAVE_CRC_CRYPTO"
+ fi
+fi
+echo "march_armv8_a_crc_crypto $march_armv8_a_crc_crypto"
+
+
#############################################################################
if test "$wordsize" = "64" ; then
if test "$rbd" = "yes" ; then
output_sym "CONFIG_RBD"
fi
+if test "$rbd_poll" = "yes" ; then
+ output_sym "CONFIG_RBD_POLL"
+fi
if test "$rbd_inval" = "yes" ; then
output_sym "CONFIG_RBD_INVAL"
fi
if test "$pmemblk" = "yes" ; then
output_sym "CONFIG_PMEMBLK"
fi
+if test "$devdax" = "yes" ; then
+ output_sym "CONFIG_LINUX_DEVDAX"
+fi
if test "$arith" = "yes" ; then
output_sym "CONFIG_ARITHMETIC"
if test "$yacc_is_bison" = "yes" ; then
if test "$getmntinfo" = "yes" ; then
output_sym "CONFIG_GETMNTINFO"
fi
+if test "$getmntinfo_statvfs" = "yes" ; then
+ output_sym "CONFIG_GETMNTINFO_STATVFS"
+fi
if test "$static_assert" = "yes" ; then
output_sym "CONFIG_STATIC_ASSERT"
fi