cxxproject 0.5.67 → 0.5.68
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.
- data/lib/cxxproject/buildingblocks/executable.rb +15 -8
 - data/lib/cxxproject/buildingblocks/has_sources_mixin.rb +1 -2
 - data/lib/cxxproject/buildingblocks/source_library.rb +1 -1
 - data/lib/cxxproject/errorparser/error_parser.rb +3 -3
 - data/lib/cxxproject/errorparser/keil_compiler_error_parser.rb +40 -0
 - data/lib/cxxproject/errorparser/keil_linker_error_parser.rb +35 -0
 - data/lib/cxxproject/ide_interface.rb +7 -5
 - data/lib/cxxproject/toolchain/keil.rb +52 -0
 - data/lib/cxxproject/toolchain/provider.rb +3 -1
 - data/lib/cxxproject/utils/utils.rb +18 -9
 - data/lib/cxxproject/version.rb +1 -1
 - metadata +5 -2
 
| 
         @@ -80,9 +80,16 @@ module Cxxproject 
     | 
|
| 
       80 
80 
     | 
    
         
             
                end
         
     | 
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
                def linker_lib_string()
         
     | 
| 
       83 
     | 
    
         
            -
                  @lib_path_set =  
     | 
| 
      
 83 
     | 
    
         
            +
                  @lib_path_set = []
         
     | 
| 
       84 
84 
     | 
    
         
             
                  @dep_set = Set.new
         
     | 
| 
       85 
     | 
    
         
            -
                  calc_linker_lib_string_recursive(self)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  res = calc_linker_lib_string_recursive(self)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  return res if (@tcs[:LINKER][:LIST_MODE] == false)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  
         
     | 
| 
      
 88 
     | 
    
         
            +
                  res.map { |x| x+"(*.o)"}
         
     | 
| 
      
 89 
     | 
    
         
            +
                  if not (@lib_path_set.empty?)
         
     | 
| 
      
 90 
     | 
    
         
            +
                    res << (@tcs[:LINKER][:LIB_PATH_FLAG] + @lib_path_set.join(","));
         
     | 
| 
      
 91 
     | 
    
         
            +
                  end
         
     | 
| 
      
 92 
     | 
    
         
            +
                  res
         
     | 
| 
       86 
93 
     | 
    
         
             
                end
         
     | 
| 
       87 
94 
     | 
    
         | 
| 
       88 
95 
     | 
    
         
             
                def calc_linker_lib_string_recursive(d)
         
     | 
| 
         @@ -108,7 +115,7 @@ module Cxxproject 
     | 
|
| 
       108 
115 
     | 
    
         
             
                          tmp, prefix = adaptPath(elem[1], d, prefix)
         
     | 
| 
       109 
116 
     | 
    
         
             
                          if not @lib_path_set.include?tmp
         
     | 
| 
       110 
117 
     | 
    
         
             
                            @lib_path_set << tmp
         
     | 
| 
       111 
     | 
    
         
            -
                            res << "#{linker[:LIB_PATH_FLAG]}#{tmp}"
         
     | 
| 
      
 118 
     | 
    
         
            +
                            res << "#{linker[:LIB_PATH_FLAG]}#{tmp}" if linker[:LIST_MODE] == false
         
     | 
| 
       112 
119 
     | 
    
         
             
                          end
         
     | 
| 
       113 
120 
     | 
    
         
             
                        when HasLibraries::DEPENDENCY
         
     | 
| 
       114 
121 
     | 
    
         
             
                          if ALL_BUILDING_BLOCKS.include?elem[1]
         
     | 
| 
         @@ -134,19 +141,19 @@ module Cxxproject 
     | 
|
| 
       134 
141 
     | 
    
         | 
| 
       135 
142 
     | 
    
         
             
                      cmd = [linker[:COMMAND]] # g++
         
     | 
| 
       136 
143 
     | 
    
         
             
                      cmd += linker[:MUST_FLAGS].split(" ")
         
     | 
| 
       137 
     | 
    
         
            -
                      cmd += Cxxproject::Utils::flagSplit(linker[:FLAGS])
         
     | 
| 
      
 144 
     | 
    
         
            +
                      cmd += Cxxproject::Utils::flagSplit(linker[:FLAGS],true)
         
     | 
| 
       138 
145 
     | 
    
         
             
                      cmd << linker[:EXE_FLAG]
         
     | 
| 
       139 
146 
     | 
    
         
             
                      cmd << get_executable_name # -o debug/x.exe
         
     | 
| 
       140 
147 
     | 
    
         
             
                      cmd += @objects
         
     | 
| 
       141 
148 
     | 
    
         
             
                      cmd << linker[:SCRIPT] if @linker_script # -T
         
     | 
| 
       142 
149 
     | 
    
         
             
                      cmd << @linker_script if @linker_script # xy/xy.dld
         
     | 
| 
       143 
     | 
    
         
            -
                      cmd  
     | 
| 
       144 
     | 
    
         
            -
                      if not linker[:MAP_FILE_PIPE]
         
     | 
| 
      
 150 
     | 
    
         
            +
                      cmd += linker[:MAP_FILE_FLAG].split(" ") if @mapfile # -Wl,-m6
         
     | 
| 
      
 151 
     | 
    
         
            +
                      if not linker[:MAP_FILE_PIPE] and @mapfile 
         
     | 
| 
       145 
152 
     | 
    
         
             
                        cmd[cmd.length-1] << @mapfile 
         
     | 
| 
       146 
153 
     | 
    
         
             
                      end
         
     | 
| 
       147 
     | 
    
         
            -
                      cmd += Cxxproject::Utils::flagSplit(linker[:LIB_PREFIX_FLAGS]) # "-Wl,--whole-archive "
         
     | 
| 
      
 154 
     | 
    
         
            +
                      cmd += Cxxproject::Utils::flagSplit(linker[:LIB_PREFIX_FLAGS],true) # "-Wl,--whole-archive "
         
     | 
| 
       148 
155 
     | 
    
         
             
                      cmd += linker_lib_string
         
     | 
| 
       149 
     | 
    
         
            -
                      cmd += Cxxproject::Utils::flagSplit(linker[:LIB_POSTFIX_FLAGS]) # "-Wl,--no-whole-archive "
         
     | 
| 
      
 156 
     | 
    
         
            +
                      cmd += Cxxproject::Utils::flagSplit(linker[:LIB_POSTFIX_FLAGS],true) # "-Wl,--no-whole-archive "
         
     | 
| 
       150 
157 
     | 
    
         | 
| 
       151 
158 
     | 
    
         
             
                      mapfileStr = (@mapfile and linker[:MAP_FILE_PIPE]) ? " >#{@mapfile}" : ""
         
     | 
| 
       152 
159 
     | 
    
         
             
                      if Cxxproject::Utils.old_ruby?
         
     | 
| 
         @@ -269,12 +269,11 @@ module Cxxproject 
     | 
|
| 
       269 
269 
     | 
    
         
             
                        end
         
     | 
| 
       270 
270 
     | 
    
         
             
                      end
         
     | 
| 
       271 
271 
     | 
    
         
             
                      cmd += compiler[:PREPRO_FLAGS].split(" ") if Rake::application.preproFlags
         
     | 
| 
       272 
     | 
    
         
            -
                      cmd += Cxxproject::Utils::flagSplit(compiler[:FLAGS])
         
     | 
| 
      
 272 
     | 
    
         
            +
                      cmd += Cxxproject::Utils::flagSplit(compiler[:FLAGS],true)
         
     | 
| 
       273 
273 
     | 
    
         
             
                      cmd += i_array
         
     | 
| 
       274 
274 
     | 
    
         
             
                      cmd += d_array
         
     | 
| 
       275 
275 
     | 
    
         
             
                      cmd += (compiler[:OBJECT_FILE_FLAG] + objectRel).split(" ")
         
     | 
| 
       276 
276 
     | 
    
         
             
                      cmd << sourceRel
         
     | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
       278 
277 
     | 
    
         
             
                      if Cxxproject::Utils.old_ruby?
         
     | 
| 
       279 
278 
     | 
    
         
             
                        cmd.map! {|c| ((c.include?" ") ? ("\""+c+"\"") : c )}
         
     | 
| 
       280 
279 
     | 
    
         
             
                        cmdLine = cmd.join(" ")
         
     | 
| 
         @@ -79,7 +79,7 @@ module Cxxproject 
     | 
|
| 
       79 
79 
     | 
    
         
             
                        end
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
       81 
81 
     | 
    
         
             
                        cmd = [archiver[:COMMAND]] # ar
         
     | 
| 
       82 
     | 
    
         
            -
                        cmd += Cxxproject::Utils::flagSplit(archiver[:FLAGS]) # --all_load
         
     | 
| 
      
 82 
     | 
    
         
            +
                        cmd += Cxxproject::Utils::flagSplit(archiver[:FLAGS],true) # --all_load
         
     | 
| 
       83 
83 
     | 
    
         
             
                        cmd += archiver[:ARCHIVE_FLAGS].split(" ")
         
     | 
| 
       84 
84 
     | 
    
         
             
                        cmd << aname
         
     | 
| 
       85 
85 
     | 
    
         
             
                        cmd += objs
         
     | 
| 
         @@ -22,11 +22,11 @@ module Cxxproject 
     | 
|
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                def get_severity(str)
         
     | 
| 
       25 
     | 
    
         
            -
                  if str == "info" || str == "note"
         
     | 
| 
      
 25 
     | 
    
         
            +
                  if str.downcase == "info" || str.downcase == "note"
         
     | 
| 
       26 
26 
     | 
    
         
             
                    SEVERITY_INFO
         
     | 
| 
       27 
     | 
    
         
            -
                  elsif str == "warning"
         
     | 
| 
      
 27 
     | 
    
         
            +
                  elsif str.downcase == "warning"
         
     | 
| 
       28 
28 
     | 
    
         
             
                    SEVERITY_WARNING
         
     | 
| 
       29 
     | 
    
         
            -
                  elsif str == "error"
         
     | 
| 
      
 29 
     | 
    
         
            +
                  elsif str.downcase == "error" 
         
     | 
| 
       30 
30 
     | 
    
         
             
                    SEVERITY_ERROR
         
     | 
| 
       31 
31 
     | 
    
         
             
                  else
         
     | 
| 
       32 
32 
     | 
    
         
             
                    raise "Unknown severity: #{str}"
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cxxproject/errorparser/error_parser'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Cxxproject
         
     | 
| 
      
 4 
     | 
    
         
            +
              class KeilCompilerErrorParser < ErrorParser
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                def initialize()
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @error_expression_start = /\"(.+)\", line ([0-9]+): (?!included)(catastrophic |fatal )*([A-Za-z]+)[:]* (.+)/  
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @error_expression_end = /^[ \t]*\^/ # well, it may end without "^"... in this case the error will last the next one starts or console text ends
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def scan_lines(consoleOutput, proj_dir)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  res = []
         
     | 
| 
      
 13 
     | 
    
         
            +
                  error_severity = 255
         
     | 
| 
      
 14 
     | 
    
         
            +
                  consoleOutputFullnames = ""
         
     | 
| 
      
 15 
     | 
    
         
            +
                  consoleOutput.each_line do |l|
         
     | 
| 
      
 16 
     | 
    
         
            +
                    d = ErrorDesc.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                    lstripped = l.rstrip
         
     | 
| 
      
 18 
     | 
    
         
            +
                    scan_res = lstripped.scan(@error_expression_start)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    if scan_res.length == 0
         
     | 
| 
      
 20 
     | 
    
         
            +
                      d.severity = error_severity
         
     | 
| 
      
 21 
     | 
    
         
            +
                      d.message = lstripped 
         
     | 
| 
      
 22 
     | 
    
         
            +
                      if lstripped.scan(@error_expression_end).length > 0
         
     | 
| 
      
 23 
     | 
    
         
            +
                        error_severity = 255 
         
     | 
| 
      
 24 
     | 
    
         
            +
                      end
         
     | 
| 
      
 25 
     | 
    
         
            +
                    else
         
     | 
| 
      
 26 
     | 
    
         
            +
                      d.file_name = File.expand_path(scan_res[0][0])
         
     | 
| 
      
 27 
     | 
    
         
            +
                      d.line_number = scan_res[0][1].to_i
         
     | 
| 
      
 28 
     | 
    
         
            +
                      d.message = scan_res[0][4]
         
     | 
| 
      
 29 
     | 
    
         
            +
                      d.severity = get_severity(scan_res[0][3])
         
     | 
| 
      
 30 
     | 
    
         
            +
                      error_severity = d.severity
         
     | 
| 
      
 31 
     | 
    
         
            +
                      l.gsub!(scan_res[0][0],d.file_name)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                    res << d
         
     | 
| 
      
 34 
     | 
    
         
            +
                    consoleOutputFullnames << l
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
                  [res, consoleOutputFullnames]
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cxxproject/errorparser/error_parser'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Cxxproject
         
     | 
| 
      
 4 
     | 
    
         
            +
              class KeilLinkerErrorParser < ErrorParser
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                def initialize()
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @error_exclude = /Finished: [0-9]+ information, [0-9]+ warning and [0-9]+ error messages./
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                def scan_lines(consoleOutput, proj_dir)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  res = []
         
     | 
| 
      
 12 
     | 
    
         
            +
                  consoleOutput.each_line do |l|
         
     | 
| 
      
 13 
     | 
    
         
            +
                    l.rstrip!
         
     | 
| 
      
 14 
     | 
    
         
            +
                    scan_res = l.scan(@error_exclude)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    d = ErrorDesc.new
         
     | 
| 
      
 16 
     | 
    
         
            +
                    if scan_res.length == 0
         
     | 
| 
      
 17 
     | 
    
         
            +
                      d.file_name = proj_dir
         
     | 
| 
      
 18 
     | 
    
         
            +
                      d.line_number = 0
         
     | 
| 
      
 19 
     | 
    
         
            +
                      d.message = l
         
     | 
| 
      
 20 
     | 
    
         
            +
                      if l.length == 0
         
     | 
| 
      
 21 
     | 
    
         
            +
                        d.severity = SEVERITY_OK
         
     | 
| 
      
 22 
     | 
    
         
            +
                      elsif l.include?" Warning:" 
         
     | 
| 
      
 23 
     | 
    
         
            +
                        d.severity = SEVERITY_WARNING
         
     | 
| 
      
 24 
     | 
    
         
            +
                      else
         
     | 
| 
      
 25 
     | 
    
         
            +
                        d.severity = SEVERITY_ERROR
         
     | 
| 
      
 26 
     | 
    
         
            +
                      end
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
                    res << d
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  [res, consoleOutput]
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -102,11 +102,13 @@ module Cxxproject 
     | 
|
| 
       102 
102 
     | 
    
         
             
                    merged_messages = []
         
     | 
| 
       103 
103 
     | 
    
         
             
                    last_msg = nil
         
     | 
| 
       104 
104 
     | 
    
         
             
                    error_array.each do |msg|
         
     | 
| 
       105 
     | 
    
         
            -
                      if msg. 
     | 
| 
       106 
     | 
    
         
            -
                         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                         
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
      
 105 
     | 
    
         
            +
                      if msg.severity != 255
         
     | 
| 
      
 106 
     | 
    
         
            +
                        if msg.file_name.nil?
         
     | 
| 
      
 107 
     | 
    
         
            +
                          last_msg.message += "\r\n#{msg.message}" if last_msg
         
     | 
| 
      
 108 
     | 
    
         
            +
                        else
         
     | 
| 
      
 109 
     | 
    
         
            +
                          last_msg = msg.dup
         
     | 
| 
      
 110 
     | 
    
         
            +
                          merged_messages << last_msg
         
     | 
| 
      
 111 
     | 
    
         
            +
                        end
         
     | 
| 
       110 
112 
     | 
    
         
             
                      end
         
     | 
| 
       111 
113 
     | 
    
         
             
                    end
         
     | 
| 
       112 
114 
     | 
    
         | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cxxproject/utils/utils'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'cxxproject/toolchain/provider'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'cxxproject/errorparser/error_parser'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'cxxproject/errorparser/keil_compiler_error_parser'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'cxxproject/errorparser/keil_linker_error_parser'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module Cxxproject
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Toolchain
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                KeilChain = Provider.add("Keil")
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                KeilChain[:COMPILER][:CPP].update({
         
     | 
| 
      
 13 
     | 
    
         
            +
                  :COMMAND => "armcc",
         
     | 
| 
      
 14 
     | 
    
         
            +
                  :DEFINE_FLAG => "-D",
         
     | 
| 
      
 15 
     | 
    
         
            +
                  :OBJECT_FILE_FLAG => "-o ",
         
     | 
| 
      
 16 
     | 
    
         
            +
                  :INCLUDE_PATH_FLAG => "-I",
         
     | 
| 
      
 17 
     | 
    
         
            +
                  :COMPILE_FLAGS => "-c ",
         
     | 
| 
      
 18 
     | 
    
         
            +
                  :DEP_FLAGS => "--depend=",
         
     | 
| 
      
 19 
     | 
    
         
            +
                  :DEP_FLAGS_SPACE => false,
         
     | 
| 
      
 20 
     | 
    
         
            +
                  :PREPRO_FLAGS => "-E -P"
         
     | 
| 
      
 21 
     | 
    
         
            +
                })
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                KeilChain[:COMPILER][:C] = Utils.deep_copy(KeilChain[:COMPILER][:CPP])
         
     | 
| 
      
 24 
     | 
    
         
            +
                KeilChain[:COMPILER][:C][:SOURCE_FILE_ENDINGS] = Provider.default[:COMPILER][:C][:SOURCE_FILE_ENDINGS]
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                KeilChain[:COMPILER][:ASM] = Utils.deep_copy(KeilChain[:COMPILER][:C])
         
     | 
| 
      
 27 
     | 
    
         
            +
                KeilChain[:COMPILER][:ASM][:SOURCE_FILE_ENDINGS] = Provider.default[:COMPILER][:ASM][:SOURCE_FILE_ENDINGS]
         
     | 
| 
      
 28 
     | 
    
         
            +
                KeilChain[:COMPILER][:ASM][:COMMAND] = "armasm"
         
     | 
| 
      
 29 
     | 
    
         
            +
                KeilChain[:COMPILER][:ASM][:COMPILE_FLAGS] = ""
         
     | 
| 
      
 30 
     | 
    
         
            +
                  
         
     | 
| 
      
 31 
     | 
    
         
            +
                KeilChain[:ARCHIVER][:COMMAND] = "armar"
         
     | 
| 
      
 32 
     | 
    
         
            +
                KeilChain[:ARCHIVER][:ARCHIVE_FLAGS] = "--create"
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                KeilChain[:LINKER][:COMMAND] = "armlink"
         
     | 
| 
      
 35 
     | 
    
         
            +
                KeilChain[:LINKER][:SCRIPT] = "--scatter"
         
     | 
| 
      
 36 
     | 
    
         
            +
                KeilChain[:LINKER][:USER_LIB_FLAG] = ""
         
     | 
| 
      
 37 
     | 
    
         
            +
                KeilChain[:LINKER][:EXE_FLAG] = "-o"
         
     | 
| 
      
 38 
     | 
    
         
            +
                KeilChain[:LINKER][:LIB_FLAG] = ""
         
     | 
| 
      
 39 
     | 
    
         
            +
                KeilChain[:LINKER][:LIB_PATH_FLAG] = "--userlibpath="
         
     | 
| 
      
 40 
     | 
    
         
            +
                KeilChain[:LINKER][:MAP_FILE_FLAG] = "--map --list="
         
     | 
| 
      
 41 
     | 
    
         
            +
                KeilChain[:LINKER][:MAP_FILE_PIPE] = false   
         
     | 
| 
      
 42 
     | 
    
         
            +
                KeilChain[:LINKER][:LIST_MODE] = true  
         
     | 
| 
      
 43 
     | 
    
         
            +
                  
         
     | 
| 
      
 44 
     | 
    
         
            +
                keilCompilerErrorParser =                   KeilCompilerErrorParser.new
         
     | 
| 
      
 45 
     | 
    
         
            +
                KeilChain[:COMPILER][:C][:ERROR_PARSER] =   keilCompilerErrorParser
         
     | 
| 
      
 46 
     | 
    
         
            +
                KeilChain[:COMPILER][:CPP][:ERROR_PARSER] = keilCompilerErrorParser
         
     | 
| 
      
 47 
     | 
    
         
            +
                KeilChain[:COMPILER][:ASM][:ERROR_PARSER] = keilCompilerErrorParser
         
     | 
| 
      
 48 
     | 
    
         
            +
                KeilChain[:ARCHIVER][:ERROR_PARSER] =       keilCompilerErrorParser
         
     | 
| 
      
 49 
     | 
    
         
            +
                KeilChain[:LINKER][:ERROR_PARSER] =         KeilLinkerErrorParser.new
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -78,7 +78,8 @@ module Cxxproject 
     | 
|
| 
       78 
78 
     | 
    
         
             
                      :MAP_FILE_FLAG => "",
         
     | 
| 
       79 
79 
     | 
    
         
             
                      :MAP_FILE_PIPE => true,
         
     | 
| 
       80 
80 
     | 
    
         
             
                      :OUTPUT_ENDING => ".exe", # or .elf
         
     | 
| 
       81 
     | 
    
         
            -
                      :ERROR_PARSER => nil
         
     | 
| 
      
 81 
     | 
    
         
            +
                      :ERROR_PARSER => nil,
         
     | 
| 
      
 82 
     | 
    
         
            +
                      :LIST_MODE => false
         
     | 
| 
       82 
83 
     | 
    
         
             
                    },
         
     | 
| 
       83 
84 
     | 
    
         | 
| 
       84 
85 
     | 
    
         
             
                    :MAKE =>
         
     | 
| 
         @@ -136,3 +137,4 @@ require 'cxxproject/toolchain/gcc' 
     | 
|
| 
       136 
137 
     | 
    
         
             
            require 'cxxproject/toolchain/clang'
         
     | 
| 
       137 
138 
     | 
    
         
             
            require 'cxxproject/toolchain/ti'
         
     | 
| 
       138 
139 
     | 
    
         
             
            require 'cxxproject/toolchain/greenhills'
         
     | 
| 
      
 140 
     | 
    
         
            +
            require 'cxxproject/toolchain/keil'
         
     | 
| 
         @@ -1,22 +1,31 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Cxxproject
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Utils
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
                def self.flagSplit(str)
         
     | 
| 
      
 4 
     | 
    
         
            +
                def self.flagSplit(str, removeQuotes)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  hasQuote = false
         
     | 
| 
       6 
6 
     | 
    
         
             
                  hasDoubleQuote = false
         
     | 
| 
      
 7 
     | 
    
         
            +
                  hadQuote = false
         
     | 
| 
       7 
8 
     | 
    
         
             
                  ar = []
         
     | 
| 
       8 
9 
     | 
    
         
             
                  s = ""
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
      
 11 
     | 
    
         
            +
                  #puts str
         
     | 
| 
      
 12 
     | 
    
         
            +
                  
         
     | 
| 
       10 
13 
     | 
    
         
             
                  str.split("").each do |i|
         
     | 
| 
       11 
14 
     | 
    
         
             
                    hasDoubleQuote = !hasDoubleQuote if !hasQuote and i == '"'
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                    hasQuote = !hasQuote if !hasDoubleQuote and i == '\''
         
     | 
| 
      
 16 
     | 
    
         
            +
                    hadQuote = true if hasDoubleQuote
         
     | 
| 
      
 17 
     | 
    
         
            +
                    if i == ' '
         
     | 
| 
      
 18 
     | 
    
         
            +
                      if not hasDoubleQuote and not hasQuote
         
     | 
| 
      
 19 
     | 
    
         
            +
                        if hadQuote and removeQuotes
         
     | 
| 
      
 20 
     | 
    
         
            +
                          ar << s[1..-2] if s.length > 2
         
     | 
| 
      
 21 
     | 
    
         
            +
                          hadQuote = false
         
     | 
| 
      
 22 
     | 
    
         
            +
                        else
         
     | 
| 
      
 23 
     | 
    
         
            +
                          ar << s if s.length > 0
         
     | 
| 
      
 24 
     | 
    
         
            +
                        end
         
     | 
| 
      
 25 
     | 
    
         
            +
                        s = ""
         
     | 
| 
      
 26 
     | 
    
         
            +
                        next
         
     | 
| 
      
 27 
     | 
    
         
            +
                      end
         
     | 
| 
      
 28 
     | 
    
         
            +
                    end
         
     | 
| 
       20 
29 
     | 
    
         
             
                    s << i
         
     | 
| 
       21 
30 
     | 
    
         
             
                  end
         
     | 
| 
       22 
31 
     | 
    
         
             
                  ar << s if s.length > 0
         
     | 
    
        data/lib/cxxproject/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            name: cxxproject
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
4 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       5 
     | 
    
         
            -
              version: 0.5. 
     | 
| 
      
 5 
     | 
    
         
            +
              version: 0.5.68
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors: 
         
     | 
| 
       8 
8 
     | 
    
         
             
            - oliver mueller
         
     | 
| 
         @@ -10,7 +10,7 @@ autorequire: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            date: 2013- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2013-09-09 00:00:00 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: highline
         
     | 
| 
         @@ -63,6 +63,8 @@ files: 
     | 
|
| 
       63 
63 
     | 
    
         
             
            - lib/cxxproject/errorparser/gcc_linker_error_parser.rb
         
     | 
| 
       64 
64 
     | 
    
         
             
            - lib/cxxproject/errorparser/greenhills_compiler_error_parser.rb
         
     | 
| 
       65 
65 
     | 
    
         
             
            - lib/cxxproject/errorparser/greenhills_linker_error_parser.rb
         
     | 
| 
      
 66 
     | 
    
         
            +
            - lib/cxxproject/errorparser/keil_compiler_error_parser.rb
         
     | 
| 
      
 67 
     | 
    
         
            +
            - lib/cxxproject/errorparser/keil_linker_error_parser.rb
         
     | 
| 
       66 
68 
     | 
    
         
             
            - lib/cxxproject/errorparser/ti_compiler_error_parser.rb
         
     | 
| 
       67 
69 
     | 
    
         
             
            - lib/cxxproject/errorparser/ti_linker_error_parser.rb
         
     | 
| 
       68 
70 
     | 
    
         
             
            - lib/cxxproject/eval_context.rb
         
     | 
| 
         @@ -79,6 +81,7 @@ files: 
     | 
|
| 
       79 
81 
     | 
    
         
             
            - lib/cxxproject/toolchain/diab.rb
         
     | 
| 
       80 
82 
     | 
    
         
             
            - lib/cxxproject/toolchain/gcc.rb
         
     | 
| 
       81 
83 
     | 
    
         
             
            - lib/cxxproject/toolchain/greenhills.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/cxxproject/toolchain/keil.rb
         
     | 
| 
       82 
85 
     | 
    
         
             
            - lib/cxxproject/toolchain/provider.rb
         
     | 
| 
       83 
86 
     | 
    
         
             
            - lib/cxxproject/toolchain/ti.rb
         
     | 
| 
       84 
87 
     | 
    
         
             
            - lib/cxxproject/toolchain/toolchain.rb
         
     |