summaryrefslogtreecommitdiffhomepage
path: root/src/mruby_core.rake
blob: 44d62c1e959cb10fbe15a5359f6d15e2d5a8d9bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
MRuby.each_target do
  dir = File.dirname(__FILE__).relative_path_from(root)

  lex_def = "#{dir}/lex.def"
  objs = Dir.glob("src/*.{c}").map { |f| objfile(f.pathmap("#{build_dir}/%X")) } + [objfile("#{build_dir}/#{dir}/y.tab")]
  self.libmruby << objs

  file libfile("#{build_dir}/lib/libmruby_core") => objs do |t|
    archiver.run t.name, t.prerequisites
  end

  # Parser
  file "#{build_dir}/#{dir}/y.tab.c" => ["#{dir}/parse.y"] do |t|
    yacc.run t.name, t.prerequisites.first
  end

  file objfile("#{build_dir}/#{dir}/y.tab") => ["#{build_dir}/#{dir}/y.tab.c", lex_def] do |t|
    cc.run t.name, t.prerequisites.first, [], [dir]
  end

  # Lexical analyzer
  file lex_def => "#{dir}/keywords" do |t|
    gperf.run t.name, t.prerequisites.first
  end
end