daedalus-core 0.5.0 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/daedalus.rb +40 -0
- data/lib/daedalus/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb568ae793d1465fd93871cf7405e53735bfd723
|
4
|
+
data.tar.gz: ad15e9874523e393217a35c8930dd08cd054ccc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f34910a0c15c910753c42a095d57363f8ada6ff57fb1cb7fed6b2af2c4152aebccd35441a7d017617069aab6051a917c495f84d90d178c085e53dc19deb1865
|
7
|
+
data.tar.gz: 347ce6b97068a06020e5b269efd6e0c2bf10dff68346c1a78ece1ecd114d7145a3275f1a5f2d3cc28d3343917adac8fecfcfadebd0890bb77d61369821fb61de
|
data/lib/daedalus.rb
CHANGED
@@ -473,6 +473,46 @@ module Daedalus
|
|
473
473
|
end
|
474
474
|
end
|
475
475
|
|
476
|
+
class InstructionSourceFile < SourceFile
|
477
|
+
def ll_compile(ctx, source, object)
|
478
|
+
ctx.log.show "LL", source
|
479
|
+
ctx.log.command "#{ctx.cxx} -S -emit-llvm #{ctx.cflags.join(" ")} #{ctx.cxxflags.join(" ")} -c -o #{object} #{source}"
|
480
|
+
|
481
|
+
re = %r[tail call i64 %\d+\(%"class.rubinius::State"\*( nonnull)? %state, %"struct.rubinius::CallFrame"*( nonnull)? %call_frame, i64\* %opcodes\)]
|
482
|
+
|
483
|
+
lines = File.readlines object
|
484
|
+
lines.each do |line|
|
485
|
+
if re =~ line
|
486
|
+
line.sub!(/tail call/, "musttail call")
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
File.open object, "w" do |insn_file|
|
491
|
+
lines.each { |line| insn_file.print line }
|
492
|
+
end
|
493
|
+
end
|
494
|
+
|
495
|
+
def cxx_compile(ctx, source, object)
|
496
|
+
ctx.log.show "CXX", source
|
497
|
+
|
498
|
+
flags = (ctx.cflags + ctx.cxxflags).join(" ").gsub(/-I[^ ]*/, "")
|
499
|
+
ctx.log.command "#{ctx.cxx} #{flags} -c -o #{object} #{source}"
|
500
|
+
end
|
501
|
+
|
502
|
+
def build(ctx)
|
503
|
+
ctx.log.inc!
|
504
|
+
|
505
|
+
@data[:sha1] = sha1(ctx)
|
506
|
+
|
507
|
+
ll_path = path.sub(/cpp$/, "ll")
|
508
|
+
|
509
|
+
ll_compile ctx, path, ll_path
|
510
|
+
cxx_compile ctx, ll_path, object_path
|
511
|
+
|
512
|
+
save!
|
513
|
+
end
|
514
|
+
end
|
515
|
+
|
476
516
|
class ExternalLibrary
|
477
517
|
def initialize(path)
|
478
518
|
@path = path
|
data/lib/daedalus/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daedalus-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: '1.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Shirai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - "~>"
|
17
18
|
- !ruby/object:Gem::Version
|
18
19
|
version: '0.9'
|
19
|
-
|
20
|
+
type: :development
|
20
21
|
prerelease: false
|
21
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
23
|
requirements:
|
23
24
|
- - "~>"
|
24
25
|
- !ruby/object:Gem::Version
|
25
26
|
version: '0.9'
|
26
|
-
type: :development
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '2.8'
|
33
|
-
|
34
|
+
type: :development
|
34
35
|
prerelease: false
|
35
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
37
|
requirements:
|
37
38
|
- - "~>"
|
38
39
|
- !ruby/object:Gem::Version
|
39
40
|
version: '2.8'
|
40
|
-
type: :development
|
41
41
|
description: |
|
42
42
|
Daedalus is a build system based on years of attempting to build Rubinus with a collection of Rake tasks. Rubinius is a complex system. It has dependencies on external C libraries (some of which are vendored), internal C/C++ libraries, Ruby C-extensions, and compiled Ruby code. The Rubinius bytecode compiler is written in Ruby, so we have to bootstrap compiling it.
|
43
43
|
|
@@ -82,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
84
|
rubyforge_project:
|
85
|
-
rubygems_version: 2.
|
85
|
+
rubygems_version: 2.5.1
|
86
86
|
signing_key:
|
87
87
|
specification_version: 4
|
88
88
|
summary: Daedalus is a build system extracted from Rubinius. Almost no functionality
|