Commit graph

88 commits

Author SHA1 Message Date
Jani Nikula
c158201ee2 build: drop the -Wswitch-enum warning
-Wswitch-enum is a bit awkward if a switch statement is intended to
handle just some of the named codes of an enumeration especially, and
leave the rest to the default label.

We already have -Wall, which enables -Wswitch by default, and per GCC
documentation, "The only difference between -Wswitch and this option
[-Wswitch-enum] is that this option gives a warning about an omitted
enumeration code even if there is a default label."

Drop -Wswitch-enum to not force listing all named codes of
enumerations in switch statements that have a default label.
2012-10-31 16:39:25 -03:00
Austin Clements
b04c062aee Support OpenBSD
OpenBSD's build flags are identical to FreeBSD, except that libraries
need to be explicitly linked against libc.  No code changes are
necessary.

From: Cody Cutler <ccutler@csail.mit.edu>
2012-10-27 09:35:47 -03:00
Mike Kelly
df6f3cdf9d configure: Add support for FreeBSD.
This makes FreeBSD a recognized platform. Follow up patches make it
work properly.
2012-09-01 23:15:53 -03:00
Tomi Ollila
4cedb2a3ea configure: check whether shell is capable of parameter substring processing
'configure' script uses parameter substring extensively. It is Posix shell
feature. Original Bourne shell does not have such features. Some systems
still ships such shells as /bin/sh (for compatibility reasons -- shell
scripts written on those platforms are expected to work on 1990's systems).

Just testing whether parameter substring processing works will make the
shell exit due to syntax error if it is not compatible. Therefore the test
is executed in a subshell -- subshell exits with nonzero value when the
operation in question fails.

As 'if ! ...' does not work in Bourne shell, Short-circuiting construct
'||' is used to print information message and exit when expected.
2012-07-25 08:17:24 -03:00
Jameson Graef Rollins
12772b6762 config: add quoting to fix IFS bug
Without proper quoting the DEFAULT_IFS was getting set incorrectly,
which was causing problems with the storage of some variables later in
the script.  Quoting fixes the problem.
2012-06-03 13:26:44 -03:00
Jameson Graef Rollins
fae97b1013 configure: add help note about gmime version 2012-05-25 21:40:55 -03:00
David Bremner
6acd61dad9 configure: change gmime version in help message to 2.6
Since GMime 2.6 is now the stable version upstream, and probably the
most tested by notmuch developers, it makes sense to suggest that to
users to install.
2012-04-05 08:01:32 -03:00
Tomi Ollila
3c7d97c3c7 configure: print info about required gmime 2.4 or 2.6 versions
In case required gmime (2.4 or 2.6) version if not found print information
about both alternatives (and currently minimal 2.6 version that is needed).
2012-04-05 07:53:04 -03:00
Tomi Ollila
e8138c522b configure: add empty line after each missing component message
Currently whenever message about missing GMime, Glib or talloc is
printed the message is 2 lines, component info and its http location
in next line. In the future the amount of lines will vary. To ease
reading in these cases newline is added after each message.
2012-04-05 07:50:51 -03:00
Tomi Ollila
8bf1842b19 Allow selecting which version of gmime is used to build notmuch.
This allows for testing against both versions of gmime on a single
machine, without having to mess with pkg-config paths.

This is rework of Tom Prince's patch submitted in
id:"1331402091-15663-1-git-send-email-tom.prince@ualberta.net"
2012-03-20 08:11:27 -03:00
Tomi Ollila
1ef9f769d7 configure: store $IFS to $DEFAULT_IFS readonly variable
In the future, IFS value needs to be changed in a few places
in configure -- and then restored. Store the original value
to $DEFAULT_IFS for easy restoration.
2012-03-20 08:10:57 -03:00
Justus Winter
1984a26646 Do not try to parse the options for --build and --host arguments
Formerly the code assumed the arguments to be triples and threw an
error if this was not the case. But those arguments are only there for
compatibility with autotools and are not used within the build system,
so just dropping the code parsing these values makes the build system
more robust.

Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-03-20 08:10:57 -03:00
Justus Winter
524f01a7b5 Add GNU as a valid platform
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-03-20 08:10:57 -03:00
Thomas Jost
f34613ea83 build: Require gmime >= 2.6.7
gmime-2.6 had a bug [1] which made it impossible to tell why a signature
verification failed when the signer key was unavailable (empty "sigstatus" field
in the JSON output). Since 00b5623d the corresponding test is marked as broken
when using gmime-2.6 (2.4 is fine).

This bug has been fixed in gmime 2.6.5, which is now the minimal gmime-2.6
version required for building notmuch (gmime-2.4 is still available). As a
consequence the version check in test/crypto can be removed.

[Added by db]

Although less unambigously a bug, Gmime 2.6 prior to 2.6.7 also was
more strict about parsing, and rejected messages with initial "From "
headers.  This restriction is relaxed in [2].  For reasons explained in [3],
we want to keep this more relaxed parsing for now.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=668085

[2] http://git.gnome.org/browse/gmime/commit/?id=d311f576baf750476e06e9a1367a2dc1793ea7eb

[3] id:"1331385931-1610-1-git-send-email-david@tethera.net"
2012-03-11 22:13:48 -03:00
Jameson Graef Rollins
4d136995ce Fix configure script to properly detect gmime-2.6 if available.
Previously, the configure script would appear to detect gmime-2.6 if
present.  However, the binaries would end up being compiled against
gmime-2.4.  The addition of a break fixes things so that now gmime-2.6
will be used if available, falling back to gmime-2.4.
2012-03-10 21:39:13 -04:00
Pieter Praet
b44b344595 configure: update explicit check for glib : >= 2.22
As of commit b3caef1f, we're using g_array_unref() in 'lib/query.cc',
which was only introduced in glib 2.22, so update the dependency.

Thanks to datapipe@gmail.com for reporting this [1].

Also see commit b88e6abc.

[1] id:"alpine.DEB.2.02.1201132130220.21970@ltspubuntu4.int.smq.datapipe.net"
2012-02-03 21:10:55 -04:00
Amadeusz Żołnowski
e6d85fb97d Separate Emacs misc. files dir. from Emacs code dir.
New option --emacsetcdir was added, but it's set default to the same
value as --emacslispdir for backward compatibility.
2011-10-28 14:07:44 -03:00
Pieter Praet
730acd4764 fix sum moar typos [build scripts, Makefiles]
Various typo fixes in comments within the Makefile and other build scripts.

Signed-off-by: Pieter Praet <pieter@praet.org>

Edited-by: Carl Worth <cworth@cworth.org> Restricted to just build files.
2011-06-23 15:44:59 -07:00
Carl Worth
574f408816 configure: Fix detection of libdir in ldconfig configuration
Ever since commit b4b5e9ce4d the
detection of libdir in the ldconfig configuration has been broken,
resulting in RPATH being set when not needed and not wanted.

The cause was a change from an IFS setting of:

	IFS="$(printf '\n\t')"

to a new setting of:

	IFS="$(printf '\n')"

That looks desirable since we want to split the output of ldconfig
based on newlines, (and not split on any filename that might have an
embedded tab in it). The subtle bug in the above is that the shell
trims any trailing newlines when performing command substitution so
the final statement above was equivalent to:

	IFS=''

which prevented any splitting of the ldconfig output at all.

Fix this by avoiding command substitution and just using a literal
newline in the source file for setting this variable.
2011-06-01 13:02:58 -07:00
Carl Worth
2d6718b837 build: Save configure options and re-use them for automatic runs of configure
This supports the case of a user running "configure --prefix=/foo" then later
updating the soruce (including the configure script) and re-running make.

In this case, the make invocation will re-run configure. Before this change,
this run of configure would lose the user's carefully chosen prefix. This
is now fixed so that configrue is re-run with the user's options.
2011-03-10 11:30:06 -08:00
Carl Worth
3e4a9d60a9 build: Add support for non-source-directory builds.
Such as:

     mkdir build
     cd build
     ../configure
     make

This is implemented by having the configure script set a srcdir
variable in Makefile.config, and then sprinkling $(srcdir) into
various make rules. We also use vpath directives to convince GNU make
to find the source files from the original source directory.
2011-03-09 15:10:03 -08:00
Michal Sojka
b4b5e9ce4d configure: Drop global setting of IFS (without space in it).
This was originally intended to help support filenames with spaces in
them, but this actually breaks things when someone sets a command with
a space in it, (such as CC="ccache cc").

Instead, we now only set a custom IFS when acting on the
newline-separated list of files from /sbin/ldconfig.
2011-01-26 23:29:03 +10:00
Cédric Cabessa
26b4cc4aad configure: add options to disable emacs/zsh/bash and choose install dir.
add --bashcompletiondir and --zshcompletiondir (like --emacslispdir) to choose
installation dir for bash/zsh completion files

Make some features optional:
  --without-emacs / --with-emacs=no do not install lisp file
  --without-bash-completion / --with-bash-completion=no  do not install bash
files
  --without-zsh-completion / --with-zsh-completion=no do not install zsh files
By default, everything is enabled. You can reenable something with
  --with-feature=yes
2011-01-26 22:30:32 +10:00
Carl Worth
b88e6abccd configure: Add explicit check for glib >= 2.14
For cases where GMime is present, but happy with glib 2.12, for example.
2010-11-16 09:00:34 -08:00
Carl Worth
8df28ec509 configure: Use pkg-config --exists rather than --modversion
With --modversion we were asking for output that we were just throwing
away anyway. The --exists option does just what we want, (no output
and communivating only via return value).

Also, --exists allows for testing versions of the package as well.
2010-11-16 08:51:50 -08:00
Carl Worth
6b9a717c26 configure: Add a check for the -Wl,--as-needed flag.
This fits with our general build philosophy of checking at configure
time for desired support, (rather than putting platform-specific
conditionals into our Makefiles).
2010-10-30 13:20:33 -07:00
Carl Worth
e94db26c5c fixup 2010-10-30 13:16:50 -07:00
Carl Worth
660510ee4c configure: Remove a debugging print message.
This was never intended to be committed.
2010-10-30 13:15:00 -07:00
Carl Worth
8753b9defa configure: Test for flag to set rpath
This is better than the previous approach which had a hardcoded Linux-specific
value in the Makefile.
2010-10-30 13:15:00 -07:00
Carl Worth
b802c18d3b configure: Test for each compiler warning before enabling it.
This should allow the build to be much more automatically portable
to compilers with different sets of warning options.
2010-10-30 13:11:56 -07:00
Carl Worth
6e3007bec0 configure: Set XAPIAN_CONFIG to only "xapian-config" by default.
Previously, we preferred a value of "xapian-config-1.1" first. This
was convenient for compiling against Xapian 1.1 while Xapian 1.2 was
unreleased. But now that Xapian 1.2 is realease, and since it ships a
xapian-config, the xapian-config-1.1 value can mask the newer library.

Instead of trying to track the latest xapian-config-1.x in our
configure script let's simply expect the user to set
XAPIAN_CONFIG=xapian-config-1.x in order to compile against an
unreleased Xapian.
2010-10-29 14:49:20 -07:00
Felipe Contreras
9d9668e3e7 configure: optimize uname finding a bit
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2010-10-29 14:33:14 -07:00
Carl Worth
d64d0cc8d9 make install: Run ldconfig or install a DT_RUNPATH in binary as appropriate.
Various users were confused as to why they couldn't run notmuch
immediately after "make install", (with linker errors saying that
libnotmuch.so could not be found). The errors came from two different
causes:

1. The user had installed to a system library directory, but had not
   yet run ldconfig.

2. The user had installed to some non-system directory, and had not
   set the LD_LIBRARY_PATH variable.

With this change we fix both problems (on Linux) without the user
having to do anything additional. We first use ldconfig to find the
system library directories. If the user is installing to one of these,
then we run ldconfig as part of "make install".

For case (2) we use the -rpath and --enable-new-dtags linker options
to install a DT_RUNPATH entry in the binary. This entry tells the
dynamic linker where to find libnotmuch. Without the
--enable-new-dtags option only a DT_RPATH option would be installed,
(which has the drawback of not allowing any override with the
LD_LIBRARY_PATH variable).

Distributions (such as Debian and Fedora) don't want to see binaries
packaged with a DT_RPATH or DT_RUNPATH entry. This should be avoided
automatically as long as the packages install to standard locations,
(such as /usr/lib).
2010-06-04 16:52:56 -07:00
Carl Worth
b3076ed269 configure: Remove space from IFS (using tab as necessary)
The idea here is to more easily support filenames with spaces in them
in various loops. We're about to add a loop over the paths configured
by the dynamic linker. Hopefully, they wouldn't contain spaces, but
one never knows so we might as well be prepared.
2010-06-04 16:51:32 -07:00
Tomas Carnecky
a54cecfc8e Add support for the Solaris platform
Like on Mac OS X, the linker doesn't automatically resolve dependencies.

Signed-off-by: Tomas Carnecky <tom@dbservice.com>
2010-06-03 18:17:03 -07:00
Tomas Carnecky
80d5d162be configure: Respect LDFLAGS from the environment.
The configure usage string documents that it respects LDFLAGS, but
currently it doesn't do anything with the configure-time LDFLAGS
value.

Signed-off-by: Tomas Carnecky <tom@dbservice.com>
[Tomas and Nelson sent almost identical patches which I've merged
together here.]
2010-06-03 18:16:11 -07:00
Cédric Cabessa
42bda003a0 configure: add ignored options for compatibility.
gentoo's ebuild script expects 2 more options for configure:
  --host (same format as --build)
  --datadir
2010-04-26 07:18:21 -07:00
Carl Worth
2186cac8e7 configure: Print version of Xapian found during configure check.
This might be handy to know, (since there are important performance
considerations that depend on the Xapian version).
2010-04-21 14:18:56 -07:00
Carl Worth
cbcc3454ae configure: Generalize the GMime configure checks.
This way when GMime 2.8 comes out we can simply add it to the list
rather than adding an additional block of conditional code for it.
Also GMime 2.6 is now preferred over GMime 2.4.
2010-04-21 14:17:14 -07:00
Adrien Bustany
65b634145a configure: Add support for GMime 2.6
Notmuch compiles just fine with GMime 2.6, so accept it in the configure
script.
2010-04-21 14:17:14 -07:00
Gregor Hoffleit
18433e4aff configure: Fix syntax error (spaces in assignment).
Before and after the assignment operator, no spaces are allowed.
I don't know if there are any /bin/sh which allow spaces, but at least
in bash, csh and zsh, the former code was no valid assigment.
2010-04-15 19:45:11 -07:00
Carl Worth
3d7af74ce5 Makefile: Fix final linking of notmuch binary for OS X.
Apparently the OS X linker can't resolve symbols when linking a
program (notmuch) against a library (libnotmuch) when the library
depends on another library (libgmime) that the program doesn't depend
on directly.

For this case, we need to link the program directly against both
libraries, but we don't want to do this on Linux, where the linker can
do this on its own and the explicit, unneeded link would cause
problems.
2010-04-14 16:29:50 -07:00
Aaron Ecay
8c8079a8b1 Add infrastructure for building shared library on OS X.
This patch adds a configure check for OS X (actually Darwin),
and sets up the Makefiles to build a proper shared library on
that platform.

Signed-off-by: Aaron Ecay <aaronecay@gmail.com>
2010-04-14 16:10:27 -07:00
Dirk Hohndel
d09154465a Add simplistic reimplementation of strcasestr to compat library
While all systems that I have access to support strcasestr, it is
in fact not part of POSIX. So here's a fallback reimplementation
based on POSIX functions.

Signed-off-by: Dirk Hohndel <hohndel@infradead.org>

Tested-by: Tomas Carnecky <tom@dbservice.com> (on OpenSolaris snv_134)
2010-04-14 11:34:12 -07:00
Mike Kelly
37b8f5a8f2 Fix the default value for --includedir. 2010-04-07 16:00:48 -07:00
Carl Worth
a7a961c510 Makefile: Install emacs code to site-lisp, not site-lisp/notmuch
And just make the Debian packaging request site-lisp/notmuch like it
wants. Otherwise, the installed files won't appear on the load-path
so won't be found by emacs.
2010-04-07 10:09:35 -07:00
Carl Worth
dfbec15b23 Install emacs lisp files into a notmuch sub-directory of site-lisp.
Now that we have multiple emacs-lisp source files, it's just more
polite this way.
2010-04-06 18:30:43 -07:00
Carl Worth
a597c8b6ca configure: Ignore more options that debhelper expects.
These include:

	--infodir=DIR
	--localstatedir=DIR
	--libexecdir=DIR
	--disable-maintainer-mode
	--disable-dependency-tracking
2010-04-06 14:42:09 -07:00
Carl Worth
ea43d06300 configure: Add a --sysconfdir option.
Which means that the bash completion script will now install
to ${prefix}/etc by default (unless configured with --syconfdir=/etc)
which is probably the right thing to do.
2010-04-06 14:42:09 -07:00
Carl Worth
1d1ad74db9 configure: Add support for a --mandir option
Again, nothing tricky here.
2010-04-06 14:42:09 -07:00