destination 0.0.1 → 0.0.2
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 +4 -4
- data/.gitignore +4 -0
- data/README.md +2 -2
- data/dest.gemspec +1 -0
- data/lib/dest.rb +2 -0
- data/lib/dest/project/base.rb +13 -8
- data/lib/dest/rake.rb +36 -11
- data/lib/dest/version.rb +1 -1
- data/test/project/Rakefile +2 -0
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9172790a783af746bd3b9860a06d304fd9252065
|
4
|
+
data.tar.gz: 174dbf1b3d5a570745e8f4e91b6beb611dd509a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18f7315f37c901dd4b12b4862570f9a4c20bb4708b5f405842a633e1234025a4b5aee8df94be173215e760871c11d1c641f80da2d1fccf3bb4d99dd680dafb73
|
7
|
+
data.tar.gz: f2dd718c9e7e7de7f52bb3372002c9302bc62e9dd279382984ac26f033992ec1d9acd2073aac521a805199c0741a54c1e0c354cf40665aef27867d138dd56ff2
|
data/.gitignore
ADDED
data/README.md
CHANGED
@@ -6,9 +6,9 @@ Thing is, though, Obj-C and Clang *don't actually need Xcode*. Destination (shor
|
|
6
6
|
|
7
7
|
### Getting started
|
8
8
|
|
9
|
-
```
|
9
|
+
```bash
|
10
10
|
# Clone the repo
|
11
|
-
|
11
|
+
git clone https://github.com/dirk/dest.git
|
12
12
|
# Go into the test project directory
|
13
13
|
cd test/project
|
14
14
|
# Invoke destination
|
data/dest.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "rake", '~> 3.0', '>= 3.0.0'
|
22
|
+
spec.add_dependency 'colorize', '~> 0.7'
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.5"
|
24
25
|
spec.add_development_dependency "rspec", '~> 3.0', '>= 3.0.0'
|
data/lib/dest.rb
CHANGED
data/lib/dest/project/base.rb
CHANGED
@@ -6,18 +6,23 @@ module Dest
|
|
6
6
|
end
|
7
7
|
|
8
8
|
class Base
|
9
|
-
|
10
|
-
attr_accessor :frameworks, :sources, :target
|
9
|
+
attr_accessor :dir, :frameworks, :sources, :target
|
11
10
|
def initialize dir
|
12
11
|
@dir = dir
|
13
12
|
@frameworks = ['Foundation']
|
14
|
-
@sources =
|
15
|
-
@target
|
13
|
+
@sources = []
|
14
|
+
@target = guess_target
|
16
15
|
end
|
17
|
-
def scan_sources
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
# def scan_sources
|
17
|
+
# src = Dir[File.join(@dir, 'src', '**/*.m')]
|
18
|
+
# root = Dir[File.join(@dir, '*.m')]
|
19
|
+
# return src + root
|
20
|
+
# end
|
21
|
+
def add_source fn
|
22
|
+
@sources << File.expand_path(fn)
|
23
|
+
end
|
24
|
+
def add_source_directory dir
|
25
|
+
Dir[File.join dir, '**/*.m'].map {|fn| File.expand_path fn }.each {|fn| @sources << fn }
|
21
26
|
end
|
22
27
|
def guess_target
|
23
28
|
# Turns '/a/b/c' into just 'c'
|
data/lib/dest/rake.rb
CHANGED
@@ -29,7 +29,11 @@ module Dest
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def compile source, object
|
32
|
-
|
32
|
+
# Ensure we have the directory
|
33
|
+
dir = File.dirname object
|
34
|
+
FileUtils.mkdir_p dir
|
35
|
+
# Then build
|
36
|
+
system "clang #{source} #{flags} -o #{object}"
|
33
37
|
end
|
34
38
|
|
35
39
|
# Set up rake hooks
|
@@ -41,9 +45,11 @@ module Dest
|
|
41
45
|
Dir.mkdir @build_dir
|
42
46
|
end
|
43
47
|
|
48
|
+
task 'default' => 'build'
|
49
|
+
|
44
50
|
desc 'Build the project'
|
45
51
|
task 'build' => project.target do
|
46
|
-
puts "Built #{File.basename project.target}"
|
52
|
+
puts "Built #{File.basename project.target}".green
|
47
53
|
end
|
48
54
|
|
49
55
|
# Build the sources into their objects via the rule below
|
@@ -52,11 +58,19 @@ module Dest
|
|
52
58
|
target = t.name
|
53
59
|
objects = t.prerequisites
|
54
60
|
# Little message
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
61
|
+
time_action "Linking #{File.basename target} from #{objects.length.to_s} objects" do
|
62
|
+
# Then figure out our frameworks and objects
|
63
|
+
objects = objects.join ' '
|
64
|
+
frameworks = project.frameworks.map {|f| "-framework #{f}" }.join ' '
|
65
|
+
system "clang #{objects} -lobjc #{frameworks} -o #{target}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def time_action name
|
70
|
+
start = Time.now
|
71
|
+
yield
|
72
|
+
diff = ((Time.now - start) * 1000).round
|
73
|
+
puts name + " (#{diff.to_s} ms)".light_black
|
60
74
|
end
|
61
75
|
|
62
76
|
# Set up a file task for every source file to catch changes
|
@@ -66,13 +80,24 @@ module Dest
|
|
66
80
|
object_file = objectsify src
|
67
81
|
|
68
82
|
file object_file => source_file do |t|
|
69
|
-
|
70
|
-
|
83
|
+
# Try to strip off the leading directory
|
84
|
+
fn = src.sub project.dir+'/', ''
|
85
|
+
time_action "Compiling #{fn}" do
|
86
|
+
compile source_file, object_file
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end#project.sources.each
|
71
90
|
|
72
|
-
|
91
|
+
desc 'Clean up build artifacts and target'
|
92
|
+
task 'clean' do
|
93
|
+
system "rm -f #{project.target}"
|
94
|
+
project.sources.each do |fn|
|
95
|
+
fn = objectsify fn
|
96
|
+
system "rm -f #{fn}"
|
73
97
|
end
|
74
98
|
end
|
75
99
|
|
76
|
-
end#
|
100
|
+
end#setup
|
101
|
+
|
77
102
|
end#Rake
|
78
103
|
end#Dest
|
data/lib/dest/version.rb
CHANGED
data/test/project/Rakefile
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: destination
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dirk Gadsden
|
@@ -30,6 +30,20 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 3.0.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: colorize
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.7'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.7'
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: bundler
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,6 +105,7 @@ executables: []
|
|
91
105
|
extensions: []
|
92
106
|
extra_rdoc_files: []
|
93
107
|
files:
|
108
|
+
- ".gitignore"
|
94
109
|
- ".rspec"
|
95
110
|
- Gemfile
|
96
111
|
- LICENSE
|