3 # Test whether this shell is capable of parameter substring processing.
4 ( option='a/b'; : ${option#*/} ) 2>/dev/null || {
6 The shell interpreting '$0' is lacking some required features.
8 To work around this problem you may try to execute:
17 # Store original IFS value so it can be changed (and restored) in many places.
18 readonly DEFAULT_IFS="$IFS"
20 srcdir=$(dirname "$0")
22 subdirs="util compat lib parse-time-string completion doc emacs"
23 subdirs="${subdirs} performance-test test test/test-databases"
24 subdirs="${subdirs} bindings"
26 # For a non-srcdir configure invocation (such as ../configure), create
27 # the directory structure and copy Makefiles.
28 if [ "$srcdir" != "." ]; then
30 for dir in . ${subdirs}; do
32 cp "$srcdir"/"$dir"/Makefile.local "$dir"
33 cp "$srcdir"/"$dir"/Makefile "$dir"
36 # Easiest way to get the test suite to work is to just copy the
37 # whole thing into the build directory.
38 cp -a "$srcdir"/test/* test
40 # Emacs only likes to generate compiled files next to the .el files
41 # by default so copy these as well (which is not ideal).
42 cp -a "$srcdir"/emacs/*.el emacs
45 # Set several defaults (optionally specified by the user in
46 # environment variables)
49 CFLAGS=${CFLAGS:--g -O2}
50 CPPFLAGS=${CPPFLAGS:-}
51 CXXFLAGS_for_sh=${CXXFLAGS:-${CFLAGS}}
52 CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)}
54 XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config}
57 # We don't allow the EMACS or GZIP Makefile variables inherit values
58 # from the environment as we do with CC and CXX above. The reason is
59 # that these names as environment variables have existing uses other
60 # than the program name that we want. (EMACS is set to 't' when a
61 # shell is running within emacs and GZIP specifies arguments to pass
62 # on the gzip command line).
64 # Set the defaults for values the user can specify with command-line
74 # Compatible GMime versions (with constraints).
75 # If using GMime 2.6, we need to have a version >= 2.6.5 to avoid a
76 # crypto bug. We need 2.6.7 for permissive "From " header handling.
77 GMIME_24_VERSION_CTR=''
78 GMIME_24_VERSION="gmime-2.4 $GMIME_24_VERSION_CTR"
79 GMIME_26_VERSION_CTR='>= 2.6.7'
80 GMIME_26_VERSION="gmime-2.6 $GMIME_26_VERSION_CTR"
82 WITH_GMIME_VERSIONS="$GMIME_26_VERSION;$GMIME_24_VERSION"
87 Usage: ./configure [options]...
89 This script configures notmuch to build on your system.
91 It verifies that dependencies are available, determines flags needed
92 to compile and link against various required libraries, and identifies
93 whether various system functions can be used or if locally-provided
94 replacements will be built instead.
96 Finally, it allows you to control various aspects of the build and
99 First, some common variables can specified via environment variables:
101 CC The C compiler to use
102 CFLAGS Flags to pass to the C compiler
103 CPPFLAGS Flags to pass to the C preprocessor
104 CXX The C++ compiler to use
105 CXXFLAGS Flags to pass to the C compiler
106 LDFLAGS Flags to pass when linking
108 Each of these values can further be controlled by specifying them
109 later on the "make" command line.
111 Other environment variables can be used to control configure itself,
112 (and for which there is no equivalent build-time control):
114 XAPIAN_CONFIG The program to use to determine flags for
115 compiling and linking against the Xapian
116 library. [$XAPIAN_CONFIG]
118 Additionally, various options can be specified on the configure
121 --prefix=PREFIX Install files in PREFIX [$PREFIX]
123 By default, "make install" will install the resulting program to
124 $PREFIX/bin, documentation to $PREFIX/man, etc. You can
125 specify an installation prefix other than $PREFIX using
126 --prefix, for instance:
128 ./configure --prefix=\$HOME
130 Fine tuning of some installation directories is available:
132 --libdir=DIR Install libraries to DIR [PREFIX/lib]
133 --includedir=DIR Install header files to DIR [PREFIX/include]
134 --mandir=DIR Install man pages to DIR [PREFIX/share/man]
135 --sysconfdir=DIR Read-only single-machine data [PREFIX/etc]
136 --emacslispdir=DIR Emacs code [PREFIX/share/emacs/site-lisp]
137 --emacsetcdir=DIR Emacs miscellaneous files [PREFIX/share/emacs/site-lisp]
138 --bashcompletiondir=DIR Bash completions files [SYSCONFDIR/bash_completion.d]
139 --zshcompletiondir=DIR Zsh completions files [PREFIX/share/zsh/functions/Completion/Unix]
141 Some specific library versions can be specified (auto-detected otherwise):
143 --with-gmime-version=VERS Specify GMIME version (2.4 or 2.6)
145 Some features can be disabled (--with-feature=no is equivalent to
148 --without-bash-completion Do not install bash completions files
149 --without-docs Do not install documentation and man pages
150 --without-emacs Do not install lisp file
151 --without-ruby Do not install ruby bindings
152 --without-zsh-completion Do not install zsh completions files
154 Additional options are accepted for compatibility with other
155 configure-script calling conventions, but don't do anything yet:
157 --build=<cpu>-<vendor>-<os> Currently ignored
158 --host=<cpu>-<vendor>-<os> Currently ignored
159 --infodir=DIR Currently ignored
160 --datadir=DIR Currently ignored
161 --localstatedir=DIR Currently ignored
162 --libexecdir=DIR Currently ignored
163 --disable-maintainer-mode Currently ignored
164 --disable-dependency-tracking Currently ignored
169 # Parse command-line options
171 if [ "${option}" = '--help' ] ; then
174 elif [ "${option%%=*}" = '--prefix' ] ; then
175 PREFIX="${option#*=}"
176 elif [ "${option%%=*}" = '--libdir' ] ; then
177 LIBDIR="${option#*=}"
178 elif [ "${option%%=*}" = '--includedir' ] ; then
179 INCLUDEDIR="${option#*=}"
180 elif [ "${option%%=*}" = '--mandir' ] ; then
181 MANDIR="${option#*=}"
182 elif [ "${option%%=*}" = '--sysconfdir' ] ; then
183 SYSCONFDIR="${option#*=}"
184 elif [ "${option%%=*}" = '--emacslispdir' ] ; then
185 EMACSLISPDIR="${option#*=}"
186 elif [ "${option%%=*}" = '--emacsetcdir' ] ; then
187 EMACSETCDIR="${option#*=}"
188 elif [ "${option%%=*}" = '--bashcompletiondir' ] ; then
189 BASHCOMPLETIONDIR="${option#*=}"
190 elif [ "${option%%=*}" = '--zshcompletiondir' ] ; then
191 ZSHCOMLETIONDIR="${option#*=}"
192 elif [ "${option%%=*}" = '--with-docs' ]; then
193 if [ "${option#*=}" = 'no' ]; then
198 elif [ "${option}" = '--without-docs' ] ; then
200 elif [ "${option%%=*}" = '--with-emacs' ]; then
201 if [ "${option#*=}" = 'no' ]; then
206 elif [ "${option}" = '--without-emacs' ] ; then
208 elif [ "${option%%=*}" = '--with-bash-completion' ]; then
209 if [ "${option#*=}" = 'no' ]; then
214 elif [ "${option}" = '--without-bash-completion' ] ; then
216 elif [ "${option%%=*}" = '--with-ruby' ]; then
217 if [ "${option#*=}" = 'no' ]; then
222 elif [ "${option}" = '--without-ruby' ] ; then
224 elif [ "${option%%=*}" = '--with-zsh-completion' ]; then
225 if [ "${option#*=}" = 'no' ]; then
230 elif [ "${option}" = '--without-zsh-completion' ] ; then
232 elif [ "${option%%=*}" = '--with-gmime-version' ] ; then
233 if [ "${option#*=}" = '2.4' ]; then
234 WITH_GMIME_VERSIONS=$GMIME_24_VERSION
235 elif [ "${option#*=}" = '2.6' ]; then
236 WITH_GMIME_VERSIONS=$GMIME_26_VERSION
238 elif [ "${option%%=*}" = '--build' ] ; then
240 elif [ "${option%%=*}" = '--host' ] ; then
242 elif [ "${option%%=*}" = '--infodir' ] ; then
244 elif [ "${option%%=*}" = '--datadir' ] ; then
246 elif [ "${option%%=*}" = '--localstatedir' ] ; then
248 elif [ "${option%%=*}" = '--libexecdir' ] ; then
250 elif [ "${option}" = '--disable-maintainer-mode' ] ; then
252 elif [ "${option}" = '--disable-dependency-tracking' ] ; then
255 echo "Unrecognized option: ${option}"
263 # We set this value early, (rather than just while printing the
264 # Makefile.config file later like most values), because we need to
265 # actually investigate this value compared to the ldconfig_paths value
267 if [ -z "$LIBDIR" ] ; then
268 libdir_expanded="${PREFIX}/lib"
270 # very non-general variable expansion
271 libdir_expanded=`echo "$LIBDIR" | sed "s|\\${prefix}|${PREFIX}|g; s|\\$prefix/|${PREFIX}/|; s|//*|/|g"`
275 Welcome to Notmuch, a system for indexing, searching and tagging your email.
277 We hope that the process of building and installing notmuch is quick
278 and smooth so that you can soon be reading and processing your email
279 more efficiently than ever.
281 If anything goes wrong in the configure process, you can override any
282 decisions it makes by manually editing the Makefile.config file that
283 it creates. Also please do as much as you can to figure out what could
284 be different on your machine compared to those of the notmuch
285 developers. Then, please email those details to the Notmuch list
286 (notmuch@notmuchmail.org) so that we can hopefully make future
287 versions of notmuch easier for you to use.
289 We'll now investigate your system to verify that all required
290 dependencies are available:
295 printf "int main(void){return 0;}\n" > minimal.c
297 printf "Sanity checking C compilation environment... "
298 if ${CC} ${CFLAGS} ${CPPFLAGS} minimal.c ${LDFLAGS} -o minimal > /dev/null 2>&1
303 errors=$((errors + 1))
306 printf "Sanity checking C++ compilation environment... "
307 if ${CXX} ${CXXFLAGS_for_sh} ${CPPFLAGS} minimal.c ${LDFLAGS} -o minimal > /dev/null 2>&1
312 errors=$((errors + 1))
315 if [ $errors -gt 0 ]; then
317 *** Error: Initial sanity checking of environment failed. Please try
318 running configure in a clean environment, and if the problem persists,
321 rm -f minimal minimal.c
325 if pkg-config --version > /dev/null 2>&1; then
331 printf "Checking for Xapian development files... "
333 for xapian_config in ${XAPIAN_CONFIG}; do
334 if ${xapian_config} --version > /dev/null 2>&1; then
335 xapian_version=$(${xapian_config} --version | sed -e 's/.* //')
336 printf "Yes (%s).\n" ${xapian_version}
338 xapian_cxxflags=$(${xapian_config} --cxxflags)
339 xapian_ldflags=$(${xapian_config} --libs)
343 if [ ${have_xapian} = "0" ]; then
345 errors=$((errors + 1))
348 # Compaction is only supported on Xapian > 1.2.6
349 have_xapian_compact=0
350 if [ ${have_xapian} = "1" ]; then
351 printf "Checking for Xapian compaction support... "
352 case "${xapian_version}" in
353 0.*|1.[01].*|1.2.[0-5])
354 printf "No (only available with Xapian > 1.2.6).\n" ;;
355 [1-9]*.[0-9]*.[0-9]*)
356 have_xapian_compact=1
359 printf "Unknown version.\n" ;;
363 printf "Checking for GMime development files... "
366 for gmimepc in $WITH_GMIME_VERSIONS; do
367 if pkg-config --exists $gmimepc; then
368 printf "Yes ($gmimepc).\n"
370 gmime_cflags=$(pkg-config --cflags $gmimepc)
371 gmime_ldflags=$(pkg-config --libs $gmimepc)
376 if [ "$have_gmime" = "0" ]; then
378 errors=$((errors + 1))
381 # GMime already depends on Glib >= 2.12, but we use at least one Glib
382 # function that only exists as of 2.22, (g_array_unref)
383 printf "Checking for Glib development files (>= 2.22)... "
385 if pkg-config --exists 'glib-2.0 >= 2.22'; then
388 glib_cflags=$(pkg-config --cflags glib-2.0)
389 glib_ldflags=$(pkg-config --libs glib-2.0)
392 errors=$((errors + 1))
395 if ! pkg-config --exists zlib; then
396 ${CC} ${zlib_cflags} -o compat/gen_zlib_pc \
397 "$srcdir"/compat/gen_zlib_pc.c ${zlib_ldflags} > /dev/null 2>&1 &&
398 compat/gen_zlib_pc > compat/zlib.pc &&
399 PKG_CONFIG_PATH="$PKG_CONFIG_PATH":compat &&
400 export PKG_CONFIG_PATH
401 rm -f compat/gen_zlib_pc
404 printf "Checking for zlib (>= 1.2.5.2)... "
406 if pkg-config --atleast-version=1.2.5.2 zlib; then
409 zlib_cflags=$(pkg-config --cflags zlib)
410 zlib_ldflags=$(pkg-config --libs zlib)
413 errors=$((errors + 1))
416 printf "Checking for talloc development files... "
417 if pkg-config --exists talloc; then
420 talloc_cflags=$(pkg-config --cflags talloc)
421 talloc_ldflags=$(pkg-config --libs talloc)
426 errors=$((errors + 1))
429 printf "Checking for python... "
432 for name in ${PYTHON} python python2 python3; do
433 if command -v $name > /dev/null; then
436 printf "Yes ($name).\n"
441 if [ $have_python -eq 0 ]; then
443 errors=$((errors + 1))
446 printf "Checking for valgrind development files... "
447 if pkg-config --exists valgrind; then
450 valgrind_cflags=$(pkg-config --cflags valgrind)
452 printf "No (but that's fine).\n"
456 printf "Checking for bash-completion (>= 1.90)... "
457 if pkg-config --atleast-version=1.90 bash-completion; then
460 printf "No (will not install bash completion).\n"
464 if [ -z "${EMACSLISPDIR}" ]; then
465 if pkg-config --exists emacs; then
466 EMACSLISPDIR=$(pkg-config emacs --variable sitepkglispdir)
468 EMACSLISPDIR='$(prefix)/share/emacs/site-lisp'
472 if [ -z "${EMACSETCDIR}" ]; then
473 if pkg-config --exists emacs; then
474 EMACSETCDIR=$(pkg-config emacs --variable sitepkglispdir)
476 EMACSETCDIR='$(prefix)/share/emacs/site-lisp'
480 printf "Checking if emacs is available... "
481 if emacs --quick --batch > /dev/null 2>&1; then
485 printf "No (so will not byte-compile emacs code)\n"
490 if [ $WITH_DOCS = "1" ] ; then
491 printf "Checking if doxygen is available... "
492 if command -v doxygen > /dev/null; then
496 printf "No (so will not install api docs)\n"
501 if [ $WITH_RUBY = "1" ] ; then
502 printf "Checking for ruby development files... "
503 if ruby -e "require 'mkmf'"> /dev/null 2>&1; then
507 printf "No (skipping ruby bindings)\n"
512 if [ $WITH_DOCS = "1" ] ; then
513 printf "Checking if sphinx is available and supports nroff output... "
514 if command -v sphinx-build > /dev/null && ${python} -m sphinx.writers.manpage > /dev/null 2>&1 ; then
518 printf "No (so will not install man pages).\n"
524 printf "Checking which platform we are on... "
526 if [ $uname = "Darwin" ] ; then
529 linker_resolves_library_dependencies=0
530 elif [ $uname = "SunOS" ] ; then
533 linker_resolves_library_dependencies=0
534 elif [ $uname = "FreeBSD" ] ; then
537 linker_resolves_library_dependencies=0
538 elif [ $uname = "OpenBSD" ] ; then
541 linker_resolves_library_dependencies=0
542 elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then
545 linker_resolves_library_dependencies=1
547 printf "Checking for $libdir_expanded in ldconfig... "
548 ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
549 # Separate ldconfig_paths only on newline (not on any potential
550 # embedded space characters in any filenames). Note, we use a
551 # literal newline in the source here rather than something like:
555 # because the shell's command substitution deletes any trailing newlines.
558 for path in $ldconfig_paths; do
559 if [ "$path" = "$libdir_expanded" ]; then
564 if [ "$libdir_in_ldconfig" = '0' ]; then
565 printf "No (will set RPATH)\n"
573 *** Warning: Unknown platform. Notmuch might or might not build correctly.
578 printf "Checking byte order... "
579 cat> _byteorder.c <<EOF
582 uint32_t test = 0x34333231;
583 int main() { printf("%.4s\n", (const char*)&test); return 0; }
585 ${CC} ${CFLAGS} _byteorder.c -o _byteorder > /dev/null 2>&1
586 util_byte_order=$(./_byteorder)
587 echo $util_byte_order
589 rm -f _byteorder _byteorder.c
591 if [ $errors -gt 0 ]; then
594 *** Error: The dependencies of notmuch could not be satisfied. You will
595 need to install the following packages before being able to compile
599 if [ $have_python -eq 0 ]; then
600 echo " python interpreter"
602 if [ $have_xapian -eq 0 ]; then
603 echo " Xapian library (including development files such as headers)"
604 echo " http://xapian.org/"
606 if [ $have_zlib -eq 0 ]; then
607 echo " zlib library (>= version 1.2.5.2, including development files such as headers)"
608 echo " http://zlib.net/"
611 if [ $have_gmime -eq 0 ]; then
612 echo " Either GMime 2.4 library" $GMIME_24_VERSION_CTR "or GMime 2.6 library" $GMIME_26_VERSION_CTR
613 echo " (including development files such as headers)"
614 echo " http://spruce.sourceforge.net/gmime/"
617 if [ $have_glib -eq 0 ]; then
618 echo " Glib library >= 2.22 (including development files such as headers)"
619 echo " http://ftp.gnome.org/pub/gnome/sources/glib/"
622 if [ $have_talloc -eq 0 ]; then
623 echo " The talloc library (including development files such as headers)"
624 echo " http://talloc.samba.org/"
628 With any luck, you're using a modern, package-based operating system
629 that has all of these packages available in the distribution. In that
630 case a simple command will install everything you need. For example:
632 On Debian and similar systems:
634 sudo apt-get install libxapian-dev libgmime-2.6-dev libtalloc-dev zlib1g-dev
636 Or on Fedora and similar systems:
638 sudo yum install xapian-core-devel gmime-devel libtalloc-devel zlib-devel
640 On other systems, similar commands can be used, but the details of the
641 package names may be different.
644 if [ $have_pkg_config -eq 0 ]; then
646 Note: the pkg-config program is not available. This configure script
647 uses pkg-config to find the compilation flags required to link against
648 the various libraries needed by notmuch. It's possible you simply need
649 to install pkg-config with a command such as:
651 sudo apt-get install pkg-config
653 sudo yum install pkgconfig
655 But if pkg-config is not available for your system, then you will need
656 to modify the configure script to manually set the cflags and ldflags
657 variables to the correct values to link against each library in each
658 case that pkg-config could not be used to determine those values.
663 When you have installed the necessary dependencies, you can run
664 configure again to ensure the packages can be found, or simply run
665 "make" to compile notmuch.
671 printf "Checking for canonicalize_file_name... "
672 if ${CC} -o compat/have_canonicalize_file_name "$srcdir"/compat/have_canonicalize_file_name.c > /dev/null 2>&1
675 have_canonicalize_file_name=1
677 printf "No (will use our own instead).\n"
678 have_canonicalize_file_name=0
680 rm -f compat/have_canonicalize_file_name
683 printf "Checking for getline... "
684 if ${CC} -o compat/have_getline "$srcdir"/compat/have_getline.c > /dev/null 2>&1
689 printf "No (will use our own instead).\n"
692 rm -f compat/have_getline
694 printf "Checking for strcasestr... "
695 if ${CC} -o compat/have_strcasestr "$srcdir"/compat/have_strcasestr.c > /dev/null 2>&1
700 printf "No (will use our own instead).\n"
703 rm -f compat/have_strcasestr
705 printf "Checking for strsep... "
706 if ${CC} -o compat/have_strsep "$srcdir"/compat/have_strsep.c > /dev/null 2>&1
711 printf "No (will use our own instead).\n"
714 rm -f compat/have_strsep
716 printf "Checking for timegm... "
717 if ${CC} -o compat/have_timegm "$srcdir"/compat/have_timegm.c > /dev/null 2>&1
722 printf "No (will use our own instead).\n"
725 rm -f compat/have_timegm
727 printf "Checking for dirent.d_type... "
728 if ${CC} -o compat/have_d_type "$srcdir"/compat/have_d_type.c > /dev/null 2>&1
733 printf "No (will use stat instead).\n"
736 rm -f compat/have_d_type
738 printf "Checking for standard version of getpwuid_r... "
739 if ${CC} -o compat/check_getpwuid "$srcdir"/compat/check_getpwuid.c > /dev/null 2>&1
744 printf "No (will define _POSIX_PTHREAD_SEMANTICS to get it).\n"
747 rm -f compat/check_getpwuid
749 printf "Checking for standard version of asctime_r... "
750 if ${CC} -o compat/check_asctime "$srcdir"/compat/check_asctime.c > /dev/null 2>&1
755 printf "No (will define _POSIX_PTHREAD_SEMANTICS to get it).\n"
758 rm -f compat/check_asctime
760 printf "Checking for rpath support... "
761 if ${CC} -Wl,--enable-new-dtags -Wl,-rpath,/tmp/ -o minimal minimal.c >/dev/null 2>&1
764 rpath_ldflags="-Wl,--enable-new-dtags -Wl,-rpath,\$(libdir)"
766 printf "No (nothing to worry about).\n"
770 printf "Checking for -Wl,--as-needed... "
771 if ${CC} -Wl,--as-needed -o minimal minimal.c >/dev/null 2>&1
774 as_needed_ldflags="-Wl,--as-needed"
776 printf "No (nothing to worry about).\n"
780 printf "Checking for -Wl,--no-undefined... "
781 if ${CC} -Wl,--no-undefined -o minimal minimal.c >/dev/null 2>&1
784 no_undefined_ldflags="-Wl,--no-undefined"
786 printf "No (nothing to worry about).\n"
787 no_undefined_ldflags=""
791 printf "Checking for available C++ compiler warning flags... "
792 for flag in -Wall -Wextra -Wwrite-strings; do
793 if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1
795 WARN_CXXFLAGS="${WARN_CXXFLAGS}${WARN_CXXFLAGS:+ }${flag}"
798 printf "\n\t${WARN_CXXFLAGS}\n"
800 WARN_CFLAGS="${WARN_CXXFLAGS}"
801 printf "Checking for available C compiler warning flags... "
802 for flag in -Wmissing-declarations; do
803 if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1
805 WARN_CFLAGS="${WARN_CFLAGS}${WARN_CFLAGS:+ }${flag}"
808 printf "\n\t${WARN_CFLAGS}\n"
810 rm -f minimal minimal.c
812 # construct the Makefile.config
813 cat > Makefile.config <<EOF
814 # This Makefile.config was automatically generated by the ./configure
815 # script of notmuch. If the configure script identified anything
816 # incorrectly, then you can edit this file to try to correct things,
817 # but be warned that if configure is run again it will destroy your
818 # changes, (and this could happen by simply calling "make" if the
819 # configure script is updated).
821 # The top-level directory for the source, (the directory containing
822 # the configure script). This may be different than the build
823 # directory (the current directory at the time configure was run).
826 # subdirectories to build
829 configure_options = $@
831 # We use vpath directives (rather than the VPATH variable) since the
832 # VPATH variable matches targets as well as prerequisites, (which is
833 # not useful since then a target left-over from a srcdir build would
834 # cause a target to not be built in the non-srcdir build).
836 # Also, we don't use a single "vpath % \$(srcdir)" here because we
837 # don't want the vpath to trigger for our emacs lisp compilation,
838 # (unless we first find a way to convince emacs to build the .elc
839 # target in a directory other than the directory of the .el
840 # prerequisite). In the meantime, we're actually copying in the .el
841 # files, (which is quite ugly).
843 vpath %.cc \$(srcdir)
844 vpath Makefile.% \$(srcdir)
845 vpath %.py \$(srcdir)
846 vpath %.rst \$(srcdir)
848 # The C compiler to use
851 # The C++ compiler to use
854 # Command to execute emacs from Makefiles
855 EMACS = emacs --quick
857 # Default FLAGS for C compiler (can be overridden by user such as "make CFLAGS=-g")
860 # Default FLAGS for C preprocessor (can be overridden by user such as "make CPPFLAGS=-I/usr/local/include")
861 CPPFLAGS = ${CPPFLAGS}
863 # Default FLAGS for C++ compiler (can be overridden by user such as "make CXXFLAGS=-g")
864 CXXFLAGS = ${CXXFLAGS}
866 # Default FLAGS for the linker (can be overridden by user such as "make LDFLAGS=-znow")
869 # Flags to enable warnings when using the C++ compiler
870 WARN_CXXFLAGS=${WARN_CXXFLAGS}
872 # Flags to enable warnings when using the C compiler
873 WARN_CFLAGS=${WARN_CFLAGS}
875 # Name of python interpreter
878 # The prefix to which notmuch should be installed
879 # Note: If you change this value here, be sure to ensure that the
880 # LIBDIR_IN_LDCONFIG value below is still set correctly.
883 # The directory to which libraries should be installed
884 # Note: If you change this value here, be sure to ensure that the
885 # LIBDIR_IN_LDCONFIG value below is still set correctly.
886 libdir = ${LIBDIR:=\$(prefix)/lib}
888 # byte order within a 32 bit word. 1234 = little, 4321 = big, 0 = guess
889 UTIL_BYTE_ORDER = ${util_byte_order}
891 # Whether libdir is in a path configured into ldconfig
892 LIBDIR_IN_LDCONFIG = ${libdir_in_ldconfig}
894 # The directory to which header files should be installed
895 includedir = ${INCLUDEDIR:=\$(prefix)/include}
897 # The directory to which man pages should be installed
898 mandir = ${MANDIR:=\$(prefix)/share/man}
900 # The directory to which read-only (configuration) files should be installed
901 sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
903 # The directory to which emacs lisp files should be installed
904 emacslispdir=${EMACSLISPDIR}
906 # The directory to which emacs miscellaneous (machine-independent) files should
908 emacsetcdir=${EMACSETCDIR}
910 # Whether there's an emacs binary available for byte-compiling
911 HAVE_EMACS = ${have_emacs}
913 # Whether there's a sphinx-build binary available for building documentation
914 HAVE_SPHINX=${have_sphinx}
916 # Whether there's a doxygen binary available for building api documentation
917 HAVE_DOXYGEN=${have_doxygen}
919 # The directory to which desktop files should be installed
920 desktop_dir = \$(prefix)/share/applications
922 # The directory to which bash completions files should be installed
923 bash_completion_dir = ${BASHCOMPLETIONDIR:=\$(sysconfdir)/bash_completion.d}
925 # The directory to which zsh completions files should be installed
926 zsh_completion_dir = ${ZSHCOMLETIONDIR:=\$(prefix)/share/zsh/functions/Completion/Unix}
928 # Whether the canonicalize_file_name function is available (if not, then notmuch will
929 # build its own version)
930 HAVE_CANONICALIZE_FILE_NAME = ${have_canonicalize_file_name}
932 # Whether the getline function is available (if not, then notmuch will
933 # build its own version)
934 HAVE_GETLINE = ${have_getline}
936 # Are the ruby development files (and ruby) available? If not skip
937 # building/testing ruby bindings.
938 HAVE_RUBY_DEV = ${have_ruby_dev}
940 # Whether the strcasestr function is available (if not, then notmuch will
941 # build its own version)
942 HAVE_STRCASESTR = ${have_strcasestr}
944 # Whether the strsep function is available (if not, then notmuch will
945 # build its own version)
946 HAVE_STRSEP = ${have_strsep}
948 # Whether struct dirent has d_type (if not, then notmuch will use stat)
949 HAVE_D_TYPE = ${have_d_type}
951 # Whether the Xapian version in use supports compaction
952 HAVE_XAPIAN_COMPACT = ${have_xapian_compact}
954 # Whether the getpwuid_r function is standards-compliant
955 # (if not, then notmuch will #define _POSIX_PTHREAD_SEMANTICS
956 # to enable the standards-compliant version -- needed for Solaris)
957 STD_GETPWUID = ${std_getpwuid}
959 # Whether the asctime_r function is standards-compliant
960 # (if not, then notmuch will #define _POSIX_PTHREAD_SEMANTICS
961 # to enable the standards-compliant version -- needed for Solaris)
962 STD_ASCTIME = ${std_asctime}
964 # Supported platforms (so far) are: LINUX, MACOSX, SOLARIS, FREEBSD, OPENBSD
965 PLATFORM = ${platform}
967 # Whether the linker will automatically resolve the dependency of one
968 # library on another (if not, then linking a binary requires linking
969 # directly against both)
970 LINKER_RESOLVES_LIBRARY_DEPENDENCIES = ${linker_resolves_library_dependencies}
972 # Flags needed to compile and link against Xapian
973 XAPIAN_CXXFLAGS = ${xapian_cxxflags}
974 XAPIAN_LDFLAGS = ${xapian_ldflags}
976 # Flags needed to compile and link against GMime-2.4
977 GMIME_CFLAGS = ${gmime_cflags}
978 GMIME_LDFLAGS = ${gmime_ldflags}
980 # Flags needed to compile and link against zlib
981 ZLIB_CFLAGS = ${zlib_cflags}
982 ZLIB_LDFLAGS = ${zlib_ldflags}
984 # Flags needed to compile and link against talloc
985 TALLOC_CFLAGS = ${talloc_cflags}
986 TALLOC_LDFLAGS = ${talloc_ldflags}
988 # Flags needed to have linker set rpath attribute
989 RPATH_LDFLAGS = ${rpath_ldflags}
991 # Flags needed to have linker link only to necessary libraries
992 AS_NEEDED_LDFLAGS = ${as_needed_ldflags}
994 # Flags to have the linker flag undefined symbols in object files
995 NO_UNDEFINED_LDFLAGS = ${no_undefined_ldflags}
997 # Whether valgrind header files are available
998 HAVE_VALGRIND = ${have_valgrind}
1000 # And if so, flags needed at compile time for valgrind macros
1001 VALGRIND_CFLAGS = ${valgrind_cflags}
1004 WITH_EMACS = ${WITH_EMACS}
1006 # Support for bash completion
1007 WITH_BASH = ${WITH_BASH}
1009 # Support for zsh completion
1010 WITH_ZSH = ${WITH_ZSH}
1012 # Combined flags for compiling and linking against all of the above
1013 CONFIGURE_CFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\
1014 -DHAVE_CANONICALIZE_FILE_NAME=\$(HAVE_CANONICALIZE_FILE_NAME) \\
1016 \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
1017 \$(VALGRIND_CFLAGS) \\
1018 -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR) \\
1019 -DHAVE_STRSEP=\$(HAVE_STRSEP) \\
1020 -DHAVE_D_TYPE=\$(HAVE_D_TYPE) \\
1021 -DSTD_GETPWUID=\$(STD_GETPWUID) \\
1022 -DSTD_ASCTIME=\$(STD_ASCTIME) \\
1023 -DHAVE_XAPIAN_COMPACT=\$(HAVE_XAPIAN_COMPACT) \\
1024 -DUTIL_BYTE_ORDER=\$(UTIL_BYTE_ORDER)
1026 CONFIGURE_CXXFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\
1027 -DHAVE_CANONICALIZE_FILE_NAME=\$(HAVE_CANONICALIZE_FILE_NAME) \\
1029 \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
1030 \$(VALGRIND_CFLAGS) \$(XAPIAN_CXXFLAGS) \\
1031 -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR) \\
1032 -DHAVE_STRSEP=\$(HAVE_STRSEP) \\
1033 -DHAVE_D_TYPE=\$(HAVE_D_TYPE) \\
1034 -DSTD_GETPWUID=\$(STD_GETPWUID) \\
1035 -DSTD_ASCTIME=\$(STD_ASCTIME) \\
1036 -DHAVE_XAPIAN_COMPACT=\$(HAVE_XAPIAN_COMPACT) \\
1037 -DUTIL_BYTE_ORDER=\$(UTIL_BYTE_ORDER)
1039 CONFIGURE_LDFLAGS = \$(GMIME_LDFLAGS) \$(TALLOC_LDFLAGS) \$(ZLIB_LDFLAGS) \$(XAPIAN_LDFLAGS)
1042 # construct the sh.config
1043 cat > sh.config <<EOF
1044 # This sh.config was automatically generated by the ./configure
1045 # script of notmuch.
1047 # Whether the Xapian version in use supports compaction
1048 NOTMUCH_HAVE_XAPIAN_COMPACT=${have_xapian_compact}
1050 # do we have man pages?
1051 NOTMUCH_HAVE_MAN=$((have_sphinx))
1053 # Name of python interpreter
1054 NOTMUCH_PYTHON=${python}
1056 # Are the ruby development files (and ruby) available? If not skip
1057 # building/testing ruby bindings.
1058 NOTMUCH_HAVE_RUBY_DEV=${have_ruby_dev}
1061 # Finally, after everything configured, inform the user how to continue.
1064 All required packages were found. You may now run the following
1065 commands to compile and install notmuch: