From 1e438f51c5cdd0f58e1340a293c3d56d38cee7e0 Mon Sep 17 00:00:00 2001 From: Brad Chase Date: Fri, 17 Feb 2017 09:25:54 -0500 Subject: [PATCH] Handle protoc targets in scons ninja build --- SConstruct | 3 ++- src/ripple/site_scons/scons_to_ninja.py | 13 ++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SConstruct b/SConstruct index 74ae55d2b..2d1603dde 100644 --- a/SConstruct +++ b/SConstruct @@ -1231,7 +1231,8 @@ for tu_style in ['classic', 'unity']: if should_build_ninja(tu_style, toolchain, variant): print('Generating ninja: {}:{}:{}'.format(tu_style, toolchain, variant)) scons_to_ninja.GenerateNinjaFile( - [object_builder.env] + object_builder.child_envs, + # add base env last to ensure protoc targets are added + [object_builder.env] + object_builder.child_envs + [base], dest_file='build.ninja') for key, value in aliases.iteritems(): diff --git a/src/ripple/site_scons/scons_to_ninja.py b/src/ripple/site_scons/scons_to_ninja.py index 17eeb1375..fb17e8604 100644 --- a/src/ripple/site_scons/scons_to_ninja.py +++ b/src/ripple/site_scons/scons_to_ninja.py @@ -37,13 +37,12 @@ def GenerateNinjaFile(envs, dest_file): node_list = [] node_map = {} def CustomCommandPrinter(cmd, targets, source, env): - assert len(targets) == 1, len(targets) - node = targets[0] - # There can sometimes be multiple commands per target (e.g. ar+ranlib). - # We must collect these together to output a single Ninja rule. - if node not in node_map: - node_list.append(node) - node_map.setdefault(node, []).append(cmd) + for node in targets: + # There can sometimes be multiple commands per target (e.g. ar+ranlib). + # We must collect these together to output a single Ninja rule. + if node not in node_map: + node_list.append(node) + node_map.setdefault(node, []).append(cmd) for e in envs: e.Append(PRINT_CMD_LINE_FUNC=CustomCommandPrinter) def WriteFile():