mescc: Add dir to include path.
* module/mescc/mescc.scm (preprocess): Add dir to include path. (c->info): Likewise. * scaffold/tests/08-assign.c: New file.
This commit is contained in:
parent
3f45b7f92b
commit
fe60c924dd
|
@ -135,6 +135,9 @@ clean-go:
|
||||||
check:
|
check:
|
||||||
./check.sh
|
./check.sh
|
||||||
|
|
||||||
|
check-mescc:
|
||||||
|
./pre-inst-env build-aux/check-mescc.sh
|
||||||
|
|
||||||
# Mes does not feature post-install checks yet, so we're great!
|
# Mes does not feature post-install checks yet, so we're great!
|
||||||
installcheck:
|
installcheck:
|
||||||
true
|
true
|
||||||
|
|
|
@ -49,6 +49,8 @@ t
|
||||||
04-call-0
|
04-call-0
|
||||||
05-call-1
|
05-call-1
|
||||||
06-call-!1
|
06-call-!1
|
||||||
|
07-include
|
||||||
|
08-assign
|
||||||
10-if-0
|
10-if-0
|
||||||
11-if-1
|
11-if-1
|
||||||
12-if-==
|
12-if-==
|
||||||
|
|
|
@ -26,15 +26,16 @@ fi
|
||||||
export CC
|
export CC
|
||||||
export CC CFLAGS
|
export CC CFLAGS
|
||||||
export CC32
|
export CC32
|
||||||
|
export CC32_CPPFLAGS
|
||||||
export CC64
|
export CC64
|
||||||
|
export CC64_CPPFLAGS
|
||||||
export CC_CFLAGS
|
export CC_CFLAGS
|
||||||
export CC_CFLAGS
|
|
||||||
export CC_CPPFLAGS
|
|
||||||
export CC_CPPFLAGS
|
export CC_CPPFLAGS
|
||||||
export CFLAGS
|
export CFLAGS
|
||||||
export CPPFLAGS
|
export CPPFLAGS
|
||||||
export CPPFLAGS
|
|
||||||
export GUILE
|
export GUILE
|
||||||
|
export GUILE_LOAD_COMPILED_PATH
|
||||||
|
export GUILE_LOAD_PATH
|
||||||
export HEX2
|
export HEX2
|
||||||
export HEX2FLAGS
|
export HEX2FLAGS
|
||||||
export LIBC
|
export LIBC
|
||||||
|
@ -42,6 +43,7 @@ export M1
|
||||||
export M1FLAGS
|
export M1FLAGS
|
||||||
export MES
|
export MES
|
||||||
export MES_CFLAGS
|
export MES_CFLAGS
|
||||||
|
export MES_CPPFLAGS
|
||||||
export MES_LIBS
|
export MES_LIBS
|
||||||
export TCC
|
export TCC
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ prefix=${prefix-@prefix@}
|
||||||
MES_PREFIX=${MES_PREFIX-${srcdest}mes}
|
MES_PREFIX=${MES_PREFIX-${srcdest}mes}
|
||||||
export MES_PREFIX
|
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"
|
GUILE_LOAD_PATH="module:mes:$abs_top_srcdir/guix${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
|
||||||
if [ -n "$srcdest" ]; then
|
if [ -n "$srcdest" ]; then
|
||||||
GUILE_LOAD_PATH="${srcdest}module:${srcdest}mes:$GUILE_LOAD_PATH"
|
GUILE_LOAD_PATH="${srcdest}module:${srcdest}mes:$GUILE_LOAD_PATH"
|
||||||
|
|
|
@ -38,15 +38,17 @@
|
||||||
(GUILE-with-output-to-file file-name thunk)))
|
(GUILE-with-output-to-file file-name thunk)))
|
||||||
|
|
||||||
(define (mescc:preprocess options)
|
(define (mescc:preprocess options)
|
||||||
(let* ((defines (reverse (filter-map (multi-opt 'define) options)))
|
(let* ((pretty-print/write (string->symbol (option-ref options 'write (if guile? "pretty-print" "write"))))
|
||||||
(includes (reverse (filter-map (multi-opt 'include) options)))
|
|
||||||
(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))
|
(pretty-print/write (if (eq? pretty-print/write 'pretty-print) pretty-print write))
|
||||||
(files (option-ref options '() '("a.c")))
|
(files (option-ref options '() '("a.c")))
|
||||||
(input-file-name (car files))
|
(input-file-name (car files))
|
||||||
(ast-file-name (cond ((and (option-ref options 'preprocess #f)
|
(ast-file-name (cond ((and (option-ref options 'preprocess #f)
|
||||||
(option-ref options 'output #f)))
|
(option-ref options 'output #f)))
|
||||||
(else (replace-suffix input-file-name ".E"))))
|
(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 "")))
|
(prefix (option-ref options 'prefix "")))
|
||||||
(with-output-to-file ast-file-name
|
(with-output-to-file ast-file-name
|
||||||
(lambda _ (for-each (cut c->ast prefix defines includes write <>) files)))))
|
(lambda _ (for-each (cut c->ast prefix defines includes write <>) files)))))
|
||||||
|
@ -74,9 +76,11 @@
|
||||||
((.E? file-name) (E->info options file-name))))
|
((.E? file-name) (E->info options file-name))))
|
||||||
|
|
||||||
(define (c->info options file-name)
|
(define (c->info options file-name)
|
||||||
(let ((defines (reverse (filter-map (multi-opt 'define) options)))
|
(let* ((defines (reverse (filter-map (multi-opt 'define) options)))
|
||||||
(includes (reverse (filter-map (multi-opt 'include) options)))
|
(includes (reverse (filter-map (multi-opt 'include) options)))
|
||||||
(prefix (option-ref options 'prefix "")))
|
(dir (dirname file-name))
|
||||||
|
(includes (cons dir includes))
|
||||||
|
(prefix (option-ref options 'prefix "")))
|
||||||
(with-input-from-file file-name
|
(with-input-from-file file-name
|
||||||
(cut c99-input->info #:prefix prefix #:defines defines #:includes includes))))
|
(cut c99-input->info #:prefix prefix #:defines defines #:includes includes))))
|
||||||
|
|
||||||
|
|
1
scaffold/tests/07-include.exit
Normal file
1
scaffold/tests/07-include.exit
Normal file
|
@ -0,0 +1 @@
|
||||||
|
42
|
32
scaffold/tests/08-assign.c
Normal file
32
scaffold/tests/08-assign.c
Normal file
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in a new issue