source: project/release/4/easyffi/chicken-wrap.scm @ 14448

Last change on this file since 14448 was 11065, checked in by felix winkelmann, 12 years ago

easyffi needs access to easyffi-base at expansion time - not solved yet

File size: 1.4 KB
Line 
1;;;; chicken-wrap.scm - Standalone wrapper generator
2
3
4(declare
5  (export ##compiler#debugging-chicken))
6
7
8(define-constant +version+ 1.7)
9
10(define ##compiler#debugging-chicken '())
11
12(require-extension srfi-1 utils easyffi-base)
13
14(define (usage #!optional (status 0))
15  (print #<<EOF
16usage: chicken-wrap [OPTION | FILENAME ...]
17
18  -help              show this message
19  -to-stdout         write generated code to stdout
20  -debug             generate additional debug output
21
22Reads C/C++ files and generates Scheme wrapper code.
23Specifying "-" as filename reads from stdin.
24EOF
25) (exit status) )
26
27(define *to-stdout* #f)
28
29(define (main args)
30  (let ((files
31         (filter-map
32          (lambda (arg)
33            (cond ((string=? "-to-stdout" arg)
34                   (set! *to-stdout* #t)
35                   #f)
36                  ((string=? "-debug" arg)
37                   (set! ##compiler#debugging-chicken '(C))
38                   #f)
39                  ((member arg '("--help" "-help" "-h"))
40                   (usage 0) )
41                  ((and (> (string-length arg) 1)
42                        (char=? #\- (string-ref arg 0)) )
43                   (usage 1) )
44                  (else arg) ) )
45          args) ) )
46    (when (null? files) (usage 1))
47    (for-each
48     (lambda (f)
49       (define (process)
50         (print "\n;;; generated by chicken-wrap from " f #\newline)
51         (pp `(begin
52                ,@(parse-easy-ffi
53                   (read-all
54                    (if (string=? f "-") 
55                        (current-input-port)
56                        f) ) ) ) ) )
57       (if *to-stdout*
58           (process)
59           (with-output-to-file (pathname-replace-extension f "scm")
60             process) ) )
61     files) ) )
62
63(main (command-line-arguments))
Note: See TracBrowser for help on using the repository browser.