diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 07:33:12 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 07:33:12 +0000 |
commit | 36082a2fe36ecd800d784ae44c14f1f18c66a7e9 (patch) | |
tree | 6c68e0c0097987aff85a01dabddd34b862309a7c /doc/extract-guile-c-doc.scm | |
parent | Initial commit. (diff) | |
download | gnutls28-upstream.tar.xz gnutls28-upstream.zip |
Adding upstream version 3.7.9.upstream/3.7.9upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/extract-guile-c-doc.scm')
-rw-r--r-- | doc/extract-guile-c-doc.scm | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/doc/extract-guile-c-doc.scm b/doc/extract-guile-c-doc.scm new file mode 100644 index 0000000..3a310ab --- /dev/null +++ b/doc/extract-guile-c-doc.scm @@ -0,0 +1,69 @@ +;;; extract-c-doc.scm -- Output Texinfo from "snarffed" C files. +;;; +;;; Copyright 2006-2012 Free Software Foundation, Inc. +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +;;; Written by Ludovic Courtès <ludo@chbouib.org>. + +(use-modules (system documentation c-snarf) + (system documentation output) + + (srfi srfi-1)) + +(define (main file cpp+args cpp-flags . procs) + ;; Arguments: + ;; + ;; 1. C file to be processed; + ;; 2. how to invoke the CPP (e.g., "cpp -E"); + ;; 3. additional CPP flags (e.g., "-I /usr/local/include"); + ;; 4. optionally, a list of Scheme procedure names whose documentation is + ;; to be output. If no such list is passed, then documentation for + ;; all the Scheme functions available in the C source file is issued. + ;; + (let* ((cpp+args (string-tokenize cpp+args)) + (cpp (car cpp+args)) + (cpp-flags (append (cdr cpp+args) + (string-tokenize cpp-flags) + (list "-DSCM_MAGIC_SNARF_DOCS ")))) + ;;(format (current-error-port) "cpp-flags: ~a~%" cpp-flags) + (format (current-error-port) "extracting Texinfo doc from `~a'... " + file) + + ;; Don't mention the name of C functions. + (*document-c-functions?* #f) + + (let ((proc-doc-list + (run-cpp-and-extract-snarfing file cpp cpp-flags))) + (display "@c Automatically generated, do not edit.\n") + (display (string-concatenate + (map procedure-texi-documentation + (if (null? procs) + proc-doc-list + (filter (lambda (proc-doc) + (let ((proc-name + (assq-ref proc-doc + 'scheme-name))) + (member proc-name procs))) + proc-doc-list)))))) + (format (current-error-port) "done.~%") + (exit 0))) + + +;;; Local Variables: +;;; mode: scheme +;;; coding: latin-1 +;;; End: |