| 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 <linux/types.h> |
| #endif |
| ]]) |
| } |
| |
| check_for_linux_sg_v4_hdr() { |
| AC_EGREP_CPP(found, |
| [ # include <scsi/sg.h> |
| #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 |
| ]) |
| |