tag-util: factor out rules for illegal tags, use in parse_tag_line
[notmuch] / configure
1 #! /bin/sh
2
3 # Test whether this shell is capable of parameter substring processing.
4 ( option='a/b'; : ${option#*/} ) 2>/dev/null || {
5     echo "
6 The shell interpreting '$0' is lacking some required features.
7
8 To work around this problem you may try to execute:
9
10     ksh $0 $*
11  or
12     bash $0 $*
13 "
14     exit 1
15 }
16
17 # Store original IFS value so it can be changed (and restored) in many places.
18 readonly DEFAULT_IFS="$IFS"
19
20 srcdir=$(dirname "$0")
21
22 # For a non-srcdir configure invocation (such as ../configure), create
23 # the directory structure and copy Makefiles.
24 if [ "$srcdir" != "." ]; then
25
26     for dir in . $(grep "^subdirs *=" "$srcdir"/Makefile | sed -e "s/subdirs *= *//"); do
27         mkdir -p "$dir"
28         cp "$srcdir"/"$dir"/Makefile.local "$dir"
29         cp "$srcdir"/"$dir"/Makefile "$dir"
30     done
31
32     # Easiest way to get the test suite to work is to just copy the
33     # whole thing into the build directory.
34     cp -a "$srcdir"/test/* test
35
36     # Emacs only likes to generate compiled files next to the .el files
37     # by default so copy these as well (which is not ideal0.
38     cp -a "$srcdir"/emacs/*.el emacs
39 fi
40
41 # Set several defaults (optionally specified by the user in
42 # environment variables)
43 CC=${CC:-gcc}
44 CXX=${CXX:-g++}
45 CFLAGS=${CFLAGS:--O2}
46 CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)}
47 LDFLAGS=${LDFLAGS:-}
48 XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config}
49
50 # We don't allow the EMACS or GZIP Makefile variables inherit values
51 # from the environment as we do with CC and CXX above. The reason is
52 # that these names as environment variables have existing uses other
53 # than the program name that we want. (EMACS is set to 't' when a
54 # shell is running within emacs and GZIP specifies arguments to pass
55 # on the gzip command line).
56
57 # Set the defaults for values the user can specify with command-line
58 # options.
59 PREFIX=/usr/local
60 LIBDIR=
61 WITH_EMACS=1
62 WITH_BASH=1
63 WITH_ZSH=1
64
65 # Compatible GMime versions (with constraints).
66 # If using GMime 2.6, we need to have a version >= 2.6.5 to avoid a
67 # crypto bug. We need 2.6.7 for permissive "From " header handling.
68 GMIME_24_VERSION_CTR=''
69 GMIME_24_VERSION="gmime-2.4 $GMIME_24_VERSION_CTR"
70 GMIME_26_VERSION_CTR='>= 2.6.7'
71 GMIME_26_VERSION="gmime-2.6 $GMIME_26_VERSION_CTR"
72
73 WITH_GMIME_VERSIONS="$GMIME_26_VERSION;$GMIME_24_VERSION"
74
75 usage ()
76 {
77     cat <<EOF
78 Usage: ./configure [options]...
79
80 This script configures notmuch to build on your system.
81
82 It verifies that dependencies are available, determines flags needed
83 to compile and link against various required libraries, and identifies
84 whether various system functions can be used or if locally-provided
85 replacements will be built instead.
86
87 Finally, it allows you to control various aspects of the build and
88 installation process.
89
90 First, some common variables can specified via environment variables:
91
92         CC              The C compiler to use
93         CFLAGS          Flags to pass to the C compiler
94         CXX             The C++ compiler to use
95         CXXFLAGS        Flags to pass to the C compiler
96         LDFLAGS         Flags to pass when linking
97
98 Each of these values can further be controlled by specifying them
99 later on the "make" command line.
100
101 Other environment variables can be used to control configure itself,
102 (and for which there is no equivalent build-time control):
103
104         XAPIAN_CONFIG   The program to use to determine flags for
105                         compiling and linking against the Xapian
106                         library. [$XAPIAN_CONFIG]
107
108 Additionally, various options can be specified on the configure
109 command line.
110
111         --prefix=PREFIX Install files in PREFIX [$PREFIX]
112
113 By default, "make install" will install the resulting program to
114 $PREFIX/bin, documentation to $PREFIX/man, etc. You can
115 specify an installation prefix other than $PREFIX using
116 --prefix, for instance:
117
118         ./configure --prefix=\$HOME
119
120 Fine tuning of some installation directories is available:
121
122         --libdir=DIR            Install libraries to DIR [PREFIX/lib]
123         --includedir=DIR        Install header files to DIR [PREFIX/include]
124         --mandir=DIR            Install man pages to DIR [PREFIX/share/man]
125         --sysconfdir=DIR        Read-only single-machine data [PREFIX/etc]
126         --emacslispdir=DIR      Emacs code [PREFIX/share/emacs/site-lisp]
127         --emacsetcdir=DIR       Emacs miscellaneous files [PREFIX/share/emacs/site-lisp]
128         --bashcompletiondir=DIR Bash completions files [SYSCONFDIR/bash_completion.d]
129         --zshcompletiondir=DIR  Zsh completions files [PREFIX/share/zsh/functions/Completion/Unix]
130
131 Some specific library versions can be specified (auto-detected otherwise):
132
133         --with-gmime-version=VERS       Specify GMIME version (2.4 or 2.6)
134
135 Some features can be disabled (--with-feature=no is equivalent to
136 --without-feature) :
137
138         --without-emacs                 Do not install lisp file
139         --without-bash-completion       Do not install bash completions files
140         --without-zsh-completion        Do not install zsh completions files
141
142 Additional options are accepted for compatibility with other
143 configure-script calling conventions, but don't do anything yet:
144
145         --build=<cpu>-<vendor>-<os>     Currently ignored
146         --host=<cpu>-<vendor>-<os>      Currently ignored
147         --infodir=DIR                   Currently ignored
148         --datadir=DIR                   Currently ignored
149         --localstatedir=DIR             Currently ignored
150         --libexecdir=DIR                Currently ignored
151         --disable-maintainer-mode       Currently ignored
152         --disable-dependency-tracking   Currently ignored
153
154 EOF
155 }
156
157 # Parse command-line options
158 for option; do
159     if [ "${option}" = '--help' ] ; then
160         usage
161         exit 0
162     elif [ "${option%%=*}" = '--prefix' ] ; then
163         PREFIX="${option#*=}"
164     elif [ "${option%%=*}" = '--libdir' ] ; then
165         LIBDIR="${option#*=}"
166     elif [ "${option%%=*}" = '--includedir' ] ; then
167         INCLUDEDIR="${option#*=}"
168     elif [ "${option%%=*}" = '--mandir' ] ; then
169         MANDIR="${option#*=}"
170     elif [ "${option%%=*}" = '--sysconfdir' ] ; then
171         SYSCONFDIR="${option#*=}"
172     elif [ "${option%%=*}" = '--emacslispdir' ] ; then
173         EMACSLISPDIR="${option#*=}"
174     elif [ "${option%%=*}" = '--emacsetcdir' ] ; then
175         EMACSETCDIR="${option#*=}"
176     elif [ "${option%%=*}" = '--bashcompletiondir' ] ; then
177         BASHCOMPLETIONDIR="${option#*=}"
178     elif [ "${option%%=*}" = '--zshcompletiondir' ] ; then
179         ZSHCOMLETIONDIR="${option#*=}"
180     elif [ "${option%%=*}" = '--with-emacs' ]; then
181         if [ "${option#*=}" = 'no' ]; then
182             WITH_EMACS=0
183         else
184             WITH_EMACS=1
185         fi
186     elif [ "${option}" = '--without-emacs' ] ; then
187         WITH_EMACS=0
188     elif [ "${option%%=*}" = '--with-bash-completion' ]; then
189         if [ "${option#*=}" = 'no' ]; then
190             WITH_BASH=0
191         else
192             WITH_BASH=1
193         fi
194     elif [ "${option}" = '--without-bash-completion' ] ; then
195         WITH_BASH=0
196     elif [ "${option%%=*}" = '--with-zsh-completion' ]; then
197         if [ "${option#*=}" = 'no' ]; then
198             WITH_ZSH=0
199         else
200             WITH_ZSH=1
201         fi
202     elif [ "${option}" = '--without-zsh-completion' ] ; then
203         WITH_ZSH=0
204     elif [ "${option%%=*}" = '--with-gmime-version' ] ; then
205         if [ "${option#*=}" = '2.4' ]; then
206              WITH_GMIME_VERSIONS=$GMIME_24_VERSION
207          elif [ "${option#*=}" = '2.6' ]; then
208              WITH_GMIME_VERSIONS=$GMIME_26_VERSION
209         fi
210     elif [ "${option%%=*}" = '--build' ] ; then
211         true
212     elif [ "${option%%=*}" = '--host' ] ; then
213         true
214     elif [ "${option%%=*}" = '--infodir' ] ; then
215         true
216     elif [ "${option%%=*}" = '--datadir' ] ; then
217         true
218     elif [ "${option%%=*}" = '--localstatedir' ] ; then
219         true
220     elif [ "${option%%=*}" = '--libexecdir' ] ; then
221         true
222     elif [ "${option}" = '--disable-maintainer-mode' ] ; then
223         true
224     elif [ "${option}" = '--disable-dependency-tracking' ] ; then
225         true
226     else
227         echo "Unrecognized option: ${option}"
228         echo "See:"
229         echo "  $0 --help"
230         echo ""
231         exit 1
232     fi
233 done
234
235 # We set this value early, (rather than just while printing the
236 # Makefile.config file later like most values), because we need to
237 # actually investigate this value compared to the ldconfig_paths value
238 # below.
239 if [ -z "$LIBDIR" ] ; then
240     libdir_expanded="${PREFIX}/lib"
241 else
242     # very non-general variable expansion
243     libdir_expanded=`echo "$LIBDIR" | sed "s|\\${prefix}|${PREFIX}|g; s|\\$prefix/|${PREFIX}/|; s|//*|/|g"`
244 fi
245
246 cat <<EOF
247 Welcome to Notmuch, a system for indexing, searching and tagging your email.
248
249 We hope that the process of building and installing notmuch is quick
250 and smooth so that you can soon be reading and processing your email
251 more efficiently than ever.
252
253 If anything goes wrong in the configure process, you can override any
254 decisions it makes by manually editing the Makefile.config file that
255 it creates. Also please do as much as you can to figure out what could
256 be different on your machine compared to those of the notmuch
257 developers. Then, please email those details to the Notmuch list
258 (notmuch@notmuchmail.org) so that we can hopefully make future
259 versions of notmuch easier for you to use.
260
261 We'll now investigate your system to verify that all required
262 dependencies are available:
263
264 EOF
265
266 errors=0
267
268 if pkg-config --version > /dev/null 2>&1; then
269     have_pkg_config=1
270 else
271     have_pkg_config=0
272 fi
273
274 printf "Checking for Xapian development files... "
275 have_xapian=0
276 for xapian_config in ${XAPIAN_CONFIG}; do
277     if ${xapian_config} --version > /dev/null 2>&1; then
278         printf "Yes (%s).\n" $(${xapian_config} --version | sed -e 's/.* //')
279         have_xapian=1
280         xapian_cxxflags=$(${xapian_config} --cxxflags)
281         xapian_ldflags=$(${xapian_config} --libs)
282         break
283     fi
284 done
285 if [ ${have_xapian} = "0" ]; then
286     printf "No.\n"
287     errors=$((errors + 1))
288 fi
289
290 printf "Checking for GMime development files... "
291 have_gmime=0
292 IFS=';'
293 for gmimepc in $WITH_GMIME_VERSIONS; do
294     if pkg-config --exists $gmimepc; then
295         printf "Yes ($gmimepc).\n"
296         have_gmime=1
297         gmime_cflags=$(pkg-config --cflags $gmimepc)
298         gmime_ldflags=$(pkg-config --libs $gmimepc)
299         break
300     fi
301 done
302 IFS=$DEFAULT_IFS
303 if [ "$have_gmime" = "0" ]; then
304     printf "No.\n"
305     errors=$((errors + 1))
306 fi
307
308 # GMime already depends on Glib >= 2.12, but we use at least one Glib
309 # function that only exists as of 2.22, (g_array_unref)
310 printf "Checking for Glib development files (>= 2.22)... "
311 have_glib=0
312 if pkg-config --exists 'glib-2.0 >= 2.22'; then
313     printf "Yes.\n"
314     have_glib=1
315     glib_cflags=$(pkg-config --cflags glib-2.0)
316     glib_ldflags=$(pkg-config --libs glib-2.0)
317 else
318     printf "No.\n"
319     errors=$((errors + 1))
320 fi
321
322 printf "Checking for talloc development files... "
323 if pkg-config --exists talloc; then
324     printf "Yes.\n"
325     have_talloc=1
326     talloc_cflags=$(pkg-config --cflags talloc)
327     talloc_ldflags=$(pkg-config --libs talloc)
328 else
329     printf "No.\n"
330     have_talloc=0
331     talloc_cflags=
332     errors=$((errors + 1))
333 fi
334
335 printf "Checking for valgrind development files... "
336 if pkg-config --exists valgrind; then
337     printf "Yes.\n"
338     have_valgrind=1
339     valgrind_cflags=$(pkg-config --cflags valgrind)
340 else
341     printf "No (but that's fine).\n"
342     have_valgrind=0
343 fi
344
345 if [ -z "${EMACSLISPDIR}" ]; then
346     if pkg-config --exists emacs; then
347         EMACSLISPDIR=$(pkg-config emacs --variable sitepkglispdir)
348     else
349         EMACSLISPDIR='$(prefix)/share/emacs/site-lisp'
350     fi
351 fi
352
353 if [ -z "${EMACSETCDIR}" ]; then
354     if pkg-config --exists emacs; then
355         EMACSETCDIR=$(pkg-config emacs --variable sitepkglispdir)
356     else
357         EMACSETCDIR='$(prefix)/share/emacs/site-lisp'
358     fi
359 fi
360
361 printf "Checking if emacs is available... "
362 if emacs --quick --batch > /dev/null 2>&1; then
363     printf "Yes.\n"
364     have_emacs=1
365 else
366     printf "No (so will not byte-compile emacs code)\n"
367     have_emacs=0
368 fi
369
370 libdir_in_ldconfig=0
371
372 printf "Checking which platform we are on... "
373 uname=`uname`
374 if [ $uname = "Darwin" ] ; then
375     printf "Mac OS X.\n"
376     platform=MACOSX
377     linker_resolves_library_dependencies=0
378 elif [ $uname = "SunOS" ] ; then
379     printf "Solaris.\n"
380     platform=SOLARIS
381     linker_resolves_library_dependencies=0
382 elif [ $uname = "FreeBSD" ] ; then
383     printf "FreeBSD.\n"
384     platform=FREEBSD
385     linker_resolves_library_dependencies=0
386 elif [ $uname = "OpenBSD" ] ; then
387     printf "OpenBSD.\n"
388     platform=OPENBSD
389     linker_resolves_library_dependencies=0
390 elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then
391     printf "$uname\n"
392     platform="$uname"
393     linker_resolves_library_dependencies=1
394
395     printf "Checking for $libdir_expanded in ldconfig... "
396     ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
397     # Separate ldconfig_paths only on newline (not on any potential
398     # embedded space characters in any filenames). Note, we use a
399     # literal newline in the source here rather than something like:
400     #
401     #   IFS=$(printf '\n')
402     #
403     # because the shell's command substitution deletes any trailing newlines.
404     IFS="
405 "
406     for path in $ldconfig_paths; do
407         if [ "$path" = "$libdir_expanded" ]; then
408             libdir_in_ldconfig=1
409         fi
410     done
411     IFS=$DEFAULT_IFS
412     if [ "$libdir_in_ldconfig" = '0' ]; then
413         printf "No (will set RPATH)\n"
414     else
415         printf "Yes\n"
416     fi
417 else
418     printf "Unknown.\n"
419     cat <<EOF
420
421 *** Warning: Unknown platform. Notmuch might or might not build correctly.
422
423 EOF
424 fi
425
426 if [ $errors -gt 0 ]; then
427     cat <<EOF
428
429 *** Error: The dependencies of notmuch could not be satisfied. You will
430 need to install the following packages before being able to compile
431 notmuch:
432
433 EOF
434     if [ $have_xapian -eq 0 ]; then
435         echo "  Xapian library (including development files such as headers)"
436         echo "  http://xapian.org/"
437     fi
438     if [ $have_gmime -eq 0 ]; then
439         echo "  Either GMime 2.4 library" $GMIME_24_VERSION_CTR "or GMime 2.6 library" $GMIME_26_VERSION_CTR
440         echo "  (including development files such as headers)"
441         echo "  http://spruce.sourceforge.net/gmime/"
442         echo
443     fi
444     if [ $have_glib -eq 0 ]; then
445         echo "  Glib library >= 2.22 (including development files such as headers)"
446         echo "  http://ftp.gnome.org/pub/gnome/sources/glib/"
447         echo
448     fi
449     if [ $have_talloc -eq 0 ]; then
450         echo "  The talloc library (including development files such as headers)"
451         echo "  http://talloc.samba.org/"
452         echo
453     fi
454     cat <<EOF
455 With any luck, you're using a modern, package-based operating system
456 that has all of these packages available in the distribution. In that
457 case a simple command will install everything you need. For example:
458
459 On Debian and similar systems:
460
461         sudo apt-get install libxapian-dev libgmime-2.6-dev libtalloc-dev
462
463 Or on Fedora and similar systems:
464
465         sudo yum install xapian-core-devel gmime-devel libtalloc-devel
466
467 On other systems, similar commands can be used, but the details of the
468 package names may be different.
469
470 EOF
471     if [ $have_pkg_config -eq 0 ]; then
472 cat <<EOF
473 Note: the pkg-config program is not available. This configure script
474 uses pkg-config to find the compilation flags required to link against
475 the various libraries needed by notmuch. It's possible you simply need
476 to install pkg-config with a command such as:
477
478         sudo apt-get install pkg-config
479 Or:
480         sudo yum install pkgconfig
481
482 But if pkg-config is not available for your system, then you will need
483 to modify the configure script to manually set the cflags and ldflags
484 variables to the correct values to link against each library in each
485 case that pkg-config could not be used to determine those values.
486
487 EOF
488     fi
489 cat <<EOF
490 When you have installed the necessary dependencies, you can run
491 configure again to ensure the packages can be found, or simply run
492 "make" to compile notmuch.
493
494 EOF
495     exit 1
496 fi
497
498 printf "Checking for getline... "
499 if ${CC} -o compat/have_getline "$srcdir"/compat/have_getline.c > /dev/null 2>&1
500 then
501     printf "Yes.\n"
502     have_getline=1
503 else
504     printf "No (will use our own instead).\n"
505     have_getline=0
506 fi
507 rm -f compat/have_getline
508
509 printf "Checking for strcasestr... "
510 if ${CC} -o compat/have_strcasestr "$srcdir"/compat/have_strcasestr.c > /dev/null 2>&1
511 then
512     printf "Yes.\n"
513     have_strcasestr=1
514 else
515     printf "No (will use our own instead).\n"
516     have_strcasestr=0
517 fi
518 rm -f compat/have_strcasestr
519
520 printf "int main(void){return 0;}\n" > minimal.c
521
522 printf "Checking for rpath support... "
523 if ${CC} -Wl,--enable-new-dtags -Wl,-rpath,/tmp/ -o minimal minimal.c >/dev/null 2>&1
524 then
525     printf "Yes.\n"
526     rpath_ldflags="-Wl,--enable-new-dtags -Wl,-rpath,\$(libdir)"
527 else
528     printf "No (nothing to worry about).\n"
529     rpath_ldflags=""
530 fi
531
532 printf "Checking for -Wl,--as-needed... "
533 if ${CC} -Wl,--as-needed -o minimal minimal.c >/dev/null 2>&1
534 then
535     printf "Yes.\n"
536     as_needed_ldflags="-Wl,--as-needed"
537 else
538     printf "No (nothing to worry about).\n"
539     as_needed_ldflags=""
540 fi
541
542 WARN_CXXFLAGS=""
543 printf "Checking for available C++ compiler warning flags... "
544 for flag in -Wall -Wextra -Wwrite-strings; do
545     if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1
546     then
547         WARN_CXXFLAGS="${WARN_CXXFLAGS}${WARN_CXXFLAGS:+ }${flag}"
548     fi
549 done
550 printf "\n\t${WARN_CXXFLAGS}\n"
551
552 WARN_CFLAGS="${WARN_CXXFLAGS}"
553 printf "Checking for available C compiler warning flags... "
554 for flag in -Wmissing-declarations; do
555     if ${CC} $flag -o minimal minimal.c > /dev/null 2>&1
556     then
557         WARN_CFLAGS="${WARN_CFLAGS}${WARN_CFLAGS:+ }${flag}"
558     fi
559 done
560 printf "\n\t${WARN_CFLAGS}\n"
561
562 rm -f minimal minimal.c
563
564 cat <<EOF
565
566 All required packages were found. You may now run the following
567 commands to compile and install notmuch:
568
569         make
570         sudo make install
571
572 EOF
573
574 # construct the Makefile.config
575 cat > Makefile.config <<EOF
576 # This Makefile.config was automatically generated by the ./configure
577 # script of notmuch. If the configure script identified anything
578 # incorrectly, then you can edit this file to try to correct things,
579 # but be warned that if configure is run again it will destroy your
580 # changes, (and this could happen by simply calling "make" if the
581 # configure script is updated).
582
583 # The top-level directory for the source, (the directory containing
584 # the configure script). This may be different than the build
585 # directory (the current directory at the time configure was run).
586 srcdir = ${srcdir}
587
588 configure_options = $@
589
590 # We use vpath directives (rather than the VPATH variable) since the
591 # VPATH variable matches targets as well as prerequisites, (which is
592 # not useful since then a target left-over from a srcdir build would
593 # cause a target to not be built in the non-srcdir build).
594 #
595 # Also, we don't use a single "vpath % \$(srcdir)" here because we
596 # don't want the vpath to trigger for our emacs lisp compilation,
597 # (unless we first find a way to convince emacs to build the .elc
598 # target in a directory other than the directory of the .el
599 # prerequisite). In the meantime, we're actually copying in the .el
600 # files, (which is quite ugly).
601 vpath %.c \$(srcdir)
602 vpath %.cc \$(srcdir)
603 vpath %.1 \$(srcdir)
604 vpath Makefile.% \$(srcdir)
605
606 # The C compiler to use
607 CC = ${CC}
608
609 # The C++ compiler to use
610 CXX = ${CXX}
611
612 # Command to execute emacs from Makefiles
613 EMACS = emacs --quick
614
615 # Default FLAGS for C compiler (can be overridden by user such as "make CFLAGS=-g")
616 CFLAGS = ${CFLAGS}
617
618 # Default FLAGS for C++ compiler (can be overridden by user such as "make CXXFLAGS=-g")
619 CXXFLAGS = ${CXXFLAGS}
620
621 # Default FLAGS for the linker (can be overridden by user such as "make LDFLAGS=-znow")
622 LDFLAGS = ${LDFLAGS}
623
624 # Flags to enable warnings when using the C++ compiler
625 WARN_CXXFLAGS=${WARN_CXXFLAGS}
626
627 # Flags to enable warnings when using the C compiler
628 WARN_CFLAGS=${WARN_CFLAGS}
629
630 # The prefix to which notmuch should be installed
631 # Note: If you change this value here, be sure to ensure that the
632 # LIBDIR_IN_LDCONFIG value below is still set correctly.
633 prefix = ${PREFIX}
634
635 # The directory to which libraries should be installed
636 # Note: If you change this value here, be sure to ensure that the
637 # LIBDIR_IN_LDCONFIG value below is still set correctly.
638 libdir = ${LIBDIR:=\$(prefix)/lib}
639
640 # Whether libdir is in a path configured into ldconfig
641 LIBDIR_IN_LDCONFIG = ${libdir_in_ldconfig}
642
643 # The directory to which header files should be installed
644 includedir = ${INCLUDEDIR:=\$(prefix)/include}
645
646 # The directory to which man pages should be installed
647 mandir = ${MANDIR:=\$(prefix)/share/man}
648
649 # The directory to which read-only (configuration) files should be installed
650 sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
651
652 # The directory to which emacs lisp files should be installed
653 emacslispdir=${EMACSLISPDIR}
654
655 # The directory to which emacs miscellaneous (machine-independent) files should
656 # be installed
657 emacsetcdir=${EMACSETCDIR}
658
659 # Whether there's an emacs binary available for byte-compiling
660 HAVE_EMACS = ${have_emacs}
661
662 # The directory to which desktop files should be installed
663 desktop_dir = \$(prefix)/share/applications
664
665 # The directory to which bash completions files should be installed
666 bash_completion_dir = ${BASHCOMPLETIONDIR:=\$(sysconfdir)/bash_completion.d}
667
668 # The directory to which zsh completions files should be installed
669 zsh_completion_dir = ${ZSHCOMLETIONDIR:=\$(prefix)/share/zsh/functions/Completion/Unix}
670
671 # Whether the getline function is available (if not, then notmuch will
672 # build its own version)
673 HAVE_GETLINE = ${have_getline}
674
675 # Whether the strcasestr function is available (if not, then notmuch will
676 # build its own version)
677 HAVE_STRCASESTR = ${have_strcasestr}
678
679 # Supported platforms (so far) are: LINUX, MACOSX, SOLARIS, FREEBSD, OPENBSD
680 PLATFORM = ${platform}
681
682 # Whether the linker will automatically resolve the dependency of one
683 # library on another (if not, then linking a binary requires linking
684 # directly against both)
685 LINKER_RESOLVES_LIBRARY_DEPENDENCIES = ${linker_resolves_library_dependencies}
686
687 # Flags needed to compile and link against Xapian
688 XAPIAN_CXXFLAGS = ${xapian_cxxflags}
689 XAPIAN_LDFLAGS = ${xapian_ldflags}
690
691 # Flags needed to compile and link against GMime-2.4
692 GMIME_CFLAGS = ${gmime_cflags}
693 GMIME_LDFLAGS = ${gmime_ldflags}
694
695 # Flags needed to compile and link against talloc
696 TALLOC_CFLAGS = ${talloc_cflags}
697 TALLOC_LDFLAGS = ${talloc_ldflags}
698
699 # Flags needed to have linker set rpath attribute
700 RPATH_LDFLAGS = ${rpath_ldflags}
701
702 # Flags needed to have linker link only to necessary libraries
703 AS_NEEDED_LDFLAGS = ${as_needed_ldflags}
704
705 # Whether valgrind header files are available
706 HAVE_VALGRIND = ${have_valgrind}
707
708 # And if so, flags needed at compile time for valgrind macros
709 VALGRIND_CFLAGS = ${valgrind_cflags}
710
711 # Support for emacs
712 WITH_EMACS = ${WITH_EMACS}
713
714 # Support for bash completion
715 WITH_BASH = ${WITH_BASH}
716
717 # Support for zsh completion
718 WITH_ZSH = ${WITH_ZSH}
719
720 # Combined flags for compiling and linking against all of the above
721 CONFIGURE_CFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS)      \\
722                    \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND)   \\
723                    \$(VALGRIND_CFLAGS) -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR)
724 CONFIGURE_CXXFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS)    \\
725                      \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
726                      \$(VALGRIND_CFLAGS) \$(XAPIAN_CXXFLAGS)             \\
727                      -DHAVE_STRCASESTR=\$(HAVE_STRCASESTR)
728 CONFIGURE_LDFLAGS =  \$(GMIME_LDFLAGS) \$(TALLOC_LDFLAGS) \$(XAPIAN_LDFLAGS)
729 EOF