path: root/legacy/embryo/
diff options
authorCarsten Haitzler <>2005-03-22 13:10:09 +0000
committerCarsten Haitzler <>2005-03-22 13:10:09 +0000
commit1da201a83679a025ec3eadfc22e5c386db25de0e (patch)
tree86e77f542c5d99ea3b06cf43ad875c82f067498f /legacy/embryo/
parent912b42dfe7dd33b2b5648ed78e1a017e1a8dff9b (diff)
autopackage up embryo
SVN revision: 13851
Diffstat (limited to 'legacy/embryo/')
1 files changed, 98 insertions, 0 deletions
diff --git a/legacy/embryo/ b/legacy/embryo/
new file mode 100644
index 0000000000..87ae605779
--- /dev/null
+++ b/legacy/embryo/
@@ -0,0 +1,98 @@
1Embryo @VERSION@
3WARNING: gcc compatibility!!!
4There seems to be some bug (or disagreement) between embryo and gcc 3.2.x
5where IEEE floating point format encoding does not "agree" with embryo's own
6hand-made tests. embryo_cc may not work if you compile using gcc 3.2.x. gcc
73.3.x is known to work fine. we are not 100% sure whose fault this is yet, so
8we won't be jumping up and down, but be warned - gcc 3.2.x does not agree
9with embryo.
11To view the API docs, run ./gendoc and view doc/html/index.html.
13OK a lot of people ask this. What is Embryo?
15Embryo is primarily a shared library that gives you an API to load and control
16interpreted programs compiled into an abstract machine bytecode that it
17understands. This abstract (or virtual) machine is similar to a real machine
18with a CPU, but it is emulated in software. The architecture is simple and is
19the same as the abstract machine (AMX) in the
20<a href=>SMALL</a> language as it is based
21on exactly the same code. Embryo has modified the code for the AMX extensively
22and has made it smaller and more portable. It is VERY small. The total size
23of the virtual machine code AND header files is less than 2500 lines of code.
24It includes the floating point library support by default as well. This makes
25it one of the smallest interpreters around, and thus makes is very
26efficient to use in code.
28Embryo also uses the SMALL compiler from the same code base. This code has
29barely been touched and so suffers from lots of portability issues. It has
30been partially fixed and now works on both big and little endian but the code
31still need to be gone over and really cleaned up . It does work, but it's only
32just working. It has been called embryo_cc and compiled a subset of SMALL
33binary outputs. It does not support packed strings, variable alignment, or
34debugging output. It does not support many features of the full SMALL
35compiler because the Embryo AMX does not support these either. You will find
36the Embryo codebase to work much better on Linux (and BSD and MacOS X) and
37other UNIX operating systems as it has been developed and tested on them. IT
38is known to work on:
39 gcc Linux (x86-32)
40 gcc Linux (PPC)
41 gcc MacOS X (PPC)
43And will likely work on more combinations. IT currently has problems on 64bit
44SPARC CPUs. Other 64bit systems are untested. It is the aim to fix the code
45so it works on all commonly used architectures (32, 64bit, big and little
46endian, alignment forgiving/unforgiving). So far 64bit support is the major
49For more documentation please see the Language guide here:
51<a href=>Small Language Booklet</a>
53This documents the SMALL language and is 100% relevant for Embryo and the
54syntax of files it can compile (.sma files).
56Any help is appreciated in helping clean and port this code, so feel free to
57send patches to the Enlightenment development lists.
59The main aim of Embryo is to provide an easy to use library for running
60compiled SMALL programs and giving them access to the calling program and
61any API it exports to the SMALL script. SMALL programs/scripts are completely
62sand-boxed. They cannot access any system or function calls other than the
63ones provided by the calling application to the Embryo API. This means a
64SMALL script cannot open or write to, delete or load files. It is fairly
65harmless and this also keeps Embryo small.
67This is a work in progress, so please be patient if things don't work for you
68- and patches and help in fixing it is very much appreciated.
73 ./configure
74 make
75(as root unless youa re installing in your users directories):
76 make install
81RPM: To build rpm packages:
83 sudo rpm -ta @PACKAGE@-@VERSION@.tar.gz
85You will find rpm packages in your system /usr/src/redhat/* dirs (note you may
86not need to use sudo or root if you have your own ~/.rpmrc. see rpm documents
87for more details)
89DEB: To build deb packages:
91 tar zvf @PACKAGE@-@VERSION@.tar.gz
93 dpkg-buildpackage -us -uc -rfakeroot
94 cd ..
95 rm -rf @PACKAGE@-@VERSION@
97You will find all the debian source, binary etc. packages put in the directory
98where you first untarred the source tarball.