3 # Set several defaults (optionally specified by the user in
4 # environemnt variables)
8 CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)}
10 # Set the defaults for values the user can specify with command-line
17 Usage: ./configure [options]...
19 This script configures notmuch to build on your system.
21 It verifies that dependencies are available, determines flags needed
22 to compile and link against various required libraries, and identifies
23 whether various system functions can be used or if locally-provided
24 replacements will be built instead.
26 Finally, it allows you to control various aspects of the build and
29 First, some common variables can specified via environment variables:
31 CC The C compiler to use
32 CFLAGS Flags to pass to the C compiler
33 CXX The C++ compiler to use
34 CXXFLAGS Flags to pass to the C compiler
35 LDFLAGS Flags to pass when linking
37 Each of these values can further be controlled by specifying them
38 later on the "make" command line.
40 Additionally, various options can be specified on the configure
43 --prefix=PREFIX Install files in PREFIX [$PREFIX]
45 By default, "make install" will install the resulting program to
46 $PREFIX/bin, documentation to $PREFIX/share, etc. You can
47 specify an installation prefix other than $PREFIX using
48 --prefix, for instance:
50 ./configure --prefix=\$HOME
55 # Parse command-line options
57 if [ "${option}" = '--help' ] ; then
60 elif [ "${option%%=*}" = '--prefix' ] ; then
63 echo "Unrecognized option: ${option}."
72 Welcome to Notmuch, a system for indexing, searching and tagging your email.
74 We hope that the process of building and installing notmuch is quick
75 and smooth so that you can soon be reading and processing your email
76 more efficiently than ever.
78 If anything goes wrong in the configure process, you can override any
79 decisions it makes by manually editing the Makefile.config file that
80 it creates. Also please do as much as you can to figure out what could
81 be different on your machine compared to those of the notmuch
82 developers. Then, please email those details to the Notmuch list
83 (notmuch@notmuchmail.org) so that we can hopefully make future
84 versions of notmuch easier for you to use.
86 We'll now investigate your system to verify that all required
87 dependencies are available:
93 if pkg-config --version > /dev/null 2>&1; then
99 printf "Checking for Xapian development files... "
100 if xapian-config --version > /dev/null 2>&1; then
103 xapian_cxxflags=$(xapian-config --cxxflags)
104 xapian_ldflags=$(xapian-config --libs)
108 errors=$((errors + 1))
111 printf "Checking for GMime 2.4 development files... "
112 if pkg-config --modversion gmime-2.4 > /dev/null 2>&1; then
115 gmime_cflags=$(pkg-config --cflags gmime-2.4)
116 gmime_ldflags=$(pkg-config --libs gmime-2.4)
120 errors=$((errors + 1))
123 printf "Checking for talloc development files... "
124 if pkg-config --modversion talloc > /dev/null 2>&1; then
127 talloc_cflags=$(pkg-config --cflags talloc)
128 talloc_ldflags=$(pkg-config --libs talloc)
133 errors=$((errors + 1))
136 printf "Checking for valgrind development files... "
137 if pkg-config --modversion valgrind > /dev/null 2>&1; then
140 valgrind_cflags=$(pkg-config --cflags valgrind)
142 printf "No (but that's fine).\n"
146 if pkg-config --modversion emacs > /dev/null 2>&1; then
147 emacs_lispdir=$(pkg-config emacs --variable sitepkglispdir)
149 emacs_lispdir='$(prefix)/share/emacs/site-lisp'
152 if [ $errors -gt 0 ]; then
155 *** Error: The dependencies of notmuch could not be satisfied. You will
156 need to install the following packages before being able to compile
160 if [ $have_xapian -eq 0 ]; then
161 echo " Xapian library (including development files such as headers)"
162 echo " http://xapian.org/"
164 if [ $have_gmime -eq 0 ]; then
165 echo " GMime 2.4 library (including development files such as headers)"
166 echo " http://spruce.sourceforge.net/gmime/"
168 if [ $have_talloc -eq 0 ]; then
169 echo " The talloc library (including development files such as headers)"
170 echo " http://talloc.samba.org/"
174 With any luck, you're using a modern, package-based operating system
175 that has all of these packages available in the distribution. In that
176 case a simple command will install everything you need. For example:
178 On Debian and similar systems:
180 sudo apt-get install libxapian-dev libgmime-2.4-dev libtalloc-dev
182 Or on Fedora and similar systems:
184 sudo yum install xapian-core-devel gmime-devel libtalloc-devel
186 On other systems, similar commands can be used, but the details of the
187 package names may be different.
190 if [ $have_pkg_config -eq 0 ]; then
192 Note: the pkg-config program is not available. This configure script
193 uses pkg-config to find the compilation flags required to link against
194 the various libraries needed by notmuch. It's possible you simply need
195 to install pkg-config with a command such as:
197 sudo apt-get install pkg-config
199 sudo yum install pkgconfig
201 But if pkg-config is not available for your system, then you will need
202 to modify the configure script to manually set the cflags and ldflags
203 variables to the correct values to link against each library in each
204 case that pkg-config could not be used to determine those values.
209 When you have installed the necessary dependencies, you can run
210 configure again to ensure the packages can be found, or simply run
211 "make" to compile notmuch.
217 printf "Checking for getline... "
218 if ${CC} -o config/have_getline config/have_getline.c > /dev/null 2>&1
223 printf "No (will use our own instead).\n"
226 rm -f config/have_getline
230 All required packages were found. You may now run the following
231 commands to compile and install notmuch:
238 # construct the Makefile.config
239 cat > Makefile.config <<EOF
240 # This Makefile.config was automatically generated by the ./configure
241 # script of notmuch. If the configure script identified anything
242 # incorrectly, then you can edit this file to try to correct things,
243 # but be warned that if configure is run again it will destroy your
244 # changes, (and this could happen by simply calling "make" if the
245 # configure script is updated).
247 # The C compiler to use
250 # The C++ compiler to use
253 # Default FLAGS for C compiler (can be overridden by user such as "make CFLAGS=-g")
256 # Default FLAGS for C++ compiler (can be overridden by user such as "make CXXFLAGS=-g")
257 CXXFLAGS = ${CXXFLAGS}
259 # The prefix to which notmuch should be installed
262 # The directory to which emacs lisp files should be installed
263 emacs_lispdir=${emacs_lispdir}
265 # Whether the getline function is available (if not, then notmuch will
266 # build its own version)
267 HAVE_GETLINE = ${have_getline}
269 # Flags needed to compile and link against Xapian
270 XAPIAN_CXXFLAGS = ${xapian_cxxflags}
271 XAPIAN_LDFLAGS = ${xapian_ldflags}
273 # Flags needed to compile and link against GMime-2.4
274 GMIME_CFLAGS = ${gmime_cflags}
275 GMIME_LDFLAGS = ${gmime_ldflags}
277 # Flags needed to compile and link against talloc
278 TALLOC_CFLAGS = ${talloc_cflags}
279 TALLOC_LDFLAGS = ${talloc_ldflags}
281 # Whether valgrind header files are available
282 HAVE_VALGRIND = ${have_valgrind}
284 # And if so, flags needed at compile time for valgrind macros
285 VALGRIND_CFLAGS = ${valgrind_cflags}
287 # Combined flags for compiling and linking against all of the above
288 CONFIGURE_CFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\
289 \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
291 CONFIGURE_CXXFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\
292 \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
293 \$(VALGRIND_CFLAGS) \$(XAPIAN_CXXFLAGS)
294 CONFIGURE_LDFLAGS = \$(GMIME_LDFLAGS) \$(TALLOC_LDFLAGS) \$(XAPIAN_LDFLAGS)