summaryrefslogtreecommitdiffstats
path: root/Makefile
AgeCommit message (Collapse)Author
2017-03-10support make goals after initial {'', dist, data}clean goal(s)Tomi Ollila
Now make goal combinations starting with *clean goals, ending with *clean coals, and having non-*clean goals in between should work. What does not expected to work are non-*clean - *clean - *non-clean goal combinations. Also, if first goals are *clean goals, re-creation of Makefile.config is inhibited when Makefile.config exists and ./configure is newer.
2016-11-26build: Move variable definitions to Makefile.globalDavid Bremner
I noticed when trying to use VERSION (and derived variables) in a subdirectory that the top level Makefile.local needed to be included first. But according to c10085c77b407d9ea704f8b4f9e0a805f63e72cb it actually needs to be last. To break this conflict, move the variables definitions into a new Makefile.global.
2014-03-25build: move canonical list of subdirectories to configure scriptDavid Bremner
The configure script needs this list for out of tree builds. Grabbing it from the Makefile via sed was fragile and broken.
2014-03-11test: add machinery to download and verify databasesDavid Bremner
Note that it is intentional that the checksum file is not downloaded. The intent is to check those into git.
2014-03-09doc: install sphinx version of man pagesDavid Bremner
The python script mkdocdeps.py is used to import the list of man pages from the sphinx configuration to make. This will delete the (release only) target update-man-versions. This will be replaced in a followup commit.
2014-03-09doc: convert sphinx based docsDavid Bremner
This is the output from sphinx-quickstart, massaged a bit, along with our existing man pages converted to rst. A skeleton notmuch-emacs manual is also included. It is not suitable for end user use yet.
2013-05-26build: fix out-of-tree buildsJani Nikula
Support for out-of-tree builds was added in commit 3e4a9d60a9419621b08c647a306843d76c47c2cb Author: Carl Worth <cworth@cworth.org> Date: Wed Mar 9 15:02:42 2011 -0800 build: Add support for non-source-directory builds. and broken in commit 7beeb8c88a014ecbc53d8241f10683b3c4c16228 Author: David Bremner <bremner@debian.org> Date: Sat Nov 17 12:28:15 2012 -0400 test: initial performance testing infrastructure Fix the build breakage. Out-of-tree 'make test' has been broken since earlier than the above, and remains broken, as does out-of-tree perf test, but at least the build now works.
2012-11-26test: initial performance testing infrastructureDavid Bremner
This is not near as fancy as as the unit tests, on the theory that the code should typically be crashing when performance tuning. Nonetheless, there is plenty of room for improvement. Several more of the pieces of the test infrastructure (e.g. the option parsing) could be factored out into test/test-lib-common.sh
2012-10-31parse-time-string: add a date/time parser to notmuchJani Nikula
Add a date/time parser to notmuch, to be used for adding date range query support for notmuch lib later on. Add the parser to a directory of its own to make it independent of the rest of the notmuch code base. Signed-off-by: Jani Nikula <jani@nikula.org>
2011-12-31build-system: update for split man pagesDavid Bremner
- We have to remove the installation of notmuch.1.gz from the top level Makefile.local. - Man pages with multiple names are handled by making relative symlinks in the install-man target. - update version tests and convenience rules for split man pages The man page version test still only checks notmuch.1, but the location is updated. update-man-versions is longer than the one-line previously in update-versions mainly because I decided to take the high road and stick to POSIX sed (thus, no sed -i). The sed regex itself is more complicated to cope with variations in the headers.
2011-10-30xutil.c: remove duplicate copies, create new library libutil.a to contain xutil.David Bremner
We keep the lib/xutil.c version. As a consequence, also factor out _internal_error and associated macros. It might be overkill to make a new file error_util.c for this, but _internal_error does not really belong in database.cc.
2011-03-10build: Save configure options and re-use them for automatic runs of configureCarl Worth
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-10build: Fix a plain "make" to automatically run configure.Carl Worth
The recent change to support non-source-directory builds broke this case.
2011-03-09build: Add support for non-source-directory builds.Carl Worth
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.
2010-09-17test: Fix test suite to integrate with our non-recursive Makefile system.Carl Worth
This avoids "make test" emitting messages from three (3!) recursive invocations of make. We change the invocations of the tests themselves to occur directly from the shell script rather than having the shell script invoke make again and using wildcards in the Makefile.
2010-04-14Makefile: Move include of Makefile.config up from Makefile.localCarl Worth
The recent change to include sub-directory Makefile.local files before the top-level Makefile.local means that we need to include the Makefile.config before those. So move it up from Makefile.local to Makefile.
2010-04-14Fix up Makefile for build.Aaron Ecay
Must set extra_c(xx)flags before including subdir Makefile.local's, so that there is a blank slate that the subdirs can add on to. Must include subdir Makefile.local's before global one, otherwise the compat sources are not added to the list of those to be compiled. Signed-off-by: Aaron Ecay <aaronecay@gmail.com>
2010-04-06Makefile: Move the completion-specific commands to completion/Makefile.localCarl Worth
For much better modularity.
2010-03-31Move bulk of rules from Makefile to Makefile.local.Carl Worth
Before it was impossible to know whether any particular setting or rule definition was in Makefile or Makefile.local. So we strip the Makefile down to little more than the list of sub-directories and the logic to include all of the sub-directories' Makefile.local fragments. Then, all of the real work can happen inside of Makefile.local.
2010-03-31Build and link against notmuch shared library, install notmuch.hBen Gamari
Signed-off-by: Ingmar Vanhassel <ingmar@exherbo.org>
2010-03-10Makefile: Fix Makefiles to depend on all child Makefile fragments.Carl Worth
We were previously maintaining two lists of the child Makefile fragments---one for the includes and another for the dependencies. So, of course, they drifted and the dependency list wasn't up to date. We fix this by adding a single subdirs variable, and then using GNU Makefile substitution to generate both the include and the dependency lists. Some side effect of this change caused the '=' assignment of the dir variable to not work anymore. I'm not sure why that is, but using ':=' makes sense here and fixes the problem.
2010-03-10Makefile: Use 'emacs --quick' for a less noisy build of "make install-emacs".Carl Worth
I don't really notice if it goes any quicker, but it's sure nice to have less spew now.
2010-03-10Makefile: Simplify the conditional message of the all target.Carl Worth
We wamt a simple "make" to call the 'all' target and then print a message when done, but we don't want "make install" which depends on that same 'all' target to print the message. We previously did this with a separate 'all-without-message' target, which was inelegant because it caused all users of the target to carefully depend on 'all-without-message' rather than 'all'. Instead, we now use a single 'all' target but with a Makefile conditional that examines the MAKECMDGOALS variable to determine whether to print the message.
2010-03-09Makefile: Add a meesage after "make" telling the user to run "make install"Carl Worth
As one command completes, it's kind of the tool to indicate which command the user should execute next.
2010-03-09Makefile: Rename all_deps to global_depsCarl Worth
The "all" inside this variable name was easy to confuse with the separate "all" target. This variable specifies dependencies that apply to every target, so use "global" instead.
2010-03-09emacs: Move emacs UI (currently just one file) to subdirectory.David Bremner
Add emacs/Makefile.local and emacs/Makefile. Move emacs targets into emacs/Makefile.local, but leave the byte compilation rule in the top level Makefile.
2010-01-14Install zsh completion filemartin f. krafft
According to the Debian zsh maintainer Clint Adams, this is the first time that a package installs its own completer into zsh. Part of the reason this is not usually done is because zsh does not provide a stable API. We agreed to try it, given that notmuch is expected to change quite a bit initially. If there are problems or the completer goes stable, we'll move it into the upstream zsh repository. Signed-off-by: martin f. krafft <madduck@debian.org>
2009-12-04Makefile: Mention "./configure --help" now that it exists.Carl Worth
Since we're directing the user to ./confgiure for more options, actually tell the user how to discover what those options are.
2009-12-04Makefile: Silence compiler errors during dependency generation.Carl Worth
We have a bootstrapping issue with our dependency generation. When the Makefile.config doesn't exist yet, the complete compilation flags are not yet available for passing to the compiler to generate the dependencies. But we don't have explicit rules to create these dependency files, (just the implicit rule that is created by the -include), so we can't control when make will attempt to create them. We do have a dependency of the dependency files on Makefile.config, so make should eventually call the compiler with the correct flags and everything should be good. So in the meantime, silence any complaints.
2009-12-04Makefile: Inform user that they might want to call ./configure explicitly.Carl Worth
If the Makefile does this for the user, then no arguments are passed. So it's only polite to let the user know that it's possible to get pass those arguments.
2009-12-04configure: Support the capturing of CFLAGS and CXXFLAGS at configure time.Carl Worth
These variables can now be set via configure time via environment variables like so: CFLAGS=-g ./configure and subsequent builds will remember these values. The values can still be overridden at compile time by passing make variables: make CFLAGS=-O2 The CXXFLAGS variable is optional. If unset at either configure time or at compile time, it will inherit its value from the CFLAGS variable. (Though if explicitly set at configure time it must be explicitly overriden at compile time---just overriding CFLAGS will not override CXXFLAGS as well.)
2009-12-04Fix quiet compilation to print the user's CFLAGS, CXXFLAGS, LDFLAGS.Carl Worth
The only reason I ever call "make V=1" myself, (other than when debugging the compiler command-line for some reason), is to ensure whether my CFLAGS, (like "-g -O0" or "-O2"), are actually making it to the command-line. But these are hard to find in the V=1 output, and really, we should just print these even in the quiet case. So do that.
2009-12-01configure: Resolve all pkg-config flags at configure time.Carl Worth
Previously, we were resolving these within the Makefile. This had the problem that if pkg-config was not present, the Makefile would still invoke it resulting in ugly errors before the configure script was even run, (which would finally present a kind error message about pkg-config not being present).
2009-12-01Makefile: Split warnings into two sets (WARN_CFLAGS and WARN_CXXFLAGS)Carl Worth
Some C++ compilers complain about -Wmissing-declarations not being valid, so avoid passing it except when compiling a C file.
2009-12-01Makefile: Switch from echo to printf for better portability.Carl Worth
Some systems have an echo implementation which doesn't know how to interpret a sequence of "\n". The word is that printf should be much more portable, so let's try that instead.
2009-12-01configure: Assimilate new getlinetest into recent configure conventions.Carl Worth
We're now using printf to print what we're checking before we check. We're also making variables such as HAVE_GETLINE available to both make and to the C pre-processor. With this, the local getline implementation is now only compiled if not available on the system.
2009-12-01Makefile: Incorporate getline implementation into the build.Carl Worth
It's unconditional for a very short time. We expect to soon be building it only if necessary.
2009-12-01Makefile: Add new "install-bash" target for bash completion supportCarl Worth
It was problematic to have this in "make install" since it would unconditionally try to install to /etc, (even if a non-privileged user was attempting an install to a prefix in the user's home directory, for example).
2009-12-01Remove Makefile.config from the repository.Carl Worth
Instead of shipping a default version, we now add a rule to automatically run configure if necessary to create Makefile.config.
2009-11-23makefile: Declare clean target as phony.Jan Janak
This ensures that make clean always proceeds, even if the user accidentally creates a file named 'clean'. Also, it ignores errors in rm and other commands. Signed-off-by: Jan Janak <jan@ryngle.com>
2009-11-22Makefile: Fix to work even with GZIP environment variable set.Carl Worth
The rule here was written to assume that if the GZIP environment variable was set that it would be the gzip binary to execute, (similar to the CC and CXX variables). But GZIP is actually used to pass arguments to gzip, so we have to use a different name.
2009-11-22Makefile: Magic silent rules.Chris Wilson
Use the facilities of GNU make to create a magic function that will on the first invocation print a description of how to enable verbose compile lines and then print the quiet rule. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Carl Worth <cworth@cworth.org> Cc: Mikhail Gusarov <dottedmag@dottedmag.net> [ickle: Rebased, and duplicate command string eliminated.] [ickle: Fixed verbose bug pointed out by Mikhail]
2009-11-21Makefile: Fix the fallback emacs install path.Carl Worth
When pkg-config can't be used to find out where to install emacs files, we fallback to a hard-coded directory. Only, we were falling back to the wrong thing, (one that emacs doesn't look into by default).
2009-11-21Drop redundant CFLAGS, was already included in CXXFLAGSJed Brown
2009-11-20Makefile: Make object targets depend on MakefilesJan Janak
All objects need to be recompiled when any of the Makefiles changes, so we make them all depend on all the Makefiles. Signed-off-by: Jan Janak <jan@ryngle.com>
2009-11-20Makefile: Hard-code emacs_lispdir if emacs pkg-config file not availableCarl Worth
Using pkg-config to find this variable is nice if it works. Go back to the previously used value if it doesn't.
2009-11-20Makefile: Remove unused variable emacs_startdirCarl Worth
This was added in a prelimnary version of a previous commit that would automatically load notmuch.el for anyone running emacs. It's not used at all in the current Makefile.
2009-11-20Improve installation of emacs mode.Jeffrey C. Ollie
1) Add a separate targets to build and install emacs mode. 2) Don't hardcode the installation directory, instead use emacs' pkg-config module. 3) Install a byte compiled version of the emacs mode. 4) Install the emacs mode in emacs' site-lisp directory. Put "(require 'notmuch)" in your .emacs to load it automatically. 5) Ignore byte-compiled emacs files. Signed-off-by: Jeffrey C. Ollie <jeff@ocjtech.us> Reviewed-by: Ingmar Vanhassel <ingmar@exherbo.org> Reviewed-by: Keith Packard <keithp@keithp.com>
2009-11-19Makefile: evaluate pkg-config onceChris Wilson
Currently the same `pkg-config ...` is executed for every target, so just store the results in a variable.
2009-11-18TypsosIngmar Vanhassel