This software is released under the GPL, version 3 (see COPYING.GPL).
-
+Additionally, compiling, linking, and/or using the OpenSSL toolkit in
+conjunction with this software is allowed.
+2013-10-08 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Makefile.am: run sysconftool on authsqliterc, in install-configure.
+ Remove .la files for authentication modules, keep then for actual
+ API libraries. Install them in the -devel RPM package.
+
+ * userdb/Makefile.am: Stub for the pw2userdb(8) man page.
+
+ * courier-authlib.service.in: Added Install target.
+
+0.66
+
+2013-03-02 Eray Aslan <eray.aslan@caf.com.tr>
+
+ * sqlite fixes.
+
+2013-02-24 Lutz Behnke <cypherfox@users.sourceforge.net>
+
+ * authldaplib.c (ldapopen): Added LDAP_INITBIND option.
+
+2013-01-06 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Makefile.am: chmod $(pkglibexecdir) explicitly to 755
+
+2012-10-25 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * courier-authlib.spec.in: Typo.
+
+0.65.0
+
+2012-10-06 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * New authsqlite authentication module.
+
+ * Fixed: when using authpgsql, if the Postgres server goes down
+ authpgsql will then start leaking memory.
+
+ * Fixed error codes returned by several authentication modules that
+ prevent certain combinations of authentication modules from being
+ used together.
+
+0.64.0
+
+2012-04-23 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * authpam.c (callback_pam): Call pam_end() after an authentication
+ attempt.
+
+2011-08-02 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Makefile.am: Renamed authstaticlist.h to courierauthstaticlist.h, and
+ added it to the list of header files that 'make install' puts into
+ includedir.
+
+2011-06-19 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Fix gcc 4.6 warnings
+
+ * courier.spec.in: switch to systemd.
+
+2011-05-25 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Fix autoconf warnings.
+
+2010-03-08 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * courier-authlib.spec: Make rmplint happy.
+
+0.63.1
+
+2010-03-06 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Remove the bundled libtdl library. Require the system-installed
+ libltdl library.
+
+2010-01-31 Brian Costello <dolemite@gmail.com>
+
+ * authmysqllib.c (auth_mysql_setpass): Fix crash if DEFAULT_DOMAIN
+ is not set in the config file.
+
0.63.0
2009-12-17 Sam Varshavchik <mrsam@courier-mta.com>
In this document (see INSTALL.html for the formatted version of this
INSTALL file):
- * [1]Requirements
- * [2]Installation overview
- * [3]Dependencies
- * [4]What gets installed
- * [5]For more information
- * [6]Starting and stopping the authentication daemon
- * [7]Building RPMs
- * [8]Guidelines for using other package managers
+ * [1]Requirements
+ * [2]Installation overview
+ * [3]Dependencies
+ * [4]What gets installed
+ * [5]For more information
+ * [6]Starting and stopping the authentication daemon
+ * [7]Building RPMs
+ * [8]Guidelines for using other package managers
Requirements
following software should be installed before building the Courier
authentication library:
- * A modern version of gcc ([9]http://www.gnu.org/software/gcc/)
- * The GNU linker ([10]http://www.gnu.org/software/binutils/)
- * Libtool ([11]http://www.gnu.org/software/libtool/)
- * GNU make ([12]http://www.gnu.org/software/make/)
- * The "expect" command. expect is usually included with most systems.
+ * A modern version of gcc ([9]http://www.gnu.org/software/gcc/)
+ * The GNU linker ([10]http://www.gnu.org/software/binutils/)
+ * Libtool ([11]http://www.gnu.org/software/libtool/). Additional,
+ libtool's libltdl library, and its development files, must be
+ installed. On some platforms this is a separate package. On Fedora,
+ this is the libtool-ltdl-devel package, for example.
+ * GNU make ([12]http://www.gnu.org/software/make/)
+ * The "expect" command. expect is usually included with most systems.
Expect can be downloaded from http://expect.nist.gov/ if it's not
installed on your system. This utility is used to change system login
passwords, by scripting the passwd command. If you do not have expect
However non-system authentication modules (LDAP, PostgreSQL, and
others) will work.
- Courier-authlib uses Libtool to build shared libraries. Libtool is not
- strictly required, but Libtool should be installed unless a good -- a
- very-very good -- reason exists not to. If Libtool is not installed, a
- copy of Libtool in courier-authlib's source will be used. However, this
- may cause problems later down the road, if either another Libtool-using
- package is installed later, or if Libtool itself is installed. Bottom
- line: install Libtool.
+ Courier-authlib uses Libtool to build shared libraries. Libtool must be
+ installed, together with its libltdl library and its header files.
On non-Linux platforms the GNU linker is also required. Courier-authlib's
build script uses some GNU linker-specific options. It's possible to
courier-authlib. Still, try the following before giving up if problems
occur when building this package:
- 1. Install a recent version of the GNU linker
- 2. Install the current version of Libtool
- 3. Install the current version of gcc
+ 1. Install a recent version of the GNU linker
+ 2. Install the current version of Libtool
+ 3. Install the current version of gcc
Installation overview
of Courier and/or this authentication library. The default userid and
groupid are computed as follows:
- * If an earlier version of the Courier authentication library is already
+ * If an earlier version of the Courier authentication library is already
installed in the same directory, the userid and the groupid is the
same as the earlier version, otherwise:
- * If an earlier version of the Courier package is installed (only the
+ * If an earlier version of the Courier package is installed (only the
Courier package, the Courier-IMAP and SqWebMail packages do not carry
this information), the userid and the groupid is the same as the ones
used to configure Courier, otherwise:
- * The userid is the first userid from the following list which exists in
+ * The userid is the first userid from the following list which exists in
the system: courier, daemon, adm, bin, root; and the groupid is the
first groupid from the following list which exists in the system:
courier, daemon, adm, sys, root.
usually a separate package, that must be installed in addition to the
package that adds alleged support for the following software libraries.
- * GDBM or Berkeley DB library - The userdb authentication module will be
+ * GDBM or Berkeley DB library - The userdb authentication module will be
built if either library is installed. The userdb authentication module
includes Perl scripts that maintain a list of available accounts in
plain text files. A Perl script then compiles the account list into a
binary database, either GDBM or DB, which is then used to look up
account information.
- * OpenLDAP - The LDAP authentication modules requires OpenLDAP client
+ * OpenLDAP - The LDAP authentication modules requires OpenLDAP client
libraries to be installed. Sometimes there's some confusion when
commercial LDAP servers are used, which come with their own
development toolkits, which use a different API than OpenLDAP. Even if
a commercial LDAP server is used to provide LDAP services, OpenLDAP is
still required to enable LDAP services in Courier.
- * MySQL/PostgreSQL - The MySQL and PostgreSQL authentication modules
- require, obviously, MySQL/PostgreSQL development libraries.
+ * MySQL, PostgreSQL, and SQLite - The MySQL, PostgreSQL, and SQLite
+ authentication modules require, obviously, MySQL/PostgreSQL/SQLite
+ development libraries.
What gets installed
- * /usr/local/etc/authlib - the configuration files.
- * /usr/local/sbin - the authdaemond startup script; several utility
+ * /usr/local/etc/authlib - the configuration files.
+ * /usr/local/sbin - the authdaemond startup script; several utility
programs (courierlogger, authconfig, authtest, authenumerate); and
userdb scripts.
- * /usr/local/lib/courier-authlib - various authentication modules, as
+ * /usr/local/lib/courier-authlib - various authentication modules, as
shared libraries.
- * /usr/local/libexec/courier-authlib - some miscellaneous stuff.
- * /usr/local/var/authdaemon - a subdirectory that contains the
+ * /usr/local/libexec/courier-authlib - some miscellaneous stuff.
+ * /usr/local/var/authdaemon - a subdirectory that contains the
filesystem socket which authdaemond listens on.
- * /usr/local/include - a header file that Courier packages will use to
+ * /usr/local/include - a header file that Courier packages will use to
build against courier-authlib.
Toolchain options to the configure script may be used to select
NOTE:
RPM will refuse to build the Courier authentication library unless all
- prerequisite development libraries for LDAP, MySQL, and PostgreSQL are
- installed. Do not try to hack the RPM build script to ignore these
- dependencies! For simplicity's and maintainability sake the RPM build
- script creates all available authentication modules. All extra
+ prerequisite development libraries for LDAP, MySQL, PostgreSQL, and
+ SQLite are installed. Do not try to hack the RPM build script to ignore
+ these dependencies! For simplicity's and maintainability sake the RPM
+ build script creates all available authentication modules. All extra
authentication modules will be built as optional subpackages. They do
- not have to be installed at runtime. Install the LDAP, MySQL, and
- PostgreSQL development libraries only for the duration of building
- binary RPMs. They can be uninstalled afterwards.
+ not have to be installed at runtime. Install the LDAP, MySQL,
+ PostgreSQL, and SQLite development libraries only for the duration of
+ building binary RPMs. They can be uninstalled afterwards.
Guidelines for using other package managers
The recommended way to build packages can be inferred from the RPM build
script. It is summarized here for convenience:
- * Decide whether or not Courier-specific userid and groupid needs to be
+ * Decide whether or not Courier-specific userid and groupid needs to be
created, and, if so, make the necessary arrangements.
- * Ensure that all prerequisite development libraries are available.
- * Run the configure script, run make, then make install as usual.
- * Copy the "sysconftool" script somewhere into the installation tree. A
+ * Ensure that all prerequisite development libraries are available.
+ * Run the configure script, run make, then make install as usual.
+ * Copy the "sysconftool" script somewhere into the installation tree. A
good place would be %libexecdir%/courier-authlib. This is the 'make
install-upgrade' command. Don't run this at build time. Instead,
arrange for the package installation script to run the "sysconftool
%sysconfdir%/authlib/*.dist" after the package is installed OR
UPGRADED.
- * The "authdaemond", "authenumerate", and "authtest" commands can be
+ * The "authdaemond", "authenumerate", and "authtest" commands can be
renamed, to avoid name clashes.
- * Remove all static libraries from %libdir%/courier-authlib.
+ * Remove all static libraries from %libdir%/courier-authlib.
Now, create the installable packages, as follows:
- * %libdir%/courier-authlib/libauthldap* goes into the LDAP subpackage.
- * %libdir%/courier-authlib/libauthmysql* goes into the MySQL subpackage.
- * %libdir%/courier-authlib/libauthpgsql* goes into the PostgreSQL
+ * %libdir%/courier-authlib/libauthldap* goes into the LDAP subpackage.
+ * %libdir%/courier-authlib/libauthmysql* goes into the MySQL subpackage.
+ * %libdir%/courier-authlib/libauthsqlite* goes into the SQLite
subpackage.
- * %libdir%/courier-authlib/libauthuserdb* goes into the userdb
+ * %libdir%/courier-authlib/libauthpgsql* goes into the PostgreSQL
subpackage.
- * Everything else can go into the main package. Optionally, the
+ * %libdir%/courier-authlib/libauthuserdb* goes into the userdb
+ subpackage.
+ * Everything else can go into the main package. Optionally, the
courierauthconfig binary, stuff in %includedir%, and in %mandir%/man3,
can go into a devel subpackage.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content=
- "text/html; charset=utf-8" />
+ "text/html; charset=us-ascii" />
<title>INSTALL</title>
- <meta name="generator" content="Bluefish 1.0.7"/>
- <!-- $Id: INSTALL.html,v 1.8 2008/08/07 22:40:49 mrsam Exp $ -->
- <!-- Copyright 2004 Double Precision, Inc. See COPYING for -->
+ <!-- Copyright 2004-2012 Double Precision, Inc. See COPYING for -->
<!-- distribution information. -->
</head>
"http://www.gnu.org/software/binutils/">http://www.gnu.org/software/binutils/</a>)</li>
<li>Libtool (<a onclick="" href=
- "http://www.gnu.org/software/libtool/">http://www.gnu.org/software/libtool/</a>)</li>
+ "http://www.gnu.org/software/libtool/">http://www.gnu.org/software/libtool/</a>).
+ Additional, libtool's <tt>libltdl</tt> library, and its
+ development files, must be installed. On some platforms this is
+ a separate package. On Fedora, this is the
+ <tt>libtool-ltdl-devel</tt> package, for example.</li>
<li>GNU make (<a onclick="" href=
"http://www.gnu.org/software/make/">http://www.gnu.org/software/make/</a>)</li>
</ul>
<p>Courier-authlib uses Libtool to build shared libraries.
- Libtool is not strictly required, but Libtool should be installed
- unless a good -- a very-very good -- reason exists not to. If
- Libtool is not installed, a copy of Libtool in courier-authlib's
- source will be used. However, this may cause problems later down
- the road, if either another Libtool-using package is installed
- later, or if Libtool itself is installed. Bottom line: install
- Libtool.</p>
+ Libtool must be installed, together with its <tt>libltdl</tt>
+ library and its header files.</p>
<p>On non-Linux platforms the GNU linker is also required.
Courier-authlib's build script uses some GNU linker-specific
is used to provide LDAP services, OpenLDAP is still required to
enable LDAP services in Courier.</li>
- <li><strong>MySQL/PostgreSQL</strong> - The MySQL and
- PostgreSQL authentication modules require, obviously,
- MySQL/PostgreSQL development libraries.<br /></li>
+ <li><strong>MySQL</strong>, <strong>PostgreSQL</strong>, and
+ <strong>SQLite</strong> - The MySQL, PostgreSQL, and SQLite
+ authentication modules require, obviously,
+ MySQL/PostgreSQL/SQLite development libraries.<br /></li>
</ul>
<h2><a name="What" id="What">What gets installed</a></h2>
<p>RPM will refuse to build the Courier authentication library
unless all prerequisite development libraries for LDAP, MySQL,
- and PostgreSQL are installed. <strong>Do not try to hack the
- RPM build script to ignore these dependencies!</strong> For
- simplicity's and maintainability sake the RPM build script
- creates all available authentication modules. All extra
- authentication modules will be built as <em>optional</em>
- subpackages. They do not have to be installed at runtime.
- Install the LDAP, MySQL, and PostgreSQL development libraries
- only for the duration of building binary RPMs. They can be
- uninstalled afterwards.</p>
+ PostgreSQL, and SQLite are installed. <strong>Do not try to
+ hack the RPM build script to ignore these
+ dependencies!</strong> For simplicity's and maintainability
+ sake the RPM build script creates all available authentication
+ modules. All extra authentication modules will be built as
+ <em>optional</em> subpackages. They do not have to be installed
+ at runtime. Install the LDAP, MySQL, PostgreSQL, and SQLite
+ development libraries only for the duration of building binary
+ RPMs. They can be uninstalled afterwards.</p>
</blockquote>
<h2><a name="Guidelines" id="Guidelines">Guidelines for using
<li><code>%libdir%/courier-authlib/libauthmysql*</code> goes
into the MySQL subpackage.</li>
+ <li><code>%libdir%/courier-authlib/libauthsqlite*</code> goes
+ into the SQLite subpackage.</li>
+
<li><code>%libdir%/courier-authlib/libauthpgsql*</code> goes
into the PostgreSQL subpackage.</li>
-# $Id: Makefile.am,v 1.146 2009/12/25 21:53:37 mrsam Exp $
#
# Copyright 1998 - 2009 Double Precision, Inc. See COPYING for
# distribution information.
AUTOMAKE_OPTIONS=dist-bzip2
-SUBDIRS=libltdl gdbmobj bdbobj md5 sha1 libhmac numlib makedat userdb unicode rfc822 random128 liblock liblog
+SUBDIRS=libs/gdbmobj libs/bdbobj libs/md5 libs/sha1 libs/libhmac libs/numlib libs/makedat userdb libs/unicode libs/rfc822 libs/random128 libs/liblock liblog
-INCLUDES = $(LTDLINCL)
+AM_CPPFLAGS=-I liblock $(LTDLINCL)
modules=@LIBAUTHUSERDB@ \
@LIBAUTHPAM@ @LIBAUTHPWD@ @LIBAUTHSHADOW@ \
- @LIBAUTHPGSQL@ @LIBAUTHLDAP@ @LIBAUTHMYSQL@ \
+ @LIBAUTHPGSQL@ @LIBAUTHLDAP@ @LIBAUTHMYSQL@ @LIBAUTHSQLITE@ \
@LIBAUTHCUSTOM@ @LIBAUTHPIPE@
pkglibexecdir=$(libexecdir)/courier-authlib
libauthpgsql.la \
libauthldap.la \
libauthmysql.la \
+ libauthsqlite.la \
libauthcustom.la \
libauthpipe.la
-CLEANFILES=authldaprc.h authmysqlrc.h authdaemonrc.h \
+CLEANFILES=authldaprc.h authmysqlrc.h authsqliterc.h authdaemonrc.h \
authpgsqlrc.h authpiperc.h authdaemon \
authlib.3 authlib.html packageversion.h \
authchangepwdir.h sbindir.h pkglibdir.h pkgincludedir.h \
libcourierauthcommon_t=@CRYPTLIBS@
libcourierauthcommon_la_SOURCES= \
auth.h courierauth.h \
+ authgetconfig.c \
authpwdenumerate.c \
authsaslfrombase64.c authsasltobase64.c \
- authstaticlist.h \
+ courierauthstaticlist.h \
authsyschangepwd.c authsyscommon.c \
authldapescape.c \
cramlib.c cramlib.h \
authmoduser2.c authmoduser3.c debug.c \
courierauthdebug.h \
authoption.c
-libcourierauth_la_LIBADD=libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la numlib/libnumlib.la \
- random128/librandom128.la rfc822/libencode.la
+libcourierauth_la_LIBADD=libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la libs/numlib/libnumlib.la \
+ libs/random128/librandom128.la libs/rfc822/libencode.la
libcourierauth_la_LDFLAGS=@NETLIBS@ -avoid-version
# The userdb module
authmysqlrc.h:
echo "#define AUTHMYSQLRC \"@authmysqlrc@\"" >authmysqlrc.h
+# The authsqlite module
+
+libauthsqlite_t=@SQLITE_LIBS@ @NETLIBS@
+
+libauthsqlite_la_SOURCES=authsqlite.c preauthsqlite.c authsqlitelib.c authsqlite.h
+libauthsqlite_la_DEPENDENCIES=$(commonlibdep)
+libauthsqlite_la_LIBADD=$(commonlibadd) $(libauthsqlite_t)
+libauthsqlite_la_LDFLAGS=$(commonldflags)
+
+authsqlitelib.lo: authsqlitelib.c authsqliterc.h
+
+if HAVE_AUTHSQLITE
+install-authsqliterc:
+ $(mkinstalldirs) $(DESTDIR)`dirname @authsqliterc@` || :
+ $(INSTALL_DATA) -m 660 $(srcdir)/authsqliterc \
+ $(DESTDIR)@authsqliterc@.dist
+ -chown @mailuser@ $(DESTDIR)@authsqliterc@.dist
+ -chgrp @mailgroup@ $(DESTDIR)@authsqliterc@.dist
+
+uninstall-authsqliterc:
+ rm -f $(DESTDIR)@authsqliterc@.dist
+
+else
+install-authsqliterc:
+ @:
+
+uninstall-authsqliterc:
+ @:
+endif
+
+authsqliterc.h:
+ echo "#define AUTHSQLITERC \"@authsqliterc@\"" >authsqliterc.h
+
# The authcustom module
libauthcustom_la_SOURCES=authcustom.c preauthcustom.c authcustom.h
echo "#define AUTHDAEMONLOCK AUTHDAEMONVAR \"/lock\"" >>authdaemonrc.h
HTMLFILES=README.html NEWS.html INSTALL.html \
- README.authmysql.html README.authpostgres.html
+ README.authsqlite.html README.authmysql.html README.authpostgres.html
EXTRA_DIST=$(HTMLFILES) sysconftool COPYING COPYING.GPL\
authldap.schema \
authldap.ldif \
- authldaprc authmysqlrc authpgsqlrc README.ldap \
+ authldaprc authmysqlrc authpgsqlrc authsqliterc README.ldap \
README.authmysql.myownquery \
README.authdebug.html.in \
courier-authlib.spec \
authsasl.c courierauthsasl.h \
authsaslcram.c authsasllogin.c authsaslplain.c \
authsaslfrombase64.c authsasltobase64.c
-libcourierauthsasl_la_LIBADD=libcourierauth.la
-libcourierauthsasl_la_LDFLAGS=-export-symbols-regex '^auth_sasl|auth_sasl_ex$$' -avoid-version
+libcourierauthsasl_la_LIBADD=libcourierauthcommon.la libcourierauth.la
+libcourierauthsasl_la_LDFLAGS=-export-symbols-regex '^auth_sasl|auth_sasl_ex|auth_sasl_extract_userid$$' -avoid-version
libcourierauthsaslclient_la_SOURCES=courierauthsaslclient.h \
authsaslclient.c authsaslclient.h authsaslclientcram.c \
libcourierauthsaslclient_la_LDFLAGS=-export-symbols-regex '^auth_sasl_client$$' -avoid-version
include_HEADERS=courier_auth_config.h courierauth.h courierauthsasl.h \
- courierauthsaslclient.h courierauthdebug.h
+ courierauthsaslclient.h courierauthdebug.h courierauthstaticlist.h
courierauthconfig_SOURCES=authinfo.c
authpasswd_SOURCES=authpasswd.c
authpasswd_LDADD=libcourierauthcommon.la \
- libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la rfc822/libencode.la
+ libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la libs/rfc822/libencode.la
authtest_SOURCES=authtest.c
authtest_DEPENDENCIES=libcourierauth.la
authenumerate_SOURCES=authenumerate.c
authenumerate_DEPENDENCIES = libcourierauth.la \
- numlib/libnumlib.la
+ libs/numlib/libnumlib.la
authenumerate_LDADD = libcourierauth.la \
- numlib/libnumlib.la
+ libs/numlib/libnumlib.la
authenumerate_LDFLAGS=
#
authdaemondprog_SOURCES=authdaemond.c
authdaemondprog_DEPENDENCIES=libcourierauthcommon.la \
- liblock/liblock.la $(modules) \
- libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la \
- rfc822/libencode.la numlib/libnumlib.la
-authdaemondprog_LDADD=$(LIBLTDL) libcourierauthcommon.la liblock/liblock.la \
- libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la \
- rfc822/libencode.la numlib/libnumlib.la
+ libs/liblock/liblock.la $(modules) \
+ libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la \
+ libs/rfc822/libencode.la libs/numlib/libnumlib.la
+authdaemondprog_LDADD=$(LIBLTDL) libcourierauthcommon.la libs/liblock/liblock.la \
+ libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la \
+ libs/rfc822/libencode.la libs/numlib/libnumlib.la
authdaemondprog_LDFLAGS=-export-dynamic $(modules:%=-dlopen %) @NETLIBS@
authdaemontest_SOURCES=authdaemontest.c
# automake still a bit stupid...
install-data-hook: install-authdaemonrc install-authpgsqlrc \
- install-authldaprc install-authmysqlrc
+ install-authldaprc install-authmysqlrc install-authsqliterc
:
install-exec-hook:
$(mkinstalldirs) $(DESTDIR)$(bindir) || :
$(mkinstalldirs) $(DESTDIR)$(sbindir) || :
$(mkinstalldirs) $(DESTDIR)$(pkglibexecdir) || :
+ chmod 755 $(DESTDIR)$(pkglibexecdir)
+ -chown @mailuser@ $(DESTDIR)$(pkglibexecdir)
+ -chgrp @mailgroup@ $(DESTDIR)$(pkglibexecdir)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) authdaemondprog $(DESTDIR)$(pkglibexecdir)/authdaemond
$(mkinstalldirs) $(DESTDIR)@authdaemonvar@ || :
chmod 750 $(DESTDIR)@authdaemonvar@
-chown @mailuser@ $(DESTDIR)@authdaemonvar@
-chgrp @mailgroup@ $(DESTDIR)@authdaemonvar@
test "@LIBAUTHUSERDB@" = "" && exit 0 ;\
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) makedat/makedatprog \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) libs/makedat/makedatprog \
$(DESTDIR)$(pkglibexecdir)/makedatprog ; \
$(INSTALL_SCRIPT) userdb/pw2userdb \
$(DESTDIR)$(sbindir)/pw2userdb ; \
$(DESTDIR)$(sbindir)/userdbpw ; \
$(INSTALL_SCRIPT) userdb-test-cram-md5.pl \
$(DESTDIR)$(sbindir)/userdb-test-cram-md5
- for f in $(pkglib_LTLIBRARIES); do . ./$$f; rm -f $(DESTDIR)$(pkglibdir)/$$dlname.0 $(DESTDIR)$(pkglibdir)/$$dlname.0.0; ln -s $$dlname $(DESTDIR)$(pkglibdir)/$$dlname.0; done
-
-uninstall-hook: uninstall-authldaprc uninstall-authdaemonrc uninstall-authmysqlrc uninstall-authpgsqlrc
+uninstall-hook: uninstall-authldaprc uninstall-authdaemonrc uninstall-authmysqlrc uninstall-authpgsqlrc uninstall-authsqliterc
rm -f $(DESTDIR)$(pkglibexecdir)/authdaemond
test "@AUTHUSERDB@" = "" && exit 0 ;\
rm -f $(DESTDIR)$(pkglibexecdir)/makedatprog \
$(DESTDIR)$(sbindir)/userdb \
$(DESTDIR)$(sbindir)/userdbpw \
$(DESTDIR)$(sbindir)/userdb-test-cram-md5
- for f in $(pkglib_LTLIBRARIES); do . ./$$f; rm -f $(DESTDIR)$(pkglibdir)/$$dlname.0; done
authlib.html: authlib.html.in
$(SHELL) ./config.status --file=authlib.html
$(SHELL) ./config.status --file=authlib.3
if HAVE_SGML
-authpasswd.html: authpasswd.sgml docbook/sgml2html
- docbook/sgml2html authpasswd.sgml authpasswd.html
+authpasswd.html: authpasswd.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html authpasswd.sgml authpasswd.html
-authpasswd.1: authpasswd.sgml docbook/sgml2man
- docbook/sgml2man authpasswd.sgml authpasswd.1
+authpasswd.1: authpasswd.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man authpasswd.sgml authpasswd.1
-authtest.html: authtest.sgml docbook/sgml2html
- docbook/sgml2html authtest.sgml authtest.html
+authtest.html: authtest.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html authtest.sgml authtest.html
-authtest.1: authtest.sgml docbook/sgml2man
- docbook/sgml2man authtest.sgml authtest.1
+authtest.1: authtest.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man authtest.sgml authtest.1
-authlib.html.in: authlib.sgml docbook/sgml2html
- docbook/sgml2html authlib.sgml authlib.html.in
+authlib.html.in: authlib.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html authlib.sgml authlib.html.in
-authlib.3.in: authlib.sgml docbook/sgml2man
- docbook/sgml2man authlib.sgml authlib.3.in
+authlib.3.in: authlib.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man authlib.sgml authlib.3.in
mv authlib.3 authlib.3.in
-README_authlib.html.in: README_authlib.sgml docbook/sgml2html
- docbook/sgml2html README_authlib.sgml README_authlib.html.in
+README_authlib.html.in: README_authlib.sgml optionlist.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html README_authlib.sgml README_authlib.html.in
-auth_generic.html: auth_generic.sgml authcallback.sgml docbook/sgml2html
- docbook/sgml2html auth_generic.sgml auth_generic.html
+auth_generic.html: auth_generic.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html auth_generic.sgml auth_generic.html
-auth_generic.3: auth_generic.sgml authcallback.sgml docbook/sgml2man
- docbook/sgml2man auth_generic.sgml auth_generic.3
+auth_generic.3: auth_generic.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man auth_generic.sgml auth_generic.3
-auth_login.html: auth_login.sgml authcallback.sgml docbook/sgml2html
- docbook/sgml2html auth_login.sgml auth_login.html
+auth_login.html: auth_login.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html auth_login.sgml auth_login.html
-auth_login.3: auth_login.sgml authcallback.sgml docbook/sgml2man
- docbook/sgml2man auth_login.sgml auth_login.3
+auth_login.3: auth_login.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man auth_login.sgml auth_login.3
-auth_getuserinfo.html: auth_getuserinfo.sgml authcallback.sgml docbook/sgml2html
- docbook/sgml2html auth_getuserinfo.sgml auth_getuserinfo.html
+auth_getuserinfo.html: auth_getuserinfo.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html auth_getuserinfo.sgml auth_getuserinfo.html
-auth_getuserinfo.3: auth_getuserinfo.sgml authcallback.sgml docbook/sgml2man
- docbook/sgml2man auth_getuserinfo.sgml auth_getuserinfo.3
+auth_getuserinfo.3: auth_getuserinfo.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man auth_getuserinfo.sgml auth_getuserinfo.3
-auth_enumerate.html: auth_enumerate.sgml docbook/sgml2html
- docbook/sgml2html auth_enumerate.sgml auth_enumerate.html
+auth_enumerate.html: auth_enumerate.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html auth_enumerate.sgml auth_enumerate.html
-auth_enumerate.3: auth_enumerate.sgml docbook/sgml2man
- docbook/sgml2man auth_enumerate.sgml auth_enumerate.3
+auth_enumerate.3: auth_enumerate.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man auth_enumerate.sgml auth_enumerate.3
-auth_passwd.html: auth_passwd.sgml docbook/sgml2html
- docbook/sgml2html auth_passwd.sgml auth_passwd.html
+auth_passwd.html: auth_passwd.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html auth_passwd.sgml auth_passwd.html
-auth_passwd.3: auth_passwd.sgml docbook/sgml2man
- docbook/sgml2man auth_passwd.sgml auth_passwd.3
+auth_passwd.3: auth_passwd.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man auth_passwd.sgml auth_passwd.3
-auth_getoption.html: auth_getoption.sgml docbook/sgml2html
- docbook/sgml2html auth_getoption.sgml auth_getoption.html
+auth_getoption.html: auth_getoption.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html auth_getoption.sgml auth_getoption.html
-auth_getoption.3: auth_getoption.sgml docbook/sgml2man
- docbook/sgml2man auth_getoption.sgml auth_getoption.3
+auth_getoption.3: auth_getoption.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man auth_getoption.sgml auth_getoption.3
-auth_sasl.html: auth_sasl.sgml docbook/sgml2html
- docbook/sgml2html auth_sasl.sgml auth_sasl.html
+auth_sasl.html: auth_sasl.sgml libs/docbook/sgml2html
+ libs/docbook/sgml2html auth_sasl.sgml auth_sasl.html
-auth_sasl.3: auth_sasl.sgml docbook/sgml2man
- docbook/sgml2man auth_sasl.sgml auth_sasl.3
+auth_sasl.3: auth_sasl.sgml libs/docbook/sgml2man
+ libs/docbook/sgml2man auth_sasl.sgml auth_sasl.3
auth_sasl_ex.3: auth_sasl.3
touch $@
test -f $(DESTDIR)@authmysqlrc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authmysqlrc@.dist || true
test -f $(DESTDIR)@authpgsqlrc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authpgsqlrc@.dist || true
test -f $(DESTDIR)@authldaprc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authldaprc@.dist || true
+ test -f $(DESTDIR)@authsqliterc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authsqliterc@.dist || true
# For maintainer's use only
distrelease:
umask 022; $(MAKE) distcheck
$(MAKE) rpm
- socksify cvs commit
- socksify cvs tag -F @PACKAGE@-latest
$(MAKE)
$(MAKE)
rm -f @PACKAGE@.spec @PACKAGE@.lpspec
$(MAKE) @PACKAGE@.spec @PACKAGE@.lpspec
$(MAKE) dist
-tagrelease:
- socksify cvs tag -F -r @PACKAGE@-latest \
- `echo @PACKAGE@-@VERSION@ | tr '.' '-'`
-
rpm: rpm-build
rpm-build:
test -z "$(SFPASSWD)" && exit 1; exit 0
rm -f @PACKAGE@-@VERSION@.tar.bz2.sig; gpg --detach-sign --default-key mrsam@courier-mta.com @PACKAGE@-@VERSION@.tar.bz2; test -f @PACKAGE@-@VERSION@.tar.bz2.sig || exit 1
socksify ssh grace.speakeasy.net echo @PACKAGE@-@VERSION@.tar.bz2 `ls -l @PACKAGE@-@VERSION@.tar.bz2 | awk ' { print $$5 } '` \>courier-mta.org/@PACKAGE@.beta
- ../sftools/release.pl mrsam $(SFPASSWD) courier authlib-devel `echo @VERSION@|sed 's/.*\(........\)/\1/'` @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
+ ~/src/sftools/release.pl mrsam $(SFPASSWD) courier authlib-devel `echo @VERSION@|sed 's/.*\(........\)/\1/'` @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
upload-dist:
- rm -f @PACKAGE@-@VERSION@.tar.bz2.sig; gpg --detach-sign --default-key mrsam@courier-mta.com @PACKAGE@-@VERSION@.tar.bz2; test -f @PACKAGE@-@VERSION@.tar.bz2.sig || exit 1
- socksify cvs tag -F -r @PACKAGE@-latest \
- `echo @PACKAGE@-@VERSION@ | tr '.' '-'`
- socksify ../sftools/release.pl mrsam $(SFPASSWD) courier authlib @VERSION@ @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
- socksify ssh grace.speakeasy.net rm -f courier-mta.org/@PACKAGE@.beta
-
-release-dist:
test -z "$(SFPASSWD)" && exit 1; exit 0
- ./changelog.pl >changelog.txt
- emacs releasenotes.txt
- test -f releasenotes.txt || exit 1
- socksify ../sftools/release.pl mrsam $(SFPASSWD) courier authlib @VERSION@ releasenotes.txt changelog.txt @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
- socksify ssh grace.speakeasy.net rm -f courier-mta.org/@PACKAGE@.beta
+ rm -f @PACKAGE@-@VERSION@.tar.bz2.sig; gpg --detach-sign --default-key mrsam@courier-mta.com @PACKAGE@-@VERSION@.tar.bz2; test -f @PACKAGE@-@VERSION@.tar.bz2.sig || exit 1
+ set -e; v="@PACKAGE@/@VERSION@/`date +%Y%m%d%H%M%S`"; git tag -s $$v -m 'Tag version @VERSION@'; cd libs; git tag -s $$v -m 'Tag version @VERSION@'
+ socksify ~/src/sftools/release.pl mrsam $(SFPASSWD) courier authlib @VERSION@ @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
HTMLDOCFILES=$(HTMLFILES) README.authdebug.html README_authlib.html \
- $(man3:%.3=%.html) $(man1:%.1=%.html)
+ $(man3:%.3=%.html) $(man1:%.1=%.html) userdb/userdb.html userdb/makeuserdb.html userdb/userdbpw.html
htmldoc: $(HTMLDOCFILES)
- for f in $^; do d=`basename $$f`; test "$$d" = "README.html" && d="index2.html"; tidy -i -q --tidy-mark no --doctype transitional --input-encoding utf8 --output-encoding utf8 -asxml <$$f >$$f.tmp ; xsltproc --nonet $$HOME/www/www.courier-mta.org/xsl/authlib.xsl $$f.tmp | perl -ne 's~\$(id):.*\$$~\$(id):'"$$h"'\$$~; print' >html/$$d; rm -f $$f.tmp; done
+ for f in $^; do d=`basename $$f`; test "$$d" = "README.html" && d="index.html"; tidy -i -q --tidy-mark no --doctype transitional --input-encoding utf8 --output-encoding utf8 -asxml <$$f >$$f.tmp ; xsltproc --nonet $$HOME/www/www.courier-mta.org/xsl/authlib.xsl $$f.tmp | perl -ne 's~\$(id):.*\$$~\$(id):'"$$h"'\$$~; print' >$$HOME/www/www.courier-mta.org/authlib/$$d; rm -f $$f.tmp; done
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
-# $Id: Makefile.am,v 1.146 2009/12/25 21:53:37 mrsam Exp $
#
# Copyright 1998 - 2009 Double Precision, Inc. See COPYING for
# distribution information.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
noinst_PROGRAMS = authdaemontest$(EXEEXT) authmksock$(EXEEXT) \
authdaemondprog$(EXEEXT)
subdir = .
-DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/README.authdebug.html.in $(srcdir)/authdaemond.in \
- $(srcdir)/authdaemonrc.in $(srcdir)/authmigrate.in \
- $(srcdir)/authsystem.passwd.in \
- $(srcdir)/courier-authlib.lpspec.in \
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) \
+ $(srcdir)/courier_auth_config.h.in $(srcdir)/authdaemond.in \
+ $(srcdir)/authdaemonrc.in $(srcdir)/authsystem.passwd.in \
+ $(srcdir)/README.authdebug.html.in $(srcdir)/dbobj.config.in \
+ $(srcdir)/dbobj.h.in $(srcdir)/authmigrate.in \
$(srcdir)/courier-authlib.spec.in \
+ $(srcdir)/courier-authlib.lpspec.in \
$(srcdir)/courier-authlib.sysvinit.in \
- $(srcdir)/courier_auth_config.h.in $(srcdir)/dbobj.config.in \
- $(srcdir)/dbobj.h.in $(srcdir)/userdb-test-cram-md5.pl.in \
- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
- config.guess config.sub depcomp install-sh ltmain.sh missing
+ $(srcdir)/courier-authlib.service.in \
+ $(srcdir)/userdb-test-cram-md5.pl.in depcomp \
+ $(include_HEADERS) AUTHORS COPYING ChangeLog INSTALL NEWS \
+ README config.guess config.sub install-sh missing ltmain.sh
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
CONFIG_CLEAN_FILES = authdaemond authdaemonrc authsystem.passwd \
README.authdebug.html dbobj.config dbobj.h authmigrate \
courier-authlib.spec courier-authlib.lpspec \
- courier-authlib.sysvinit userdb-test-cram-md5.pl
+ courier-authlib.sysvinit courier-authlib.service \
+ userdb-test-cram-md5.pl
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(sbindir)" "$(DESTDIR)$(pkglibexecdir)" \
"$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man1dir)" \
LTLIBRARIES = $(pkglib_LTLIBRARIES)
am_libauthcustom_la_OBJECTS = authcustom.lo preauthcustom.lo
libauthcustom_la_OBJECTS = $(am_libauthcustom_la_OBJECTS)
-libauthcustom_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libauthcustom_la_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+libauthcustom_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthcustom_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
am__DEPENDENCIES_1 =
am_libauthldap_la_OBJECTS = authldap.lo preauthldap.lo authldaplib.lo
libauthldap_la_OBJECTS = $(am_libauthldap_la_OBJECTS)
-libauthldap_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libauthldap_la_LDFLAGS) $(LDFLAGS) -o $@
+libauthldap_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthldap_la_LDFLAGS) $(LDFLAGS) -o \
+ $@
am_libauthmysql_la_OBJECTS = authmysql.lo preauthmysql.lo \
authmysqllib.lo
libauthmysql_la_OBJECTS = $(am_libauthmysql_la_OBJECTS)
-libauthmysql_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libauthmysql_la_LDFLAGS) $(LDFLAGS) -o $@
+libauthmysql_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthmysql_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
am_libauthpam_la_OBJECTS = authpam.lo preauthpam.lo
libauthpam_la_OBJECTS = $(am_libauthpam_la_OBJECTS)
-libauthpam_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+libauthpam_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libauthpam_la_LDFLAGS) $(LDFLAGS) -o $@
am_libauthpgsql_la_OBJECTS = authpgsql.lo preauthpgsql.lo \
authpgsqllib.lo
libauthpgsql_la_OBJECTS = $(am_libauthpgsql_la_OBJECTS)
-libauthpgsql_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libauthpgsql_la_LDFLAGS) $(LDFLAGS) -o $@
+libauthpgsql_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthpgsql_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
am_libauthpipe_la_OBJECTS = authpipe.lo authpipelib.lo
libauthpipe_la_OBJECTS = $(am_libauthpipe_la_OBJECTS)
-libauthpipe_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libauthpipe_la_LDFLAGS) $(LDFLAGS) -o $@
+libauthpipe_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthpipe_la_LDFLAGS) $(LDFLAGS) -o \
+ $@
am_libauthpwd_la_OBJECTS = authpwd.lo preauthpwd.lo
libauthpwd_la_OBJECTS = $(am_libauthpwd_la_OBJECTS)
-libauthpwd_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+libauthpwd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libauthpwd_la_LDFLAGS) $(LDFLAGS) -o $@
am_libauthshadow_la_OBJECTS = authshadow.lo preauthshadow.lo
libauthshadow_la_OBJECTS = $(am_libauthshadow_la_OBJECTS)
-libauthshadow_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libauthshadow_la_LDFLAGS) $(LDFLAGS) -o $@
+libauthshadow_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthshadow_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+am_libauthsqlite_la_OBJECTS = authsqlite.lo preauthsqlite.lo \
+ authsqlitelib.lo
+libauthsqlite_la_OBJECTS = $(am_libauthsqlite_la_OBJECTS)
+libauthsqlite_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthsqlite_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
am__DEPENDENCIES_2 = userdb/libuserdb.la
am_libauthuserdb_la_OBJECTS = authuserdb.lo preauthuserdb.lo \
preauthuserdbcommon.lo authuserdbpwd.lo
libauthuserdb_la_OBJECTS = $(am_libauthuserdb_la_OBJECTS)
-libauthuserdb_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libauthuserdb_la_LDFLAGS) $(LDFLAGS) -o $@
-libcourierauth_la_DEPENDENCIES = libhmac/libhmac.la md5/libmd5.la \
- sha1/libsha1.la numlib/libnumlib.la random128/librandom128.la \
- rfc822/libencode.la
+libauthuserdb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libauthuserdb_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+libcourierauth_la_DEPENDENCIES = libs/libhmac/libhmac.la \
+ libs/md5/libmd5.la libs/sha1/libsha1.la \
+ libs/numlib/libnumlib.la libs/random128/librandom128.la \
+ libs/rfc822/libencode.la
am_libcourierauth_la_OBJECTS = authdaemon.lo authdaemonlib.lo \
preauthdaemon.lo authmoduser2.lo authmoduser3.lo debug.lo \
authoption.lo
libcourierauth_la_OBJECTS = $(am_libcourierauth_la_OBJECTS)
-libcourierauth_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libcourierauth_la_LDFLAGS) $(LDFLAGS) -o $@
-am_libcourierauthcommon_la_OBJECTS = authpwdenumerate.lo \
- authsaslfrombase64.lo authsasltobase64.lo authsyschangepwd.lo \
- authsyscommon.lo authldapescape.lo cramlib.lo checkpassword.lo \
- cryptpassword.lo checkpasswordmd5.lo checkpasswordsha1.lo
+libcourierauth_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libcourierauth_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+am_libcourierauthcommon_la_OBJECTS = authgetconfig.lo \
+ authpwdenumerate.lo authsaslfrombase64.lo authsasltobase64.lo \
+ authsyschangepwd.lo authsyscommon.lo authldapescape.lo \
+ cramlib.lo checkpassword.lo cryptpassword.lo \
+ checkpasswordmd5.lo checkpasswordsha1.lo
libcourierauthcommon_la_OBJECTS = \
$(am_libcourierauthcommon_la_OBJECTS)
-libcourierauthcommon_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libcourierauthcommon_la_LDFLAGS) $(LDFLAGS) -o $@
-libcourierauthsasl_la_DEPENDENCIES = libcourierauth.la
+libcourierauthcommon_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libcourierauthcommon_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+libcourierauthsasl_la_DEPENDENCIES = libcourierauthcommon.la \
+ libcourierauth.la
am_libcourierauthsasl_la_OBJECTS = authsasl.lo authsaslcram.lo \
authsasllogin.lo authsaslplain.lo authsaslfrombase64.lo \
authsasltobase64.lo
libcourierauthsasl_la_OBJECTS = $(am_libcourierauthsasl_la_OBJECTS)
-libcourierauthsasl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libcourierauthsasl_la_LDFLAGS) $(LDFLAGS) -o $@
+libcourierauthsasl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libcourierauthsasl_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
libcourierauthsaslclient_la_DEPENDENCIES = libcourierauth.la
am_libcourierauthsaslclient_la_OBJECTS = authsaslclient.lo \
authsaslclientcram.lo authsaslclientcrammd5.lo \
authsaslfrombase64.lo authsasltobase64.lo
libcourierauthsaslclient_la_OBJECTS = \
$(am_libcourierauthsaslclient_la_OBJECTS)
-libcourierauthsaslclient_la_LINK = $(LIBTOOL) --tag=CC \
+libcourierauthsaslclient_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(AM_CFLAGS) $(CFLAGS) $(libcourierauthsaslclient_la_LDFLAGS) \
$(LDFLAGS) -o $@
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) $(sbin_PROGRAMS)
am_authdaemondprog_OBJECTS = authdaemond.$(OBJEXT)
authdaemondprog_OBJECTS = $(am_authdaemondprog_OBJECTS)
-authdaemondprog_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(authdaemondprog_LDFLAGS) $(LDFLAGS) -o $@
+authdaemondprog_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(authdaemondprog_LDFLAGS) $(LDFLAGS) \
+ -o $@
am_authdaemontest_OBJECTS = authdaemontest.$(OBJEXT)
authdaemontest_OBJECTS = $(am_authdaemontest_OBJECTS)
-authdaemontest_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(authdaemontest_LDFLAGS) $(LDFLAGS) -o $@
+authdaemontest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(authdaemontest_LDFLAGS) $(LDFLAGS) -o \
+ $@
am_authenumerate_OBJECTS = authenumerate.$(OBJEXT)
authenumerate_OBJECTS = $(am_authenumerate_OBJECTS)
-authenumerate_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+authenumerate_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(authenumerate_LDFLAGS) $(LDFLAGS) -o $@
am_authmksock_OBJECTS = authmksock.$(OBJEXT)
authmksock_DEPENDENCIES =
am_authpasswd_OBJECTS = authpasswd.$(OBJEXT)
authpasswd_OBJECTS = $(am_authpasswd_OBJECTS)
-authpasswd_DEPENDENCIES = libcourierauthcommon.la libhmac/libhmac.la \
- md5/libmd5.la sha1/libsha1.la rfc822/libencode.la
+authpasswd_DEPENDENCIES = libcourierauthcommon.la \
+ libs/libhmac/libhmac.la libs/md5/libmd5.la \
+ libs/sha1/libsha1.la libs/rfc822/libencode.la
am_authtest_OBJECTS = authtest.$(OBJEXT)
authtest_OBJECTS = $(am_authtest_OBJECTS)
am_courierauthconfig_OBJECTS = authinfo.$(OBJEXT)
courierauthconfig_OBJECTS = $(am_courierauthconfig_OBJECTS)
courierauthconfig_LDADD = $(LDADD)
SCRIPTS = $(pkglibexec_SCRIPTS) $(sbin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libauthcustom_la_SOURCES) $(libauthldap_la_SOURCES) \
$(libauthmysql_la_SOURCES) $(libauthpam_la_SOURCES) \
$(libauthpgsql_la_SOURCES) $(libauthpipe_la_SOURCES) \
$(libauthpwd_la_SOURCES) $(libauthshadow_la_SOURCES) \
- $(libauthuserdb_la_SOURCES) $(libcourierauth_la_SOURCES) \
+ $(libauthsqlite_la_SOURCES) $(libauthuserdb_la_SOURCES) \
+ $(libcourierauth_la_SOURCES) \
$(libcourierauthcommon_la_SOURCES) \
$(libcourierauthsasl_la_SOURCES) \
$(libcourierauthsaslclient_la_SOURCES) \
$(libauthmysql_la_SOURCES) $(libauthpam_la_SOURCES) \
$(libauthpgsql_la_SOURCES) $(libauthpipe_la_SOURCES) \
$(libauthpwd_la_SOURCES) $(libauthshadow_la_SOURCES) \
- $(libauthuserdb_la_SOURCES) $(libcourierauth_la_SOURCES) \
+ $(libauthsqlite_la_SOURCES) $(libauthuserdb_la_SOURCES) \
+ $(libcourierauth_la_SOURCES) \
$(libcourierauthcommon_la_SOURCES) \
$(libcourierauthsasl_la_SOURCES) \
$(libcourierauthsaslclient_la_SOURCES) \
$(authenumerate_SOURCES) $(authmksock_SOURCES) \
$(authpasswd_SOURCES) $(authtest_SOURCES) \
$(courierauthconfig_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
man1dir = $(mandir)/man1
man3dir = $(mandir)/man3
NROFF = nroff
HEADERS = $(include_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)courier_auth_config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
GZIP_ENV = --best
+DIST_TARGETS = dist-bzip2 dist-gzip
distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
pkglibexecdir = $(libexecdir)/courier-authlib
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
ARGZ_H = @ARGZ_H@
AUTHPAMCRYPT = @AUTHPAMCRYPT@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
LIBAUTHPIPE = @LIBAUTHPIPE@
LIBAUTHPWD = @LIBAUTHPWD@
LIBAUTHSHADOW = @LIBAUTHSHADOW@
+LIBAUTHSQLITE = @LIBAUTHSQLITE@
LIBAUTHUSERDB = @LIBAUTHUSERDB@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
LT_DLLOADERS = @LT_DLLOADERS@
LT_DLPREOPEN = @LT_DLPREOPEN@
MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MYSQL_CONFIG = @MYSQL_CONFIG@
MYSQL_LIBS = @MYSQL_LIBS@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PASSWD = @PASSWD@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHADOWLIBS = @SHADOWLIBS@
SHELL = @SHELL@
+SQLITE_LIBS = @SQLITE_LIBS@
STRIP = @STRIP@
SYSCONFTOOL = @SYSCONFTOOL@
SYSCONFTOOL_PERL = @SYSCONFTOOL_PERL@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
authldaprc = @authldaprc@
authmysqlrc = @authmysqlrc@
authpgsqlrc = @authpgsqlrc@
+authsqliterc = @authsqliterc@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
ltdl_LIBOBJS = @ltdl_LIBOBJS@
ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
mailgroup = @mailgroup@
top_srcdir = @top_srcdir@
userdb = @userdb@
AUTOMAKE_OPTIONS = dist-bzip2
-SUBDIRS = libltdl gdbmobj bdbobj md5 sha1 libhmac numlib makedat userdb unicode rfc822 random128 liblock liblog
-INCLUDES = $(LTDLINCL)
+SUBDIRS = libs/gdbmobj libs/bdbobj libs/md5 libs/sha1 libs/libhmac libs/numlib libs/makedat userdb libs/unicode libs/rfc822 libs/random128 libs/liblock liblog
+AM_CPPFLAGS = -I liblock $(LTDLINCL)
modules = @LIBAUTHUSERDB@ \
@LIBAUTHPAM@ @LIBAUTHPWD@ @LIBAUTHSHADOW@ \
- @LIBAUTHPGSQL@ @LIBAUTHLDAP@ @LIBAUTHMYSQL@ \
+ @LIBAUTHPGSQL@ @LIBAUTHLDAP@ @LIBAUTHMYSQL@ @LIBAUTHSQLITE@ \
@LIBAUTHCUSTOM@ @LIBAUTHPIPE@
pkglibexec_SCRIPTS = authsystem.passwd
libauthpgsql.la \
libauthldap.la \
libauthmysql.la \
+ libauthsqlite.la \
libauthcustom.la \
libauthpipe.la
-CLEANFILES = authldaprc.h authmysqlrc.h authdaemonrc.h \
+CLEANFILES = authldaprc.h authmysqlrc.h authsqliterc.h authdaemonrc.h \
authpgsqlrc.h authpiperc.h authdaemon \
authlib.3 authlib.html packageversion.h \
authchangepwdir.h sbindir.h pkglibdir.h pkgincludedir.h \
libcourierauthcommon_t = @CRYPTLIBS@
libcourierauthcommon_la_SOURCES = \
auth.h courierauth.h \
+ authgetconfig.c \
authpwdenumerate.c \
authsaslfrombase64.c authsasltobase64.c \
- authstaticlist.h \
+ courierauthstaticlist.h \
authsyschangepwd.c authsyscommon.c \
authldapescape.c \
cramlib.c cramlib.h \
courierauthdebug.h \
authoption.c
-libcourierauth_la_LIBADD = libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la numlib/libnumlib.la \
- random128/librandom128.la rfc822/libencode.la
+libcourierauth_la_LIBADD = libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la libs/numlib/libnumlib.la \
+ libs/random128/librandom128.la libs/rfc822/libencode.la
libcourierauth_la_LDFLAGS = @NETLIBS@ -avoid-version
libauthmysql_la_LIBADD = $(commonlibadd) $(libauthmysql_t)
libauthmysql_la_LDFLAGS = $(commonldflags)
+# The authsqlite module
+libauthsqlite_t = @SQLITE_LIBS@ @NETLIBS@
+libauthsqlite_la_SOURCES = authsqlite.c preauthsqlite.c authsqlitelib.c authsqlite.h
+libauthsqlite_la_DEPENDENCIES = $(commonlibdep)
+libauthsqlite_la_LIBADD = $(commonlibadd) $(libauthsqlite_t)
+libauthsqlite_la_LDFLAGS = $(commonldflags)
+
# The authcustom module
libauthcustom_la_SOURCES = authcustom.c preauthcustom.c authcustom.h
libauthcustom_la_DEPENDENCIES = $(commonlibdep)
libauthpipe_la_LIBADD = $(commonlibadd)
libauthpipe_la_LDFLAGS = $(commonldflags)
HTMLFILES = README.html NEWS.html INSTALL.html \
- README.authmysql.html README.authpostgres.html
+ README.authsqlite.html README.authmysql.html README.authpostgres.html
EXTRA_DIST = $(HTMLFILES) sysconftool COPYING COPYING.GPL\
authldap.schema \
authldap.ldif \
- authldaprc authmysqlrc authpgsqlrc README.ldap \
+ authldaprc authmysqlrc authpgsqlrc authsqliterc README.ldap \
README.authmysql.myownquery \
README.authdebug.html.in \
courier-authlib.spec \
authsaslcram.c authsasllogin.c authsaslplain.c \
authsaslfrombase64.c authsasltobase64.c
-libcourierauthsasl_la_LIBADD = libcourierauth.la
-libcourierauthsasl_la_LDFLAGS = -export-symbols-regex '^auth_sasl|auth_sasl_ex$$' -avoid-version
+libcourierauthsasl_la_LIBADD = libcourierauthcommon.la libcourierauth.la
+libcourierauthsasl_la_LDFLAGS = -export-symbols-regex '^auth_sasl|auth_sasl_ex|auth_sasl_extract_userid$$' -avoid-version
libcourierauthsaslclient_la_SOURCES = courierauthsaslclient.h \
authsaslclient.c authsaslclient.h authsaslclientcram.c \
authsaslclientcrammd5.c authsaslclientcramsha1.c \
libcourierauthsaslclient_la_LIBADD = libcourierauth.la
libcourierauthsaslclient_la_LDFLAGS = -export-symbols-regex '^auth_sasl_client$$' -avoid-version
include_HEADERS = courier_auth_config.h courierauth.h courierauthsasl.h \
- courierauthsaslclient.h courierauthdebug.h
+ courierauthsaslclient.h courierauthdebug.h courierauthstaticlist.h
courierauthconfig_SOURCES = authinfo.c
authpasswd_SOURCES = authpasswd.c
authpasswd_LDADD = libcourierauthcommon.la \
- libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la rfc822/libencode.la
+ libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la libs/rfc822/libencode.la
authtest_SOURCES = authtest.c
authtest_DEPENDENCIES = libcourierauth.la
authtest_LDADD = libcourierauth.la
authenumerate_SOURCES = authenumerate.c
authenumerate_DEPENDENCIES = libcourierauth.la \
- numlib/libnumlib.la
+ libs/numlib/libnumlib.la
authenumerate_LDADD = libcourierauth.la \
- numlib/libnumlib.la
+ libs/numlib/libnumlib.la
authenumerate_LDFLAGS =
# The main daemon.
authdaemondprog_SOURCES = authdaemond.c
authdaemondprog_DEPENDENCIES = libcourierauthcommon.la \
- liblock/liblock.la $(modules) \
- libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la \
- rfc822/libencode.la numlib/libnumlib.la
+ libs/liblock/liblock.la $(modules) \
+ libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la \
+ libs/rfc822/libencode.la libs/numlib/libnumlib.la
-authdaemondprog_LDADD = $(LIBLTDL) libcourierauthcommon.la liblock/liblock.la \
- libhmac/libhmac.la md5/libmd5.la sha1/libsha1.la \
- rfc822/libencode.la numlib/libnumlib.la
+authdaemondprog_LDADD = $(LIBLTDL) libcourierauthcommon.la libs/liblock/liblock.la \
+ libs/libhmac/libhmac.la libs/md5/libmd5.la libs/sha1/libsha1.la \
+ libs/rfc822/libencode.la libs/numlib/libnumlib.la
authdaemondprog_LDFLAGS = -export-dynamic $(modules:%=-dlopen %) @NETLIBS@
authdaemontest_SOURCES = authdaemontest.c
BUILT_SOURCES = $(BUILT1) $(man3:%.3=%.html) $(man1:%.1=%.html)
noinst_DATA = $(BUILT_SOURCES)
HTMLDOCFILES = $(HTMLFILES) README.authdebug.html README_authlib.html \
- $(man3:%.3=%.html) $(man1:%.1=%.html)
+ $(man3:%.3=%.html) $(man1:%.1=%.html) userdb/userdb.html userdb/makeuserdb.html userdb/userdbpw.html
all: $(BUILT_SOURCES) courier_auth_config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-am--refresh:
+am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu Makefile
+ $(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
$(am__aclocal_m4_deps):
courier_auth_config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
stamp-h1: $(srcdir)/courier_auth_config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status $@
courier-authlib.sysvinit: $(top_builddir)/config.status $(srcdir)/courier-authlib.sysvinit.in
cd $(top_builddir) && $(SHELL) ./config.status $@
+courier-authlib.service: $(top_builddir)/config.status $(srcdir)/courier-authlib.service.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
userdb-test-cram-md5.pl: $(top_builddir)/config.status $(srcdir)/userdb-test-cram-md5.pl.in
cd $(top_builddir) && $(SHELL) ./config.status $@
+
install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
@list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
else :; fi; \
done; \
test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
}
clean-pkglibLTLIBRARIES:
-test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
- @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libauthcustom.la: $(libauthcustom_la_OBJECTS) $(libauthcustom_la_DEPENDENCIES)
- $(libauthcustom_la_LINK) $(libauthcustom_la_OBJECTS) $(libauthcustom_la_LIBADD) $(LIBS)
-libauthldap.la: $(libauthldap_la_OBJECTS) $(libauthldap_la_DEPENDENCIES)
- $(libauthldap_la_LINK) $(libauthldap_la_OBJECTS) $(libauthldap_la_LIBADD) $(LIBS)
-libauthmysql.la: $(libauthmysql_la_OBJECTS) $(libauthmysql_la_DEPENDENCIES)
- $(libauthmysql_la_LINK) $(libauthmysql_la_OBJECTS) $(libauthmysql_la_LIBADD) $(LIBS)
-libauthpam.la: $(libauthpam_la_OBJECTS) $(libauthpam_la_DEPENDENCIES)
- $(libauthpam_la_LINK) $(libauthpam_la_OBJECTS) $(libauthpam_la_LIBADD) $(LIBS)
-libauthpgsql.la: $(libauthpgsql_la_OBJECTS) $(libauthpgsql_la_DEPENDENCIES)
- $(libauthpgsql_la_LINK) $(libauthpgsql_la_OBJECTS) $(libauthpgsql_la_LIBADD) $(LIBS)
-libauthpipe.la: $(libauthpipe_la_OBJECTS) $(libauthpipe_la_DEPENDENCIES)
- $(libauthpipe_la_LINK) $(libauthpipe_la_OBJECTS) $(libauthpipe_la_LIBADD) $(LIBS)
-libauthpwd.la: $(libauthpwd_la_OBJECTS) $(libauthpwd_la_DEPENDENCIES)
- $(libauthpwd_la_LINK) $(libauthpwd_la_OBJECTS) $(libauthpwd_la_LIBADD) $(LIBS)
-libauthshadow.la: $(libauthshadow_la_OBJECTS) $(libauthshadow_la_DEPENDENCIES)
- $(libauthshadow_la_LINK) $(libauthshadow_la_OBJECTS) $(libauthshadow_la_LIBADD) $(LIBS)
-libauthuserdb.la: $(libauthuserdb_la_OBJECTS) $(libauthuserdb_la_DEPENDENCIES)
- $(libauthuserdb_la_LINK) $(libauthuserdb_la_OBJECTS) $(libauthuserdb_la_LIBADD) $(LIBS)
-libcourierauth.la: $(libcourierauth_la_OBJECTS) $(libcourierauth_la_DEPENDENCIES)
- $(libcourierauth_la_LINK) -rpath $(pkglibdir) $(libcourierauth_la_OBJECTS) $(libcourierauth_la_LIBADD) $(LIBS)
-libcourierauthcommon.la: $(libcourierauthcommon_la_OBJECTS) $(libcourierauthcommon_la_DEPENDENCIES)
- $(libcourierauthcommon_la_LINK) -rpath $(pkglibdir) $(libcourierauthcommon_la_OBJECTS) $(libcourierauthcommon_la_LIBADD) $(LIBS)
-libcourierauthsasl.la: $(libcourierauthsasl_la_OBJECTS) $(libcourierauthsasl_la_DEPENDENCIES)
- $(libcourierauthsasl_la_LINK) -rpath $(pkglibdir) $(libcourierauthsasl_la_OBJECTS) $(libcourierauthsasl_la_LIBADD) $(LIBS)
-libcourierauthsaslclient.la: $(libcourierauthsaslclient_la_OBJECTS) $(libcourierauthsaslclient_la_DEPENDENCIES)
- $(libcourierauthsaslclient_la_LINK) -rpath $(pkglibdir) $(libcourierauthsaslclient_la_OBJECTS) $(libcourierauthsaslclient_la_LIBADD) $(LIBS)
+ @list='$(pkglib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libauthcustom.la: $(libauthcustom_la_OBJECTS) $(libauthcustom_la_DEPENDENCIES) $(EXTRA_libauthcustom_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthcustom_la_LINK) $(libauthcustom_la_OBJECTS) $(libauthcustom_la_LIBADD) $(LIBS)
+
+libauthldap.la: $(libauthldap_la_OBJECTS) $(libauthldap_la_DEPENDENCIES) $(EXTRA_libauthldap_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthldap_la_LINK) $(libauthldap_la_OBJECTS) $(libauthldap_la_LIBADD) $(LIBS)
+
+libauthmysql.la: $(libauthmysql_la_OBJECTS) $(libauthmysql_la_DEPENDENCIES) $(EXTRA_libauthmysql_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthmysql_la_LINK) $(libauthmysql_la_OBJECTS) $(libauthmysql_la_LIBADD) $(LIBS)
+
+libauthpam.la: $(libauthpam_la_OBJECTS) $(libauthpam_la_DEPENDENCIES) $(EXTRA_libauthpam_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthpam_la_LINK) $(libauthpam_la_OBJECTS) $(libauthpam_la_LIBADD) $(LIBS)
+
+libauthpgsql.la: $(libauthpgsql_la_OBJECTS) $(libauthpgsql_la_DEPENDENCIES) $(EXTRA_libauthpgsql_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthpgsql_la_LINK) $(libauthpgsql_la_OBJECTS) $(libauthpgsql_la_LIBADD) $(LIBS)
+
+libauthpipe.la: $(libauthpipe_la_OBJECTS) $(libauthpipe_la_DEPENDENCIES) $(EXTRA_libauthpipe_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthpipe_la_LINK) $(libauthpipe_la_OBJECTS) $(libauthpipe_la_LIBADD) $(LIBS)
+
+libauthpwd.la: $(libauthpwd_la_OBJECTS) $(libauthpwd_la_DEPENDENCIES) $(EXTRA_libauthpwd_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthpwd_la_LINK) $(libauthpwd_la_OBJECTS) $(libauthpwd_la_LIBADD) $(LIBS)
+
+libauthshadow.la: $(libauthshadow_la_OBJECTS) $(libauthshadow_la_DEPENDENCIES) $(EXTRA_libauthshadow_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthshadow_la_LINK) $(libauthshadow_la_OBJECTS) $(libauthshadow_la_LIBADD) $(LIBS)
+
+libauthsqlite.la: $(libauthsqlite_la_OBJECTS) $(libauthsqlite_la_DEPENDENCIES) $(EXTRA_libauthsqlite_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthsqlite_la_LINK) $(libauthsqlite_la_OBJECTS) $(libauthsqlite_la_LIBADD) $(LIBS)
+
+libauthuserdb.la: $(libauthuserdb_la_OBJECTS) $(libauthuserdb_la_DEPENDENCIES) $(EXTRA_libauthuserdb_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libauthuserdb_la_LINK) $(libauthuserdb_la_OBJECTS) $(libauthuserdb_la_LIBADD) $(LIBS)
+
+libcourierauth.la: $(libcourierauth_la_OBJECTS) $(libcourierauth_la_DEPENDENCIES) $(EXTRA_libcourierauth_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libcourierauth_la_LINK) -rpath $(pkglibdir) $(libcourierauth_la_OBJECTS) $(libcourierauth_la_LIBADD) $(LIBS)
+
+libcourierauthcommon.la: $(libcourierauthcommon_la_OBJECTS) $(libcourierauthcommon_la_DEPENDENCIES) $(EXTRA_libcourierauthcommon_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libcourierauthcommon_la_LINK) -rpath $(pkglibdir) $(libcourierauthcommon_la_OBJECTS) $(libcourierauthcommon_la_LIBADD) $(LIBS)
+
+libcourierauthsasl.la: $(libcourierauthsasl_la_OBJECTS) $(libcourierauthsasl_la_DEPENDENCIES) $(EXTRA_libcourierauthsasl_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libcourierauthsasl_la_LINK) -rpath $(pkglibdir) $(libcourierauthsasl_la_OBJECTS) $(libcourierauthsasl_la_LIBADD) $(LIBS)
+
+libcourierauthsaslclient.la: $(libcourierauthsaslclient_la_OBJECTS) $(libcourierauthsaslclient_la_DEPENDENCIES) $(EXTRA_libcourierauthsaslclient_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libcourierauthsaslclient_la_LINK) -rpath $(pkglibdir) $(libcourierauthsaslclient_la_OBJECTS) $(libcourierauthsaslclient_la_LIBADD) $(LIBS)
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p || test -f $$p1; \
- then echo "$$p"; echo "$$p"; else :; fi; \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
rm -f $$list
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p || test -f $$p1; \
- then echo "$$p"; echo "$$p"; else :; fi; \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
-authdaemondprog$(EXEEXT): $(authdaemondprog_OBJECTS) $(authdaemondprog_DEPENDENCIES)
+
+authdaemondprog$(EXEEXT): $(authdaemondprog_OBJECTS) $(authdaemondprog_DEPENDENCIES) $(EXTRA_authdaemondprog_DEPENDENCIES)
@rm -f authdaemondprog$(EXEEXT)
- $(authdaemondprog_LINK) $(authdaemondprog_OBJECTS) $(authdaemondprog_LDADD) $(LIBS)
-authdaemontest$(EXEEXT): $(authdaemontest_OBJECTS) $(authdaemontest_DEPENDENCIES)
+ $(AM_V_CCLD)$(authdaemondprog_LINK) $(authdaemondprog_OBJECTS) $(authdaemondprog_LDADD) $(LIBS)
+
+authdaemontest$(EXEEXT): $(authdaemontest_OBJECTS) $(authdaemontest_DEPENDENCIES) $(EXTRA_authdaemontest_DEPENDENCIES)
@rm -f authdaemontest$(EXEEXT)
- $(authdaemontest_LINK) $(authdaemontest_OBJECTS) $(authdaemontest_LDADD) $(LIBS)
-authenumerate$(EXEEXT): $(authenumerate_OBJECTS) $(authenumerate_DEPENDENCIES)
+ $(AM_V_CCLD)$(authdaemontest_LINK) $(authdaemontest_OBJECTS) $(authdaemontest_LDADD) $(LIBS)
+
+authenumerate$(EXEEXT): $(authenumerate_OBJECTS) $(authenumerate_DEPENDENCIES) $(EXTRA_authenumerate_DEPENDENCIES)
@rm -f authenumerate$(EXEEXT)
- $(authenumerate_LINK) $(authenumerate_OBJECTS) $(authenumerate_LDADD) $(LIBS)
-authmksock$(EXEEXT): $(authmksock_OBJECTS) $(authmksock_DEPENDENCIES)
+ $(AM_V_CCLD)$(authenumerate_LINK) $(authenumerate_OBJECTS) $(authenumerate_LDADD) $(LIBS)
+
+authmksock$(EXEEXT): $(authmksock_OBJECTS) $(authmksock_DEPENDENCIES) $(EXTRA_authmksock_DEPENDENCIES)
@rm -f authmksock$(EXEEXT)
- $(LINK) $(authmksock_OBJECTS) $(authmksock_LDADD) $(LIBS)
-authpasswd$(EXEEXT): $(authpasswd_OBJECTS) $(authpasswd_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(authmksock_OBJECTS) $(authmksock_LDADD) $(LIBS)
+
+authpasswd$(EXEEXT): $(authpasswd_OBJECTS) $(authpasswd_DEPENDENCIES) $(EXTRA_authpasswd_DEPENDENCIES)
@rm -f authpasswd$(EXEEXT)
- $(LINK) $(authpasswd_OBJECTS) $(authpasswd_LDADD) $(LIBS)
-authtest$(EXEEXT): $(authtest_OBJECTS) $(authtest_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(authpasswd_OBJECTS) $(authpasswd_LDADD) $(LIBS)
+
+authtest$(EXEEXT): $(authtest_OBJECTS) $(authtest_DEPENDENCIES) $(EXTRA_authtest_DEPENDENCIES)
@rm -f authtest$(EXEEXT)
- $(LINK) $(authtest_OBJECTS) $(authtest_LDADD) $(LIBS)
-courierauthconfig$(EXEEXT): $(courierauthconfig_OBJECTS) $(courierauthconfig_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(authtest_OBJECTS) $(authtest_LDADD) $(LIBS)
+
+courierauthconfig$(EXEEXT): $(courierauthconfig_OBJECTS) $(courierauthconfig_DEPENDENCIES) $(EXTRA_courierauthconfig_DEPENDENCIES)
@rm -f courierauthconfig$(EXEEXT)
- $(LINK) $(courierauthconfig_OBJECTS) $(courierauthconfig_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(courierauthconfig_OBJECTS) $(courierauthconfig_LDADD) $(LIBS)
install-pkglibexecSCRIPTS: $(pkglibexec_SCRIPTS)
@$(NORMAL_INSTALL)
- test -z "$(pkglibexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)"
@list='$(pkglibexec_SCRIPTS)'; test -n "$(pkglibexecdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibexecdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@list='$(pkglibexec_SCRIPTS)'; test -n "$(pkglibexecdir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(pkglibexecdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(pkglibexecdir)" && rm -f $$files
+ dir='$(DESTDIR)$(pkglibexecdir)'; $(am__uninstall_files_from_dir)
install-sbinSCRIPTS: $(sbin_SCRIPTS)
@$(NORMAL_INSTALL)
- test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
@list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(sbindir)" && rm -f $$files
+ dir='$(DESTDIR)$(sbindir)'; $(am__uninstall_files_from_dir)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authdaemonlib.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authdaemontest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authenumerate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authgetconfig.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authinfo.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authldap.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authldapescape.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authsaslplain.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authsasltobase64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authshadow.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authsqlite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authsqlitelib.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authsyschangepwd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authsyscommon.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authtest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preauthpgsql.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preauthpwd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preauthshadow.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preauthsqlite.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preauthuserdb.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preauthuserdbcommon.Plo@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
-rm -f libtool config.lt
install-man1: $(man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; test -n "$(man1dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.1[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
install-man3: $(man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
- @list=''; test -n "$(man3dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.3[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man3dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.3[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
sed -n '/\.3[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man3dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(includedir)" && rm -f $$files
+ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-$(RECURSIVE_CLEAN_TARGETS):
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) courier_auth_config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) courier_auth_config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) courier_auth_config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) courier_auth_config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
- @list='$(MANS)'; if test -n "$$list"; then \
- list=`for p in $$list; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
- if test -n "$$list" && \
- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
- echo " typically \`make maintainer-clean' will remove them" >&2; \
- exit 1; \
- else :; fi; \
- else :; fi
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
-test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
uninstall-man: uninstall-man1 uninstall-man3
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
- ctags-recursive install install-am install-data-am \
- install-exec-am install-strip tags-recursive uninstall-am
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-binPROGRAMS \
- clean-generic clean-libtool clean-noinstPROGRAMS \
- clean-pkglibLTLIBRARIES clean-sbinPROGRAMS ctags \
- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
- dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
- distclean distclean-compile distclean-generic distclean-hdr \
- distclean-libtool distclean-tags distcleancheck distdir \
- distuninstallcheck dvi dvi-am html html-am info info-am \
- install install-am install-binPROGRAMS install-data \
- install-data-am install-data-hook install-dvi install-dvi-am \
- install-exec install-exec-am install-exec-hook install-html \
- install-html-am install-includeHEADERS install-info \
- install-info-am install-man install-man1 install-man3 \
- install-pdf install-pdf-am install-pkglibLTLIBRARIES \
+.MAKE: $(am__recursive_targets) all check install install-am \
+ install-data-am install-exec-am install-strip uninstall-am
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-binPROGRAMS \
+ clean-cscope clean-generic clean-libtool clean-noinstPROGRAMS \
+ clean-pkglibLTLIBRARIES clean-sbinPROGRAMS cscope \
+ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am \
+ install-data-hook install-dvi install-dvi-am install-exec \
+ install-exec-am install-exec-hook install-html install-html-am \
+ install-includeHEADERS install-info install-info-am \
+ install-man install-man1 install-man3 install-pdf \
+ install-pdf-am install-pkglibLTLIBRARIES \
install-pkglibexecSCRIPTS install-ps install-ps-am \
install-sbinPROGRAMS install-sbinSCRIPTS install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-hook uninstall-includeHEADERS \
uninstall-man uninstall-man1 uninstall-man3 \
uninstall-pkglibLTLIBRARIES uninstall-pkglibexecSCRIPTS \
authmysqlrc.h:
echo "#define AUTHMYSQLRC \"@authmysqlrc@\"" >authmysqlrc.h
+authsqlitelib.lo: authsqlitelib.c authsqliterc.h
+
+@HAVE_AUTHSQLITE_TRUE@install-authsqliterc:
+@HAVE_AUTHSQLITE_TRUE@ $(mkinstalldirs) $(DESTDIR)`dirname @authsqliterc@` || :
+@HAVE_AUTHSQLITE_TRUE@ $(INSTALL_DATA) -m 660 $(srcdir)/authsqliterc \
+@HAVE_AUTHSQLITE_TRUE@ $(DESTDIR)@authsqliterc@.dist
+@HAVE_AUTHSQLITE_TRUE@ -chown @mailuser@ $(DESTDIR)@authsqliterc@.dist
+@HAVE_AUTHSQLITE_TRUE@ -chgrp @mailgroup@ $(DESTDIR)@authsqliterc@.dist
+
+@HAVE_AUTHSQLITE_TRUE@uninstall-authsqliterc:
+@HAVE_AUTHSQLITE_TRUE@ rm -f $(DESTDIR)@authsqliterc@.dist
+
+@HAVE_AUTHSQLITE_FALSE@install-authsqliterc:
+@HAVE_AUTHSQLITE_FALSE@ @:
+
+@HAVE_AUTHSQLITE_FALSE@uninstall-authsqliterc:
+@HAVE_AUTHSQLITE_FALSE@ @:
+
+authsqliterc.h:
+ echo "#define AUTHSQLITERC \"@authsqliterc@\"" >authsqliterc.h
+
authpipelib.lo: authpipelib.c authpipelib.h authpiperc.h
authpiperc.h:
# automake still a bit stupid...
install-data-hook: install-authdaemonrc install-authpgsqlrc \
- install-authldaprc install-authmysqlrc
+ install-authldaprc install-authmysqlrc install-authsqliterc
:
install-exec-hook:
$(mkinstalldirs) $(DESTDIR)$(bindir) || :
$(mkinstalldirs) $(DESTDIR)$(sbindir) || :
$(mkinstalldirs) $(DESTDIR)$(pkglibexecdir) || :
+ chmod 755 $(DESTDIR)$(pkglibexecdir)
+ -chown @mailuser@ $(DESTDIR)$(pkglibexecdir)
+ -chgrp @mailgroup@ $(DESTDIR)$(pkglibexecdir)
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) authdaemondprog $(DESTDIR)$(pkglibexecdir)/authdaemond
$(mkinstalldirs) $(DESTDIR)@authdaemonvar@ || :
chmod 750 $(DESTDIR)@authdaemonvar@
-chown @mailuser@ $(DESTDIR)@authdaemonvar@
-chgrp @mailgroup@ $(DESTDIR)@authdaemonvar@
test "@LIBAUTHUSERDB@" = "" && exit 0 ;\
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) makedat/makedatprog \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) libs/makedat/makedatprog \
$(DESTDIR)$(pkglibexecdir)/makedatprog ; \
$(INSTALL_SCRIPT) userdb/pw2userdb \
$(DESTDIR)$(sbindir)/pw2userdb ; \
$(DESTDIR)$(sbindir)/userdbpw ; \
$(INSTALL_SCRIPT) userdb-test-cram-md5.pl \
$(DESTDIR)$(sbindir)/userdb-test-cram-md5
- for f in $(pkglib_LTLIBRARIES); do . ./$$f; rm -f $(DESTDIR)$(pkglibdir)/$$dlname.0 $(DESTDIR)$(pkglibdir)/$$dlname.0.0; ln -s $$dlname $(DESTDIR)$(pkglibdir)/$$dlname.0; done
-uninstall-hook: uninstall-authldaprc uninstall-authdaemonrc uninstall-authmysqlrc uninstall-authpgsqlrc
+uninstall-hook: uninstall-authldaprc uninstall-authdaemonrc uninstall-authmysqlrc uninstall-authpgsqlrc uninstall-authsqliterc
rm -f $(DESTDIR)$(pkglibexecdir)/authdaemond
test "@AUTHUSERDB@" = "" && exit 0 ;\
rm -f $(DESTDIR)$(pkglibexecdir)/makedatprog \
$(DESTDIR)$(sbindir)/userdb \
$(DESTDIR)$(sbindir)/userdbpw \
$(DESTDIR)$(sbindir)/userdb-test-cram-md5
- for f in $(pkglib_LTLIBRARIES); do . ./$$f; rm -f $(DESTDIR)$(pkglibdir)/$$dlname.0; done
authlib.html: authlib.html.in
$(SHELL) ./config.status --file=authlib.html
authlib.3: authlib.3.in
$(SHELL) ./config.status --file=authlib.3
-@HAVE_SGML_TRUE@authpasswd.html: authpasswd.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html authpasswd.sgml authpasswd.html
+@HAVE_SGML_TRUE@authpasswd.html: authpasswd.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html authpasswd.sgml authpasswd.html
-@HAVE_SGML_TRUE@authpasswd.1: authpasswd.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man authpasswd.sgml authpasswd.1
+@HAVE_SGML_TRUE@authpasswd.1: authpasswd.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man authpasswd.sgml authpasswd.1
-@HAVE_SGML_TRUE@authtest.html: authtest.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html authtest.sgml authtest.html
+@HAVE_SGML_TRUE@authtest.html: authtest.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html authtest.sgml authtest.html
-@HAVE_SGML_TRUE@authtest.1: authtest.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man authtest.sgml authtest.1
+@HAVE_SGML_TRUE@authtest.1: authtest.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man authtest.sgml authtest.1
-@HAVE_SGML_TRUE@authlib.html.in: authlib.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html authlib.sgml authlib.html.in
+@HAVE_SGML_TRUE@authlib.html.in: authlib.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html authlib.sgml authlib.html.in
-@HAVE_SGML_TRUE@authlib.3.in: authlib.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man authlib.sgml authlib.3.in
+@HAVE_SGML_TRUE@authlib.3.in: authlib.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man authlib.sgml authlib.3.in
@HAVE_SGML_TRUE@ mv authlib.3 authlib.3.in
-@HAVE_SGML_TRUE@README_authlib.html.in: README_authlib.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html README_authlib.sgml README_authlib.html.in
+@HAVE_SGML_TRUE@README_authlib.html.in: README_authlib.sgml optionlist.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html README_authlib.sgml README_authlib.html.in
-@HAVE_SGML_TRUE@auth_generic.html: auth_generic.sgml authcallback.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html auth_generic.sgml auth_generic.html
+@HAVE_SGML_TRUE@auth_generic.html: auth_generic.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html auth_generic.sgml auth_generic.html
-@HAVE_SGML_TRUE@auth_generic.3: auth_generic.sgml authcallback.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man auth_generic.sgml auth_generic.3
+@HAVE_SGML_TRUE@auth_generic.3: auth_generic.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man auth_generic.sgml auth_generic.3
-@HAVE_SGML_TRUE@auth_login.html: auth_login.sgml authcallback.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html auth_login.sgml auth_login.html
+@HAVE_SGML_TRUE@auth_login.html: auth_login.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html auth_login.sgml auth_login.html
-@HAVE_SGML_TRUE@auth_login.3: auth_login.sgml authcallback.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man auth_login.sgml auth_login.3
+@HAVE_SGML_TRUE@auth_login.3: auth_login.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man auth_login.sgml auth_login.3
-@HAVE_SGML_TRUE@auth_getuserinfo.html: auth_getuserinfo.sgml authcallback.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html auth_getuserinfo.sgml auth_getuserinfo.html
+@HAVE_SGML_TRUE@auth_getuserinfo.html: auth_getuserinfo.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html auth_getuserinfo.sgml auth_getuserinfo.html
-@HAVE_SGML_TRUE@auth_getuserinfo.3: auth_getuserinfo.sgml authcallback.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man auth_getuserinfo.sgml auth_getuserinfo.3
+@HAVE_SGML_TRUE@auth_getuserinfo.3: auth_getuserinfo.sgml authcallback.sgml optionlist.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man auth_getuserinfo.sgml auth_getuserinfo.3
-@HAVE_SGML_TRUE@auth_enumerate.html: auth_enumerate.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html auth_enumerate.sgml auth_enumerate.html
+@HAVE_SGML_TRUE@auth_enumerate.html: auth_enumerate.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html auth_enumerate.sgml auth_enumerate.html
-@HAVE_SGML_TRUE@auth_enumerate.3: auth_enumerate.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man auth_enumerate.sgml auth_enumerate.3
+@HAVE_SGML_TRUE@auth_enumerate.3: auth_enumerate.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man auth_enumerate.sgml auth_enumerate.3
-@HAVE_SGML_TRUE@auth_passwd.html: auth_passwd.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html auth_passwd.sgml auth_passwd.html
+@HAVE_SGML_TRUE@auth_passwd.html: auth_passwd.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html auth_passwd.sgml auth_passwd.html
-@HAVE_SGML_TRUE@auth_passwd.3: auth_passwd.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man auth_passwd.sgml auth_passwd.3
+@HAVE_SGML_TRUE@auth_passwd.3: auth_passwd.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man auth_passwd.sgml auth_passwd.3
-@HAVE_SGML_TRUE@auth_getoption.html: auth_getoption.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html auth_getoption.sgml auth_getoption.html
+@HAVE_SGML_TRUE@auth_getoption.html: auth_getoption.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html auth_getoption.sgml auth_getoption.html
-@HAVE_SGML_TRUE@auth_getoption.3: auth_getoption.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man auth_getoption.sgml auth_getoption.3
+@HAVE_SGML_TRUE@auth_getoption.3: auth_getoption.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man auth_getoption.sgml auth_getoption.3
-@HAVE_SGML_TRUE@auth_sasl.html: auth_sasl.sgml docbook/sgml2html
-@HAVE_SGML_TRUE@ docbook/sgml2html auth_sasl.sgml auth_sasl.html
+@HAVE_SGML_TRUE@auth_sasl.html: auth_sasl.sgml libs/docbook/sgml2html
+@HAVE_SGML_TRUE@ libs/docbook/sgml2html auth_sasl.sgml auth_sasl.html
-@HAVE_SGML_TRUE@auth_sasl.3: auth_sasl.sgml docbook/sgml2man
-@HAVE_SGML_TRUE@ docbook/sgml2man auth_sasl.sgml auth_sasl.3
+@HAVE_SGML_TRUE@auth_sasl.3: auth_sasl.sgml libs/docbook/sgml2man
+@HAVE_SGML_TRUE@ libs/docbook/sgml2man auth_sasl.sgml auth_sasl.3
@HAVE_SGML_TRUE@auth_sasl_ex.3: auth_sasl.3
@HAVE_SGML_TRUE@ touch $@
test -f $(DESTDIR)@authmysqlrc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authmysqlrc@.dist || true
test -f $(DESTDIR)@authpgsqlrc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authpgsqlrc@.dist || true
test -f $(DESTDIR)@authldaprc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authldaprc@.dist || true
+ test -f $(DESTDIR)@authsqliterc@.dist && @SYSCONFTOOL@ $(DESTDIR)@authsqliterc@.dist || true
# For maintainer's use only
distrelease:
umask 022; $(MAKE) distcheck
$(MAKE) rpm
- socksify cvs commit
- socksify cvs tag -F @PACKAGE@-latest
$(MAKE)
$(MAKE)
rm -f @PACKAGE@.spec @PACKAGE@.lpspec
$(MAKE) @PACKAGE@.spec @PACKAGE@.lpspec
$(MAKE) dist
-tagrelease:
- socksify cvs tag -F -r @PACKAGE@-latest \
- `echo @PACKAGE@-@VERSION@ | tr '.' '-'`
-
rpm: rpm-build
rpm-build:
test -z "$(SFPASSWD)" && exit 1; exit 0
rm -f @PACKAGE@-@VERSION@.tar.bz2.sig; gpg --detach-sign --default-key mrsam@courier-mta.com @PACKAGE@-@VERSION@.tar.bz2; test -f @PACKAGE@-@VERSION@.tar.bz2.sig || exit 1
socksify ssh grace.speakeasy.net echo @PACKAGE@-@VERSION@.tar.bz2 `ls -l @PACKAGE@-@VERSION@.tar.bz2 | awk ' { print $$5 } '` \>courier-mta.org/@PACKAGE@.beta
- ../sftools/release.pl mrsam $(SFPASSWD) courier authlib-devel `echo @VERSION@|sed 's/.*\(........\)/\1/'` @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
+ ~/src/sftools/release.pl mrsam $(SFPASSWD) courier authlib-devel `echo @VERSION@|sed 's/.*\(........\)/\1/'` @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
upload-dist:
- rm -f @PACKAGE@-@VERSION@.tar.bz2.sig; gpg --detach-sign --default-key mrsam@courier-mta.com @PACKAGE@-@VERSION@.tar.bz2; test -f @PACKAGE@-@VERSION@.tar.bz2.sig || exit 1
- socksify cvs tag -F -r @PACKAGE@-latest \
- `echo @PACKAGE@-@VERSION@ | tr '.' '-'`
- socksify ../sftools/release.pl mrsam $(SFPASSWD) courier authlib @VERSION@ @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
- socksify ssh grace.speakeasy.net rm -f courier-mta.org/@PACKAGE@.beta
-
-release-dist:
test -z "$(SFPASSWD)" && exit 1; exit 0
- ./changelog.pl >changelog.txt
- emacs releasenotes.txt
- test -f releasenotes.txt || exit 1
- socksify ../sftools/release.pl mrsam $(SFPASSWD) courier authlib @VERSION@ releasenotes.txt changelog.txt @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
- socksify ssh grace.speakeasy.net rm -f courier-mta.org/@PACKAGE@.beta
+ rm -f @PACKAGE@-@VERSION@.tar.bz2.sig; gpg --detach-sign --default-key mrsam@courier-mta.com @PACKAGE@-@VERSION@.tar.bz2; test -f @PACKAGE@-@VERSION@.tar.bz2.sig || exit 1
+ set -e; v="@PACKAGE@/@VERSION@/`date +%Y%m%d%H%M%S`"; git tag -s $$v -m 'Tag version @VERSION@'; cd libs; git tag -s $$v -m 'Tag version @VERSION@'
+ socksify ~/src/sftools/release.pl mrsam $(SFPASSWD) courier authlib @VERSION@ @PACKAGE@-@VERSION@.tar.bz2 @PACKAGE@-@VERSION@.tar.bz2.sig
htmldoc: $(HTMLDOCFILES)
- for f in $^; do d=`basename $$f`; test "$$d" = "README.html" && d="index2.html"; tidy -i -q --tidy-mark no --doctype transitional --input-encoding utf8 --output-encoding utf8 -asxml <$$f >$$f.tmp ; xsltproc --nonet $$HOME/www/www.courier-mta.org/xsl/authlib.xsl $$f.tmp | perl -ne 's~\$(id):.*\$$~\$(id):'"$$h"'\$$~; print' >html/$$d; rm -f $$f.tmp; done
+ for f in $^; do d=`basename $$f`; test "$$d" = "README.html" && d="index.html"; tidy -i -q --tidy-mark no --doctype transitional --input-encoding utf8 --output-encoding utf8 -asxml <$$f >$$f.tmp ; xsltproc --nonet $$HOME/www/www.courier-mta.org/xsl/authlib.xsl $$f.tmp | perl -ne 's~\$(id):.*\$$~\$(id):'"$$h"'\$$~; print' >$$HOME/www/www.courier-mta.org/authlib/$$d; rm -f $$f.tmp; done
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
- Courier Authentication Library
-
- The Courier Authentication Library is a required component that must be
- set up before installing other Courier packages: the Courier Mail Server
- or its components (Courier-IMAP, SqWebMail, or maildrop).
-
- The authentication library used to be included as a part of these
- packages, it is now a standalone library.
-
- Upgrading from older versions of Courier packages that used to include
- this authentication library internally should be as simple as:
-
- ./configure
- make
- make install
- make install-migrate
- make install-configure
-
-Requirements
-
- The Courier authentication library should not have any more requirements
- than the older Courier packages it used to be a part of. There may be an
- exception on some less-common platforms. They may require some additional
- stuff to be loaded before courier-authlib can be installed. This is
- because courier-authlib now uses libtool, which is a new requirement.
- Courier-authlib now uses shared libraries in the place of separate
- authdaemond binaries in the previous versions. Some less-common platforms
- may require additional software to be installed because of that, see
- INSTALL for more information.
-
-The pluses
-
- This new, self-sustaining Courier authentication library offers the
- following benefits:
-
- * Upgrading from Courier-IMAP or SqWebMail to the full Courier package
- does not require authentication re-configuration.
- * Consolidated documentation. Instructions for setting up MySQL,
- PostgreSQL, and the rest, are currently duplicated twice, making it a
- maintenance pain. Now, the documentation will be in one place, and can
- be easily improved, and overhauled. There will be an initial hump to
- ride over, to reconcile the minor differences in the authentication
- documentation in Courier, Courier-IMAP, and SqWebMail. Going forward,
- though, everything will be in one place.
- * The authentication API appears to be fairly stable and robust. It will
- not be necessary to update the courier-authlib package with every
- upgrade. Updates to courier-authlib are expected to be very
- infrequent.
- * There is a small minority of established systems that use the
- standalone SqWebMail and Courier-IMAP packages. The consolidated
- courier-authlib library will, as a bonus, provide an official way to
- use only one set of config files, in this configuration.
-
-The minuses
-
- I can only see one possible drawback. Only the daemonized configuration
- will now be possible. This new version of the Courier authentication
- library is, for all intents and purposes, the daemonized configuration of
- the previous authentication library. The non-daemonized version of the
- authentication library is no longer implemented. That code has been
- removed for the simple reason that it can no longer be implemented, as a
- standalone library. It's been clearly shown that the daemonized
- configuration is the more flexible configuration, and is the only way to
- go. The daemonized configuration was the default configuration for several
- years.
-
- I can only see the following minuses from losing the non-daemonized
- configuration. I believe the minuses are greatly outranked by the pluses.
-
- * There are some third party configuration libraries that only work in a
- non-daemonized configuration. I'm aware of one such library, vmailmgr.
- Unless it's been updated to work in daemonized mode, it will no longer
- work.
- * There are also some other third-party hacks that also only work in a
- non-daemonized configuration. There's at least one relay-after-imap or
- relay-after-pop hack for qmail, that only works in a daemonized
- configuration. I believe that relay-after-X hacks have been obsolete
- for several years now. Every mail client worth mentioning these days
- implemented authenticated SMTP, and the relay-after-X hacks need to
- go.
-
- Currently, there are also some borderline configurations possible in a
- non-daemonized configuration, such as using different authentication
- modules completely for imap and pop3, or different authentication modules
- for non-encrypted and encrypted connections. This will no longer be
- possible, but I doubt that there's any valid reason to use such an unusual
- setup.
-
-Testing
-
- The 'make install-migrate' command tries to import the authentication
- configuration from any existing installed Courier package. The
- configuration files for courier-authlib will end up in
- /usr/local/lib/courier-authlib/etc/authlib. The existing Courier packages
- don't really know how to use courier-authlib just yet. This will be the
- next step.
-
- However, after installing courier-authlib you should be able to do some
- rudimentary testing by running 'authdaemond start' (where authdaemond is
- what's in the /usr/local/lib/courier-authlib/sbin directory). The
- following commands should now work (make sure the authdaemond and authtest
- programs are the ones from /usr/local/lib/courier-authlib/sbin directory,
- and not any existing Courier directory):
-
- authtest userid
- authtest userid password
- authtest userid password newpassword
- authenumerate
-
- The first command displays the account's home directory, userid, groupid,
- and other related data. The second command verifies whether the password
- is valid, or not. The third command changes the password on the account
- (be careful with that).
-
- The goal is that everything should work automatically. In some cases, it
- might be necessary to modify the new authdaemonrc configuration file
- (unlike all othe configuration files, the install-migrate script won't
- copy the existing authdaemonrc, a new one will be installed). Manually
- edit it, and remove all authentication modules that are not needed,
- leaving only the actual ones that are used.
-
-Debugging
-
- To generate additional debugging messages, edit the authdaemond startup
- script (installed in /usr/local/bin by default), and add the following to
- the script:
-
- DEBUG_LOGIN=2
- export DEBUG_LOGIN
-
- Debugging messages from the authentication daemon processes will be sent
- to the syslog facility, and recorded in whatever log file syslog is
- configured to use (usually /var/log/messages or /var/log/maillog).
+ Courier Authentication Library
+
+ A new SQLite authentication module has been added to the Courier
+ Authentication Library. It's considered to be in experimental or testing
+ status.
+
+Debugging
+
+ To generate additional debugging messages, edit the authdaemond startup
+ script (installed in /usr/local/bin by default), and add the following to
+ the script:
+
+ DEBUG_LOGIN=2
+ export DEBUG_LOGIN
+
+ Debugging messages from the authentication daemon processes will be sent
+ to the syslog facility, and recorded in whatever log file syslog is
+ configured to use (usually /var/log/messages or /var/log/maillog).
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content=
- "text/html; charset=utf-8" />
-
- <title>NEWS</title>
- <meta name="generator" content="Bluefish 1.0.7"/>
-</head>
-
-<body>
- <h1>Courier Authentication Library</h1>
-
- <p>The Courier Authentication Library is a required component
- that must be set up before installing other Courier packages: the
- Courier Mail Server or its components (Courier-IMAP, SqWebMail,
- or maildrop).</p>
-
- <p>The authentication library used to be included as a part of
- these packages, it is now a standalone library.</p>
-
- <p>Upgrading from older versions of Courier packages that used to
- include this authentication library internally should be as
- simple as:</p>
- <pre>
-./configure
-make
-make install
-make install-migrate
-make install-configure
-</pre>
-
- <h2>Requirements</h2>
-
- <p>The Courier authentication library should not have any more
- requirements than the older Courier packages it used to be a part
- of. There may be an exception on some less-common platforms. They
- may require some additional stuff to be loaded before
- courier-authlib can be installed. This is because courier-authlib
- now uses <code>libtool</code>, which is a new requirement.
- Courier-authlib now uses shared libraries in the place of
- separate authdaemond binaries in the previous versions. Some
- less-common platforms may require additional software to be
- installed because of that, see INSTALL for more information.</p>
-
- <h2>The pluses</h2>
-
- <p>This new, self-sustaining Courier authentication library
- offers the following benefits:</p>
-
- <ul>
- <li>Upgrading from Courier-IMAP or SqWebMail to the full
- Courier package does not require authentication
- re-configuration.</li>
-
- <li>Consolidated documentation. Instructions for setting up
- MySQL, PostgreSQL, and the rest, are currently duplicated
- twice, making it a maintenance pain. Now, the documentation
- will be in one place, and can be easily improved, and
- overhauled. There will be an initial hump to ride over, to
- reconcile the minor differences in the authentication
- documentation in Courier, Courier-IMAP, and SqWebMail. Going
- forward, though, everything will be in one place.</li>
-
- <li>The authentication API appears to be fairly stable and
- robust. It will not be necessary to update the courier-authlib
- package with every upgrade. Updates to courier-authlib are
- expected to be very infrequent.</li>
-
- <li>There is a small minority of established systems that use
- the standalone SqWebMail and Courier-IMAP packages. The
- consolidated courier-authlib library will, as a bonus, provide
- an official way to use only one set of config files, in this
- configuration.</li>
- </ul>
-
- <h2>The minuses</h2>
-
- <p>I can only see one possible drawback. Only the daemonized
- configuration will now be possible. This new version of the
- Courier authentication library is, for all intents and purposes,
- the daemonized configuration of the previous authentication
- library. The non-daemonized version of the authentication library
- is no longer implemented. That code has been removed for the
- simple reason that it can no longer be implemented, as a
- standalone library. It's been clearly shown that the daemonized
- configuration is the more flexible configuration, and is the only
- way to go. The daemonized configuration was the default
- configuration for several years.</p>
-
- <p>I can only see the following minuses from losing the
- non-daemonized configuration. I believe the minuses are greatly
- outranked by the pluses.</p>
-
- <ul>
- <li>There are some third party configuration libraries that
- only work in a non-daemonized configuration. I'm aware of one
- such library, vmailmgr. Unless it's been updated to work in
- daemonized mode, it will no longer work.</li>
-
- <li>There are also some other third-party hacks that also only
- work in a non-daemonized configuration. There's at least one
- relay-after-imap or relay-after-pop hack for qmail, that only
- works in a daemonized configuration. I believe that
- relay-after-X hacks have been obsolete for several years now.
- Every mail client worth mentioning these days implemented
- authenticated SMTP, and the relay-after-X hacks need to
- go.</li>
- </ul>
-
- <p>Currently, there are also some borderline configurations
- possible in a non-daemonized configuration, such as using
- different authentication modules completely for imap and pop3, or
- different authentication modules for non-encrypted and encrypted
- connections. This will no longer be possible, but I doubt that
- there's any valid reason to use such an unusual setup.</p>
-
- <h2>Testing</h2>
-
- <p>The '<code>make install-migrate</code>' command tries to
- import the authentication configuration from any existing
- installed Courier package. The configuration files for
- courier-authlib will end up in
- <code>/usr/local/lib/courier-authlib/etc/authlib</code>. The
- existing Courier packages don't really know how to use
- courier-authlib just yet. This will be the next step.</p>
-
- <p>However, after installing courier-authlib you should be able
- to do some rudimentary testing by running '<code>authdaemond
- start</code>' (where authdaemond is what's in the
- <code>/usr/local/lib/courier-authlib/sbin</code> directory). The
- following commands should now work (make sure the
- <code>authdaemond</code> and <code>authtest</code> programs are
- the ones from <code>/usr/local/lib/courier-authlib/sbin</code>
- directory, and not any existing Courier directory):</p>
- <pre>
-authtest userid
-authtest userid password
-authtest userid password newpassword
-authenumerate
-</pre>
-
- <p>The first command displays the account's home directory,
- userid, groupid, and other related data. The second command
- verifies whether the password is valid, or not. The third command
- changes the password on the account (be careful with that).</p>
-
- <p>The goal is that everything should work automatically. In some
- cases, it might be necessary to modify the new authdaemonrc
- configuration file (unlike all othe configuration files, the
- <code>install-migrate</code> script won't copy the existing
- <code>authdaemonrc</code>, a new one will be installed). Manually
- edit it, and remove all authentication modules that are not
- needed, leaving only the actual ones that are used.</p>
-
- <h2>Debugging</h2>
-
- <p>To generate additional debugging messages, edit the
- authdaemond startup script (installed in /usr/local/bin by
- default), and add the following to the script:</p>
- <pre>
-DEBUG_LOGIN=2
-export DEBUG_LOGIN
-</pre>
-
- <p>Debugging messages from the authentication daemon processes
- will be sent to the syslog facility, and recorded in whatever log
- file syslog is configured to use (usually
- <code>/var/log/messages</code> or
- <code>/var/log/maillog</code>).</p>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+
+ <title>NEWS</title>
+ <meta name="generator" content="Bluefish 2.2.3" />
+</head>
+
+<body>
+ <h1>Courier Authentication Library</h1>
+
+ <p>A new SQLite authentication module has been added to the
+ Courier Authentication Library. It's considered to be in
+ experimental or testing status.</p>
+
+ <h2>Debugging</h2>
+
+ <p>To generate additional debugging messages, edit the
+ authdaemond startup script (installed in /usr/local/bin by
+ default), and add the following to the script:</p>
+ <pre>
+DEBUG_LOGIN=2
+export DEBUG_LOGIN
+</pre>
+
+ <p>Debugging messages from the authentication daemon processes
+ will be sent to the syslog facility, and recorded in whatever log
+ file syslog is configured to use (usually
+ <code>/var/log/messages</code> or
+ <code>/var/log/maillog</code>).</p>
+</body>
+</html>
Courier Authentication Library
- This is the Courier authentication library. Copies of this library code
- used to exist in other tarballs: Courier, Courier-IMAP, and SqWebMail.
- Building and installing any of these packages would've automatically
- installed this authentication code.
-
- The authentication library is now a separate, standalone package. This
- authentication library must now be installed, separately, before upgrading
- to the following builds (or if installing them for the first time):
- Courier 0.48, Courier-IMAP 4.0, and SqWebMail 5.0. See [1]NEWS for more
- information.
-
- Download: [2]http://www.courier-mta.org/download.php#authlib
+ Download: [1]http://www.courier-mta.org/download.html#authlib
Overview
other Courier applications. In this context, the term "authentication"
refers to the following functions:
- 1. Take a userid or a loginid, and a password. Determine whether the
+ 1. Take a userid or a loginid, and a password. Determine whether the
loginid and the password are valid.
- 2. Given a userid, obtain the following information about the userid:
+ 2. Given a userid, obtain the following information about the userid:
- A. The account's home directory.
- B. The numeric system userid and groupid that owns all files
+ A. The account's home directory.
+ B. The numeric system userid and groupid that owns all files
associated with this account.
- C. The location of the account's maildir.
- D. Any maildir quota defined for this account. See the Courier
+ C. The location of the account's maildir.
+ D. Any maildir quota defined for this account. See the Courier
documentation for more information on maildir quotas.
- E. Other miscellaneous account-specific options.
+ E. Other miscellaneous account-specific options.
- 3. Change the password associated with a loginid.
- 4. Obtain a complete list of all loginids.
+ 3. Change the password associated with a loginid.
+ 4. Obtain a complete list of all login ids.
The Courier authentication library provides alternative implementations of
these authentication services:
- 1. Use the traditional system password files: /etc/passwd and
+ 1. Use the traditional system password files: /etc/passwd and
/etc/shadow, possibly in conjunction with the PAM library.
- 2. Maintain all this information in a GDBM or a DB database. The GDBM or
+ 2. Maintain all this information in a GDBM or a DB database. The GDBM or
the DB database is compiled from plain text files. Perl scripts
provide a simple interface for creating and editing the authentication
information, then a script compiles the plain text files into a
database.
- 3. Use an LDAP server for authentication.
- 4. Use a table in a MySQL database for authentication.
- 5. Use a table in a PostgreSQL database for authentication.
+ 3. Use an LDAP server for authentication.
+ 4. Use a table in a MySQL database for authentication.
+ 5. Use a table in a PostgreSQL database for authentication.
+ 6. Use a table in an SQLite file for authentication.
All Courier components that use this authentication library, therefore,
will be able to authenticate E-mail accounts using any of the above
methods.
- Additional information can be found in the [3]INSTALL file.
+ Additional information can be found in the [2]INSTALL file.
- The authentication API is [4]documented.
+ The authentication API is [3]documented.
Further resources
- Subscribe to the [5]courier-users mailing list. Go to
+ Subscribe to the [4]courier-users mailing list. Go to
http://lists.sourceforge.net/mailman/listinfo/courier-users to subscribe
to courier-users, or send a message to
<courier-users-request@lists.sourceforge.net> and put "subscribe" in the
subject line. Search the list archives at
- [6]http://markmail.org/browse/net.sourceforge.lists.courier-users.
+ [5]http://markmail.org/browse/net.sourceforge.lists.courier-users.
</pre>
<p>If you are using userdb authentication, you definitely need to
- read <a href="http://www.courier-mta.org/makeuserdb.html">man
- makeuserdb</a>, <a href=
- "http://www.courier-mta.org/userdb.html">man userdb</a>, and
- <a href="http://www.courier-mta.org/userdbpw.html">man
+ read <a href="makeuserdb.html">man makeuserdb</a>, <a href=
+ "userdb.html">man userdb</a>, and <a href="userdbpw.html">man
userdbpw</a>.</p>
<h2>5. Use the mailing list</h2>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Courier PostgreSQL authentication module</title>
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
</head>
-<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B"
-alink="#FF0000">
-<h1>Courier PostgreSQL authentication module</h1>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink=
+"#551A8B" alink="#FF0000">
+ <h1>Courier PostgreSQL authentication module</h1>
-<p>Please read <a href="README.authmysql.html">README.authmysql.html</a>
-since almost all information there applies to postgres as well, but with
-postgres change the schema to:</p>
-<pre>CREATE TABLE passwd (
+ <p>Please read <a href=
+ "README.authmysql.html">README.authmysql.html</a> since almost
+ all information there applies to postgres as well, but with
+ Postgres change the schema to:</p>
+ <pre>
+CREATE TABLE passwd (
id varchar(128) DEFAULT '' NOT NULL,
crypt varchar(128) DEFAULT '' NOT NULL,
clear varchar(128) DEFAULT '' NOT NULL,
defaultdelivery varchar(255) DEFAULT '' NOT NULL,
quota varchar(255) DEFAULT '' NOT NULL,
CONSTRAINT id PRIMARY KEY (id)
-);</pre>
+);
+</pre>
</body>
</html>
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Courier SQLite authentication module</title>
+ <meta name="MSSmartTagsPreventParsing" content="TRUE" />
+</head>
+
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink=
+"#551A8B" alink="#FF0000">
+ <h1>Courier SQLite authentication module</h1>
+
+ <p>Please read <a href=
+ "README.authmysql.html">README.authmysql.html</a> since almost
+ all information there applies to SQLite as well, and see the
+ comments in the <tt>authsqliterc</tt> configuration file
+ regarding the SQLite-specific syntax. The notable differences are
+ only the names of the settings in the <tt>authsqliterc</tt>, and
+ there's just one connection parameter, the filename.</p>
+</body>
+</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content=
- "text/html; charset=utf-8" />
+ "text/html; charset=us-ascii" />
- <title>README</title>
+ <title>Courier Authentication Library</title>
</head>
<body>
<h1>Courier Authentication Library</h1>
- <p>This is the Courier authentication library. Copies of this
- library code used to exist in other tarballs: Courier,
- Courier-IMAP, and SqWebMail. Building and installing any of these
- packages would've automatically installed this authentication
- code.</p>
-
- <p>The authentication library is now a separate, standalone
- package. This authentication library must now be installed,
- separately, before upgrading to the following builds (or if
- installing them for the first time): Courier 0.48, Courier-IMAP
- 4.0, and SqWebMail 5.0. See <a href="NEWS.html">NEWS</a> for more
- information.</p>
-
<p>Download: <a target="_blank" href=
- "http://www.courier-mta.org/download.php#authlib">http://www.courier-mta.org/download.php#authlib</a></p>
+ "http://www.courier-mta.org/download.html#authlib">http://www.courier-mta.org/download.html#authlib</a></p>
<h2>Overview</h2>
<li>Change the password associated with a loginid.</li>
- <li>Obtain a complete list of all loginids.</li>
+ <li>Obtain a complete list of all login ids.</li>
</ol>
<p>The Courier authentication library provides alternative
<li>Use a table in a PostgreSQL database for
authentication.</li>
+
+ <li>Use a table in an SQLite file for authentication.</li>
</ol>
<p>All Courier components that use this authentication library,
<?xml version="1.0"?>
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Courier Authentication Library</title><link rel="stylesheet" href="style.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"/><link rel="home" href="#authlib" title="Courier Authentication Library"/><link rel="next" href="#authpwd" title="The authpwd authentication module"/><link xmlns="" rel="stylesheet" type="text/css" href="manpage.css"/><meta xmlns="" name="MSSmartTagsPreventParsing" content="TRUE"/><link xmlns="" rel="icon" href="icon.gif" type="image/gif"/><!--
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Courier Authentication Library</title><link rel="stylesheet" type="text/css" href="style.css"/><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"/><link rel="home" href="#authlib" title="Courier Authentication Library"/><link rel="next" href="#authpwd" title="The authpwd authentication module"/><link xmlns="" rel="stylesheet" type="text/css" href="manpage.css"/><meta xmlns="" name="MSSmartTagsPreventParsing" content="TRUE"/><link xmlns="" rel="icon" href="icon.gif" type="image/gif"/><!--
Copyright 1998 - 2009 Double Precision, Inc. See COPYING for distribution
information.
---></head><body><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="authlib" shape="rect"> </a>Courier Authentication Library</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#authpwd" shape="rect">The <code class="literal">authpwd</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authshadow" shape="rect">The <code class="literal">authshadow</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpam" shape="rect">The <code class="literal">authpam</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipe" shape="rect">The <code class="literal">authpipe</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipeproto" shape="rect">The <code class="literal">authpipe</code> protocol</a></span></dt><dt><span class="sect1"><a href="#authuserdb" shape="rect">The <code class="literal">authuserdb</code> authentication module</a></span></dt><dd><dl><dt><span class="sect2"><a href="#userdbprimer" shape="rect">A brief <code class="literal">userdb</code> primer</a></span></dt><dt><span class="sect2"><a href="#userdbsimple" shape="rect">A simple userdb setup</a></span></dt><dt><span class="sect2"><a href="#userdbcomplex" shape="rect">Large virtual domain farm</a></span></dt><dt><span class="sect2"><a href="#moreuserdb" shape="rect">Beyond <code class="literal">userdb</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="#authmysql" shape="rect">The <code class="literal">authmysql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpgsql" shape="rect">The <code class="literal">authpgsql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authldap" shape="rect">The <code class="literal">authldap</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authcustom" shape="rect"><code class="literal">authcustom</code></a></span></dt><dt><span class="sect1"><a href="#options" shape="rect">Account options</a></span></dt><dt><span class="sect1"><a href="#authtest" shape="rect">Running <span class="command"><strong>authtest</strong></span></a></span></dt><dd><dl><dt><span class="sect2"><a href="#pwchange" shape="rect">Changing account passwords</a></span></dt></dl></dd><dt><span class="sect1"><a href="#internals" shape="rect">Authentication internals</a></span></dt><dt><span class="sect1"><a href="#files" shape="rect">FILES</a></span></dt><dt><span class="sect1"><a href="#seealso" shape="rect">SEE ALSO</a></span></dt></dl></div><p>
+--></head><body><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="authlib" shape="rect"> </a>Courier Authentication Library</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="#authpwd" shape="rect">The <code class="literal">authpwd</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authshadow" shape="rect">The <code class="literal">authshadow</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpam" shape="rect">The <code class="literal">authpam</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipe" shape="rect">The <code class="literal">authpipe</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipeproto" shape="rect">The <code class="literal">authpipe</code> protocol</a></span></dt><dt><span class="sect1"><a href="#authuserdb" shape="rect">The <code class="literal">authuserdb</code> authentication module</a></span></dt><dd><dl><dt><span class="sect2"><a href="#userdbprimer" shape="rect">A brief <code class="literal">userdb</code> primer</a></span></dt><dt><span class="sect2"><a href="#userdbsimple" shape="rect">A simple userdb setup</a></span></dt><dt><span class="sect2"><a href="#userdbcomplex" shape="rect">Large virtual domain farm</a></span></dt><dt><span class="sect2"><a href="#moreuserdb" shape="rect">Beyond <code class="literal">userdb</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="#authmysql" shape="rect">The <code class="literal">authmysql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpgsql" shape="rect">The <code class="literal">authpgsql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authsqlite" shape="rect">The <code class="literal">authsqlite</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authldap" shape="rect">The <code class="literal">authldap</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authcustom" shape="rect"><code class="literal">authcustom</code></a></span></dt><dt><span class="sect1"><a href="#options" shape="rect">Account options</a></span></dt><dt><span class="sect1"><a href="#authtest" shape="rect">Running <span class="command"><strong>authtest</strong></span></a></span></dt><dd><dl><dt><span class="sect2"><a href="#pwchange" shape="rect">Changing account passwords</a></span></dt></dl></dd><dt><span class="sect1"><a href="#internals" shape="rect">Authentication internals</a></span></dt><dt><span class="sect1"><a href="#files" shape="rect">FILES</a></span></dt><dt><span class="sect1"><a href="#seealso" shape="rect">SEE ALSO</a></span></dt></dl></div><p>
This library is used for two purposes:</p><p>
1. Read the name of a mail account.
Determine the local account's home directory, and system userid and
The library contains several alternative authentication modules to choose
from, described below.</p><p>
The configuration file <code class="filename">@authdaemonrc@</code> contains several
-settings. The most important of them are:</p><div class="itemizedlist"><ul type="disc"><li><p>
+settings. The most important of them are:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
A list of authentication modules to activate.
By default, this list includes all available authentication modules,
even if some are not actually installed at the moment.
Installing the sub-package is the only action needed to make use of it.</p><p>
The only time the list of authentication modules need to be adjusted is
when an available authentication module must be disabled for some reason.
-This should only be needed in the most unusual circumstances.</p></li><li><p>
+This should only be needed in the most unusual circumstances.</p></li><li class="listitem"><p>
Number of authentication processes.
The default setting is to start five authentication processes, which should be
sufficient for normal usage.
Try increasing this setting if its taking too long to log into an account,
and you have determined that this is not due to a bottleneck in the whatever
-authentication database you're using (LDAP, MySQL, or PostgreSQL).</p><p>
+authentication database you're using (LDAP, MySQL, SQLite,
+or PostgreSQL).</p><p>
An authentication request must be completed within thirty seconds, otherwise
it gets rejected.
When authentication requests come in faster than all five authentication
If all the activity maxes out the CPU or I/O bandwidth,
nothing can be done about it, short
of getting another server. However if there's plenty of available CPU and
-I/O, increasing the number of processes will do the trick.</p></li></ul></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpwd" shape="rect"> </a>The <code class="literal">authpwd</code> authentication module</h2></div></div></div><p>
+I/O, increasing the number of processes will do the trick.</p></li></ul></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpwd" shape="rect"> </a>The <code class="literal">authpwd</code> authentication module</h2></div></div></div><p>
This modules obtains account information and passwords from the
<code class="filename">/etc/passwd</code> file.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
This module doesn't actually read the <code class="filename">/etc/passwd</code>
file, it uses the C library's getpw() functions.
The C library implementation could use any mechanism to obtain the equivalent
-information.</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authshadow" shape="rect"> </a>The <code class="literal">authshadow</code> authentication module</h2></div></div></div><p>
+information.</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authshadow" shape="rect"> </a>The <code class="literal">authshadow</code> authentication module</h2></div></div></div><p>
This module is a version of the <code class="literal">authpwd</code> module that
reads passwords
from <code class="filename">/etc/shadow</code> (the C library's getsp()
-functions).</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpam" shape="rect"> </a>The <code class="literal">authpam</code> authentication module</h2></div></div></div><p>
+functions).</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpam" shape="rect"> </a>The <code class="literal">authpam</code> authentication module</h2></div></div></div><p>
This modules uses the system's PAM library
(pluggable authentication modules) for authentication.
This is, essentially, a way to use existing PAM modules for authentication.
Additional configuration steps will be required to set up
the PAM library to authenticate Courier's services.
Courier's IMAP and POP3 servers, for example, require that the
-“<span class="quote">imap</span>” and “<span class="quote">pop3</span>” PAM service to be
+<span class="quote">“<span class="quote">imap</span>”</span> and <span class="quote">“<span class="quote">pop3</span>”</span> PAM service to be
configured.</p><p>
The specific configuration steps differ from system to system.
Consult the system documentation for more information.
Some PAM libraries use
<code class="filename">pam_pwdb.so</code> instead of
<code class="filename">pam_unix.so</code>; consult the PAM library's
-documentation for more information.</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpipe" shape="rect"> </a>The <code class="literal">authpipe</code> authentication module</h2></div></div></div><p>This is a generic plug-in module that runs an external script,
+documentation for more information.</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpipe" shape="rect"> </a>The <code class="literal">authpipe</code> authentication module</h2></div></div></div><p>This is a generic plug-in module that runs an external script,
or a program, in response to authentication requests.</p><p>The external program reads from stdin and writes to stdout. It
can be persistent and handle many authentication requests. Only one request
will be sent to it at a time; each authdaemon process starts its own copy of
<code class="literal">--with-pipeprog</code> configure option,
which defaults to
<code class="filename">@sysconfdir@/authlib/authProg</code>. A sample program
-is included in the courier-authlib source.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpipeproto" shape="rect"> </a>The <code class="literal">authpipe</code> protocol</h2></div></div></div><p>
+is included in the courier-authlib source.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpipeproto" shape="rect"> </a>The <code class="literal">authpipe</code> protocol</h2></div></div></div><p>
authpipe uses the same protocol as authdaemon clients use to communicate
with authdaemond.</p><p>There are four possible requests: <code class="literal">PRE</code>,
<code class="literal">AUTH</code>, <code class="literal">PASSWD</code> and
<code class="literal">ENUMERATE</code>. Apart from <code class="literal">AUTH</code>, each
request is a single line terminated by newline.
-</p><div class="variablelist"><dl><dt><span class="term">PRE . <em class="replaceable"><code>authservice</code></em> <em class="replaceable"><code>username</code></em> <span class="emphasis"><em><newline></em></span></span></dt><dd><p>Look up data for an account.
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">PRE . <em class="replaceable"><code>authservice</code></em> <em class="replaceable"><code>username</code></em> <span class="emphasis"><em><newline></em></span></span></dt><dd><p>Look up data for an account.
<em class="replaceable"><code>authservice</code></em> identifies the service the
user is trying to use - e.g. pop3, imap, webmail etc.</p><p>If the account exists, return the account
data as a series of ATTR=value newline-terminated lines, followed by a
such as a database being down or an error occuring mid-way through
returning account data, authProg should terminate before sending
the terminating period.
- </p></dd></dl></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authuserdb" shape="rect"> </a>The <code class="literal">authuserdb</code> authentication module</h2></div></div></div><p>
+ </p></dd></dl></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authuserdb" shape="rect"> </a>The <code class="literal">authuserdb</code> authentication module</h2></div></div></div><p>
This module
uses a GDBM or a DB-based
<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a> database.
Instead, a fast database lookup can retrieve the same information from the
database file.
Review the included manual pages, starting with
-<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a>, for more information.</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="userdbprimer" shape="rect"> </a>A brief <code class="literal">userdb</code> primer</h3></div></div></div><p>
+<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a>, for more information.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="userdbprimer" shape="rect"> </a>A brief <code class="literal">userdb</code> primer</h3></div></div></div><p>
<code class="literal">userdb</code> is a way to implement many virtual mailboxes - many
mailboxes that do not have to have a separate system userid allocated for
each one, and there is no system login associated with each mailbox.
maildirs. It should be scalable to thousands of mailboxes. It can also be
used to replace linear searches of <code class="filename">/etc/passwd</code> with a database
lookup, see
-<a class="ulink" href="pw2userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">pw2userdb</span>(8)</span></a>.</p><p>
+<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a>.</p><p>
Note - you still MUST use some valid system userid and groupid that is
shared by all virtual mailboxes. Instead of allocating a single userid and
groupid per each mailbox, the same userid and groupid is used for all of
The best way to describe how <code class="literal">userdb</code> works is to try to create
one virtual mail account. As mentioned before, virtual mailboxes still need
one system account to be used for uid/gid purposes. Let's call this system
-account "vmail".</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="userdbsimple" shape="rect"> </a>A simple userdb setup</h3></div></div></div><p>
+account "vmail".</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="userdbsimple" shape="rect"> </a>A simple userdb setup</h3></div></div></div><p>
This approach should be used if you do not have many virtual mailboxes.
It's very simple, but quickly becomes cumbersome if you administer many
virtual mailboxes.</p><p>Create an empty <code class="filename">@userdb@</code> file:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
You may need to specify a full path to your <span class="command"><strong>maildirmake</strong></span>
program. The end result is that you created
<code class="filename">$HOME/john-example</code> in vmail's account, which
-can be thought of as a “<span class="quote">virtual home directory</span>” for
-“<span class="quote">john@example.com</span>”, that contains the account's maildir
+can be thought of as a <span class="quote">“<span class="quote">virtual home directory</span>”</span> for
+<span class="quote">“<span class="quote">john@example.com</span>”</span>, that contains the account's maildir
mailbox.</p><p>
Now, let's connect the dots here, and create an entry in
<code class="filename">@userdb@</code> for <code class="filename">john@example.com</code>:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
installed, by default in <code class="filename">@sbindir@</code>. Replace UUU and
GGG with the userid and groupid of the vmail account. If you now look in
<code class="filename">@userdb@</code>, you will see that a new record for
-“<span class="quote">john@example.com</span>”
+<span class="quote">“<span class="quote">john@example.com</span>”</span>
has been appended to the end of the file.</p><p>
One more detail: we need to set the IMAP password for this
mailbox:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
<code class="filename">@userdb@shadow.dat</code> only. The plain text source,
<code class="filename">@userdb@</code> is not read by Courier itself. Changes take
effect
-only when <span class="command"><strong>makeuserdb</strong></span> runs.</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="userdbcomplex" shape="rect"> </a>Large virtual domain farm</h3></div></div></div><p>
+only when <span class="command"><strong>makeuserdb</strong></span> runs.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="userdbcomplex" shape="rect"> </a>Large virtual domain farm</h3></div></div></div><p>
The previous approach used a single flat file, <code class="filename">@userdb@</code>.
This
will work for up to a couple of hundred accounts.
</pre></div><p>
This sets the IMAP access password for this account. Finally:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
$ makeuserdb
-</pre></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="moreuserdb" shape="rect"> </a>Beyond <code class="literal">userdb</code></h3></div></div></div><p>
+</pre></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="moreuserdb" shape="rect"> </a>Beyond <code class="literal">userdb</code></h3></div></div></div><p>
<code class="literal">userdb</code> is a simple, straightforward solution that scales
to a couple of thousand of mail accounts, depending on the hardware.
Beyond that, one of database-based modules will need to be used,
such as
<code class="literal">authldap</code>,
<code class="literal">authmysql</code>,
+<code class="literal">authsqlite</code>,
<code class="literal">authpgsql</code>.
Since <code class="literal">userdb</code> is maintained as plain text files that
are easily parsed by a script, migrating data from userdb will not be
-difficult.</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authmysql" shape="rect"> </a>The <code class="literal">authmysql</code> authentication module</h2></div></div></div><p>
+difficult.</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authmysql" shape="rect"> </a>The <code class="literal">authmysql</code> authentication module</h2></div></div></div><p>
This module reads
the list of mail accounts and passwords from a table in a
MySQL database.
The <code class="filename">@authmysqlrc@</code> configuration file defines the
particular details regarding the MySQL database and the schema of the
-mail account table.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpgsql" shape="rect"> </a>The <code class="literal">authpgsql</code> authentication module</h2></div></div></div><p>
+mail account table.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authpgsql" shape="rect"> </a>The <code class="literal">authpgsql</code> authentication module</h2></div></div></div><p>
This module reads
the list of mail accounts and passwords from a table in a
PostgreSQL database.
The <code class="filename">@authpgsqlrc@</code> configuration file defines the
particular details regarding the PostgreSQL database and the schema of the
-mail account table.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authldap" shape="rect"> </a>The <code class="literal">authldap</code> authentication module</h2></div></div></div><p>
+mail account table.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authsqlite" shape="rect"> </a>The <code class="literal">authsqlite</code> authentication module</h2></div></div></div><p>
+This module reads
+the list of mail accounts and passwords from a table in a
+SQLite database file.
+The <code class="filename">@authsqliterc@</code> configuration file defines the
+particular details regarding the SQLite database file and the schema of the
+mail account table.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authldap" shape="rect"> </a>The <code class="literal">authldap</code> authentication module</h2></div></div></div><p>
This module reads
the list of mail accounts and passwords from an LDAP directory.
The <code class="filename">@authldaprc@</code> configuration file defines the
A suggested LDAP schema can be found in the file
<code class="filename">authldap.schema</code>,
which is included in Courier authentication library's source code, and
-may be installed on your system.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authcustom" shape="rect"> </a><code class="literal">authcustom</code></h2></div></div></div><p>
+may be installed on your system.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authcustom" shape="rect"> </a><code class="literal">authcustom</code></h2></div></div></div><p>
This is a do-nothing module where custom authentication code
can be added.
This authentication module is just a stub that doesn't really do anything.
It's purpose is to serve as a placeholder where custom authentication code
-can be easily implement.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="options" shape="rect"> </a>Account options</h2></div></div></div><p>
+can be easily implement.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="options" shape="rect"> </a>Account options</h2></div></div></div><p>
The authentication library has a facility for keep arbitrary
-“<span class="quote">name=value</span>”-type settings,
-called “<span class="quote">options</span>”, for individual accounts. This feature is
+<span class="quote">“<span class="quote">name=value</span>”</span>-type settings,
+called <span class="quote">“<span class="quote">options</span>”</span>, for individual accounts. This feature is
only available with
<code class="literal">userdb</code>,
-<code class="literal">LDAP</code>, <code class="literal">MySQL</code>, and
+<code class="literal">LDAP</code>, <code class="literal">MySQL</code>, <code class="literal">SQLite</code> and
<code class="literal">PostgresSQL</code>
modules. Individual account options are not supported with
system-based authentication modules (password/shadow files, or PAM).</p><p>
-See the
+See
<a class="ulink" href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>
for a description of option names used by various Courier packages.
Other applications can make up names for their own settings, and
use them in the same way.</p><p>
Account options are specified via the authentication modules in the
-following manner:</p><div class="variablelist"><dl><dt><span class="term"><code class="literal">userdb</code></span></dt><dd><p>
+following manner:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="literal">userdb</code></span></dt><dd><p>
Use the <span class="command"><strong>userdb</strong></span> command to set a field called
"<code class="literal">options</code>". Example:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
userdb user1@example.com set options=disableimap=1,sharedgroup=44
of "shared=sharedgroup,disableimap" means that the LDAP attribute
called "shared" contains the "sharedgroup" setting, as described
previously; and an LDAP attribute of disableimap contains the setting
-of the same name.</p></dd><dt><span class="term"><span class="application">MySQL</span>, and <span class="application">PostgreSQL</span></span></dt><dd><p>
-Account options are defined by <code class="literal">MYSQL_AUXOPTIONS_FIELD</code>
+of the same name.</p></dd><dt><span class="term"><span class="application">MySQL</span>,
+<span class="application">SQLite</span>, and <span class="application">PostgreSQL</span></span></dt><dd><p>
+Account options are defined by <code class="literal">MYSQL_AUXOPTIONS_FIELD</code>,
+<code class="literal">SQLITE_AUXOPTIONS_FIELD</code>,
or <code class="literal">POSTGRESQL_AUXOPTIONS_FIELD</code>, in its corresponding
configuration file. In the most simplest case, add a character field to
the database, and put the field name into the
-<code class="literal">MYSQL_AUXOPTIONS_FIELD</code> or
+<code class="literal">MYSQL_AUXOPTIONS_FIELD</code>,
+<code class="literal">SQLITE_AUXOPTIONS_FIELD</code>, or
<code class="literal">POSTGRESQL_AUXOPTIONS_FIELD</code> configuration file setting.
For each account, the character field should contain the literal option
string. Yes, you'll just put "shared=sharedgroup,disableimap"
literally, in that field.</p><p>
Fortunately, there is a cleaner way to do this, which avoid driving
a database designer batty. Keep in mind that the contents of
-<code class="literal">MYSQL_AUXOPTIONS_FIELD</code>/<code class="literal">POSTGRESQL_AUXOPTIONS_FIELD</code>
+<code class="literal">MYSQL_AUXOPTIONS_FIELD</code>/<code class="literal">SQLITE_AUXOPTIONS_FIELD</code>/<code class="literal">POSTGRESQL_AUXOPTIONS_FIELD</code>
are simply inserted directly into the SQL query that fetches the
-account information. Both MySQL and PostgreSQL have a rich SQL that can
+account information. MySQL, SQLite, and PostgreSQL have a rich SQL that can
be used to manufacture a suitable option string from plain,
garden-variety, database fields. That is, you may define individual
table fields like "disableimap", and "disablepop3", then provide a
the expected option string. An example of such an SQL string is
provided in the comments portion of the configuration file.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
When using the alternative custom query option, the option string
- is the last field that the custom SQL query should return.</p></div></dd></dl></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authtest" shape="rect"> </a>Running <span class="command"><strong>authtest</strong></span></h2></div></div></div><p>
+ is the last field that the custom SQL query should return.</p></div></dd></dl></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
+The following list of account options is a combined list of implemented
+options supported by Courier, Courier-IMAP, and
+SqWebMail packages. Some of the following information is obviously
+not applicable for a particular package.
+The inapplicable bits should be obvious.</p></div><p>
+The following options are recognized by the various Courier
+packages:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="literal">disableimap=</code><em class="replaceable"><code>n</code></em></span></dt><dd><p>
+If "n" is 1, IMAP access to this account should be disabled.</p></dd><dt><span class="term"><code class="literal">disablepop3=</code><em class="replaceable"><code>n</code></em></span></dt><dd><p>
+If "n" is 1, POP3 access to this account should be disabled.</p></dd><dt><span class="term"><code class="literal">disableinsecureimap=</code><em class="replaceable"><code>n</code></em></span></dt><dd><p>
+If "n" is 1, unencrypted IMAP access to this account should be disabled.</p></dd><dt><span class="term"><code class="literal">disableinsecurepop3=</code><em class="replaceable"><code>n</code></em></span></dt><dd><p>
+If "n" is 1, unencrypted POP3 access to this account should be disabled.</p></dd><dt><span class="term"><code class="literal">disablewebmail=</code><em class="replaceable"><code>n</code></em></span></dt><dd><p>
+If "n" is 1, webmail access to this account should be disabled.</p></dd><dt><span class="term"><code class="literal">disableshared=</code><em class="replaceable"><code>n</code></em></span></dt><dd><p>
+If "n" is 1, this account should not have access to shared folders or be able
+to share its own folders with other people.</p></dd><dt><span class="term"><code class="literal">group=</code><em class="replaceable"><code>name</code></em></span></dt><dd><p>
+This option is used by Courier-IMAP in calculating access control lists.
+This option places the account as a member of access group
+<em class="replaceable"><code>name</code></em>.
+Instead of granting access rights on individual mail folders to individual
+accounts, the access rights can be granted to an access group
+<span class="quote">“<span class="quote">name</span>”</span>, and all members of this group get the specified access
+rights.</p><p>
+The access group name <span class="quote">“<span class="quote">administrators</span>”</span> is a reserved group.
+All accounts in the <code class="literal">administrators</code> group automatically
+receive all rights to all accessible folders.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
+This option may be specified multiple times to specify that the account
+belongs to multiple account groups.</p></div></dd><dt><span class="term"><code class="literal">sharedgroup=</code><em class="replaceable"><code>name</code></em></span></dt><dd><p>
+Another option used by Courier-IMAP.
+Append "name" to the name of the top level virtual shared folder
+index file. This setting restricts which virtual shared folders this
+account could possibly access (and that's on top of whatever else the
+access control lists say). See the virtual shared folder documentation
+for more information.</p><p>
+For technical reasons, group names may not include comma, tab, "/" or "|"
+characters.</p></dd></dl></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authtest" shape="rect"> </a>Running <span class="command"><strong>authtest</strong></span></h2></div></div></div><p>
The <span class="command"><strong>authtest</strong></span> command may be used to verify that the
authentication library is working:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
authtest userid
command attemps to change the account's password.
The second argument is the old password, the third argument is the
new password.</p><p>
-See <a class="ulink" href="README.authdebug.html" target="_top" shape="rect"><code class="filename">README.authdebug.html</code></a> for more information.</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="pwchange" shape="rect"> </a>Changing account passwords</h3></div></div></div><p>For the virtual domain modules (<code class="literal">authldap</code>,
-<code class="literal">authmysql</code>, <code class="literal">authpgsql</code> and friends) changing the
+See <a class="ulink" href="README.authdebug.html" target="_top" shape="rect"><code class="filename">README.authdebug.html</code></a> for more information.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="pwchange" shape="rect"> </a>Changing account passwords</h3></div></div></div><p>For the virtual domain modules (<code class="literal">authldap</code>,
+<code class="literal">authmysql</code>,
+<code class="literal">authsqlite</code>,
+<code class="literal">authpgsql</code> and friends) changing the
login is a no-brainer. The tricky situation is when SqWebMail uses system
passwords to log in (the <code class="literal">authpwd</code>, <code class="literal">authshadow</code>, or
<code class="literal">authpam</code> authentication module). Different systems use different
messages from <span class="command"><strong>passwd</strong></span> will not be shown by.</p><p>
The <span class="command"><strong>expect</strong></span> script is installed as
<code class="filename">/usr/local/libexec/courier-authlib/authsystem.passwd</code>
-(assuming default options to the <span class="command"><strong>configure</strong></span> script).</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="internals" shape="rect"> </a>Authentication internals</h2></div></div></div><p>
-The following structure describes an authentication module:</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="authstaticinfo" shape="rect"> </a><p class="title"><b>Example 1. struct authstaticinfo</b></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
+(assuming default options to the <span class="command"><strong>configure</strong></span> script).</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="internals" shape="rect"> </a>Authentication internals</h2></div></div></div><p>
+The following structure describes an authentication module:</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="authstaticinfo" shape="rect"> </a><p class="title"><strong>Example 1. struct authstaticinfo</strong></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
struct authstaticinfo {
const char *auth_name;
int (*auth_func)(const char *, const char *, char *, int,
</pre></div></div><br class="example-break" clear="none"/></blockquote></div><p>
An authentication module is a shared library that defines a single function
called
-“<span class="quote">courier_auth_<em class="replaceable"><code>NAME</code></em>_init</span>”, where
-“<span class="quote">NAME</span>” is the name of the authentication module.
+<span class="quote">“<span class="quote">courier_auth_<em class="replaceable"><code>NAME</code></em>_init</span>”</span>, where
+<span class="quote">“<span class="quote">NAME</span>”</span> is the name of the authentication module.
The shared library does not need to export any other symbols, this is the
only function that needs to be exported.
The function returns a pointer to the <span class="structname">authstaticinfo</span>
structure.
For example, the relevant code from the <code class="literal">authmysql</code> module is:
-</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="authmysqlex" shape="rect"> </a><p class="title"><b>Example 2. authmysql</b></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
+</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="authmysqlex" shape="rect"> </a><p class="title"><strong>Example 2. authmysql</strong></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
static struct authstaticinfo authmysql_info={
"authmysql",
auth_mysql,
}
</pre></div></div><br class="example-break" clear="none"/></blockquote></div><p>
<code class="function">auth_func</code> points to a function that handles an
-authentication request. The function is invoked as follows:</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="auth_func" shape="rect"> </a><p class="title"><b>Example 3. auth_func</b></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
+authentication request. The function is invoked as follows:</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="auth_func" shape="rect"> </a><p class="title"><strong>Example 3. auth_func</strong></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
int result=auth_func(const char *service, const char *authtype,
const char *authdata,
int (*callback_func)(struct authinfo *, void *),
void *callback_arg);
</pre></div></div><br class="example-break" clear="none"/></blockquote></div><p>
-“<span class="quote">service</span>” is the name of the service being authenticated,
-such as “<span class="quote"><code class="literal">imap</code></span>” or
-“<span class="quote"><code class="literal">pop3</code></span>”.
-“<span class="quote">authtype</span>” defines the authentication format,
-and “<span class="quote">authdata</span>” is the actual authentication request.</p><p>
+<span class="quote">“<span class="quote">service</span>”</span> is the name of the service being authenticated,
+such as <span class="quote">“<span class="quote"><code class="literal">imap</code></span>”</span> or
+<span class="quote">“<span class="quote"><code class="literal">pop3</code></span>”</span>.
+<span class="quote">“<span class="quote">authtype</span>”</span> defines the authentication format,
+and <span class="quote">“<span class="quote">authdata</span>”</span> is the actual authentication request.</p><p>
Two authentication formats are defined at this time.
-The “<span class="quote">authtype</span>” string is set to one of the following
-strings:</p><div class="variablelist"><dl><dt><span class="term">“<span class="quote">login</span>”</span></dt><dd><p>
+The <span class="quote">“<span class="quote">authtype</span>”</span> string is set to one of the following
+strings:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><span class="quote">“<span class="quote">login</span>”</span></span></dt><dd><p>
Tradition userid/password authentication.
<code class="literal">authdata</code> points to a string that consists of:
the userid; a newline character; the password; a final newline
-character.</p></dd><dt><span class="term">“<span class="quote">cram-md5</span>”, or “<span class="quote">cram-sha1</span>”</span></dt><dd><p>
+character.</p></dd><dt><span class="term"><span class="quote">“<span class="quote">cram-md5</span>”</span>, or <span class="quote">“<span class="quote">cram-sha1</span>”</span></span></dt><dd><p>
Challenge/response authentication.
<code class="literal">authdata</code> points to a string that consists of:
the base64-encoded challenge; a newline character;
After the callback function returns this structure can be deallocated.
The authentication module initializes the following fields:</p><p>
<code class="function">auth_pre_func</code> points to a function that obtains
-account information. The function is invoked as follows:</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="auth_pre_func" shape="rect"> </a><p class="title"><b>Example 4. auth_pre_func</b></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
+account information. The function is invoked as follows:</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="auth_pre_func" shape="rect"> </a><p class="title"><strong>Example 4. auth_pre_func</strong></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
int auth_pre_func(const char *user, const char *service,
int (*callback)(struct authinfo *, void *), void *arg);
</pre></div></div><br class="example-break" clear="none"/></blockquote></div><p>
-This function does the same thing as “<span class="quote">auth_func</span>” except that
+This function does the same thing as <span class="quote">“<span class="quote">auth_func</span>”</span> except that
the password is not actually verified.
If the account exists, the callback function is invoked with the
same callback arguments.</p><p>
resulting in an error the next time an authentication request is
received.</p><p>
<code class="function">auth_changepwd</code> points to a function that will be
-invoked to change a password on an account, as follows.</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="auth_changepwd" shape="rect"> </a><p class="title"><b>Example 5. auth_changepwd</b></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
+invoked to change a password on an account, as follows.</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="auth_changepwd" shape="rect"> </a><p class="title"><strong>Example 5. auth_changepwd</strong></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
int auth_changepwd(const char *service, const char *user,
const char *oldpw, const char *newpw);
</pre></div></div><br class="example-break" clear="none"/></blockquote></div><p>
<code class="literal">service</code> is the name of the service whose password is to
-be changed (such as “<span class="quote">imap</span>” or “<span class="quote">pop3</span>”).
+be changed (such as <span class="quote">“<span class="quote">imap</span>”</span> or <span class="quote">“<span class="quote">pop3</span>”</span>).
<code class="function">auth_changepwd</code> should return 0 if the password was
changed succesfully, a negative value if <code class="literal">user</code> is invalid
(the next authentication module will be tried), or a positive value if
the callback function one last time, with a NULL pointer for the login ID,
then returns. If an error is encountered while enumerating the login IDs,
<code class="function">auth_enumerate</code> terminates without invoking
-the callback function with a NULL login ID.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="files" shape="rect"> </a>FILES</h2></div></div></div><p>
+the callback function with a NULL login ID.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="files" shape="rect"> </a>FILES</h2></div></div></div><p>
<code class="filename"> @authdaemonrc@</code> - <span class="command"><strong>authdaemond</strong></span> configuration file</p><p>
<code class="filename"> @authldaprc@</code> - <span class="command"><strong>authldap</strong></span> configuration file</p><p>
<code class="filename"> @authmysqlrc@</code> - <span class="command"><strong>authmysql</strong></span> configuration file</p><p>
-<code class="filename"> @authpgsqlrc@</code> - <span class="command"><strong>authpgsql</strong></span> configuration file</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="seealso" shape="rect"> </a>SEE ALSO</h2></div></div></div><p>
+<code class="filename"> @authsqliterc@</code> - <span class="command"><strong>authsqlite</strong></span> configuration file</p><p>
+<code class="filename"> @authpgsqlrc@</code> - <span class="command"><strong>authpgsql</strong></span> configuration file</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="seealso" shape="rect"> </a>SEE ALSO</h2></div></div></div><p>
<a class="ulink" href="courier.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">courier</span>(8)</span></a>,
<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a></p></div></div></body></html>
-# generated automatically by aclocal 1.11 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# Portability macros for glibc argz. -*- Autoconf -*-
#
;; #(
*) lt_cv_sys_argz_works=yes ;;
esac]])
- AS_IF([test $lt_cv_sys_argz_works = yes],
+ AS_IF([test "$lt_cv_sys_argz_works" = yes],
[AC_DEFINE([HAVE_WORKING_ARGZ], 1,
[This value is set to 1 to indicate that the system argz facility works])],
[ARGZ_H=argz.h
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
m4_define([_LT_COPYING], [dnl
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
])
-# serial 56 LT_INIT
+# serial 57 LT_INIT
# LT_PREREQ(VERSION)
# ------------------
AC_DEFUN([LT_INIT],
[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
AC_BEFORE([$0], [LT_LANG])dnl
AC_BEFORE([$0], [LT_OUTPUT])dnl
AC_BEFORE([$0], [LTDL_INIT])dnl
AC_REQUIRE([LTOBSOLETE_VERSION])dnl
m4_require([_LT_PROG_LTMAIN])dnl
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
dnl Parse OPTIONS
_LT_SET_OPTIONS([$0], [$1])
*) break;;
esac
done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
])
m4_defun([_LT_SETUP],
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
_LT_DECL([], [host_alias], [0], [The host system])dnl
_LT_DECL([], [host], [0])dnl
_LT_DECL([], [host_os], [0])dnl
dnl
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
m4_require([_LT_CMD_RELOAD])dnl
m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
m4_require([_LT_CMD_OLD_ARCHIVE])dnl
m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
_LT_CONFIG_LIBTOOL_INIT([
# See if we are running on zsh, and set the options which allow our
_LT_CHECK_OBJDIR
m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
case $host_os in
aix3*)
;;
esac
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
# Global variables:
ofile=libtool
can_build_shared=yes
])# _LT_SETUP
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
# _LT_PROG_LTMAIN
# ---------------
# Note that this code is called both from `configure', and `config.status'
# declaration there will have the same value as in `configure'. VARNAME
# must have a single quote delimited value for this to work.
m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
# _LT_CONFIG_STATUS_DECLARATIONS
# embedded single quotes properly. In configure, this macro expands
# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
#
-# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
[m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
LTCFLAGS='$LTCFLAGS'
compiler='$compiler_DEFAULT'
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
# Quote evaled strings.
for var in lt_decl_all_varnames([[ \
]], lt_decl_quote_varnames); do
- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
# Double-quote double-evaled strings.
for var in lt_decl_all_varnames([[ \
]], lt_decl_dquote_varnames); do
- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
esac
done
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
- lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
- ;;
-esac
-
_LT_OUTPUT_LIBTOOL_INIT
])
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable. If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins. After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script. The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
# LT_OUTPUT
# ---------
AC_DEFUN([LT_OUTPUT],
[: ${CONFIG_LT=./config.lt}
AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
+lt_cl_silent=false
exec AS_MESSAGE_LOG_FD>>config.log
{
echo
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
# appending to config.log, which fails on DOS, as config.log is still kept
# open by configure. Here we exec the FD to /dev/null, effectively closing
# config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
- lt_cl_success=:
- test "$silent" = yes &&
- lt_config_lt_args="$lt_config_lt_args --quiet"
- exec AS_MESSAGE_LOG_FD>/dev/null
- $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
- exec AS_MESSAGE_LOG_FD>>config.log
- $lt_cl_success || AS_EXIT(1)
-fi
+lt_cl_success=:
+test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
])# LT_OUTPUT
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
+ sed '$q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
- _LT_PROG_XSI_SHELLFNS
+ _LT_PROG_REPLACE_SHELLFNS
- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- mv -f "$cfgfile" "$ofile" ||
+ mv -f "$cfgfile" "$ofile" ||
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
],
m4_case([$1],
[C], [_LT_LANG(C)],
[C++], [_LT_LANG(CXX)],
+ [Go], [_LT_LANG(GO)],
[Java], [_LT_LANG(GCJ)],
[Fortran 77], [_LT_LANG(F77)],
[Fortran], [_LT_LANG(FC)],
])# _LT_LANG
+m4_ifndef([AC_PROG_GO], [
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_GO. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC], [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+ fi
+fi
+if test -z "$GOC"; then
+ AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
# _LT_LANG_DEFAULT_CONFIG
# -----------------------
m4_defun([_LT_LANG_DEFAULT_CONFIG],
m4_ifdef([LT_PROG_GCJ],
[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+ [LT_LANG(GO)],
+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
AC_PROVIDE_IFELSE([LT_PROG_RC],
[LT_LANG(RC)],
[m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
dnl AC_DEFUN([AC_LIBTOOL_F77], [])
dnl AC_DEFUN([AC_LIBTOOL_FC], [])
dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
# _LT_TAG_COMPILER
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
_lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
rm -rf libconftest.dylib*
rm -f conftest.*
fi])
+
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
[lt_cv_ld_exported_symbols_list],
[lt_cv_ld_exported_symbols_list=no
[lt_cv_ld_exported_symbols_list=no])
LDFLAGS="$save_LDFLAGS"
])
+
+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+ [lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+ ])
case $host_os in
rhapsody* | darwin1.[[012]])
_lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
else
_lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
fi
- if test "$DSYMUTIL" != ":"; then
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
_lt_dsymutil='~$DSYMUTIL $lib || :'
else
_lt_dsymutil=
])
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
# Checks for linker and compiler features on darwin
m4_defun([_LT_DARWIN_LINKER_FEATURES],
[
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ fi
_LT_TAGVAR(link_all_deplibs, $1)=yes
_LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
case $cc_basename in
*) _lt_dar_can_shared=$GCC ;;
esac
if test "$_lt_dar_can_shared" = "yes"; then
- output_verbose_link_cmd=echo
+ output_verbose_link_cmd=func_echo_all
_LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
_LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
_LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
fi
])
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
# Links a minimal program and checks the executable
# for the system default hardcoded library path. In most cases,
# this is /usr/lib:/lib, but when the MPI compilers are used
# the location of the communication and MPI libs are included too.
# If we don't find anything, use the default library path according
# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
m4_defun([_LT_SYS_MODULE_PATH_AIX],
[m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\(.*\)$/\1/
- p
- }
- }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+ lt_aix_libpath_sed='[
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }]'
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi],[])
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+ fi
+ ])
+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
])# _LT_SYS_MODULE_PATH_AIX
# _LT_SHELL_INIT(ARG)
# -------------------
m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
- [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
# _LT_PROG_ECHO_BACKSLASH
# -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
- # Remove one level of quotation (which was required for Make).
- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
- ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X[$]1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
- # Yippee, $ECHO works!
- :
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
else
- # Restart under the correct shell.
- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<_LT_EOF
-[$]*
-_LT_EOF
- exit 0
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
fi
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
- if test "X${echo_test_string+set}" != Xset; then
- # find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
- then
- break
- fi
- done
- fi
-
- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- :
- else
- # The Solaris, AIX, and Digital Unix default echo programs unquote
- # backslashes. This makes it impossible to quote backslashes using
- # echo "$something" | sed 's/\\/\\\\/g'
- #
- # So, first we look for a working echo in the user's PATH.
-
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
- IFS="$lt_save_ifs"
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- ECHO="$dir/echo"
- break
- fi
- done
- IFS="$lt_save_ifs"
-
- if test "X$ECHO" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # This shell has a builtin print -r that does the trick.
- ECHO='print -r'
- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
- test "X$CONFIG_SHELL" != X/bin/ksh; then
- # If we have ksh, try running configure again with it.
- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
- export ORIGINAL_CONFIG_SHELL
- CONFIG_SHELL=/bin/ksh
- export CONFIG_SHELL
- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
- else
- # Try using printf.
- ECHO='printf %s\n'
- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # Cool, printf works
- :
- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
- export CONFIG_SHELL
- SHELL="$CONFIG_SHELL"
- export SHELL
- ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
- else
- # maybe with a smaller string...
- prev=:
-
- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
- then
- break
- fi
- prev="$cmd"
- done
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
- if test "$prev" != 'sed 50q "[$]0"'; then
- echo_test_string=`eval $prev`
- export echo_test_string
- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
- else
- # Oops. We lost completely, so just stick with echo.
- ECHO=echo
- fi
- fi
- fi
- fi
- fi
-fi
+case "$ECHO" in
+ printf*) AC_MSG_RESULT([printf]) ;;
+ print*) AC_MSG_RESULT([print -r]) ;;
+ *) AC_MSG_RESULT([cat]) ;;
+esac
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
- lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test "X`printf %s $ECHO`" = "X$ECHO" \
+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-AC_SUBST(lt_ECHO)
-])
_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
- [An echo program that does not interpret backslashes])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
])# _LT_PROG_ECHO_BACKSLASH
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[ --with-sysroot[=DIR] Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted. We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ AC_MSG_RESULT([${with_sysroot}])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
+ ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
# _LT_ENABLE_LOCK
# ---------------
m4_defun([_LT_ENABLE_LOCK],
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
if test "$lt_cv_prog_gnu_ld" = yes; then
case `/usr/bin/file conftest.$ac_objext` in
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
CFLAGS="$SAVE_CFLAGS"
fi
;;
-sparc*-*solaris*)
+*-*solaris*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
*)
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
LD="${LD-ld} -64"
])# _LT_ENABLE_LOCK
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+ [echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+ ])
+ ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+ [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
# _LT_CMD_OLD_ARCHIVE
# -------------------
m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
+[_LT_PROG_AR
AC_CHECK_TOOL(STRIP, strip, :)
test -z "$STRIP" && STRIP=:
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
_LT_DECL([], [old_postinstall_cmds], [2])
_LT_DECL([], [old_postuninstall_cmds], [2])
_LT_TAGDECL([], [old_archive_cmds], [2],
[Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+ [Whether to use a lock for old archive extraction])
])# _LT_CMD_OLD_ARCHIVE
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&AS_MESSAGE_LOG_FD
- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
$2=yes
if test -s conftest.err; then
# Append any errors to the config.log.
cat conftest.err 1>&AS_MESSAGE_LOG_FD
- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if diff conftest.exp conftest.er2 >/dev/null; then
$2=yes
lt_cv_sys_max_cmd_len=8192;
;;
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
amigaos*)
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
lt_cv_sys_max_cmd_len=196608
;;
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
- = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
test $i != 17 # 1/2 MB should be enough
do
i=`expr $i + 1`
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
+[#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
# endif
#endif
-void fnord() { int i=42;}
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord