From 4f42f83f5841b4d14f1e1d03880756330a0b405f Mon Sep 17 00:00:00 2001 From: Marc Feeley Date: Thu, 19 May 2011 13:50:29 -0400 Subject: [PATCH] Recognize wider set of C file extensions (.c .C .cc .cp .cpp .CPP .cxx .c++ .m .M .mm) --- gsc/_gsclib.scm | 23 ++++++++++++++--------- gsc/_host.scm | 10 ++++++++-- gsc/_source.scm | 12 ++++-------- gsc/_t-c-1.scm | 27 ++++++++++++++++++++++----- gsi/main.scm | 6 +++--- include/stamp.h | 2 +- lib/_io.scm | 4 ++-- 7 files changed, 54 insertions(+), 30 deletions(-) diff --git a/gsc/_gsclib.scm b/gsc/_gsclib.scm index e3c70bbc6..7dccec857 100644 --- a/gsc/_gsclib.scm +++ b/gsc/_gsclib.scm @@ -1,8 +1,8 @@ ;;;============================================================================ -;;; File: "_gsclib.scm", Time-stamp: <2011-03-20 21:15:32 feeley> +;;; File: "_gsclib.scm" -;;; Copyright (c) 1994-2009 by Marc Feeley, All Rights Reserved. +;;; Copyright (c) 1994-2011 by Marc Feeley, All Rights Reserved. (include "generic.scm") @@ -74,7 +74,7 @@ (##path-strip-directory (##path-strip-extension filename)) expanded-output) - ".c"))) + (c#targ-preferred-c-file-extension)))) (c-filename-no-dir-no-ext (##path-strip-directory (##path-strip-extension c-filename)))) @@ -175,10 +175,13 @@ root (generate-next-version-of-object-file root))))) - (let* ((c-filename - (##string-append (##path-strip-extension filename) ".c")) - (input-is-c-file? - (##string=? filename c-filename)) + (let* ((input-is-c-file? + (##assoc (##path-extension filename) c#targ-c-file-extensions)) + (c-filename + (if input-is-c-file? + filename + (##string-append (##path-strip-extension filename) + (c#targ-preferred-c-file-extension)))) (expanded-output (##path-normalize output)) (output-filename @@ -369,7 +372,8 @@ (if (##eq? output (macro-absent-obj)) (##path-directory (##path-normalize - (##string-append (##car rev-mods) ".c"))) + (##string-append (##car rev-mods) + (c#targ-preferred-c-file-extension)))) (macro-force-vars (output) output))) (baselib @@ -441,7 +445,8 @@ (if (##eq? output (macro-absent-obj)) (##path-directory (##path-normalize - (##string-append (##car rev-mods) ".c"))) + (##string-append (##car rev-mods) + (c#targ-preferred-c-file-extension)))) (macro-force-vars (output) output))) (warn? diff --git a/gsc/_host.scm b/gsc/_host.scm index 7c1dbc620..7d25598d2 100644 --- a/gsc/_host.scm +++ b/gsc/_host.scm @@ -1,8 +1,8 @@ ;;;============================================================================ -;;; File: "_host.scm", Time-stamp: <2009-07-31 10:22:27 feeley> +;;; File: "_host.scm" -;;; Copyright (c) 1994-2007 by Marc Feeley, All Rights Reserved. +;;; Copyright (c) 1994-2011 by Marc Feeley, All Rights Reserved. ;;;============================================================================ @@ -314,6 +314,10 @@ (string-set! result (- j i) (string-ref path j)) (loop2 (- j 1))))))))) +(define scheme-file-extensions + '((".scm" . #f) + (".six" . six))) + ;; Bytevector data types. (define s8vect-tag (list 's8vect)) @@ -791,6 +795,8 @@ (define (path-strip-directory path) (##path-strip-directory path)) +(define scheme-file-extensions ##scheme-file-extensions) + (define (make-s8vect n) (##make-s8vector n 0)) (define s8vect? ##s8vector?) (define s8vect->list ##s8vector->list) diff --git a/gsc/_source.scm b/gsc/_source.scm index 26f454340..8eb2ecaca 100644 --- a/gsc/_source.scm +++ b/gsc/_source.scm @@ -1,8 +1,8 @@ ;;;============================================================================ -;;; File: "_source.scm", Time-stamp: <2009-02-16 14:58:03 feeley> +;;; File: "_source.scm" -;;; Copyright (c) 1994-2009 by Marc Feeley, All Rights Reserved. +;;; Copyright (c) 1994-2011 by Marc Feeley, All Rights Reserved. (include "fixnum.scm") @@ -321,7 +321,7 @@ (if expanded-filename (if (equal? (path-extension expanded-filename) "") - (let loop ((exts scm-file-exts)) + (let loop ((exts (append (map car scheme-file-extensions) '("")))) (if (pair? exts) (let* ((ext (car exts)) (full-name (string-append expanded-filename ext)) @@ -390,10 +390,6 @@ sources))) -;; Filename extensions to try in order to find source files from module name. - -(define scm-file-exts '(".scm" ".six" "")) ; "" means no extension - (define (read-source path relative-to-path try-scheme-file-extensions?) (define (read-source-from-path path) @@ -1545,7 +1541,7 @@ (if expanded-filename (if (equal? (path-extension expanded-filename) "") - (let loop ((exts scm-file-exts)) + (let loop ((exts (append (map car scheme-file-extensions) '("")))) (if (pair? exts) (let* ((ext (car exts)) (full-name (string-append expanded-filename ext)) diff --git a/gsc/_t-c-1.scm b/gsc/_t-c-1.scm index f03daf91a..3f3e69b76 100644 --- a/gsc/_t-c-1.scm +++ b/gsc/_t-c-1.scm @@ -1,8 +1,8 @@ ;;;============================================================================ -;;; File: "_t-c-1.scm", Time-stamp: <2010-06-10 15:24:05 feeley> +;;; File: "_t-c-1.scm" -;;; Copyright (c) 1994-2010 by Marc Feeley, All Rights Reserved. +;;; Copyright (c) 1994-2011 by Marc Feeley, All Rights Reserved. (include "fixnum.scm") @@ -317,7 +317,7 @@ (targ-heap-dump (or output - (string-append output-root ".c")) + (string-append output-root (targ-preferred-c-file-extension))) (proc-obj-name (car procs)) c-decls c-inits @@ -770,12 +770,12 @@ (path-strip-extension output))) (out (or output - (string-append root ".c"))) + (string-append root (targ-preferred-c-file-extension)))) (name (string-append module-prefix (path-strip-directory root))) (input-files - (map (lambda (x) (string-append x ".c")) inputs)) + (map (lambda (x) (string-append x (targ-preferred-c-file-extension))) inputs)) (input-infos (map targ-read-linker-info input-files)) (input-mods @@ -2215,4 +2215,21 @@ (define (targ-name->c-id s) (scheme-id->c-id s)) +(define targ-c-file-extensions #f) +(set! targ-c-file-extensions + '((".c" . C) + (".C" . C++) + (".cc" . C++) + (".cp" . C++) + (".cpp" . C++) + (".CPP" . C++) + (".cxx" . C++) + (".c++" . C++) + (".m" . Objective-C) + (".M" . Objective-C++) + (".mm" . Objective-C++))) + +(define (targ-preferred-c-file-extension) + (caar targ-c-file-extensions)) + ;;;---------------------------------------------------------------------------- diff --git a/gsi/main.scm b/gsi/main.scm index ea539648e..7b4fac177 100644 --- a/gsi/main.scm +++ b/gsi/main.scm @@ -1,8 +1,8 @@ ;;;============================================================================ -;;; File: "main.scm", Time-stamp: <2011-01-24 11:54:13 feeley> +;;; File: "main.scm" -;;; Copyright (c) 1994-2009 by Marc Feeley, All Rights Reserved. +;;; Copyright (c) 1994-2011 by Marc Feeley, All Rights Reserved. ;;;---------------------------------------------------------------------------- @@ -113,7 +113,7 @@ (define (compiler-batch-mode options arguments) (define (c-file? file) - (##string=? (##path-extension file) ".c")) + (##assoc (##path-extension file) c#targ-c-file-extensions)) (define (obj-file? file) (##string=? (##path-extension file) ##os-obj-extension-string-saved)) diff --git a/include/stamp.h b/include/stamp.h index 9e848c956..1d74d2e9e 100644 --- a/include/stamp.h +++ b/include/stamp.h @@ -3,4 +3,4 @@ */ #define ___STAMP_YMD 20110519 -#define ___STAMP_HMS 134826 +#define ___STAMP_HMS 175028 diff --git a/lib/_io.scm b/lib/_io.scm index bd1333dfe..feab2432f 100644 --- a/lib/_io.scm +++ b/lib/_io.scm @@ -1,8 +1,8 @@ ;;;============================================================================ -;;; File: "_io.scm", Time-stamp: <2010-01-07 12:06:38 feeley> +;;; File: "_io.scm" -;;; Copyright (c) 1994-2010 by Marc Feeley, All Rights Reserved. +;;; Copyright (c) 1994-2011 by Marc Feeley, All Rights Reserved. ;;;============================================================================