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

Unified Diff: pnacl/driver/wrapper-link-and-translate.py

Issue 22859030: Remove wrapper-link-and-translate from PNaCl and pnacl_shared_newlib from SCons. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: one more reference Created 7 years, 4 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 | « pnacl/driver/pnacl-translate.py ('k') | site_scons/site_tools/naclsdk.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pnacl/driver/wrapper-link-and-translate.py
diff --git a/pnacl/driver/wrapper-link-and-translate.py b/pnacl/driver/wrapper-link-and-translate.py
deleted file mode 100644
index 24df0d27b93ba1f604c58ef7923db618ec57fedf..0000000000000000000000000000000000000000
--- a/pnacl/driver/wrapper-link-and-translate.py
+++ /dev/null
@@ -1,233 +0,0 @@
-#!/usr/bin/python
-# Copyright (c) 2012 The Native Client Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# IMPORTANT NOTE: If you make local mods to this file, you must run:
-# % pnacl/build.sh driver
-# in order for them to take effect in the scons build. This command
-# updates the copy in the toolchain/ tree.
-#
-
-import os
-import re
-
-from driver_env import env as Env
-from driver_log import Log
-import driver_tools
-
-EXTRA_ENV = {
- 'INPUTS' : '',
- 'OUTPUT' : '',
-
- # bitcode linking flags - will be passed through to the pexe linking phase
- 'RELEVANT_FLAGS' : '',
- 'GENERATE_PIC' : '0',
-
- 'MODE' : '',
-
- 'LIB_PATHS' : '',
- 'LIBS' : '',
-
- 'SONAME_FLAG' : '',
- 'OPT_FLAG' : '',
-}
-
-RawRelevantArgs = []
-
-RE_PATH = r'((?:-Wl,-rpath-link,|-L|-B).+)'
-RE_LIB = r'(-l.+)'
-
-def RecordRelevantArg(category, value):
- Env.append(category, value)
- RawRelevantArgs.append(value)
-
-def RecordInput(value):
- RecordRelevantArg('INPUTS', value)
-
-def RecordLib(value):
- RecordRelevantArg('LIBS', value)
-
-def RecordPath(value):
- RecordRelevantArg('LIB_PATHS', value)
-
-
-ARG_PATTERNS = [
- ( ('-o','(.*)'), "env.set('OUTPUT', $0)"),
-
- ( RE_PATH, RecordPath),
- ( RE_LIB, RecordLib),
-
- ( '(-l.+)', "env.append('RELEVANT_FLAGS', $0)"),
-
- ( '(-Wl,-soname,.+)', "env.append('SONAME_FLAG', $0)"),
- ( '(-O.+)', "env.set('OPT_FLAGS_LINK', '$0')"),
-
- ( '-(dynamic|shared|static)', "env.set('MODE', $0)"),
-
- ( '-fPIC', "env.set('GENERATE_PIC', '1')"),
-
- ( '(-.*)', driver_tools.UnrecognizedOption),
-
- ( '(.*)', RecordInput),
-]
-
-
-def ProcessBuildCommand(template):
- result = []
- for t in template:
- if type(t) == str:
- s = driver_tools.env.eval(t)
- if s:
- result += [s]
- # This is the more or less standard to test for a function
- elif hasattr(t, '__call__'):
- result += t()
- else:
- Log.Fatal('do now know how to process template member %s of type %s',
- repr(t), type(t))
- return result
-
-
-def DumpCommand(prefix, args):
- for a in args:
- print prefix + ": " + a
-
-# ======================================================================
-# -shared mode
-# ======================================================================
-
-def GetPsoTarget():
- out = Env.getone('OUTPUT')
- if not out.endswith('.so'):
- Log.Fatal('Unexpected target name %s', out)
- return [out[:-2] + "pso"]
-
-
-def GetPsoInputs():
- return Env.get('INPUTS')
-
-
-BUILD_COMMAND_PSO_FROM_BC = [
- '--pnacl-driver-verbose',
- '${OPT_FLAG}',
- '${SONAME_FLAG}',
- '-shared',
- # for now force not dt_needed in .pso/.so
- '-nodefaultlibs',
- '-o', GetPsoTarget,
- GetPsoInputs,
-]
-
-
-BUILD_COMMAND_SO_FROM_PSO = [
- '--pnacl-driver-verbose',
- '--newlib-shared-experiment',
- '-shared',
- '-fPIC',
- '-arch', '${ARCH}',
- '-o', '${OUTPUT}',
- GetPsoTarget,
-]
-
-
-def BuildSharedLib():
- # Shared libs must be built PIC
- Env.set('GENERATE_PIC', '1')
- inputs = Env.get('INPUTS')
- if len(inputs) == 0:
- Log.Fatal('No input specified.')
- if not Env.getbool('GENERATE_PIC'):
- Log.Fatal('Shared libs must be build in pic mode. Use -fPIC')
- if Env.getone('SONAME_FLAG') == '':
- Log.Fatal('Shared libs must be given a soname.')
-
- pso_command = ProcessBuildCommand(BUILD_COMMAND_PSO_FROM_BC)
- DumpCommand("@bc->pso", pso_command)
- # suppress_arch is needed to prevent clang to inherit the
- # -arch argument
- driver_tools.RunDriver('clang', pso_command, suppress_arch=True)
-
- so_command = ProcessBuildCommand(BUILD_COMMAND_SO_FROM_PSO)
- DumpCommand("@pso->so", so_command)
- driver_tools.RunDriver('translate', so_command)
-
-# ======================================================================
-# -static mode
-# ======================================================================
-
-def BuildStaticExecutable():
- Log.Fatal('PNaCl scons wrapper does not support static executables')
-
-# ======================================================================
-# -dynamic mode
-# ======================================================================
-
-def GetPexeTarget():
- out = Env.getone('OUTPUT')
- if not out.endswith('.nexe'):
- Log.Fatal('Unexpected target name %s', out)
- return [out[:-4] + "pexe"]
-
-
-def GetPexeInputsDynamic():
- return RawRelevantArgs
-
-
-BUILD_COMMAND_PEXE_FROM_BC = [
- '--pnacl-driver-verbose',
- '${OPT_FLAG}',
- '-o', GetPexeTarget,
- GetPexeInputsDynamic,
-]
-
-
-BUILD_COMMAND_NEXE_FROM_PEXE = [
- '--pnacl-driver-verbose',
- '-arch', '${ARCH}',
- '--newlib-shared-experiment',
- '-o', '${OUTPUT}',
- GetPexeTarget,
-]
-
-def BuildDynamicExecutable():
- inputs = Env.get('INPUTS')
- if len(inputs) != 1:
- Log.Fatal('You must specify exactly on input for a dynamic executable.')
-
- pexe_command = ProcessBuildCommand(BUILD_COMMAND_PEXE_FROM_BC)
- DumpCommand("@bc->pexe", pexe_command)
- driver_tools.RunDriver('clang', pexe_command, suppress_arch=True)
-
- nexe_command = ProcessBuildCommand(BUILD_COMMAND_NEXE_FROM_PEXE)
- DumpCommand("@pexe->nexe", nexe_command)
- driver_tools.RunDriver('translate', nexe_command)
-
-# ======================================================================
-#
-# ======================================================================
-
-def main(argv):
- DumpCommand("@incoming", argv)
-
- Env.update(EXTRA_ENV)
- driver_tools.ParseArgs(argv, ARG_PATTERNS)
-
- output = Env.getone('OUTPUT')
-
- if output == '':
- Log.Fatal('No output specified. Use -o to specify output')
-
- if Env.getone('ARCH') == '':
- Log.Fatal('No arch specified')
-
- mode = Env.getone('MODE')
- if mode == 'shared':
- BuildSharedLib()
- elif mode == 'dynamic':
- BuildDynamicExecutable()
- elif mode == 'static':
- BuildStaticExecutable()
- else:
- Log.Fatal('You must specify at least one of -static, -shared, -dynamic')
- return 0
« no previous file with comments | « pnacl/driver/pnacl-translate.py ('k') | site_scons/site_tools/naclsdk.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698