1*44704f69SBart Van AsscheAC_INIT(sg3_utils, 1.48, [email protected]) 2*44704f69SBart Van Assche 3*44704f69SBart Van AsscheAM_INIT_AUTOMAKE([-Wall -Werror foreign]) 4*44704f69SBart Van AsscheAM_MAINTAINER_MODE 5*44704f69SBart Van AsscheAM_CONFIG_HEADER(config.h) 6*44704f69SBart Van Assche 7*44704f69SBart Van AsscheAC_PROG_CC 8*44704f69SBart Van Assche# AC_PROG_CXX 9*44704f69SBart Van AsscheAC_PROG_INSTALL 10*44704f69SBart Van Assche 11*44704f69SBart Van Assche# AM_PROG_AR is supported and needed since automake v1.12+ 12*44704f69SBart Van Asscheifdef([AM_PROG_AR], [AM_PROG_AR], []) 13*44704f69SBart Van Assche 14*44704f69SBart Van Assche# Adding libtools to the build seems to bring in C++ environment 15*44704f69SBart Van AsscheAC_PROG_LIBTOOL 16*44704f69SBart Van Assche 17*44704f69SBart Van Assche# check for headers 18*44704f69SBart Van AsscheAC_HEADER_STDC 19*44704f69SBart Van AsscheAC_CHECK_HEADERS([byteswap.h stdatomic.h], [], [], []) 20*44704f69SBart Van Assche 21*44704f69SBart Van Assche# check for functions 22*44704f69SBart Van AsscheAC_CHECK_FUNCS(getopt_long, 23*44704f69SBart Van Assche GETOPT_O_FILES='', 24*44704f69SBart Van Assche GETOPT_O_FILES='getopt_long.o') 25*44704f69SBart Van AsscheAC_CHECK_FUNCS(posix_fadvise) 26*44704f69SBart Van AsscheAC_CHECK_FUNCS(posix_memalign) 27*44704f69SBart Van AsscheAC_CHECK_FUNCS(gettimeofday) 28*44704f69SBart Van AsscheAC_CHECK_FUNCS(sysconf) 29*44704f69SBart Van AsscheAC_CHECK_FUNCS(lseek64) 30*44704f69SBart Van AsscheAC_CHECK_FUNCS(srand48_r) 31*44704f69SBart Van AsscheSAVED_LIBS=$LIBS 32*44704f69SBart Van AsscheAC_SEARCH_LIBS([pthread_create], [pthread]) 33*44704f69SBart Van Assche# AC_SEARCH_LIBS adds libraries at the start of $LIBS so remove $SAVED_LIBS 34*44704f69SBart Van Assche# from the end of $LIBS. 35*44704f69SBart Van Asschepthread_lib=${LIBS%${SAVED_LIBS}} 36*44704f69SBart Van AsscheAC_CHECK_FUNCS([pthread_cancel pthread_kill]) 37*44704f69SBart Van AsscheLIBS=$SAVED_LIBS 38*44704f69SBart Van AsscheAC_SUBST(PTHREAD_LIB, [$pthread_lib]) 39*44704f69SBart Van Assche 40*44704f69SBart Van AsscheSAVED_LIBS=$LIBS 41*44704f69SBart Van AsscheAC_SEARCH_LIBS([clock_gettime], [rt]) 42*44704f69SBart Van Asschert_lib=${LIBS%${SAVED_LIBS}} 43*44704f69SBart Van AsscheAC_CHECK_FUNCS(clock_gettime) 44*44704f69SBart Van AsscheLIBS=$SAVED_LIBS 45*44704f69SBart Van AsscheAC_SUBST(RT_LIB, [$rt_lib]) 46*44704f69SBart Van Assche 47*44704f69SBart Van AsscheAC_SUBST(GETOPT_O_FILES) 48*44704f69SBart Van Assche 49*44704f69SBart Van Assche 50*44704f69SBart Van AsscheAC_CANONICAL_HOST 51*44704f69SBart Van Assche 52*44704f69SBart Van AsscheAC_DEFINE_UNQUOTED(SG_LIB_BUILD_HOST, "${host}", [sg3_utils Build Host]) 53*44704f69SBart Van Assche 54*44704f69SBart Van Asschecheck_for_getrandom() { 55*44704f69SBart Van Assche AC_CHECK_HEADERS([sys/random.h], [AC_DEFINE_UNQUOTED(HAVE_GETRANDOM, 1, [Found sys/random.h])], [], []) 56*44704f69SBart Van Assche} 57*44704f69SBart Van Assche 58*44704f69SBart Van Asschecheck_for_linux_nvme_headers() { 59*44704f69SBart Van Assche AC_CHECK_HEADERS([linux/nvme_ioctl.h], [AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe])], [], []) 60*44704f69SBart Van Assche AC_CHECK_HEADERS([linux/types.h linux/bsg.h linux/kdev_t.h], [], [], 61*44704f69SBart Van Assche [[#ifdef HAVE_LINUX_TYPES_H 62*44704f69SBart Van Assche # include <linux/types.h> 63*44704f69SBart Van Assche #endif 64*44704f69SBart Van Assche ]]) 65*44704f69SBart Van Assche} 66*44704f69SBart Van Assche 67*44704f69SBart Van Asschecheck_for_linux_sg_v4_hdr() { 68*44704f69SBart Van Assche AC_EGREP_CPP(found, 69*44704f69SBart Van Assche [ # include <scsi/sg.h> 70*44704f69SBart Van Assche #ifdef SG_IOSUBMIT 71*44704f69SBart Van Assche found 72*44704f69SBart Van Assche #endif 73*44704f69SBart Van Assche ], 74*44704f69SBart Van Assche [AC_DEFINE_UNQUOTED(HAVE_LINUX_SG_V4_HDR, 1, [Have Linux sg v4 header]) ]) 75*44704f69SBart Van Assche} 76*44704f69SBart Van Assche 77*44704f69SBart Van Asschecase "${host}" in 78*44704f69SBart Van Assche *-*-android*) 79*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_ANDROID, 1, [sg3_utils on android]) 80*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_LINUX, 1, [sg3_utils on linux]) 81*44704f69SBart Van Assche check_for_linux_sg_v4_hdr 82*44704f69SBart Van Assche check_for_getrandom 83*44704f69SBart Van Assche check_for_linux_nvme_headers;; 84*44704f69SBart Van Assche *-*-freebsd*|*-*-kfreebsd*-gnu*) 85*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_FREEBSD, 1, [sg3_utils on FreeBSD]) 86*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe]) 87*44704f69SBart Van Assche check_for_getrandom 88*44704f69SBart Van Assche LIBS="$LIBS -lcam";; 89*44704f69SBart Van Assche *-*-solaris*) 90*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_SOLARIS, 1, [sg3_utils on Solaris]);; 91*44704f69SBart Van Assche *-*-netbsd*) 92*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_NETBSD, 1, [sg3_utils on NetBSD]);; 93*44704f69SBart Van Assche *-*-openbsd*) 94*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_OPENBSD, 1, [sg3_utils on OpenBSD]);; 95*44704f69SBart Van Assche *-*-osf*) 96*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_OSF1, 1, [sg3_utils on Tru64 UNIX]);; 97*44704f69SBart Van Assche *-*-cygwin*) 98*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_WIN32, 1, [sg3_utils on Win32]) 99*44704f69SBart Van Assche # AC_CHECK_HEADERS([nvme.h], [AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe])], [], []) 100*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe]) 101*44704f69SBart Van Assche check_for_getrandom 102*44704f69SBart Van Assche CFLAGS="$CFLAGS -Wno-char-subscripts";; 103*44704f69SBart Van Assche *-*-mingw* | *-*-msys*) 104*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_WIN32, 1, [sg3_utils on Win32]) 105*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_MINGW, 1, [also MinGW environment]) 106*44704f69SBart Van Assche # AC_CHECK_HEADERS([nvme.h], [AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe])], [], []) 107*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe]) 108*44704f69SBart Van Assche check_for_getrandom 109*44704f69SBart Van Assche CFLAGS="$CFLAGS -D__USE_MINGW_ANSI_STDIO";; 110*44704f69SBart Van Assche *-*-linux-gnu* | *-*-linux* | *-*-uclinux-gnu* | *-*-uclinux*) 111*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_LINUX, 1, [sg3_utils on linux]) 112*44704f69SBart Van Assche check_for_linux_sg_v4_hdr 113*44704f69SBart Van Assche check_for_getrandom 114*44704f69SBart Van Assche check_for_linux_nvme_headers;; 115*44704f69SBart Van Assche *-*-haiku*) 116*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_HAIKU, 1, [sg3_utils on Haiku]) 117*44704f69SBart Van Assche AC_SUBST([os_cflags], ['']) 118*44704f69SBart Van Assche AC_SUBST([os_libs], ['']) ;; 119*44704f69SBart Van Assche *) 120*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(SG_LIB_OTHER, 1, [sg3_utils on other]) 121*44704f69SBart Van Assche isother=yes;; 122*44704f69SBart Van Asscheesac 123*44704f69SBart Van Assche 124*44704f69SBart Van Assche# Define platform-specific symbol. 125*44704f69SBart Van AsscheAM_CONDITIONAL(OS_FREEBSD, [echo $host_os | grep 'freebsd' > /dev/null]) 126*44704f69SBart Van AsscheAM_CONDITIONAL(OS_LINUX, [echo $host_os | grep -E '^(uc)?linux' > /dev/null]) 127*44704f69SBart Van AsscheAM_CONDITIONAL(OS_OSF, [echo $host_os | grep '^osf' > /dev/null]) 128*44704f69SBart Van AsscheAM_CONDITIONAL(OS_SOLARIS, [echo $host_os | grep '^solaris' > /dev/null]) 129*44704f69SBart Van AsscheAM_CONDITIONAL(OS_WIN32_MINGW, [echo $host_os | grep '^mingw' > /dev/null]) 130*44704f69SBart Van AsscheAM_CONDITIONAL(OS_WIN32_CYGWIN, [echo $host_os | grep '^cygwin' > /dev/null]) 131*44704f69SBart Van AsscheAM_CONDITIONAL(OS_ANDROID, [echo $host_os | grep 'android' > /dev/null]) 132*44704f69SBart Van AsscheAM_CONDITIONAL(OS_NETBSD, [echo $host_os | grep 'netbsd' > /dev/null]) 133*44704f69SBart Van AsscheAM_CONDITIONAL(OS_OPENBSD, [echo $host_os | grep 'openbsd' > /dev/null]) 134*44704f69SBart Van AsscheAM_CONDITIONAL(OS_HAIKU, [echo $host_os | grep '^haiku' > /dev/null]) 135*44704f69SBart Van AsscheAM_CONDITIONAL(OS_OTHER, [test "x$isother" = "xyes"]) 136*44704f69SBart Van Assche 137*44704f69SBart Van AsscheAC_ARG_ENABLE([debug], 138*44704f69SBart Van Assche [ --enable-debug Turn on debugging], 139*44704f69SBart Van Assche [case "${enableval}" in 140*44704f69SBart Van Assche yes) debug=true ;; 141*44704f69SBart Van Assche no) debug=false ;; 142*44704f69SBart Van Assche *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;; 143*44704f69SBart Van Assche esac],[debug=false]) 144*44704f69SBart Van AsscheAM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) 145*44704f69SBart Van Assche 146*44704f69SBart Van AsscheAC_ARG_ENABLE([pt_dummy], 147*44704f69SBart Van Assche [ --enable-pt_dummy pass-through codes compiles, does nothing], 148*44704f69SBart Van Assche [case "${enableval}" in 149*44704f69SBart Van Assche yes) pt_dummy=true ;; 150*44704f69SBart Van Assche no) pt_dummy=false ;; 151*44704f69SBart Van Assche *) AC_MSG_ERROR([bad value ${enableval} for --enable-dummy_pt]) ;; 152*44704f69SBart Van Assche esac],[pt_dummy=false]) 153*44704f69SBart Van AsscheAM_CONDITIONAL([PT_DUMMY], [test x$pt_dummy = xtrue]) 154*44704f69SBart Van Assche 155*44704f69SBart Van AsscheAC_ARG_ENABLE([linuxbsg], 156*44704f69SBart Van Assche AC_HELP_STRING([--disable-linuxbsg], [option ignored, this is placeholder]), 157*44704f69SBart Van Assche [AC_DEFINE_UNQUOTED(IGNORE_LINUX_BSG, 1, [option ignored], )], []) 158*44704f69SBart Van Assche 159*44704f69SBart Van AsscheAC_ARG_ENABLE([win32-spt-direct], 160*44704f69SBart Van Assche AC_HELP_STRING([--enable-win32-spt-direct], [enable Win32 SPT Direct]), 161*44704f69SBart Van Assche AC_DEFINE_UNQUOTED(WIN32_SPT_DIRECT, 1, [enable Win32 SPT Direct], ) 162*44704f69SBart Van Assche) 163*44704f69SBart Van Assche 164*44704f69SBart Van AsscheAC_ARG_ENABLE([scsistrings], 165*44704f69SBart Van Assche [AS_HELP_STRING([--disable-scsistrings], 166*44704f69SBart Van Assche [Disable full SCSI sense strings and NVMe status strings])], 167*44704f69SBart Van Assche [], [AC_DEFINE_UNQUOTED(SG_SCSI_STRINGS, 1, [full SCSI sense strings and NVMe status strings], )]) 168*44704f69SBart Van Assche 169*44704f69SBart Van AsscheAC_ARG_ENABLE([nvme-supp], 170*44704f69SBart Van Assche AC_HELP_STRING([--disable-nvme-supp], [remove all or most NVMe code]), 171*44704f69SBart Van Assche [AC_DEFINE_UNQUOTED(IGNORE_NVME, 1, [compile out NVMe support], )], []) 172*44704f69SBart Van Assche 173*44704f69SBart Van AsscheAC_ARG_ENABLE([fast-lebe], 174*44704f69SBart Van Assche AC_HELP_STRING([--disable-fast-lebe], [use generic little-endian/big-endian code instead]), 175*44704f69SBart Van Assche [AC_DEFINE_UNQUOTED(IGNORE_FAST_LEBE, 1, [use generic little-endian/big-endian instead], )], []) 176*44704f69SBart Van Assche 177*44704f69SBart Van AsscheAC_ARG_ENABLE([linux-sgv4], 178*44704f69SBart Van Assche AC_HELP_STRING([--disable-linux-sgv4], [for Linux sg driver avoid v4 interface even if available]), 179*44704f69SBart Van Assche [AC_DEFINE_UNQUOTED(IGNORE_LINUX_SGV4, 1, [even if Linux sg v4 available, use v3 instead], )], []) 180*44704f69SBart Van Assche 181*44704f69SBart Van Assche 182*44704f69SBart Van AsscheAC_OUTPUT( 183*44704f69SBart Van Assche Makefile 184*44704f69SBart Van Assche include/Makefile 185*44704f69SBart Van Assche lib/Makefile 186*44704f69SBart Van Assche src/Makefile 187*44704f69SBart Van Assche doc/Makefile 188*44704f69SBart Van Assche scripts/Makefile 189*44704f69SBart Van Assche) 190*44704f69SBart Van Assche 191*44704f69SBart Van Assche 192*44704f69SBart Van Assche# Borrowed from smartmontools configure.ac 193*44704f69SBart Van Assche# Note: Use `...` here as some shells do not properly parse '$(... case $x in X) ...)' 194*44704f69SBart Van Asscheinfo=` 195*44704f69SBart Van Assche echo "-----------------------------------------------------------------------------" 196*44704f69SBart Van Assche echo "${PACKAGE}-${VERSION} configuration:" 197*44704f69SBart Van Assche echo "host operating system: $host" 198*44704f69SBart Van Assche echo "default C compiler: $CC" 199*44704f69SBart Van Assche 200*44704f69SBart Van Assche case "$host_os" in 201*44704f69SBart Van Assche mingw*) 202*44704f69SBart Van Assche echo "application manifest: ${os_win32_manifest:-built-in}" 203*44704f69SBart Van Assche echo "resource compiler: $WINDRES" 204*44704f69SBart Van Assche echo "message compiler: $WINDMC" 205*44704f69SBart Van Assche echo "NSIS compiler: $MAKENSIS" 206*44704f69SBart Van Assche ;; 207*44704f69SBart Van Assche 208*44704f69SBart Van Assche *) 209*44704f69SBart Van Assche echo "binary install path: \`eval eval eval echo $bindir\`" 210*44704f69SBart Van Assche echo "scripts install path: \`eval eval eval echo $bindir\`" 211*44704f69SBart Van Assche echo "man page install path: \`eval eval eval echo $mandir\`" 212*44704f69SBart Van Assche ;; 213*44704f69SBart Van Assche esac 214*44704f69SBart Van Assche echo "-----------------------------------------------------------------------------" 215*44704f69SBart Van Assche` 216*44704f69SBart Van Assche 217*44704f69SBart Van AsscheAC_MSG_NOTICE([ 218*44704f69SBart Van Assche$info 219*44704f69SBart Van Assche]) 220*44704f69SBart Van Assche 221