mkduino 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/makefile_am.rb +281 -0
- data/lib/mkduino/version.rb +1 -1
- data/lib/mkduino.rb +3 -280
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11a2abcc1b68c38d34f5bf1763fd2cf5227a4e01
|
4
|
+
data.tar.gz: e89d95f2c2733d0aa92cd3d863808ad16eb5bfb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc9e49b821fb7e42562fb9f56f005bfc172029b62b00c874199493b5c9dc286af0ac78ba80e53beb38acbea34b5df538b3160856d6e8f635651afbf991a23a02
|
7
|
+
data.tar.gz: 6f67a86c6b0936e9db46082e96246ce80f30b327bf8308964818f519f1c68e7fe76fe9a89efb4bb0b6b0943cbdb43352d0eb72cbfdcee0a1535bfc5e71cf9b6c
|
data/lib/makefile_am.rb
ADDED
@@ -0,0 +1,281 @@
|
|
1
|
+
#
|
2
|
+
# Class that keeps up with the stuff needed for the Makefile.am file
|
3
|
+
# this is most of the stuff needed to generate the automake stuff
|
4
|
+
#
|
5
|
+
|
6
|
+
module Mkduino
|
7
|
+
class MakefileAm
|
8
|
+
attr_accessor :source_files, :header_files, :arduino_sources
|
9
|
+
attr_accessor :project_name, :project_author, :project_dir
|
10
|
+
attr_accessor :project_includes
|
11
|
+
# future stuff
|
12
|
+
attr_accessor :git_project
|
13
|
+
attr_accessor :board, :common_includes
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@project_dir = Dir.pwd
|
17
|
+
@project_name = File.basename @project_dir
|
18
|
+
@project_name.tr!('.-','__')
|
19
|
+
@source_files = []
|
20
|
+
@header_files = []
|
21
|
+
@project_includes = []
|
22
|
+
@arduino_sources = []
|
23
|
+
@arduino_includes = []
|
24
|
+
@arduino_libraries = []
|
25
|
+
@project_author = {}
|
26
|
+
@git_project = nil
|
27
|
+
@common_libraries = ['arduino', 'spi','wire']
|
28
|
+
@libraries_to_skip = {
|
29
|
+
'standard' => ['Esplora','GSM','Robot_Control','Robot_Motor','TFT','robot']
|
30
|
+
}
|
31
|
+
@board='standard'
|
32
|
+
@project_author[:username] = ENV['USERNAME']
|
33
|
+
git_exists = `which git`.chomp
|
34
|
+
if git_exists && git_exists.length > 0
|
35
|
+
@project_author[:name] = `git config --get user.name`.chomp
|
36
|
+
@project_author[:email] = `git config --get user.email`.chomp
|
37
|
+
@git_project = `git remote show -n origin 2> /dev/null | grep 'Fetch URL:' | cut -f 5 -d ' '`.chomp
|
38
|
+
else
|
39
|
+
@project_author[:name] = @project_author[:username]
|
40
|
+
@project_author[:email]= @project_author[:username]
|
41
|
+
@git_project = "no_git_project"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
#
|
46
|
+
# Add a source file that we found in this directory
|
47
|
+
#
|
48
|
+
def add_source_file(file)
|
49
|
+
@source_files << "../" + Pathname.new(file).relative_path_from(Pathname.new(@project_dir)).to_s
|
50
|
+
end
|
51
|
+
def add_header_file(file)
|
52
|
+
@header_files << "../" + Pathname.new(file).relative_path_from(Pathname.new(@project_dir)).to_s
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_include_path file
|
56
|
+
pn = Pathname.new(file)
|
57
|
+
puts "!! ******** File #{file} not found ******** " unless pn.exist?
|
58
|
+
include_dir = pn.file? ? pn.dirname : file
|
59
|
+
@project_includes << include_dir.to_s unless @project_includes.include? include_dir.to_s
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
#
|
64
|
+
# As libraries are found, add them to our collection
|
65
|
+
# if they're not already there
|
66
|
+
#
|
67
|
+
def add_arduino_library library
|
68
|
+
@arduino_libraries << library if !arduino_library library
|
69
|
+
end
|
70
|
+
|
71
|
+
#
|
72
|
+
# fetch a library from our collection - nil if not there
|
73
|
+
#
|
74
|
+
|
75
|
+
def arduino_library library
|
76
|
+
@arduino_libraries.each do |l|
|
77
|
+
return l if l.name == library
|
78
|
+
end
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
|
82
|
+
#
|
83
|
+
# output the Makefile.am macro needed for some include
|
84
|
+
# files from libraries that are apparently always needed
|
85
|
+
#
|
86
|
+
def common_includes
|
87
|
+
@arduino_libraries.collect do |l|
|
88
|
+
@common_libraries.include?(l.name) ? "$(lib#{l.name}_a_INCLUDES)" : nil
|
89
|
+
end.compact.join(' ')
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
def source_file_pattern
|
94
|
+
/\.([c])(pp|)$/
|
95
|
+
end
|
96
|
+
|
97
|
+
def header_file_pattern
|
98
|
+
/\.([h])(pp|)$/
|
99
|
+
end
|
100
|
+
|
101
|
+
#
|
102
|
+
# output a list of all the libraries that are needed here
|
103
|
+
# for Makefile.am. The project will depend on these
|
104
|
+
#
|
105
|
+
def arduino_library_names
|
106
|
+
@arduino_libraries.collect do |l|
|
107
|
+
l.library_name
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
#
|
112
|
+
# return the linker entries for all of the libraries that we
|
113
|
+
# know about
|
114
|
+
#
|
115
|
+
def arduino_linker_entries
|
116
|
+
@arduino_libraries.collect do |l|
|
117
|
+
"-l#{l.linker_name}"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
#
|
122
|
+
# after finding all of the Arduino libraries, go through each
|
123
|
+
# one of them asking them to output themselves.
|
124
|
+
#
|
125
|
+
|
126
|
+
def output_arduino_libraries
|
127
|
+
output = @arduino_libraries.collect do |l|
|
128
|
+
l.makefile_am_output
|
129
|
+
end.join("\n")
|
130
|
+
#
|
131
|
+
# After all of the library compile lines are output, output
|
132
|
+
# a comprehensive list of all of the include directories associated
|
133
|
+
# with the libraries. Used for the source project
|
134
|
+
#
|
135
|
+
output += "\nLIBRARY_INCLUDES="
|
136
|
+
output += @arduino_libraries.collect do |l|
|
137
|
+
"$(lib#{l.name}_a_INCLUDES)"
|
138
|
+
end.join(' ')
|
139
|
+
end
|
140
|
+
|
141
|
+
def find_arduino_libraries libraries_dir
|
142
|
+
lib = nil
|
143
|
+
Find.find(libraries_dir) do |path|
|
144
|
+
if FileTest.directory?(path)
|
145
|
+
if File.basename(path)[0] == ?. || File.basename(path) == 'examples' ||
|
146
|
+
(@libraries_to_skip[@board] && @libraries_to_skip[@board].include?(File.basename(path)) )
|
147
|
+
Find.prune # Don't look any further into this directory.
|
148
|
+
else
|
149
|
+
if File.dirname(path) == libraries_dir
|
150
|
+
lib_name = path.split('/')[-1]
|
151
|
+
lib = arduino_library(lib_name) || ArduinoLibrary.new(lib_name)
|
152
|
+
add_arduino_library lib
|
153
|
+
end
|
154
|
+
next
|
155
|
+
end
|
156
|
+
elsif path =~ source_file_pattern
|
157
|
+
lib.add_source_file path
|
158
|
+
elsif path =~ header_file_pattern
|
159
|
+
lib.add_include_path path
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def find_source_files
|
165
|
+
#
|
166
|
+
# Root around for some source file
|
167
|
+
# and add them to the Makefile.am
|
168
|
+
#
|
169
|
+
Find.find(Dir.pwd) do |path|
|
170
|
+
if FileTest.directory?(path)
|
171
|
+
if File.basename(path)[0] == ?.
|
172
|
+
Find.prune # Don't look any further into this directory.
|
173
|
+
else
|
174
|
+
next
|
175
|
+
end
|
176
|
+
elsif path =~ source_file_pattern
|
177
|
+
add_source_file path
|
178
|
+
elsif path =~ header_file_pattern
|
179
|
+
add_header_file path
|
180
|
+
add_include_path path
|
181
|
+
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
#
|
186
|
+
# If no source files were found, make
|
187
|
+
# the src/ directory and put in a
|
188
|
+
# sample main.cpp file
|
189
|
+
#
|
190
|
+
if source_files.length < 1
|
191
|
+
`mkdir src` unless Dir.exist?('src')
|
192
|
+
File.open('src/main.cpp',"w") do |f|
|
193
|
+
f.puts <<-MAIN_CPP
|
194
|
+
#include <Arduino.h>
|
195
|
+
|
196
|
+
extern "C" void __cxa_pure_virtual(void) {
|
197
|
+
while(1);
|
198
|
+
}
|
199
|
+
|
200
|
+
void setup() {
|
201
|
+
Serial.begin(115200);
|
202
|
+
Serial.println("Startup...");
|
203
|
+
}
|
204
|
+
|
205
|
+
void loop() {
|
206
|
+
}
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
int main(void)
|
211
|
+
{
|
212
|
+
init();
|
213
|
+
setup();
|
214
|
+
for (;;){
|
215
|
+
loop();
|
216
|
+
}
|
217
|
+
return 0;
|
218
|
+
}
|
219
|
+
MAIN_CPP
|
220
|
+
end
|
221
|
+
add_source_file project_dir + '/src/main.cpp'
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
def write_makefile_am
|
229
|
+
puts "Writing Makefile.am"
|
230
|
+
File.open('Makefile.am',"w") do |f|
|
231
|
+
f.puts <<-MAKEFILE_AM
|
232
|
+
## Process this file with automake to produce Makefile.in
|
233
|
+
bin_PROGRAMS=#{self.project_name}
|
234
|
+
# MCU=atmega1280
|
235
|
+
MCU=atmega328p
|
236
|
+
F_CPU=-DF_CPU=16000000
|
237
|
+
ARDUINO_VERSION=-DARDUINO=105
|
238
|
+
ARDUINO_INSTALL=/usr/share/arduino/hardware/arduino
|
239
|
+
ARDUINO_CORES=$(ARDUINO_INSTALL)/cores/arduino
|
240
|
+
ARDUINO_VARIANTS=$(ARDUINO_INSTALL)/variants/#{self.board}
|
241
|
+
ARDUINO_COMMON_INCLUDES=#{self.common_includes}
|
242
|
+
ARDUINO_INCLUDE_PATH=-I$(ARDUINO_VARIANTS) $(LIBRARY_INCLUDES)
|
243
|
+
nodist_#{self.project_name}_SOURCES=#{self.source_files.join(' ')}
|
244
|
+
|
245
|
+
#{self.project_name}_CFLAGS=-Wall $(#{self.project_name}_INCLUDES) $(ARDUINO_INCLUDE_PATH) -Wl,--gc-sections -ffunction-sections -fdata-sections -gstabs -mmcu=$(MCU) $(F_CPU) $(ARDUINO_VERSION) -D__AVR_LIBC_DEPRECATED_ENABLE__
|
246
|
+
#{self.project_name}_CXXFLAGS=-Wall $(#{self.project_name}_INCLUDES) $(ARDUINO_INCLUDE_PATH) -Wl,--gc-sections -ffunction-sections -fdata-sections -gstabs -mmcu=$(MCU) $(F_CPU) $(ARDUINO_VERSION) -D__AVR_LIBC_DEPRECATED_ENABLE__
|
247
|
+
#{self.project_name}_LDFLAGS=-L.
|
248
|
+
#{self.project_name}_LDADD=#{self.arduino_linker_entries.join(' ')} -lm
|
249
|
+
#{self.project_name}_INCLUDES=-I#{self.project_includes.join("\\\n -I")}
|
250
|
+
|
251
|
+
lib_LIBRARIES=#{self.arduino_library_names.join(' ')}
|
252
|
+
#{self.output_arduino_libraries}
|
253
|
+
|
254
|
+
|
255
|
+
AM_LDFLAGS=
|
256
|
+
AM_CXXFLAGS=-g0 -Os
|
257
|
+
AM_CFLAGS=-g0 -Os
|
258
|
+
VPATH=/usr/share/arduino/hardware/arduino/cores/arduino
|
259
|
+
|
260
|
+
# AVRDUDE_PORT=/dev/ttyACM0
|
261
|
+
AVRDUDE_PORT=/dev/ttyUSB0
|
262
|
+
AVRDUDE_PROGRAMMER = arduino
|
263
|
+
# UPLOAD_RATE = 115200
|
264
|
+
UPLOAD_RATE = 57600
|
265
|
+
FORMAT=ihex
|
266
|
+
|
267
|
+
AVRDUDE_WRITE_FLASH = -U flash:w:$(bin_PROGRAMS).hex
|
268
|
+
AVRDUDE_FLAGS = -q -D -C/etc/avrdude/avrdude.conf -p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) -b$(UPLOAD_RATE)
|
269
|
+
|
270
|
+
|
271
|
+
.PHONY: upload
|
272
|
+
upload: all-am
|
273
|
+
$(OBJCOPY) -S -O $(FORMAT) $(bin_PROGRAMS) $(bin_PROGRAMS).hex
|
274
|
+
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)
|
275
|
+
MAKEFILE_AM
|
276
|
+
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
end
|
281
|
+
end
|
data/lib/mkduino/version.rb
CHANGED
data/lib/mkduino.rb
CHANGED
@@ -6,6 +6,9 @@ require 'fileutils'
|
|
6
6
|
|
7
7
|
include FileUtils
|
8
8
|
|
9
|
+
require_relative "makefile_am"
|
10
|
+
|
11
|
+
|
9
12
|
module Mkduino
|
10
13
|
#
|
11
14
|
# Represents the files needed for a particular arduino library
|
@@ -53,286 +56,6 @@ LIBRARY_OUTPUT
|
|
53
56
|
end
|
54
57
|
end
|
55
58
|
|
56
|
-
#
|
57
|
-
# Class that keeps up with the stuff needed for the Makefile.am file
|
58
|
-
# this is most of the stuff needed to generate the automake stuff
|
59
|
-
#
|
60
|
-
|
61
|
-
class MakefileAm
|
62
|
-
attr_accessor :source_files, :header_files, :arduino_sources
|
63
|
-
attr_accessor :project_name, :project_author, :project_dir
|
64
|
-
attr_accessor :project_includes
|
65
|
-
# future stuff
|
66
|
-
attr_accessor :git_project
|
67
|
-
attr_accessor :board, :common_includes
|
68
|
-
|
69
|
-
def initialize
|
70
|
-
@project_dir = Dir.pwd
|
71
|
-
@project_name = File.basename @project_dir
|
72
|
-
@project_name.tr!('.','_')
|
73
|
-
@source_files = []
|
74
|
-
@header_files = []
|
75
|
-
@project_includes = []
|
76
|
-
@arduino_sources = []
|
77
|
-
@arduino_includes = []
|
78
|
-
@arduino_libraries = []
|
79
|
-
@project_author = {}
|
80
|
-
@git_project = nil
|
81
|
-
@common_libraries = ['arduino', 'spi','wire']
|
82
|
-
@libraries_to_skip = {
|
83
|
-
'standard' => ['Esplora','GSM','Robot_Control','Robot_Motor','TFT','robot']
|
84
|
-
}
|
85
|
-
@board='standard'
|
86
|
-
@project_author[:username] = ENV['USERNAME']
|
87
|
-
git_exists = `which git`.chomp
|
88
|
-
if git_exists && git_exists.length > 0
|
89
|
-
@project_author[:name] = `git config --get user.name`.chomp
|
90
|
-
@project_author[:email] = `git config --get user.email`.chomp
|
91
|
-
@git_project = `git remote show -n origin 2> /dev/null | grep 'Fetch URL:' | cut -f 5 -d ' '`.chomp
|
92
|
-
else
|
93
|
-
@project_author[:name] = @project_author[:username]
|
94
|
-
@project_author[:email]= @project_author[:username]
|
95
|
-
@git_project = "no_git_project"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
#
|
100
|
-
# Add a source file that we found in this directory
|
101
|
-
#
|
102
|
-
def add_source_file(file)
|
103
|
-
@source_files << "../" + Pathname.new(file).relative_path_from(Pathname.new(@project_dir)).to_s
|
104
|
-
end
|
105
|
-
def add_header_file(file)
|
106
|
-
@header_files << "../" + Pathname.new(file).relative_path_from(Pathname.new(@project_dir)).to_s
|
107
|
-
end
|
108
|
-
|
109
|
-
def add_include_path file
|
110
|
-
pn = Pathname.new(file)
|
111
|
-
puts "!! ******** File #{file} not found ******** " unless pn.exist?
|
112
|
-
include_dir = pn.file? ? pn.dirname : file
|
113
|
-
@project_includes << include_dir.to_s unless @project_includes.include? include_dir.to_s
|
114
|
-
end
|
115
|
-
|
116
|
-
|
117
|
-
#
|
118
|
-
# As libraries are found, add them to our collection
|
119
|
-
# if they're not already there
|
120
|
-
#
|
121
|
-
def add_arduino_library library
|
122
|
-
@arduino_libraries << library if !arduino_library library
|
123
|
-
end
|
124
|
-
|
125
|
-
#
|
126
|
-
# fetch a library from our collection - nil if not there
|
127
|
-
#
|
128
|
-
|
129
|
-
def arduino_library library
|
130
|
-
@arduino_libraries.each do |l|
|
131
|
-
return l if l.name == library
|
132
|
-
end
|
133
|
-
nil
|
134
|
-
end
|
135
|
-
|
136
|
-
#
|
137
|
-
# output the Makefile.am macro needed for some include
|
138
|
-
# files from libraries that are apparently always needed
|
139
|
-
#
|
140
|
-
def common_includes
|
141
|
-
@arduino_libraries.collect do |l|
|
142
|
-
@common_libraries.include?(l.name) ? "$(lib#{l.name}_a_INCLUDES)" : nil
|
143
|
-
end.compact.join(' ')
|
144
|
-
end
|
145
|
-
|
146
|
-
|
147
|
-
def source_file_pattern
|
148
|
-
/\.([c])(pp|)$/
|
149
|
-
end
|
150
|
-
|
151
|
-
def header_file_pattern
|
152
|
-
/\.([h])(pp|)$/
|
153
|
-
end
|
154
|
-
|
155
|
-
#
|
156
|
-
# output a list of all the libraries that are needed here
|
157
|
-
# for Makefile.am. The project will depend on these
|
158
|
-
#
|
159
|
-
def arduino_library_names
|
160
|
-
@arduino_libraries.collect do |l|
|
161
|
-
l.library_name
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
#
|
166
|
-
# return the linker entries for all of the libraries that we
|
167
|
-
# know about
|
168
|
-
#
|
169
|
-
def arduino_linker_entries
|
170
|
-
@arduino_libraries.collect do |l|
|
171
|
-
"-l#{l.linker_name}"
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
#
|
176
|
-
# after finding all of the Arduino libraries, go through each
|
177
|
-
# one of them asking them to output themselves.
|
178
|
-
#
|
179
|
-
|
180
|
-
def output_arduino_libraries
|
181
|
-
output = @arduino_libraries.collect do |l|
|
182
|
-
l.makefile_am_output
|
183
|
-
end.join("\n")
|
184
|
-
#
|
185
|
-
# After all of the library compile lines are output, output
|
186
|
-
# a comprehensive list of all of the include directories associated
|
187
|
-
# with the libraries. Used for the source project
|
188
|
-
#
|
189
|
-
output += "\nLIBRARY_INCLUDES="
|
190
|
-
output += @arduino_libraries.collect do |l|
|
191
|
-
"$(lib#{l.name}_a_INCLUDES)"
|
192
|
-
end.join(' ')
|
193
|
-
end
|
194
|
-
|
195
|
-
def find_arduino_libraries libraries_dir
|
196
|
-
lib = nil
|
197
|
-
Find.find(libraries_dir) do |path|
|
198
|
-
if FileTest.directory?(path)
|
199
|
-
if File.basename(path)[0] == ?. || File.basename(path) == 'examples' ||
|
200
|
-
(@libraries_to_skip[@board] && @libraries_to_skip[@board].include?(File.basename(path)) )
|
201
|
-
Find.prune # Don't look any further into this directory.
|
202
|
-
else
|
203
|
-
if File.dirname(path) == libraries_dir
|
204
|
-
lib_name = path.split('/')[-1]
|
205
|
-
lib = arduino_library(lib_name) || ArduinoLibrary.new(lib_name)
|
206
|
-
add_arduino_library lib
|
207
|
-
end
|
208
|
-
next
|
209
|
-
end
|
210
|
-
elsif path =~ source_file_pattern
|
211
|
-
lib.add_source_file path
|
212
|
-
elsif path =~ header_file_pattern
|
213
|
-
lib.add_include_path path
|
214
|
-
end
|
215
|
-
end
|
216
|
-
end
|
217
|
-
|
218
|
-
def find_source_files
|
219
|
-
#
|
220
|
-
# Root around for some source file
|
221
|
-
# and add them to the Makefile.am
|
222
|
-
#
|
223
|
-
Find.find(Dir.pwd) do |path|
|
224
|
-
if FileTest.directory?(path)
|
225
|
-
if File.basename(path)[0] == ?.
|
226
|
-
Find.prune # Don't look any further into this directory.
|
227
|
-
else
|
228
|
-
next
|
229
|
-
end
|
230
|
-
elsif path =~ source_file_pattern
|
231
|
-
add_source_file path
|
232
|
-
elsif path =~ header_file_pattern
|
233
|
-
add_header_file path
|
234
|
-
add_include_path path
|
235
|
-
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
#
|
240
|
-
# If no source files were found, make
|
241
|
-
# the src/ directory and put in a
|
242
|
-
# sample main.cpp file
|
243
|
-
#
|
244
|
-
if source_files.length < 1
|
245
|
-
`mkdir src` unless Dir.exist?('src')
|
246
|
-
File.open('src/main.cpp',"w") do |f|
|
247
|
-
f.puts <<-MAIN_CPP
|
248
|
-
#include <Arduino.h>
|
249
|
-
|
250
|
-
extern "C" void __cxa_pure_virtual(void) {
|
251
|
-
while(1);
|
252
|
-
}
|
253
|
-
|
254
|
-
void setup() {
|
255
|
-
Serial.begin(115200);
|
256
|
-
Serial.println("Startup...");
|
257
|
-
}
|
258
|
-
|
259
|
-
void loop() {
|
260
|
-
}
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
int main(void)
|
265
|
-
{
|
266
|
-
init();
|
267
|
-
setup();
|
268
|
-
for (;;){
|
269
|
-
loop();
|
270
|
-
}
|
271
|
-
return 0;
|
272
|
-
}
|
273
|
-
MAIN_CPP
|
274
|
-
end
|
275
|
-
add_source_file project_dir + '/src/main.cpp'
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
def write_makefile_am
|
283
|
-
puts "Writing Makefile.am"
|
284
|
-
File.open('Makefile.am',"w") do |f|
|
285
|
-
f.puts <<-MAKEFILE_AM
|
286
|
-
## Process this file with automake to produce Makefile.in
|
287
|
-
bin_PROGRAMS=#{self.project_name}
|
288
|
-
# MCU=atmega1280
|
289
|
-
MCU=atmega328p
|
290
|
-
F_CPU=-DF_CPU=16000000
|
291
|
-
ARDUINO_VERSION=-DARDUINO=105
|
292
|
-
ARDUINO_INSTALL=/usr/share/arduino/hardware/arduino
|
293
|
-
ARDUINO_CORES=$(ARDUINO_INSTALL)/cores/arduino
|
294
|
-
ARDUINO_VARIANTS=$(ARDUINO_INSTALL)/variants/#{self.board}
|
295
|
-
ARDUINO_COMMON_INCLUDES=#{self.common_includes}
|
296
|
-
ARDUINO_INCLUDE_PATH=-I$(ARDUINO_VARIANTS) $(LIBRARY_INCLUDES)
|
297
|
-
nodist_#{self.project_name}_SOURCES=#{self.source_files.join(' ')}
|
298
|
-
|
299
|
-
#{self.project_name}_CFLAGS=-Wall $(#{self.project_name}_INCLUDES) $(ARDUINO_INCLUDE_PATH) -Wl,--gc-sections -ffunction-sections -fdata-sections -gstabs -mmcu=$(MCU) $(F_CPU) $(ARDUINO_VERSION) -D__AVR_LIBC_DEPRECATED_ENABLE__
|
300
|
-
#{self.project_name}_CXXFLAGS=-Wall $(#{self.project_name}_INCLUDES) $(ARDUINO_INCLUDE_PATH) -Wl,--gc-sections -ffunction-sections -fdata-sections -gstabs -mmcu=$(MCU) $(F_CPU) $(ARDUINO_VERSION) -D__AVR_LIBC_DEPRECATED_ENABLE__
|
301
|
-
#{self.project_name}_LDFLAGS=-L.
|
302
|
-
#{self.project_name}_LDADD=#{self.arduino_linker_entries.join(' ')} -lm
|
303
|
-
#{self.project_name}_INCLUDES=-I#{self.project_includes.join("\\\n -I")}
|
304
|
-
|
305
|
-
lib_LIBRARIES=#{self.arduino_library_names.join(' ')}
|
306
|
-
#{self.output_arduino_libraries}
|
307
|
-
|
308
|
-
|
309
|
-
AM_LDFLAGS=
|
310
|
-
AM_CXXFLAGS=-g0 -Os
|
311
|
-
AM_CFLAGS=-g0 -Os
|
312
|
-
VPATH=/usr/share/arduino/hardware/arduino/cores/arduino
|
313
|
-
|
314
|
-
# AVRDUDE_PORT=/dev/ttyACM0
|
315
|
-
AVRDUDE_PORT=/dev/ttyUSB0
|
316
|
-
AVRDUDE_PROGRAMMER = arduino
|
317
|
-
# UPLOAD_RATE = 115200
|
318
|
-
UPLOAD_RATE = 57600
|
319
|
-
FORMAT=ihex
|
320
|
-
|
321
|
-
AVRDUDE_WRITE_FLASH = -U flash:w:$(bin_PROGRAMS).hex
|
322
|
-
AVRDUDE_FLAGS = -q -D -C/etc/avrdude/avrdude.conf -p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) -b$(UPLOAD_RATE)
|
323
|
-
|
324
|
-
|
325
|
-
.PHONY: upload
|
326
|
-
upload: all-am
|
327
|
-
$(OBJCOPY) -S -O $(FORMAT) $(bin_PROGRAMS) $(bin_PROGRAMS).hex
|
328
|
-
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)
|
329
|
-
MAKEFILE_AM
|
330
|
-
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
end
|
335
|
-
|
336
59
|
|
337
60
|
class ConfigureAc
|
338
61
|
attr_accessor :makefile_am
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mkduino
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David H. Wilkins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- README.md
|
53
53
|
- Rakefile
|
54
54
|
- bin/mkduino
|
55
|
+
- lib/makefile_am.rb
|
55
56
|
- lib/mkduino.rb
|
56
57
|
- lib/mkduino/version.rb
|
57
58
|
- mkduino.gemspec
|