Commit 0e529c22 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #1229 from bovi/dependencies_requirements

First strik on GEM Dependencies
parents 0323adc8 d8ce46fe
......@@ -98,19 +98,50 @@ The mrbgems build process will use this specification to compile Object and Ruby
files. The compilation results will be add to *lib/libmruby.a*. This file is used
by tools like `mruby` and `mirb` to empower the GEM functionality.
The following properties can be set inside of your `MRuby::Gem::Specification` for
information purpose:
* `spec.license` or `spec.licenses` (A single license or a list of them under which this GEM is licensed)
* `spec.author` or `spec.authors` (Developer name or a list of them)
* `spec.version` (Current version)
* `spec.description` (Detailed description)
* `spec.summary` (Short summary)
* `spec.homepage` (Homepage)
* `spec.requirements` (External requirements as information for user)
It is required for every GEM to have a license and an author!
In case your GEM is depending on other GEMs please use
`spec.add_dependency(gem, *requirements)` like:
MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec|
spec.license = 'MIT'
spec.authors = 'mruby developers'
# add GEM dependency mruby-parser.
# Version has to be between 1.0.0 and 1.5.2
spec.add_dependency('mruby-parser', '> 1.0.0', '< 1.5.2')
end
The usage of versions is optional.
__ATTENTION:__
The dependency system is currently (May 2013) under development and doesn't check
or resolve dependencies!
In case your GEM has more complex build requirements you can use
the following options additionally inside of your GEM specification:
* spec.cflags (C compiler flags for this GEM)
* spec.mruby_cflags (global C compiler flags for everything)
* spec.mruby_ldflags (global linker flags for everything)
* spec.mruby_libs (global libraries for everything)
* spec.mruby_includes (global includes for everything)
* spec.rbfiles (Ruby files to compile)
* spec.objs (Object files to compile)
* spec.test_rbfiles (Ruby test files for integration into mrbtest)
* spec.test_objs (Object test files for integration into mrbtest)
* spec.test_preload (Initialization files for mrbtest)
* `spec.cflags` (C compiler flags)
* `spec.mruby_cflags` (global C compiler flags for everything)
* `spec.mruby_ldflags` (global linker flags for everything)
* `spec.mruby_libs` (global libraries for everything)
* `spec.mruby_includes` (global includes for everything)
* `spec.rbfiles` (Ruby files to compile)
* `spec.objs` (Object files to compile)
* `spec.test_rbfiles` (Ruby test files for integration into mrbtest)
* `spec.test_objs` (Object test files for integration into mrbtest)
* `spec.test_preload` (Initialization files for mrbtest)
## C Extension
......
......@@ -30,6 +30,9 @@ module MRuby
attr_accessor :bins
attr_accessor :requirements
attr_reader :dependencies
attr_block MRuby::Build::COMMANDS
def initialize(name, &block)
......@@ -63,6 +66,9 @@ module MRuby
@bins = []
@requirements = []
@dependencies = []
instance_eval(&@initializer)
if !name || !licenses || !authors
......@@ -80,6 +86,12 @@ module MRuby
define_gem_init_builder
end
def add_dependency(name, *requirements)
requirements = ['> 0.0.0'] if requirements.empty?
requirements.flatten!
@dependencies << [:gem => name, :requirements => requirements]
end
def self.bin=(bin)
@bins = [bin].flatten
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment