-(export 'load-dso)
-
-(defun concatenate-strings (strings &optional delimiter)
- (if (not (rest strings))
- (first strings)
- (concatenate
- 'string
- (first strings)
- (if delimiter (string delimiter) "")
- (concatenate-strings (rest strings) delimiter))))
-
-;;; The following code is more or less copied frm sb-bsd-sockets.asd,
-;;; but extended to allow flags to be set in a general way
-
-(defclass unix-dso (module) ())
-(defun unix-name (pathname)
+(export '*dso-extension*)
+
+(defparameter *dso-extension*
+ #-(or darwin win32)"so" #+darwin"dylib" #+win32"dll")
+
+
+;;; The following code is more or less copied from sb-bsd-sockets.asd,
+;;; but extended to allow flags to be set in a general way. The class
+;;; has been renamed from unix-dso to shared-object as this code no
+;;; longer is unix specific
+
+(defclass shared-object (module)
+ ((ldflags :initform nil :initarg :ldflags)))
+
+;; For backwards compatibility
+(defclass unix-dso (shared-object)
+ ())
+
+(defun ensure-namestring (pathname)