1 |
|
#include <stdlib.h> |
2 |
#include "../h/include.h" |
#include "../h/include.h" |
3 |
|
|
4 |
extern object user_init(); |
extern object user_init(); |
14 |
fflush(stdout); |
fflush(stdout); |
15 |
load(x);} |
load(x);} |
16 |
|
|
17 |
|
#define mjoin(a,b) a ## b |
18 |
|
#define Mjoin(a,b) mjoin(a,b) |
19 |
|
|
20 |
|
#define ar_init(a) do {\ |
21 |
|
char b[200];\ |
22 |
|
\ |
23 |
|
if (snprintf(b,sizeof(b),"ar x %-*.*slibgcl.a %s.o",\ |
24 |
|
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\ |
25 |
|
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\ |
26 |
|
sSAsystem_directoryA->s.s_dbind->st.st_self,#a)<=0)\ |
27 |
|
error("Cannot unpack module " #a "o\n");\ |
28 |
|
if (system(b)) \ |
29 |
|
error("Cannot run ar command to unpack module " #a ".o\n");\ |
30 |
|
init_or_load(Mjoin(init_,a),#a ".o");\ |
31 |
|
if (unlink(#a ".o"))\ |
32 |
|
error("Cannot unlink " #a ".o\n");\ |
33 |
|
} while(0) |
34 |
|
|
35 |
|
#define lsp_init(a) do {\ |
36 |
|
char b[200];\ |
37 |
|
\ |
38 |
|
if (snprintf(b,sizeof(b),"%-*.*s%s",\ |
39 |
|
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\ |
40 |
|
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\ |
41 |
|
sSAsystem_directoryA->s.s_dbind->st.st_self,a)<=0)\ |
42 |
|
error("Cannot append system directory\n");\ |
43 |
|
load1(b);\ |
44 |
|
} while(0) |
45 |
|
|
46 |
void |
void |
47 |
init_init() |
init_init() |
48 |
{ |
{ |
49 |
|
|
50 |
load1("../lsp/export.lsp"); |
lsp_init("../lsp/export.lsp"); |
51 |
init_or_load(init_defmacro,"../lsp/defmacro.o"); |
|
52 |
init_or_load(init_evalmacros,"../lsp/evalmacros.o"); |
ar_init(defmacro); |
53 |
init_or_load(init_top,"../lsp/top.o"); |
ar_init(evalmacros); |
54 |
init_or_load(init_module,"../lsp/module.o"); |
ar_init(top); |
55 |
load1("../lsp/autoload.lsp"); |
ar_init(module); |
56 |
|
|
57 |
|
lsp_init("../lsp/autoload.lsp"); |
58 |
|
|
59 |
} |
} |
60 |
|
|
61 |
|
#define ar_check_init(a,b) do {\ |
62 |
|
object t;\ |
63 |
|
\ |
64 |
|
for (t=b->s.s_dbind;!endp(t) && type_of(t->c.c_car)==t_string && strcmp(#a,t->c.c_car->st.st_self);t=t->c.c_cdr);\ |
65 |
|
if (endp(t))\ |
66 |
|
ar_init(a);\ |
67 |
|
} while(0) |
68 |
|
|
69 |
|
|
70 |
void |
void |
71 |
init_system() |
init_system(object no_init) |
72 |
{ |
{ |
73 |
init_or_load(init_predlib,"../lsp/predlib.o"); |
|
74 |
init_or_load(init_setf,"../lsp/setf.o"); |
if (type_of(no_init)!=t_symbol) |
75 |
init_or_load(init_arraylib,"../lsp/arraylib.o"); |
error("Supplied no_init is not of type symbol\n"); |
76 |
init_or_load(init_assert,"../lsp/assert.o"); |
|
77 |
init_or_load(init_defstruct,"../lsp/defstruct.o"); |
ar_check_init(predlib,no_init); |
78 |
init_or_load(init_describe,"../lsp/describe.o"); |
ar_check_init(setf,no_init); |
79 |
init_or_load(init_iolib,"../lsp/iolib.o"); |
ar_check_init(arraylib,no_init); |
80 |
init_or_load(init_listlib,"../lsp/listlib.o"); |
ar_check_init(assert,no_init); |
81 |
init_or_load(init_mislib,"../lsp/mislib.o"); |
ar_check_init(defstruct,no_init); |
82 |
init_or_load(init_numlib,"../lsp/numlib.o"); |
ar_check_init(describe,no_init); |
83 |
init_or_load(init_packlib,"../lsp/packlib.o"); |
ar_check_init(iolib,no_init); |
84 |
init_or_load(init_seq,"../lsp/seq.o"); |
ar_check_init(listlib,no_init); |
85 |
init_or_load(init_seqlib,"../lsp/seqlib.o"); |
ar_check_init(mislib,no_init); |
86 |
init_or_load(init_trace,"../lsp/trace.o"); |
ar_check_init(numlib,no_init); |
87 |
init_or_load(init_sloop,"../lsp/sloop.o"); |
ar_check_init(packlib,no_init); |
88 |
init_or_load(init_serror,"../lsp/serror.o"); |
ar_check_init(seq,no_init); |
89 |
init_or_load(init_destructuring_bind,"../lsp/destructuring_bind.o"); |
ar_check_init(seqlib,no_init); |
90 |
init_or_load(init_loop,"../lsp/loop.o"); |
ar_check_init(trace,no_init); |
91 |
init_or_load(init_defpackage,"../lsp/defpackage.o"); |
ar_check_init(sloop,no_init); |
92 |
init_or_load(init_make_defpackage,"../lsp/make_defpackage.o"); |
ar_check_init(serror,no_init); |
93 |
|
ar_check_init(destructuring_bind,no_init); |
94 |
|
ar_check_init(loop,no_init); |
95 |
|
ar_check_init(defpackage,no_init); |
96 |
|
ar_check_init(make_defpackage,no_init); |
97 |
|
|
98 |
|
|
99 |
init_or_load(init_cmpinline,"../cmpnew/cmpinline.o"); |
ar_check_init(cmpinline,no_init); |
100 |
init_or_load(init_cmputil,"../cmpnew/cmputil.o"); |
ar_check_init(cmputil,no_init); |
101 |
|
|
102 |
init_or_load(init_debug,"../lsp/debug.o"); |
ar_check_init(debug,no_init); |
103 |
init_or_load(init_info,"../lsp/info.o"); |
ar_check_init(info,no_init); |
104 |
|
|
105 |
init_or_load(init_cmptype,"../cmpnew/cmptype.o"); |
ar_check_init(cmptype,no_init); |
106 |
init_or_load(init_cmpbind,"../cmpnew/cmpbind.o"); |
ar_check_init(cmpbind,no_init); |
107 |
init_or_load(init_cmpblock,"../cmpnew/cmpblock.o"); |
ar_check_init(cmpblock,no_init); |
108 |
init_or_load(init_cmpcall,"../cmpnew/cmpcall.o"); |
ar_check_init(cmpcall,no_init); |
109 |
init_or_load(init_cmpcatch,"../cmpnew/cmpcatch.o"); |
ar_check_init(cmpcatch,no_init); |
110 |
init_or_load(init_cmpenv,"../cmpnew/cmpenv.o"); |
ar_check_init(cmpenv,no_init); |
111 |
init_or_load(init_cmpeval,"../cmpnew/cmpeval.o"); |
ar_check_init(cmpeval,no_init); |
112 |
init_or_load(init_cmpflet,"../cmpnew/cmpflet.o"); |
ar_check_init(cmpflet,no_init); |
113 |
init_or_load(init_cmpfun,"../cmpnew/cmpfun.o"); |
ar_check_init(cmpfun,no_init); |
114 |
init_or_load(init_cmpif,"../cmpnew/cmpif.o"); |
ar_check_init(cmpif,no_init); |
115 |
init_or_load(init_cmplabel,"../cmpnew/cmplabel.o"); |
ar_check_init(cmplabel,no_init); |
116 |
init_or_load(init_cmplam,"../cmpnew/cmplam.o"); |
ar_check_init(cmplam,no_init); |
117 |
init_or_load(init_cmplet,"../cmpnew/cmplet.o"); |
ar_check_init(cmplet,no_init); |
118 |
init_or_load(init_cmploc,"../cmpnew/cmploc.o"); |
ar_check_init(cmploc,no_init); |
119 |
init_or_load(init_cmpmap,"../cmpnew/cmpmap.o"); |
ar_check_init(cmpmap,no_init); |
120 |
init_or_load(init_cmpmulti,"../cmpnew/cmpmulti.o"); |
ar_check_init(cmpmulti,no_init); |
121 |
init_or_load(init_cmpspecial,"../cmpnew/cmpspecial.o"); |
ar_check_init(cmpspecial,no_init); |
122 |
init_or_load(init_cmptag,"../cmpnew/cmptag.o"); |
ar_check_init(cmptag,no_init); |
123 |
init_or_load(init_cmptop,"../cmpnew/cmptop.o"); |
ar_check_init(cmptop,no_init); |
124 |
init_or_load(init_cmpvar,"../cmpnew/cmpvar.o"); |
ar_check_init(cmpvar,no_init); |
125 |
init_or_load(init_cmpvs,"../cmpnew/cmpvs.o"); |
ar_check_init(cmpvs,no_init); |
126 |
init_or_load(init_cmpwt,"../cmpnew/cmpwt.o"); |
ar_check_init(cmpwt,no_init); |
127 |
|
|
128 |
|
build_symbol_table(); |
129 |
|
|
130 |
sLApackageA->s.s_dbind = user_package; |
sLApackageA->s.s_dbind = user_package; |
131 |
user_init(); |
user_init(); |