diff --git a/contrib/sockets/package.lisp b/contrib/sockets/package.lisp new file mode 100644 index 000000000..7f0f0223d --- /dev/null +++ b/contrib/sockets/package.lisp @@ -0,0 +1,24 @@ +;; -*- Mode: Lisp; Syntax: Common-Lisp -*- +;; $Id$ + +;; This file is based on SBCL's SB-BSD-SOCKET module and has been +;; heavily modified to work with ECL by Julian Stecklina. +;; Port to Windows Sockets contributed by M. Goffioul. + +;; You may do whatever you want with this file. (PUBLIC DOMAIN) + +;; Trivial stuff is copied from SBCL's SB-BSD-SOCKETS, which is also +;; in the public domain. + +(defpackage "SB-BSD-SOCKETS" + (:use "CL" "FFI" "SI") + (:export "GET-HOST-BY-NAME" "GET-HOST-BY-ADDRESS" + "SOCKET-BIND" "SOCKET-ACCEPT" "SOCKET-CONNECT" + "SOCKET-PEERNAME" "SOCKET-NAME" "SOCKET-LISTEN" + "SOCKET-RECEIVE" "SOCKET-CLOSE" "SOCKET-MAKE-STREAM" + "GET-PROTOCOL-BY-NAME" "MAKE-INET-ADDRESS" "LOCAL-SOCKET" + "SOCKET" "INET-SOCKET" "SOCKET-FILE-DESCRIPTOR" #+:win32 "NAMED-PIPE-SOCKET" + "SOCKET-FAMILY" "SOCKET-PROTOCOL" "SOCKET-TYPE" + "SOCKET-ERROR" "NAME-SERVICE-ERROR" "NON-BLOCKING-MODE" + "HOST-ENT-NAME" "HOST-ENT-ALIASES" "HOST-ENT-ADDRESS-TYPE" + "HOST-ENT-ADDRESSES" "HOST-ENT" "HOST-ENT-ADDRESS" "SOCKET-SEND")) diff --git a/contrib/sockets/sockets.lisp b/contrib/sockets/sockets.lisp index 1bc055751..467d8e01a 100644 --- a/contrib/sockets/sockets.lisp +++ b/contrib/sockets/sockets.lisp @@ -10,18 +10,6 @@ ;; Trivial stuff is copied from SBCL's SB-BSD-SOCKETS, which is also ;; in the public domain. -(defpackage "SB-BSD-SOCKETS" - (:use "CL" "FFI" "SI") - (:export "GET-HOST-BY-NAME" "GET-HOST-BY-ADDRESS" - "SOCKET-BIND" "SOCKET-ACCEPT" "SOCKET-CONNECT" - "SOCKET-PEERNAME" "SOCKET-NAME" "SOCKET-LISTEN" - "SOCKET-RECEIVE" "SOCKET-CLOSE" "SOCKET-MAKE-STREAM" - "GET-PROTOCOL-BY-NAME" "MAKE-INET-ADDRESS" "LOCAL-SOCKET" - "SOCKET" "INET-SOCKET" "SOCKET-FILE-DESCRIPTOR" #+:win32 "NAMED-PIPE-SOCKET" - "SOCKET-FAMILY" "SOCKET-PROTOCOL" "SOCKET-TYPE" - "SOCKET-ERROR" "NAME-SERVICE-ERROR" "NON-BLOCKING-MODE" - "HOST-ENT-NAME" "HOST-ENT-ALIASES" "HOST-ENT-ADDRESS-TYPE" - "HOST-ENT-ADDRESSES" "HOST-ENT" "HOST-ENT-ADDRESS" "SOCKET-SEND")) (in-package "SB-BSD-SOCKETS") ;; Obviously this requires the one or other form of BSD compatible diff --git a/src/CHANGELOG b/src/CHANGELOG index 1aa9f13de..a439f6bd1 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -61,6 +61,9 @@ ECL 9.1.0: - Fixed problems with C/C++ forward declarations of static arrays in compiled code that prevented ECL from building with a C++ compiler. + - The CLX module now adds itself to *MODULES* and also requires SOCKETS + automatically on startup. + * AMOP: - In DEFCLASS, the :TYPE of slots was ignored. diff --git a/src/clx/package.lisp b/src/clx/package.lisp index af010bed4..04f91135b 100644 --- a/src/clx/package.lisp +++ b/src/clx/package.lisp @@ -227,10 +227,11 @@ #+clx-ansi-common-lisp (common-lisp:in-package :common-lisp-user) -#+(and ecl (not stage1)) -(eval-when (:compile-toplevel :load-toplevel :execute) +#+ecl +(eval-when (#-stage1 :compile-toplevel :load-toplevel #-stage1 :execute) (require 'sockets)) + #+clx-ansi-common-lisp (defpackage xlib (:use common-lisp) diff --git a/src/compile.lsp.in b/src/compile.lsp.in index 7a9bf783a..284594715 100644 --- a/src/compile.lsp.in +++ b/src/compile.lsp.in @@ -175,7 +175,8 @@ #+WANTS-SOCKETS (build-module "sockets" - '("ext:sockets;sockets.lisp") + '("ext:sockets;package.lisp" + "ext:sockets;sockets.lisp") :dir "build:ext;" :prefix "EXT") @@ -205,29 +206,35 @@ ;;; #+WANTS-CLX -(let ((+clx-src-files+ '("src:clx;package.lisp" - "src:clx;depdefs.lisp" - "src:clx;clx.lisp" - "src:clx;dependent.lisp" - "src:clx;macros.lisp" - "src:clx;bufmac.lisp" - "src:clx;buffer.lisp" - "src:clx;display.lisp" - "src:clx;gcontext.lisp" - "src:clx;input.lisp" - "src:clx;requests.lisp" - "src:clx;fonts.lisp" - "src:clx;graphics.lisp" - "src:clx;text.lisp" - "src:clx;attributes.lisp" - "src:clx;translate.lisp" - "src:clx;keysyms.lisp" - "src:clx;manager.lisp" - "src:clx;image.lisp" - "src:clx;resource.lisp")) - #+:msvc - (c::*cc-flags* (concatenate 'string c::*cc-flags* " -Zm150"))) - (pushnew :clx-ansi-common-lisp *features*) +(let* ((*features* (cons :clx-ansi-common-lisp *features*)) + (+clx-src-files+ '("src:clx;package.lisp" + "src:clx;depdefs.lisp" + "src:clx;clx.lisp" + "src:clx;dependent.lisp" + "src:clx;macros.lisp" + "src:clx;bufmac.lisp" + "src:clx;buffer.lisp" + "src:clx;display.lisp" + "src:clx;gcontext.lisp" + "src:clx;input.lisp" + "src:clx;requests.lisp" + "src:clx;fonts.lisp" + "src:clx;graphics.lisp" + "src:clx;text.lisp" + "src:clx;attributes.lisp" + "src:clx;translate.lisp" + "src:clx;keysyms.lisp" + "src:clx;manager.lisp" + "src:clx;image.lisp" + "src:clx;resource.lisp" + "build:clx;module.lisp")) + #+:msvc + (c::*cc-flags* (concatenate 'string c::*cc-flags* " -Zm150"))) + (with-open-file (s "build:clx;module.lisp" :direction :output :if-exists :overwrite + :if-does-not-exist :create) + (print '(provide :clx) s)) + (unless (find-package "SB-BSD-SOCKETS") + (load "ext:sockets;package.lisp")) (mapcar #'load +clx-src-files+) (build-module "clx" +clx-src-files+ :dir "build:clx;" :prefix "CLX"))