AC_INIT(sg3_utils, 1.48, dgilbert@interlog.com) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AM_MAINTAINER_MODE AM_CONFIG_HEADER(config.h) AC_PROG_CC # AC_PROG_CXX AC_PROG_INSTALL # AM_PROG_AR is supported and needed since automake v1.12+ ifdef([AM_PROG_AR], [AM_PROG_AR], []) # Adding libtools to the build seems to bring in C++ environment AC_PROG_LIBTOOL # check for headers AC_HEADER_STDC AC_CHECK_HEADERS([byteswap.h stdatomic.h], [], [], []) # check for functions AC_CHECK_FUNCS(getopt_long, GETOPT_O_FILES='', GETOPT_O_FILES='getopt_long.o') AC_CHECK_FUNCS(posix_fadvise) AC_CHECK_FUNCS(posix_memalign) AC_CHECK_FUNCS(gettimeofday) AC_CHECK_FUNCS(sysconf) AC_CHECK_FUNCS(lseek64) AC_CHECK_FUNCS(srand48_r) SAVED_LIBS=$LIBS AC_SEARCH_LIBS([pthread_create], [pthread]) # AC_SEARCH_LIBS adds libraries at the start of $LIBS so remove $SAVED_LIBS # from the end of $LIBS. pthread_lib=${LIBS%${SAVED_LIBS}} AC_CHECK_FUNCS([pthread_cancel pthread_kill]) LIBS=$SAVED_LIBS AC_SUBST(PTHREAD_LIB, [$pthread_lib]) SAVED_LIBS=$LIBS AC_SEARCH_LIBS([clock_gettime], [rt]) rt_lib=${LIBS%${SAVED_LIBS}} AC_CHECK_FUNCS(clock_gettime) LIBS=$SAVED_LIBS AC_SUBST(RT_LIB, [$rt_lib]) AC_SUBST(GETOPT_O_FILES) AC_CANONICAL_HOST AC_DEFINE_UNQUOTED(SG_LIB_BUILD_HOST, "${host}", [sg3_utils Build Host]) check_for_getrandom() { AC_CHECK_HEADERS([sys/random.h], [AC_DEFINE_UNQUOTED(HAVE_GETRANDOM, 1, [Found sys/random.h])], [], []) } check_for_linux_nvme_headers() { AC_CHECK_HEADERS([linux/nvme_ioctl.h], [AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe])], [], []) AC_CHECK_HEADERS([linux/types.h linux/bsg.h linux/kdev_t.h], [], [], [[#ifdef HAVE_LINUX_TYPES_H # include #endif ]]) } check_for_linux_sg_v4_hdr() { AC_EGREP_CPP(found, [ # include #ifdef SG_IOSUBMIT found #endif ], [AC_DEFINE_UNQUOTED(HAVE_LINUX_SG_V4_HDR, 1, [Have Linux sg v4 header]) ]) } case "${host}" in *-*-android*) AC_DEFINE_UNQUOTED(SG_LIB_ANDROID, 1, [sg3_utils on android]) AC_DEFINE_UNQUOTED(SG_LIB_LINUX, 1, [sg3_utils on linux]) check_for_linux_sg_v4_hdr check_for_getrandom check_for_linux_nvme_headers;; *-*-freebsd*|*-*-kfreebsd*-gnu*) AC_DEFINE_UNQUOTED(SG_LIB_FREEBSD, 1, [sg3_utils on FreeBSD]) AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe]) check_for_getrandom LIBS="$LIBS -lcam";; *-*-solaris*) AC_DEFINE_UNQUOTED(SG_LIB_SOLARIS, 1, [sg3_utils on Solaris]);; *-*-netbsd*) AC_DEFINE_UNQUOTED(SG_LIB_NETBSD, 1, [sg3_utils on NetBSD]);; *-*-openbsd*) AC_DEFINE_UNQUOTED(SG_LIB_OPENBSD, 1, [sg3_utils on OpenBSD]);; *-*-osf*) AC_DEFINE_UNQUOTED(SG_LIB_OSF1, 1, [sg3_utils on Tru64 UNIX]);; *-*-cygwin*) AC_DEFINE_UNQUOTED(SG_LIB_WIN32, 1, [sg3_utils on Win32]) # AC_CHECK_HEADERS([nvme.h], [AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe])], [], []) AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe]) check_for_getrandom CFLAGS="$CFLAGS -Wno-char-subscripts";; *-*-mingw* | *-*-msys*) AC_DEFINE_UNQUOTED(SG_LIB_WIN32, 1, [sg3_utils on Win32]) AC_DEFINE_UNQUOTED(SG_LIB_MINGW, 1, [also MinGW environment]) # AC_CHECK_HEADERS([nvme.h], [AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe])], [], []) AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe]) check_for_getrandom CFLAGS="$CFLAGS -D__USE_MINGW_ANSI_STDIO";; *-*-linux-gnu* | *-*-linux* | *-*-uclinux-gnu* | *-*-uclinux*) AC_DEFINE_UNQUOTED(SG_LIB_LINUX, 1, [sg3_utils on linux]) check_for_linux_sg_v4_hdr check_for_getrandom check_for_linux_nvme_headers;; *-*-haiku*) AC_DEFINE_UNQUOTED(SG_LIB_HAIKU, 1, [sg3_utils on Haiku]) AC_SUBST([os_cflags], ['']) AC_SUBST([os_libs], ['']) ;; *) AC_DEFINE_UNQUOTED(SG_LIB_OTHER, 1, [sg3_utils on other]) isother=yes;; esac # Define platform-specific symbol. AM_CONDITIONAL(OS_FREEBSD, [echo $host_os | grep 'freebsd' > /dev/null]) AM_CONDITIONAL(OS_LINUX, [echo $host_os | grep -E '^(uc)?linux' > /dev/null]) AM_CONDITIONAL(OS_OSF, [echo $host_os | grep '^osf' > /dev/null]) AM_CONDITIONAL(OS_SOLARIS, [echo $host_os | grep '^solaris' > /dev/null]) AM_CONDITIONAL(OS_WIN32_MINGW, [echo $host_os | grep '^mingw' > /dev/null]) AM_CONDITIONAL(OS_WIN32_CYGWIN, [echo $host_os | grep '^cygwin' > /dev/null]) AM_CONDITIONAL(OS_ANDROID, [echo $host_os | grep 'android' > /dev/null]) AM_CONDITIONAL(OS_NETBSD, [echo $host_os | grep 'netbsd' > /dev/null]) AM_CONDITIONAL(OS_OPENBSD, [echo $host_os | grep 'openbsd' > /dev/null]) AM_CONDITIONAL(OS_HAIKU, [echo $host_os | grep '^haiku' > /dev/null]) AM_CONDITIONAL(OS_OTHER, [test "x$isother" = "xyes"]) AC_ARG_ENABLE([debug], [ --enable-debug Turn on debugging], [case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;; esac],[debug=false]) AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) AC_ARG_ENABLE([pt_dummy], [ --enable-pt_dummy pass-through codes compiles, does nothing], [case "${enableval}" in yes) pt_dummy=true ;; no) pt_dummy=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-dummy_pt]) ;; esac],[pt_dummy=false]) AM_CONDITIONAL([PT_DUMMY], [test x$pt_dummy = xtrue]) AC_ARG_ENABLE([linuxbsg], AC_HELP_STRING([--disable-linuxbsg], [option ignored, this is placeholder]), [AC_DEFINE_UNQUOTED(IGNORE_LINUX_BSG, 1, [option ignored], )], []) AC_ARG_ENABLE([win32-spt-direct], AC_HELP_STRING([--enable-win32-spt-direct], [enable Win32 SPT Direct]), AC_DEFINE_UNQUOTED(WIN32_SPT_DIRECT, 1, [enable Win32 SPT Direct], ) ) AC_ARG_ENABLE([scsistrings], [AS_HELP_STRING([--disable-scsistrings], [Disable full SCSI sense strings and NVMe status strings])], [], [AC_DEFINE_UNQUOTED(SG_SCSI_STRINGS, 1, [full SCSI sense strings and NVMe status strings], )]) AC_ARG_ENABLE([nvme-supp], AC_HELP_STRING([--disable-nvme-supp], [remove all or most NVMe code]), [AC_DEFINE_UNQUOTED(IGNORE_NVME, 1, [compile out NVMe support], )], []) AC_ARG_ENABLE([fast-lebe], AC_HELP_STRING([--disable-fast-lebe], [use generic little-endian/big-endian code instead]), [AC_DEFINE_UNQUOTED(IGNORE_FAST_LEBE, 1, [use generic little-endian/big-endian instead], )], []) AC_ARG_ENABLE([linux-sgv4], AC_HELP_STRING([--disable-linux-sgv4], [for Linux sg driver avoid v4 interface even if available]), [AC_DEFINE_UNQUOTED(IGNORE_LINUX_SGV4, 1, [even if Linux sg v4 available, use v3 instead], )], []) AC_OUTPUT( Makefile include/Makefile lib/Makefile src/Makefile doc/Makefile scripts/Makefile ) # Borrowed from smartmontools configure.ac # Note: Use `...` here as some shells do not properly parse '$(... case $x in X) ...)' info=` echo "-----------------------------------------------------------------------------" echo "${PACKAGE}-${VERSION} configuration:" echo "host operating system: $host" echo "default C compiler: $CC" case "$host_os" in mingw*) echo "application manifest: ${os_win32_manifest:-built-in}" echo "resource compiler: $WINDRES" echo "message compiler: $WINDMC" echo "NSIS compiler: $MAKENSIS" ;; *) echo "binary install path: \`eval eval eval echo $bindir\`" echo "scripts install path: \`eval eval eval echo $bindir\`" echo "man page install path: \`eval eval eval echo $mandir\`" ;; esac echo "-----------------------------------------------------------------------------" ` AC_MSG_NOTICE([ $info ])