File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / istgt / configure.in
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Oct 9 09:13:23 2012 UTC (11 years, 8 months ago) by misho
Branches: istgt, MAIN
CVS tags: v20121028, v20120901, HEAD
dhcp 4.1 r7

    1: #                                               -*- Autoconf -*-
    2: # Process this file with autoconf to produce a configure script.
    3: 
    4: AC_PREREQ([2.62])
    5: AC_INIT([istgt], [0.5])
    6: AC_CONFIG_SRCDIR([src/istgt.c])
    7: AC_CONFIG_HEADERS([src/config.h])
    8: 
    9: # Checks for programs.
   10: AC_PROG_CC([clang gcc cc])
   11: AC_PROG_INSTALL
   12: AC_PROG_RANLIB
   13: AC_PROG_SED
   14: AC_PROG_MKDIR_P
   15: 
   16: # clagn with -O3
   17: if test "$CC" = "clang" && test "$ac_test_CFLAGS" != "set"; then
   18:   CFLAGS="-g -O3"
   19: fi
   20: 
   21: # host OS related
   22: vboxinc="/usr/local/src/virtualbox/*/include"
   23: vboxlib="/usr/local/lib/virtualbox"
   24: AC_SUBST([rctemplate], [""])
   25: AC_SUBST([rcdir], ['${prefix}/etc/rc.d'])
   26: AC_CANONICAL_HOST
   27: case "$host_os" in
   28: *linux*)
   29: 	tmp="/usr/src/virtualbox/*/include"
   30: 	if test -d "`echo $tmp`"; then
   31: 	    vboxinc=$tmp
   32: 	fi
   33: 	vboxlib="/usr/lib/virtualbox"
   34: 	AC_SUBST([rctemplate], ["istgt_linux.sh.in"])
   35: 	AC_SUBST([rcdir], ['/etc/init.d'])
   36: 	AC_DEFINE([_GNU_SOURCE], 1, [Define if linux host])
   37: 	;;
   38: *netbsd*)
   39: 	AC_SUBST([rctemplate], ["istgt_netbsd.sh.in"])
   40: 	AC_SUBST([rcdir], ['/etc/rc.d'])
   41: 	;;
   42: *freebsd*)
   43: 	tmp="/usr/ports/emulators/virtualbox-ose/work/*/include"
   44: 	if test -d "`echo $tmp`"; then
   45: 	    vboxinc=$tmp
   46: 	else
   47: 	    tmp="/usr/ports/emulators/virtualbox-ose-legacy/work/*/include"
   48: 	    if test -d "`echo $tmp`"; then
   49: 		vboxinc=$tmp
   50: 	    fi
   51: 	fi
   52: 	vboxlib="/usr/local/lib/virtualbox"
   53: 	AC_SUBST([rctemplate], ["istgt.sh.in"])
   54: 	AC_SUBST([rcdir], ['${prefix}/etc/rc.d'])
   55: 	if test "$mandir" = '${datarootdir}/man'; then
   56: 	    AC_SUBST([mandir], ['${prefix}/man'])
   57: 	fi
   58: 	;;
   59: esac
   60: 
   61: # Checks for libraries.
   62: AC_CHECK_LIB([pthread], [pthread_create])
   63: AC_CHECK_LIB([crypto], [MD5_Update])
   64: AC_CHECK_LIB([cam], [cam_open_spec_device])
   65: 
   66: # Checks for header files.
   67: AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h limits.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h unistd.h])
   68: 
   69: # Checks for typedefs, structures, and compiler characteristics.
   70: AC_C_INLINE
   71: AC_TYPE_INT32_T
   72: AC_TYPE_INT64_T
   73: AC_TYPE_OFF_T
   74: AC_TYPE_PID_T
   75: AC_TYPE_SIZE_T
   76: AC_TYPE_SSIZE_T
   77: AC_STRUCT_ST_BLOCKS
   78: AC_TYPE_UINT16_T
   79: AC_TYPE_UINT32_T
   80: AC_TYPE_UINT64_T
   81: AC_TYPE_UINT8_T
   82: 
   83: # Checks for library functions.
   84: AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
   85: AC_FUNC_MALLOC
   86: AC_FUNC_REALLOC
   87: AC_CHECK_FUNCS([ftruncate memset realpath socket strcasecmp strchr strncasecmp strspn strtol strtoull])
   88: 
   89: # check compatibility
   90: AC_SYS_LARGEFILE
   91: AC_CHECK_HEADERS([aio.h sched.h uuid.h sys/disk.h sys/disklabel.h])
   92: AC_CHECK_HEADERS([pthread.h])
   93: AC_CHECK_HEADERS([pthread_np.h], [], [],
   94: [#if HAVE_PTHREAD_H
   95: #include <pthread.h>
   96: #endif
   97: ])
   98: AC_CHECK_FUNCS([strlcpy arc4random srandomdev pthread_yield sched_yield])
   99: AC_CHECK_FUNCS([pthread_set_name_np setproctitle])
  100: AC_SUBST([MKDEP])
  101: AC_PATH_PROG([MKDEP], ["mkdep"])
  102: #if test -z "$MKDEP"; then
  103: #   AC_PATH_PROG([MKDEP], ["makedepend"])
  104: #fi
  105: 
  106: # paths
  107: configdir="$ac_default_prefix/etc/istgt"
  108: mediadir="/var/istgt"
  109: if test "$prefix" != "NONE"; then
  110:   configdir="$prefix/etc/istgt"
  111: fi
  112: AC_ARG_WITH([configdir],
  113:   AS_HELP_STRING([--with-configdir=DIR], [(default PREFIX/etc/istgt)]),
  114:   [case $withval in
  115:     yes|no)
  116:         ;;
  117:     *)
  118:         configdir="$withval"
  119:         ;;
  120:   esac])
  121: AC_SUBST([configdir])
  122: AC_ARG_WITH([mediadir],
  123:   AS_HELP_STRING([--with-mediadir=DIR], [(default /var/istgt)]),
  124:   [case $withval in
  125:     yes|no)
  126:         ;;
  127:     *)
  128:         mediadir="$withval"
  129:         ;;
  130:   esac])
  131: AC_SUBST([mediadir])
  132: 
  133: # startup script directory
  134: AC_ARG_WITH([rcdir],
  135:   AS_HELP_STRING([--with-rcdir=DIR], [(default PREFIX/etc/rc.d)]),
  136:   [case $withval in
  137:     yes|no)
  138:         ;;
  139:     *)
  140:         rcdir="$withval"
  141:         ;;
  142:   esac])
  143: AC_SUBST([rcdir])
  144: 
  145: # test for -Wall
  146: saved_CFLAGS="$CFLAGS"
  147: AC_MSG_CHECKING([whether the C compiler accepts -Wall])
  148: CFLAGS="$CFLAGS -Wall"
  149: AC_TRY_COMPILE(,,
  150:   AC_MSG_RESULT(yes); saved_CFLAGS="$CFLAGS",
  151:   AC_MSG_RESULT(no))
  152: CFLAGS="$saved_CFLAGS"
  153: 
  154: # test for -Wextra
  155: saved_CFLAGS="$CFLAGS"
  156: AC_MSG_CHECKING([whether the C compiler accepts -Wextra])
  157: CFLAGS="$CFLAGS -Wextra"
  158: AC_TRY_COMPILE(,,
  159:   AC_MSG_RESULT(yes); saved_CFLAGS="$CFLAGS",
  160:   AC_MSG_RESULT(no))
  161: CFLAGS="$saved_CFLAGS"
  162: 
  163: # check enable features
  164: AC_MSG_CHECKING([whether to use debug mode])
  165: AC_ARG_ENABLE([debug],
  166:   AS_HELP_STRING([--enable-debug], [enable debug(logging)]),
  167:   AC_MSG_RESULT(yes); AC_DEFINE([DEBUG], 1, [Define if enable debug]),
  168:   AC_MSG_RESULT(no))
  169: AC_SUBST([DEBUG])
  170: 
  171: AC_MSG_CHECKING([whether to use symlink device])
  172: AC_ARG_ENABLE([symlink-device],
  173:   AS_HELP_STRING([--enable-symlink-device], [allow symlink device]),
  174:   AC_MSG_RESULT(yes); AC_DEFINE([ALLOW_SYMLINK_DEVICE], 1, [Define if enable symlink-device]),
  175:   AC_MSG_RESULT(no))
  176: AC_SUBST([ALLOW_SYMLINK_DEVICE])
  177: 
  178: AC_MSG_CHECKING([which syslog facility to use])
  179: AC_ARG_WITH([logfacility],
  180:   AS_HELP_STRING([--with-logfacility], [syslog facility to log with (default "local7")]),
  181:   [case $with_logfacility in
  182:     daemon|auth|authpriv|local0|local1|local2|local3|local4|local5|local6|local7)
  183:         logfacility=$with_logfacility
  184:         ;;
  185:     *)  AC_MSG_ERROR(["unsupported facility $with_logfacility"])
  186:         ;;
  187:   esac],
  188:   [logfacility="local7"])
  189: AC_DEFINE_UNQUOTED([DEFAULT_LOG_FACILITY], ["$logfacility"], [syslog facility])
  190: AC_MSG_RESULT("$logfacility")
  191: 
  192: AC_MSG_CHECKING([which syslog priority to use])
  193: AC_ARG_WITH([logpriority],
  194:   AS_HELP_STRING([--with-logpriority], [syslog priority to log with (default "info")]),
  195:   [case $with_logpriority in
  196:     emerg|alert|crit|err|warning|notice|info|debug)
  197:         logpriority=$with_logpriority
  198:         ;;
  199:     *)  AC_MSG_ERROR(["unsupported priority $with_logpriority"])
  200:         ;;
  201:   esac],
  202:   [logpriority="info"])
  203: AC_DEFINE_UNQUOTED([DEFAULT_LOG_PRIORITY], ["$logpriority"], [syslog priority])
  204: AC_MSG_RESULT("$logpriority")
  205: 
  206: #AC_MSG_CHECKING([whether to use asynchronous io])
  207: #AC_ARG_WITH([aio],
  208: #  AS_HELP_STRING([--with-aio], [use aio (default "no")]),
  209: #  [case $with_aio in
  210: #    yes)
  211: #        AC_DEFINE([USE_AIO], 1, [use aio])
  212: #        AC_MSG_RESULT(yes)
  213: #        ;;
  214: #    *)
  215: #        AC_MSG_RESULT(no)
  216: #        ;;
  217: #  esac],
  218: #  AC_MSG_RESULT(no))
  219: #AC_SUBST([USE_AIO])
  220: 
  221: # vbox support
  222: vbox="no"
  223: AC_MSG_CHECKING([VirtualBox Virtual Disk support])
  224: AC_ARG_WITH([vbox],
  225:   AS_HELP_STRING([--with-vbox=INC], [VirtualBox include]),
  226:   [case $with_vbox in
  227:      no)
  228:          AC_MSG_RESULT([no])
  229:          ;;
  230:      yes|*)
  231:          AC_MSG_RESULT([yes])
  232:          vbox="yes"
  233:          if test "$with_vbox" != "yes"; then
  234:              vboxinc="$with_vbox"
  235:          fi
  236:          ;;
  237:    esac],
  238:   [AC_MSG_RESULT([no])])
  239: AC_ARG_WITH([vboxlib],
  240:   AS_HELP_STRING([--with-vboxlib=LIB], [VirtualBox lib]),
  241:   [case $with_vboxlib in
  242:      no)
  243:          ;;
  244:      yes|*)
  245:          vbox="yes"
  246:          if test "$with_vboxlib" != "yes"; then
  247:              vboxlib="$with_vboxlib"
  248:          fi
  249:          ;;
  250:    esac],
  251:   [])
  252: # vbox support yes?
  253: if test "$vbox" = "yes"; then
  254:     vboxinc=`echo $vboxinc`
  255:     vboxlib=`echo $vboxlib`
  256:     if test ! -d "$vboxinc"; then
  257:         AC_MSG_ERROR([not directory: $vboxinc])
  258:     fi
  259:     if test ! -d "$vboxlib"; then
  260:         AC_MSG_ERROR([not directory: $vboxlib])
  261:     fi
  262:     CPPFLAGS="$CPPFLAGS -I$vboxinc"
  263:     LDFLAGS="$LDFLAGS -Wl,-rpath,$vboxlib"
  264:     LIBS="$LIBS $vboxlib/VBoxDDU.so $vboxlib/VBoxRT.so"
  265:     AC_DEFINE([USE_VBOXVD], 1, [Use vbox virtual disk support])
  266:     # define vbox include version
  267:     changequote(<<, >>)
  268:     vbox_major=`$SED -e '/^VBOX_VERSION_MAJOR[ 	]*=/!d' -e 's/.*=[^0-9]*\([0-9]*\).*/\1/' $vboxinc/../Config.kmk`
  269:     vbox_minor=`$SED -e '/^VBOX_VERSION_MINOR[ 	]*=/!d' -e 's/.*=[^0-9]*\([0-9]*\).*/\1/' $vboxinc/../Config.kmk`
  270:     vbox_build=`$SED -e '/^VBOX_VERSION_BUILD[ 	]*=/!d' -e 's/.*=[^0-9]*\([0-9]*\).*/\1/' $vboxinc/../Config.kmk`
  271:     changequote([, ])
  272:     AC_DEFINE_UNQUOTED([ISTGT_VBOXINC_VERSION_MAJOR], [$vbox_major], [VBox include major])
  273:     AC_DEFINE_UNQUOTED([ISTGT_VBOXINC_VERSION_MINOR], [$vbox_minor], [VBox include minor])
  274:     AC_DEFINE_UNQUOTED([ISTGT_VBOXINC_VERSION_BUILD], [$vbox_build], [VBox include build])
  275: fi
  276: 
  277: # check for PTHREAD_MUTEX_ADAPTIVE_NP
  278: AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
  279: AC_TRY_COMPILE([
  280: #include <pthread.h>
  281: ],
  282: [
  283: 	return (PTHREAD_MUTEX_ADAPTIVE_NP);
  284: ],
  285: [AC_MSG_RESULT([yes])
  286: AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], [1], [Define 1 if you have the value.])],
  287: [AC_MSG_RESULT([no])]
  288: )
  289: 
  290: AC_CHECK_HEADERS([sys/types.h])
  291: AC_CHECK_HEADERS([machine/atomic.h], [], [],
  292: [#if HAVE_SYS_TYPES_H
  293: #include <sys/types.h>
  294: #endif
  295: ])
  296: AC_CHECK_HEADERS([sys/atomic.h])
  297: 
  298: # for FeeeBSD
  299: #AC_CHECK_FUNCS([atomic_store_rel_int atomic_load_acq_int])
  300: #AC_CHECK_FUNCS([atomic_cmpset_ptr atomic_cmpset_64 atomic_cmpset_32])
  301: 
  302: # for NetBSD
  303: #AC_CHECK_FUNCS([atomic_swap_uint atomic_or_uint_nv])
  304: #AC_CHECK_FUNCS([atomic_cas_ptr atomic_cas_64 atomic_cas_32])
  305: 
  306: atomic="no"
  307: AC_MSG_CHECKING([for atomic operations])
  308: AC_TRY_LINK([
  309: #if HAVE_SYS_TYPES_H
  310: #include <sys/types.h>
  311: #endif
  312: #include <machine/atomic.h>
  313: ],
  314: [
  315: 	int x, y;
  316: 	atomic_store_rel_int(&x, 1);
  317: 	y = atomic_load_acq_int(&x);
  318: ],
  319: [AC_DEFINE([USE_ATOMIC], [1], [Use atomic])
  320: AC_DEFINE([HAVE_ATOMIC_STORE_REL_INT], [1], [Define 1 if you have the function.])
  321: AC_DEFINE([HAVE_ATOMIC_LOAD_ACQ_INT], [1], [Define 1 if you have the function.])
  322: atomic="yes"]
  323: )
  324: if test $atomic = "no"; then
  325: AC_TRY_LINK([
  326: #if HAVE_SYS_TYPES_H
  327: #include <sys/types.h>
  328: #endif
  329: #include <sys/atomic.h>
  330: ],
  331: [
  332: 	unsigned int x, y;
  333: 	atomic_swap_uint(&x, 1);
  334: 	y = atomic_or_uint_nv(&x, 0);
  335: ],
  336: [AC_DEFINE([USE_ATOMIC], [1], [Use atomic])
  337: AC_DEFINE([HAVE_ATOMIC_SWAP_UINT], [1], [Define 1 if you have the function.])
  338: AC_DEFINE([HAVE_ATOMIC_OR_UINT_NV], [1], [Define 1 if you have the function.])
  339: atomic="yes"]
  340: )
  341: fi
  342: AC_TRY_LINK([
  343: #if HAVE_SYS_TYPES_H
  344: #include <sys/types.h>
  345: #endif
  346: #include <sys/atomic.h>
  347: ],
  348: [
  349: 	membar_producer();
  350: ],
  351: [AC_DEFINE([HAVE_MEMBAR_PRODUCER], [1], [Define 1 if you have the function.])]
  352: )
  353: AC_MSG_RESULT($atomic)
  354: 
  355: # for gcc builtin
  356: #AC_CHECK_FUNCS([__sync_fetch_and_add __sync_val_compare_and_swap])
  357: #AC_CHECK_FUNCS([__sync_synchronize])
  358: 
  359: gcc_atomic="no"
  360: AC_MSG_CHECKING([for gcc builtin atomic operations])
  361: AC_TRY_LINK([
  362: #if HAVE_SYS_TYPES_H
  363: #include <sys/types.h>
  364: #endif
  365: ],
  366: [
  367: 	unsigned int x, y;
  368: 	y = __sync_fetch_and_add(&x, 0);
  369: 	__sync_val_compare_and_swap(&x, y, 2);
  370: ],
  371: [AC_DEFINE([USE_GCC_ATOMIC], [1], [Use gcc builtin atomic])
  372: AC_DEFINE([HAVE_GCC_ATOMIC_FETCH_AND_ADD_UINT], [1], [Define 1 if you have the function.])
  373: AC_DEFINE([HAVE_GCC_ATOMIC_VAL_COMPARE_AND_SWAP_UINT], [1], [Define 1 if you have the function.])
  374: gcc_atomic="yes"]
  375: )
  376: AC_TRY_LINK([
  377: #if HAVE_SYS_TYPES_H
  378: #include <sys/types.h>
  379: #endif
  380: ],
  381: [
  382: 	__sync_synchronize();
  383: ],
  384: [AC_DEFINE([HAVE_GCC_ATOMIC_SYNCHRONIZE], [1], [Define 1 if you have the function.])]
  385: )
  386: AC_MSG_RESULT($gcc_atomic)
  387: 
  388: AC_CONFIG_FILES([Makefile src/Makefile etc/Makefile doc/Makefile])
  389: AC_CONFIG_FILES([src/build.h])
  390: AC_OUTPUT

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>