mescc: Add dir to include path.
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 15 Aug 2018 17:11:54 +0000 (19:11 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 15 Aug 2018 17:11:54 +0000 (19:11 +0200)
* module/mescc/mescc.scm (preprocess): Add dir to include path.
(c->info): Likewise.
* scaffold/tests/08-assign.c: New file.

build-aux/GNUmakefile.in
build-aux/check-mescc.sh
build-aux/config.sh
build-aux/pre-inst-env.in
module/mescc/mescc.scm
scaffold/tests/07-include.exit [new file with mode: 0644]
scaffold/tests/08-assign.c [new file with mode: 0644]

index bd313f7bbe1e53da82ee477717d2265214900d9c..ddc198af7c5dcb2e1f6a40d1960ab5c552060f03 100644 (file)
@@ -135,6 +135,9 @@ clean-go:
 check:
        ./check.sh
 
+check-mescc:
+       ./pre-inst-env build-aux/check-mescc.sh
+
 # Mes does not feature post-install checks yet, so we're great!
 installcheck:
        true
index 58bcf78b06cf1f3968942ab71662893fc11c7cb6..3b94b8b5de16de77b628557fc1c05a5892beab53 100755 (executable)
@@ -49,6 +49,8 @@ t
 04-call-0
 05-call-1
 06-call-!1
+07-include
+08-assign
 10-if-0
 11-if-1
 12-if-==
index 1049409e132c4177370d62eff1ff8a7b751deea2..a4b9fdefa38a8c3093f449ed7983599f8afed991 100644 (file)
@@ -26,15 +26,16 @@ fi
 export CC
 export CC CFLAGS
 export CC32
+export CC32_CPPFLAGS
 export CC64
+export CC64_CPPFLAGS
 export CC_CFLAGS
-export CC_CFLAGS
-export CC_CPPFLAGS
 export CC_CPPFLAGS
 export CFLAGS
 export CPPFLAGS
-export CPPFLAGS
 export GUILE
+export GUILE_LOAD_COMPILED_PATH
+export GUILE_LOAD_PATH
 export HEX2
 export HEX2FLAGS
 export LIBC
@@ -42,6 +43,7 @@ export M1
 export M1FLAGS
 export MES
 export MES_CFLAGS
+export MES_CPPFLAGS
 export MES_LIBS
 export TCC
 
index ed41822d4b32a720b2b97a7d4e6e0a840476b4ff..f02da0ac21a6ae95e61e5c23676b008e3fd42d6f 100644 (file)
@@ -26,7 +26,7 @@ prefix=${prefix-@prefix@}
 MES_PREFIX=${MES_PREFIX-${srcdest}mes}
 export MES_PREFIX
 
-GUILE_LOAD_COMPILED_PATH="$abs_top_builddir/module${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
+GUILE_LOAD_COMPILED_PATH="$abs_top_builddir/scripts:$abs_top_builddir/module${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
 GUILE_LOAD_PATH="module:mes:$abs_top_srcdir/guix${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
 if [ -n "$srcdest" ]; then
     GUILE_LOAD_PATH="${srcdest}module:${srcdest}mes:$GUILE_LOAD_PATH"
index 4f575733bbe5a2b7a87cff56c29725b524d27b33..f74df8daf80a55798391673fba4f7e08bf14ff7c 100644 (file)
       (GUILE-with-output-to-file file-name thunk)))
 
 (define (mescc:preprocess options)
-  (let* ((defines (reverse (filter-map (multi-opt 'define) options)))
-         (includes (reverse (filter-map (multi-opt 'include) options)))
-         (pretty-print/write (string->symbol (option-ref options 'write (if guile? "pretty-print" "write"))))
+  (let* ((pretty-print/write (string->symbol (option-ref options 'write (if guile? "pretty-print" "write"))))
          (pretty-print/write (if (eq? pretty-print/write 'pretty-print) pretty-print write))
          (files (option-ref options '() '("a.c")))
          (input-file-name (car files))
          (ast-file-name (cond ((and (option-ref options 'preprocess #f)
                                     (option-ref options 'output #f)))
                               (else (replace-suffix input-file-name ".E"))))
+         (dir (dirname input-file-name))
+         (defines (reverse (filter-map (multi-opt 'define) options)))
+         (includes (reverse (filter-map (multi-opt 'include) options)))
+         (includes (cons dir includes))
          (prefix (option-ref options 'prefix "")))
     (with-output-to-file ast-file-name
       (lambda _ (for-each (cut c->ast prefix defines includes write <>) files)))))
         ((.E? file-name) (E->info options file-name))))
 
 (define (c->info options file-name)
-  (let ((defines (reverse (filter-map (multi-opt 'define) options)))
-        (includes (reverse (filter-map (multi-opt 'include) options)))
-        (prefix (option-ref options 'prefix "")))
+  (let* ((defines (reverse (filter-map (multi-opt 'define) options)))
+         (includes (reverse (filter-map (multi-opt 'include) options)))
+         (dir (dirname file-name))
+         (includes (cons dir includes))
+         (prefix (option-ref options 'prefix "")))
     (with-input-from-file file-name
       (cut c99-input->info #:prefix prefix #:defines defines #:includes includes))))
 
diff --git a/scaffold/tests/07-include.exit b/scaffold/tests/07-include.exit
new file mode 100644 (file)
index 0000000..d81cc07
--- /dev/null
@@ -0,0 +1 @@
+42
diff --git a/scaffold/tests/08-assign.c b/scaffold/tests/08-assign.c
new file mode 100644 (file)
index 0000000..f25c438
--- /dev/null
@@ -0,0 +1,32 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of GNU Mes.
+ *
+ * GNU Mes 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.
+ *
+ * GNU Mes 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 GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+int
+main ()
+{
+  int a;
+  int b;
+  int c;
+  a = 2;
+  b = -2;
+  c = a + b;
+  asm ("nop");
+  return c;
+}