comet-build 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +59 -0
- data/.rspec +1 -0
- data/.rubocop.yml +14 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +58 -0
- data/LICENSE +9 -0
- data/README.md +311 -0
- data/Rakefile +1 -0
- data/bin/comet +30 -0
- data/comet-build.gemspec +26 -0
- data/lib/comet/dsl/bin_output.rb +19 -0
- data/lib/comet/dsl/c/source.rb +57 -0
- data/lib/comet/dsl/cpp/source.rb +57 -0
- data/lib/comet/dsl/elf_output.rb +19 -0
- data/lib/comet/dsl/firmware.rb +65 -0
- data/lib/comet/dsl/hardware.rb +56 -0
- data/lib/comet/dsl/helpers.rb +9 -0
- data/lib/comet/dsl/hex_output.rb +19 -0
- data/lib/comet/dsl/include_walker.rb +42 -0
- data/lib/comet/dsl/library.rb +21 -0
- data/lib/comet/dsl/linker.rb +45 -0
- data/lib/comet/dsl/map_output.rb +19 -0
- data/lib/comet/dsl/native/source.rb +44 -0
- data/lib/comet/dsl/options.rb +44 -0
- data/lib/comet/dsl/software.rb +42 -0
- data/lib/comet/dsl/source.rb +24 -0
- data/lib/comet/dsl/target.rb +64 -0
- data/lib/comet/makefile.rb +129 -0
- data/lib/comet/parser.rb +114 -0
- data/lib/comet/rules/alias.rb +29 -0
- data/lib/comet/rules/build.rb +118 -0
- data/lib/comet/rules/clean.rb +29 -0
- data/lib/comet/rules/codegen.rb +51 -0
- data/lib/comet/rules/compile.rb +72 -0
- data/lib/comet/rules/error.rb +33 -0
- data/lib/comet/rules/link.rb +74 -0
- data/lib/comet/rules/merge.rb +37 -0
- data/lib/comet/rules/objcopy.rb +41 -0
- data/lib/comet/rules/tmpdir.rb +39 -0
- data/lib/comet/version.rb +3 -0
- data/lib/comet.rb +76 -0
- data/spec/comet/complex_c_program/Makefile +57 -0
- data/spec/comet/complex_c_program/comet.rb +43 -0
- data/spec/comet/complex_c_program/include/public_api.h +2 -0
- data/spec/comet/complex_c_program/src/common.h +3 -0
- data/spec/comet/complex_c_program/src/library.h +2 -0
- data/spec/comet/complex_c_program/src/main.c +6 -0
- data/spec/comet/complex_c_program/src/module_a/impl.c +1 -0
- data/spec/comet/complex_c_program/src/module_a/impl.h +1 -0
- data/spec/comet/complex_c_program/src/module_b/impl.c +1 -0
- data/spec/comet/complex_c_program/src/module_b/impl.h +1 -0
- data/spec/comet/empty_build_file/Makefile +10 -0
- data/spec/comet/empty_build_file/comet.rb +0 -0
- data/spec/comet/empty_build_file/folder/.keep +0 -0
- data/spec/comet/generator_spec.rb +67 -0
- data/spec/comet/nested_circular_reference/Makefile +5 -0
- data/spec/comet/nested_circular_reference/comet.rb +8 -0
- data/spec/comet/no_build_file/Makefile +5 -0
- data/spec/comet/self_referential/Makefile +5 -0
- data/spec/comet/self_referential/comet.rb +5 -0
- data/spec/comet/simple_c_program/Makefile +30 -0
- data/spec/comet/simple_c_program/comet.rb +15 -0
- data/spec/comet/simple_c_program/main.c +5 -0
- data/spec/comet/simple_c_program/stuff.h +0 -0
- metadata +215 -0
data/lib/comet.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'require_all'
|
2
|
+
|
3
|
+
require_rel '.'
|
4
|
+
|
5
|
+
module Comet
|
6
|
+
TMPDIR = '.comet'.freeze
|
7
|
+
|
8
|
+
class Generator
|
9
|
+
def initialize(filename)
|
10
|
+
@filename = filename
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :filename
|
14
|
+
|
15
|
+
def build_file
|
16
|
+
@build_file ||= find_build_file File.expand_path('.')
|
17
|
+
end
|
18
|
+
|
19
|
+
def makefile
|
20
|
+
@makefile ||= create_makefile
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def parser
|
26
|
+
@parser ||= Parser.new build_file
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_makefile
|
30
|
+
makefile = Makefile.new
|
31
|
+
raise "no build file '#{filename}' found" if build_file.nil?
|
32
|
+
Dir.chdir File.dirname(build_file)
|
33
|
+
makefile.alias 'all', make_rules(makefile)
|
34
|
+
makefile.clean
|
35
|
+
makefile
|
36
|
+
rescue => ex
|
37
|
+
makefile.error ex.message
|
38
|
+
makefile
|
39
|
+
end
|
40
|
+
|
41
|
+
# TODO: implement this for Windows
|
42
|
+
|
43
|
+
def filesystem_of(path)
|
44
|
+
`stat -f -c '%i' "#{path}"`
|
45
|
+
end
|
46
|
+
|
47
|
+
def same_filesystem?(path1, path2)
|
48
|
+
filesystem_of(path1) == filesystem_of(path2)
|
49
|
+
end
|
50
|
+
|
51
|
+
def find_build_file(path)
|
52
|
+
return File.join(path, filename) if File.exist? File.join(path, filename)
|
53
|
+
|
54
|
+
parent = File.expand_path '..', path
|
55
|
+
return nil unless same_filesystem? path, parent
|
56
|
+
return nil if parent == '/'
|
57
|
+
|
58
|
+
find_build_file parent
|
59
|
+
end
|
60
|
+
|
61
|
+
def make_rules(makefile)
|
62
|
+
firmwares = Hash.new { |h, k| h[k] = [] }
|
63
|
+
|
64
|
+
parser.targets.map do |firmware, device|
|
65
|
+
firmwares[firmware].push makefile.build(firmware, device)
|
66
|
+
makefile.alias "#{firmware.name}/#{device}", [
|
67
|
+
firmwares[firmware].last
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
firmwares.map do |firmware, devices|
|
72
|
+
makefile.alias firmware.name, devices
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
COMET_LN ?= ln
|
2
|
+
COMET_CP ?= cp
|
3
|
+
COMET_LD ?= clang
|
4
|
+
COMET_OPT ?= clang
|
5
|
+
COMET_LINK ?= llvm-link
|
6
|
+
COMET_CC ?= clang
|
7
|
+
COMET_OBJCOPY ?= objcopy
|
8
|
+
COMET_RM ?= rm
|
9
|
+
.PHONY: all
|
10
|
+
all: test
|
11
|
+
.PHONY: test
|
12
|
+
test: .comet/8ef077f0cd5aaff49b65.phony .comet/b318cee1620386b56865.phony
|
13
|
+
.PHONY: test/linux_x64
|
14
|
+
test/linux_x64: .comet/b318cee1620386b56865.phony
|
15
|
+
.PHONY: test/linux_x86
|
16
|
+
test/linux_x86: .comet/8ef077f0cd5aaff49b65.phony
|
17
|
+
.PHONY: .comet
|
18
|
+
.comet:
|
19
|
+
if [ ! -d "$@" ] || [ ! -d "`readlink .comet`" ]; then $(COMET_LN) -sf `mktemp -d` $@; fi
|
20
|
+
.PHONY: .comet/8ef077f0cd5aaff49b65.phony
|
21
|
+
.comet/8ef077f0cd5aaff49b65.phony: .comet/6e9e95f81d33c9c56999.elf .comet/6801b5b5df17e4f2ddd2.bin
|
22
|
+
$(COMET_CP) .comet/6e9e95f81d33c9c56999.elf bin/test_linux_x86.elf
|
23
|
+
$(COMET_CP) .comet/6801b5b5df17e4f2ddd2.bin bin/test_linux_x64.bin
|
24
|
+
$(COMET_CP) .comet/6e9e95f81d33c9c56999.map bin/test_linux_x86.map
|
25
|
+
.comet/6e9e95f81d33c9c56999.elf: .comet/72011646c080021a2ca1.s | .comet
|
26
|
+
$(COMET_LD) --target=x86-unknown-linux-gnu -march=skylake -mcpu=skylake -Wl,-Map=.comet/6e9e95f81d33c9c56999.map -o $@ $^
|
27
|
+
.comet/72011646c080021a2ca1.s: .comet/39a50271e7c848a47a93.ll | .comet
|
28
|
+
$(COMET_OPT) -S -Ofast --target=x86-unknown-linux-gnu -march=skylake -mcpu=skylake -o $@ $<
|
29
|
+
.comet/39a50271e7c848a47a93.ll: .comet/4d2501c8d4d8a11d7131.ll .comet/4ea3c3da23201dcbd4a2.ll .comet/00757f6e0a0b4ff24514.ll | .comet
|
30
|
+
$(COMET_LINK) -S -o $@ $^
|
31
|
+
.comet/4d2501c8d4d8a11d7131.ll: src/module_a/impl.c src/module_a/impl.h src/common.h include/public_api.h | .comet
|
32
|
+
$(COMET_CC) -x c --target=x86-unknown-linux-gnu -march=skylake -mcpu=skylake -S -flto -Isrc-Iinclude -DFOO=BAR -std=c89 -o $@ -c $<
|
33
|
+
.comet/4ea3c3da23201dcbd4a2.ll: src/module_b/impl.c src/module_b/impl.h src/common.h include/public_api.h | .comet
|
34
|
+
$(COMET_CC) -x c --target=x86-unknown-linux-gnu -march=skylake -mcpu=skylake -S -flto -Isrc-Iinclude -DFOO=BAZ -std=c89 -o $@ -c $<
|
35
|
+
.comet/00757f6e0a0b4ff24514.ll: src/main.c src/common.h src/library.h src/module_a/impl.h src/module_b/impl.h include/public_api.h | .comet
|
36
|
+
$(COMET_CC) -x c --target=x86-unknown-linux-gnu -march=skylake -mcpu=skylake -S -flto -Isrc-Iinclude -std=c89 -o $@ -c $<
|
37
|
+
.comet/6801b5b5df17e4f2ddd2.bin: .comet/6e9e95f81d33c9c56999.elf | .comet
|
38
|
+
(command -v x86-unknown-linux-gnu-$(COMET_OBJCOPY) > /dev/null) && x86-unknown-linux-gnu-$(COMET_OBJCOPY) -O binary $< $@ || $(COMET_OBJCOPY) -O binary $< $@
|
39
|
+
.PHONY: .comet/b318cee1620386b56865.phony
|
40
|
+
.comet/b318cee1620386b56865.phony: .comet/719f853cbed7abc8fd85.elf
|
41
|
+
$(COMET_CP) .comet/719f853cbed7abc8fd85.elf bin/test_linux_x64.elf
|
42
|
+
$(COMET_CP) .comet/719f853cbed7abc8fd85.map bin/test_linux_x64.map
|
43
|
+
.comet/719f853cbed7abc8fd85.elf: .comet/3b044e603b145f4fbc04.s | .comet
|
44
|
+
$(COMET_LD) --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -Wl,-Map=.comet/719f853cbed7abc8fd85.map -o $@ $^
|
45
|
+
.comet/3b044e603b145f4fbc04.s: .comet/e10c49538753263f5465.ll | .comet
|
46
|
+
$(COMET_OPT) -S -O3 --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -o $@ $<
|
47
|
+
.comet/e10c49538753263f5465.ll: .comet/8a80b3d251d0ac59da27.ll .comet/416611e4ce7c48c0779d.ll .comet/7f0db3e959b1e7eb61e9.ll | .comet
|
48
|
+
$(COMET_LINK) -S -o $@ $^
|
49
|
+
.comet/8a80b3d251d0ac59da27.ll: src/module_a/impl.c src/module_a/impl.h src/common.h include/public_api.h | .comet
|
50
|
+
$(COMET_CC) -x c --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -S -flto -Isrc-Iinclude -DFOO=BAR -std=c89 -o $@ -c $<
|
51
|
+
.comet/416611e4ce7c48c0779d.ll: src/module_b/impl.c src/module_b/impl.h src/common.h include/public_api.h | .comet
|
52
|
+
$(COMET_CC) -x c --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -S -flto -Isrc-Iinclude -DFOO=BAZ -std=c89 -o $@ -c $<
|
53
|
+
.comet/7f0db3e959b1e7eb61e9.ll: src/main.c src/common.h src/library.h src/module_a/impl.h src/module_b/impl.h include/public_api.h | .comet
|
54
|
+
$(COMET_CC) -x c --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -S -flto -Isrc-Iinclude -std=c89 -o $@ -c $<
|
55
|
+
.PHONY: clean
|
56
|
+
clean:
|
57
|
+
$(COMET_RM) -rf .comet
|
@@ -0,0 +1,43 @@
|
|
1
|
+
software 'module_a', depends: ['default'] do
|
2
|
+
source language: :c, headers: ['src', 'include'] do
|
3
|
+
import 'src/module_a/**/*.c'
|
4
|
+
define :FOO => 'BAR'
|
5
|
+
option :std => 'c89'
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
software 'module_b', depends: ['default'] do
|
10
|
+
source language: :c, headers: ['src', 'include'] do
|
11
|
+
import 'src/module_b/**/*.c'
|
12
|
+
define :FOO => 'BAZ'
|
13
|
+
option :std => 'c89'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
software 'main', depends: ['module_a', 'module_b'] do
|
18
|
+
source language: :c, headers: ['src', 'include'] do
|
19
|
+
import 'src/main.c'
|
20
|
+
option :std => 'c89'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
hardware 'default', targets: :linux_x86 do
|
25
|
+
linker 'x86-unknown-linux-gnu', isa: 'skylake', cpu: 'skylake', opt: :fast
|
26
|
+
end
|
27
|
+
|
28
|
+
hardware 'default', targets: :linux_x64 do
|
29
|
+
linker 'x86_64-unknown-linux-gnu', isa: 'skylake', cpu: 'skylake', opt: 3
|
30
|
+
end
|
31
|
+
|
32
|
+
firmware 'test', imports: ['main'] do
|
33
|
+
target :linux_x86 do
|
34
|
+
elf 'bin/test_linux_x86.elf'
|
35
|
+
bin 'bin/test_linux_x64.bin'
|
36
|
+
map 'bin/test_linux_x86.map'
|
37
|
+
end
|
38
|
+
|
39
|
+
target :linux_x64 do
|
40
|
+
elf 'bin/test_linux_x64.elf'
|
41
|
+
map 'bin/test_linux_x64.map'
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
#include "module_a/impl.h"
|
@@ -0,0 +1 @@
|
|
1
|
+
#include "common.h"
|
@@ -0,0 +1 @@
|
|
1
|
+
#include "module_b/impl.h"
|
@@ -0,0 +1 @@
|
|
1
|
+
#include "common.h"
|
File without changes
|
File without changes
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'comet'
|
3
|
+
|
4
|
+
class TestCase
|
5
|
+
def initialize(rootpath,
|
6
|
+
makefile: 'Makefile',
|
7
|
+
workpath: '.',
|
8
|
+
location: 'comet.rb',
|
9
|
+
filename: 'comet.rb')
|
10
|
+
@rootpath = File.join __dir__, rootpath
|
11
|
+
@makefile = File.join @rootpath, makefile
|
12
|
+
@workpath = File.join @rootpath, workpath
|
13
|
+
@location = File.join @rootpath, location
|
14
|
+
@filename = filename
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :makefile
|
18
|
+
attr_reader :workpath
|
19
|
+
attr_reader :location
|
20
|
+
attr_reader :filename
|
21
|
+
|
22
|
+
def summary
|
23
|
+
rootpath = Pathname.new(@rootpath)
|
24
|
+
testname = rootpath.relative_path_from(Pathname.new(__dir__))
|
25
|
+
makefile = Pathname.new(@makefile).relative_path_from rootpath
|
26
|
+
location = Pathname.new(@location).relative_path_from rootpath
|
27
|
+
workpath = Pathname.new(@workpath).relative_path_from rootpath
|
28
|
+
"#{testname}/#{workpath} :: #{location} => #{makefile}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
TESTS = [
|
33
|
+
TestCase.new('empty_build_file'),
|
34
|
+
TestCase.new('simple_c_program'),
|
35
|
+
TestCase.new('no_build_file'),
|
36
|
+
TestCase.new('self_referential'),
|
37
|
+
TestCase.new('nested_circular_reference'),
|
38
|
+
TestCase.new('empty_build_file', workpath: 'folder'),
|
39
|
+
TestCase.new('complex_c_program'),
|
40
|
+
TestCase.new('complex_c_program', workpath: 'src'),
|
41
|
+
TestCase.new('complex_c_program', workpath: 'src/module_a')
|
42
|
+
].freeze
|
43
|
+
|
44
|
+
describe Comet::Generator do
|
45
|
+
TESTS.each do |test|
|
46
|
+
context test.summary do
|
47
|
+
subject(:generator) { described_class.new test.filename }
|
48
|
+
|
49
|
+
before { Dir.chdir test.workpath }
|
50
|
+
|
51
|
+
it 'generates the expected makefile' do
|
52
|
+
contents = File.read test.makefile # just compare
|
53
|
+
expect(generator.makefile.contents).to eq(contents)
|
54
|
+
end
|
55
|
+
|
56
|
+
if File.exist? test.location
|
57
|
+
it 'locates the expected build file' do
|
58
|
+
expect(generator.build_file).to eq(test.location)
|
59
|
+
end
|
60
|
+
else
|
61
|
+
it 'detects no build file exists' do
|
62
|
+
expect(generator.build_file).to be_nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
COMET_LN ?= ln
|
2
|
+
COMET_CP ?= cp
|
3
|
+
COMET_LD ?= clang
|
4
|
+
COMET_OPT ?= clang
|
5
|
+
COMET_LINK ?= llvm-link
|
6
|
+
COMET_CC ?= clang
|
7
|
+
COMET_RM ?= rm
|
8
|
+
.PHONY: all
|
9
|
+
all: main
|
10
|
+
.PHONY: main
|
11
|
+
main: .comet/fb5bd0bc5bbbcfb8d75d.phony
|
12
|
+
.PHONY: main/linux_x64
|
13
|
+
main/linux_x64: .comet/fb5bd0bc5bbbcfb8d75d.phony
|
14
|
+
.PHONY: .comet
|
15
|
+
.comet:
|
16
|
+
if [ ! -d "$@" ] || [ ! -d "`readlink .comet`" ]; then $(COMET_LN) -sf `mktemp -d` $@; fi
|
17
|
+
.PHONY: .comet/fb5bd0bc5bbbcfb8d75d.phony
|
18
|
+
.comet/fb5bd0bc5bbbcfb8d75d.phony: .comet/6a16a16dcf71bbd81420.elf
|
19
|
+
$(COMET_CP) .comet/6a16a16dcf71bbd81420.elf main
|
20
|
+
.comet/6a16a16dcf71bbd81420.elf: .comet/6da374969db200830aba.s | .comet
|
21
|
+
$(COMET_LD) --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -Wl,-Map=.comet/6a16a16dcf71bbd81420.map -o $@ $^
|
22
|
+
.comet/6da374969db200830aba.s: .comet/d00df735d73ec90af321.ll | .comet
|
23
|
+
$(COMET_OPT) -S -O1 --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -o $@ $<
|
24
|
+
.comet/d00df735d73ec90af321.ll: .comet/15a47430b29cc4417a92.ll | .comet
|
25
|
+
$(COMET_LINK) -S -o $@ $^
|
26
|
+
.comet/15a47430b29cc4417a92.ll: main.c ./stuff.h | .comet
|
27
|
+
$(COMET_CC) -x c --target=x86_64-unknown-linux-gnu -march=skylake -mcpu=skylake -S -flto -I. -o $@ -c $<
|
28
|
+
.PHONY: clean
|
29
|
+
clean:
|
30
|
+
$(COMET_RM) -rf .comet
|
@@ -0,0 +1,15 @@
|
|
1
|
+
software 'main', depends: ['linux-x64'] do
|
2
|
+
source language: :c, headers: ['.'] do
|
3
|
+
import 'main.c'
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
hardware 'linux-x64', targets: :linux_x64 do
|
8
|
+
linker 'x86_64-unknown-linux-gnu', isa: 'skylake', cpu: 'skylake', opt: 1
|
9
|
+
end
|
10
|
+
|
11
|
+
firmware 'main', imports: ['main'] do
|
12
|
+
target :linux_x64 do
|
13
|
+
elf 'main'
|
14
|
+
end
|
15
|
+
end
|
File without changes
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: comet-build
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Thomas Beneteau
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-08-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '12.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '12.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop-rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: require_all
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: slop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: The no-nonsense build tool for embedded software
|
98
|
+
email:
|
99
|
+
- thomas@bitwise.me
|
100
|
+
executables:
|
101
|
+
- comet
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rspec"
|
107
|
+
- ".rubocop.yml"
|
108
|
+
- Gemfile
|
109
|
+
- Gemfile.lock
|
110
|
+
- LICENSE
|
111
|
+
- README.md
|
112
|
+
- Rakefile
|
113
|
+
- bin/comet
|
114
|
+
- comet-build.gemspec
|
115
|
+
- lib/comet.rb
|
116
|
+
- lib/comet/dsl/bin_output.rb
|
117
|
+
- lib/comet/dsl/c/source.rb
|
118
|
+
- lib/comet/dsl/cpp/source.rb
|
119
|
+
- lib/comet/dsl/elf_output.rb
|
120
|
+
- lib/comet/dsl/firmware.rb
|
121
|
+
- lib/comet/dsl/hardware.rb
|
122
|
+
- lib/comet/dsl/helpers.rb
|
123
|
+
- lib/comet/dsl/hex_output.rb
|
124
|
+
- lib/comet/dsl/include_walker.rb
|
125
|
+
- lib/comet/dsl/library.rb
|
126
|
+
- lib/comet/dsl/linker.rb
|
127
|
+
- lib/comet/dsl/map_output.rb
|
128
|
+
- lib/comet/dsl/native/source.rb
|
129
|
+
- lib/comet/dsl/options.rb
|
130
|
+
- lib/comet/dsl/software.rb
|
131
|
+
- lib/comet/dsl/source.rb
|
132
|
+
- lib/comet/dsl/target.rb
|
133
|
+
- lib/comet/makefile.rb
|
134
|
+
- lib/comet/parser.rb
|
135
|
+
- lib/comet/rules/alias.rb
|
136
|
+
- lib/comet/rules/build.rb
|
137
|
+
- lib/comet/rules/clean.rb
|
138
|
+
- lib/comet/rules/codegen.rb
|
139
|
+
- lib/comet/rules/compile.rb
|
140
|
+
- lib/comet/rules/error.rb
|
141
|
+
- lib/comet/rules/link.rb
|
142
|
+
- lib/comet/rules/merge.rb
|
143
|
+
- lib/comet/rules/objcopy.rb
|
144
|
+
- lib/comet/rules/tmpdir.rb
|
145
|
+
- lib/comet/version.rb
|
146
|
+
- spec/comet/complex_c_program/Makefile
|
147
|
+
- spec/comet/complex_c_program/comet.rb
|
148
|
+
- spec/comet/complex_c_program/include/public_api.h
|
149
|
+
- spec/comet/complex_c_program/src/common.h
|
150
|
+
- spec/comet/complex_c_program/src/library.h
|
151
|
+
- spec/comet/complex_c_program/src/main.c
|
152
|
+
- spec/comet/complex_c_program/src/module_a/impl.c
|
153
|
+
- spec/comet/complex_c_program/src/module_a/impl.h
|
154
|
+
- spec/comet/complex_c_program/src/module_b/impl.c
|
155
|
+
- spec/comet/complex_c_program/src/module_b/impl.h
|
156
|
+
- spec/comet/empty_build_file/Makefile
|
157
|
+
- spec/comet/empty_build_file/comet.rb
|
158
|
+
- spec/comet/empty_build_file/folder/.keep
|
159
|
+
- spec/comet/generator_spec.rb
|
160
|
+
- spec/comet/nested_circular_reference/Makefile
|
161
|
+
- spec/comet/nested_circular_reference/comet.rb
|
162
|
+
- spec/comet/no_build_file/Makefile
|
163
|
+
- spec/comet/self_referential/Makefile
|
164
|
+
- spec/comet/self_referential/comet.rb
|
165
|
+
- spec/comet/simple_c_program/Makefile
|
166
|
+
- spec/comet/simple_c_program/comet.rb
|
167
|
+
- spec/comet/simple_c_program/main.c
|
168
|
+
- spec/comet/simple_c_program/stuff.h
|
169
|
+
homepage: https://github.com/TomCrypto/Comet
|
170
|
+
licenses: []
|
171
|
+
metadata: {}
|
172
|
+
post_install_message:
|
173
|
+
rdoc_options: []
|
174
|
+
require_paths:
|
175
|
+
- lib
|
176
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
requirements: []
|
187
|
+
rubyforge_project:
|
188
|
+
rubygems_version: 2.6.11
|
189
|
+
signing_key:
|
190
|
+
specification_version: 4
|
191
|
+
summary: Comet is a fast and simple LLVM-oriented build tool
|
192
|
+
test_files:
|
193
|
+
- spec/comet/complex_c_program/Makefile
|
194
|
+
- spec/comet/complex_c_program/comet.rb
|
195
|
+
- spec/comet/complex_c_program/include/public_api.h
|
196
|
+
- spec/comet/complex_c_program/src/common.h
|
197
|
+
- spec/comet/complex_c_program/src/library.h
|
198
|
+
- spec/comet/complex_c_program/src/main.c
|
199
|
+
- spec/comet/complex_c_program/src/module_a/impl.c
|
200
|
+
- spec/comet/complex_c_program/src/module_a/impl.h
|
201
|
+
- spec/comet/complex_c_program/src/module_b/impl.c
|
202
|
+
- spec/comet/complex_c_program/src/module_b/impl.h
|
203
|
+
- spec/comet/empty_build_file/Makefile
|
204
|
+
- spec/comet/empty_build_file/comet.rb
|
205
|
+
- spec/comet/empty_build_file/folder/.keep
|
206
|
+
- spec/comet/generator_spec.rb
|
207
|
+
- spec/comet/nested_circular_reference/Makefile
|
208
|
+
- spec/comet/nested_circular_reference/comet.rb
|
209
|
+
- spec/comet/no_build_file/Makefile
|
210
|
+
- spec/comet/self_referential/Makefile
|
211
|
+
- spec/comet/self_referential/comet.rb
|
212
|
+
- spec/comet/simple_c_program/Makefile
|
213
|
+
- spec/comet/simple_c_program/comet.rb
|
214
|
+
- spec/comet/simple_c_program/main.c
|
215
|
+
- spec/comet/simple_c_program/stuff.h
|