aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile
Commit message (Collapse)AuthorAge
* Makefile: Fix to work even with GZIP environment variable set.Gravatar Carl Worth2009-11-22
| | | | | | | 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.
* Makefile: Magic silent rules.Gravatar Chris Wilson2009-11-22
| | | | | | | | | | | | | 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]
* Makefile: Fix the fallback emacs install path.Gravatar Carl Worth2009-11-21
| | | | | | | 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).
* Drop redundant CFLAGS, was already included in CXXFLAGSGravatar Jed Brown2009-11-21
|
* Makefile: Make object targets depend on MakefilesGravatar Jan Janak2009-11-20
| | | | | | | 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>
* Makefile: Hard-code emacs_lispdir if emacs pkg-config file not availableGravatar Carl Worth2009-11-20
| | | | | Using pkg-config to find this variable is nice if it works. Go back to the previously used value if it doesn't.
* Makefile: Remove unused variable emacs_startdirGravatar Carl Worth2009-11-20
| | | | | | 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.
* Improve installation of emacs mode.Gravatar Jeffrey C. Ollie2009-11-20
| | | | | | | | | | | | | | | | | | 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>
* Makefile: evaluate pkg-config onceGravatar Chris Wilson2009-11-19
| | | | | Currently the same `pkg-config ...` is executed for every target, so just store the results in a variable.
* TypsosGravatar Ingmar Vanhassel2009-11-18
|
* Makefile: Change default install prefix from /usr to /usr/localGravatar Carl Worth2009-11-17
| | | | | | | We'll be a much more polite package this way. And the user can change the prefix by editing Makefile.config. Still to be done is to make configure write out Makefile.config and to add a --prefix option to configure.
* Makefile: Fix dependency generation for files in sub-directories.Gravatar Carl Worth2009-11-12
| | | | | | | | | | | | | | | | | | | | Otherwise, things in the lib sub-directory weren't getting recompiled even when lib/notmuch.h was changed. The original rule we were using came from the GNU Makefile manual, but only handled files in the current directory, not file in sub-directories as we use here with our non-recursive Makefile. So the .deps files being created were being put in the right place, (such as .deps/lib/database.d), but the compiler was generating a dependency for "database.o" rather than "lib/database.o" like we want. We were already trying to do a sed job on that name to add a dependency for the .d file as well. But the sed job was failing since the expected pattern wasn't there, (the directory name was missing). So the fix is simply to use basename to construct the search pattern, and then use the name with the directory in the replacement (rather than the back-reference).
* Makefile: Change default flags to -O2.Gravatar Carl Worth2009-11-10
| | | | | We've now verified that it's reliable for the user to override CFLAGS on the command line, so just make the user do to get a debug build.
* Makefile: Make the top-level Makefile a little more independent.Gravatar Carl Worth2009-11-10
| | | | | | | Previously, the top-level Makefile was explicitly adding -I./lib to the compiler flags. However, that's something that's much better done from within the Makefile.local fragment within the lib directory itself.
* Makefile: Simplify setting of CFLAGS, etc.Gravatar Carl Worth2009-11-10
| | | | | | | | | | We were previously using separate CFLAGS and NOTMUCH_CFLAGS variables in an attempt to allow the user to specify CFLAGS on the command-line. However, that's just a lot of extra noise in the Makefile when we can instead let the user specify what is desired for CFLAGS and then use an override to append the things we require. So our Makefile is much neater now.
* Makefile: Fix dependency generation to make .d files themselves dependent.Gravatar Carl Worth2009-11-10
| | | | | | | | | | | | | | | I saw this recommendation in the implementation notes for "Recursive Make Considered Harmful" and then the further recommendation for implementing the idea in the GNU make manual. The idea is that if any of the files change then we need to regenerate the dependency file before we regenerate any targets. The approach from the GNU make manual is simpler in that it just uses a sed script to fix up the output of an extra invocation of the compiler, (as opposed to the approach in the implementation notes from the paper's author which use a wrapper script for the compiler that's always invoked rather than the compiler itself).
* Implement a non-recursive make.Gravatar Carl Worth2009-11-10
| | | | | | | | | | | | The idea here is that every Makefile at each lower level will be an identical, tiny file that simply defers to a top-level make. Meanwhile, the Makefile.local file at each level is a Makefile snippet to be included at the top-level into a large, flat Makefile. As such, it needs to define its rules with the entire relative directory to each file, (typically in $(dir)). The local files can also append to variables such as SRCS and CLEAN for files to be analyzed for dependencies and to be cleaned.
* Makefile: Hide away auto-generated dependency file as .depends.Gravatar Carl Worth2009-11-09
| | | | | | Instead of the old name of Makefile.dep. The idea being that the user really doesn't need to see this by default, (and if debugging the Makefile, the rules will make the name obvious).
* libify: Move library sources down into lib directory.Gravatar Carl Worth2009-11-09
| | | | | A "make" invocation still works from the top-level, but not from down inside the lib directory yet.
* Makefile: Fix install target to depend on the all target.Gravatar Carl Worth2009-11-06
| | | | Otherwise, it would just fail if you hadn't run "make" already.
* Drop date.c file, (use identical function from GMime instead).Gravatar Carl Worth2009-11-02
| | | | | | | We had originally copied this function in at a time when notmuch wasn't actually depending on the GMime library. Now that it does, we might as well call the function that exists there rather than having a private copy of it.
* Makefile: Rewrite to use NOTMUCH rather than MY in variable names.Gravatar Carl Worth2009-11-02
| | | | | I was about to refer to these names in some documentation, so I wanted a slightly better name for them.
* Add a simple manual page for notmuch.Gravatar Carl Worth2009-11-02
| | | | | By pulling content out of notmuch help, and also the messages printed by "notmuch setup".
* Makefile: Add a simple target for "make install".Gravatar Carl Worth2009-10-30
| | | | The more I do here, the less I see the need for autotools.
* Add full-text indexing using the GMime library for parsing.Gravatar Carl Worth2009-10-28
| | | | | | | | | | | This is based on the old notmuch-index-message.cc from early in the history of notmuch, but considerably cleaned up now that we have some experience with Xapian and know just what we want to index, (rather than just blindly trying to index exactly what sup does). This does slow down notmuch_database_add_message a *lot*, but I've got some ideas for getting some time back.
* Move terms and tags code to a new tags.cc file.Gravatar Carl Worth2009-10-26
| | | | | | | We want to start using this from both message.cc and thread.cc so we need it in a place we can share the code. This also requires a new notmuch-private-cxx.h header file for interfaces that include C++-specific datatypes (such as Xapian::Document).
* Add an initial implementation of a notmuch_thread_t object.Gravatar Carl Worth2009-10-25
| | | | | | | | | | | | | | | | | | | We've now got a new notmuch_query_search_threads and a notmuch_threads_result_t iterator. The thread object itself doesn't do much yet, (just allows one to get the thread_id), but that's at least enough to see that "notmuch search" is actually doing something now, (since it has been converted to print thread IDs instead of message IDs). And maybe that's all we need. Getting the messages belonging to a thread is as simple as a notmuch_query_search_messages with a string of "thread:<thread-id>". Though it would be convenient to add notmuch_thread_get_messages which could use the existing notmuch_message_results_t iterator. Now we just need an implementation of "notmuch show" and we'll have something somewhat usable.
* Fix missing xapian-flags when generating dependencies.Gravatar Carl Worth2009-10-25
| | | | | | I didn't notice this because `xapian-config -cxxflags` gives empty output on my system. But for someone with the xapian library installed in some non-standard location this would be important.
* Drop unused variable.Gravatar Carl Worth2009-10-25
| | | | | | | | I didn't end up adding any of the warnings options that aren't allowed for C++, (such as -Wold-style-definition, -Wnested-externs, -Werror-implicit-function-declaration, -Wstrict-prototypes, -Wmissing-prototypes, or -Wbad-function-cast). So for now we can drop the separate C and C++ variables for warnings.
* Add -Wswitch-enum and fix warnings.Gravatar Carl Worth2009-10-25
| | | | | | Having to enumerate all the enum values at every switch is annoying, but this warning actually found a bug, (missing support for NOTMUCH_STATUS_OUT_OF_MEMORY in notmuch_status_to_string).
* Add -Wmising-declarations and fix warnings.Gravatar Carl Worth2009-10-25
| | | | Wow, lots of missing 'static' on internal functions.
* Add -Wwrite-strings and fix warnings.Gravatar Carl Worth2009-10-25
| | | | Need to be const-clean when handling string literals.
* Re-enable the warning for unused parameters.Gravatar Carl Worth2009-10-25
| | | | | It's easy enough to squelch the warning with an __attribute__ ((unused)) and it might just catch something for us in the future.
* Add -Wextra and fix warnings.Gravatar Carl Worth2009-10-25
| | | | | | | | When adding -Wextra we also add -Wno-ununsed-parameters since that function means well enough, but is really annoying in practice. So the warnings we fix here are basically all comparsions between signed and unsigned values.
* Rework Makefile just a bit to enable adding flags for more compiler warningsGravatar Carl Worth2009-10-25
| | | | | | We have to carefully separate the C and C++ flags here since a bunch of the warnings options for gcc are valid for compiling C, but not for C++.
* Add debugging code for examining query strings.Gravatar Carl Worth2009-10-24
| | | | | | | | | | | It's nice that Xapian provides a little function to print a textual representation of the entire query tree. So now, if you compile like so: make CFLAGS=-DDEBUG_QUERY then you get a nice output of the query string received by the query module, and the final query actually being sent to Xapian.
* Generate message ID (using SHA1) when a mail message contains none.Gravatar Carl Worth2009-10-22
| | | | | | This is important as we're using the message ID as the unique key in our database. So previously, all messages with no message ID would be treated as the same message---not good at all.
* Implement 'notmuch dump'.Gravatar Carl Worth2009-10-20
| | | | | | | | | | | | | | | | This is a fairly big milestone for notmuch. It's our first command to do anything besides building the index, so it proves we can actually read valid results out from the index. It also puts in place almost all of the API and infrastructure we will need to allow searching of the database. Finally, with this change we are now using talloc inside of notmuch which is truly a delight to use. And now that I figured out how to use C++ objects with talloc allocation, (it requires grotty parts of C++ such as "placement new" and "explicit destructors"), we are valgrind-clean for "notmuch dump", (as in "no leaks are possible").
* Rename private notmuch_message_t to notmuch_message_file_tGravatar Carl Worth2009-10-20
| | | | | | | | | This is in preparation for a new, public notmuch_message_t. Eventually, the public notmuch_message_t is going to grow enough features to need to be file-backed and will likely need everything that's now in message-file.c. So we may fold these back into one object/implementation in the future.
* Makefile: Add automatic dependency tracking to the Makefile.Gravatar Carl Worth2009-10-20
| | | | With this, I really don't miss anything from automake.
* Remove test programs, xapian-dump and notmuch-index-messageGravatar Carl Worth2009-10-19
| | | | | | | | | | These were just little tests while getting comfortable with GMime and xapian. I'll likely use pieces of these as notmuch continues, but for now let's not distract anyone looking at notmuch with these. And the code will live on in the history if I need to look at it.
* Hook up our fancy new notmuch_parse_date function.Gravatar Carl Worth2009-10-19
| | | | | With all the de-glib-ification out of the way, we can now use it to allow for date-based sorting of Xapian search results.
* notmuch: Switch from gmime to custom, ad-hoc parsing of headers.Gravatar Carl Worth2009-10-19
| | | | | | | | | | | Since we're currently just trying to stitch together In-Reply-To and References headers we don't need that much sophistication. It's when we later add full-text searching that GMime will be useful. So for now, even though my own code here is surely very buggy compared to GMime it's also a lot faster. And speed is what we're after for the initial index creation.
* notmuch: Start actually adding messages to the index.Gravatar Carl Worth2009-10-18
| | | | | | | | | | | | | | | | | | | | | | This is the beginning of the notmuch library as well, with its interface in notmuch.h. So far we've got create, open, close, and add_message (all with a notmuch_database prefix). The current add_message function has already been whittled down from what we have in notmuch-index-message to add only references, message-id, and thread-id to the index, (that is---just enough to do thread-linkage but nothing for full-text searching). The concept here is to do something quickly so that the user can get some data into notmuch and start using it. (The most interesting stuff is then thread-linkage and labels like inbox and unread.) We can defer the full-text indexing of the body of the messages for later, (such as in the background while the user is reading mail). The initial thread-stitching step is still slower than I would like. We may have to stop using libgmime for this step as its overhead is not worth it for the simple case of just parsing the message-id, references, and in-reply-to headers.
* Start a new top-level executable: notmuch.Gravatar Carl Worth2009-10-17
| | | | | | | Of course, there's not much that this program does yet. It's got some structure for some sub-commands that don't do anything. And it has a main command that prints some explanatory text and then counts all the regular files in your mail archive.
* Protect against missing message id while indexing filesGravatar Keith Packard2009-10-14
|
* Rename g_mime_test to notmuch-index-messageGravatar Carl Worth2009-10-13
| | | | | In preparation for actually creating a Xapian index from the message, (not that we're doing that quite yet).
* Add the beginnings of a xapian-dump program.Gravatar Carl Worth2009-10-13
| | | | | | This will (when it is finished) make a much more reliable way to ensure that notmuch's sync program behaves identically to sup-sync. It doesn't actually do anything yet.
* Initial commit of a test program to form the basis of notmuch.Gravatar Carl Worth2009-10-13
Basically just playing with some simple code using libgmime to parse an email message.