Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: nacl_bindings_generator/generate_nacl_bindings.py

Issue 955113002: Rearrange mojo/nacl files. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Rebase Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « nacl_bindings/monacl_sel_main.cc ('k') | nacl_bindings_generator/interface.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: nacl_bindings_generator/generate_nacl_bindings.py
diff --git a/mojo/nacl/generator/generate_nacl_bindings.py b/nacl_bindings_generator/generate_nacl_bindings.py
similarity index 88%
rename from mojo/nacl/generator/generate_nacl_bindings.py
rename to nacl_bindings_generator/generate_nacl_bindings.py
index ee6189c1239f4615ffc82d8690776ac0b19d240e..e06ffa91188d18863f79fb27e150e8144c3154f3 100755
--- a/mojo/nacl/generator/generate_nacl_bindings.py
+++ b/nacl_bindings_generator/generate_nacl_bindings.py
@@ -6,36 +6,28 @@
# pylint: disable=W0104,W0106,F0401,R0201
import errno
-import optparse
import os.path
import sys
import interface
-def _ScriptDir():
+def ScriptDir():
return os.path.dirname(os.path.abspath(__file__))
-def _GetDirAbove(dirname):
- """Returns the directory "above" this file containing |dirname| (which must
- also be "above" this file)."""
- path = _ScriptDir()
- while True:
- path, tail = os.path.split(path)
- assert tail
- if tail == dirname:
- return path
+def RepoRoot():
+ return os.path.dirname(ScriptDir())
def _AddThirdPartyImportPath():
- sys.path.append(os.path.join(_GetDirAbove('mojo'), 'third_party'))
+ sys.path.append(os.path.join(RepoRoot(), 'third_party'))
_AddThirdPartyImportPath()
import jinja2
-loader = jinja2.FileSystemLoader(_ScriptDir())
+loader = jinja2.FileSystemLoader(ScriptDir())
jinja_env = jinja2.Environment(loader=loader, keep_trailing_newline=True)
@@ -103,7 +95,7 @@ def GeneratorWarning():
# Untrusted library which thunks from the public Mojo API to the IRT interface
# implementing the public Mojo API.
-def GenerateLibMojo(functions, out):
+def GenerateLibMojo(functions, common_vars, out):
template = jinja_env.get_template('libmojo.cc.tmpl')
code = CodeWriter()
@@ -125,8 +117,8 @@ def GenerateLibMojo(functions, out):
body = code.GetValue()
text = template.render(
- generator_warning=GeneratorWarning(),
- body=body)
+ body=body,
+ **common_vars)
out.write(text)
@@ -308,7 +300,7 @@ def CBool(value):
# A trusted wrapper that validates the arguments passed from untrusted code
# before passing them to the underlying public Mojo API.
-def GenerateMojoSyscall(functions, out):
+def GenerateMojoSyscall(functions, common_vars, out):
template = jinja_env.get_template('mojo_syscall.cc.tmpl')
code = CodeWriter()
@@ -377,13 +369,13 @@ def GenerateMojoSyscall(functions, out):
body = code.GetValue()
text = template.render(
- generator_warning=GeneratorWarning(),
- body=body)
+ body=body,
+ **common_vars)
out.write(text)
# A header declaring the IRT interface for accessing Mojo functions.
-def GenerateMojoIrtHeader(functions, out):
+def GenerateMojoIrtHeader(functions, common_vars, out):
template = jinja_env.get_template('mojo_irt.h.tmpl')
code = CodeWriter()
@@ -400,12 +392,12 @@ def GenerateMojoIrtHeader(functions, out):
body = code.GetValue()
text = template.render(
- generator_warning=GeneratorWarning(),
- body=body)
+ body=body,
+ **common_vars)
out.write(text)
# IRT interface which implements the Mojo public API.
-def GenerateMojoIrtImplementation(functions, out):
+def GenerateMojoIrtImplementation(functions, common_vars, out):
template = jinja_env.get_template('mojo_irt.c.tmpl')
code = CodeWriter()
@@ -459,8 +451,8 @@ def GenerateMojoIrtImplementation(functions, out):
body = code.GetValue()
text = template.render(
- generator_warning=GeneratorWarning(),
- body=body)
+ body=body,
+ **common_vars)
out.write(text)
@@ -472,36 +464,40 @@ def OutFile(dir_path, name):
# There may have been a race to create this directory.
if e.errno != errno.EEXIST:
raise
- return open(os.path.join(dir_path, name), 'w')
-
-
-def main(args):
- usage = 'usage: %prog [options]'
- parser = optparse.OptionParser(usage=usage)
- parser.add_option(
- '-d',
- dest='out_dir',
- metavar='DIR',
- help='output generated code into directory DIR')
- options, args = parser.parse_args(args=args)
- if not options.out_dir:
- parser.error('-d is required')
- if args:
- parser.error('unexpected positional arguments: %s' % ' '.join(args))
+ full_path = os.path.join(dir_path, name)
+ print full_path
+ return open(full_path, 'w')
+
+
+def main():
+ root_dir = RepoRoot()
+
+ platform_dir = 'mojo/public/platform/nacl'
+ bindings_dir = 'nacl_bindings'
+
+ full_platform_dir = os.path.join(root_dir, platform_dir)
+ full_bindings_dir = os.path.join(root_dir, bindings_dir)
+
+ common_vars = dict(
+ generator_warning=GeneratorWarning(),
+ platform_dir=platform_dir,
+ platform_dir_header_path=platform_dir.replace("/", "_").upper(),
+ bindings_dir=bindings_dir,
+ )
mojo = interface.MakeInterface()
- out = OutFile(options.out_dir, 'libmojo.cc')
- GenerateLibMojo(mojo.functions, out)
+ out = OutFile(full_platform_dir, 'libmojo.cc')
+ GenerateLibMojo(mojo.functions, common_vars, out)
- out = OutFile(options.out_dir, 'mojo_syscall.cc')
- GenerateMojoSyscall(mojo.functions, out)
+ out = OutFile(full_bindings_dir, 'mojo_syscall.cc')
+ GenerateMojoSyscall(mojo.functions, common_vars, out)
- out = OutFile(options.out_dir, 'mojo_irt.h')
- GenerateMojoIrtHeader(mojo.functions, out)
+ out = OutFile(full_platform_dir, 'mojo_irt.h')
+ GenerateMojoIrtHeader(mojo.functions, common_vars, out)
- out = OutFile(options.out_dir, 'mojo_irt.c')
- GenerateMojoIrtImplementation(mojo.functions, out)
+ out = OutFile(full_bindings_dir, 'mojo_irt.c')
+ GenerateMojoIrtImplementation(mojo.functions, common_vars, out)
if __name__ == '__main__':
- main(sys.argv[1:])
+ main()
« no previous file with comments | « nacl_bindings/monacl_sel_main.cc ('k') | nacl_bindings_generator/interface.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698