@@ -11,17 +11,7 @@ PICO_SDK_TAG = "2.2.0"
1111PICO_EXTRAS_TAG = "sdk-#{ PICO_SDK_TAG } "
1212
1313def mruby_config ( vm , board )
14- name = ( vm == 'mruby' ? 'microruby-' : '' )
15- case board
16- when 'pico2'
17- "r2p2-#{ name } cortex-m33"
18- when 'pico_w'
19- "r2p2_w-#{ name } cortex-m0plus"
20- when 'pico2_w'
21- "r2p2_w-#{ name } cortex-m33"
22- else
23- "r2p2-#{ name } cortex-m0plus"
24- end
14+ "r2p2-#{ vm } -#{ board } "
2515end
2616
2717def def_board ( board )
@@ -46,27 +36,20 @@ def def_build_type(mode)
4636 end
4737end
4838
49- def def_r2p2_name ( board )
50- case board
51- when 'pico'
52- '-D R2P2_NAME=R2P2_PICO'
53- when 'pico2'
54- '-D R2P2_NAME=R2P2_PICO2'
55- when 'pico_w'
56- '-D R2P2_NAME=R2P2_PICO_W'
57- when 'pico2_w'
58- '-D R2P2_NAME=R2P2_PICO2_W'
59- else
60- raise "Unknown board: #{ board } "
61- end
39+ def def_r2p2_name ( vm , board )
40+ "-D R2P2_NAME=R2P2-#{ vm . upcase } -#{ board . upcase } "
6241end
6342
6443def def_msc ( mode )
65- '-D PICORUBY_MSC_FLASH=1 -D MSC_NAME=FLASH_MSC '
44+ '-D PICORUBY_MSC_FLASH=1'
6645end
6746
6847def def_picorb_vm ( vm )
69- vm == 'mrubyc' ? '-D PICORB_VM_MRUBYC=1' : '-D PICORB_VM_MRUBY=1'
48+ vm == 'picoruby' ? '-D PICORB_VM_MRUBYC=1' : '-D PICORB_VM_MRUBY=1'
49+ end
50+
51+ def build_dir ( vm , board , mode )
52+ "build/#{ vm } /#{ board } /#{ mode } "
7053end
7154
7255task :setup do
@@ -76,30 +59,31 @@ task :setup do
7659 end
7760end
7861
79- %w[ mrubyc mruby ] . each do |vm |
62+ %w[ picoruby microruby ] . each do |vm |
8063 namespace vm do
8164 %w[ pico pico_w pico2 pico2_w ] . each do |board |
8265 namespace board do
83- %w[ debug production ] . each do |mode |
84- desc "Build for #{ board } with #{ vm } VM (#{ mode } )"
66+ %w[ debug prod ] . each do |mode |
67+ desc "Build #{ vm } for #{ board } (#{ mode } )"
8568 task mode => :check_pico_sdk do
69+ dir = build_dir ( vm , board , mode )
70+ FileUtils . mkdir_p dir
8671 FileUtils . cd "lib/picoruby" do
8772 sh "rake test" if ENV [ 'DO_TEST' ]
8873 sh "MRUBY_CONFIG=#{ mruby_config ( vm , board ) } #{ mode =='debug' ? 'PICORUBY_DEBUG=1' : '' } rake"
8974 end
90- build_dir = "build_#{ board } "
9175 defs = <<~DEFS
9276 -D PICO_CYW43_SUPPORTED=1 \
9377 -D MRUBY_CONFIG=#{ mruby_config ( vm , board ) } \
94- -D BUILD_DIR=#{ build_dir } \
78+ -D BUILD_DIR=#{ dir } \
9579 #{ def_picorb_vm ( vm ) } \
96- #{ def_r2p2_name ( board ) } \
80+ #{ def_r2p2_name ( vm , board ) } \
9781 #{ def_board ( board ) } \
9882 #{ def_build_type ( mode ) } \
9983 #{ def_msc ( mode ) }
10084 DEFS
101- sh "cmake -B #{ build_dir } #{ defs } "
102- sh "cmake --build #{ build_dir } "
85+ sh "cmake -B #{ dir } #{ defs } "
86+ sh "cmake --build #{ dir } "
10387 end
10488 end
10589 end
10892end
10993
11094namespace :clean do
111- %w[ mrubyc mruby ] . each do |vm |
95+ %w[ picoruby microruby ] . each do |vm |
11296 namespace vm do
11397 %w[ pico pico_w pico2 pico2_w ] . each do |board |
114- desc "Clean build for #{ board } with #{ vm } VM "
98+ desc "Clean #{ vm } for #{ board } (both debug and prod) "
11599 task board do
116100 FileUtils . cd "lib/picoruby" do
117101 if File . exist? ( "build_config/#{ mruby_config ( vm , board ) } .rb" )
118102 sh "MRUBY_CONFIG=#{ mruby_config ( vm , board ) } rake clean"
119103 end
120104 end
121- FileUtils . rm_f ( Dir [ "build_#{ board } /R2P2*.*" ] )
105+ %w[ debug prod ] . each do |mode |
106+ dir = build_dir ( vm , board , mode )
107+ FileUtils . rm_f ( Dir [ "#{ dir } /R2P2*.*" ] ) if Dir . exist? dir
108+ end
122109 end
123110 end
124111 end
0 commit comments