Greetings, and thanks so much for this! "Chun Tian (binghe)" <binghe.l...@gmail.com> writes:
> Greetings, > > When building GCL 2.7 on various versions of macOS, I found that GCL needs to > load different system libraries in different versions of macOS, and the Lisp > function LIB-NAME defined in lsp/gcl_dl.lsp is used to compute the full path > of > these libraries from just the name. > > Currently on macOS the code assumes that the needed library must be under > "/usr/lib/system/". But this is only true for libraries like > "libsystem_*.dylib". All other libraries, e.g. libSystem.B.dylib, is under > "/usr/lib/". > > The following patch has been verified on all macOS versions from 10.6 to 15.x: > > diff --git a/lsp/gcl_dl.lsp b/lsp/gcl_dl.lsp > index 6f6b35f44..4d8f9962e 100644 > --- a/lsp/gcl_dl.lsp > +++ b/lsp/gcl_dl.lsp > @@ -3,9 +3,16 @@ > > (export '(mdlsym mdl lib-name)) > > +(defvar *dll-extension* #+darwin ".dylib" #+cygwin ".dll" #-(or darwin > cygwin) > ".so") > + > (defun lib-name (p) > - (if (or (string= p "") (string= p "libc") (string= p "libm")) "" > - (string-concatenate #+darwin "/usr/lib/system/" p #+darwin ".dylib" > #+cygwin ".dll" #-(or darwin cygwin) ".so")));FIXME > + (cond ((or (string= p "") (string= p "libc") (string= p "libm")) > + "") > + #+darwin ; "/usr/lib/system/" is macOS-specific > + ((string<= "libsystem" p) Can this be replaced with ((zerop (string-match "libsystem_" p)) ? Take care, > + (string-concatenate "/usr/lib/system/" p *dll-extension*)) > + (t > + (string-concatenate #+darwin "/usr/lib/" p *dll-extension*)))) > > (defun mdl (n p vad) > (let* ((sym (mdlsym n (lib-name p))) > > * * * > > Note also that, in the above patch, I defined a new variable *dll-extension* > to > eliminate some code duplication. This is unnecessary, and feel free to > eliminate > it. But I think it should be useful to have such a special variable exported > in > SI package, for users who needs to load dynamic libraries by just filename > without extension name. > > --Chun > -- Camm Maguire c...@maguirefamily.org ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah