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