X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=configure;h=748f7014c63541b26ef66dd8b72fcd1a8a27f777;hp=2671c325ce5db04c0824d3c43fae9d62916230c0;hb=HEAD;hpb=52a552e21ae25eb175f686935fe85a2956f949ce diff --git a/configure b/configure index 2671c325..3eef022b 100755 --- a/configure +++ b/configure @@ -44,7 +44,8 @@ print_config() { } # Default CFLAGS -CFLAGS="-D_GNU_SOURCE -include config-host.h" +CFLAGS="-D_GNU_SOURCE -include config-host.h $CFLAGS" +CONFIGURE_CFLAGS="-Werror-implicit-function-declaration" BUILD_CFLAGS="" # Print a helpful header at the top of config.log @@ -88,14 +89,14 @@ do_cc() { } compile_object() { - do_cc $CFLAGS -Werror-implicit-function-declaration -c -o $TMPO $TMPC + do_cc $CFLAGS $CONFIGURE_CFLAGS -c -o $TMPO $TMPC } compile_prog() { local_cflags="$1" local_ldflags="$2 $LIBS" echo "Compiling test case $3" >> config.log - do_cc $CFLAGS -Werror-implicit-function-declaration $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags + do_cc $CFLAGS $CONFIGURE_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags } feature_not_found() { @@ -115,6 +116,10 @@ has() { type "$1" >/dev/null 2>&1 } +num() { + echo "$1" | grep -E -q "^[0-9]+$" +} + check_define() { cat > $TMPC < $TMPC <> $config_host_mak echo "#define $1" >> $config_host_h } +check_min_lib_version() { + _feature=$3 + + if pkg-config --atleast-version="$2" "$1" > /dev/null 2>&1; then + return 0 + fi + : "${_feature:=${1}}" + if pkg-config --version > /dev/null 2>&1; then + if test "$(eval echo \"\$$_feature\")" = "yes" ; then + feature_not_found "$_feature" "$1 >= $2" + fi + else + print_config "$1" "missing pkg-config, can't check $_feature version" + fi + return 1 +} + targetos="" cpu="" @@ -141,16 +177,24 @@ show_help="no" exit_val=0 gfio_check="no" libhdfs="no" -pmemblk="no" devdax="no" pmem="no" +cuda="no" +libcufile="no" disable_lex="" disable_pmem="no" disable_native="no" march_set="no" libiscsi="no" libnbd="no" -libaio_uring="no" +libnfs="" +xnvme="" +isal="" +libblkio="" +libzbc="" +dfs="" +seed_buckets="" +dynamic_engines="no" prefix=/usr/local # parse options @@ -173,6 +217,8 @@ for opt do ;; --target-win-ver=*) target_win_ver="$optarg" ;; + --enable-pdb) pdb="yes" + ;; --build-static) build_static="yes" ;; --enable-gfio) gfio_check="yes" @@ -201,7 +247,9 @@ for opt do ;; --disable-pmem) disable_pmem="yes" ;; - --enable-cuda) enable_cuda="yes" + --enable-cuda) cuda="yes" + ;; + --enable-libcufile) libcufile="yes" ;; --disable-native) disable_native="yes" ;; @@ -211,9 +259,29 @@ for opt do ;; --enable-libnbd) libnbd="yes" ;; + --disable-libzbc) libzbc="no" + ;; + --disable-xnvme) xnvme="no" + ;; + --disable-isal) isal="no" + ;; + --disable-libblkio) libblkio="no" + ;; --disable-tcmalloc) disable_tcmalloc="yes" ;; - --enable-libaio-uring) libaio_uring="yes" + --disable-libnfs) libnfs="no" + ;; + --enable-libnfs) libnfs="yes" + ;; + --dynamic-libengines) dynamic_engines="yes" + ;; + --disable-dfs) dfs="no" + ;; + --enable-asan) asan="yes" + ;; + --seed-buckets=*) seed_buckets="$optarg" + ;; + --disable-tls) tls_check="no" ;; --help) show_help="yes" @@ -231,7 +299,8 @@ if test "$show_help" = "yes" ; then echo "--cc= Specify compiler to use" echo "--extra-cflags= Specify extra CFLAGS to pass to compiler" echo "--build-32bit-win Enable 32-bit build on Windows" - echo "--target-win-ver= Minimum version of Windows to target (XP or 7)" + echo "--target-win-ver= Minimum version of Windows to target (only accepts 7)" + echo "--enable-pdb Enable Windows PDB symbols generation (needs clang/lld)" echo "--build-static Build a static fio" echo "--esx Configure build options for esx" echo "--enable-gfio Enable building of gtk gfio" @@ -242,23 +311,34 @@ if test "$show_help" = "yes" ; then echo "--disable-http Disable HTTP support even if found" echo "--disable-gfapi Disable gfapi" echo "--enable-libhdfs Enable hdfs support" + echo "--enable-libnfs Enable nfs support" + echo "--disable-libnfs Disable nfs 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" echo "--enable-cuda Enable GPUDirect RDMA support" + echo "--enable-libcufile Enable GPUDirect Storage cuFile support" echo "--disable-native Don't build for native host" echo "--with-ime= Install path for DDN's Infinite Memory Engine" echo "--enable-libiscsi Enable iscsi support" echo "--enable-libnbd Enable libnbd (NBD engine) support" - echo "--disable-tcmalloc Disable tcmalloc support" - echo "--enable-libaio-uring Enable libaio emulated over io_uring" + echo "--disable-xnvme Disable xnvme support even if found" + echo "--disable-isal Disable isal support even if found" + echo "--disable-libblkio Disable libblkio support even if found" + echo "--disable-libzbc Disable libzbc even if found" + echo "--disable-tcmalloc Disable tcmalloc support" + echo "--dynamic-libengines Lib-based ioengines as dynamic libraries" + echo "--disable-dfs Disable DAOS File System support even if found" + echo "--enable-asan Enable address sanitizer" + echo "--seed-buckets= Number of seed buckets for the refill-buffer" + echo "--disable-tls Disable __thread local storage" exit $exit_val fi cross_prefix=${cross_prefix-${CROSS_COMPILE}} -# Preferred compiler (can be overriden later after we know the platform): +# Preferred compiler (can be overridden later after we know the platform): # ${CC} (if set) # ${cross_prefix}gcc (if cross-prefix specified) # gcc if available @@ -331,16 +411,15 @@ Darwin) if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then cpu="x86_64" fi - # Error at compile time linking of weak/partial symbols if possible... + # Avoid configure feature detection of features provided by weak symbols cat > $TMPC < $TMPC < +int main(void) +{ + _Atomic unsigned v; + atomic_load(&v); + return 0; +} +EOF +if ! compile_prog "" "" "C11 atomics"; then + echo + echo "Your compiler doesn't support C11 atomics. gcc 4.9/clang 3.6 are the" + echo "minimum versions with it - perhaps your compiler is too old?" + fatal "C11 atomics support not found" +fi + + ########################################## # check for wordsize wordsize="0" @@ -592,6 +696,25 @@ if compile_prog "" "-lz" "zlib" ; then fi print_config "zlib" "$zlib" +########################################## +# fcntl(F_FULLFSYNC) support +if test "$fcntl_sync" != "yes" ; then + fcntl_sync="no" +fi +cat > $TMPC << EOF +#include +#include + +int main(int argc, char **argv) +{ + return fcntl(0, F_FULLFSYNC); +} +EOF +if compile_prog "" "" "fcntl(F_FULLFSYNC)" ; then + fcntl_sync="yes" +fi +print_config "fcntl(F_FULLFSYNC)" "$fcntl_sync" + ########################################## # linux-aio probe if test "$libaio" != "yes" ; then @@ -607,23 +730,33 @@ int main(void) return 0; } EOF - if test "$libaio_uring" = "yes" && compile_prog "" "-luring" "libaio io_uring" ; then - libaio=yes - LIBS="-luring $LIBS" - elif compile_prog "" "-laio" "libaio" ; then + if compile_prog "" "-laio" "libaio" ; then libaio=yes - libaio_uring=no - LIBS="-laio $LIBS" else if test "$libaio" = "yes" ; then feature_not_found "linux AIO" "libaio-dev or libaio-devel" fi libaio=no - libaio_uring=no + fi + + cat > $TMPC < +#include +int main(void) +{ + io_prep_preadv2(NULL, 0, NULL, 0, 0, 0); + io_prep_pwritev2(NULL, 0, NULL, 0, 0, 0); + return 0; +} +EOF + if compile_prog "" "" "libaio rw flags" ; then + libaio_rw_flags=yes + else + libaio_rw_flags=no fi fi print_config "Linux AIO support" "$libaio" -print_config "Linux AIO over io_uring" "$libaio_uring" +print_config "Linux AIO support rw flags" "$libaio_rw_flags" ########################################## # posix aio probe @@ -706,10 +839,8 @@ print_config "POSIX pshared support" "$posix_pshared" ########################################## # POSIX pthread_condattr_setclock() probe -if test "$pthread_condattr_setclock" != "yes" ; then - pthread_condattr_setclock="no" -fi -cat > $TMPC < $TMPC < int main(void) { @@ -718,14 +849,60 @@ int main(void) return 0; } EOF -if compile_prog "" "$LIBS" "pthread_condattr_setclock" ; then - pthread_condattr_setclock=yes -elif compile_prog "" "$LIBS -lpthread" "pthread_condattr_setclock" ; then - pthread_condattr_setclock=yes - LIBS="$LIBS -lpthread" + if compile_prog "" "$LIBS" "pthread_condattr_setclock" ; then + pthread_condattr_setclock=yes + elif compile_prog "" "$LIBS -lpthread" "pthread_condattr_setclock" ; then + pthread_condattr_setclock=yes + LIBS="$LIBS -lpthread" + fi fi print_config "pthread_condattr_setclock()" "$pthread_condattr_setclock" +########################################## +# pthread_sigmask() probe +if test "$pthread_sigmask" != "yes" ; then + pthread_sigmask="no" +fi +cat > $TMPC < /* NULL */ +#include /* pthread_sigmask() */ +int main(void) +{ + sigset_t sigmask; + return pthread_sigmask(0, NULL, &sigmask); +} +EOF +if compile_prog "" "$LIBS" "pthread_sigmask" ; then + pthread_sigmask=yes +elif compile_prog "" "$LIBS -lpthread" "pthread_sigmask" ; then + pthread_sigmask=yes + LIBS="$LIBS -lpthread" +fi +print_config "pthread_sigmask()" "$pthread_sigmask" + +########################################## +# pthread_getaffinity_np() probe +if test "$pthread_getaffinity" != "yes" ; then + pthread_getaffinity="no" +fi +cat > $TMPC < /* NULL */ +#include /* pthread_sigmask() */ +#include +int main(void) +{ + cpu_set_t set; + return pthread_getaffinity_np(pthread_self(), sizeof(set), &set); +} +EOF +if compile_prog "" "$LIBS" "pthread_getaffinity" ; then + pthread_getaffinity="yes" +elif compile_prog "" "$LIBS -lpthread" "pthread_getaffinity" ; then + pthread_getaffinity="yes" + LIBS="$LIBS -lpthread" +fi +print_config "pthread_getaffinity_np()" "$pthread_getaffinity" + ########################################## # solaris aio probe if test "$solaris_aio" != "yes" ; then @@ -820,12 +997,11 @@ cat > $TMPC << EOF int main(int argc, char **argv) { struct ibv_pd *pd = ibv_alloc_pd(NULL); - return 0; + return pd != NULL; } EOF if test "$disable_rdma" != "yes" && compile_prog "" "-libverbs" "libverbs" ; then libverbs="yes" - LIBS="-libverbs $LIBS" fi print_config "libverbs" "$libverbs" @@ -845,10 +1021,51 @@ int main(int argc, char **argv) EOF if test "$disable_rdma" != "yes" && compile_prog "" "-lrdmacm" "rdma"; then rdmacm="yes" - LIBS="-lrdmacm $LIBS" fi print_config "rdmacm" "$rdmacm" +########################################## +# librpma probe +# The librpma engines require librpma>=v0.11.0 with rpma_cq_get_wc(). +if test "$librpma" != "yes" ; then + librpma="no" +fi +cat > $TMPC << EOF +#include +int main(void) +{ + void *ptr = rpma_cq_get_wc; + (void) ptr; /* unused */ + return 0; +} +EOF +if test "$disable_rdma" != "yes" && compile_prog "" "-lrpma" "rpma"; then + librpma="yes" +fi +print_config "librpma" "$librpma" + +########################################## +# libprotobuf-c probe +if test "$libprotobuf_c" != "yes" ; then + libprotobuf_c="no" +fi +cat > $TMPC << EOF +#include +#include +#if !defined(PROTOBUF_C_VERSION_NUMBER) +# error PROTOBUF_C_VERSION_NUMBER is not defined! +#endif +int main(int argc, char **argv) +{ + (void)protobuf_c_message_check(NULL); + return 0; +} +EOF +if compile_prog "" "-lprotobuf-c" "protobuf_c"; then + libprotobuf_c="yes" +fi +print_config "libprotobuf_c" "$libprotobuf_c" + ########################################## # asprintf() and vasprintf() probes if test "$have_asprintf" != "yes" ; then @@ -859,7 +1076,8 @@ cat > $TMPC << EOF int main(int argc, char **argv) { - return asprintf(NULL, "%s", "str") == 0; + char *buf; + return asprintf(&buf, "%s", "str") == 0; } EOF if compile_prog "" "" "have_asprintf"; then @@ -875,7 +1093,9 @@ cat > $TMPC << EOF int main(int argc, char **argv) { - return vasprintf(NULL, "%s", NULL) == 0; + va_list ap; + char *buf; + return vasprintf(&buf, "%s", ap) == 0; } EOF if compile_prog "" "" "have_vasprintf"; then @@ -953,7 +1173,8 @@ cat > $TMPC << EOF #include int main(int argc, char **argv) { - cpu_set_t mask; + cpu_set_t mask = { }; + return sched_setaffinity(0, sizeof(mask), &mask); } EOF @@ -964,7 +1185,8 @@ else #include int main(int argc, char **argv) { - cpu_set_t mask; + cpu_set_t mask = { }; + return sched_setaffinity(0, &mask); } EOF @@ -985,7 +1207,9 @@ cat > $TMPC << EOF #include int main(int argc, char **argv) { - return clock_gettime(0, NULL); + struct timespec ts; + + return clock_gettime(0, &ts); } EOF if compile_prog "" "" "clock_gettime"; then @@ -1007,7 +1231,9 @@ if test "$clock_gettime" = "yes" ; then #include int main(int argc, char **argv) { - return clock_gettime(CLOCK_MONOTONIC, NULL); + struct timespec ts; + + return clock_gettime(CLOCK_MONOTONIC, &ts); } EOF if compile_prog "" "$LIBS" "clock monotonic"; then @@ -1016,46 +1242,6 @@ EOF fi print_config "CLOCK_MONOTONIC" "$clock_monotonic" -########################################## -# CLOCK_MONOTONIC_RAW probe -if test "$clock_monotonic_raw" != "yes" ; then - clock_monotonic_raw="no" -fi -if test "$clock_gettime" = "yes" ; then - cat > $TMPC << EOF -#include -#include -int main(int argc, char **argv) -{ - return clock_gettime(CLOCK_MONOTONIC_RAW, NULL); -} -EOF - if compile_prog "" "$LIBS" "clock monotonic"; then - clock_monotonic_raw="yes" - fi -fi -print_config "CLOCK_MONOTONIC_RAW" "$clock_monotonic_raw" - -########################################## -# CLOCK_MONOTONIC_PRECISE probe -if test "$clock_monotonic_precise" != "yes" ; then - clock_monotonic_precise="no" -fi -if test "$clock_gettime" = "yes" ; then - cat > $TMPC << EOF -#include -#include -int main(int argc, char **argv) -{ - return clock_gettime(CLOCK_MONOTONIC_PRECISE, NULL); -} -EOF - if compile_prog "" "$LIBS" "clock monotonic precise"; then - clock_monotonic_precise="yes" - fi -fi -print_config "CLOCK_MONOTONIC_PRECISE" "$clock_monotonic_precise" - ########################################## # clockid_t probe if test "$clockid_t" != "yes" ; then @@ -1188,6 +1374,23 @@ if compile_prog "" "" "sync_file_range"; then fi print_config "sync_file_range" "$sync_file_range" +########################################## +# ASharedMemory_create() probe +if test "$ASharedMemory_create" != "yes" ; then + ASharedMemory_create="no" +fi +cat > $TMPC << EOF +#include +int main(int argc, char **argv) +{ + return ASharedMemory_create("", 0); +} +EOF +if compile_prog "" "" "ASharedMemory_create"; then + ASharedMemory_create="yes" +fi +print_config "ASharedMemory_create" "$ASharedMemory_create" + ########################################## # ext4 move extent probe if test "$ext4_me" != "yes" ; then @@ -1230,25 +1433,6 @@ if compile_prog "" "" "linux splice"; then fi print_config "Linux splice(2)" "$linux_splice" -########################################## -# GUASI probe -if test "$guasi" != "yes" ; then - guasi="no" -fi -cat > $TMPC << EOF -#include -#include -int main(int argc, char **argv) -{ - guasi_t ctx = guasi_create(0, 0, 0); - return 0; -} -EOF -if compile_prog "" "" "guasi"; then - guasi="yes" -fi -print_config "GUASI" "$guasi" - ########################################## # libnuma probe if test "$libnuma" != "yes" ; then @@ -1353,7 +1537,7 @@ cat > $TMPC << EOF #include int main(int argc, char **argv) { - int c = getopt_long_only(argc, argv, NULL, NULL, NULL); + int c = getopt_long_only(argc, argv, "", NULL, NULL); return c; } EOF @@ -1368,8 +1552,12 @@ if test "$inet_aton" != "yes" ; then inet_aton="no" fi cat > $TMPC << EOF +#ifdef _WIN32 +#include +#else #include #include +#endif #include int main(int argc, char **argv) { @@ -1388,7 +1576,12 @@ if test "$socklen_t" != "yes" ; then socklen_t="no" fi cat > $TMPC << EOF +#ifdef _WIN32 +#include +#include +#else #include +#endif int main(int argc, char **argv) { socklen_t len = 0; @@ -1405,7 +1598,8 @@ print_config "socklen_t" "$socklen_t" if test "$tls_thread" != "yes" ; then tls_thread="no" fi -cat > $TMPC << EOF +if test "$tls_check" != "no"; then + cat > $TMPC << EOF #include static __thread int ret; int main(int argc, char **argv) @@ -1416,6 +1610,7 @@ EOF if compile_prog "" "" "__thread"; then tls_thread="yes" fi +fi print_config "__thread" "$tls_thread" ########################################## @@ -1436,30 +1631,29 @@ int main(void) return GTK_CHECK_VERSION(2, 18, 0) ? 0 : 1; /* 0 on success */ } EOF -GTK_CFLAGS=$(${cross_prefix}pkg-config --cflags gtk+-2.0 gthread-2.0) +GTK_CFLAGS=$(pkg-config --cflags gtk+-2.0 gthread-2.0) ORG_LDFLAGS=$LDFLAGS LDFLAGS=$(echo $LDFLAGS | sed s/"-static"//g) if test "$?" != "0" ; then echo "configure: gtk and gthread not found" exit 1 fi -GTK_LIBS=$(${cross_prefix}pkg-config --libs gtk+-2.0 gthread-2.0) +GTK_LIBS=$(pkg-config --libs gtk+-2.0 gthread-2.0) if test "$?" != "0" ; then echo "configure: gtk and gthread not found" exit 1 fi -if ! ${cross_prefix}pkg-config --atleast-version 2.18.0 gtk+-2.0; then - echo "GTK found, but need version 2.18 or higher" - gfio="no" -else +gfio="yes" +if check_min_lib_version gtk+-2.0 2.18.0 "gfio"; then if compile_prog "$GTK_CFLAGS" "$GTK_LIBS" "gfio" ; then - gfio="yes" GFIO_LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" else echo "Please install gtk and gdk libraries" gfio="no" fi +else + gfio="no" fi LDFLAGS=$ORG_LDFLAGS fi @@ -1497,7 +1691,8 @@ cat > $TMPC << EOF #include int main(int argc, char **argv) { - struct sched_param p; + struct sched_param p = { }; + return sched_setscheduler(0, SCHED_IDLE, &p); } EOF @@ -1512,10 +1707,14 @@ if test "$tcp_nodelay" != "yes" ; then tcp_nodelay="no" fi cat > $TMPC << EOF +#ifdef _WIN32 +#include +#else #include #include #include #include +#endif int main(int argc, char **argv) { return getsockopt(0, 0, TCP_NODELAY, NULL, NULL); @@ -1523,19 +1722,45 @@ int main(int argc, char **argv) EOF if compile_prog "" "" "TCP_NODELAY"; then tcp_nodelay="yes" +elif compile_prog "" "-lws2_32" "TCP_NODELAY"; then + tcp_nodelay="yes" + LIBS="$LIBS -lws2_32" fi print_config "TCP_NODELAY" "$tcp_nodelay" +########################################## +# Check whether we have vsock +if test "$vsock" != "yes" ; then + vsock="no" +fi +cat > $TMPC << EOF +#include +#include +#include +int main(int argc, char **argv) +{ + return socket(AF_VSOCK, SOCK_STREAM, 0); +} +EOF +if compile_prog "" "" "vsock"; then + vsock="yes" +fi +print_config "vsock" "$vsock" + ########################################## # Check whether we have SO_SNDBUF if test "$window_size" != "yes" ; then window_size="no" fi cat > $TMPC << EOF +#ifdef _WIN32 +#include +#else #include #include #include #include +#endif int main(int argc, char **argv) { setsockopt(0, SOL_SOCKET, SO_SNDBUF, NULL, 0); @@ -1544,6 +1769,9 @@ int main(int argc, char **argv) EOF if compile_prog "" "" "SO_SNDBUF"; then window_size="yes" +elif compile_prog "" "-lws2_32" "SO_SNDBUF"; then + window_size="yes" + LIBS="$LIBS -lws2_32" fi print_config "Net engine window_size" "$window_size" @@ -1553,12 +1781,16 @@ if test "$mss" != "yes" ; then mss="no" fi cat > $TMPC << EOF +#ifdef _WIN32 +#include +#else #include #include #include #include #include #include +#endif int main(int argc, char **argv) { return setsockopt(0, IPPROTO_TCP, TCP_MAXSEG, NULL, 0); @@ -1566,6 +1798,9 @@ int main(int argc, char **argv) EOF if compile_prog "" "" "TCP_MAXSEG"; then mss="yes" +elif compile_prog "" "-lws2_32" "TCP_MAXSEG"; then + mss="yes" + LIBS="$LIBS -lws2_32" fi print_config "TCP_MAXSEG" "$mss" @@ -1598,7 +1833,9 @@ cat > $TMPC << EOF #include int main(int argc, char **argv) { - return pwritev(0, NULL, 1, 0) + preadv(0, NULL, 1, 0); + struct iovec iov[1] = { }; + + return pwritev(0, iov, 1, 0) + preadv(0, iov, 1, 0); } EOF if compile_prog "" "" "pwritev"; then @@ -1616,7 +1853,9 @@ cat > $TMPC << EOF #include int main(int argc, char **argv) { - return pwritev2(0, NULL, 1, 0, 0) + preadv2(0, NULL, 1, 0, 0); + struct iovec iov[1] = { }; + + return pwritev2(0, iov, 1, 0, 0) + preadv2(0, iov, 1, 0, 0); } EOF if compile_prog "" "" "pwritev2"; then @@ -1630,21 +1869,26 @@ if test "$ipv6" != "yes" ; then ipv6="no" fi cat > $TMPC << EOF +#ifdef _WIN32 +#include +#include +#else #include #include #include #include +#endif #include int main(int argc, char **argv) { - struct addrinfo hints; - struct in6_addr addr; + struct addrinfo hints = { }; + struct in6_addr addr = in6addr_any; int ret; ret = getaddrinfo(NULL, NULL, &hints, NULL); freeaddrinfo(NULL); - printf("%s\n", gai_strerror(ret)); - addr = in6addr_any; + printf("%s %d\n", gai_strerror(ret), addr.s6_addr[0]); + return 0; } EOF @@ -1700,10 +1944,8 @@ if test "$disable_http" != "yes"; then if compile_prog "" "$HTTP_LIBS" "curl-new-ssl"; then output_sym "CONFIG_HAVE_OPAQUE_HMAC_CTX" http="yes" - LIBS="$HTTP_LIBS $LIBS" elif mv $TMPC2 $TMPC && compile_prog "" "$HTTP_LIBS" "curl-old-ssl"; then http="yes" - LIBS="$HTTP_LIBS $LIBS" fi fi print_config "http engine" "$http" @@ -1732,7 +1974,6 @@ int main(int argc, char **argv) } EOF if test "$disable_rados" != "yes" && compile_prog "" "-lrados" "rados"; then - LIBS="-lrados $LIBS" rados="yes" fi print_config "Rados engine" "$rados" @@ -1763,7 +2004,6 @@ int main(int argc, char **argv) } EOF if test "$disable_rbd" != "yes" && compile_prog "" "-lrbd -lrados" "rbd"; then - LIBS="-lrbd -lrados $LIBS" rbd="yes" fi print_config "Rados Block Device engine" "$rbd" @@ -1854,7 +2094,6 @@ int main(int argc, char **argv) } EOF if test "$disable_gfapi" != "yes" && compile_prog "" "-lgfapi -lglusterfs" "gfapi"; then - LIBS="-lgfapi -lglusterfs $LIBS" gfapi="yes" fi print_config "Gluster API engine" "$gfapi" @@ -1960,7 +2199,7 @@ if test "$libhdfs" = "yes" ; then hdfs_conf_error=1 fi if test "$FIO_LIBHDFS_INCLUDE" = "" ; then - echo "configure: FIO_LIBHDFS_INCLUDE should be defined to libhdfs inlude path" + echo "configure: FIO_LIBHDFS_INCLUDE should be defined to libhdfs include path" hdfs_conf_error=1 fi if test "$FIO_LIBHDFS_LIB" = "" ; then @@ -1968,7 +2207,7 @@ if test "$libhdfs" = "yes" ; then hdfs_conf_error=1 fi if test "$hdfs_conf_error" = "1" ; then - exit 1 + feature_not_found "libhdfs" "" fi FIO_HDFS_CPU=$cpu if test "$FIO_HDFS_CPU" = "x86_64" ; then @@ -2007,55 +2246,66 @@ if test "$libpmem" != "yes" ; then fi cat > $TMPC << EOF #include +#include int main(int argc, char **argv) { - int rc; - rc = pmem_is_pmem(0, 0); - return 0; + return pmem_is_pmem(NULL, 0); } EOF if compile_prog "" "-lpmem" "libpmem"; then libpmem="yes" - LIBS="-lpmem $LIBS" fi print_config "libpmem" "$libpmem" ########################################## -# Check whether we have libpmemblk -# libpmem is a prerequisite -if test "$libpmemblk" != "yes" ; then - libpmemblk="no" +# Check whether libpmem's version >= 1.5 +if test "$libpmem1_5" != "yes" ; then + libpmem1_5="no" fi if test "$libpmem" = "yes"; then cat > $TMPC << EOF -#include +#include +#include int main(int argc, char **argv) { - PMEMblkpool *pbp; - pbp = pmemblk_open("", 0); + pmem_memcpy(NULL, NULL, 0, 0); return 0; } EOF - if compile_prog "" "-lpmemblk" "libpmemblk"; then - libpmemblk="yes" - LIBS="-lpmemblk $LIBS" + if compile_prog "" "-lpmem" "libpmem1_5"; then + libpmem1_5="yes" fi fi -print_config "libpmemblk" "$libpmemblk" +print_config "libpmem1_5" "$libpmem1_5" + +########################################## +# Check whether we have libpmem2 +if test "$libpmem2" != "yes" ; then + libpmem2="no" +fi +cat > $TMPC << EOF +#include +int main(int argc, char **argv) +{ + struct pmem2_config *cfg; + pmem2_config_new(&cfg); + pmem2_config_delete(&cfg); + return 0; +} +EOF +if compile_prog "" "-lpmem2" "libpmem2"; then + libpmem2="yes" +fi +print_config "libpmem2" "$libpmem2" -# Choose the ioengines +# Choose libpmem-based ioengines if test "$libpmem" = "yes" && test "$disable_pmem" = "no"; then - pmem="yes" devdax="yes" - if test "$libpmemblk" = "yes"; then - pmemblk="yes" + if test "$libpmem1_5" = "yes"; then + pmem="yes" fi fi -########################################## -# Report whether pmemblk engine is enabled -print_config "PMDK pmemblk engine" "$pmemblk" - ########################################## # Report whether dev-dax engine is enabled print_config "PMDK dev-dax engine" "$devdax" @@ -2088,38 +2338,74 @@ fi print_config "DDN's Infinite Memory Engine" "$libime" ########################################## -# Check if we have required environment variables configured for libiscsi -if test "$libiscsi" = "yes" ; then - if $(pkg-config --atleast-version=1.9.0 libiscsi); then +# Check if we have libiscsi +if test "$libiscsi" != "no" ; then + if check_min_lib_version libiscsi 1.9.0; then libiscsi="yes" libiscsi_cflags=$(pkg-config --cflags libiscsi) libiscsi_libs=$(pkg-config --libs libiscsi) else - if test "$libiscsi" = "yes" ; then - echo "libiscsi" "Install libiscsi >= 1.9.0" - fi libiscsi="no" fi fi print_config "iscsi engine" "$libiscsi" ########################################## -# Check if we have libnbd (for NBD support). -minimum_libnbd=0.9.8 -if test "$libnbd" = "yes" ; then - if $(pkg-config --atleast-version=$minimum_libnbd libnbd); then +# Check if we have libnbd (for NBD support) +if test "$libnbd" != "no" ; then + if check_min_lib_version libnbd 0.9.8; then libnbd="yes" libnbd_cflags=$(pkg-config --cflags libnbd) libnbd_libs=$(pkg-config --libs libnbd) else - if test "$libnbd" = "yes" ; then - echo "libnbd" "Install libnbd >= $minimum_libnbd" - fi libnbd="no" fi fi print_config "NBD engine" "$libnbd" +########################################## +# check for dfs (DAOS File System) +if test "$dfs" != "no" ; then + cat > $TMPC << EOF +#include +#include +#include + +int main(int argc, char **argv) +{ + daos_handle_t poh; + daos_handle_t coh; + dfs_t *dfs; + + (void) dfs_mount(poh, coh, O_RDWR, &dfs); + + return 0; +} +EOF + if compile_prog "" "-luuid -ldfs -ldaos" "dfs"; then + dfs="yes" + else + dfs="no" + fi +fi +print_config "DAOS File System (dfs) Engine" "$dfs" + +########################################## +# Check if we have libnfs (for userspace nfs support). +if test "$libnfs" != "no" ; then + if $(pkg-config libnfs > /dev/null 2>&1); then + libnfs="yes" + libnfs_cflags=$(pkg-config --cflags libnfs) + libnfs_libs=$(pkg-config --libs libnfs) + else + if test "$libnfs" = "yes" ; then + feature_not_found "libnfs" "libnfs" + fi + libnfs="no" + fi +fi +print_config "NFS engine" "$libnfs" + ########################################## # Check if we have lex/yacc available yacc="no" @@ -2128,19 +2414,14 @@ lex="no" arith="no" if test "$disable_lex" = "no" || test -z "$disable_lex" ; then if test "$targetos" != "SunOS" ; then -LEX=$(which lex 2> /dev/null) -if test -x "$LEX" ; then +if has lex; then lex="yes" fi -YACC=$(which bison 2> /dev/null) -if test -x "$YACC" ; then +if has bison; then yacc="yes" yacc_is_bison="yes" -else - YACC=$(which yacc 2> /dev/null) - if test -x "$YACC" ; then - yacc="yes" - fi +elif has yacc; then + yacc="yes" fi if test "$yacc" = "yes" && test "$lex" = "yes" ; then arith="yes" @@ -2156,7 +2437,9 @@ int main(int argc, char **argv) return 0; } EOF -if compile_prog "" "-ll" "lex"; then +if compile_prog "" "-lfl" "flex"; then + LIBS="-lfl $LIBS" +elif compile_prog "" "-ll" "lex"; then LIBS="-ll $LIBS" else arith="no" @@ -2170,8 +2453,7 @@ if test "$arith" = "yes" ; then if test "$force_no_lex_o" = "yes" ; then lex_use_o="no" else -$LEX -o lex.yy.c exp/expression-parser.l 2> /dev/null -if test "$?" = "0" ; then +if lex -o lex.yy.c exp/expression-parser.l 2> /dev/null; then lex_use_o="yes" else lex_use_o="no" @@ -2194,7 +2476,7 @@ int main(int argc, char **argv) FILE *mtab = setmntent(NULL, "r"); struct mntent *mnt = getmntent(mtab); endmntent(mtab); - return 0; + return mnt != NULL; } EOF if compile_prog "" "" "getmntent"; then @@ -2327,6 +2609,7 @@ if compile_prog "" "" "valgrind_dev"; then fi print_config "Valgrind headers" "$valgrind_dev" +if test "$targetos" = "Linux" || test "$targetos" = "Android"; then ########################################## # probe if test "$linux_blkzoned" != "yes" ; then @@ -2345,21 +2628,141 @@ fi print_config "Zoned block device support" "$linux_blkzoned" ########################################## -# check march=armv8-a+crc+crypto -if test "$march_armv8_a_crc_crypto" != "yes" ; then - march_armv8_a_crc_crypto="no" +# Check BLK_ZONE_REP_CAPACITY +cat > $TMPC << EOF +#include +int main(void) +{ + return BLK_ZONE_REP_CAPACITY; +} +EOF +if compile_prog "" "" "blkzoned report capacity"; then + output_sym "CONFIG_HAVE_REP_CAPACITY" + rep_capacity="yes" +else + rep_capacity="no" +fi +print_config "Zoned block device capacity" "$rep_capacity" +fi + +########################################## +# libzbc probe +cat > $TMPC << EOF +#include +int main(int argc, char **argv) +{ + struct zbc_device *dev = NULL; + + return zbc_open("foo=bar", O_RDONLY, &dev); +} +EOF +if test "$libzbc" != "no" ; then + if [ -e /usr/include/libzbc/libzbc ]; then + # SUSE Linux. + CFLAGS="$CFLAGS -I/usr/include/libzbc" + fi + if compile_prog "" "-lzbc" "libzbc"; then + libzbc="yes" + if ! check_min_lib_version libzbc 5; then + libzbc="no" + fi + else + if test "$libzbc" = "yes" ; then + feature_not_found "libzbc" "libzbc or libzbc/zbc.h" + fi + libzbc="no" + fi +fi +print_config "libzbc engine" "$libzbc" + +if test "$targetos" = "Linux" || test "$targetos" = "Android"; then +########################################## +# Check NVME_URING_CMD support +cat > $TMPC << EOF +#include +int main(void) +{ + return sizeof(struct nvme_uring_cmd); +} +EOF +if compile_prog "" "" "nvme uring cmd"; then + output_sym "CONFIG_NVME_URING_CMD" + nvme_uring_cmd="yes" +else + nvme_uring_cmd="no" +fi +print_config "NVMe uring command support" "$nvme_uring_cmd" fi + +########################################## +# Check if we have xnvme +if test "$xnvme" != "no" ; then + if check_min_lib_version xnvme 0.7.4; then + xnvme="yes" + xnvme_cflags=$(pkg-config --cflags xnvme) + xnvme_libs=$(pkg-config --libs xnvme) + else + xnvme="no" + fi +fi +print_config "xnvme engine" "$xnvme" + +if test "$targetos" = "Linux" ; then +########################################## +# Check ISA-L support +cat > $TMPC << EOF +#include +#include +int main(void) +{ + return crc16_t10dif(0, NULL, 4096); +} +EOF +if test "$isal" != "no" ; then + if compile_prog "" "-lisal" "ISAL"; then + isal="yes" + LIBS="-lisal $LIBS" + else + isal="no" + fi +fi +print_config "isal" "$isal" +fi + +########################################## +# Check if we have libblkio +if test "$libblkio" != "no" ; then + if check_min_lib_version blkio 1.0.0; then + libblkio="yes" + libblkio_cflags=$(pkg-config --cflags blkio) + libblkio_libs=$(pkg-config --libs blkio) + else + if test "$libblkio" = "yes" ; then + feature_not_found "libblkio" "libblkio-dev or libblkio-devel" + fi + libblkio="no" + fi +fi +print_config "libblkio engine" "$libblkio" + +########################################## +# check march=armv8-a+crc+crypto +march_armv8_a_crc_crypto="no" if test "$cpu" = "arm64" ; then cat > $TMPC < #include #include +#endif int main(void) { /* Can we also do a runtime probe? */ #if __linux__ return getauxval(AT_HWCAP); +#elif defined(__APPLE__) + return 0; #else # error "Don't know how to do runtime probe for ARM CRC32c" #endif @@ -2375,9 +2778,7 @@ print_config "march_armv8_a_crc_crypto" "$march_armv8_a_crc_crypto" ########################################## # cuda probe -if test "$cuda" != "yes" ; then - cuda="no" -fi +if test "$cuda" != "no" ; then cat > $TMPC << EOF #include int main(int argc, char **argv) @@ -2385,12 +2786,41 @@ int main(int argc, char **argv) return cuInit(0); } EOF -if test "$enable_cuda" = "yes" && compile_prog "" "-lcuda" "cuda"; then - cuda="yes" - LIBS="-lcuda $LIBS" + if compile_prog "" "-lcuda" "cuda"; then + cuda="yes" + LIBS="-lcuda $LIBS" + else + if test "$cuda" = "yes" ; then + feature_not_found "cuda" "" + fi + cuda="no" + fi fi print_config "cuda" "$cuda" +########################################## +# libcufile probe +if test "$libcufile" != "no" ; then +cat > $TMPC << EOF +#include + +int main(int argc, char* argv[]) { + cuFileDriverOpen(); + return 0; +} +EOF + if compile_prog "" "-lcuda -lcudart -lcufile -ldl" "libcufile"; then + libcufile="yes" + LIBS="-lcuda -lcudart -lcufile -ldl $LIBS" + else + if test "$libcufile" = "yes" ; then + feature_not_found "libcufile" "" + fi + libcufile="no" + fi +fi +print_config "libcufile" "$libcufile" + ########################################## # check for cc -march=native build_native="no" @@ -2447,7 +2877,7 @@ fi print_config "__kernel_rwf_t" "$__kernel_rwf_t" ########################################## -# check if gcc has -Wimplicit-fallthrough +# check if gcc has -Wimplicit-fallthrough=2 fallthrough="no" cat > $TMPC << EOF int main(int argc, char **argv) @@ -2455,10 +2885,26 @@ int main(int argc, char **argv) return 0; } EOF -if compile_prog "-Wimplicit-fallthrough" "" "-Wimplicit-fallthrough"; then +if compile_prog "-Wimplicit-fallthrough=2" "" "-Wimplicit-fallthrough=2"; then fallthrough="yes" fi -print_config "-Wimplicit-fallthrough" "$fallthrough" +print_config "-Wimplicit-fallthrough=2" "$fallthrough" + +########################################## +# check if the compiler has -Wno-stringop-concatenation +no_stringop="no" +cat > $TMPC << EOF +#include + +int main(int argc, char **argv) +{ + return printf("%s\n", argv[0]); +} +EOF +if compile_prog "-Wno-stringop-truncation -Werror" "" "no_stringop"; then + no_stringop="yes" +fi +print_config "-Wno-stringop-truncation" "$no_stringop" ########################################## # check for MADV_HUGEPAGE support @@ -2499,6 +2945,91 @@ if compile_prog "" "" "gettid"; then fi print_config "gettid" "$gettid" +########################################## +# check for statx(2) support by libc +statx="no" +cat > $TMPC << EOF +#include +#include + +int main(int argc, char **argv) +{ + struct statx st; + return statx(-1, *argv, 0, 0, &st); +} +EOF +if compile_prog "" "" "statx"; then + statx="yes" +fi +print_config "statx(2)/libc" "$statx" + +########################################## +# check for statx(2) support by kernel +statx_syscall="no" +cat > $TMPC << EOF +#include +#include +#include +#include + +static int _statx(int dfd, const char *pathname, int flags, unsigned int mask, + struct statx *buffer) +{ + return syscall(__NR_statx, dfd, pathname, flags, mask, buffer); +} + +int main(int argc, char **argv) +{ + struct statx st; + return _statx(-1, *argv, 0, 0, &st); +} +EOF +if compile_prog "" "" "statx_syscall"; then + statx_syscall="yes" +fi +print_config "statx(2)/syscall" "$statx_syscall" + +########################################## +# check for Windows PDB generation support +if test "pdb" != "no" ; then + cat > $TMPC < $TMPC << EOF +#include +#include + +int main(int argc, char **argv) +{ + return timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK); +} +EOF + if compile_prog "" "" "timerfd_create"; then + timerfd_create="yes" + fi +fi +print_config "timerfd_create" "$timerfd_create" + ############################################################################# if test "$wordsize" = "64" ; then @@ -2518,8 +3049,8 @@ if test "$zlib" = "yes" ; then fi if test "$libaio" = "yes" ; then output_sym "CONFIG_LIBAIO" - if test "$libaio_uring" = "yes" ; then - output_sym "CONFIG_LIBAIO_URING" + if test "$libaio_rw_flags" = "yes" ; then + output_sym "CONFIG_LIBAIO_RW_FLAGS" fi fi if test "$posix_aio" = "yes" ; then @@ -2534,6 +3065,12 @@ fi if test "$pthread_condattr_setclock" = "yes" ; then output_sym "CONFIG_PTHREAD_CONDATTR_SETCLOCK" fi +if test "$pthread_sigmask" = "yes" ; then + output_sym "CONFIG_PTHREAD_SIGMASK" +fi +if test "$pthread_getaffinity" = "yes" ; then + output_sym "CONFIG_PTHREAD_GETAFFINITY" +fi if test "$have_asprintf" = "yes" ; then output_sym "CONFIG_HAVE_ASPRINTF" fi @@ -2561,6 +3098,9 @@ fi if test "$sync_file_range" = "yes" ; then output_sym "CONFIG_SYNC_FILE_RANGE" fi +if test "$ASharedMemory_create" = "yes" ; then + output_sym "CONFIG_ASHAREDMEMORY_CREATE" +fi if test "$sfaa" = "yes" ; then output_sym "CONFIG_SFAA" fi @@ -2573,18 +3113,23 @@ fi if test "$libverbs" = "yes" -a "$rdmacm" = "yes" ; then output_sym "CONFIG_RDMA" fi +# librpma is supported on the 'x86_64' architecture for now +if test "$cpu" = "x86_64" -a "$libverbs" = "yes" -a "$rdmacm" = "yes" \ + -a "$librpma" = "yes" \ + && test "$libpmem" = "yes" -o "$libpmem2" = "yes" ; then + output_sym "CONFIG_LIBRPMA_APM" +fi +if test "$cpu" = "x86_64" -a "$libverbs" = "yes" -a "$rdmacm" = "yes" \ + -a "$librpma" = "yes" -a "$libprotobuf_c" = "yes" \ + && test "$libpmem" = "yes" -o "$libpmem2" = "yes" ; then + output_sym "CONFIG_LIBRPMA_GPSPM" +fi if test "$clock_gettime" = "yes" ; then output_sym "CONFIG_CLOCK_GETTIME" fi if test "$clock_monotonic" = "yes" ; then output_sym "CONFIG_CLOCK_MONOTONIC" fi -if test "$clock_monotonic_raw" = "yes" ; then - output_sym "CONFIG_CLOCK_MONOTONIC_RAW" -fi -if test "$clock_monotonic_precise" = "yes" ; then - output_sym "CONFIG_CLOCK_MONOTONIC_PRECISE" -fi if test "$clockid_t" = "yes"; then output_sym "CONFIG_CLOCKID_T" fi @@ -2623,9 +3168,6 @@ fi if test "$linux_splice" = "yes" ; then output_sym "CONFIG_LINUX_SPLICE" fi -if test "$guasi" = "yes" ; then - output_sym "CONFIG_GUASI" -fi if test "$libnuma_v2" = "yes" ; then output_sym "CONFIG_LIBNUMA" fi @@ -2669,6 +3211,9 @@ fi if test "$ipv6" = "yes" ; then output_sym "CONFIG_IPV6" fi +if test "$vsock" = "yes"; then + output_sym "CONFIG_VSOCK" +fi if test "$http" = "yes" ; then output_sym "CONFIG_HTTP" fi @@ -2714,24 +3259,24 @@ fi if test "$mtd" = "yes" ; then output_sym "CONFIG_MTD" fi -if test "$pmemblk" = "yes" ; then - output_sym "CONFIG_PMEMBLK" -fi if test "$devdax" = "yes" ; then output_sym "CONFIG_LINUX_DEVDAX" fi if test "$pmem" = "yes" ; then output_sym "CONFIG_LIBPMEM" fi +if test "$libpmem2" = "yes" ; then + output_sym "CONFIG_LIBPMEM2_INSTALLED" +fi if test "$libime" = "yes" ; then output_sym "CONFIG_IME" fi if test "$arith" = "yes" ; then output_sym "CONFIG_ARITHMETIC" if test "$yacc_is_bison" = "yes" ; then - echo "YACC=$YACC -y" >> $config_host_mak + echo "YACC=bison -y" >> $config_host_mak else - echo "YACC=$YACC" >> $config_host_mak + echo "YACC=yacc" >> $config_host_mak fi if test "$lex_use_o" = "yes" ; then echo "CONFIG_LEX_USE_O=y" >> $config_host_mak @@ -2762,10 +3307,13 @@ if test "$valgrind_dev" = "yes"; then output_sym "CONFIG_VALGRIND_DEV" fi if test "$linux_blkzoned" = "yes" ; then - output_sym "CONFIG_LINUX_BLKZONED" + output_sym "CONFIG_HAS_BLKZONED" +fi +if test "$libzbc" = "yes" ; then + output_sym "CONFIG_LIBZBC" fi if test "$zlib" = "no" ; then - echo "Consider installing zlib-dev (zlib-devel, some fio features depend on it." + echo "Consider installing zlib1g-dev (zlib-devel) as some fio features depend on it." if test "$build_static" = "yes"; then echo "Note that some distros have separate packages for static libraries." fi @@ -2776,6 +3324,12 @@ fi if test "$cuda" = "yes" ; then output_sym "CONFIG_CUDA" fi +if test "$libcufile" = "yes" ; then + output_sym "CONFIG_LIBCUFILE" +fi +if test "$dfs" = "yes" ; then + output_sym "CONFIG_DFS" +fi if test "$march_set" = "no" && test "$build_native" = "yes" ; then output_sym "CONFIG_BUILD_NATIVE" fi @@ -2788,9 +3342,21 @@ fi if test "$gettid" = "yes"; then output_sym "CONFIG_HAVE_GETTID" fi +if test "$statx" = "yes"; then + output_sym "CONFIG_HAVE_STATX" +fi +if test "$statx_syscall" = "yes"; then + output_sym "CONFIG_HAVE_STATX_SYSCALL" +fi +if test "$timerfd_create" = "yes"; then + output_sym "CONFIG_HAVE_TIMERFD_CREATE" +fi if test "$fallthrough" = "yes"; then CFLAGS="$CFLAGS -Wimplicit-fallthrough" fi +if test "$no_stringop" = "yes"; then + output_sym "CONFIG_HAVE_NO_STRINGOP" +fi if test "$thp" = "yes" ; then output_sym "CONFIG_HAVE_THP" fi @@ -2806,19 +3372,65 @@ if test "$libnbd" = "yes" ; then echo "LIBNBD_CFLAGS=$libnbd_cflags" >> $config_host_mak echo "LIBNBD_LIBS=$libnbd_libs" >> $config_host_mak fi +if test "$libnfs" = "yes" ; then + output_sym "CONFIG_LIBNFS" + echo "LIBNFS_CFLAGS=$libnfs_cflags" >> $config_host_mak + echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak +fi +if test "$xnvme" = "yes" ; then + output_sym "CONFIG_LIBXNVME" + echo "LIBXNVME_CFLAGS=$xnvme_cflags" >> $config_host_mak + echo "LIBXNVME_LIBS=$xnvme_libs" >> $config_host_mak +fi +if test "$isal" = "yes" ; then + output_sym "CONFIG_LIBISAL" +fi +if test "$libblkio" = "yes" ; then + output_sym "CONFIG_LIBBLKIO" + echo "LIBBLKIO_CFLAGS=$libblkio_cflags" >> $config_host_mak + echo "LIBBLKIO_LIBS=$libblkio_libs" >> $config_host_mak +fi +if test "$dynamic_engines" = "yes" ; then + output_sym "CONFIG_DYNAMIC_ENGINES" +fi +if test "$pdb" = yes; then + output_sym "CONFIG_PDB" +fi +if test "$fcntl_sync" = "yes" ; then + output_sym "CONFIG_FCNTL_SYNC" +fi +if test "$asan" = "yes"; then + CFLAGS="$CFLAGS -fsanitize=address" + LDFLAGS="$LDFLAGS -fsanitize=address" +fi +print_config "Lib-based ioengines dynamic" "$dynamic_engines" cat > $TMPC << EOF int main(int argc, char **argv) { return 0; } EOF -if test "$disable_tcmalloc" != "yes" && compile_prog "" "-ltcmalloc" "tcmalloc"; then - LIBS="-ltcmalloc $LIBS" - tcmalloc="yes" -else - tcmalloc="no" +if test "$disable_tcmalloc" != "yes"; then + if compile_prog "" "-ltcmalloc" "tcmalloc"; then + tcmalloc="yes" + LIBS="-ltcmalloc $LIBS" + elif compile_prog "" "-l:libtcmalloc_minimal.so.4" "tcmalloc_minimal4"; then + tcmalloc="yes" + LIBS="-l:libtcmalloc_minimal.so.4 $LIBS" + else + tcmalloc="no" + fi fi print_config "TCMalloc support" "$tcmalloc" +if ! num "$seed_buckets"; then + seed_buckets=4 +elif test "$seed_buckets" -lt 2; then + seed_buckets=2 +elif test "$seed_buckets" -gt 16; then + seed_buckets=16 +fi +echo "#define CONFIG_SEED_BUCKETS $seed_buckets" >> $config_host_h +print_config "seed_buckets" "$seed_buckets" echo "LIBS+=$LIBS" >> $config_host_mak echo "GFIO_LIBS+=$GFIO_LIBS" >> $config_host_mak