1#!/usr/bin/ruby 2# Copyright:: Copyright 2012 Google Inc. 3# License:: All Rights Reserved. 4# Original Author:: Yugui Sonoda (mailto:yugui@google.com) 5# 6# Wrapper for create_nmf.py / generate_nmf.py 7 8require File.join(File.dirname(__FILE__), 'nacl-config') 9 10include NaClConfig 11$verbosity = 0 12 13def usage_and_exit 14 $stderr.puts "Usage: #{$PROGRAM_NAME} [--verbose=N] path/to/input.nexe path/to/output.nmf" 15 exit false 16end 17 18def create_dynamically_linked(nmf, exe) 19 cmd = [ 20 PYTHON, CREATE_NMF, 21 '-o', nmf, 22 '-D', OBJDUMP, 23 '-L', HOST_LIB, 24 exe 25 ] 26 puts cmd.join(' ') if $verbosity > 0 27 exec(*cmd) 28end 29 30def create_statically_linked(nmf, exe) 31 File.open(nmf, "w") {|f| 32 f.write <<-EOS.gsub(/^ {6}/, '') 33 { 34 "program": { 35 "#{ARCH}": { 36 "url": "#{exe}" 37 } 38 } 39 } 40 EOS 41 } 42end 43 44def main 45 while m = ARGV.first.match(/--([a-z-]+)(?:=(\S+))?/) 46 case m[1] 47 when 'verbose' 48 usage_and_exit unless m[2][/\A[0-9]+\z/] 49 $verbosity = m[2].to_i 50 when 'help' 51 usage_end_exit 52 end 53 ARGV.shift 54 end 55 56 usage_and_exit if ARGV.size < 2 57 58 exe, nmf = ARGV[0], ARGV[1] 59 if newlib? 60 create_statically_linked(nmf, exe) 61 else 62 create_dynamically_linked(nmf, exe) 63 end 64end 65 66if __FILE__ == $0 67 main() 68end 69 70 71