This is a bit ugly. Right now, I've got a prototype zsh-dev which contains the following. /usr/include/zsh: builtin.epro init.epro mem.epro sigcount.h utils.epro compat.epro input.epro module.epro signals.epro watch.epro cond.epro jobs.epro options.epro signals.h zsh.h exec.epro lex.epro params.epro signames.epro ztype.h glob.epro linklist.epro parse.epro string.epro hashtable.epro loop.epro pattern.epro subst.epro hashtable.h main.epro prompt.epro system.h hist.epro math.epro prototypes.h text.epro /usr/share/zsh-dev: makepro.awk All of those are copied unchanged from the object directory of a successful build of zsh. For a proof-of-concept, I've adapted a little utility which reads an Ogg Vorbis file and outputs its length in seconds and the comments/tags. I've only tried it on one platform, but it works for me. Beyond the autotools (and other) sloppiness, probably the most objectionable thing is that I've copied config.h and zsh.mdh from the zsh build dir. config.h is pristine, but zsh.mdh is edited to cope with path changes and to add vorbis.mdh. vorbis.mdh is example.mdh copied and passed through a search&replace. I'm attaching the tarball in case anyone wants to see. It's currently necessary to hand-force -I/usr/include/zsh into CPPFLAGS.