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

Unified Diff: SConstruct

Issue 12594036: Add a scons pnacl finalize step for pnacl_generate_pexe tests. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Roll revs Created 7 years, 9 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 | « no previous file | TOOL_REVISIONS » ('j') | tests/barebones/nacl.scons » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: SConstruct
diff --git a/SConstruct b/SConstruct
index 55b483b47c6efd03ddac58a1badca3270dbe8049..bbf395f8bb9d608ffa47eb01383b819993e7d141 100755
--- a/SConstruct
+++ b/SConstruct
@@ -352,6 +352,9 @@ def SetUpArgumentBits(env):
BitFromArgument(env, 'arm_hard_float', default=False,
desc='Build for hard float ARM ABI')
+ BitFromArgument(env, 'skip_nonstable_bitcode', default=False,
+ desc='Skip tests involving non-stable bitcode')
+
#########################################################################
# EXPERIMENTAL
# This is for generating a testing library for use within private test
@@ -1574,7 +1577,6 @@ def GetTranslatedNexe(env, pexe):
pre_base_env.AddMethod(GetTranslatedNexe)
-
Mark Seaborn 2013/03/28 01:31:34 Nit: Can you leave 2 empty lines between top-level
jvoung - send to chromium... 2013/03/28 15:50:29 Done.
def ShouldTranslateToNexe(env, pexe):
""" Determine when we need to translate a Pexe to a Nexe.
"""
@@ -1598,6 +1600,42 @@ def ShouldTranslateToNexe(env, pexe):
pre_base_env.AddMethod(ShouldTranslateToNexe)
+def GetFinalizedPexe(env, pexe):
+ """ Prep and finalize the ABI for a given pexe.
+ """
+ pexe_name = pexe.abspath
+ final_name = pexe_name[:pexe_name.index('.pexe')] + '.final.pexe'
Mark Seaborn 2013/03/28 01:31:34 You should assert that pexe_name ends with ".pexe"
+ # Make sure the pexe doesn't get removed by the fake builders when
+ # built_elsewhere=1
+ env.Precious(pexe)
+ node = env.Command(target=final_name, source=[pexe_name],
+ action=[Action('${PNACLFINALIZECOM}',
+ '${PNACLFINALIZECOMSTR}')])
+ assert len(node) == 1, node
+ return node[0]
+
+pre_base_env.AddMethod(GetFinalizedPexe)
+
+# Bit to be set by individual test/nacl.scons files that need to opt-out.
Mark Seaborn 2013/03/28 01:31:34 Nit: "opt out", no hyphen :-)
jvoung - send to chromium... 2013/03/28 15:50:29 Done.
+DeclareBit('nonstable_bitcode', 'Tests use non-stable bitcode features', False)
+
+def ShouldFinalizePexe(env, pexe):
+ """ Determine when we need to prep a pexe to finalize it for ABI stability.
+ """
+ if not env.Bit('pnacl_generate_pexe') or env.Bit('nonstable_bitcode'):
+ return False
+
+ # There is no bitcode for trusted code.
+ if env['NACL_BUILD_FAMILY'] == 'TRUSTED':
+ return False
+
+ # Unlike ShouldTranslateToNexe, we always prep during the build step,
+ # since there is no prep tool that can run on triggered bots such as the
+ # ARM HW bots.
+ return True
+
+pre_base_env.AddMethod(ShouldFinalizePexe)
+
def CommandTestFileDumpCheck(env,
name,
@@ -1614,12 +1652,12 @@ def CommandTestFileDumpCheck(env,
# ARM objdump though... a TODO(jvoung) for when there is time.
if env.Bit('built_elsewhere'):
return []
+ if env.ShouldFinalizePexe(target):
+ target = env.GetFinalizedPexe(target)
Mark Seaborn 2013/03/28 01:31:34 GetFinalizedPexe() is always called after ShouldFi
jvoung - send to chromium... 2013/03/28 15:50:29 Yes, I think we can merge these.
if env.ShouldTranslateToNexe(target):
- target_obj = env.GetTranslatedNexe(target)
- else:
- target_obj = target
+ target = env.GetTranslatedNexe(target)
return env.CommandTestFileCheck(name,
- ['${OBJDUMP}', objdump_flags, target_obj],
+ ['${OBJDUMP}', objdump_flags, target],
check_file)
pre_base_env.AddMethod(CommandTestFileDumpCheck)
@@ -1660,6 +1698,11 @@ def CommandSelLdrTestNacl(env, name, nexe,
env['TRUSTED_ENV'].Bit('windows')):
return []
+ if env.ShouldFinalizePexe(nexe):
+ # The nexe is actually a pexe and we need to prep it for
+ # ABI stability first.
+ nexe = env.GetFinalizedPexe(nexe)
+
if env.ShouldTranslateToNexe(nexe):
# The nexe is actually a pexe. Translate it before we run it.
nexe = env.GetTranslatedNexe(nexe)
« no previous file with comments | « no previous file | TOOL_REVISIONS » ('j') | tests/barebones/nacl.scons » ('J')

Powered by Google App Engine
This is Rietveld 408576698