Line data Source code
1 : /* init.cc initializes the modules of the GNU Modula-2 front end.
2 :
3 : Copyright (C) 2012-2026 Free Software Foundation, Inc.
4 : Contributed by Gaius Mulley <gaius@glam.ac.uk>.
5 :
6 : This file is part of GNU Modula-2.
7 :
8 : GNU Modula-2 is free software; you can redistribute it and/or modify
9 : it under the terms of the GNU General Public License as published by
10 : the Free Software Foundation; either version 3, or (at your option)
11 : any later version.
12 :
13 : GNU Modula-2 is distributed in the hope that it will be useful, but
14 : WITHOUT ANY WARRANTY; without even the implied warranty of
15 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 : General Public License for more details.
17 :
18 : You should have received a copy of the GNU General Public License
19 : along with GNU Modula-2; see the file COPYING3. If not see
20 : <http://www.gnu.org/licenses/>. */
21 :
22 : #include "init.h"
23 : #include "config.h"
24 : #include "system.h"
25 :
26 : #if defined(__GNUG__)
27 : #define EXTERN extern "C"
28 : #else /* !__GNUG__ */
29 : #define EXTERN extern
30 : #endif /* !__GNUG__ */
31 :
32 : EXTERN void _M2_M2Bitset_init (int argc, char *argv[], char *envp[]);
33 : EXTERN void _M2_Debug_init (int argc, char *argv[], char *envp[]);
34 : EXTERN void _M2_M2Defaults_init (int argc, char *argv[], char *envp[]);
35 : EXTERN void _M2_Environment_init (int argc, char *argv[], char *envp[]);
36 : EXTERN void _M2_RTExceptions_init (int argc, char *argv[], char *envp[]);
37 : EXTERN void _M2_M2EXCEPTION_init (int argc, char *argv[], char *envp[]);
38 : EXTERN void _M2_M2RTS_init (int argc, char *argv[], char *envp[]);
39 : EXTERN void _M2_M2Dependent_init (int argc, char *argv[], char *envp[]);
40 : EXTERN void _M2_SysExceptions_init (int argc, char *argv[], char *envp[]);
41 : EXTERN void _M2_DynamicStrings_init (int argc, char *argv[], char *envp[]);
42 : EXTERN void _M2_Assertion_init (int argc, char *argv[], char *envp[]);
43 : EXTERN void _M2_FormatStrings_init (int argc, char *argv[], char *envp[]);
44 : EXTERN void _M2_FIO_init (int argc, char *argv[], char *envp[]);
45 : EXTERN void _M2_SFIO_init (int argc, char *argv[], char *envp[]);
46 : EXTERN void _M2_SArgs_init (int argc, char *argv[], char *envp[]);
47 : EXTERN void _M2_Lists_init (int argc, char *argv[], char *envp[]);
48 : EXTERN void _M2_UnixArgs_init (int argc, char *argv[], char *envp[]);
49 : EXTERN void _M2_Args_init (int argc, char *argv[], char *envp[]);
50 : EXTERN void _M2_wrapc_init (int argc, char *argv[], char *envp[]);
51 : EXTERN void _M2_TimeString_init (int argc, char *argv[], char *envp[]);
52 : EXTERN void _M2_IO_init (int argc, char *argv[], char *envp[]);
53 : EXTERN void _M2_StdIO_init (int argc, char *argv[], char *envp[]);
54 : EXTERN void _M2_CmdArgs_init (int argc, char *argv[], char *envp[]);
55 : EXTERN void _M2_M2Preprocess_init (int argc, char *argv[], char *envp[]);
56 : EXTERN void _M2_M2Error_init (int argc, char *argv[], char *envp[]);
57 : EXTERN void _M2_M2Search_init (int argc, char *argv[], char *envp[]);
58 : EXTERN void _M2_DynamicPath_init (int argc, char *argv[], char *envp[]);
59 : EXTERN void _M2_PathName_init (int argc, char *argv[], char *envp[]);
60 : EXTERN void _M2_Indexing_init (int argc, char *argv[], char *envp[]);
61 : EXTERN void _M2_NameKey_init (int argc, char *argv[], char *envp[]);
62 : EXTERN void _M2_NumberIO_init (int argc, char *argv[], char *envp[]);
63 : EXTERN void _M2_FpuIO_init (int argc, char *argv[], char *envp[]);
64 : EXTERN void _M2_SysStorage_init (int argc, char *argv[], char *envp[]);
65 : EXTERN void _M2_Storage_init (int argc, char *argv[], char *envp[]);
66 : EXTERN void _M2_StrIO_init (int argc, char *argv[], char *envp[]);
67 : EXTERN void _M2_M2Debug_init (int argc, char *argv[], char *envp[]);
68 : EXTERN void _M2_M2Batch_init (int argc, char *argv[], char *envp[]);
69 : EXTERN void _M2_StrLib_init (int argc, char *argv[], char *envp[]);
70 : EXTERN void _M2_M2ALU_init (int argc, char *argv[], char *envp[]);
71 : EXTERN void _M2_M2Options_init (int argc, char *argv[], char *envp[]);
72 : EXTERN void _M2_M2Comp_init (int argc, char *argv[], char *envp[]);
73 : EXTERN void _M2_M2LexBuf_init (int argc, char *argv[], char *envp[]);
74 : EXTERN void _M2_SymbolTable_init (int argc, char *argv[], char *envp[]);
75 : EXTERN void _M2_M2Base_init (int argc, char *argv[], char *envp[]);
76 : EXTERN void _M2_M2Quads_init (int argc, char *argv[], char *envp[]);
77 : EXTERN void _M2_SymbolKey_init (int argc, char *argv[], char *envp[]);
78 : EXTERN void _M2_FifoQueue_init (int argc, char *argv[], char *envp[]);
79 : EXTERN void _M2_M2Reserved_init (int argc, char *argv[], char *envp[]);
80 : EXTERN void _M2_M2Const_init (int argc, char *argv[], char *envp[]);
81 : EXTERN void _M2_M2LangDump_init (int argc, char *argv[], char *envp[]);
82 : EXTERN void _M2_P1SymBuild_init (int argc, char *argv[], char *envp[]);
83 : EXTERN void _M2_P2SymBuild_init (int argc, char *argv[], char *envp[]);
84 : EXTERN void _M2_P3SymBuild_init (int argc, char *argv[], char *envp[]);
85 : EXTERN void _M2_M2System_init (int argc, char *argv[], char *envp[]);
86 : EXTERN void _M2_M2BasicBlock_init (int argc, char *argv[], char *envp[]);
87 : EXTERN void _M2_M2Pass_init (int argc, char *argv[], char *envp[]);
88 : EXTERN void _M2_M2Code_init (int argc, char *argv[], char *envp[]);
89 : EXTERN void _M2_M2AsmUtil_init (int argc, char *argv[], char *envp[]);
90 : EXTERN void _M2_M2FileName_init (int argc, char *argv[], char *envp[]);
91 : EXTERN void _M2_M2Students_init (int argc, char *argv[], char *envp[]);
92 : EXTERN void _M2_StrCase_init (int argc, char *argv[], char *envp[]);
93 : EXTERN void _M2_SymbolConversion_init (int argc, char *argv[], char *envp[]);
94 : EXTERN void _M2_M2GCCDeclare_init (int argc, char *argv[], char *envp[]);
95 : EXTERN void _M2_M2GenGCC_init (int argc, char *argv[], char *envp[]);
96 : EXTERN void _M2_M2Range_init (int argc, char *argv[], char *envp[]);
97 : EXTERN void _M2_M2Swig_init (int argc, char *argv[], char *envp[]);
98 : EXTERN void _M2_M2MetaError_init (int argc, char *argv[], char *envp[]);
99 : EXTERN void _M2_M2CaseList_init (int argc, char *argv[], char *envp[]);
100 : EXTERN void _M2_PCSymBuild_init (int argc, char *argv[], char *envp[]);
101 : EXTERN void _M2_PCBuild_init (int argc, char *argv[], char *envp[]);
102 : EXTERN void _M2_Sets_init (int argc, char *argv[], char *envp[]);
103 : EXTERN void _M2_dtoa_init (int argc, char *argv[], char *envp[]);
104 : EXTERN void _M2_ldtoa_init (int argc, char *argv[], char *envp[]);
105 : EXTERN void _M2_M2Check_init (int argc, char *argv[], char *envp[]);
106 : EXTERN void _M2_M2SSA_init (int argc, char *argv[], char *envp[]);
107 : EXTERN void _M2_M2SymInit_init (int argc, char *argv[], char *envp[]);
108 : EXTERN void _M2_M2StateCheck_init (int argc, char *argv[], char *envp[]);
109 : EXTERN void _M2_P3Build_init (int argc, char *argv[], char *envp[]);
110 : EXTERN void _M2_M2Diagnostic_init (int argc, char *argv[], char *envp[]);
111 : EXTERN void _M2_M2StackSpell_init (int argc, char *argv[], char *envp[]);
112 : EXTERN void exit (int);
113 : EXTERN void M2Comp_compile (const char *filename);
114 : EXTERN void RTExceptions_DefaultErrorCatch (void);
115 :
116 :
117 : /* FrontEndInit initialize the modules. This is a global
118 : initialization and it is called once. */
119 :
120 : void
121 14952 : init_FrontEndInit (void)
122 : {
123 14952 : _M2_Debug_init (0, NULL, NULL);
124 14952 : _M2_RTExceptions_init (0, NULL, NULL);
125 14952 : _M2_M2Defaults_init (0, NULL, NULL);
126 14952 : _M2_Environment_init (0, NULL, NULL);
127 14952 : _M2_M2EXCEPTION_init (0, NULL, NULL);
128 14952 : _M2_M2Dependent_init (0, NULL, NULL);
129 14952 : _M2_M2RTS_init (0, NULL, NULL);
130 14952 : _M2_SysExceptions_init (0, NULL, NULL);
131 14952 : _M2_M2Diagnostic_init (0, NULL, NULL);
132 14952 : _M2_DynamicStrings_init (0, NULL, NULL);
133 14952 : _M2_Assertion_init (0, NULL, NULL);
134 14952 : _M2_FormatStrings_init (0, NULL, NULL);
135 14952 : _M2_FIO_init (0, NULL, NULL);
136 14952 : _M2_SFIO_init (0, NULL, NULL);
137 14952 : _M2_SArgs_init (0, NULL, NULL);
138 14952 : _M2_Lists_init (0, NULL, NULL);
139 14952 : _M2_UnixArgs_init (0, NULL, NULL);
140 14952 : _M2_Args_init (0, NULL, NULL);
141 14952 : _M2_wrapc_init (0, NULL, NULL);
142 14952 : _M2_TimeString_init (0, NULL, NULL);
143 14952 : _M2_IO_init (0, NULL, NULL);
144 14952 : _M2_StdIO_init (0, NULL, NULL);
145 14952 : _M2_CmdArgs_init (0, NULL, NULL);
146 14952 : _M2_FpuIO_init (0, NULL, NULL);
147 14952 : _M2_SysStorage_init (0, NULL, NULL);
148 14952 : _M2_Storage_init (0, NULL, NULL);
149 14952 : _M2_StrIO_init (0, NULL, NULL);
150 14952 : _M2_StrLib_init (0, NULL, NULL);
151 14952 : _M2_dtoa_init (0, NULL, NULL);
152 14952 : _M2_ldtoa_init (0, NULL, NULL);
153 14952 : _M2_DynamicPath_init (0, NULL, NULL);
154 14952 : _M2_PathName_init (0, NULL, NULL);
155 14952 : _M2_M2Search_init (0, NULL, NULL);
156 14952 : _M2_M2Options_init (0, NULL, NULL);
157 14952 : }
158 :
159 : /* PerCompilationInit initialize the modules before compiling,
160 : filename. This is called every time we compile a new file. */
161 :
162 : void
163 14952 : init_PerCompilationInit (const char *filename)
164 : {
165 14952 : _M2_M2Bitset_init (0, NULL, NULL);
166 14952 : _M2_M2Preprocess_init (0, NULL, NULL);
167 14952 : _M2_M2Error_init (0, NULL, NULL);
168 14952 : _M2_Indexing_init (0, NULL, NULL);
169 14952 : _M2_NameKey_init (0, NULL, NULL);
170 14952 : _M2_NumberIO_init (0, NULL, NULL);
171 14952 : _M2_M2Debug_init (0, NULL, NULL);
172 14952 : _M2_M2Batch_init (0, NULL, NULL);
173 14952 : _M2_M2ALU_init (0, NULL, NULL);
174 14952 : _M2_M2Comp_init (0, NULL, NULL);
175 14952 : _M2_M2LexBuf_init (0, NULL, NULL);
176 14952 : _M2_SymbolTable_init (0, NULL, NULL);
177 14952 : _M2_M2Base_init (0, NULL, NULL);
178 14952 : _M2_M2Quads_init (0, NULL, NULL);
179 14952 : _M2_SymbolKey_init (0, NULL, NULL);
180 14952 : _M2_FifoQueue_init (0, NULL, NULL);
181 14952 : _M2_M2Reserved_init (0, NULL, NULL);
182 14952 : _M2_M2Const_init (0, NULL, NULL);
183 14952 : _M2_P1SymBuild_init (0, NULL, NULL);
184 14952 : _M2_P2SymBuild_init (0, NULL, NULL);
185 14952 : _M2_P3SymBuild_init (0, NULL, NULL);
186 14952 : _M2_M2System_init (0, NULL, NULL);
187 14952 : _M2_M2BasicBlock_init (0, NULL, NULL);
188 14952 : _M2_M2Pass_init (0, NULL, NULL);
189 14952 : _M2_M2Code_init (0, NULL, NULL);
190 14952 : _M2_M2AsmUtil_init (0, NULL, NULL);
191 14952 : _M2_M2FileName_init (0, NULL, NULL);
192 14952 : _M2_M2Students_init (0, NULL, NULL);
193 14952 : _M2_StrCase_init (0, NULL, NULL);
194 14952 : _M2_SymbolConversion_init (0, NULL, NULL);
195 14952 : _M2_M2GCCDeclare_init (0, NULL, NULL);
196 14952 : _M2_M2GenGCC_init (0, NULL, NULL);
197 14952 : _M2_M2Range_init (0, NULL, NULL);
198 14952 : _M2_M2Swig_init (0, NULL, NULL);
199 14952 : _M2_M2MetaError_init (0, NULL, NULL);
200 14952 : _M2_M2CaseList_init (0, NULL, NULL);
201 14952 : _M2_PCSymBuild_init (0, NULL, NULL);
202 14952 : _M2_PCBuild_init (0, NULL, NULL);
203 14952 : _M2_Sets_init (0, NULL, NULL);
204 14952 : _M2_M2SSA_init (0, NULL, NULL);
205 14952 : _M2_M2SymInit_init (0, NULL, NULL);
206 14952 : _M2_M2Check_init (0, NULL, NULL);
207 14952 : _M2_M2LangDump_init (0, NULL, NULL);
208 14952 : _M2_M2StateCheck_init (0, NULL, NULL);
209 14952 : _M2_M2StackSpell_init (0, NULL, NULL);
210 14952 : _M2_P3Build_init (0, NULL, NULL);
211 14952 : M2Comp_compile (filename);
212 13418 : }
|