summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2013-01-21 11:48:28 +0800
committerDaniel Bovensiepen <[email protected]>2013-01-21 11:48:28 +0800
commit8721f891298a9753c96514401de70c81be755c74 (patch)
tree0427f92c6146734842b031e4e7d04f8e6cf25f9f
parentcf8e978447be434064d7b3a3e8f32899f6c7ed9c (diff)
downloadmruby-8721f891298a9753c96514401de70c81be755c74.tar.gz
mruby-8721f891298a9753c96514401de70c81be755c74.zip
Add diagram for new build process
-rw-r--r--doc/compile/README.md64
1 files changed, 48 insertions, 16 deletions
diff --git a/doc/compile/README.md b/doc/compile/README.md
index 055ca719e..fb1b73cfb 100644
--- a/doc/compile/README.md
+++ b/doc/compile/README.md
@@ -10,7 +10,7 @@ To compile mruby out of the source code you need the following tools:
* Linker (i.e. ```gcc```)
* Archive utility (i.e. ```ar```)
* Parser generator (i.e. ```bison```)
-* Ruby 1.8 or 1.9
+* Ruby 1.8 or 1.9 (i.e. ```ruby``` or ```jruby```)
Optional:
* GIT (to update mruby source and integrate mrbgems easier)
@@ -29,21 +29,25 @@ MRuby::Build.new do |conf|
end
```
-All tools necessary to compile mruby can be set or modified here.
+All tools necessary to compile mruby can be set or modified here. In case
+you want to maintain an additional *build_config.rb* you can define a
+customized path using the *$MRUBY_CONFIG* environment variable.
To compile just call ```./minirake``` inside of the mruby source root. To
-generate the test tool environment call ```./minirake test```. To clean
+generate and execute the test tools call ```./minirake test```. To clean
all build files call ```./minirake clean```.
## Build Configuration
-The following options can be configurated:
+Inside of the *build_config.rb* the following options can be configurated
+based on your environment.
### Toolchains
-A template for a specific toolchain setting:
+The mruby build system contains already a set of toolchain templates which
+configurates the build environment for specific compiler infrastructures.
-### GCC
+#### GCC
Toolchain configuration for the GNU C Compiler.
@@ -51,15 +55,16 @@ Toolchain configuration for the GNU C Compiler.
toolchain :gcc
```
-### clang
+#### clang
-Toolchain configuration based on GCC using the LLVM C Compiler clang.
+Toolchain configuration for the LLVM C Compiler clang. Mainly equal to the
+GCC toolchain.
```
toolchain :clang
```
-### Visual Studio 2012
+#### Visual Studio 2012
Toolchain configuration for Visual Studio 2012 on Windows.
@@ -69,18 +74,21 @@ toolchain :vs2012
### Binaries
-Which tools should be compiled?
+It is possible to select which tools should be compiled during the compilation
+process. The following tools can be selected:
* mrbc (mruby compiler)
* mruby (mruby interpreter)
* mirb (mruby interactive shell
+To select all define an array in ```conf.bins```:
```
conf.bins = %(mrbc mruby mirb)
```
### File Separator
-Which file separator is used?
+Some environments require a different file separator character. It is possible to
+set the character via ```conf.file_separator```.
```
conf.file_separator = '/'
@@ -174,13 +182,13 @@ end
conf.gem 'path/to/another/gem'
```
-### Cross-Compilation
+## Cross-Compilation
mruby can also be cross-compiled from one platform to another. To
achive this the *build_config.rb* needs to contain an instance of
```MRuby::CrossBuild```. This instance defines the compilation
tools and flags for the target platform. An example could look
-like this for example:
+like this:
```
MRuby::CrossBuild.new('32bit') do |conf|
@@ -191,12 +199,13 @@ MRuby::CrossBuild.new('32bit') do |conf|
end
```
-You can configurate the same options as for a normal build. You can specified your own build_config.rb with *$MRUBY_CONFIG*.
+All configuration options of ```MRuby::Build``` can also be used
+in ```MRuby::CrossBuild```.
## Build process
-During the build process the directory *build* will be created. The
-directory structure will look like this:
+During the build process the directory *build* will be created in the
+root directory. The structure of this directory will look like this:
```
+- build
@@ -240,6 +249,11 @@ link with *build/host/lib/libmruby.a*
* create ```build/host/bin/mirb``` by compile *tools/mirb/mirb.c* and
link with *build/host/lib/libmruby.a*
+ _____ _____ ______ ____ ____ _____ _____ ____
+| CC |->|GEN |->|AR |->|CC |->|CC |->|AR |->|CC |->|CC |
+| *.c | |y.tab| |core.a| |mrbc| |*.rb| |lib.a| |mruby| |mirb|
+ ----- ----- ------ ---- ---- ----- ----- ----
+
### Cross-Compilation
In case of a cross-compilation to *i386* the *build* directory structure looks
@@ -312,6 +326,24 @@ link with *build/i386/lib/libmruby.a*
* create ```build/i386/bin/mrbc``` by cross-compile *tools/mrbc/mrbc.c* and
link with *build/i386/lib/libmruby_core.a*
+ _____________________________________________________________
+| Native Compilation for Host System |
+| _____ ______ _____ ____ ____ _____ |
+|| CC | -> |AR | -> |GEN | -> |CC | -> |CC | -> |AR ||
+|| *.c | |core.a| |y.tab| |mrbc| |*.rb| |lib.a||
+| ----- ------ ----- ---- ---- ----- |
+ -------------------------------------------------------------
+ ||
+ \||/
+ \/
+ ______________________________________________________________
+| Cross Compilation for Target System |
+| _____ _____ _____ ____ ______ _____ |
+|| CC | -> |AR | -> |CC | -> |CC | -> |AR | -> |CC ||
+|| *.c | |lib.a| |mruby| |mirb| |core.a| |mrbc ||
+| ----- ----- ----- ---- ------ ----- |
+ --------------------------------------------------------------
+
## Test Environment
mruby's build process includes a test environment. In case you start the testing