#!/bin/sh
#
# Fio configure script. Heavily influenced by the manual qemu configure
-# script. Sad this this is easier than autoconf and enemies.
+# script. Sad this is easier than autoconf and enemies.
#
# set temporary file name
disable_lex=""
disable_pmem="no"
disable_native="no"
+march_set="no"
prefix=/usr/local
# parse options
targetos="Linux"
elif check_define __OpenBSD__ ; then
targetos='OpenBSD'
+elif check_define __NetBSD__ ; then
+ targetos='NetBSD'
elif check_define __sun__ ; then
targetos='SunOS'
CFLAGS="$CFLAGS -D_REENTRANT"
# cross-compiling to one of these OSes then you'll need to specify
# the correct CPU with the --cpu option.
case $targetos in
-AIX|OpenBSD)
+AIX|OpenBSD|NetBSD)
# Unless explicitly enabled, turn off lex.
# OpenBSD will hit syntax error when enabled.
if test -z "$disable_lex" ; then
EOF
if compile_prog "" "" "posixaio" ; then
posix_aio="yes"
-elif compile_prog "" "-lrt" "posixaio"; then
+elif compile_prog "" "-lrt" "posixaio -lrt"; then
posix_aio="yes"
posix_aio_lrt="yes"
LIBS="-lrt $LIBS"
fi
print_config "rdmacm" "$rdmacm"
+##########################################
+# asprintf() and vasprintf() probes
+if test "$have_asprintf" != "yes" ; then
+ have_asprintf="no"
+fi
+cat > $TMPC << EOF
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ return asprintf(NULL, "%s", "str") == 0;
+}
+EOF
+if compile_prog "" "" "have_asprintf"; then
+ have_asprintf="yes"
+fi
+print_config "asprintf()" "$have_asprintf"
+
+if test "$have_vasprintf" != "yes" ; then
+ have_vasprintf="no"
+fi
+cat > $TMPC << EOF
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ return vasprintf(NULL, "%s", NULL) == 0;
+}
+EOF
+if compile_prog "" "" "have_vasprintf"; then
+ have_vasprintf="yes"
+fi
+print_config "vasprintf()" "$have_vasprintf"
+
##########################################
# Linux fallocate probe
if test "$linux_fallocate" != "yes" ; then
print_config "strndup" "$strndup"
##########################################
+# <valgrind/drd.h> probe
+# Note: presence of <valgrind/drd.h> implies that <valgrind/valgrind.h> is
+# also available but not the other way around.
+if test "$valgrind_dev" != "yes" ; then
+ valgrind_dev="no"
+fi
+cat > $TMPC << EOF
+#include <valgrind/drd.h>
+int main(int argc, char **argv)
+{
+ return 0;
+}
+EOF
+if compile_prog "" "" "valgrind_dev"; then
+ valgrind_dev="yes"
+fi
+print_config "Valgrind headers" "$valgrind_dev"
+
# check march=armv8-a+crc+crypto
if test "$march_armv8_a_crc_crypto" != "yes" ; then
march_armv8_a_crc_crypto="no"
fi
if test "$cpu" = "arm64" ; then
cat > $TMPC <<EOF
-#include <sys/auxv.h>
#include <arm_acle.h>
#include <arm_neon.h>
+#include <sys/auxv.h>
int main(void)
{
- return 0;
+ /* Can we also do a runtime probe? */
+#if __linux__
+ return getauxval(AT_HWCAP);
+#else
+# error "Don't know how to do runtime probe for ARM CRC32c"
+#endif
}
EOF
- if compile_prog "-march=armv8-a+crc+crypto" "" ""; then
+ if compile_prog "-march=armv8-a+crc+crypto" "" "ARM CRC32c"; then
march_armv8_a_crc_crypto="yes"
- CFLAGS="$CFLAGS -march=armv8-a+crc+crypto -DARCH_HAVE_CRC_CRYPTO"
+ CFLAGS="$CFLAGS -march=armv8-a+crc+crypto"
+ march_set="yes"
fi
fi
print_config "march_armv8_a_crc_crypto" "$march_armv8_a_crc_crypto"
return 0;
}
EOF
-if test "$disable_native" = "no" && compile_prog "-march=native" "" "march=native"; then
+if test "$disable_native" = "no" && test "$disable_opt" != "yes" && \
+ compile_prog "-march=native" "" "march=native"; then
build_native="yes"
fi
print_config "Build march=native" "$build_native"
if test "$posix_pshared" = "yes" ; then
output_sym "CONFIG_PSHARED"
fi
+if test "$have_asprintf" = "yes" ; then
+ output_sym "HAVE_ASPRINTF"
+fi
+if test "$have_vasprintf" = "yes" ; then
+ output_sym "HAVE_VASPRINTF"
+fi
if test "$linux_fallocate" = "yes" ; then
output_sym "CONFIG_LINUX_FALLOCATE"
fi
if test "$s390_z196_facilities" = "yes" ; then
output_sym "CONFIG_S390_Z196_FACILITIES"
CFLAGS="$CFLAGS -march=z9-109"
+ march_set="yes"
fi
if test "$gfapi" = "yes" ; then
output_sym "CONFIG_GFAPI"
if test "$disable_opt" = "yes" ; then
output_sym "CONFIG_DISABLE_OPTIMIZATIONS"
fi
+if test "$valgrind_dev" = "yes"; then
+ output_sym "CONFIG_VALGRIND_DEV"
+fi
if test "$zlib" = "no" ; then
echo "Consider installing zlib-dev (zlib-devel, some fio features depend on it."
if test "$build_static" = "yes"; then
echo "Note that some distros have separate packages for static libraries."
fi
fi
+if test "$march_armv8_a_crc_crypto" = "yes" ; then
+ output_sym "ARCH_HAVE_CRC_CRYPTO"
+fi
if test "$cuda" = "yes" ; then
output_sym "CONFIG_CUDA"
fi
if test "$mkdir_two" = "yes" ; then
output_sym "CONFIG_HAVE_MKDIR_TWO"
fi
-if test "$build_native" = "yes" ; then
+if test "$march_set" = "no" && test "$build_native" = "yes" ; then
output_sym "CONFIG_BUILD_NATIVE"
fi