From 96597fa21df14c82eeb3bdb685499caf46c729df Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Thu, 18 Mar 2021 07:46:49 +0100 Subject: [PATCH] Fix 'absolute-file-name?' and others for cross-build to MinGW. * module/ice-9/boot-9.scm (compile-time-file-name-convention): New procedure, defined only when loading. (compile-time-case): Use it to correctly determine system file name convention while compiling. --- module/ice-9/boot-9.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index a46145ed5..d4a7d2327 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -2060,6 +2060,16 @@ non-locally, that exit determines the continuation." ;;; {Load Paths} ;;; +(eval-when (eval) + (define (compile-time-file-name-convention) + (let ((target ((@ (system base target) target-type)))) + (cond ((equal? target %host-type) + (system-file-name-convention)) + ((string-contains-ci target "mingw") + 'windows) + (else + 'posix))))) + (let-syntax ((compile-time-case (lambda (stx) (syntax-case stx () @@ -2077,7 +2087,9 @@ non-locally, that exit determines the continuation." #'(begin form ...) (next-clause #'(clauses ...)))))))))))) ;; emacs: (put 'compile-time-case 'scheme-indent-function 1) - (compile-time-case (system-file-name-convention) + (compile-time-case (or (and (defined? 'compile-time-file-name-convention) + (compile-time-file-name-convention)) + 'posix) ((posix) (define (file-name-separator? c) (char=? c #\/))