canoe 0.3.3.6 → 0.3.3.9

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
  SHA256:
3
- metadata.gz: e50f9ba8d96948ef0cf070c3cf105641b3abc7e6c6b83823b989fb5b83f51cc5
4
- data.tar.gz: '02916721983f2bd1fc18837f7db4a73dd77c42bebbe4c36d498e0a8e4b73fe2f'
3
+ metadata.gz: 27fc12be4cfd0775886ed271cbc9ef488af257f39b042bf2d05e0c9e15383ced
4
+ data.tar.gz: c7098cf99ac368904025146a345dc9568c10bf22b6ad92d20bb3a650c78f3353
5
5
  SHA512:
6
- metadata.gz: ad38fa76f5190af9de7579ee5f8e11da9f42b35ec57b833f19e63a01ded4255f9dca913959c6fa5306b2a136b45228b0f8c5e3522bae64b7fcb99c9df29168f1
7
- data.tar.gz: 5877024cb80c0bd1bd767982c28ea3ceea82aa883f5ae27d0c45d28f2b73339df917dbc50cfecf5fd5c09bbc7f8cfb538ef963e9c6b0b865c5c41dd4bb1f33a1
6
+ metadata.gz: 41c42a532260ed0cb89b6885cbd9dae8058b26e5ddd90b4bb30a8f439b7d09e86a500e078bd6a807242c9e1a4be3e87ec43901a69538afdb60adf6ed48d4b4de
7
+ data.tar.gz: 2f2aa63dbf22b89538a56f9854de86ff27912b70cda5081c9201a469e36f957d27b5a1997f0c8d8b42423bd41efb6767993c53e12c59317ed26ed9a8839f85b9
@@ -66,6 +66,7 @@ module Canoe
66
66
  end
67
67
 
68
68
  def link_exectutable(odir, objs)
69
+ puts "#{'[LINKING TARGET]'.magenta}..."
69
70
  puts "#{"[100%]".green} linking"
70
71
  @compiler.link_executable "#{odir}/#{@name}", objs
71
72
  end
@@ -97,6 +98,7 @@ module Canoe
97
98
  end
98
99
 
99
100
  def build_common(files)
101
+ return true if files.empty?
100
102
  all = SourceFiles.get_all(@src_short) { |f| f.end_with? @source_suffix }
101
103
  stepper = Stepper.new all.size, files.size
102
104
  flag = true
@@ -138,8 +140,7 @@ module Canoe
138
140
  files = DepAnalyzer.compiling_filter(target_deps, build_time, @source_suffix, @header_suffix)
139
141
 
140
142
  if files.empty? && File.exist?(target)
141
- puts "nothing to do, all up to date"
142
- return true
143
+ puts "nothing to compile, trying to link"
143
144
  end
144
145
 
145
146
  self.send "build_#{@mode.to_s}", files
@@ -169,7 +170,7 @@ module Canoe
169
170
  end
170
171
 
171
172
  def add_command_object(dir, arguments, file)
172
- temp = {
173
+ temp = {
173
174
  "arguments" => arguments,
174
175
  "directory" => dir,
175
176
  "file" => file
@@ -14,6 +14,8 @@ module Canoe
14
14
  ret = []
15
15
  holder = deps[file] + deps[file].map { |f| f.gsub(".#{@header_suffix}", ".#{@source_suffix}") }
16
16
  extract_one_file_helper(file, deps, holder, ret)
17
+
18
+ ret = ret + ret.map{ |f| f.gsub(".#{@header_suffix}", ".#{@source_suffix}") }
17
19
  ret.uniq
18
20
  end
19
21
 
@@ -45,7 +47,7 @@ module Canoe
45
47
  begin
46
48
  ref.each do |f|
47
49
  ret << f unless ret.include?(f)
48
- dep = extract_one_file_helper(f, deps, deps[f], ret)
50
+ dep = extract_one_file_helper(f, deps, deps[f], ret)
49
51
  dep.each do |d|
50
52
  ret << d unless ret.include?(d)
51
53
  end
@@ -53,7 +55,7 @@ module Canoe
53
55
  rescue SystemStackError
54
56
  puts "#{"Fatal: ".red}file #{file} is circularly included"
55
57
  exit false
56
- end
58
+ end
57
59
  end
58
60
 
59
61
  def test_all
@@ -64,7 +66,8 @@ module Canoe
64
66
  end
65
67
 
66
68
  def test_single(name, args = "")
67
- rebuild = false;
69
+ puts "[COMPILING TEST #{name}]".magenta
70
+ rebuild = false
68
71
  bin = "#{@target_short}/test_#{name}"
69
72
 
70
73
  rebuild ||= !File.exist?(bin)
@@ -74,16 +77,19 @@ module Canoe
74
77
  rebuild ||= File.mtime(bin) < File.mtime(file)
75
78
 
76
79
  deps = fetch_all_deps
80
+
77
81
  extract_one_file(file, deps).each do |f|
78
82
  rebuild ||= File.mtime(bin) < File.mtime(f) || File.mtime(bin) < File.mtime(hdr_of_src(f))
79
83
  end
80
84
 
81
85
  cmd = "#{bin} #{args}"
86
+ build_compiler_from_config
82
87
  if rebuild
83
- build_compiler_from_config
84
88
  run_command cmd if build_one_test(file, deps)
85
89
  else
86
- run_command cmd
90
+ puts "nothing to compile, all up to date"
91
+ puts "[RELINKING...]".magenta
92
+ run_command cmd if link_one_test(file, deps)
87
93
  end
88
94
  end
89
95
 
@@ -123,7 +129,7 @@ module Canoe
123
129
  stepper.step
124
130
  end
125
131
  abort_on_err("Compiling errors encountered") unless flag;
126
-
132
+
127
133
  printf "#{indent}#{stepper.progress_as_str.green} compiling finished\n"
128
134
  puts "#{indent}[100%]".green + " linking"
129
135
  link_one_test(test_file, deps)
@@ -2,7 +2,7 @@ module Canoe
2
2
  class WorkSpace
3
3
  def self.version
4
4
  puts <<~VER
5
- canoe v0.3.3.6
5
+ canoe v0.3.3.9
6
6
  For features in this version, please visit https://github.com/Dicridon/canoe
7
7
  Currently, canoe can do below:
8
8
  - project creation
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3.6
4
+ version: 0.3.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - XIONG Ziwei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-23 00:00:00.000000000 Z
11
+ date: 2023-08-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |+
14
14
  Canoe offers project management and building facilities to C/C++ projects.