3 # Set several defaults (optionally specified by the user in
4 # environemnt variables)
8 CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)}
9 XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config-1.1 xapian-config}
11 # Set the defaults for values the user can specify with command-line
18 Usage: ./configure [options]...
20 This script configures notmuch to build on your system.
22 It verifies that dependencies are available, determines flags needed
23 to compile and link against various required libraries, and identifies
24 whether various system functions can be used or if locally-provided
25 replacements will be built instead.
27 Finally, it allows you to control various aspects of the build and
30 First, some common variables can specified via environment variables:
32 CC The C compiler to use
33 CFLAGS Flags to pass to the C compiler
34 CXX The C++ compiler to use
35 CXXFLAGS Flags to pass to the C compiler
36 LDFLAGS Flags to pass when linking
38 Each of these values can further be controlled by specifying them
39 later on the "make" command line.
41 Other environment variables can be used to control configure itself,
42 (and for which there is no equivalent build-time control):
44 XAPIAN_CONFIG The program to use to determine flags for
45 compiling and linking against the Xapian
46 library. [$XAPIAN_CONFIG]
48 Additionally, various options can be specified on the configure
51 --prefix=PREFIX Install files in PREFIX [$PREFIX]
53 By default, "make install" will install the resulting program to
54 $PREFIX/bin, documentation to $PREFIX/share, etc. You can
55 specify an installation prefix other than $PREFIX using
56 --prefix, for instance:
58 ./configure --prefix=\$HOME
63 # Parse command-line options
65 if [ "${option}" = '--help' ] ; then
68 elif [ "${option%%=*}" = '--prefix' ] ; then
71 echo "Unrecognized option: ${option}."
80 Welcome to Notmuch, a system for indexing, searching and tagging your email.
82 We hope that the process of building and installing notmuch is quick
83 and smooth so that you can soon be reading and processing your email
84 more efficiently than ever.
86 If anything goes wrong in the configure process, you can override any
87 decisions it makes by manually editing the Makefile.config file that
88 it creates. Also please do as much as you can to figure out what could
89 be different on your machine compared to those of the notmuch
90 developers. Then, please email those details to the Notmuch list
91 (notmuch@notmuchmail.org) so that we can hopefully make future
92 versions of notmuch easier for you to use.
94 We'll now investigate your system to verify that all required
95 dependencies are available:
101 if pkg-config --version > /dev/null 2>&1; then
107 printf "Checking for Xapian development files... "
109 for xapian_config in ${XAPIAN_CONFIG}; do
110 if ${xapian_config} --version > /dev/null 2>&1; then
113 xapian_cxxflags=$(${xapian_config} --cxxflags)
114 xapian_ldflags=$(${xapian_config} --libs)
118 if [ ${have_xapian} = "0" ]; then
120 errors=$((errors + 1))
123 printf "Checking for GMime 2.4 development files... "
124 if pkg-config --modversion gmime-2.4 > /dev/null 2>&1; then
127 gmime_cflags=$(pkg-config --cflags gmime-2.4)
128 gmime_ldflags=$(pkg-config --libs gmime-2.4)
132 errors=$((errors + 1))
135 printf "Checking for talloc development files... "
136 if pkg-config --modversion talloc > /dev/null 2>&1; then
139 talloc_cflags=$(pkg-config --cflags talloc)
140 talloc_ldflags=$(pkg-config --libs talloc)
145 errors=$((errors + 1))
148 printf "Checking for valgrind development files... "
149 if pkg-config --modversion valgrind > /dev/null 2>&1; then
152 valgrind_cflags=$(pkg-config --cflags valgrind)
154 printf "No (but that's fine).\n"
158 if pkg-config --modversion emacs > /dev/null 2>&1; then
159 emacs_lispdir=$(pkg-config emacs --variable sitepkglispdir)
161 emacs_lispdir='$(prefix)/share/emacs/site-lisp'
164 if [ $errors -gt 0 ]; then
167 *** Error: The dependencies of notmuch could not be satisfied. You will
168 need to install the following packages before being able to compile
172 if [ $have_xapian -eq 0 ]; then
173 echo " Xapian library (including development files such as headers)"
174 echo " http://xapian.org/"
176 if [ $have_gmime -eq 0 ]; then
177 echo " GMime 2.4 library (including development files such as headers)"
178 echo " http://spruce.sourceforge.net/gmime/"
180 if [ $have_talloc -eq 0 ]; then
181 echo " The talloc library (including development files such as headers)"
182 echo " http://talloc.samba.org/"
186 With any luck, you're using a modern, package-based operating system
187 that has all of these packages available in the distribution. In that
188 case a simple command will install everything you need. For example:
190 On Debian and similar systems:
192 sudo apt-get install libxapian-dev libgmime-2.4-dev libtalloc-dev
194 Or on Fedora and similar systems:
196 sudo yum install xapian-core-devel gmime-devel libtalloc-devel
198 On other systems, similar commands can be used, but the details of the
199 package names may be different.
202 if [ $have_pkg_config -eq 0 ]; then
204 Note: the pkg-config program is not available. This configure script
205 uses pkg-config to find the compilation flags required to link against
206 the various libraries needed by notmuch. It's possible you simply need
207 to install pkg-config with a command such as:
209 sudo apt-get install pkg-config
211 sudo yum install pkgconfig
213 But if pkg-config is not available for your system, then you will need
214 to modify the configure script to manually set the cflags and ldflags
215 variables to the correct values to link against each library in each
216 case that pkg-config could not be used to determine those values.
221 When you have installed the necessary dependencies, you can run
222 configure again to ensure the packages can be found, or simply run
223 "make" to compile notmuch.
229 printf "Checking for getline... "
230 if ${CC} -o config/have_getline config/have_getline.c > /dev/null 2>&1
235 printf "No (will use our own instead).\n"
238 rm -f config/have_getline
242 All required packages were found. You may now run the following
243 commands to compile and install notmuch:
250 # construct the Makefile.config
251 cat > Makefile.config <<EOF
252 # This Makefile.config was automatically generated by the ./configure
253 # script of notmuch. If the configure script identified anything
254 # incorrectly, then you can edit this file to try to correct things,
255 # but be warned that if configure is run again it will destroy your
256 # changes, (and this could happen by simply calling "make" if the
257 # configure script is updated).
259 # The C compiler to use
262 # The C++ compiler to use
265 # Default FLAGS for C compiler (can be overridden by user such as "make CFLAGS=-g")
268 # Default FLAGS for C++ compiler (can be overridden by user such as "make CXXFLAGS=-g")
269 CXXFLAGS = ${CXXFLAGS}
271 # The prefix to which notmuch should be installed
274 # The directory to which emacs lisp files should be installed
275 emacs_lispdir=${emacs_lispdir}
277 # Whether the getline function is available (if not, then notmuch will
278 # build its own version)
279 HAVE_GETLINE = ${have_getline}
281 # Flags needed to compile and link against Xapian
282 XAPIAN_CXXFLAGS = ${xapian_cxxflags}
283 XAPIAN_LDFLAGS = ${xapian_ldflags}
285 # Flags needed to compile and link against GMime-2.4
286 GMIME_CFLAGS = ${gmime_cflags}
287 GMIME_LDFLAGS = ${gmime_ldflags}
289 # Flags needed to compile and link against talloc
290 TALLOC_CFLAGS = ${talloc_cflags}
291 TALLOC_LDFLAGS = ${talloc_ldflags}
293 # Whether valgrind header files are available
294 HAVE_VALGRIND = ${have_valgrind}
296 # And if so, flags needed at compile time for valgrind macros
297 VALGRIND_CFLAGS = ${valgrind_cflags}
299 # Combined flags for compiling and linking against all of the above
300 CONFIGURE_CFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\
301 \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
303 CONFIGURE_CXXFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE) \$(GMIME_CFLAGS) \\
304 \$(TALLOC_CFLAGS) -DHAVE_VALGRIND=\$(HAVE_VALGRIND) \\
305 \$(VALGRIND_CFLAGS) \$(XAPIAN_CXXFLAGS)
306 CONFIGURE_LDFLAGS = \$(GMIME_LDFLAGS) \$(TALLOC_LDFLAGS) \$(XAPIAN_LDFLAGS)