Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Dynamic loading on Cygwin - status



O.K., it almost works :-) It was much easier than I suspected due to the fact,
that you can simply link with DLL - no additional stub library is needed. That
enourmosly simplified makefiles.

There are still some gotchas:

- for dlsym() to find a symbol, it has to explcitly exported. It means, that
module's setup() etc functions are not found. They has to be defined with
__attribute__((__dllexport__)). All exported symbols (that have mod_export)
currently get this automatically.

- external function or variable imported from another module is not considered
a constant on Cygwin (actually, on Windows). Hence, any static initializer
fails, e.g

    BUILTIN("cap",    0, bin_cap,    0,  1, 0, NULL, NULL),

where bin_cap is redefined to bin_notavail that in imported from mail DLL.
This is not just as easy to solve.

- some more Makefiles tweaking is needed; because now modules depend on other
module's DLL, we need rules to rebuild them.

- of course, zsh.dll has to be installed into $(bindir) else it is not found.

But still, I did run Zsh compiled with dynamic loading support :-))) My thanks
to Zefram for excellent build system! (And good configure tests).

-andrej

Have a nice DOS!
B >>



Messages sorted by: Reverse Date, Date, Thread, Author