chicken-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-hackers] [PATCH 3/8] Add posix.scm file that wraps platform-spe


From: Evan Hanson
Subject: [Chicken-hackers] [PATCH 3/8] Add posix.scm file that wraps platform-specific posix implementations
Date: Thu, 2 Mar 2017 21:50:39 +1300

This inverts the way the posix unit is organised by having one outer
file (posix.scm) that includes a platform-specific implementation file
(either posixunix.scm or posixwin.scm), depending on what feature flag
is passed.
---
 distribution/manifest |  1 +
 posix.scm             | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 posixunix.scm         |  6 ------
 posixwin.scm          |  6 +-----
 rules.make            |  8 ++++----
 5 files changed, 52 insertions(+), 15 deletions(-)
 create mode 100644 posix.scm

diff --git a/distribution/manifest b/distribution/manifest
index 8904266b..917099c7 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -99,6 +99,7 @@ lfa2.scm
 mini-srfi-1.scm
 pathname.c
 pathname.scm
+posix.scm
 posixunix.scm
 posixwin.scm
 posix-common.scm
diff --git a/posix.scm b/posix.scm
new file mode 100644
index 00000000..c844366a
--- /dev/null
+++ b/posix.scm
@@ -0,0 +1,46 @@
+;;;; posix.scm - Platform-specific routines
+;
+; Copyright (c) 2008-2017, The CHICKEN Team
+; Copyright (c) 2000-2007, Felix L. Winkelmann
+; All rights reserved.
+;
+; Redistribution and use in source and binary forms, with or without
+; modification, are permitted provided that the following conditions are
+; met:
+;
+;   Redistributions of source code must retain the above copyright
+;   notice, this list of conditions and the following disclaimer.
+;
+;   Redistributions in binary form must reproduce the above copyright
+;   notice, this list of conditions and the following disclaimer in the
+;   documentation and/or other materials provided with the distribution.
+;
+;   Neither the name of the author nor the names of its contributors may
+;   be used to endorse or promote products derived from this software
+;   without specific prior written permission.
+;
+; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+; HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+; OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+; TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+; USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+; DAMAGE.
+
+
+(declare
+  (unit posix)
+  (uses scheduler irregex pathname extras files port lolevel)
+  (disable-interrupts)
+  (not inline ##sys#interrupt-hook ##sys#user-interrupt-hook))
+
+(cond-expand
+  (platform-unix
+   (include "posixunix.scm"))
+  (platform-windows
+   (include "posixwin.scm")))
diff --git a/posixunix.scm b/posixunix.scm
index 3119b547..1e177374 100644
--- a/posixunix.scm
+++ b/posixunix.scm
@@ -25,12 +25,6 @@
 ; POSSIBILITY OF SUCH DAMAGE.
 
 
-(declare
-  (unit posix)
-  (uses scheduler irregex pathname extras files port lolevel)
-  (disable-interrupts)
-  (not inline ##sys#interrupt-hook ##sys#user-interrupt-hook))
-
 ;; these are not available on Windows
 
 (define-foreign-variable _stat_st_blksize unsigned-int "C_statbuf.st_blksize")
diff --git a/posixwin.scm b/posixwin.scm
index 14ec70cf..11103166 100644
--- a/posixwin.scm
+++ b/posixwin.scm
@@ -61,11 +61,7 @@
 
 
 (declare
-  (unit posix)
-  (uses scheduler data-structures irregex extras pathname files port lolevel)
-  (disable-interrupts)
-  (hide quote-arg-string)
-  (not inline ##sys#interrupt-hook ##sys#user-interrupt-hook)
+  (uses data-structures)
   (foreign-declare #<<EOF
 #ifndef WIN32_LEAN_AND_MEAN
 # define WIN32_LEAN_AND_MEAN
diff --git a/rules.make b/rules.make
index 630df061..6f572a96 100644
--- a/rules.make
+++ b/rules.make
@@ -804,12 +804,12 @@ extras.c: $(SRCDIR)extras.scm 
$(SRCDIR)common-declarations.scm
        -emit-import-library chicken.io \
        -emit-import-library chicken.pretty-print \
        -emit-import-library chicken.random
-posixunix.c: $(SRCDIR)posixunix.scm $(SRCDIR)posix-common.scm 
$(SRCDIR)common-declarations.scm
-       $(bootstrap-lib) \
+posixunix.c: $(SRCDIR)/posix.scm $(SRCDIR)posixunix.scm 
$(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
+       $(bootstrap-lib) -feature platform-unix \
        -emit-import-library chicken.errno \
        -emit-import-library chicken.posix
-posixwin.c: $(SRCDIR)posixwin.scm $(SRCDIR)posix-common.scm 
$(SRCDIR)common-declarations.scm
-       $(bootstrap-lib) \
+posixwin.c: $(SRCDIR)/posix.scm $(SRCDIR)posixwin.scm 
$(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
+       $(bootstrap-lib) -feature platform-windows \
        -emit-import-library chicken.errno \
        -emit-import-library chicken.posix
 irregex.c: $(SRCDIR)irregex.scm $(SRCDIR)irregex-core.scm 
$(SRCDIR)irregex-utils.scm $(SRCDIR)common-declarations.scm
-- 
2.11.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]