libnotmuch: build symbols list without relying on gcc -aux-info.

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.
This commit is contained in:
David Bremner 2011-06-26 22:08:52 -03:00 committed by Carl Worth
parent 891082befa
commit 51b7ab6968

View 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