mtbuild 0.0.6 → 0.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 64574656119d9eadc3f2c0050475425e3d27956f
4
- data.tar.gz: db30b6a8fe5aae2ce9a501ab8f873c37a117fa45
3
+ metadata.gz: 2421f140e27fc06f4acc05b65ceeae4ad18807a2
4
+ data.tar.gz: 226f8ccef5e4c26851f2a16838b51a9447dd5918
5
5
  SHA512:
6
- metadata.gz: 4a0810cca6b2fcf8b6503dc6fa3357eae2496ab537432f8d280605cae1e624fd5dd23a8414cbca79e534228fc57c990d1d7713191c38e02d53f89ad26c5cea09
7
- data.tar.gz: 8a016d464bf650a27026f2f6d91e20166757bedee25816db8f53d1193a0ceb8f867f2f26bfef35f3b2ed7643169b315241a1ff6cde7bd526fff7dab169c02465
6
+ metadata.gz: b78783ed1b5e6905891c75e31fd46b5f15b09110334d4596033967e0b4a851c27a6f66ac38a3146e5718201f1bfc14ac44c6d25cb212eed3b80afb00c0842eae
7
+ data.tar.gz: 68e1a5e8e8100d6a6cd1c3e68b3c453675e2be3f9e6a4423d9475ae276a80fad0c954fbf6a6238e063a980cd559a2eb8bb0f33c38c61f3b72830c8693178fca7
data/CHANGES.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Changes ###
6
6
 
7
- * Fixed issue with test configurations failing on spaces in project paths
7
+ * Fixed spaces in project paths for test executables
8
8
 
9
9
 
10
10
  ## MTBuild 0.0.5 ##
data/lib/mtbuild.rb CHANGED
@@ -7,6 +7,7 @@ require "mtbuild/dsl"
7
7
  require "mtbuild/framework_project"
8
8
  require "mtbuild/framework_task"
9
9
  require "mtbuild/mtbuild"
10
+ require "mtbuild/mtfile_task"
10
11
  require "mtbuild/staticlibrary_project"
11
12
  require "mtbuild/staticlibrary_task"
12
13
  require "mtbuild/test_application_project"
data/lib/mtbuild/dsl.rb CHANGED
@@ -41,6 +41,23 @@ module MTBuild
41
41
  return versioner_configuration
42
42
  end
43
43
 
44
+ # Declare an MT file task.
45
+ #
46
+ # Example:
47
+ # mtfile "config.cfg" => ["config.template"] do
48
+ # open("config.cfg", "w") do |outfile|
49
+ # open("config.template") do |infile|
50
+ # while line = infile.gets
51
+ # outfile.puts line
52
+ # end
53
+ # end
54
+ # end
55
+ # end
56
+ #
57
+ def mtfile(*args, &block)
58
+ MTBuild::MTFileTask.define_task(*args, &block)
59
+ end
60
+
44
61
  end
45
62
 
46
63
  end
@@ -0,0 +1,42 @@
1
+ module MTBuild
2
+
3
+ # Makefile loader to be used with the import file loader.
4
+ class MakefileLoader
5
+ include Rake::DSL
6
+
7
+ SPACE_MARK = "\0"
8
+
9
+ # Load the makefile dependencies in +fn+.
10
+ def load(fn)
11
+ lines = File.read fn
12
+ lines.gsub!(/\\ /, SPACE_MARK)
13
+ lines.gsub!(/#[^\n]*\n/m, "")
14
+ lines.gsub!(/\\\n/, ' ')
15
+ lines.each_line do |line|
16
+ return false if not process_line(line)
17
+ end
18
+ return true
19
+ end
20
+
21
+ private
22
+
23
+ # Process one logical line of makefile data.
24
+ def process_line(line)
25
+ file_tasks, args = line.split(':', 2)
26
+ return if args.nil?
27
+ dependents = args.split.map { |d| respace(d) }
28
+ dependents.each { |d| return false if not File.file?d }
29
+ file_tasks.scan(/\S+/) do |file_task|
30
+ file_task = respace(file_task)
31
+ file file_task => dependents
32
+ end
33
+ end
34
+
35
+ def respace(str)
36
+ str.tr SPACE_MARK, ' '
37
+ end
38
+ end
39
+
40
+ # Install the handler
41
+ Rake.application.add_loader('mf', MakefileLoader.new)
42
+ end
@@ -0,0 +1,51 @@
1
+ require 'rake/task.rb'
2
+ require 'rake/early_time'
3
+
4
+ module MTBuild
5
+ # #########################################################################
6
+ # A FileTask is a task that includes time based dependencies. If any of a
7
+ # FileTask's prerequisites have a timestamp that is later than the file
8
+ # represented by this task, then the file must be rebuilt (using the
9
+ # supplied actions).
10
+ #
11
+ class MTFileTask < Rake::Task
12
+
13
+ # Is this file task needed? Yes if it doesn't exist, or if its time stamp
14
+ # is out of date.
15
+ def needed?
16
+ ! File.exist?(name) || out_of_date?(timestamp) || @force_needed
17
+ end
18
+
19
+ def force_needed()
20
+ @force_needed = true
21
+ end
22
+
23
+ # Time stamp for file task.
24
+ def timestamp
25
+ if File.exist?(name)
26
+ File.mtime(name.to_s)
27
+ else
28
+ Rake::EARLY
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ # Are there any prerequisites with a later time than the given time stamp?
35
+ def out_of_date?(stamp)
36
+ @prerequisites.any? { |n| application[n, @scope].timestamp > stamp}
37
+ end
38
+
39
+ # ----------------------------------------------------------------
40
+ # Task class methods.
41
+ #
42
+ class << self
43
+ # Apply the scope to the task name according to the rules for this kind
44
+ # of task. File based tasks ignore the scope when creating the name.
45
+ def scope_name(scope, task_name)
46
+ task_name
47
+ end
48
+ end
49
+ end
50
+ end
51
+
@@ -1,8 +1,8 @@
1
1
  module MTBuild
2
+ require 'mtbuild/loaders/makefile'
2
3
  require 'mtbuild/toolchain'
3
4
  require 'mtbuild/utils'
4
5
  require 'rake/clean'
5
- require 'rake/loaders/makefile'
6
6
 
7
7
  Toolchain.register_toolchain(:gcc, 'MTBuild::ToolchainGcc')
8
8
 
@@ -56,11 +56,14 @@ module MTBuild
56
56
 
57
57
  file_type = get_file_type(source_file)
58
58
 
59
- file object_file => [source_file] do |t|
59
+ mtfile object_file => [source_file] do |t|
60
60
  command_line = construct_compile_command(file_type, [source_file], get_include_paths, t.name)
61
61
  sh command_line
62
62
  end
63
- Rake::MakefileLoader.new.load(dependency_file) if File.file?(dependency_file)
63
+ # Load dependencies if the dependencies file exists and the object file is not already scheduled to be rebuilt
64
+ if File.file?(dependency_file) and not Rake::Task[object_file].needed?
65
+ Rake::Task[object_file].force_needed() if not MTBuild::MakefileLoader.new.load(dependency_file)
66
+ end
64
67
  end
65
68
  return object_files, object_folders
66
69
  end
@@ -155,6 +158,8 @@ module MTBuild
155
158
  return 'gcc'
156
159
  end
157
160
 
161
+ include MTBuild::DSL
162
+
158
163
  end
159
164
 
160
165
  end
@@ -1,4 +1,4 @@
1
1
  module MTBuild
2
2
  # The current MTBuild version.
3
- VERSION = "0.0.6"
3
+ VERSION = "0.0.7"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mtbuild
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry Ryle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-02 00:00:00.000000000 Z
11
+ date: 2015-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -110,7 +110,9 @@ files:
110
110
  - lib/mtbuild/framework_configuration.rb
111
111
  - lib/mtbuild/framework_project.rb
112
112
  - lib/mtbuild/framework_task.rb
113
+ - lib/mtbuild/loaders/makefile.rb
113
114
  - lib/mtbuild/mtbuild.rb
115
+ - lib/mtbuild/mtfile_task.rb
114
116
  - lib/mtbuild/organized_package_task.rb
115
117
  - lib/mtbuild/project.rb
116
118
  - lib/mtbuild/staticlibrary_configuration.rb