ruby-yasm 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/ruby.yml +30 -0
- data/.gitignore +5 -3
- data/ChangeLog.md +8 -1
- data/Gemfile +16 -0
- data/LICENSE.txt +1 -1
- data/README.md +49 -26
- data/Rakefile +6 -32
- data/gemspec.yml +3 -5
- data/lib/yasm/command.rb +272 -0
- data/lib/yasm/program.rb +30 -26
- data/lib/yasm/version.rb +1 -1
- data/lib/yasm.rb +1 -0
- data/ruby-yasm.gemspec +38 -85
- data/spec/command_spec.rb +91 -0
- data/spec/program_spec.rb +89 -10
- data/spec/spec_helper.rb +2 -3
- data/spec/yasm_spec.rb +1 -1
- metadata +31 -71
- data/lib/yasm/task.rb +0 -153
- data/spec/task_spec.rb +0 -70
data/ruby-yasm.gemspec
CHANGED
@@ -1,105 +1,58 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'yaml'
|
4
2
|
|
5
|
-
Gem::Specification.new do |
|
6
|
-
|
7
|
-
lib_dir = File.join(root,'lib')
|
8
|
-
files = `git ls-files`.split($/)
|
9
|
-
|
10
|
-
filter_files = lambda { |paths|
|
11
|
-
files & case paths
|
12
|
-
when Array
|
13
|
-
paths
|
14
|
-
when String
|
15
|
-
Dir[paths]
|
16
|
-
end
|
17
|
-
}
|
18
|
-
|
19
|
-
version = {
|
20
|
-
:file => 'yasm/version',
|
21
|
-
:constant => 'YASM::VERSION'
|
22
|
-
}
|
23
|
-
|
24
|
-
defaults = {
|
25
|
-
'name' => File.basename(root),
|
26
|
-
'files' => files,
|
27
|
-
'require_paths' => ['ext', 'lib'].select { |dir| File.directory?(dir) },
|
28
|
-
'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
|
29
|
-
'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
|
30
|
-
'doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
|
31
|
-
'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}']
|
32
|
-
}
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gemspec = YAML.load_file('gemspec.yml')
|
33
5
|
|
34
|
-
|
6
|
+
gem.name = gemspec.fetch('name')
|
7
|
+
gem.version = gemspec.fetch('version') do
|
8
|
+
lib_dir = File.join(File.dirname(__FILE__),'lib')
|
9
|
+
$LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
|
35
10
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
else
|
40
|
-
$LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
|
11
|
+
require 'yasm/version'
|
12
|
+
YASM::VERSION
|
13
|
+
end
|
41
14
|
|
42
|
-
|
43
|
-
|
44
|
-
|
15
|
+
gem.summary = gemspec['summary']
|
16
|
+
gem.description = gemspec['description']
|
17
|
+
gem.licenses = Array(gemspec['license'])
|
18
|
+
gem.authors = Array(gemspec['authors'])
|
19
|
+
gem.email = gemspec['email']
|
20
|
+
gem.homepage = gemspec['homepage']
|
21
|
+
gem.metadata = gemspec['metadata'] if gemspec['metadata']
|
45
22
|
|
46
|
-
|
47
|
-
gemspec.description = metadata.fetch('description',metadata['summary'])
|
23
|
+
glob = lambda { |patterns| gem.files & Dir[*patterns] }
|
48
24
|
|
49
|
-
|
50
|
-
|
25
|
+
gem.files = if gemspec['files'] then glob[gemspec['files']]
|
26
|
+
else `git ls-files`.split($/)
|
27
|
+
end
|
51
28
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
gemspec.require_paths = Array(metadata['require_paths'])
|
56
|
-
gemspec.files = filter_files[metadata['files']]
|
57
|
-
gemspec.files += Array(metadata['generated_files'])
|
58
|
-
gemspec.executables = metadata['executables']
|
59
|
-
gemspec.extensions = metadata['extensions']
|
60
|
-
|
61
|
-
if Gem::VERSION < '1.7.'
|
62
|
-
gemspec.default_executable = gemspec.executables.first
|
29
|
+
gem.executables = gemspec.fetch('executables') do
|
30
|
+
glob['bin/*'].map { |path| File.basename(path) }
|
63
31
|
end
|
64
32
|
|
65
|
-
|
66
|
-
|
33
|
+
gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
|
34
|
+
gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
|
67
35
|
|
68
|
-
|
69
|
-
|
36
|
+
gem.require_paths = Array(gemspec.fetch('require_paths') {
|
37
|
+
%w[ext lib].select { |dir| File.directory?(dir) }
|
38
|
+
})
|
70
39
|
|
71
|
-
|
72
|
-
|
73
|
-
|
40
|
+
gem.requirements = gemspec['requirements']
|
41
|
+
gem.required_ruby_version = gemspec['required_ruby_version']
|
42
|
+
gem.required_rubygems_version = gemspec['required_rubygems_version']
|
43
|
+
gem.post_install_message = gemspec['post_install_message']
|
74
44
|
|
75
|
-
|
76
|
-
gemspec.required_rubygems_version = metadata['required_ruby_version']
|
77
|
-
end
|
78
|
-
|
79
|
-
parse_versions = lambda { |versions|
|
80
|
-
case versions
|
81
|
-
when Array
|
82
|
-
versions.map { |v| v.to_s }
|
83
|
-
when String
|
84
|
-
versions.split(/,\s*/)
|
85
|
-
end
|
86
|
-
}
|
87
|
-
|
88
|
-
if metadata['dependencies']
|
89
|
-
metadata['dependencies'].each do |name,versions|
|
90
|
-
gemspec.add_dependency(name,parse_versions[versions])
|
91
|
-
end
|
92
|
-
end
|
45
|
+
split = lambda { |string| string.split(/,\s*/) }
|
93
46
|
|
94
|
-
if
|
95
|
-
|
96
|
-
|
47
|
+
if gemspec['dependencies']
|
48
|
+
gemspec['dependencies'].each do |name,versions|
|
49
|
+
gem.add_dependency(name,split[versions])
|
97
50
|
end
|
98
51
|
end
|
99
52
|
|
100
|
-
if
|
101
|
-
|
102
|
-
|
53
|
+
if gemspec['development_dependencies']
|
54
|
+
gemspec['development_dependencies'].each do |name,versions|
|
55
|
+
gem.add_development_dependency(name,split[versions])
|
103
56
|
end
|
104
57
|
end
|
105
58
|
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'helpers/files'
|
3
|
+
|
4
|
+
require 'yasm/command'
|
5
|
+
require 'tempfile'
|
6
|
+
|
7
|
+
describe YASM::Command do
|
8
|
+
include Helpers::Files
|
9
|
+
|
10
|
+
describe ".run" do
|
11
|
+
subject { described_class }
|
12
|
+
|
13
|
+
it "should be able to assemble a file" do
|
14
|
+
file = Tempfile.new('yasm').path
|
15
|
+
|
16
|
+
subject.run do |yasm|
|
17
|
+
yasm.target = :x86
|
18
|
+
yasm.syntax = :gas
|
19
|
+
yasm.file = assembly_file('gas')
|
20
|
+
yasm.output = file
|
21
|
+
end
|
22
|
+
|
23
|
+
expect(File.size(file)).to be > 0
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#target" do
|
28
|
+
context "when no target has been set" do
|
29
|
+
it "must return nil" do
|
30
|
+
expect(subject.target).to be(nil)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when the target has been set to :x86" do
|
35
|
+
before { subject.target = :x86 }
|
36
|
+
|
37
|
+
it "must return :x86" do
|
38
|
+
expect(subject.target).to eq(:x86)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when #arch is :x86 and #machine is :x86" do
|
43
|
+
before do
|
44
|
+
subject.arch = :x86
|
45
|
+
subject.machine = :x86
|
46
|
+
end
|
47
|
+
|
48
|
+
it "must return :x86" do
|
49
|
+
expect(subject.target).to eq(:x86)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "when the target has been set to :amd64" do
|
54
|
+
before { subject.target = :amd64}
|
55
|
+
|
56
|
+
it "must return :amd64" do
|
57
|
+
expect(subject.target).to eq(:amd64)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "when #arch is :x86 and #machine is :amd64" do
|
62
|
+
before do
|
63
|
+
subject.arch = :x86
|
64
|
+
subject.machine = :amd64
|
65
|
+
end
|
66
|
+
|
67
|
+
it "must return :amd64" do
|
68
|
+
expect(subject.target).to eq(:amd64)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when the target has been set to :lc3b" do
|
73
|
+
before { subject.target = :lc3b}
|
74
|
+
|
75
|
+
it "must return :lc3b" do
|
76
|
+
expect(subject.target).to eq(:lc3b)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "when #arch is :lc3b and #machine is :lc3b" do
|
81
|
+
before do
|
82
|
+
subject.arch = :lc3b
|
83
|
+
subject.machine = :lc3b
|
84
|
+
end
|
85
|
+
|
86
|
+
it "must return :lc3b" do
|
87
|
+
expect(subject.target).to eq(:lc3b)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
data/spec/program_spec.rb
CHANGED
@@ -4,22 +4,101 @@ require 'helpers/files'
|
|
4
4
|
require 'yasm/program'
|
5
5
|
require 'tempfile'
|
6
6
|
|
7
|
-
describe Program do
|
7
|
+
describe YASM::Program do
|
8
8
|
include Helpers::Files
|
9
9
|
|
10
|
-
|
10
|
+
describe ".assemble" do
|
11
|
+
subject { described_class }
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
it "should be able to assemble a file" do
|
14
|
+
file = Tempfile.new('yasm').path
|
14
15
|
|
15
|
-
|
16
|
-
|
16
|
+
subject.assemble do |yasm|
|
17
|
+
yasm.target! :x86
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
yasm.syntax = :gas
|
20
|
+
yasm.file = assembly_file('gas')
|
21
|
+
yasm.output = file
|
22
|
+
end
|
23
|
+
|
24
|
+
expect(File.size(file)).to be > 0
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#assemble" do
|
29
|
+
it "should be able to assemble a file" do
|
30
|
+
file = Tempfile.new('yasm').path
|
31
|
+
|
32
|
+
subject.assemble do |yasm|
|
33
|
+
yasm.target! :x86
|
34
|
+
|
35
|
+
yasm.syntax = :gas
|
36
|
+
yasm.file = assembly_file('gas')
|
37
|
+
yasm.output = file
|
38
|
+
end
|
39
|
+
|
40
|
+
expect(File.size(file)).to be > 0
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#initialize" do
|
45
|
+
subject { described_class.new(target: :amd64) }
|
46
|
+
|
47
|
+
it "should support a :target option" do
|
48
|
+
expect(subject.arch).to eq(:x86)
|
49
|
+
expect(subject.machine).to eq(:amd64)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#target!" do
|
54
|
+
it "should return true for valid targets" do
|
55
|
+
expect(subject.target!(:amd64)).to be(true)
|
21
56
|
end
|
22
57
|
|
23
|
-
|
58
|
+
context "when given an unknown target name" do
|
59
|
+
let(:name) { :lol }
|
60
|
+
|
61
|
+
it "should raise ArgumentError when passed unknown targets" do
|
62
|
+
expect {
|
63
|
+
subject.target!(name)
|
64
|
+
}.to raise_error(ArgumentError,"unknown YASM target: #{name.inspect}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context "when given :x86" do
|
69
|
+
before { subject.target!(:x86) }
|
70
|
+
|
71
|
+
it "should set the #arch value" do
|
72
|
+
expect(subject.arch).to eq(:x86)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should set the #machine value" do
|
76
|
+
expect(subject.machine).to eq(:x86)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "when given :amd64" do
|
81
|
+
before { subject.target!(:amd64) }
|
82
|
+
|
83
|
+
it "should set the #arch value" do
|
84
|
+
expect(subject.arch).to eq(:x86)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should set the #machine value" do
|
88
|
+
expect(subject.machine).to eq(:amd64)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "when given :lc3b" do
|
93
|
+
before { subject.target!(:lc3b) }
|
94
|
+
|
95
|
+
it "should set the #arch value" do
|
96
|
+
expect(subject.arch).to eq(:lc3b)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should set the #machine value" do
|
100
|
+
expect(subject.machine).to eq(:lc3b)
|
101
|
+
end
|
102
|
+
end
|
24
103
|
end
|
25
104
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/yasm_spec.rb
CHANGED
metadata
CHANGED
@@ -1,80 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-yasm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Postmodern
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2022-01-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: command_mapper
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0.3'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0.3'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rubygems-tasks
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
17
|
+
- - "~>"
|
36
18
|
- !ruby/object:Gem::Version
|
37
19
|
version: '0.1'
|
38
|
-
type: :
|
20
|
+
type: :runtime
|
39
21
|
prerelease: false
|
40
22
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
23
|
requirements:
|
43
|
-
- - ~>
|
24
|
+
- - "~>"
|
44
25
|
- !ruby/object:Gem::Version
|
45
26
|
version: '0.1'
|
46
27
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
28
|
+
name: bundler
|
48
29
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
30
|
requirements:
|
51
|
-
- - ~>
|
31
|
+
- - "~>"
|
52
32
|
- !ruby/object:Gem::Version
|
53
|
-
version: '2.
|
33
|
+
version: '2.0'
|
54
34
|
type: :development
|
55
35
|
prerelease: false
|
56
36
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
37
|
requirements:
|
59
|
-
- - ~>
|
38
|
+
- - "~>"
|
60
39
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: yard
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0.7'
|
70
|
-
type: :development
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0.7'
|
40
|
+
version: '2.0'
|
78
41
|
description: ruby-yasm provides a Ruby interface to YASM assembler.
|
79
42
|
email: postmodern.mod3@gmail.com
|
80
43
|
executables: []
|
@@ -84,55 +47,52 @@ extra_rdoc_files:
|
|
84
47
|
- LICENSE.txt
|
85
48
|
- README.md
|
86
49
|
files:
|
87
|
-
- .document
|
88
|
-
- .gemtest
|
89
|
-
- .
|
90
|
-
- .
|
91
|
-
- .
|
92
|
-
- .
|
50
|
+
- ".document"
|
51
|
+
- ".gemtest"
|
52
|
+
- ".github/workflows/ruby.yml"
|
53
|
+
- ".gitignore"
|
54
|
+
- ".rspec"
|
55
|
+
- ".specopts"
|
56
|
+
- ".yardopts"
|
93
57
|
- ChangeLog.md
|
58
|
+
- Gemfile
|
94
59
|
- LICENSE.txt
|
95
60
|
- README.md
|
96
61
|
- Rakefile
|
97
62
|
- gemspec.yml
|
98
63
|
- lib/yasm.rb
|
64
|
+
- lib/yasm/command.rb
|
99
65
|
- lib/yasm/program.rb
|
100
|
-
- lib/yasm/task.rb
|
101
66
|
- lib/yasm/version.rb
|
102
67
|
- ruby-yasm.gemspec
|
68
|
+
- spec/command_spec.rb
|
103
69
|
- spec/helpers/files.rb
|
104
70
|
- spec/helpers/files/gas.S
|
105
71
|
- spec/program_spec.rb
|
106
72
|
- spec/spec_helper.rb
|
107
|
-
- spec/task_spec.rb
|
108
73
|
- spec/yasm_spec.rb
|
109
|
-
homepage: https://github.com/
|
74
|
+
homepage: https://github.com/postmodern/ruby-yasm#readme
|
110
75
|
licenses:
|
111
76
|
- MIT
|
112
|
-
|
77
|
+
metadata: {}
|
78
|
+
post_install_message:
|
113
79
|
rdoc_options: []
|
114
80
|
require_paths:
|
115
81
|
- lib
|
116
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
83
|
requirements:
|
119
|
-
- -
|
84
|
+
- - ">="
|
120
85
|
- !ruby/object:Gem::Version
|
121
86
|
version: '0'
|
122
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
88
|
requirements:
|
125
|
-
- -
|
89
|
+
- - ">="
|
126
90
|
- !ruby/object:Gem::Version
|
127
91
|
version: '0'
|
128
92
|
requirements:
|
129
93
|
- yasm >= 0.6.0
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
specification_version: 3
|
94
|
+
rubygems_version: 3.2.22
|
95
|
+
signing_key:
|
96
|
+
specification_version: 4
|
134
97
|
summary: A Ruby interface to YASM.
|
135
|
-
test_files:
|
136
|
-
- spec/program_spec.rb
|
137
|
-
- spec/task_spec.rb
|
138
|
-
- spec/yasm_spec.rb
|
98
|
+
test_files: []
|
data/lib/yasm/task.rb
DELETED
@@ -1,153 +0,0 @@
|
|
1
|
-
require 'rprogram/task'
|
2
|
-
|
3
|
-
module YASM
|
4
|
-
#
|
5
|
-
# ## YASM options:
|
6
|
-
#
|
7
|
-
# * `--version` - `yasm.version`
|
8
|
-
# * `--license` - `yasm.license`
|
9
|
-
# * `--help` - `yasm.help`
|
10
|
-
#
|
11
|
-
# * `--arch` - `yasm.arch`
|
12
|
-
# * `--parser` - `yasm.parser`
|
13
|
-
# * `--preproc` - `yasm.preprocessor`
|
14
|
-
# * `--oformat` - `yasm.output_format`
|
15
|
-
# * `--dformat` - `yasm.debug_format`
|
16
|
-
# * `--lformat` - `yasm.list_format`
|
17
|
-
#
|
18
|
-
# * `--list` - `yasm.list_file`
|
19
|
-
# * `--objfile` - `yasm.output`
|
20
|
-
# * `--mapfile` - `yasm.map_file`
|
21
|
-
#
|
22
|
-
# * `--machine` - `yasm.machine`
|
23
|
-
# * `--force-strict` - `yasm.force_strict`
|
24
|
-
# * `-w` - `yasm.inhibit_warnings`
|
25
|
-
# * `-W` - `yasm.toggle_warnings`
|
26
|
-
# * `-M` - `yasm.gen_makefile_deps`
|
27
|
-
# * `-E` - `yasm.redirect_errors_to`
|
28
|
-
# * `-e` - `yasm.redirect_errors`
|
29
|
-
# * `--preproc-only` - `yasm.preprocessor_only`
|
30
|
-
# * `-I` - `yasm.include`
|
31
|
-
# * `-P` - `yasm.pre_include`
|
32
|
-
# * `-D` - `yasm.define`
|
33
|
-
# * `-U` - `yasm.undefine`
|
34
|
-
# * `-X` - `yasm.message_style`
|
35
|
-
# * `--prefix` - `yasm.prefix`
|
36
|
-
# * `--suffix` - `yasm.suffix`
|
37
|
-
#
|
38
|
-
# * `file` - `yasm.file`
|
39
|
-
#
|
40
|
-
class Task < RProgram::Task
|
41
|
-
|
42
|
-
# The known YASM targets
|
43
|
-
TARGETS = {
|
44
|
-
:x86 => {:arch => :x86, :machine => :x86},
|
45
|
-
:amd64 => {:arch => :x86, :machine => :amd64},
|
46
|
-
:lc3b => {:arch => :lc3b, :machine => :lc3b}
|
47
|
-
}
|
48
|
-
|
49
|
-
long_option :flag => '--version'
|
50
|
-
long_option :flag => '--license'
|
51
|
-
long_option :flag => '--help'
|
52
|
-
|
53
|
-
long_option :flag => '--arch', :equals => true
|
54
|
-
long_option :flag => '--parser', :equals => true
|
55
|
-
long_option :flag => '--preproc',
|
56
|
-
:equals => true,
|
57
|
-
:name => :preprocessor
|
58
|
-
long_option :flag => '--oformat',
|
59
|
-
:equals => true,
|
60
|
-
:name => :output_format
|
61
|
-
long_option :flag => '--dformat',
|
62
|
-
:equals => true,
|
63
|
-
:name => :debug_format
|
64
|
-
long_option :flag => '--lformat',
|
65
|
-
:equals => true,
|
66
|
-
:name => :list_format
|
67
|
-
|
68
|
-
long_option :flag => '--list',
|
69
|
-
:equals => true,
|
70
|
-
:name => :list_file
|
71
|
-
long_option :flag => '--objfile',
|
72
|
-
:equals => true,
|
73
|
-
:name => :output
|
74
|
-
long_option :flag => '--mapfile',
|
75
|
-
:equals => true,
|
76
|
-
:name => :map_file
|
77
|
-
|
78
|
-
long_option :flag => '--machine', :equals => true
|
79
|
-
long_option :flag => '--force-strict'
|
80
|
-
short_option :flag => '-w', :name => :inhibit_warnings
|
81
|
-
short_option :flag => '-W', :name => :toggle_warnings
|
82
|
-
short_option :flag => '-M', :name => :gen_makefile_deps
|
83
|
-
short_option :flag => '-E', :name => :redirect_errors_to
|
84
|
-
short_option :flag => '-s', :name => :redirect_errors
|
85
|
-
long_option :flag => '--preproc-only', :name => :preprocessor_only
|
86
|
-
short_option :flag => '-I', :name => :include, :multiple => true
|
87
|
-
short_option :flag => '-P', :name => :pre_include, :multiple => true
|
88
|
-
short_option :flag => '-D', :name => :define, :multiple => true
|
89
|
-
short_option :flag => '-U', :name => :undefine, :multiple => true
|
90
|
-
short_option :flag => '-X', :name => :message_style
|
91
|
-
long_option :flag => '--prefix'
|
92
|
-
long_option :flag => '--suffix'
|
93
|
-
|
94
|
-
non_option :tailing => true, :name => :file
|
95
|
-
|
96
|
-
#
|
97
|
-
# Creates a new Task object.
|
98
|
-
#
|
99
|
-
# @param [Hash{Symbol => Object}] options
|
100
|
-
# Additional options for the task.
|
101
|
-
#
|
102
|
-
# @option options [String, Symbol] :target
|
103
|
-
# The arch/machine to target.
|
104
|
-
#
|
105
|
-
# @yield [task]
|
106
|
-
# If a block is given, it will be passed the newly created task
|
107
|
-
# object.
|
108
|
-
#
|
109
|
-
# @yieldparam [Task] task
|
110
|
-
# The new task object.
|
111
|
-
#
|
112
|
-
# @see Task#target!
|
113
|
-
#
|
114
|
-
def initialize(options={},&block)
|
115
|
-
target = options.delete(:target)
|
116
|
-
|
117
|
-
super(options,&block)
|
118
|
-
|
119
|
-
target!(target) if target
|
120
|
-
end
|
121
|
-
|
122
|
-
#
|
123
|
-
# Sets the YASM `arch` and `machine`.
|
124
|
-
#
|
125
|
-
# @param [String, Symbol] name
|
126
|
-
# The target name.
|
127
|
-
#
|
128
|
-
# @raise [ArgumentError]
|
129
|
-
# The specified target is unknown.
|
130
|
-
#
|
131
|
-
# @return [true]
|
132
|
-
# The YASM `arch` and `machine` options were set successfully.
|
133
|
-
#
|
134
|
-
# @example
|
135
|
-
# yasm.target! :amd64
|
136
|
-
#
|
137
|
-
def target!(name)
|
138
|
-
target = TARGETS[name.to_sym]
|
139
|
-
|
140
|
-
unless target
|
141
|
-
raise(ArgumentError,"unknown YASM target #{name.inspect}")
|
142
|
-
end
|
143
|
-
|
144
|
-
self.arch = target[:arch]
|
145
|
-
self.machine = target[:machine]
|
146
|
-
return true
|
147
|
-
end
|
148
|
-
|
149
|
-
alias syntax parser
|
150
|
-
alias syntax= parser=
|
151
|
-
|
152
|
-
end
|
153
|
-
end
|