madrona-rad 0.2.7 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/History.txt +6 -15
  2. data/Manifest.txt +38 -5
  3. data/README.rdoc +19 -7
  4. data/Rakefile +4 -3
  5. data/bin/rad +214 -130
  6. data/lib/examples/basic_blink.rb +10 -0
  7. data/lib/examples/blink_with_serial.rb +16 -0
  8. data/lib/examples/external_variable_fu.rb +21 -19
  9. data/lib/examples/external_variables.rb +0 -3
  10. data/lib/examples/hello_array2.rb +34 -1
  11. data/lib/examples/hello_array_eeprom.rb +4 -6
  12. data/lib/examples/hello_clock.rb +84 -0
  13. data/lib/examples/hello_eeprom.rb +3 -3
  14. data/lib/examples/hello_eeprom_lcdpa.rb +2 -2
  15. data/lib/examples/hello_format_print.rb +94 -0
  16. data/lib/examples/hello_spectra_sound.rb +38 -0
  17. data/lib/examples/hello_world.rb +3 -3
  18. data/lib/examples/hello_xbee.rb +12 -0
  19. data/lib/examples/midi_beat_box.rb +86 -0
  20. data/lib/examples/midi_scales.rb +94 -0
  21. data/lib/examples/servo_throttle.rb +11 -8
  22. data/lib/examples/software_serial.rb +10 -0
  23. data/lib/examples/twitter.rb +57 -0
  24. data/lib/libraries/AFSoftSerial/AFSoftSerial.cpp +321 -0
  25. data/lib/libraries/AFSoftSerial/AFSoftSerial.h +61 -0
  26. data/lib/libraries/{Servo → AFSoftSerial}/keywords.txt +18 -25
  27. data/lib/libraries/AF_XPort/AF_XPort.cpp +166 -0
  28. data/lib/libraries/AF_XPort/AF_XPort.h +48 -0
  29. data/lib/libraries/DS1307/DS1307.cpp +10 -9
  30. data/lib/libraries/DS1307/DS1307.h +6 -4
  31. data/lib/libraries/I2CEEPROM/I2CEEPROM.cpp +120 -0
  32. data/lib/libraries/I2CEEPROM/I2CEEPROM.h +70 -0
  33. data/lib/libraries/I2CEEPROM/keywords.txt +21 -0
  34. data/lib/libraries/LoopTimer/LoopTimer.cpp +35 -0
  35. data/lib/libraries/LoopTimer/LoopTimer.h +34 -0
  36. data/lib/libraries/LoopTimer/keywords.txt +27 -0
  37. data/lib/libraries/SWSerLCDpa/SWSerLCDpa.cpp +42 -48
  38. data/lib/libraries/SWSerLCDpa/SWSerLCDpa.h +11 -12
  39. data/lib/libraries/SWSerLCDsf/SWSerLCDsf.cpp +38 -0
  40. data/lib/libraries/SWSerLCDsf/SWSerLCDsf.h +9 -2
  41. data/lib/plugins/blink.rb +25 -0
  42. data/lib/plugins/blink_m.rb +3 -3
  43. data/lib/plugins/lcd_padding.rb +19 -0
  44. data/lib/plugins/midi.rb +60 -0
  45. data/lib/plugins/parallax_ping.rb +50 -0
  46. data/lib/plugins/servo_setup.rb +1 -1
  47. data/lib/plugins/twitter_connect.rb +145 -0
  48. data/lib/rad/README.rdoc +5 -0
  49. data/lib/rad/arduino_sketch.rb +91 -904
  50. data/lib/rad/darwin_installer.rb +23 -0
  51. data/lib/rad/generators/makefile/makefile.erb +1 -1
  52. data/lib/rad/generators/makefile/makefile.rb +3 -3
  53. data/lib/rad/hardware_library.rb +813 -0
  54. data/lib/rad/init.rb +4 -2
  55. data/lib/rad/linux_installer.rb +132 -0
  56. data/lib/rad/progressbar.rb +236 -0
  57. data/lib/rad/rad_processor.rb +56 -9
  58. data/lib/rad/rad_rewriter.rb +7 -2
  59. data/lib/rad/rad_type_checker.rb +1 -1
  60. data/lib/rad/sketch_compiler.rb +47 -0
  61. data/lib/rad/tasks/build_and_make.rake +41 -48
  62. data/lib/rad/version.rb +2 -2
  63. data/spec/examples/hello_world.rb +11 -0
  64. data/spec/examples/serial_motor.rb +12 -0
  65. data/spec/models/sketch_compiler_spec.rb +96 -0
  66. data/spec/sim/hello_world_spec.rb +0 -0
  67. data/test/hello_world_test/Makefile +436 -0
  68. data/test/hello_world_test/hello_world.cpp +23 -0
  69. data/test/test_array_processing.rb +1 -1
  70. data/test/test_plugin_loading.rb +1 -1
  71. data/test/test_translation_post_processing.rb +14 -70
  72. metadata +52 -39
  73. data/lib/examples/orig_servo_throttle.rb +0 -39
  74. data/lib/plugins/i2c_eeprom.rb +0 -70
@@ -1,7 +1,11 @@
1
1
  require 'ruby_to_ansi_c'
2
2
 
3
3
  class RADRewriter < Rewriter
4
-
4
+ def initialize # :nodoc:
5
+ super
6
+ self.auto_shift_type = true
7
+ end
8
+
5
9
  def process_iter(exp)
6
10
  call = process exp.shift
7
11
  var = process exp.shift
@@ -50,6 +54,7 @@ class RADRewriter < Rewriter
50
54
  s(:lasgn, var_name,
51
55
  s(:call, s(:lvar, var_name), :+,
52
56
  s(:arglist, s(:lit, 1))))), true))
57
+
53
58
  when :times then
54
59
  # REFACTOR: mostly duped from above and gave default start value of 0
55
60
  # and a finish value that was the start value above
@@ -91,4 +96,4 @@ class RADRewriter < Rewriter
91
96
  end
92
97
  end
93
98
 
94
- end
99
+ end
@@ -23,4 +23,4 @@ class RADTypeChecker < TypeChecker
23
23
  raise "need to finish process_const in #{self.class}"
24
24
  end
25
25
 
26
- end
26
+ end
@@ -0,0 +1,47 @@
1
+ # TODO:
2
+ # compilation
3
+ # gather pieces of code we need as strings
4
+ # translate non-loop methods
5
+ # do plugin stuff
6
+ # deal with examples/ exception
7
+ # manage upload process
8
+ # compose_setup should move in here entirely
9
+
10
+ # require 'arduino_sketch'
11
+
12
+ class SketchCompiler
13
+ attr_accessor :path, :body, :klass, :target_dir, :name
14
+
15
+ def initialize path_to_sketch
16
+ @path = File.expand_path(path_to_sketch)
17
+ @body = open(@path).read
18
+ @name = @path.split("/").last.split(".").first
19
+ @klass = @name.split(".").first.split("_").collect{|c| c.capitalize}.join("")
20
+ @target_dir = parent_dir
21
+ end
22
+
23
+ def parent_dir
24
+ self.path.split("/")[0..@path.split("/").length-2].join("/")
25
+ end
26
+
27
+ def build_dir
28
+ "#{self.target_dir}/#{self.name}"
29
+ end
30
+
31
+ def create_build_dir! optional_path_prefix=nil
32
+ self.target_dir = optional_path_prefix if optional_path_prefix
33
+ mkdir_p build_dir
34
+ end
35
+
36
+ def process_constants
37
+ self.body.gsub!("HIGH", "1")
38
+ self.body.gsub!("LOW", "0")
39
+ self.body.gsub!("ON", "1")
40
+ self.body.gsub!("OFF", "0")
41
+ end
42
+
43
+ def sketch_methods
44
+ self.body.scan(/^\s*def\s.\w*/).collect{ |m| m.gsub(/\s*def\s*/, "") }
45
+ end
46
+
47
+ end
@@ -19,18 +19,20 @@ namespace :test do
19
19
  end
20
20
 
21
21
  task :compile => :gather do
22
+
22
23
  @examples.each {|e| run_tests(e, "compile")}
23
- end
24
24
  end
25
25
 
26
26
  desc "gather all tests"
27
27
  task :gather do # => "make:upload" do
28
28
  @examples = []
29
- @test_results = []
30
- Dir.entries( File.expand_path("#{RAD_ROOT}/examples/") ).each do |f|
31
- if (f =~ /\.rb$/)
32
- @examples << f.split('.').first
29
+ if ENV['sketch']
30
+ @examples << ENV['sketch']
31
+ else
32
+ Dir.entries( File.expand_path("#{RAD_ROOT}/examples/") ).each do |f|
33
+ @examples << f.split('.').first if (f =~ /\.rb$/)
33
34
  end
35
+ end
34
36
  end
35
37
 
36
38
  end
@@ -44,34 +46,34 @@ namespace :make do
44
46
  puts "Reset the Arduino and hit enter.\n==If your board doesn't need it, you can turn off this prompt in config/software.yml=="
45
47
  STDIN.gets.chomp
46
48
  end
47
- sh %{cd #{RAD_ROOT}/#{@test_dir + @sketch_name}; make upload}
49
+ sh %{cd #{@sketch.build_dir}; make upload}
48
50
  end
49
51
 
50
52
  desc "generate a makefile and use it to compile the .cpp"
51
53
  task :compile => [:clean_sketch_dir, "build:sketch"] do # should also depend on "build:sketch"
52
- Makefile.compose_for_sketch( @test_dir + @sketch_name )
54
+ Makefile.compose_for_sketch( @sketch.build_dir )
55
+
53
56
  # not allowed? sh %{export PATH=#{Makefile.software_params[:arduino_root]}/tools/avr/bin:$PATH}
54
- sh %{cd #{RAD_ROOT}/#{@test_dir + @sketch_name}; make depend; make}
57
+ sh %{cd #{@sketch.build_dir}; make depend; make}
55
58
  end
56
59
 
57
60
  desc "generate a makefile and use it to compile the .cpp using the current .cpp file"
58
61
  task :compile_cpp => ["build:sketch_dir", "build:gather_required_plugins", "build:plugin_setup", "build:setup", :clean_sketch_dir] do # should also depend on "build:sketch"
59
- Makefile.compose_for_sketch( @test_dir + @sketch_name )
62
+ Makefile.compose_for_sketch( @sketch.build_dir )
60
63
  # not allowed? sh %{export PATH=#{Makefile.software_params[:arduino_root]}/tools/avr/bin:$PATH}
61
- sh %{cd #{RAD_ROOT}/#{@test_dir + @sketch_name}; make depend; make}
64
+ sh %{cd #{@sketch.build_dir}; make depend; make}
62
65
  end
63
66
 
64
67
  desc "generate a makefile and use it to compile the .cpp and upload it using current .cpp file"
65
68
  task :upload_cpp => ["build:sketch_dir", "build:gather_required_plugins", "build:plugin_setup", "build:setup", :clean_sketch_dir] do # should also depend on "build:sketch"
66
- Makefile.compose_for_sketch( @test_dir + @sketch_name )
69
+ Makefile.compose_for_sketch( @sketch.build_dir )
67
70
  # not allowed? sh %{export PATH=#{Makefile.software_params[:arduino_root]}/tools/avr/bin:$PATH}
68
- sh %{cd #{RAD_ROOT}/#{@test_dir + @sketch_name}; make depend; make upload}
71
+ sh %{cd #{@sketch.build_dir}; make depend; make upload}
69
72
  end
70
73
 
71
74
  task :clean_sketch_dir => ["build:file_list", "build:sketch_dir"] do
72
- @sketch_name = @sketch_class.split(".").first
73
- FileList.new(Dir.entries("#{RAD_ROOT}/#{@test_dir + @sketch_name}")).exclude("#{@sketch_name}.cpp").exclude(/^\./).each do |f|
74
- sh %{rm #{RAD_ROOT}/#{@test_dir + @sketch_name}/#{f}}
75
+ FileList.new(Dir.entries("#{@sketch.build_dir}")).exclude("#{@sketch.name}.cpp").exclude(/^\./).each do |f|
76
+ sh %{rm #{@sketch.build_dir}/#{f}}
75
77
  end
76
78
  end
77
79
 
@@ -81,14 +83,13 @@ namespace :build do
81
83
 
82
84
  desc "actually build the sketch"
83
85
  task :sketch => [:file_list, :sketch_dir, :gather_required_plugins, :plugin_setup, :setup] do
84
- klass = @sketch_class.split(".").first.split("_").collect{|c| c.capitalize}.join("")
85
- eval ArduinoSketch.pre_process(File.read(@test_dir + @sketch_class))
86
86
  c_methods = []
87
87
  sketch_signatures = []
88
88
  # until we better understand RubyToC let's see what's happening on errors
89
- $sketch_methods.each do |meth|
90
- raw_rtc_meth = RADProcessor.translate(constantize(klass), meth)
91
- puts "Translator Error: #{raw_rtc_meth.inspect}" if raw_rtc_meth[0..8] == "// ERROR:"
89
+ @sketch.sketch_methods.each do |meth|
90
+ # use the shiny new RubyToC version
91
+ raw_rtc_meth = RADProcessor.translate(@sketch.path, @sketch.klass.intern, meth.intern)
92
+ puts "Translator Error: #{raw_rtc_meth.inspect}" if raw_rtc_meth =~ /\/\/ ERROR:/
92
93
  c_methods << raw_rtc_meth unless meth == "setup"
93
94
  # treat the setup method differently
94
95
  @additional_setup = [] if meth == "setup"
@@ -98,33 +99,31 @@ namespace :build do
98
99
  clean_c_methods = []
99
100
  # remove external variables that were previously injected
100
101
  c_methods.join("\n").each { |meth| clean_c_methods << ArduinoSketch.post_process_ruby_to_c_methods(meth) }
101
- c_methods_with_timer = clean_c_methods.join.gsub(/loop\(\)\s\{/,"loop() {\ntrack_total_loop_time();")
102
+ c_methods_with_timer = clean_c_methods.join.gsub(/loop\(\)\s\{/,"loop() {")
102
103
  # last chance to add/change setup
103
104
  @setup[2] << sketch_signatures.join("\n") unless sketch_signatures.empty?
104
105
  # add special setup method to existing setup if present
105
106
  if @additional_setup
106
107
  @setup[2] << "void additional_setup();" # declaration
107
- @setup[4] << "additional_setup();" # call from setup
108
+ @setup[4] << "\tadditional_setup();" # call from setup
108
109
  @setup[5] << @additional_setup.join("") #
109
110
  end
110
111
  result = "#{@setup.join( "\n" )}\n#{c_methods_with_timer}\n"
111
- name = @sketch_class.split(".").first
112
- File.open("#{@test_dir}#{name}/#{name}.cpp", "w"){|f| f << result}
112
+ File.open("#{@sketch.build_dir}/#{@sketch.name}.cpp", "w"){|f| f << result}
113
113
  end
114
114
 
115
115
  # needs to write the library include and the method signatures
116
116
  desc "build setup function"
117
117
  task :setup do
118
- klass = @sketch_class.split(".").first.split("_").collect{|c| c.capitalize}.join("")
119
- eval "class #{klass} < ArduinoSketch; end;"
118
+ eval "class #{@sketch.klass} < ArduinoSketch; end;"
120
119
 
121
- @@as = ArduinoSketch.new
120
+ @@as = HardwareLibrary.new
122
121
 
123
122
  delegate_methods = @@as.methods - Object.new.methods
124
123
  delegate_methods.reject!{|m| m == "compose_setup"}
125
124
 
126
125
  delegate_methods.each do |meth|
127
- constantize(klass).module_eval <<-CODE
126
+ constantize(@sketch.klass).module_eval <<-CODE
128
127
  def self.#{meth}(*args)
129
128
  @@as.#{meth}(*args)
130
129
  end
@@ -132,14 +131,17 @@ namespace :build do
132
131
  end
133
132
  # allow variable declaration without quotes: @foo = int
134
133
  ["long","unsigned","int","byte","short"].each do |type|
135
- constantize(klass).module_eval <<-CODE
134
+ constantize(@sketch.klass).module_eval <<-CODE
136
135
  def self.#{type}
137
136
  return "#{type}"
138
137
  end
139
138
  CODE
140
139
  end
141
- eval File.read(@test_dir + @sketch_class)
142
- @@as.process_external_vars(constantize(klass))
140
+
141
+ @sketch.process_constants
142
+
143
+ eval ArduinoSketch.pre_process(@sketch.body)
144
+ @@as.process_external_vars(constantize(@sketch.klass))
143
145
  @setup = @@as.compose_setup
144
146
  end
145
147
 
@@ -170,36 +172,27 @@ namespace :build do
170
172
  desc "determine which plugins to load based on use of methods in sketch"
171
173
  task :gather_required_plugins do
172
174
  @plugin_names.each do |name|
173
- ArduinoPlugin.check_for_plugin_use(File.read(@test_dir + @sketch_class), File.read("vendor/plugins/#{name}"), name )
175
+ ArduinoPlugin.check_for_plugin_use(@sketch.body, File.read("vendor/plugins/#{name}"), name )
174
176
  end
175
177
  puts "#{$plugins_to_load.length} of #{$plugin_methods_hash.length} plugins are being loaded: #{$plugins_to_load.join(", ")}"
176
178
  end
177
179
 
178
180
  desc "setup target directory named after your sketch class"
179
181
  task :sketch_dir => [:file_list] do
180
- mkdir_p "#{@test_dir + @sketch_class.split(".").first}"
182
+ @sketch.create_build_dir!
181
183
  end
182
184
 
183
185
  task :file_list do
184
186
  # take another look at this, since if the root directory name is changed, everything breaks
185
187
  # perhaps we generate a constant when the project is generated an pop it here or in the init file
186
- @sketch_directory = File.expand_path("#{File.dirname(__FILE__)}/../../../").split("/").last
187
- # multiple sketches are possible with rake make:upload sketch=new_sketch
188
- @test_dir = ""
189
- if ENV['sketch'] =~ /^examples\//
190
- # strip the example and set a directory variable
191
- ENV['sketch'] = ENV['sketch'].gsub(/^examples\//, "")
192
- @test_dir = "examples/"
188
+ if ENV['sketch']
189
+ @sketch = SketchCompiler.new File.expand_path("#{ENV['sketch']}.rb")
190
+ else
191
+ # assume the only .rb file in the sketch dir is the sketch:
192
+ @sketch = SketchCompiler.new Dir.glob("#{File.expand_path(File.dirname(__FILE__))}/../../../*.rb").first
193
193
  end
194
- @sketch_class = ENV['sketch'] ? "#{ENV['sketch']}.rb" : "#{@sketch_directory}.rb"
195
- $sketch_file_location = @test_dir + @sketch_class
196
- @file_names = []
194
+
197
195
  @plugin_names = []
198
- Dir.entries( File.expand_path(RAD_ROOT) ).each do |f|
199
- if (f =~ /\.rb$/)
200
- @file_names << f
201
- end
202
- end
203
196
  Dir.entries( File.expand_path("#{RAD_ROOT}/vendor/plugins/") ).each do |f|
204
197
  if (f =~ /\.rb$/)
205
198
  @plugin_names << f
data/lib/rad/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Rad #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 2
5
- TINY = 6
4
+ MINOR = 3
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,11 @@
1
+ # Hardware: LED connected on pin 7
2
+
3
+ class HelloWorld < ArduinoSketch
4
+ output_pin 7, :as => :led
5
+ def loop
6
+ digitalWrite led, ON
7
+ delay 500
8
+ digitalWrite led, OFF
9
+ delay 500
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ # Hardware: motor control circuit (i.e. TIP-120 control pin)
2
+ # connected at pin 7.
3
+ # Demo: http://www.youtube.com/watch?v=7OguEBfdTe0
4
+
5
+ class SerialMotor < ArduinoSketch
6
+ output_pin 7, :as => :motor
7
+ serial_begin
8
+
9
+ def loop
10
+ digitalWrite(motor, serial_read) if serial_available
11
+ end
12
+ end
@@ -0,0 +1,96 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+ require File.expand_path(File.dirname(__FILE__) + "/../../lib/rad/sketch_compiler.rb")
3
+
4
+ context "SketchCompiler#sketch_methods" do
5
+ before do
6
+ @as = File.expand_path(File.dirname(__FILE__)) + "/../../lib/examples/i2c_with_clock_chip.rb"
7
+ @sc = SketchCompiler.new @as
8
+ end
9
+
10
+ it "should locate all the methods defined in the sketch" do
11
+ @sc.sketch_methods.should include( "loop")
12
+ @sc.sketch_methods.should include( "printlz")
13
+ @sc.sketch_methods.should include( "print_hexbyte")
14
+ @sc.sketch_methods.should include( "clear_bottom_line")
15
+ end
16
+ end
17
+
18
+ context "SketchCompiler#process_constants" do
19
+ before do
20
+ @as = File.expand_path(File.dirname(__FILE__)) + "/../../lib/examples/external_variable_fu.rb"
21
+ @sc = SketchCompiler.new @as
22
+ end
23
+
24
+ it "should correctly process constants" do
25
+ @sc.process_constants
26
+ @sc.body.should_not match(/HIGH/)
27
+ @sc.body.should_not match(/LOW/)
28
+ @sc.body.should_not match(/ON/)
29
+ @sc.body.should_not match(/OFF/)
30
+ end
31
+ end
32
+
33
+ context "SketchCompiler.new" do
34
+ before do
35
+ @as = File.expand_path(File.dirname(__FILE__)) + "/../../lib/examples/add_hysteresis.rb"
36
+ end
37
+ it "should correctly absolutize a path with /../ that starts at /" do
38
+ SketchCompiler.new(@as).path.should == "/Users/greg/code/rad/lib/examples/add_hysteresis.rb"
39
+ end
40
+
41
+ it "should correct absolutize a relative path" do
42
+ SketchCompiler.new("lib/examples/add_hysteresis.rb").path.should == "/Users/greg/code/rad/lib/examples/add_hysteresis.rb"
43
+ end
44
+
45
+ it "should load the body of the sketch" do
46
+ sc = SketchCompiler.new @as
47
+ sc.body.should == open(@as).read
48
+ end
49
+
50
+ end
51
+
52
+ context "SketchCompiler#sketch_class" do
53
+ before do
54
+ @sc = SketchCompiler.new File.expand_path(File.dirname(__FILE__)) + "/../../lib/examples/add_hysteresis.rb"
55
+ end
56
+ it "should calculate correctly from the path" do
57
+ @sc.klass.should == "AddHysteresis"
58
+ end
59
+ end
60
+
61
+ context "SketchCompiler#create_build_dir! without a path prefix" do
62
+ before do
63
+ @sc = SketchCompiler.new("lib/examples/add_hysteresis.rb")
64
+ end
65
+ it "should create the sketch dir in the correct place" do
66
+ @sc.should_receive( :mkdir_p ).with( "/Users/greg/code/rad/lib/examples/add_hysteresis" )
67
+ @sc.create_build_dir!
68
+ end
69
+ end
70
+
71
+ context "SketchCompiler#create_build_dir! with a path prefix" do
72
+ before do
73
+ @sc = SketchCompiler.new("lib/examples/add_hysteresis.rb")
74
+ end
75
+ it "should create the sketch dir in the correct place" do
76
+ @sc.should_receive( :mkdir_p ).with( "prefix/add_hysteresis" )
77
+ @sc.create_build_dir! "prefix"
78
+ end
79
+ end
80
+
81
+ context "SketchCompiler#build_dir" do
82
+ before do
83
+ @sc = SketchCompiler.new("lib/examples/add_hysteresis.rb")
84
+ end
85
+
86
+
87
+ it "should be correct with a default target_dir" do
88
+ @sc.build_dir.should == "/Users/greg/code/rad/lib/examples/add_hysteresis"
89
+ end
90
+
91
+ it "should be correct with an altered target_dir" do
92
+ @sc.target_dir = "examples"
93
+ @sc.build_dir.should == "examples/add_hysteresis"
94
+ end
95
+
96
+ end
File without changes
@@ -0,0 +1,436 @@
1
+ # Arduino makefile
2
+ #
3
+ # This makefile allows you to build sketches from the command line
4
+ # without the Arduino environment (or Java).
5
+ #
6
+ # The Arduino environment does preliminary processing on a sketch before
7
+ # compiling it. If you're using this makefile instead, you'll need to do
8
+ # a few things differently:
9
+ #
10
+ # - Give your program's file a .cpp extension (e.g. foo.cpp).
11
+ #
12
+ # - Put this line at top of your code: #include <WProgram.h>
13
+ #
14
+ # - Write prototypes for all your functions (or define them before you
15
+ # call them). A prototype declares the types of parameters a
16
+ # function will take and what type of value it will return. This
17
+ # means that you can have a call to a function before the definition
18
+ # of the function. A function prototype looks like the first line of
19
+ # the function, with a semi-colon at the end. For example:
20
+ # int digitalRead(int pin);
21
+ #
22
+ # - Write a main() function for your program that returns an int, calls
23
+ # init() and setup() once (in that order), and then calls loop()
24
+ # repeatedly():
25
+ #
26
+ # int main()
27
+ # {
28
+ # init();
29
+ # setup();
30
+ #
31
+ # for (;;)
32
+ # loop();
33
+ #
34
+ # return 0;
35
+ # }
36
+ #
37
+ # Instructions for using the makefile:
38
+ #
39
+ # 1. Copy this file into the folder with your sketch.
40
+ #
41
+ # 2. Below, modify the line containing "TARGET" to refer to the name of
42
+ # of your program's file without an extension (e.g. TARGET = foo).
43
+ #
44
+ # 3. Modify the line containg "ARDUINO" to point the directory that
45
+ # contains the Arduino core (for normal Arduino installations, this
46
+ # is the hardware/cores/arduino sub-directory).
47
+ #
48
+ # 4. Modify the line containing "PORT" to refer to the filename
49
+ # representing the USB or serial connection to your Arduino board
50
+ # (e.g. PORT = /dev/tty.USB0). If the exact name of this file
51
+ # changes, you can use * as a wildcard (e.g. PORT = /dev/tty.USB*).
52
+ #
53
+ # 5. At the command line, change to the directory containing your
54
+ # program's file and the makefile.
55
+ #
56
+ # 6. Type "make" and press enter to compile/verify your program.
57
+ #
58
+ # 7. Type "make upload", reset your Arduino board, and press enter to
59
+ # upload your program to the Arduino board.
60
+ #
61
+ # $Id$
62
+
63
+ PORT = /dev/tty.usb*
64
+ TARGET = hello_world
65
+ ARDUINO = /Applications/arduino-0012/hardware/cores/arduino
66
+ SOFTWARE_SERIAL = /Applications/arduino-0012/hardware/libraries/SoftwareSerial
67
+ SRC = $(ARDUINO)/pins_arduino.c $(ARDUINO)/wiring.c \
68
+ $(ARDUINO)/wiring_analog.c $(ARDUINO)/wiring_digital.c \
69
+ $(ARDUINO)/wiring_pulse.c $(ARDUINO)/wiring_serial.c \
70
+ $(ARDUINO)/wiring_shift.c $(ARDUINO)/WInterrupts.c
71
+ CXXSRC = $(ARDUINO)/HardwareSerial.cpp $(SOFTWARE_SERIAL)/SoftwareSerial.cpp $(ARDUINO)/Print.cpp
72
+ MCU = atmega168
73
+ ASRC =
74
+ F_CPU = 16000000
75
+ FORMAT = ihex
76
+ UPLOAD_RATE = 19200
77
+ BIN_DIR = /Applications/arduino-0012/hardware/tools/avr/bin
78
+
79
+ # Name of this Makefile (used for "make depend").
80
+ MAKEFILE = Makefile
81
+
82
+ # Debugging format.
83
+ # Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
84
+ # AVR (extended) COFF requires stabs, plus an avr-objcopy run.
85
+ DEBUG = stabs
86
+
87
+ OPT = s
88
+
89
+ # Place -D or -U options here
90
+ CDEFS = -DF_CPU=$(F_CPU)
91
+ CXXDEFS = -DF_CPU=$(F_CPU)
92
+
93
+ # Place -I options here
94
+ CINCS = -I$(ARDUINO) -I$(SOFTWARE_SERIAL)
95
+ +CXXINCS = -I$(ARDUINO) -I$(SOFTWARE_SERIAL)
96
+
97
+ # Compiler flag to set the C Standard level.
98
+ # c89 - "ANSI" C
99
+ # gnu89 - c89 plus GCC extensions
100
+ # c99 - ISO C99 standard (not yet fully implemented)
101
+ # gnu99 - c99 plus GCC extensions
102
+ CSTANDARD = -std=gnu99
103
+ CDEBUG = -g$(DEBUG)
104
+ CWARN = -Wall -Wstrict-prototypes
105
+ CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
106
+ #CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
107
+
108
+ CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA)
109
+ CXXFLAGS = $(CDEFS) $(CINCS) -O$(OPT)
110
+ #ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
111
+ LDFLAGS = -lm
112
+
113
+
114
+ # Programming support using avrdude. Settings and variables.
115
+ AVRDUDE_PROGRAMMER = stk500
116
+ AVRDUDE_PORT = $(PORT)
117
+ AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
118
+ AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
119
+ -b $(UPLOAD_RATE) -C /Applications/arduino-0012/hardware/tools/avr/etc/avrdude.conf
120
+
121
+ # Program settings
122
+ CC = $(BIN_DIR)/avr-gcc
123
+ CXX = $(BIN_DIR)/avr-g++
124
+ OBJCOPY = $(BIN_DIR)/avr-objcopy
125
+ OBJDUMP = $(BIN_DIR)/avr-objdump
126
+ AR = $(BIN_DIR)/avr-ar
127
+ SIZE = $(BIN_DIR)/avr-size
128
+ NM = $(BIN_DIR)/avr-nm
129
+ AVRDUDE = $(BIN_DIR)/avrdude
130
+ REMOVE = rm -f
131
+ MV = mv -f
132
+
133
+ # Define all object files.
134
+ OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o)
135
+
136
+ # Define all listing files.
137
+ LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst)
138
+
139
+ # Combine all necessary flags and optional flags.
140
+ # Add target processor to flags.
141
+ ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
142
+ ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS)
143
+ ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
144
+
145
+
146
+ # Default target.
147
+ all: build
148
+
149
+ build: elf hex
150
+
151
+ elf: $(TARGET).elf
152
+ hex: $(TARGET).hex
153
+ eep: $(TARGET).eep
154
+ lss: $(TARGET).lss
155
+ sym: $(TARGET).sym
156
+
157
+ # Program the device.
158
+ upload: $(TARGET).hex
159
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)
160
+
161
+
162
+
163
+
164
+ # Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
165
+ COFFCONVERT=$(OBJCOPY) --debugging \
166
+ --change-section-address .data-0x800000 \
167
+ --change-section-address .bss-0x800000 \
168
+ --change-section-address .noinit-0x800000 \
169
+ --change-section-address .eeprom-0x810000
170
+
171
+
172
+ coff: $(TARGET).elf
173
+ $(COFFCONVERT) -O coff-avr $(TARGET).elf $(TARGET).cof
174
+
175
+
176
+ extcoff: $(TARGET).elf
177
+ $(COFFCONVERT) -O coff-ext-avr $(TARGET).elf $(TARGET).cof
178
+
179
+
180
+ .SUFFIXES: .elf .hex .eep .lss .sym
181
+
182
+ .elf.hex:
183
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
184
+
185
+ .elf.eep:
186
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
187
+ --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
188
+
189
+ # Create extended listing file from ELF output file.
190
+ .elf.lss:
191
+ $(OBJDUMP) -h -S $< > $@
192
+
193
+ # Create a symbol table from ELF output file.
194
+ .elf.sym:
195
+ $(NM) -n $< > $@
196
+
197
+
198
+ core.a: $(OBJ)
199
+ @for i in $(OBJ); do echo $(AR) rcs core.a $$i; $(AR) rcs core.a $$i; done
200
+
201
+ # Link: create ELF output file from library.
202
+ $(TARGET).elf: core.a
203
+ $(CC) $(ALL_CFLAGS) -o $@ $(TARGET).cpp -L. core.a $(LDFLAGS)
204
+
205
+ # Compile: create object files from C++ source files.
206
+ .cpp.o:
207
+ $(CXX) -c $(ALL_CXXFLAGS) $< -o $@
208
+
209
+ # Compile: create object files from C source files.
210
+ .c.o:
211
+ $(CC) -c $(ALL_CFLAGS) $< -o $@
212
+
213
+
214
+ # Compile: create assembler files from C source files.
215
+ .c.s:
216
+ $(CC) -S $(ALL_CFLAGS) $< -o $@
217
+
218
+
219
+ # Assemble: create object files from assembler source files.
220
+ .S.o:
221
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@
222
+
223
+
224
+
225
+ # Target: clean project.
226
+ clean:
227
+ $(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).cof $(TARGET).elf \
228
+ $(TARGET).map $(TARGET).sym $(TARGET).lss core.a \
229
+ $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d)
230
+
231
+ depend:
232
+ if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \
233
+ then \
234
+ sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \
235
+ $(MAKEFILE).$$$$ && \
236
+ $(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \
237
+ fi
238
+ echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \
239
+ >> $(MAKEFILE); \
240
+ $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE)
241
+
242
+ .PHONY: all build elf hex eep lss sym program coff extcoff clean depend
243
+ # DO NOT DELETE THIS LINE -- make depend depends on it.
244
+ pins_arduino.o: \
245
+ /Applications/arduino-0012/hardware/cores/arduino/pins_arduino.c \
246
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
247
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
248
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
249
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
250
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
251
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
252
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
253
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
254
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
255
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
256
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
257
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
258
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
259
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
260
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
261
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h \
262
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
263
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
264
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
265
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
266
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h \
267
+ /Applications/arduino-0012/hardware/cores/arduino/pins_arduino.h \
268
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/pgmspace.h
269
+ wiring.o: /Applications/arduino-0012/hardware/cores/arduino/wiring.c \
270
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
271
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
272
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
273
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
274
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
275
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
276
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
277
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
278
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
279
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
280
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
281
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
282
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
283
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
284
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
285
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h \
286
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
287
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
288
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
289
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
290
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h
291
+ wiring_analog.o: \
292
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_analog.c \
293
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
294
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
295
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
296
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
297
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
298
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
299
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
300
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
301
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
302
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
303
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
304
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
305
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
306
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
307
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
308
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h \
309
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
310
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
311
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
312
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
313
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h \
314
+ /Applications/arduino-0012/hardware/cores/arduino/pins_arduino.h \
315
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/pgmspace.h
316
+ wiring_digital.o: \
317
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_digital.c \
318
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
319
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
320
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
321
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
322
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
323
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
324
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
325
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
326
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
327
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
328
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
329
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
330
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
331
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
332
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
333
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h \
334
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
335
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
336
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
337
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
338
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h \
339
+ /Applications/arduino-0012/hardware/cores/arduino/pins_arduino.h \
340
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/pgmspace.h
341
+ wiring_pulse.o: \
342
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_pulse.c \
343
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
344
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
345
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
346
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
347
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
348
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
349
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
350
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
351
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
352
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
353
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
354
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
355
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
356
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
357
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
358
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h \
359
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
360
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
361
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
362
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
363
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h \
364
+ /Applications/arduino-0012/hardware/cores/arduino/pins_arduino.h \
365
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/pgmspace.h
366
+ wiring_serial.o: \
367
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_serial.c \
368
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
369
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
370
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
371
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
372
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
373
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
374
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
375
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
376
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
377
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
378
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
379
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
380
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
381
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
382
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
383
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h \
384
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
385
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
386
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
387
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
388
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h
389
+ wiring_shift.o: \
390
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_shift.c \
391
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
392
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
393
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
394
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
395
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
396
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
397
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
398
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
399
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
400
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
401
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
402
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
403
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
404
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
405
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
406
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h \
407
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
408
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
409
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
410
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
411
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h
412
+ WInterrupts.o: \
413
+ /Applications/arduino-0012/hardware/cores/arduino/WInterrupts.c \
414
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/inttypes.h \
415
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdint.h \
416
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/io.h \
417
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/sfr_defs.h \
418
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iom168.h \
419
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/iomx8.h \
420
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/portpins.h \
421
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/common.h \
422
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/version.h \
423
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/fuse.h \
424
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/lock.h \
425
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/interrupt.h \
426
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/pgmspace.h \
427
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stddef.h \
428
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/stdio.h \
429
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/include/stdarg.h \
430
+ /Applications/arduino-0012/hardware/cores/arduino/WConstants.h \
431
+ /Applications/arduino-0012/hardware/cores/arduino/wiring.h \
432
+ /Applications/arduino-0012/hardware/cores/arduino/binary.h \
433
+ /Applications/arduino-0012/hardware/cores/arduino/wiring_private.h \
434
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/avr/delay.h \
435
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay.h \
436
+ /Applications/arduino-0012/hardware/tools/avr/bin/../lib/gcc/avr/4.3.0/../../../../avr/include/util/delay_basic.h