]> git.notmuchmail.org Git - notmuch/commitdiff
libnotmuch: build symbols list without relying on gcc -aux-info.
authorDavid Bremner <bremner@debian.org>
Mon, 27 Jun 2011 01:08:52 +0000 (22:08 -0300)
committerCarl Worth <cworth@cworth.org>
Tue, 28 Jun 2011 18:59:48 +0000 (11:59 -0700)
Carl reports "gcc -aux-info notmuch.aux lib/notmuch.h" does not
generate notmuch.aux for him with Debian gcc 4.6.0-8. A small
modification of the original sed regular expression allows us to work
directly from lib/notmuch.h, rather than preprocessing with gcc.

As with most such simple regex based "parsing", this is quite
sensitive to the input format, and needs that each symbol to be
exported from libnotmuch should

- start with "notmuch_"
- be the first non-whitespace token on the line
- be followed by an open parenthesis.

lib/Makefile.local

index eaa8af42b6066c5cbf63c26a5ebc15a355d21102..6dd095c519dcd62828fbc10c7689b9792592cb03 100644 (file)
@@ -76,9 +76,8 @@ $(dir)/$(LIBNAME): $(libnotmuch_modules) notmuch.sym
        $(call quiet,CXX $(CXXFLAGS)) $(libnotmuch_modules) $(FINAL_LIBNOTMUCH_LDFLAGS) $(LIBRARY_LINK_FLAG) -o $@
 
 notmuch.sym: lib/notmuch.h
-       gcc -aux-info notmuch.aux $<
        printf "{\nglobal:\n" > notmuch.sym
-       sed  -n 's/.*\(notmuch_[a-z_]*\) (.*/\t\1;/p' notmuch.aux >> notmuch.sym
+       sed  -n 's/^\s*\(notmuch_[a-z_]*\)\s*(.*/\t\1;/p' $< >> notmuch.sym
        printf "local: *;\n};\n" >> notmuch.sym
 
 $(dir)/$(SONAME): $(dir)/$(LIBNAME)
@@ -104,5 +103,5 @@ install-$(dir): $(dir)/$(LIBNAME)
 
 SRCS  := $(SRCS) $(libnotmuch_c_srcs) $(libnotmuch_cxx_srcs)
 CLEAN += $(libnotmuch_modules) $(dir)/$(SONAME) $(dir)/$(LINKER_NAME)
-CLEAN += $(dir)/$(LIBNAME) $(dir)/libnotmuch.a notmuch.aux notmuch.sym
+CLEAN += $(dir)/$(LIBNAME) $(dir)/libnotmuch.a notmuch.sym
 CLEAN += $(dir)/notmuch.h.gch