From 4b1de28449a8c28ffa72639fda001714f7f0c1be Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 26 Jul 2017 15:42:44 +0200 Subject: [PATCH] build: Install and installed-run fixes. * guile/mescc.scm (%datadir,%docdir,%moduledir,%version): Remove. * scripts/mescc.mes: Likewise. * module/language/c99/compiler.mes: Likewise. (%prefix): Prefer environment setting. (c99-input->full-ast): Remove unnecessary includes. Remove unnecessary defines. * make.scm (%scm-files): Add mes/guile.scm. (src/mes.gcc, src/mes.mlibc-gcc, src/mes.guile): Update MODULEDIR, add -I src. * src/mes.c (load_env): Use temporary variable for MODULEDIR concatenation. (bload_env): Likewise. --- guile/mescc.scm | 10 +--------- make.scm | 18 +++++++++++------- module/language/c99/compiler.mes | 28 +++------------------------- scripts/mescc.mes | 6 +----- src/mes.c | 6 ++++-- 5 files changed, 20 insertions(+), 48 deletions(-) diff --git a/guile/mescc.scm b/guile/mescc.scm index 5981509d..89947458 100755 --- a/guile/mescc.scm +++ b/guile/mescc.scm @@ -45,16 +45,8 @@ GUILE='~/src/guile-1.8/build/pre-inst-guile --debug -q' guile/mescc.scm #:use-module (srfi srfi-26) #:export (main)) -(define %prefix (if (string-prefix? "@PREFIX" "@PREFIX@") "" "@PREFIX@")) -(define %datadir (if (string-prefix? "@DATADIR" "@DATADIR@") "" "@DATADIR@")) -(define %docdir (if (string-prefix? "@DOCDIR" "@DOCDIR@") "doc/" "@DOCDIR@")) -(define %moduledir "module/") -(define %version (if (string-prefix? "@VERSION" "@VERSION@") "git" "@VERSION@")) -(module-define! (resolve-module '(language c99 compiler)) '%datadir %datadir) -(module-define! (resolve-module '(language c99 compiler)) '%docdir %docdir) -(module-define! (resolve-module '(language c99 compiler)) '%moduledir %moduledir) +(define %prefix (if (string-prefix? "@PREFIX" "@PREFIX@") (or (getenv "PREFIX") "") "@PREFIX@")) (module-define! (resolve-module '(language c99 compiler)) '%prefix %prefix) -(module-define! (resolve-module '(language c99 compiler)) '%version %version) (define (parse-opts args) (let* ((option-spec diff --git a/make.scm b/make.scm index d04f2be8..c13e64eb 100755 --- a/make.scm +++ b/make.scm @@ -19,6 +19,7 @@ exec ${GUILE-guile} --no-auto-compile -L . -L guile -C . -C guile -s "$0" ${1+"$ "mes/as.scm" "mes/bytevectors.scm" "mes/elf.scm" + "mes/guile.scm" "mes/M1.scm")) (define %go-files (map (compose (cut string-append <> ".go") (cut string-drop-right <> 4)) %scm-files)) (setenv "srcdir" ".") @@ -300,23 +301,26 @@ exec ${GUILE-guile} --no-auto-compile -L . -L guile -C . -C guile -s "$0" ${1+"$ "MES_FULL=1" "POSIX=1" ,(string-append "VERSION=\"" %version "\"") - ,(string-append "MODULEDIR=\"" (string-append %moduledir "/") "\"") - ,(string-append "PREFIX=\"" %prefix "\"")))) + ,(string-append "MODULEDIR=\"" (string-append %prefix (if (string-null? %prefix) "" "/") %moduledir "/") "\"") + ,(string-append "PREFIX=\"" %prefix "\"")) + #:includes '("src"))) (add-target (bin.gcc "src/mes.c" #:libc #f #:dependencies mes-snarf-targets #:defines `("FIXED_PRIMITIVES=1" "MES_FULL=1" ,(string-append "VERSION=\"" %version "\"") - ,(string-append "MODULEDIR=\"" (string-append %moduledir "/") "\"") - ,(string-append "PREFIX=\"" %prefix "\"")))) + ,(string-append "MODULEDIR=\"" (string-append %prefix (if (string-null? %prefix) "" "/") "/" %moduledir "/") "\"") + ,(string-append "PREFIX=\"" %prefix "\"")) + #:includes '("src"))) (add-target (bin.mescc "src/mes.c" #:dependencies mes-snarf-targets #:defines `("FIXED_PRIMITIVES=1" "MES_FULL=1" - ,(string-append "VERSION=\"" %version "\"") - ,(string-append "MODULEDIR=\"" (string-append %moduledir "/") "\"") - ,(string-append "PREFIX=\"" %prefix "\"")))) + ,(string-append "VERSION=\"" %version "\"") + ,(string-append "MODULEDIR=\"" (string-append %prefix (if (string-null? %prefix) "" "/") %moduledir "/") "\"") + ,(string-append "PREFIX=\"" %prefix "\"")) + #:includes '("src"))) (define mes-tests '("tests/read.test" diff --git a/module/language/c99/compiler.mes b/module/language/c99/compiler.mes index 92d69cfd..ce602786 100644 --- a/module/language/c99/compiler.mes +++ b/module/language/c99/compiler.mes @@ -48,42 +48,20 @@ (define (stderr string . rest) (apply logf (cons* (current-error-port) string rest))) -(define %datadir (if (string-prefix? "@DATADIR" "@DATADIR@") "" "@DATADIR@")) -(define %docdir (if (string-prefix? "@DOCDIR" "@DOCDIR@") "doc/" "@DOCDIR@")) -(define %moduledir "module/") -(define %prefix (if (string-prefix? "@PREFIX" "@PREFIX@") "" "@PREFIX@")) -(define %version (if (string-prefix? "@VERSION" "@VERSION@") "git" "@VERSION@")) +(define %prefix (if (string-prefix? "@PREFIX" "@PREFIX@") (or (getenv "PREFIX") "") "@PREFIX@")) (define mes? (pair? (current-module))) (define* (c99-input->full-ast #:key (defines '()) (includes '())) (let ((include (if (equal? %prefix "") "mlibc/include" (string-append %prefix "/share/mlibc/include")))) (parse-c99 - #:inc-dirs (append includes (cons* "." "mlibc" "src" "out" "out/src" include (or (and=> (getenv "C_INCLUDE_PATH") (cut string-split <> #\:)) '()))) + #:inc-dirs (append includes (cons* include "mlibc/include" "mlibc" (or (and=> (getenv "C_INCLUDE_PATH") (cut string-split <> #\:)) '()))) #:cpp-defs `( "POSIX=0" "_POSIX_SOURCE=0" "__MESC__=1" - "EOF=-1" - "STDIN=0" - "STDOUT=1" - "STDERR=2" - - "INT_MIN=-2147483648" - "INT_MAX=2147483647" - "NULL=0" - - "FIXED_PRIMITIVES=1" - ,(if mes? "__MESC_MES__=1" "__MESC_MES__=0") - - ,(string-append "DATADIR=\"" %datadir "\"") - ,(string-append "DOCDIR=\"" %docdir "\"") - ,(string-append "PREFIX=\"" %prefix "\"") - ,(string-append "MODULEDIR=\"" %moduledir "\"") - ,(string-append "VERSION=\"" %version "\"") - ,@defines - ) + ,@defines) #:mode 'code))) (define (ast-strip-comment o) diff --git a/scripts/mescc.mes b/scripts/mescc.mes index 16df5339..542621e0 100755 --- a/scripts/mescc.mes +++ b/scripts/mescc.mes @@ -49,11 +49,7 @@ exit $r (format (current-error-port) "mescc.mes...\n") -(define %datadir (if (string-prefix? "@DATADIR" "@DATADIR@") "" "@DATADIR@")) -(define %docdir (if (string-prefix? "@DOCDIR" "@DOCDIR@") "doc/" "@DOCDIR@")) -(define %moduledir "module/") -(define %prefix (if (string-prefix? "@PREFIX" "@PREFIX@") "" "@PREFIX@")) -(define %version (if (string-prefix? "@VERSION" "@VERSION@") "git" "@VERSION@")) +(define %prefix (if (string-prefix? "@PREFIX" "@PREFIX@") (or (getenv "PREFIX") "") "@PREFIX@")) (define (parse-opts args) (let* ((option-spec diff --git a/src/mes.c b/src/mes.c index 1eb8a187..f8fce511 100644 --- a/src/mes.c +++ b/src/mes.c @@ -1240,7 +1240,8 @@ load_env (SCM a) ///((internal)) { r0 = a; g_stdin = open ("module/mes/read-0.mes", O_RDONLY); - g_stdin = g_stdin >= 0 ? g_stdin : open (MODULEDIR "mes/read-0.mes", O_RDONLY); + char *read0 = MODULEDIR "mes/read-0.mes"; + g_stdin = g_stdin >= 0 ? g_stdin : open (read0, O_RDONLY); if (!g_function) r0 = mes_builtins (r0); r2 = read_input_file_env (r0); g_stdin = STDIN; @@ -1253,7 +1254,8 @@ bload_env (SCM a) ///((internal)) #if __MESC__ char *mo = "mes/read-0-32.mo"; g_stdin = open ("module/mes/read-0-32.mo", O_RDONLY); - g_stdin = g_stdin >= 0 ? g_stdin : open (MODULEDIR "mes/read-0-32.mo", O_RDONLY); + char *read0 = MODULEDIR "mes/read-0-32.mo"; + g_stdin = g_stdin >= 0 ? g_stdin : open (read0, O_RDONLY); #else char *mo ="mes/read-0.mo"; g_stdin = open ("module/mes/read-0.mo", O_RDONLY);