diff options
| author | Daniel Bovensiepen <[email protected]> | 2013-01-27 22:00:22 +0800 |
|---|---|---|
| committer | Daniel Bovensiepen <[email protected]> | 2013-01-27 22:00:22 +0800 |
| commit | b24d869ab40d17f1387d9e8ffbec1ac57b606972 (patch) | |
| tree | 08a857790179779276d14a7a605c174333f2ea7c /doc/compile | |
| parent | 437aa216fc9a96d8d4898ff51c0c218670c8b807 (diff) | |
| download | mruby-b24d869ab40d17f1387d9e8ffbec1ac57b606972.tar.gz mruby-b24d869ab40d17f1387d9e8ffbec1ac57b606972.zip | |
Modify code blocks
Diffstat (limited to 'doc/compile')
| -rw-r--r-- | doc/compile/README.md | 314 |
1 files changed, 140 insertions, 174 deletions
diff --git a/doc/compile/README.md b/doc/compile/README.md index ec995bd74..81d0431c2 100644 --- a/doc/compile/README.md +++ b/doc/compile/README.md @@ -23,11 +23,9 @@ Inside of the root directory of the mruby source exist a file called *build_config.rb*. This file contains the build configuration of mruby and looks like this for example: -``` -MRuby::Build.new do |conf| - toolchain :gcc -end -``` + MRuby::Build.new do |conf| + toolchain :gcc + end 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 @@ -51,26 +49,20 @@ configurates the build environment for specific compiler infrastructures. Toolchain configuration for the GNU C Compiler. -``` -toolchain :gcc -``` + toolchain :gcc #### clang Toolchain configuration for the LLVM C Compiler clang. Mainly equal to the GCC toolchain. -``` -toolchain :clang -``` + toolchain :clang #### Visual Studio 2012 Toolchain configuration for Visual Studio 2012 on Windows. -``` -toolchain :vs2012 -``` + toolchain :vs2012 ### Binaries @@ -81,108 +73,92 @@ process. The following tools can be selected: * mirb (mruby interactive shell To select all define an array in ```conf.bins```: -``` -conf.bins = %(mrbc mruby mirb) -``` + + conf.bins = %(mrbc mruby mirb) ### File Separator Some environments require a different file separator character. It is possible to set the character via ```conf.file_separator```. -``` -conf.file_separator = '/' -``` + conf.file_separator = '/' ### C Compiler Configuration of the C compiler binary, flags and include paths. -``` -conf.cc do |cc| - cc.command = ... - cc.flags = ... - cc.include_paths = ... - cc.defines = ... - cc.option_include_path = ... - cc.option_define = ... - cc.compile_options = ... -end -``` + conf.cc do |cc| + cc.command = ... + cc.flags = ... + cc.include_paths = ... + cc.defines = ... + cc.option_include_path = ... + cc.option_define = ... + cc.compile_options = ... + end ### Linker Configuration of the Linker binary, flags and library paths. -``` -conf.linker do |linker| - linker.command = ... - linker.flags = ... - linker.flags_before_libraries = ... - linker.libraries = ... - linker.flags_after_libraries = ... - linker.library_paths = .... - linker.option_library = ... - linker.option_library_path = ... - linker.link_options = ... -end -``` + conf.linker do |linker| + linker.command = ... + linker.flags = ... + linker.flags_before_libraries = ... + linker.libraries = ... + linker.flags_after_libraries = ... + linker.library_paths = .... + linker.option_library = ... + linker.option_library_path = ... + linker.link_options = ... + end ### Archiver Configuration of the Archiver binary and flags. -``` -conf.archiver do |archiver| - archiver.command = ... - archiver.archive_options = ... -end -``` + conf.archiver do |archiver| + archiver.command = ... + archiver.archive_options = ... + end ### Parser Generator Configuration of the Parser Generator binary and flags. -``` -conf.yacc do |yacc| - yacc.command = ... - yacc.compile_options = ... -end -``` + conf.yacc do |yacc| + yacc.command = ... + yacc.compile_options = ... + end ### GPerf Configuration of the GPerf binary and flags. -``` -conf.gperf do |gperf| - gperf.command = ... - gperf.compile_options = ... -end -``` + + conf.gperf do |gperf| + gperf.command = ... + gperf.compile_options = ... + end ### File Extensions -``` -conf.exts do |exts - exts.object = ... - exts.executable = ... - exts.library = ... -end -``` + conf.exts do |exts + exts.object = ... + exts.executable = ... + exts.library = ... + end ### Mrbgems Integrate GEMs in the build process. -``` -# Integrate GEM with additional configuration -conf.gem 'path/to/gem' do |g| - g.cc.flags << ... -end + # Integrate GEM with additional configuration + conf.gem 'path/to/gem' do |g| + g.cc.flags << ... + end -# Integrate GEM without additional configuration -conf.gem 'path/to/another/gem' -``` + # Integrate GEM without additional configuration + conf.gem 'path/to/another/gem' ## Cross-Compilation @@ -192,14 +168,12 @@ achive this the *build_config.rb* needs to contain an instance of tools and flags for the target platform. An example could look like this: -``` -MRuby::CrossBuild.new('32bit') do |conf| - toolchain :gcc + MRuby::CrossBuild.new('32bit') do |conf| + toolchain :gcc - conf.cc.flags << "-m32" - conf.linker.flags << "-m32 -end -``` + conf.cc.flags << "-m32" + conf.linker.flags << "-m32 + end All configuration options of ```MRuby::Build``` can also be used in ```MRuby::CrossBuild```. @@ -209,29 +183,27 @@ in ```MRuby::CrossBuild```. During the build process the directory *build* will be created in the root directory. The structure of this directory will look like this: -``` -+- build - | - +- host - | - +- bin <- Binaries (mirb, mrbc and mruby) - | - +- lib <- Libraries (libmruby.a and libmruby_core.a) - | - +- mrblib - | - +- src - | - +- test <- mrbtest tool - | - +- tools - | - +- mirb - | - +- mrbc - | - +- mruby -``` + +- build + | + +- host + | + +- bin <- Binaries (mirb, mrbc and mruby) + | + +- lib <- Libraries (libmruby.a and libmruby_core.a) + | + +- mrblib + | + +- src + | + +- test <- mrbtest tool + | + +- tools + | + +- mirb + | + +- mrbc + | + +- mruby The compilation workflow will look like this: * compile all files under *src* (object files will be stored @@ -251,60 +223,56 @@ 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| - ----- ----- ------ ---- ---- ----- ----- ---- -``` + _____ _____ ______ ____ ____ _____ _____ ____ + | 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 like this: -``` -+- build - | - +- host - | | - | +- bin <- Native Binaries - | | - | +- lib <- Native Libraries - | | - | +- mrblib - | | - | +- src - | | - | +- test <- Native mrbtest tool - | | - | +- tools - | | - | +- mirb - | | - | +- mrbc - | | - | +- mruby - +- i386 - | - +- bin <- Cross-compiled Binaries - | - +- lib <- Cross-compiled Libraries - | - +- mrblib - | - +- src - | - +- test <- Cross-compiled mrbtest tool - | - +- tools - | - +- mirb - | - +- mrbc - | - +- mruby -``` + +- build + | + +- host + | | + | +- bin <- Native Binaries + | | + | +- lib <- Native Libraries + | | + | +- mrblib + | | + | +- src + | | + | +- test <- Native mrbtest tool + | | + | +- tools + | | + | +- mirb + | | + | +- mrbc + | | + | +- mruby + +- i386 + | + +- bin <- Cross-compiled Binaries + | + +- lib <- Cross-compiled Libraries + | + +- mrblib + | + +- src + | + +- test <- Cross-compiled mrbtest tool + | + +- tools + | + +- mirb + | + +- mrbc + | + +- mruby An extra directory is created for the target platform. In case you compile for *i386* a directory called *i386* is created under the @@ -330,25 +298,23 @@ 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 || -| ----- ----- ----- ---- ------ ----- | - -------------------------------------------------------------- -``` + _____________________________________________________________ + | 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 |
