3
#include "../h/include.h"
5
extern object user_init();
8
void gcl_init_or_load1 (void (*)(void),char *);
9
#define init_or_load(fn,file) do {extern void fn(void); gcl_init_or_load1(fn,file);} \
12
/* #define mjoin(a,b) a ## b */
13
/* #define Mjoin(a,b) mjoin(a,b) */
15
#define ar_init(a) do {\
18
if (snprintf(b,sizeof(b),"ar x %-*.*slibgcl.a %s.o",\
19
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\
20
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\
21
sSAsystem_directoryA->s.s_dbind->st.st_self,#a)<=0)\
22
error("Cannot unpack module " #a "o\n");\
24
error("Cannot run ar command to unpack module " #a ".o\n");\
25
init_or_load(Mjoin(init_,a),#a ".o");\
27
error("Cannot unlink " #a ".o\n");\
30
#define ar_check_init(a,b) do {\
33
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);\
42
{printf("loading %s\n",x);
46
#define lsp_init(a) do {\
49
if (snprintf(b,sizeof(b),"%-*.*s%s",\
50
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\
51
sSAsystem_directoryA->s.s_dbind->st.st_fillp,\
52
sSAsystem_directoryA->s.s_dbind->st.st_self,a)<=0)\
53
error("Cannot append system directory\n");\
63
lsp_init("../lsp/gcl_export.lsp");
65
ar_init(gcl_defmacro);
66
ar_init(gcl_evalmacros);
70
lsp_init("../lsp/gcl_autoload.lsp");
75
gcl_init_system(object no_init)
78
if (type_of(no_init)!=t_symbol)
79
error("Supplied no_init is not of type symbol\n");
81
ar_check_init(gcl_predlib,no_init);
82
ar_check_init(gcl_setf,no_init);
83
ar_check_init(gcl_arraylib,no_init);
84
ar_check_init(gcl_assert,no_init);
85
ar_check_init(gcl_defstruct,no_init);
86
ar_check_init(gcl_describe,no_init);
87
ar_check_init(gcl_iolib,no_init);
88
ar_check_init(gcl_listlib,no_init);
89
ar_check_init(gcl_mislib,no_init);
90
ar_check_init(gcl_numlib,no_init);
91
ar_check_init(gcl_packlib,no_init);
92
ar_check_init(gcl_seq,no_init);
93
ar_check_init(gcl_seqlib,no_init);
94
ar_check_init(gcl_trace,no_init);
95
ar_check_init(gcl_sloop,no_init);
96
ar_check_init(gcl_serror,no_init);
98
ar_check_init(gcl_cmpinline,no_init);
99
ar_check_init(gcl_cmputil,no_init);
101
ar_check_init(gcl_debug,no_init);
102
ar_check_init(gcl_info,no_init);
104
ar_check_init(gcl_cmptype,no_init);
105
ar_check_init(gcl_cmpbind,no_init);
106
ar_check_init(gcl_cmpblock,no_init);
107
ar_check_init(gcl_cmpcall,no_init);
108
ar_check_init(gcl_cmpcatch,no_init);
109
ar_check_init(gcl_cmpenv,no_init);
110
ar_check_init(gcl_cmpeval,no_init);
111
ar_check_init(gcl_cmpflet,no_init);
112
ar_check_init(gcl_cmpfun,no_init);
113
ar_check_init(gcl_cmpif,no_init);
114
ar_check_init(gcl_cmplabel,no_init);
115
ar_check_init(gcl_cmplam,no_init);
116
ar_check_init(gcl_cmplet,no_init);
117
ar_check_init(gcl_cmploc,no_init);
118
ar_check_init(gcl_cmpmap,no_init);
119
ar_check_init(gcl_cmpmulti,no_init);
120
ar_check_init(gcl_cmpspecial,no_init);
121
ar_check_init(gcl_cmptag,no_init);
122
ar_check_init(gcl_cmptop,no_init);
123
ar_check_init(gcl_cmpvar,no_init);
124
ar_check_init(gcl_cmpvs,no_init);
125
ar_check_init(gcl_cmpwt,no_init);
131
gcl_init_cmp_anon(void) {