1 #! /bin/bash
3 set -e
5 abspath() {
7 }
9 ###^^^^^^^^^^^^^^^^^^###
10 ### Global variables ###
11 ###__________________###
15 _cpu=
16 _target=
17 _system=
18 _compiler=
19 _linker=
20 _docompile=true
21 _dolink=true
24 _useposix=false
29 ###^^^^^^^^^^^###
30 ### Functions ###
31 ###___________###
33 usage() {
57 exit 2
58 }
60 error() {
62 exit 1
63 }
65 copy_source() {
66 for _src
67 do
70 fi
71 done
72 }
74 native_compile() {
76 }
78 native_link() {
87 fi
88 shift
89 "$_linker" $CPLFALGS -os "$_outsystem" -kernel Kernel -main Kernel -legacycodedir . -o "$_outexe" "$@"
90 fi
91 }
93 cpfront_import_list() {
94 echo
96 do
98 shift
101 fi
102 done
103 }
105 cpfront_main_module() {
107 shift
109 echo
111 echo
113 }
115 cpfront_compile() {
117 }
119 cpfront_link() {
124 fi
125 shift
127 local _list=
129 do
131 done
132 local _cc_cflags=
134 *gcc) _cc_cflags="-std=c89 -Wno-int-conversion -Wno-int-to-pointer-cast -Wno-incompatible-pointer-types -Wno-implicit-function-declaration" ;;
135 *gcc-4.2) _cc_cflags="-std=c89 -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -Wno-implicit-function-declaration" ;;
136 clang|clang-*) _cc_cflags="-std=c89 -Wno-int-conversion -Wno-incompatible-pointer-types -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -Wno-unused-value -Wno-return-type" ;;
139 esac
140 local _cpu_cflags=
146 esac
147 local _system_cflags=
152 esac
157 *) ;;
158 esac
159 "$CC" -g -D_XOPEN_SOURCE=700 $_cc_cflags $_cpu_cflags $CFLAGS -o "${_out_exe}" -I "$_this/C" "$_this/C/SYSTEM.c" $_list -lm -ldl -lffi $_system_cflags
160 fi
161 }
163 compile() {
168 esac
169 }
171 link() {
176 esac
177 }
179 compile_all() {
180 ###^^^^^^^^^^^^^^^^^^^^^^^^###
181 ### Compile POSIX bindings ###
182 ###________________________###
185 compile Posix/Mod/Ctypes.cp \
186 Posix/Mod/Csys_types.cp \
187 Posix/Mod/Cstdlib.cp Posix/Mod/Cstdio.cp Posix/Mod/Cunistd.cp \
188 Posix/Mod/Cdirent.cp Posix/Mod/Clocale.cp Posix/Mod/Ctime.cp \
189 Posix/Mod/Csys_stat.cp Posix/Mod/Cfcntl.cp Posix/Mod/Cerrno.cp \
190 Posix/Mod/Ciconv.cp Posix/Mod/Cwctype.cp Posix/Mod/Csys_mman.cp \
191 Posix/Mod/Cdlfcn.cp Posix/Mod/Csignal.cp Posix/Mod/Csetjmp.cp \
192 Posix/Mod/Clibgen.cp \
193 Posix/Mod/Cmacro.cp
195 compile Lib/Mod/FFI.cp
196 fi
197 fi
199 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^^###
200 ### Compile BlackBox Framework ###
201 ###____________________________###
203 compile System/Mod/Int.odc
205 compile System/Mod/Long.odc
206 compile System/Mod/Math.odc System/Mod/SMath.odc
207 else
208 compile System/Mod/Math.cp System/Mod/SMath.cp
209 fi
210 compile System/Mod/Kernel.cp \
211 System/Mod/Console.odc System/Mod/Files.odc System/Mod/Dates.odc \
212 System/Mod/Log.odc System/Mod/Strings.odc System/Mod/Meta.odc \
213 System/Mod/Services.odc System/Mod/Integers.odc
216 mv -t System Code Sym
217 fi
219 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###
220 ### Compile Linux Host subsystem ###
221 ###______________________________###
223 compile Host/Mod/Lang.cp Host/Mod/Dates.cp Host/Mod/Console.cp \
224 Host/Mod/Files.cp
226 ###^^^^^^^^^^^^^^^^^^^^^^^###
227 ### Compile Dev subsystem ###
228 ###_______________________###
230 compile Dev/Mod/CPM.cp Dev/Mod/CPT.odc Dev/Mod/CPR.cp Dev/Mod/CPS.odc \
231 Dev/Mod/CPB.odc Dev/Mod/CPP.odc Dev/Mod/CPE.odc Dev/Mod/CPH.odc \
232 Dev/Mod/CPL486.odc Dev/Mod/CPC486.odc Dev/Mod/CPV486.odc
234 ###^^^^^^^^^^^^^^^^^^^^^^^^###
235 ### Compile Dev2 subsystem ###
236 ###________________________###
238 compile Dev2/Mod/LnkBase.odc Dev2/Mod/LnkChmod.odc Dev2/Mod/LnkLoad.odc \
239 Dev2/Mod/LnkWriteElf.odc Dev2/Mod/LnkWriteElfStatic.odc \
240 Dev2/Mod/LnkWritePe.odc
242 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^###
243 ### Compile CPfront subsystem ###
244 ###___________________________###
246 compile CPfront/Mod/CPG.odc CPfront/Mod/CPC.odc CPfront/Mod/CPV.odc
248 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###
249 ### Compile bbdsw-specific modules ###
250 ###________________________________###
253 compile Dsw/Mod/Debug.odc
254 fi
255 compile Dsw/Mod/Documents.cp Dsw/Mod/Log.odc Dsw/Mod/Compiler486Main.cp \
256 Dsw/Mod/CompilerCPfrontMain.cp Dsw/Mod/Linker486Main.cp
257 }
259 link_all() {
260 local _debug_module=
262 _debug_module=DswDebug
263 fi
265 link cpc486 \
266 PosixCtypes PosixCmacro \
267 Kernel Console Files Dates Math Strings Services Log \
269 DevCPM DevCPT DevCPR DevCPS DevCPB DevCPP DevCPE DevCPH \
270 DevCPL486 DevCPC486 DevCPV486 \
271 DswDocuments DswCompiler486Main
273 link cpl486 \
274 PosixCtypes PosixCmacro \
275 Kernel Console Files Math Strings Services Log \
277 Dev2LnkBase Dev2LnkChmod Dev2LnkLoad Dev2LnkWriteElf \
278 Dev2LnkWriteElfStatic Dev2LnkWritePe \
279 DswLinker486Main
281 link cpfront \
282 PosixCtypes PosixCmacro \
283 Kernel Console Files Dates Math Strings Services Log \
285 DevCPM DevCPT DevCPR DevCPS DevCPB DevCPP DevCPE DevCPH \
286 CPfrontCPG CPfrontCPC CPfrontCPV\
287 DswDocuments DswCompilerCPfrontMain
290 chmod a+x cpc486 cpl486 cpfront
291 fi
292 }
294 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###
295 ### Parse arguments and options ###
296 ###_____________________________###
298 while getopts c:l:o:bxh _name
299 do
304 b) _docompile=false ;;
305 x) _dolink=false ;;
306 h|?) usage ;;
307 esac
308 done
311 usage
312 fi
320 export CC=cc
321 fi
323 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###
324 ### Check for supported cpu/target/os ###
325 ###___________________________________###
328 386|486|586|686) _cpu=486 ;;
329 arm|armv6|armv7) _cpu=arm ;;
330 powerpc|ppc|ppc32) _cpu=powerpc ;;
333 esac
336 native) _target=native ;;
337 cpfront|c) _target=cpfront ;;
340 esac
343 linux) _useposix=true ;;
344 cygwin) _useposix=true ;;
345 osx) _useposix=true ;;
348 esac
350 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###
351 ### Select default compiler if not specified ###
352 ###__________________________________________###
356 native)
358 486) _compiler=cpc486 ;;
360 esac
361 ;;
362 cpfront) _compiler=cpfront ;;
364 esac
365 fi
369 native)
371 486) _linker=cpl486 ;;
373 esac
374 ;;
375 cpfront) _linker= ;;
377 esac
378 fi
383 else
385 fi
386 fi
391 else
393 fi
394 fi
396 ###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###
397 ### Copy sources for changed system ###
398 ###_________________________________###
402 fi
409 fi
414 fi
418 ###^^^^^^^^^^^^^^^###
419 ### Build modules ###
420 ###_______________###
423 compile_all
424 fi
426 ###^^^^^^^^^^^^^^###
427 ### Link modules ###
428 ###______________###
430 link_all