SkMojo: generate on Darwin/x86_64
authorhalcanary <halcanary@google.com>
Wed, 3 Feb 2016 21:54:03 +0000 (13:54 -0800)
committerCommit bot <commit-bot@chromium.org>
Wed, 3 Feb 2016 21:54:03 +0000 (13:54 -0800)
also clean up generate and skmojo.gyp to work right.

BUG=skia:4891
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1660043004

Review URL: https://codereview.chromium.org/1660043004

experimental/mojo/generate.py
gyp/skmojo.gyp

index a32afbba8005b209b566da98a9bd73df13ef3856..d57e4363939985bc9a4e8d344a73fce9adf3790e 100755 (executable)
@@ -7,9 +7,11 @@
 
 import hashlib
 import os
+import platform
+import stat
 import subprocess
+import sys
 import urllib2
-import stat
 
 THIS_DIR = os.path.abspath(os.path.dirname(__file__))
 MOJO_DIR = os.path.abspath(os.path.join(THIS_DIR, '../../third_party/externals/mojo'))
@@ -35,9 +37,16 @@ def GetFile(filename, bucket_directory):
     assert sha1hash(filename) == sha
 
 def GenerateBindings(path, cdir=None):
-    GetFile(os.path.join(MOJO_DIR,
-                         'public/tools/bindings/mojom_parser/bin/linux64/mojom_parser'),
-            'mojo/mojom_parser/linux64')
+    system = (platform.machine(), platform.system())
+    if ('x86_64', 'Darwin') == system:
+        parser = 'public/tools/bindings/mojom_parser/bin/mac64/mojom_parser'
+        bucket_directory = 'mojo/mojom_parser/mac64'
+    elif ('x86_64', 'Linux') == system:
+        parser = 'public/tools/bindings/mojom_parser/bin/linux64/mojom_parser'
+        bucket_directory = 'mojo/mojom_parser/linux64'
+    else:
+        assert False
+    GetFile(os.path.join(MOJO_DIR, parser), bucket_directory)
     assert os.path.isfile(path)
     path = os.path.abspath(path)
     exe = os.path.join(
@@ -51,12 +60,15 @@ def GenerateBindings(path, cdir=None):
     subprocess.check_call([exe, os.path.relpath(path, cdir)])
     os.chdir(cwd)
 
-for f in [
-    'public/interfaces/bindings/interface_control_messages.mojom',
-    'public/interfaces/application/service_provider.mojom',
-    'public/interfaces/bindings/tests/ping_service.mojom',
-    'public/interfaces/application/application.mojom',
-    ]:
-    GenerateBindings(os.path.join(MOJO_DIR, f), os.path.join(MOJO_DIR, os.pardir))
-
-GenerateBindings(os.path.join(THIS_DIR, 'SkMojo.mojom'))
+if __name__ == '__main__':
+    if 1 == len(sys.argv):
+        for f in [
+            'public/interfaces/bindings/interface_control_messages.mojom',
+            'public/interfaces/application/service_provider.mojom',
+            'public/interfaces/bindings/tests/ping_service.mojom',
+            'public/interfaces/application/application.mojom',
+            ]:
+            GenerateBindings(os.path.join(MOJO_DIR, f), os.path.join(MOJO_DIR, os.pardir))
+    else:
+        for arg in sys.argv[1:]:
+            GenerateBindings(arg)
index 63385cd2fa79d14df466e648f0654295f0203e75..0bd6f2c1568a8e3ed031a76f0d0d58d392d1ccff 100644 (file)
       'variables': { 'mojo_parent_dir': '../third_party/externals' },
       'include_dirs': [ '<(mojo_parent_dir)' ],
       'all_dependent_settings': { 'include_dirs': [ '<(mojo_parent_dir)' ] },
+      'xcode_settings': { 'OTHER_CFLAGS': [ '-w' ], },
       'sources': [
         '<!@(python find.py <(mojo_parent_dir)/mojo/public/cpp "*.cc")',
         '<(mojo_parent_dir)/mojo/public/platform/native/system_thunks.c',
+        '<(mojo_parent_dir)/mojo/public/interfaces/application/application.mojom.cc',
+        '<(mojo_parent_dir)/mojo/public/interfaces/application/application.mojom.h',
+        '<(mojo_parent_dir)/mojo/public/interfaces/application/service_provider.mojom.cc',
+        '<(mojo_parent_dir)/mojo/public/interfaces/application/service_provider.mojom.h',
+        '<(mojo_parent_dir)/mojo/public/interfaces/bindings/interface_control_messages.mojom.cc',
+        '<(mojo_parent_dir)/mojo/public/interfaces/bindings/interface_control_messages.mojom.h',
+        '<(mojo_parent_dir)/mojo/public/interfaces/bindings/tests/ping_service.mojom.cc',
+        '<(mojo_parent_dir)/mojo/public/interfaces/bindings/tests/ping_service.mojom.h',
       ],
       'sources!': [
         '<!@(python find.py <(mojo_parent_dir)/mojo/public/cpp "*_unittest.cc")',
         '<!@(python find.py <(mojo_parent_dir)/mojo/public/cpp "*_test_*.cc")',
         '<!@(python find.py <(mojo_parent_dir)/mojo/public/cpp "*_win.cc")',
       ],
-    },
+      'actions':[
+        {
+          'action_name': 'generate_from_mojoms',
+          'inputs': [
+            '../experimental/mojo/generate.py',
+            '<(mojo_parent_dir)/mojo/public/tools/bindings/mojom_parser/bin/linux64/mojom_parser.sha1',
+            '<(mojo_parent_dir)/mojo/public/tools/bindings/mojom_parser/bin/mac64/mojom_parser.sha1',
+            '<(mojo_parent_dir)/mojo/public/tools/bindings/mojom_bindings_generator.py',
+            '<(mojo_parent_dir)/mojo/public/interfaces/bindings/interface_control_messages.mojom',
+            '<(mojo_parent_dir)/mojo/public/interfaces/application/service_provider.mojom',
+            '<(mojo_parent_dir)/mojo/public/interfaces/bindings/tests/ping_service.mojom',
+            '<(mojo_parent_dir)/mojo/public/interfaces/application/application.mojom',
+          ],
+          'outputs': [
+            '<(mojo_parent_dir)/mojo/public/interfaces/application/application.mojom.cc',
+            '<(mojo_parent_dir)/mojo/public/interfaces/application/application.mojom.h',
+            '<(mojo_parent_dir)/mojo/public/interfaces/application/service_provider.mojom.cc',
+            '<(mojo_parent_dir)/mojo/public/interfaces/application/service_provider.mojom.h',
+            '<(mojo_parent_dir)/mojo/public/interfaces/bindings/interface_control_messages.mojom.cc',
+            '<(mojo_parent_dir)/mojo/public/interfaces/bindings/interface_control_messages.mojom.h',
+            '<(mojo_parent_dir)/mojo/public/interfaces/bindings/tests/ping_service.mojom.cc',
+            '<(mojo_parent_dir)/mojo/public/interfaces/bindings/tests/ping_service.mojom.h',
+          ],
+          'action': ['python', '../experimental/mojo/generate.py']
+        },
+      ],    },
     {
       'target_name': 'skmojo',
       'type': 'static_library',
           'inputs': [
             '../experimental/mojo/generate.py',
             '../experimental/mojo/SkMojo.mojom',
-            '<(mojo_dir)/tools/bindings/mojom_parser/bin/linux64/mojom_parser.sha1',
-            '<(mojo_dir)/tools/bindings/mojom_bindings_generator.py',
-            '<(mojo_dir)/interfaces/bindings/interface_control_messages.mojom',
-            '<(mojo_dir)/interfaces/application/service_provider.mojom',
-            '<(mojo_dir)/interfaces/bindings/tests/ping_service.mojom',
-            '<(mojo_dir)/interfaces/application/application.mojom',
           ],
-          'outputs': ['../experimental/mojo/SkMojo.mojom.h',
-                      '../experimental/mojo/SkMojo.mojom.cc'],
-          'action': ['python', '../experimental/mojo/generate.py']
+          'outputs': [
+            '../experimental/mojo/SkMojo.mojom.h',
+            '../experimental/mojo/SkMojo.mojom.cc'
+          ],
+          'action': ['python', '../experimental/mojo/generate.py', '../experimental/mojo/SkMojo.mojom']
         },
       ],
     },