1
1
require "fileutils"
2
2
3
- ENV [ 'MRUBY_CONFIG' ] = "prk_firmware-cortex-m0plus"
4
- PICO_SDK_TAG = "2.0.0"
3
+ PICO_SDK_TAG = "2.1.0"
5
4
6
- task :default => :production
5
+ def mruby_config
6
+ case ENV [ 'BOARD' ] &.downcase
7
+ when 'pico2'
8
+ 'prk_firmware-cortex-m33'
9
+ else
10
+ 'prk_firmware-cortex-m0plus'
11
+ end
12
+ end
13
+
14
+ def cmake_flags
15
+ flags = [ ]
16
+ case ENV [ 'BOARD' ] &.downcase
17
+ when 'pico2'
18
+ flags << "PICO2=yes"
19
+ end
20
+ flags . join ( " " )
21
+ end
22
+
23
+ def def_board
24
+ case ENV [ 'BOARD' ] &.downcase
25
+ when 'pico2'
26
+ '-DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2'
27
+ else
28
+ '-DPICO_PLATFORM=rp2040 -DPICO_BOARD=pico'
29
+ end
30
+ end
31
+
32
+ def build_dir
33
+ dir = case ENV [ 'BOARD' ] &.downcase
34
+ when 'pico2'
35
+ "#{ ENV [ 'WITH_KEYMAP_DIR' ] } build_pico2"
36
+ else
37
+ "#{ ENV [ 'WITH_KEYMAP_DIR' ] } build_pico"
38
+ end
39
+ FileUtils . mkdir_p dir
40
+ dir
41
+ end
42
+
43
+ task :default do
44
+ puts "Specify a task:"
45
+ puts " rake pico # build for RP2040"
46
+ puts " rake pico2 # build for RP2350"
47
+ end
7
48
8
49
task :setup do
9
50
sh "bundle install"
15
56
16
57
task :all => [ :libmruby , :cmake , :build ]
17
58
18
- desc "build debug (you may need to rake clean before this)"
19
- task :debug do
59
+ desc "build debug for RP2040 (you may need to rake clean before this)"
60
+ task :pico_debug do
20
61
ENV [ 'PICORUBY_DEBUG' ] = '1'
62
+ ENV [ 'BOARD' ] = 'pico'
21
63
ENV [ 'CMAKE_BUILD_TYPE' ] = 'Debug'
22
64
Rake ::Task [ :all ] . invoke
23
65
end
24
66
25
- desc "build production"
26
- task :production do
67
+ desc "build production for RP2040"
68
+ task :pico do
69
+ ENV [ 'BOARD' ] = 'pico'
27
70
ENV [ 'CMAKE_BUILD_TYPE' ] = 'Release'
28
71
Rake ::Task [ :all ] . invoke
29
72
end
30
73
31
- desc "build PRK Firmware inclusive of keymap.rb (without mass storage)"
32
- task :build_with_keymap , [ 'keyboard_name' ] do |_t , args |
74
+ desc "build debug for RP2350 (you may need to rake clean before this)"
75
+ task :pico2_debug do
76
+ ENV [ 'PICORUBY_DEBUG' ] = '1'
77
+ ENV [ 'BOARD' ] = 'pico2'
78
+ ENV [ 'CMAKE_BUILD_TYPE' ] = 'Debug'
79
+ Rake ::Task [ :all ] . invoke
80
+ end
81
+
82
+ desc "build production for RP2350"
83
+ task :pico2 do
84
+ ENV [ 'BOARD' ] = 'pico2'
85
+ ENV [ 'CMAKE_BUILD_TYPE' ] = 'Release'
86
+ Rake ::Task [ :all ] . invoke
87
+ end
88
+
89
+ def with_keymap ( board )
90
+ ENV [ 'BOARD' ] = board
91
+ ENV [ 'PICORUBY_NO_MSC' ] = '1'
92
+ ENV [ 'WITH_KEYMAP_DIR' ] = "keyboards/#{ args . keyboard_name } /"
93
+ Rake ::Task [ :all ] . invoke
94
+ end
95
+
96
+ desc "build PRK Firmware inclusive of keymap.rb (without mass storage) for RP2040"
97
+ task :build_with_keymap_pico , [ 'keyboard_name' ] do |_t , args |
33
98
unless args . keyboard_name
34
99
raise "Argument `keyboard_name` missing.\n Usage: rake build_with_keymap[prk_meishi2]"
35
100
end
36
- dir = "keyboards/#{ args . keyboard_name } "
37
- FileUtils . mkdir_p "#{ dir } /build"
38
- ENV [ 'PICORUBY_NO_MSC' ] = '1'
39
- ENV [ 'PRK_BUILD_DIR' ] = "#{ dir } /"
40
- Rake ::Task [ :all ] . invoke
101
+ with_keymap ( 'pico' )
102
+ end
103
+
104
+ desc "build PRK Firmware inclusive of keymap.rb (without mass storage) for RP2350 (Pico2)"
105
+ task :build_with_keymap_pico2 , [ 'keyboard_name' ] do |_t , args |
106
+ unless args . keyboard_name
107
+ raise "Argument `keyboard_name` missing.\n Usage: rake build_with_keymap[prk_meishi2]"
108
+ end
109
+ with_keymap ( 'pico2' )
41
110
end
42
111
43
- desc "build production with SQLite3 and SD card"
112
+ desc "build production with SQLite3 and SD card for RP2350 (Pico2) "
44
113
task :sqlite3 do
45
114
ENV [ 'PICORUBY_SQLITE3' ] = '1'
46
115
ENV [ 'PICORUBY_SD_CARD' ] = '1'
47
116
ENV [ 'PICORUBY_MSC_SD' ] = '1'
117
+ ENV [ 'BOARD' ] = 'pico2'
48
118
Rake ::Task [ :all ] . invoke
49
119
end
50
120
55
125
task :libmruby => "lib/picoruby" do
56
126
FileUtils . cd "lib/picoruby" do
57
127
sh "MRUBY_CONFIG=default rake test"
58
- sh "rake"
128
+ sh "MRUBY_CONFIG= #{ mruby_config } rake"
59
129
end
60
130
end
61
131
62
132
task :cmake do
63
- sh "cmake -DCMAKE_BUILD_TYPE=#{ ENV [ 'CMAKE_BUILD_TYPE' ] } -B #{ ENV [ 'PRK_BUILD_DIR' ] } build "
133
+ sh "#{ cmake_flags } cmake #{ def_board } -DCMAKE_BUILD_TYPE=#{ ENV [ 'CMAKE_BUILD_TYPE' ] } -B #{ build_dir } "
64
134
end
65
135
66
136
task :check_pico_sdk => :check_pico_sdk_path do
85
155
86
156
desc "build without cmake preparation"
87
157
task :build => :check_pico_sdk do
88
- sh "cmake --build #{ ENV [ 'PRK_BUILD_DIR' ] } build"
89
- end
90
-
91
- desc "clean built that includes keymap"
92
- task :clean_with_keymap , [ 'keyboard_name' ] do |_t , args |
93
- unless args . keyboard_name
94
- raise "Argument `keyboard_name` missing.\n Usage: rake clean_with_keymap[prk_meishi2]"
95
- end
96
- FileUtils . rm_r Dir . glob ( "keyboards/#{ args . keyboard_name } /build/*" )
158
+ sh "cmake --build #{ build_dir } "
97
159
end
98
160
99
161
desc "clean built"
100
162
task :clean do
101
163
FileUtils . cd "lib/picoruby" do
102
164
sh "rake clean"
103
165
end
104
- FileUtils . cd "build" do
105
- FileUtils . rm_rf Dir . glob ( "prk_firmware-*.*" )
106
- end
107
- begin
108
- sh "cmake --build build --target clean"
109
- rescue => e
110
- puts "Ignoring an error: #{ e . message } "
166
+ %(build_pico build_pico2) . each do |dir |
167
+ FileUtils . cd dir do
168
+ FileUtils . rm_rf Dir . glob ( "prk_firmware-*.*" )
169
+ end
170
+ begin
171
+ sh "cmake --build #{ dir } --target clean"
172
+ rescue => e
173
+ puts "Ignoring an error: #{ e . message } "
174
+ end
111
175
end
112
176
end
113
177
@@ -116,8 +180,10 @@ task :deep_clean do
116
180
FileUtils . cd "lib/picoruby" do
117
181
sh "rake deep_clean"
118
182
end
119
- FileUtils . cd "build" do
120
- FileUtils . rm_rf Dir . glob ( "*" )
183
+ %(build_pico build_pico2) . each do |dir |
184
+ FileUtils . cd dir do
185
+ FileUtils . rm_rf Dir . glob ( "*" )
186
+ end
121
187
end
122
188
end
123
189
0 commit comments