mescc: Cleanup mini-mes build and test.
[mes.git] / scaffold / micro-mes.c
1 /* -*-comment-start: "//";comment-end:""-*-
2  * Mes --- Maxwell Equations of Software
3  * Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of Mes.
6  *
7  * Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #if __GNUC__
22 #include "mlibc.c"
23 #endif
24 #define assert(x) ((x) ? (void)0 : assert_fail(#x))
25
26
27 #define MES_MINI 1
28
29 #if __GNUC__
30 #define  __NYACC__ 0
31 #define NYACC
32 #define NYACC2
33 #else
34 #define  __NYACC__ 1
35 #define NYACC nyacc
36 #define NYACC2 nyacc2
37 #endif
38
39 typedef int SCM;
40
41 #if __GNUC__
42 int g_debug = 0;
43 #endif
44
45 int g_free = 0;
46
47 SCM g_symbols = 0;
48 SCM g_stack = 0;
49 SCM r0 = 0; // a/env
50 SCM r1 = 0; // param 1
51 SCM r2 = 0; // save 2+load/dump
52 SCM r3 = 0; // continuation
53
54 SCM
55 mes_environment ()
56 {
57   return 0;
58 }
59
60 SCM
61 bload_env (SCM a) ///((internal))
62 {
63   eputs ("bload_env\n");
64   return 0;
65 }
66
67 int
68 main (int argc, char *argv[])
69 {
70 #if __GNUC__
71   g_debug = (int)getenv ("MES_DEBUG");
72 #endif
73   //if (getenv ("MES_ARENA")) ARENA_SIZE = atoi (getenv ("MES_ARENA"));
74
75   if (argc > 1 && !strcmp (argv[1], "--help")) return eputs ("Usage: mes [--dump|--load] < FILE\n");
76   if (argc > 1 && !strcmp (argv[1], "--version")) {eputs ("Mes ");eputs (VERSION);return eputs ("\n");};
77
78 #if __GNUC__
79   g_stdin = STDIN;
80   r0 = mes_environment ();
81 #endif
82
83 #if MES_MINI
84   puts ("Hello micro-mes!\n");
85   SCM program = bload_env (r0);
86 #else
87   SCM program = (argc > 1 && !strcmp (argv[1], "--load"))
88     ? bload_env (r0) : load_env (r0);
89   if (argc > 1 && !strcmp (argv[1], "--dump")) return dump ();
90
91   push_cc (r2, cell_unspecified, r0, cell_unspecified);
92   r3 = cell_vm_begin;
93   r1 = eval_apply ();
94   stderr_ (r1);
95
96   eputs ("\n");
97   gc (g_stack);
98 #endif
99   int i = argc;
100   //int i = strcmp (argv[1], "1");
101   return i;
102 #if __GNUC__
103   if (g_debug)
104     {
105       eputs ("\nstats: [");
106       eputs (itoa (g_free));
107       eputs ("]\n");
108     }
109 #endif
110   return 0;
111 }
112
113 #if __GNUC__
114 #include "mstart.c"
115 #endif