# Copyright 2014 Google Inc. All rights reserved. { 'variables': { 'cc_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out', 'proto_in_dir%': '.', }, 'conditions': [ ['protobuf_lib_type=="system"', { # protobuf_lib is a library setting. 'direct_dependent_settings': { 'libraries': [ '<(protobuf_lib)', ], }, }], ['protobuf_lib_type=="target"', { # protobuf_lib is a gyp target. 'dependencies': [ '<(protobuf_lib)', ], 'export_dependent_settings': [ '<(protobuf_lib)', ], }], ['protobuf_lib_type=="source"', { # protobuf_lib is a source folder. # We use protobuf.gyp to describe the build. 'dependencies': [ '../third_party/protobuf.gyp:protoc#host', '../third_party/protobuf.gyp:protobuf_lite', ], 'export_dependent_settings': [ '../third_party/protobuf.gyp:protobuf_lite', ], 'variables': { # Since we are building our own protoc, override protoc_dir. 'protoc_dir': '<(PRODUCT_DIR)', }, }], ], 'rules': [ { 'rule_name': 'genproto', 'extension': 'proto', 'outputs': [ '<(cc_dir)/<(RULE_INPUT_ROOT).pb.cc', '<(cc_dir)/<(RULE_INPUT_ROOT).pb.h', ], 'action': [ '<(protoc_dir)/protoc', '--proto_path=<(proto_in_dir)', # Naively you'd use <(RULE_INPUT_PATH) here, but protoc requires # --proto_path is a strict prefix of the path given as an argument. '<(proto_in_dir)/<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)', '--cpp_out=<(cc_dir)', ], 'message': 'Generating C++ code from <(RULE_INPUT_PATH) ccdir=<(cc_dir)', 'process_outputs_as_sources': 1, }, ], 'include_dirs': [ '<(cc_dir)', ], 'direct_dependent_settings': { 'include_dirs': [ '<(cc_dir)', ] }, # This target exports a hard dependency because it generates header # files. 'hard_dependency': 1, }