1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 { 6 'variables': { 7 # When including this gypi, the following variables must be set: 8 # schema_files: 9 # An array of json or idl files that comprise the api model. 10 # schema_include_rules (optional): 11 # An array of paths to include when searching for referenced objects, 12 # with the namespace separated by a :. 13 # Example: 14 # [ '/foo/bar:Foo::Bar::%(namespace)s' ] 15 # cc_dir: 16 # The directory to put the generated code in. 17 # root_namespace: 18 # A Python string substituion pattern used to generate the C++ 19 # namespace for each API. Use %(namespace)s to replace with the API 20 # namespace, like "toplevel::%(namespace)s_api". 21 # 22 # Functions and namespaces can be excluded by setting "nocompile" to true. 23 'api_gen_dir': '<(DEPTH)/tools/json_schema_compiler', 24 'api_gen': '<(api_gen_dir)/compiler.py', 25 'schema_include_rules': [], 26 }, 27 'rules': [ 28 { 29 # GN version: json_schema_api.gni 30 'rule_name': 'genapi', 31 'msvs_external_rule': 1, 32 'extension': 'json', 33 'inputs': [ 34 '<(api_gen_dir)/cc_generator.py', 35 '<(api_gen_dir)/code.py', 36 '<(api_gen_dir)/compiler.py', 37 '<(api_gen_dir)/cpp_generator.py', 38 '<(api_gen_dir)/cpp_type_generator.py', 39 '<(api_gen_dir)/cpp_util.py', 40 '<(api_gen_dir)/h_generator.py', 41 '<(api_gen_dir)/json_schema.py', 42 '<(api_gen_dir)/model.py', 43 '<(api_gen_dir)/util.cc', 44 '<(api_gen_dir)/util.h', 45 '<(api_gen_dir)/util_cc_helper.py', 46 # TODO(calamity): uncomment this when gyp on windows behaves like other 47 # platforms. List expansions of filepaths in inputs expand to different 48 # things. 49 # '<@(schema_files)', 50 ], 51 'outputs': [ 52 '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).cc', 53 '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).h', 54 ], 55 'action': [ 56 'python', 57 '<(api_gen)', 58 '<(RULE_INPUT_PATH)', 59 '--root=<(DEPTH)', 60 '--destdir=<(SHARED_INTERMEDIATE_DIR)', 61 '--namespace=<(root_namespace)', 62 '--generator=cpp', 63 '--include-rules=<(schema_include_rules)' 64 ], 65 'message': 'Generating C++ code from <(RULE_INPUT_PATH) json files', 66 'process_outputs_as_sources': 1, 67 }, 68 { 69 'rule_name': 'genapi_idl', 70 'msvs_external_rule': 1, 71 'extension': 'idl', 72 'inputs': [ 73 '<(api_gen_dir)/cc_generator.py', 74 '<(api_gen_dir)/code.py', 75 '<(api_gen_dir)/compiler.py', 76 '<(api_gen_dir)/cpp_generator.py', 77 '<(api_gen_dir)/cpp_type_generator.py', 78 '<(api_gen_dir)/cpp_util.py', 79 '<(api_gen_dir)/h_generator.py', 80 '<(api_gen_dir)/idl_schema.py', 81 '<(api_gen_dir)/model.py', 82 '<(api_gen_dir)/util.cc', 83 '<(api_gen_dir)/util.h', 84 '<(api_gen_dir)/util_cc_helper.py', 85 # TODO(calamity): uncomment this when gyp on windows behaves like other 86 # platforms. List expansions of filepaths in inputs expand to different 87 # things. 88 # '<@(schema_files)', 89 ], 90 'outputs': [ 91 '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).cc', 92 '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).h', 93 ], 94 'action': [ 95 'python', 96 '<(api_gen)', 97 '<(RULE_INPUT_PATH)', 98 '--root=<(DEPTH)', 99 '--destdir=<(SHARED_INTERMEDIATE_DIR)', 100 '--namespace=<(root_namespace)', 101 '--generator=cpp', 102 '--include-rules=<(schema_include_rules)' 103 ], 104 'message': 'Generating C++ code from <(RULE_INPUT_PATH) IDL files', 105 'process_outputs_as_sources': 1, 106 }, 107 ], 108 'include_dirs': [ 109 '<(SHARED_INTERMEDIATE_DIR)', 110 '<(DEPTH)', 111 ], 112 'dependencies':[ 113 '<(DEPTH)/tools/json_schema_compiler/api_gen_util.gyp:api_gen_util', 114 ], 115 'direct_dependent_settings': { 116 'include_dirs': [ 117 '<(SHARED_INTERMEDIATE_DIR)', 118 ] 119 }, 120 # This target exports a hard dependency because it generates header 121 # files. 122 'hard_dependency': 1, 123 } 124