dnl Process this file with autoconf to produce a configure script. -*-m4-*- dnl *********************************************************************** dnl When preparing a release, increase the numeric and string version numbers, dnl remove the "-cvs" suffix, and set is_release=yes AC_INIT([sane-backends],[1.0.19],[sane-devel@lists.alioth.debian.org]) V_MAJOR=1 V_MINOR=0 V_REV=19 is_release=yes dnl *********************************************************************** AC_CONFIG_HEADERS([include/sane/config.h]) AC_PREREQ(2.54)dnl dnl Minimum Autoconf version required. AC_ARG_PROGRAM PACKAGE=AC_PACKAGE_NAME VERSION=AC_PACKAGE_VERSION NUMBER_VERSION=${V_MAJOR}.${V_MINOR}.${V_REV} AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Define to the name of the distribution.]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Define to the version of the distribution.]) AC_DEFINE_UNQUOTED(SANE_DLL_V_MAJOR, $V_MAJOR, [SANE DLL major number]) AC_DEFINE_UNQUOTED(SANE_DLL_V_MINOR, $V_MINOR, [SANE DLL minor number]) AC_DEFINE_UNQUOTED(SANE_DLL_V_BUILD, $V_REV, [SANE DLL revision number]) AC_SUBST(V_MAJOR) AC_SUBST(V_MINOR) AC_SUBST(V_REV) AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_SUBST(NUMBER_VERSION) AC_CANONICAL_BUILD AC_CANONICAL_HOST dnl no bloody way to have a decent --docdir... AC_ARG_WITH(docdir, AC_HELP_STRING([--with-docdir=DIR], [documentation @<:@PREFIX/doc/sane-VERSION@:>@]), [ docdir="${withval}" AC_SUBST([docdir])dnl ], [ AC_SUBST([docdir], ['${prefix}/doc/sane-${VERSION}'])dnl ]) dnl *********************************************************************** dnl Checks for programs. dnl *********************************************************************** AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_CPP AC_PROG_GCC_TRADITIONAL AC_PATH_PROG(SANE_CONFIG_PATH, sane-config, no) AC_PATH_PROG(MSGFMT, msgfmt$EXEEXT, no) AC_PATH_PROG(XGETTEXT, xgettext$EXEEXT, no) AC_PATH_PROG(MSGMERGE, msgmerge$EXEEXT, no) AC_PATH_PROG(LATEX, latex$EXEEXT, no) AC_PATH_PROG(DVIPS, dvips$EXEEXT, no) AC_PATH_PROG(MAKEINDEX, makeindex$EXEEXT, no) AC_PATH_PROG(MAKEDEPEND, makedepend$EXEEXT, no) AC_SUBST(MSGFMT) AC_SUBST(XGETTEXT) AC_SUBST(MSGMERGE) AC_SUBST(LATEX) AC_SUBST(DVIPS) AC_SUBST(MAKEINDEX) if test "$MAKEDEPEND" != "no"; then DEPEND_RECURSIVE="depend-recursive" fi AC_SUBST(DEPEND_RECURSIVE) CROSS_COMPILING=$cross_compiling AC_SUBST(CROSS_COMPILING) dnl *********************************************************************** dnl set compiler/linker flags dnl *********************************************************************** INCLUDES="${INCLUDES} -I/usr/local/include" AC_SUBST(INCLUDES) SANE_SET_CFLAGS([$is_release]) SANE_SET_LDFLAGS SANE_LINKER_RPATH dnl *********************************************************************** dnl Checks for unix variants dnl *********************************************************************** AC_GNU_SOURCE AC_AIX AC_MINIX AC_ISC_POSIX AC_NEED_BYTEORDER_H([include/byteorder.h]) AX_NEED_STDINT_H([include/_stdint.h]) dnl *********************************************************************** dnl Checks for libraries dnl *********************************************************************** SANE_CHECK_DLL_LIB dnl Checks for Backend libraries. AC_CHECK_LIB(m,sqrt) AC_CHECK_LIB(scsi, scsireq_enter) # FreeBSD needs this AC_CHECK_LIB(cam, cam_open_device) # FreeBSD 3+ needs this dnl IRIX sometimes has SYSVR3/4 network DSOs, but we do not need or want dnl to use them! if test "`uname`" != "IRIX" -a "`uname`" != "IRIX64"; then AC_SEARCH_LIBS(gethostbyaddr, nsl bind) AC_SEARCH_LIBS(socket, socket) AC_SEARCH_LIBS(syslog, syslog be) # OS/2 needs -lsyslog, BeOS needs -lbe fi SANE_CHECK_JPEG SANE_CHECK_TIFF SANE_CHECK_IEEE1284 SANE_CHECK_PTHREAD SANE_CHECK_LOCKING SANE_CHECK_GPHOTO2 dnl check sane to make sure we don't have two installations AC_CHECK_LIB(sane, sane_init, LIBSANE_EXISTS="yes") dnl *********************************************************************** dnl Checks for header files. dnl *********************************************************************** AC_HEADER_STDC AC_CHECK_HEADERS(fcntl.h unistd.h libc.h sys/dsreq.h sys/select.h \ sys/time.h sys/shm.h sys/ipc.h sys/signal.h \ sys/scanio.h scsi.h sys/scsi.h sys/scsicmd.h sys/scsiio.h \ bsd/dev/scsireg.h scsi/sg.h /usr/src/linux/include/scsi/sg.h \ camlib.h os2.h sys/socket.h sys/io.h gscdds.h sys/hw.h \ sys/types.h sys/scsi/scsi.h sys/scsi/sgdefs.h sys/scsi/targets/scgio.h \ apollo/scsi.h sys/sdi_comm.h sys/passthrudef.h linux/ppdev.h \ dev/ppbus/ppi.h machine/cpufunc.h usb.h sys/bitypes.h sys/sem.h sys/poll.h \ IOKit/cdb/IOSCSILib.h IOKit/scsi/SCSICommandOperationCodes.h \ IOKit/scsi-commands/SCSICommandOperationCodes.h \ windows.h be/kernel/OS.h be/drivers/USB_scanner.h limits.h sys/ioctl.h asm/types.h\ netinet/in.h tiffio.h) AC_CHECK_HEADERS([asm/io.h],,,[#include ]) AC_CHECK_HEADERS([io/cam/cam.h],,,[#include ]) SANE_CHECK_MISSING_HEADERS AC_CHECK_HEADER(resmgr.h,[ AC_CHECK_LIB( resmgr, rsm_open_device,[ AC_DEFINE(HAVE_RESMGR,1,[define if you have the resmgr library]) LIBS="$LIBS -lresmgr" ] ) ]) AC_CHECK_HEADER(usbcalls.h,[ AC_DEFINE(HAVE_USBCALLS,1,[define if you have the usbcalls library]) LIBS="$LIBS -lusbcalls" ],,[ #include #include ]) dnl *********************************************************************** dnl Checks for types and structures dnl *********************************************************************** AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_TYPE_PID_T AC_CHECK_TYPE(ssize_t, long) SANE_CHECK_U_TYPES # from Python, check for "long long" type AC_MSG_CHECKING(for long long support) have_long_long=no AC_TRY_COMPILE([], [long long x; x = (long long)0;], AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the long long type is available.]) have_long_long=yes) AC_MSG_RESULT($have_long_long) if test "$ac_cv_header_sys_scsiio_h" = "yes" \ -a "$ac_cv_header_scsi_h" = "yes"; then AC_TRY_COMPILE([ #include #include ],[scsireq_t req],, AC_DEFINE(scsireq_t, struct scsireq_t, [Define scsireq_t as \`struct scsireq\' if necessary.])) fi AC_MSG_CHECKING([for socklen_t in ]) AC_TRY_COMPILE([ #include ],[socklen_t len],AC_MSG_RESULT(yes), [AC_MSG_RESULT(no); AC_DEFINE(socklen_t,int, [Define socklen_t as \`int\' if necessary.])]) AC_MSG_CHECKING([for union semun in ]) AC_TRY_COMPILE([ #include #include #include ],[union semun test_semun],[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UNION_SEMUN,1,[Define if union semun is available.])], AC_MSG_RESULT(no)) AC_MSG_CHECKING([for sg_header.target_status in ]) AC_TRY_COMPILE([ #include #include ],[ struct sg_header hdr; hdr.target_status = 1; return 0; ],[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SG_TARGET_STATUS,1,[Define if sg_header.target_status is available.])], AC_MSG_RESULT(no)) AC_MSG_CHECKING([for struct flock in fcntl.h]) AC_EGREP_HEADER([struct flock], fcntl.h, [AC_MSG_RESULT(yes) ; AC_DEFINE(HAVE_STRUCT_FLOCK, 1, [Define if struct flock is available.])], AC_MSG_RESULT(no)) AC_MSG_CHECKING([for Linux ioctl defines]) AC_TRY_COMPILE([ #include #include ],[ __u32 houba = _IOR('v',14, unsigned long); ],[AC_MSG_RESULT(yes); have_linux_ioctl_defines="yes";],AC_MSG_RESULT(no)) AC_MSG_CHECKING([for SCSITaskSGElement in IOKit/scsi/SCSITaskLib.h]) AC_TRY_COMPILE([ #undef VERSION #include ],[ SCSITaskSGElement range; return 0; ],[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SCSITASKSGELEMENT,1,[Define if SCSITaskSGElement is available.])], AC_MSG_RESULT(no)) dnl *********************************************************************** dnl Checks for compiler characteristics dnl *********************************************************************** AC_C_BIGENDIAN AC_C_CONST AC_C_INLINE dnl *********************************************************************** dnl Checks for library functions dnl *********************************************************************** if test "$ac_cv_header_be_kernel_OS_h" = "yes" ; then dnl those are known to be broken in BeOS (BONE) ac_cv_func_getaddrinfo=no ac_cv_func_getnameinfo=no fi AC_FUNC_ALLOCA AC_FUNC_MMAP AC_CHECK_FUNCS(atexit inet_addr inet_aton inet_ntoa ioperm i386_set_ioperm mkdir \ scsireq_enter strftime strstr strtod \ cfmakeraw tcsendbreak strcasecmp strncasecmp _portaccess \ getaddrinfo getnameinfo poll setitimer iopl ) AC_REPLACE_FUNCS(getenv inet_ntop inet_pton isfdtype sigprocmask snprintf \ strdup strndup strsep usleep vsyslog) SANE_PROTOTYPES if test "$ac_cv_header_os2_h" = "yes" ; then AC_DEFINE(strncasecmp, strnicmp, [Define for OS/2 only]) AC_DEFINE(strcasecmp, stricmp, [Define for OS/2 only]) fi dnl On OS/2, libc knows getopt AH_BOTTOM([ #ifdef __INNOTEK_LIBC__ #define ELIDE_CODE 1 #endif ]) dnl *********************************************************************** dnl checks for system services dnl *********************************************************************** if test -c /dev/urandom ; then AC_DEFINE(HAVE_DEV_URANDOM, 1, [Is /dev/urandom available?]) fi dnl libusb on enabled by default (if found) USE_LIBUSB=yes AC_ARG_ENABLE(libusb, AC_HELP_STRING([--disable-libusb], [disable support for libusb]), [ if eval "test x$enable_libusb = xno"; then USE_LIBUSB= fi ]) dnl we need both libusb header and a libusb providing usb_interrupt_read if test "${ac_cv_header_usb_h}" = "yes" && test "$USE_LIBUSB" = "yes" ; then AC_CHECK_LIB(usb, usb_interrupt_read) if test "${ac_cv_lib_usb_usb_interrupt_read}" = "yes" ; then HAVE_LIBUSB="yes" fi fi dnl disable Linux SCSI generic version 3 to avoid 32/64 bit problems if sparc64 -q > /dev/null 2>&1 ; then AC_DEFINE(DISABLE_LINUX_SG_IO, 1, [Should we disable SCSI generic v3?]) fi dnl check for IPv6 (can be overriden by --enable-ipv6) if test "$ac_cv_func_getnameinfo" = "yes" \ && test "$ac_cv_func_getaddrinfo" = "yes" ; then SANE_CHECK_IPV6 else ipv6="no" fi dnl *********************************************************************** dnl initialize libtool dnl *********************************************************************** AC_LIBTOOL_WIN32_DLL AC_DISABLE_STATIC AC_PROG_LIBTOOL dnl Windows/Cygwin needs this, else the library creation fails dnl BeOS also needs this (why isnt it the default anyway ???) if test "$ac_cv_header_windows_h" = "yes" -o "$ac_cv_header_be_kernel_OS_h" = "yes" ; then LIBTOOL_LINK_EXTRA=-no-undefined AC_SUBST(LIBTOOL_LINK_EXTRA) fi dnl Check for lock dir AC_ARG_WITH(lockdir, AC_HELP_STRING([--with-lockdir=DIR], [set SANE lockdir @<:@localstatedir/lock/sane@:>@]), [locksanedir=$withval],[locksanedir=${localstatedir}/lock/sane]) AC_SUBST(locksanedir) dnl *********************************************************************** dnl enable/disable backends and features based on previous tests and user's dnl choice dnl *********************************************************************** CPPFLAGS="${CPPFLAGS} -DPATH_SANE_CONFIG_DIR=\$(configdir) \ -DPATH_SANE_DATA_DIR=\$(datadir) \ -DPATH_SANE_LOCK_DIR=\$(locksanedir) \ -DV_MAJOR=${V_MAJOR} -DV_MINOR=${V_MINOR}" if test "${ac_cv_header_sys_socket_h}" = "no"; then echo "*** disabling saned (sys/socket.h not found)" SANED= else SANED=saned fi AC_SUBST(SANED) dnl These are the backends that are build in any case: AC_ARG_ENABLE(local-backends, AC_HELP_STRING([--disable-local-backends], [turn off compilation of all backends but net])) if eval "test x$enable_local_backends = xno"; then BACKENDS="net" else if test "${BACKENDS}" != "" ; then AC_MSG_NOTICE([Manually selected backends: ${BACKENDS}]) else BACKENDS="abaton agfafocus apple artec artec_eplus48u as6e avision bh \ canon canon630u cardscan coolscan coolscan2 dc25 dmc \ epjitsu epson epson2 fujitsu genesys gt68xx \ hp hp3500 hp3900 hp4200 hp5400 hp5590 hpljm1005 hs2p \ ibm leo lexmark \ ma1509 matsushita microtek microtek2 mustek mustek_usb \ nec niash pie pixma plustek ricoh \ s9036 sceptre sharp sm3600 sm3840 snapscan sp15c st400 stv680 \ tamarack teco1 teco2 teco3 test u12 umax umax_pp umax1220u" case "$host_os" in gnu*) echo "*** disabling PLUSTEK_PP backend (GNU/Hurd not supported)" ;; *) BACKENDS="${BACKENDS} plustek_pp" ;; esac if test "${sane_cv_use_libjpeg}" != "yes"; then echo "*** disabling DC210 backend (failed to find JPEG library)" echo "*** disabling DC240 backend (failed to find JPEG library)" else BACKENDS="${BACKENDS} dc210 dc240" SANEI_JPEG="sanei_jpeg.o" SANEI_JPEG_LO="sanei_jpeg.lo" fi AC_SUBST(SANEI_JPEG) AC_SUBST(SANEI_JPEG_LO) if test "${sane_cv_use_libieee1284}" != "yes" then echo "*** disabling CANON_PP backend (failed to find libieee1284 library)" echo "*** disabling HPSJ5S backend (failed to find libieee1284 library)" else BACKENDS="${BACKENDS} canon_pp hpsj5s" fi if test "${sane_cv_use_libieee1284}" != "yes" && test "${enable_parport_directio}" != "yes" then echo "*** disabling MUSTEK_PP backend (failed to find libieee1284 library" echo "*** and parport-directio is disabled)" else BACKENDS="${BACKENDS} mustek_pp" fi if test "${sane_cv_use_libjpeg}" != "yes" || test "${sane_cv_use_libtiff}" != "yes" then echo "*** disabling DELL1600N_NET backend (failed to find jpeg and/or tiff library)" else BACKENDS="${BACKENDS} dell1600n_net" fi if test "${HAVE_GPHOTO2}" != "true" \ -o "${sane_cv_use_libjpeg}" != "yes"; then echo "*** disabling GPHOTO2 backend (not requested, or failed to find required libraries)" else BACKENDS="${BACKENDS} gphoto2" fi if test "${ac_cv_header_sys_scanio_h}" = "no"; then echo "*** disabling PINT backend (sys/scanio.h not found)" else BACKENDS="${BACKENDS} pint" fi if test "${ac_cv_func_ioperm}" = "no" \ && test "${ac_cv_func__portaccess}" = "no" then echo "*** disabling qcam backend (ioperm or portaccess not found)" else BACKENDS="${BACKENDS} qcam" fi if test "${have_linux_ioctl_defines}" != "yes" then echo "*** disabling v4l (Video for Linux) backend" else BACKENDS="${BACKENDS} v4l" fi if test "${ac_cv_header_sys_socket_h}" = "no"; then echo "*** disabling net backend (sys/socket.h not found)" else BACKENDS="${BACKENDS} net" fi if test "${have_pthread}" != "yes"; then echo "*** disabling MUSTEK_USB2 backend (failed to find pthread library)" else BACKENDS="${BACKENDS} mustek_usb2" fi AC_ARG_ENABLE(pnm-backend, AC_HELP_STRING([--enable-pnm-backend], [enable the pnm backend for testing frontends (possible security risk, see PROBLEMS file)]), [ BACKENDS="${BACKENDS} pnm" ], [ echo "*** disabling pnm backend (not selected manually)" ]) fi fi AC_SUBST(BACKENDS) if test "${enable_shared}" = "no"; then enable_preload=yes fi if test "${enable_dynamic}" != yes || test "${enable_preload}" = "yes"; then echo "preloading backends into DLL" DLL_PRELOAD="\$(PRELOADABLE_BACKENDS)" else DLL_PRELOAD="" fi AC_SUBST(DLL_PRELOAD) dnl in BeOS, backends are not installed in lib/sane, but add-ons/SANE/ dnl we account for both installing in /boot/beos and ~/config dnl faster than: if test "`uname`" = "BeOS" -o "`uname`" = "Zeta" ; then if test "$ac_cv_header_be_kernel_OS_h" = "yes" ; then BEOS_ADDONDIR="${libdir}/../add-ons/SANE" AC_SUBST(BEOS_ADDONDIR) BE_INSTALL_FLAVOR=-beos AC_SUBST(BE_INSTALL_FLAVOR) fi AC_ARG_ENABLE(scsibuffersize, AC_HELP_STRING([--enable-scsibuffersize=N], [specify the default size in bytes of the buffer for SCSI commands [[default=131072]]]), [set_scsibuffersize="$enableval"], [set_scsibuffersize=131072]) AC_DEFINE_UNQUOTED(SCSIBUFFERSIZE, $set_scsibuffersize, [SCSI command buffer size]) echo "scsi buffersize: $set_scsibuffersize" AC_ARG_ENABLE(scsi-directio, AC_HELP_STRING([--enable-scsi-directio], [enable SCSI direct IO (Linux only, dangerous, see README.linux)]), [ if eval "test x$enable_scsi_directio = xyes"; then CFLAGS="$CFLAGS -DENABLE_SCSI_DIRECTIO" fi ]) AC_ARG_ENABLE(parport-directio, AC_HELP_STRING([--enable-parport-directio], [enable direct hardware access to the parallel port, so frontends will require special permission level]), [ if eval "test x$enable_parport_directio = xyes"; then CFLAGS="$CFLAGS -DENABLE_PARPORT_DIRECTIO" fi ]) AC_ARG_ENABLE(translations, AC_HELP_STRING([--disable-translations], [don't install translations of backend options]), [ if eval "test x$enable_translations = xno"; then INSTALL_TRANSLATIONS= else INSTALL_TRANSLATIONS=install-translations fi ], INSTALL_TRANSLATIONS=install-translations ) if eval "test x$INSTALL_TRANSLATIONS = xinstall-translations" ; then if test x$MSGFMT = xno || test x$XGETTEXT = xno || test $MSGMERGE = no ; then INSTALL_TRANSLATIONS= echo "disabling translations (missing msgfmt, xgettext or msgmerge)" else echo "enabling translations" fi else echo "disabling translations" fi AC_SUBST(INSTALL_TRANSLATIONS) if test "$LATEX" != "no" && test "$DVIPS" != "no" && test "$MAKEINDEX" != "no" ; then USE_LATEX="yes" else USE_LATEX="no" fi AC_SUBST(USE_LATEX) dnl *********************************************************************** dnl Write output files dnl *********************************************************************** DISTCLEAN_FILES="*~ .*~ *.log *.bak *.old *.orig *.out *.rej \"\#\"* \".\\#\"*" AC_SUBST(DISTCLEAN_FILES) AC_CONFIG_FILES([Makefile lib/Makefile sanei/Makefile frontend/Makefile \ japi/Makefile backend/Makefile include/Makefile doc/Makefile \ po/Makefile testsuite/Makefile tools/Makefile doc/doxygen-sanei.conf]) AC_CONFIG_FILES([tools/sane-config], [chmod a+x tools/sane-config]) AC_OUTPUT dnl *********************************************************************** dnl print configuration information dnl *********************************************************************** echo "-> Variables used for compilation/linking:" echo CPPFLAGS=\"${CPPFLAGS}\" echo CFLAGS=\"${CFLAGS}\" echo LDFLAGS=\"${LDFLAGS}\" echo LIBS=\"${LIBS}\" echo "-> Installation directories:" echo "Configuration: `eval eval echo ${sysconfdir}`" echo "Libraries: `eval eval echo ${libdir}`" echo "Binaries: `eval eval echo ${bindir}` and `eval eval echo ${sbindir}`" echo "Manpages: `eval eval echo ${mandir}`" echo "Documentation: `eval eval echo ${docdir}`" if eval "test x$INSTALL_LOCKPATH = xinstall-lockpath" ; then echo "Lockfiles: `eval eval echo ${locksanedir}`" else echo "Lockfiles: Feature is disabled!" fi echo "-> Network parameters:" if test "${SANED}" = "saned" ; then echo "Build saned: yes" else echo "Build saned: no" fi echo "IPv6 support: `eval eval echo ${ipv6}`" echo "-> The following backends will be built:" for backend in ${BACKENDS} ; do echo $ECHO_N "${backend} " done echo if test "$SANE_CONFIG_PATH" != "no" ; then SANE_INSTALLED_VERSION=`$SANE_CONFIG_PATH --version` SANE_INSTALLED_PREFIX=`$SANE_CONFIG_PATH --prefix` if test "$SANE_INSTALLED_PREFIX" != "$prefix" ; then echo "*** WARNING: SANE is already installed (version $SANE_INSTALLED_VERSION). The old" echo "*** installation is at $SANE_INSTALLED_PREFIX while SANE will now be installed" echo "*** at $prefix. It is recommended to uninstall the old SANE version" echo "*** before installing the new one to avoid problems." fi else if test "$LIBSANE_EXISTS" = "yes" ; then echo "*** Warning: An old version of SANE was detected but the sane-config program" echo "*** couldn't be found. If you encounter any problems with SANE remove the old" echo "*** SANE files and reinstall this version." fi fi if eval "test x${sysconfdir} = x/usr/etc" ; then echo "*** WARNING: Configuration files are stored in /usr/etc. If this is not" echo "*** intended, use --sysconfdir to set another path (e.g. "/etc")." fi if test "$SELECTED_BACKENDS" != "" ; then echo "*** Warning: Local backends have been disabled. This means that scanners" echo "*** connected to your local computer won't be supported. Only a network" echo "*** connection to a remote host is possible." fi if test "$HAVE_LIBUSB" != "yes" && test "$USE_LIBUSB" = "yes" ; then echo "*** Warning: sane-backends will be built without libusb support. There may" echo "*** be valid reasons to do so, e.g. if you don't use USB scanners or on" echo "*** platforms without libusb support but generally this means that you" echo "*** can't use USB devices with SANE. The most probable cause is that" if test "${ac_cv_header_usb_h}" != "yes"; then echo "*** the libusb header file usb.h is not installed. If you use Linux" echo "*** you may need a package called 'libusb-dev', 'libusb-devel' or similar." else echo "*** libusb is not installed at all or is too old. See README." fi fi echo "****************************************************************" echo "* Please be sure to read file PROBLEMS in this directory *" echo "* BEFORE running any of the SANE applications. Some devices *" echo "* may be damaged by improper operation, so please do heed this *" echo "* advice. *" echo "****************************************************************"