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