1@echo off
2
3:: make.cmd - Build Oberon with Microsoft C compiler.
4
5:: Expects the path to include cl.exe.
6
7:: As of December 2016 the Microsoft C compiler and build tools
8:: can be downloaded independently of  the full Visual Studio IDE
9:: as the 'Visual C++ Build Tools 2015'.
10
11:: See: http://landinghub.visualstudio.com/visual-cpp-build-tools
12
13:: With this installed, from the start button select:
14::    All Apps / Visual C++ Build Tools / Visual C++ 2015 x86 Native Build Tools Command Prompt
15:: or All Apps / Visual C++ Build Tools / Visual C++ 2015 x64 Native Build Tools Command Prompt
16
17
18
19
20:: Create configuration and parameter files.
21
22cl -nologo -Isrc\runtime src\tools\make\configure.c >msc-listing || type msc-listing
23setlocal
24configure.exe
25del configure.obj configure.exe 2>nul
26
27
28:: Extract make variables into local environment
29
30for /F "delims='=' tokens=1,2" %%a in (Configuration.make) do set %%a=%%b
31
32set FLAVOUR=%OS%.%DATAMODEL%.%COMPILER%
33set BUILDDIR=build\%FLAVOUR%
34set OBECOMP=%ONAME%%BINEXT%
35set MODEL=2
36
37for /F %%d in ('cd');do set ROOTDIR=%%d
38
39
40:: Process target parameter
41
42if "%1" equ "" (
43  call :usage
44) else (
45  call :%1
46)
47endlocal
48goto :eof
49
50
51
52
53:usage
54@echo.
55@echo Usage:
56@echo.
57@echo.  make full     - Make compiler to 'install' subdirectory
58@echo.  make install  - Install 'install' subdir to OS. Requires administrator privileges
59@echo.
60@echo.  make clean    - Remove made files
61@echo.  make compiler - Build the compiler but not the library
62@echo.  make library  - Build all library files and make library
63@echo.  make install  - Install built compiler and library (from administrator prompt)
64goto :eof
65
66
67
68
69:full
70call :clean          || exit /b
71echo.
72echo.--- Compiler build started ---
73echo.
74call :compiler       || exit /b
75echo.
76echo.--- Compiler build successfull ---
77echo.
78call :browsercmd     || exit /b
79echo.
80echo.--- Library build started ---
81echo.
82call :library        || exit /b
83echo.
84echo.--- Library build successfull ---
85echo.
86call :makeinstalldir || exit /b
87goto :eof
88
89
90
91
92:makeinstalldir
93rmdir /s /q "%ROOTDIR%\install"                        >nul 2>&1
94mkdir "%ROOTDIR%\install"                              >nul 2>&1
95
96mkdir "%ROOTDIR%\install\bin"                          >nul 2>&1
97copy %OBECOMP%              "%ROOTDIR%\install\bin"    >nul
98copy %BUILDDIR%\showdef.exe "%ROOTDIR%\install\bin"    >nul
99
100mkdir "%ROOTDIR%\install\2"                            >nul 2>&1
101mkdir "%ROOTDIR%\install\2\include"                    >nul 2>&1
102mkdir "%ROOTDIR%\install\2\sym"                        >nul 2>&1
103copy %BUILDDIR%\2\*.h    "%ROOTDIR%\install\2\include" >nul
104copy %BUILDDIR%\2\*.sym  "%ROOTDIR%\install\2\sym"     >nul
105
106mkdir "%ROOTDIR%\install\C"                            >nul 2>&1
107mkdir "%ROOTDIR%\install\C\include"                    >nul 2>&1
108mkdir "%ROOTDIR%\install\C\sym"                        >nul 2>&1
109copy %BUILDDIR%\C\*.h    "%ROOTDIR%\install\C\include" >nul
110copy %BUILDDIR%\C\*.sym  "%ROOTDIR%\install\C\sym"     >nul
111
112mkdir "%ROOTDIR%\install\lib"                          >nul 2>&1
113copy %BUILDDIR%\2\lib%ONAME%* "%ROOTDIR%\install\lib"  >nul
114copy %BUILDDIR%\C\lib%ONAME%* "%ROOTDIR%\install\lib"  >nul
115
116echo.
117echo Now add %ROOTDIR%\install\bin to your path, for example with the command:
118echo PATH %ROOTDIR%\install\bin;%%PATH%%
119echo.
120goto :eof
121
122
123
124:install
125whoami /groups | find "12288" >nul
126if errorlevel 1 (
127echo make install - administrator rights required. Please run under an administrator command prompt.
128goto :eof
129)
130echo Installing to %INSTALLDIR%
131rmdir /s /q "%INSTALLDIR%"                     >nul 2>&1
132xcopy /E /I /Y "%ROOTDIR%\install" "%INSTALLDIR%" >nul
133echo.
134echo Now add %INSTALLDIR%\bin to your path, for example with the command:
135echo PATH %INSTALLDIR%\bin;%%PATH%%
136echo.
137goto :eof
138
139
140
141:uninstall
142whoami /groups | find "12288" >nul
143if errorlevel 1 (
144echo make uninstall - administrator rights required. Please run under an administrator command prompt.
145goto :eof
146)
147echo Uninstalling %INSTALLDIR%
148rmdir /s /q "%INSTALLDIR%" >nul 2>&1
149goto :eof
150
151
152
153
154:compiler
155call :translate || exit /b
156call :assemble  || exit /b
157goto :eof
158
159
160
161
162:clean
163echo.--- Cleaning branch ... %OS% %COMPILER% %DATAMODEL% ---
164rd /s /q %BUILDDIR% 2>nul
165del /q %OBECOMP% 2>nul
166goto :eof
167
168
169
170
171:assemble
172echo.
173echo.make assemble - compiling Oberon compiler c source::
174echo.  VERSION:   %VERSION%
175echo.  Target characeristics:
176echo.    PLATFORM:   %PLATFORM%
177echo.    OS:         %OS%
178echo.    BUILDDIR:   %BUILDDIR%
179echo.    INSTALLDIR: %INSTALLDIR%
180echo.  Oberon characteristics:
181echo.    MODEL:      %MODEL%
182echo.    ADRSIZE:    %ADRSIZE%
183echo.    ALIGNMENT:  %ALIGNMENT%
184echo.  C compiler:
185echo.    COMPILER:   %COMPILER%
186echo.    COMPILE:    %COMPILE%
187echo.    DATAMODEL:  %DATAMODEL%
188
189cd %BUILDDIR%
190
191cl -nologo /Zi -c SYSTEM.c Configuration.c Platform.c Heap.c    || exit /b
192cl -nologo /Zi -c Out.c    Reals.c         Strings.c  Modules.c || exit /b
193cl -nologo /Zi -c Files.c  Texts.c         VT100.c              || exit /b
194cl -nologo /Zi -c OPM.c    extTools.c      OPS.c      OPT.c     || exit /b
195cl -nologo /Zi -c OPC.c    OPV.c           OPB.c      OPP.c     || exit /b
196
197cl -nologo /Zi Compiler.c /Fe%ROOTDIR%\%OBECOMP% /link /INCREMENTAL:NO ^
198SYSTEM.obj  Configuration.obj Platform.obj Heap.obj  Out.obj   Reals.obj ^
199Modules.obj Files.obj         Strings.obj  Texts.obj VT100.obj extTools.obj ^
200OPM.obj     OPS.obj           OPT.obj      OPC.obj   OPV.obj   OPB.obj    OPP.obj || exit /b
201
202cd %ROOTDIR%
203copy src\runtime\*.c %BUILDDIR% >nul
204copy src\runtime\*.h %BUILDDIR% >nul
205copy src\runtime\*.Txt %BUILDDIR% >nul
206copy src\runtime\*.Txt %ROOTDIR% >nul
207echo.%OBECOMP% created.
208goto :eof
209
210
211
212
213:compilefromsavedsource
214echo.Populating clean build directory from bootstrap C sources.
215mkdir %BUILDDIR% >nul 2>nul
216copy bootstrap\%PLATFORM%-%ADRSIZE%%ALIGNMENT%\*.* %BUILDDIR% >nul
217copy bootstrap\*.c %BUILDDIR% >nul
218copy bootstrap\*.h %BUILDDIR% >nul
219call :assemble || exit /b
220copy bootstrap\*.c %BUILDDIR% >nul
221copy bootstrap\*.h %BUILDDIR% >nul
222goto :eof
223
224
225
226
227:translate
228:: Make sure we have an oberon compiler binary: if we built one earlier we'll use it,
229:: otherwise use one of the saved sets of C sources in the bootstrap directory.
230if not exist %OBECOMP% call :compilefromsavedsource
231
232echo.
233echo.make translate - translating compiler source:
234echo.  PLATFORM:  %PLATFORM%
235echo.  MODEL:     %MODEL%
236echo.  ADRSIZE:   %ADRSIZE%
237echo.  ALIGNMENT: %ALIGNMENT%
238
239md %BUILDDIR% 2>nul
240cd %BUILDDIR%
241del *.sym >nul 2>nul
242%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../Configuration.Mod                  || exit /b
243%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Platform%PLATFORM%.Mod || exit /b
244%ROOTDIR%\%OBECOMP% -SsfFapx -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Heap.Mod               || exit /b
245%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Reals.Mod              || exit /b
246%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Strings.Mod            || exit /b
247%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Out.Mod                || exit /b
248%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Modules.Mod            || exit /b
249%ROOTDIR%\%OBECOMP% -SsfFx   -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Files.Mod              || exit /b
250%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/Texts.Mod              || exit /b
251%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/runtime/VT100.Mod              || exit /b
252%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/OPM.Mod               || exit /b
253%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/extTools.Mod          || exit /b
254%ROOTDIR%\%OBECOMP% -SsfFx   -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/OPS.Mod               || exit /b
255%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/OPT.Mod               || exit /b
256%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/OPC.Mod               || exit /b
257%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/OPV.Mod               || exit /b
258%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/OPB.Mod               || exit /b
259%ROOTDIR%\%OBECOMP% -SsfF    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/OPP.Mod               || exit /b
260%ROOTDIR%\%OBECOMP% -Ssfm    -A%ADRSIZE%%ALIGNMENT% -O%MODEL% ../../src/compiler/Compiler.Mod          || exit /b
261
262cd %ROOTDIR%
263copy src\runtime\*.c %BUILDDIR% >nul
264copy src\runtime\*.h %BUILDDIR% >nul
265copy src\runtime\*.Txt %BUILDDIR% >nul
266
267echo.%BUILDDIR% filled with compiler C source.
268goto :eof
269
270
271
272
273:browsercmd
274echo.
275echo.Making symbol browser
276cd %BUILDDIR%
277%ROOTDIR%/%OBECOMP% -fSs ../../src/runtime/Oberon.Mod
278%ROOTDIR%/%OBECOMP% -fSm ../../src/tools/browser/BrowserCmd.Mod
279cl -nologo BrowserCmd.c Oberon.c /Feshowdef.exe ^
280  Platform.obj Texts.obj OPT.obj Heap.obj Out.obj SYSTEM.obj OPM.obj OPS.obj OPV.obj ^
281  Files.obj Reals.obj Modules.obj VT100.obj Configuration.obj Strings.obj ^
282  OPC.obj
283cd %ROOTDIR%
284goto :eof
285
286
287
288
289:runtime
290echo.
291echo.Making runtime library for -O%MODEL%
292cd %BUILDDIR%\%MODEL%
293%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Platform%PLATFORM%.Mod
294%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Heap.Mod
295%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Modules.Mod
296%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Reals.Mod
297%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Strings.Mod
298%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Out.Mod
299%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/In.Mod
300%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/VT100.Mod
301%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Files.Mod
302%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Math.Mod
303%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/MathL.Mod
304%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Texts.Mod
305%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/runtime/Oberon.Mod
306cd %ROOTDIR%
307goto :eof
308
309
310:v4
311echo.
312echo.Making V4 library for -O%MODEL%
313cd %BUILDDIR%\%MODEL%
314%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/v4/Args.Mod                      || exit /b
315%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/v4/Console.Mod                   || exit /b
316%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/v4/Printer.Mod                   || exit /b
317%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/v4/Sets.Mod                      || exit /b
318cd %ROOTDIR%
319goto :eof
320
321:ooc2
322echo.Making ooc2 library for -O%MODEL%
323cd %BUILDDIR%\%MODEL%
324%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc2/ooc2Strings.Mod             || exit /b
325%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc2/ooc2Ascii.Mod               || exit /b
326%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc2/ooc2CharClass.Mod           || exit /b
327%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc2/ooc2ConvTypes.Mod           || exit /b
328%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc2/ooc2IntConv.Mod             || exit /b
329%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc2/ooc2IntStr.Mod              || exit /b
330%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc2/ooc2Real0.Mod               || exit /b
331cd %ROOTDIR%
332goto :eof
333
334:ooc
335echo.Making ooc library for -O%MODEL%
336cd %BUILDDIR%\%MODEL%
337%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocLowReal.Mod               || exit /b
338%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocLowLReal.Mod              || exit /b
339%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocRealMath.Mod              || exit /b
340%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocOakMath.Mod               || exit /b
341%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocLRealMath.Mod             || exit /b
342%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocLongInts.Mod              || exit /b
343%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocComplexMath.Mod           || exit /b
344%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocLComplexMath.Mod          || exit /b
345%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocAscii.Mod                 || exit /b
346%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocCharClass.Mod             || exit /b
347%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocStrings.Mod               || exit /b
348%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocConvTypes.Mod             || exit /b
349%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocLRealConv.Mod             || exit /b
350%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocLRealStr.Mod              || exit /b
351%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocRealConv.Mod              || exit /b
352%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocRealStr.Mod               || exit /b
353%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocIntConv.Mod               || exit /b
354%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocIntStr.Mod                || exit /b
355%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocMsg.Mod                   || exit /b
356%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocSysClock.Mod              || exit /b
357%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocTime.Mod                  || exit /b
358%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocChannel.Mod               || exit /b
359%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocStrings2.Mod              || exit /b
360%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocRts.Mod                   || exit /b
361%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocFilenames.Mod             || exit /b
362%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocTextRider.Mod             || exit /b
363%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocBinaryRider.Mod           || exit /b
364%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocJulianDay.Mod             || exit /b
365%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocFilenames.Mod             || exit /b
366%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocwrapperlibc.Mod           || exit /b
367%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ooc/oocC%DATAMODEL%.Mod          || exit /b
368cd %ROOTDIR%
369goto :eof
370
371:oocX11
372echo No X11 support on plain Windows - use cygwin and build with cygwin make.
373goto :eof
374
375:ulm
376echo.Making ulm library for -O%MODEL%
377cd %BUILDDIR%\%MODEL%
378%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmTypes.Mod                 || exit /b
379%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmObjects.Mod               || exit /b
380%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmPriorities.Mod            || exit /b
381%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmDisciplines.Mod           || exit /b
382%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmServices.Mod              || exit /b
383%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSys.Mod                   || exit /b
384%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSYSTEM.Mod                || exit /b
385%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmEvents.Mod                || exit /b
386%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmProcess.Mod               || exit /b
387%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmResources.Mod             || exit /b
388%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmForwarders.Mod            || exit /b
389%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmRelatedEvents.Mod         || exit /b
390%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmStreams.Mod               || exit /b
391%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmStrings.Mod               || exit /b
392%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSysTypes.Mod              || exit /b
393%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmTexts.Mod                 || exit /b
394%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSysConversions.Mod        || exit /b
395%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmErrors.Mod                || exit /b
396%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSysErrors.Mod             || exit /b
397%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSysStat.Mod               || exit /b
398%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmASCII.Mod                 || exit /b
399%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSets.Mod                  || exit /b
400%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmIO.Mod                    || exit /b
401%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmAssertions.Mod            || exit /b
402%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmIndirectDisciplines.Mod   || exit /b
403%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmStreamDisciplines.Mod     || exit /b
404%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmIEEE.Mod                  || exit /b
405%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmMC68881.Mod               || exit /b
406%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmReals.Mod                 || exit /b
407%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmPrint.Mod                 || exit /b
408%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmWrite.Mod                 || exit /b
409%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmConstStrings.Mod          || exit /b
410%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmPlotters.Mod              || exit /b
411%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmSysIO.Mod                 || exit /b
412%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmLoader.Mod                || exit /b
413%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmNetIO.Mod                 || exit /b
414%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmPersistentObjects.Mod     || exit /b
415%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmPersistentDisciplines.Mod || exit /b
416%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmOperations.Mod            || exit /b
417%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmScales.Mod                || exit /b
418%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmTimes.Mod                 || exit /b
419%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmClocks.Mod                || exit /b
420%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmTimers.Mod                || exit /b
421%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmConditions.Mod            || exit /b
422%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmStreamConditions.Mod      || exit /b
423%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmTimeConditions.Mod        || exit /b
424%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmCiphers.Mod               || exit /b
425%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmCipherOps.Mod             || exit /b
426%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmBlockCiphers.Mod          || exit /b
427%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmAsymmetricCiphers.Mod     || exit /b
428%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmConclusions.Mod           || exit /b
429%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmRandomGenerators.Mod      || exit /b
430%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmTCrypt.Mod                || exit /b
431%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/ulm/ulmIntOperations.Mod         || exit /b
432cd %ROOTDIR%
433goto :eof
434
435:pow32
436echo.Making pow32 library for -O%MODEL%
437cd %BUILDDIR%\%MODEL%
438%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/pow/powStrings.Mod               || exit /b
439cd %ROOTDIR%
440goto :eof
441
442:misc
443echo.Making misc library for -O%MODEL%
444cd %BUILDDIR%\%MODEL%
445%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/misc/crt.Mod                     || exit /b
446%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/misc/Listen.Mod                  || exit /b
447%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/misc/MersenneTwister.Mod         || exit /b
448%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/misc/MultiArrays.Mod             || exit /b
449%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/misc/MultiArrayRiders.Mod        || exit /b
450cd %ROOTDIR%
451goto :eof
452
453:s3
454echo.Making s3 library for -O%MODEL%
455cd %BUILDDIR%\%MODEL%
456%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethBTrees.Mod                 || exit /b
457%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethMD5.Mod                    || exit /b
458%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethSets.Mod                   || exit /b
459%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethZlib.Mod                   || exit /b
460%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethZlibBuffers.Mod            || exit /b
461%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethZlibInflate.Mod            || exit /b
462%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethZlibDeflate.Mod            || exit /b
463%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethZlibReaders.Mod            || exit /b
464%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethZlibWriters.Mod            || exit /b
465%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethZip.Mod                    || exit /b
466%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethRandomNumbers.Mod          || exit /b
467%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethGZReaders.Mod              || exit /b
468%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethGZWriters.Mod              || exit /b
469%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethUnicode.Mod                || exit /b
470%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethDates.Mod                  || exit /b
471%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethReals.Mod                  || exit /b
472%ROOTDIR%\%OBECOMP% -Ffs -O%MODEL% ../../../src/library/s3/ethStrings.Mod                || exit /b
473cd %ROOTDIR%
474goto :eof
475
476
477
478
479:initlibrary
480rd /s /q %BUILDDIR%\%MODEL% >nul 2>nul
481mkdir %BUILDDIR%             >nul 2>nul
482mkdir %BUILDDIR%\%MODEL%     >nul 2>nul
483copy src\runtime\*.c %BUILDDIR%\%MODEL% >nul
484copy src\runtime\*.h %BUILDDIR%\%MODEL% >nul
485cd %BUILDDIR%\%MODEL%
486cl -nologo -c SYSTEM.c
487cd %ROOTDIR%
488goto :eof
489
490
491:library
492SET MODEL=2
493call :initlibrary   || exit /b
494call :runtime       || exit /b
495call :v4            || exit /b
496call :ooc2          || exit /b
497call :ooc           || exit /b
498call :ulm           || exit /b
499call :pow32         || exit /b
500call :misc          || exit /b
501call :s3            || exit /b
502lib -nologo %BUILDDIR%\%MODEL%\*.obj -out:%BUILDDIR%\%MODEL%\lib%ONAME%-O%MODEL%.lib || exit /b
503
504SET MODEL=C
505call :initlibrary   || exit /b
506call :runtime       || exit /b
507lib -nologo %BUILDDIR%\%MODEL%\*.obj -out:%BUILDDIR%\%MODEL%\lib%ONAME%-O%MODEL%.lib || exit /b
508goto :eof
509
510
511
512
513
514
515
516
517