diff --git a/hardware/Rakefile b/hardware/Rakefile index 5e00e7c..3330d23 100644 --- a/hardware/Rakefile +++ b/hardware/Rakefile @@ -42,7 +42,7 @@ task :default => [:version,:print,:notes,:photo,:gerber] desc "create release file" release = "hardware-release_v#{version}.tar.gz" -task :release => release +task :release => [:gerber,release] CLOBBER.include(release) desc "set version in schematic and layout" @@ -82,12 +82,14 @@ task :verify => vsch do |t| puts "not all refdes uniq" unless uniq puts "not all refdes numbered" unless numbered end +=end desc "convert schematic to pcb layout" -task :sch2pcb => vsch do |t| - sh "gsch2pcb #{t.prerequisites[0]} --elements-dir #{File.dirname(__FILE__)}/lib/footprints --skip-m4 --output-name #{target}" +task :sch2pcb do + targets.each do |target| + sh "gsch2pcb #{target[:vsch]} --elements-dir #{File.dirname(__FILE__)}/lib/footprints --skip-m4 --output-name #{target[:name]}" + end end -=end photos = targets.collect{|target| ["#{target[:name]}_layout-top.png","#{target[:name]}_layout-bottom.png"]}.flatten desc "render layout" @@ -95,19 +97,22 @@ task :photo => photos CLOBBER.include(photos) desc "export gerber" -GERBERS = [".top.gbr",".topmask.gbr",".toppaste.gbr",".topsilk.gbr",".bottom.gbr",".bottommask.gbr",".bottompaste.gbr",".bottomsilk.gbr",".outline.gbr",".fab.gbr",".plated-drill.cnc",".unplated-drill.cnc"] -gerbers = targets.collect{|target| GERBERS.collect{|suffix| target[:name]+suffix}}.flatten -task :gerber => gerbers -CLOBBER.include(gerbers) +task :gerber do + targets.each do |target| + sh "pcb -x gerber --gerberfile #{target[:name]} --all-layers #{target[:vpcb]}" + end +end +CLOBBER.include("*.gbr") +CLOBBER.include("*.cnc") desc "reformat gerber and drill output (some programs like LPKF CircuitPro have difficulties with gEDA pcb output)" -task :reformat => gerbers do - gerbers.each do |gerber| - next unless File.exist? gerber - if gerber.end_with? ".gbr" then - sh "gerbv --export=rs274x --output=#{gerber} #{gerber}" - elsif gerber.end_with? ".cnc" then - sh "gerbv --export=drill --output=#{gerber} #{gerber}" +task :reformat do + Dir.foreach(".") do |file| + next unless File.file? file + if file.end_with? ".gbr" then + sh "gerbv --export=rs274x --output=#{file} #{file}" + elsif file.end_with? ".cnc" then + sh "gerbv --export=drill --output=#{file} #{file}" end end end @@ -231,17 +236,10 @@ targets.each do |target| end end -desc "export gerber (and drill) files from layout" -targets.each do |target| - GERBERS.each do |suffix| - file target[:name]+suffix => target[:vpcb] do |t| - sh "pcb -x gerber --gerberfile #{target[:name]} --all-layers #{t.prerequisites.join(' ')}" - end - end -end - desc "create archive with release files" +SOURCES = targets.collect{|target| [target[:sch],target[:pcb]]}.flatten ATTACHMENTS = ["cern_ohl_v_1_2_howto.pdf","CHANGES.txt","LICENSE.txt","PRODUCT.txt"] -file release => prints+notes+photos+gerbers+ATTACHMENTS do |t| - sh "tar -acf '#{t.name}' #{t.prerequisites.join(' ')}" +file release => SOURCES+prints+notes+photos+ATTACHMENTS do |t| + gerbers = Dir.entries(".").select{|file| file.end_with? ".gbr" or file.end_with? ".cnc"} + sh "tar -acf '#{t.name}' #{(t.prerequisites+gerbers).join(' ')}" end