fix configure script to handle --prefix= and properly create Makefile.config
[notmuch] / configure
1 #! /bin/sh
2
3 # defaults
4 PREFIX=/usr/local
5
6 # option parsing
7 for option; do
8     if [ "${option%=*}" = '--prefix' ] ; then
9         PREFIX="${option#*=}"
10     fi
11 done
12
13 cat <<EOF
14 Welcome to Notmuch, a system for indexing, searching and tagging your email.
15
16 We hope that the process of building and installing notmuch is quick
17 and smooth so that you can soon be reading and processing your email
18 more efficiently than ever.
19
20 If anything goes wrong in this process, please do as much as you can
21 to figure out what could be different on your machine compared to
22 those of the notmuch developers. Then, please email those details to
23 the Notmuch list (notmuch@notmuchmail.org) so that we can hopefully make
24 future versions of notmuch easier for you to use.
25
26 We'll now investigate your system to find verify that various software
27 components that notmuch relies on are available.
28
29 EOF
30
31 errors=0
32
33 if pkg-config --version > /dev/null 2>&1; then
34     have_pkg_config=1
35 else
36     have_pkg_config=0
37 fi
38
39 if xapian-config --version > /dev/null 2>&1; then
40     echo "Checking for Xapian development files... Yes."
41     have_xapian=1
42 else
43     echo "Checking for Xapian development files... No."
44     have_xapian=0
45     errors=$((errors + 1))
46 fi
47
48 if pkg-config --modversion gmime-2.4 > /dev/null 2>&1; then
49     echo "Checking for GMime 2.4 development files... Yes."
50     have_gmime=1
51 else
52     echo "Checking for GMime 2.4 development files... No."
53     have_gmime=0
54     errors=$((errors + 1))
55 fi
56
57 if pkg-config --modversion talloc > /dev/null 2>&1; then
58     echo "Checking for talloc development files... Yes."
59     have_talloc=1
60 else
61     echo "Checking for talloc development files... No."
62     have_talloc=0
63     errors=$((errors + 1))
64 fi
65
66 if pkg-config --modversion valgrind > /dev/null 2>&1; then
67     echo "Checking for valgrind development files... Yes."
68     have_valgrind=-DHAVE_VALGRIND
69 else
70     echo "Checking for valgrind development files... No."
71     have_valgrind=
72 fi
73
74 if [ $errors -gt 0 ]; then
75     cat <<EOF
76
77 *** Error: The dependencies of notmuch could not be satisfied. You will
78 need to install the following packages before being able to compile
79 notmuch:
80
81 EOF
82     if [ $have_xapian -eq 0 ]; then
83         echo "  Xapian library (including development files such as headers)"
84         echo "  http://xapian.org/"
85     fi
86     if [ $have_gmime -eq 0 ]; then
87         echo "  GMime 2.4 library (including development files such as headers)"
88         echo "  http://spruce.sourceforge.net/gmime/"
89     fi
90     if [ $have_talloc -eq 0 ]; then
91         echo "  The talloc library (including development files such as headers)"
92         echo "  http://talloc.samba.org/"
93     fi
94     cat <<EOF
95
96 On a modern, package-based operating system such as Debian, you can
97 install all of the dependencies with the following simple command
98 line:
99
100         sudo apt-get install libxapian-dev libgmime-2.4-dev libtalloc-dev
101
102 On other systems, a similar command can be used, but the details of the 
103 package names may be different, (such as "devel" in place of "dev").
104
105 EOF
106     if [ $have_pkg_config -eq 0 ]; then
107 cat <<EOF
108 Note: the pkg-config program is not available. Both this configure
109 script and the Makefile of notmuch use pkg-config to find the
110 compilation flags required to link against the various libraries
111 needed by notmuch. It's possible you simply need to install pkg-config
112 with a command such as:
113
114         sudo apt-get install pkg-config
115
116 But if pkg-config is not available for your system, then you will need
117 to manually edit the notmuch Makefile to set NOTMUCH_CFLAGS and
118 NOTMUCH_LDFLAGS to the correct values without calling pkg-config.
119
120 EOF
121     fi
122 cat <<EOF
123 When you have installed the necessary dependencies, you can run
124 configure again to ensure the packages can be found, or simply run
125 "make" to compile notmuch.
126
127 EOF
128     exit 1
129 fi
130
131 cat <<EOF
132
133 All required packages were found. You may now run the following
134 commands to compile and install notmuch:
135
136         make
137         sudo make install
138
139 EOF
140
141 # construct the Makefile.config
142 cat > Makefile.config <<EOF
143 prefix = $PREFIX
144 bash_completion_dir = /etc/bash_completion.d
145 CFLAGS += ${have_valgrind}
146 EOF