fix
FossilOrigin-Name: c87761406ccef6a856710a913be725648b11a6dd003b8b7d169f1efa8cd772d0
This commit is contained in:
parent
e906676d22
commit
1308006c41
1 changed files with 49 additions and 0 deletions
49
tools/amalgamate.retro
Normal file
49
tools/amalgamate.retro
Normal file
|
@ -0,0 +1,49 @@
|
|||
# Amalgamate
|
||||
|
||||
The standard RETRO system is built using the Nga VM[1] and a
|
||||
copy of the image exported as a C source file[2]. I sometimes
|
||||
prefer to have these as a single file for easier sharing. This
|
||||
is a quick little tool to combine them.
|
||||
|
||||
Output will be written to stdout.
|
||||
|
||||
## References
|
||||
|
||||
[1] vm/nga-c/retro.c
|
||||
[2] vm/nga-c/image.c
|
||||
|
||||
## Code
|
||||
|
||||
Include compilation instructions and enable i/o devices.
|
||||
|
||||
~~~
|
||||
'/*_Build_with_`cc_-lm_-O2_retro-unix.c_-o_retro`_*/ s:put nl nl
|
||||
|
||||
{ 'ENABLE\_FLOATS
|
||||
'ENABLE\_FILES
|
||||
'ENABLE\_UNIX
|
||||
'ENABLE\_RNG
|
||||
'ENABLE\_CLOCK
|
||||
'ENABLE\_SCRIPTING
|
||||
} [ s:format '#define_%s s:format s:put nl ] a:for-each nl
|
||||
~~~
|
||||
|
||||
Then extract and generate the single file source.
|
||||
|
||||
~~~
|
||||
{{
|
||||
:include-file
|
||||
#10 + s:chop 'vm/nga-c/ s:prepend here swap file:slurp here s:put ;
|
||||
|
||||
:source:line
|
||||
dup '#include_" s:begins-with?
|
||||
[ include-file ] [ s:put nl ] choose ;
|
||||
|
||||
---reveal---
|
||||
|
||||
:amalgamate
|
||||
'vm/nga-c/retro.c [ source:line ] file:for-each-line ;
|
||||
}}
|
||||
|
||||
amalgamate
|
||||
~~~
|
Loading…
Reference in a new issue