| Index: native_client_sdk/src/build_tools/dsc2gyp.py
|
| diff --git a/native_client_sdk/src/build_tools/dsc2gyp.py b/native_client_sdk/src/build_tools/dsc2gyp.py
|
| deleted file mode 100755
|
| index 7032e94c0631d84d167f51e9e63be25507bbbec1..0000000000000000000000000000000000000000
|
| --- a/native_client_sdk/src/build_tools/dsc2gyp.py
|
| +++ /dev/null
|
| @@ -1,378 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import argparse
|
| -import StringIO
|
| -import sys
|
| -import os
|
| -
|
| -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
| -sys.path.append(os.path.join(os.path.dirname(SCRIPT_DIR), 'tools'))
|
| -
|
| -import getos
|
| -
|
| -valid_tools = ['newlib', 'glibc', getos.GetPlatform()]
|
| -
|
| -
|
| -def Error(msg):
|
| - print(msg)
|
| - sys.exit(1)
|
| -
|
| -
|
| -PREAMBLE = """\
|
| -{
|
| - 'includes': ['%s/build_tools/nacl.gypi'],
|
| -"""
|
| -
|
| -NEXE_TARGET = """\
|
| - {
|
| - 'target_name': '%(NAME)s_x86_32%(EXT)s',
|
| - 'product_name': '%(NAME)s_x86_32%(EXT)s',
|
| - 'type': '%(GYP_TYPE)s',
|
| - 'sources': %(SOURCES)s,
|
| - 'libraries': %(LIBS)s,
|
| - 'include_dirs': %(INCLUDES)s,
|
| - 'cflags': ['-m32', '-pedantic'] + %(CFLAGS)s,
|
| - 'make_valid_configurations': ['newlib-debug', 'newlib-release',
|
| - 'glibc-debug', 'glibc-release'],
|
| - 'ldflags': ['-m32', '-L../../lib/x86_32/<(CONFIGURATION_NAME)'],
|
| - 'toolset': 'target',
|
| - %(CONFIGS)s
|
| - },
|
| - {
|
| - 'target_name': '%(NAME)s_x86_64%(EXT)s',
|
| - 'product_name': '%(NAME)s_x86_64%(EXT)s',
|
| - 'type': '%(GYP_TYPE)s',
|
| - 'sources': %(SOURCES)s,
|
| - 'libraries': %(LIBS)s,
|
| - 'include_dirs': %(INCLUDES)s,
|
| - 'make_valid_configurations': ['newlib-debug', 'newlib-release',
|
| - 'glibc-debug', 'glibc-release'],
|
| - 'cflags': ['-m64', '-pedantic'] + %(CFLAGS)s,
|
| - 'ldflags': ['-m64', '-L../../lib/x86_64/<(CONFIGURATION_NAME)'],
|
| - 'toolset': 'target',
|
| - %(CONFIGS)s
|
| - },
|
| -"""
|
| -
|
| -NLIB_TARGET = """\
|
| - {
|
| - 'target_name': '%(NAME)s_x86_32%(EXT)s',
|
| - 'product_name': 'lib%(NAME)s%(EXT)s',
|
| - 'product_dir': '../../lib/x86_32/<(CONFIGURATION_NAME)',
|
| - 'type': '%(GYP_TYPE)s',
|
| - 'sources': %(SOURCES)s,
|
| - 'libraries': %(LIBS)s,
|
| - 'include_dirs': %(INCLUDES)s,
|
| - 'cflags': ['-m32', '-pedantic'] + %(CFLAGS)s,
|
| - 'make_valid_configurations': ['newlib-debug', 'newlib-release',
|
| - 'glibc-debug', 'glibc-release'],
|
| - 'ldflags': ['-m32'],
|
| - 'toolset': 'target',
|
| - %(CONFIGS)s
|
| - },
|
| - {
|
| - 'target_name': '%(NAME)s_x86_64%(EXT)s',
|
| - 'product_name': 'lib%(NAME)s%(EXT)s',
|
| - 'product_dir': '../../lib/x86_64/<(CONFIGURATION_NAME)',
|
| - 'type': '%(GYP_TYPE)s',
|
| - 'sources': %(SOURCES)s,
|
| - 'libraries': %(LIBS)s,
|
| - 'include_dirs': %(INCLUDES)s,
|
| - 'make_valid_configurations': ['newlib-debug', 'newlib-release',
|
| - 'glibc-debug', 'glibc-release'],
|
| - 'cflags': ['-m64', '-pedantic'] + %(CFLAGS)s,
|
| - 'ldflags': ['-m64'],
|
| - 'toolset': 'target',
|
| - %(CONFIGS)s
|
| - },
|
| -"""
|
| -
|
| -HOST_LIB_TARGET = """\
|
| - {
|
| - 'target_name': '%(NAME)s%(EXT)s',
|
| - 'type': '%(GYP_TYPE)s',
|
| - 'toolset': 'host',
|
| - 'sources': %(SOURCES)s,
|
| - 'cflags': %(CFLAGS)s,
|
| - 'cflags_c': ['-std=gnu99'],
|
| - 'include_dirs': %(INCLUDES)s,
|
| - 'make_valid_configurations': ['host-debug', 'host-release'],
|
| - 'product_dir': '../../lib/%(ARCH)s/<(CONFIGURATION_NAME)',
|
| - 'product_name': '%(NAME)s%(EXT)s',
|
| - %(CONFIGS)s
|
| - },
|
| -"""
|
| -
|
| -HOST_EXE_TARGET = """\
|
| - {
|
| - 'target_name': '%(NAME)s%(EXT)s',
|
| - 'type': '%(GYP_TYPE)s',
|
| - 'toolset': 'host',
|
| - 'sources': %(SOURCES)s,
|
| - 'cflags': %(CFLAGS)s,
|
| - 'cflags_c': ['-std=gnu99'],
|
| - 'ldflags': ['-L../../lib/%(ARCH)s/<(CONFIGURATION_NAME)'],
|
| - 'libraries': %(LIBS)s,
|
| - 'include_dirs': %(INCLUDES)s,
|
| - 'make_valid_configurations': ['host-debug', 'host-release'],
|
| - 'msvs_settings': {
|
| - 'VCLinkerTool': {
|
| - 'AdditionalLibraryDirectories':
|
| - ['../../lib/%(ARCH)s/<(CONFIGURATION_NAME)'],
|
| - }
|
| - },
|
| - %(CONFIGS)s
|
| - },
|
| -"""
|
| -
|
| -NMF_TARGET = """\
|
| - {
|
| - 'target_name': '%(NAME)s_%(TOOLCHAIN)s.nmf',
|
| - 'product_name': '%(NAME)s.nmf',
|
| - 'product_dir': '<(PRODUCT_DIR)/%(TOOLCHAIN)s',
|
| - 'type': 'none',
|
| - 'make_valid_configurations': ['%(TOOLCHAIN)s-debug', '%(TOOLCHAIN)s-release'],
|
| - 'actions': [
|
| - {
|
| - 'action_name': 'nmf',
|
| - 'inputs': ['<(PRODUCT_DIR)/%(NAME)s_x86_32.nexe',
|
| - '<(PRODUCT_DIR)/%(NAME)s_x86_64.nexe'] + %(SODEPS)s,
|
| - 'outputs': ['<(PRODUCT_DIR)/%(NAME)s.nmf'],
|
| - 'action': ['../../tools/create_nmf.py', '-t', '%(TOOLCHAIN)s', '-s',
|
| - '<(PRODUCT_DIR)'] + %(NMFACTION)s,
|
| - },
|
| - ]
|
| - },
|
| -"""
|
| -
|
| -TOOLCHAIN_CONFIG = """\
|
| - '%(toolchain)s-release' : {
|
| - 'cflags' : ['-O2'],
|
| - },
|
| - '%(toolchain)s-debug' : {
|
| - 'cflags' : ['-g', '-O0'],
|
| - },
|
| -"""
|
| -
|
| -NEXE_CONFIG = """\
|
| - '%(toolchain)s-release' : {
|
| - 'cflags' : ['--%(toolchain)s', '-O2',
|
| - '-idirafter', '../../include'],
|
| - 'ldflags' : ['--%(toolchain)s'],
|
| - 'arflags' : ['--%(toolchain)s'],
|
| - },
|
| - '%(toolchain)s-debug' : {
|
| - 'cflags' : ['--%(toolchain)s', '-g', '-O0',
|
| - '-idirafter', '../../include'],
|
| - 'ldflags' : ['--%(toolchain)s'],
|
| - 'arflags' : ['--%(toolchain)s'],
|
| - },
|
| -"""
|
| -
|
| -WIN32_CONFIGS = """\
|
| - 'target_defaults': {
|
| - 'default_configuration': 'Debug_PPAPI',
|
| - 'configurations': {
|
| - 'Debug_PPAPI': {
|
| - 'msvs_configuration_platform': 'PPAPI',
|
| - 'msbuild_configuration_attributes': {
|
| - 'ConfigurationType': 'DynamicLibrary'
|
| - },
|
| - 'include_dirs': ['../../include/win'],
|
| - 'defines': ['_WINDOWS', '_DEBUG', 'WIN32'],
|
| - },
|
| - 'Release_PPAPI': {
|
| - 'msvs_configuration_platform': 'PPAPI',
|
| - 'msbuild_configuration_attributes': {
|
| - 'ConfigurationType': 'DynamicLibrary'
|
| - },
|
| - 'include_dirs': ['../../include/win'],
|
| - 'defines': ['_WINDOWS', 'NDEBUG', 'WIN32'],
|
| - },
|
| - 'Debug_NaCl': {
|
| - 'msvs_configuration_platform': 'NaCl',
|
| - 'msbuild_configuration_attributes': {
|
| - 'ConfigurationType': 'Application'
|
| - },
|
| - },
|
| - 'Release_NaCl': {
|
| - 'msvs_configuration_platform': 'NaCl',
|
| - 'msbuild_configuration_attributes': {
|
| - 'ConfigurationType': 'Application'
|
| - },
|
| - },
|
| - },
|
| - },
|
| -"""
|
| -
|
| -
|
| -def WriteNaClTargets(output, target, tools):
|
| - configs = "'configurations' : {\n"
|
| - for tc in tools:
|
| - if tc not in valid_tools:
|
| - continue
|
| - if tc in ['newlib', 'glibc']:
|
| - configs += NEXE_CONFIG % {'toolchain': tc}
|
| - configs += " }"
|
| - target['CONFIGS'] = configs
|
| - if target['TYPE'] == 'lib':
|
| - output.write(NLIB_TARGET % target)
|
| - else:
|
| - output.write(NEXE_TARGET % target)
|
| -
|
| -
|
| -def ConfigName(toolchain):
|
| - if toolchain == getos.GetPlatform():
|
| - return 'host'
|
| - else:
|
| - return toolchain
|
| -
|
| -
|
| -def ProcessDSC(filename, outfile=None):
|
| - if not os.path.exists(filename):
|
| - Error("file not found: %s" % filename)
|
| -
|
| - desc = open(filename).read()
|
| - desc = eval(desc, {}, {})
|
| - if not desc.get('TARGETS'):
|
| - Error("no TARGETS found in dsc")
|
| -
|
| - if not outfile:
|
| - outfile = desc['NAME'] + '.gyp'
|
| - outfile = os.path.join(os.path.dirname(filename), outfile)
|
| -
|
| - output = StringIO.StringIO()
|
| -
|
| - srcdir = os.path.dirname(SCRIPT_DIR)
|
| - output.write(PREAMBLE % srcdir.replace("\\", '/'))
|
| -
|
| - win32 = sys.platform in ('win32', 'cygwin')
|
| - if win32:
|
| - output.write(WIN32_CONFIGS)
|
| - else:
|
| - for tc in desc['TOOLS']:
|
| - if tc in valid_tools:
|
| - default = '%s-debug' % ConfigName(tc)
|
| - break
|
| -
|
| - output.write("""\
|
| - 'target_defaults': {
|
| - 'default_configuration': '%s',
|
| - 'configurations' : {\n""" % default)
|
| -
|
| - for tc in desc['TOOLS']:
|
| - if tc not in valid_tools:
|
| - continue
|
| - output.write(TOOLCHAIN_CONFIG % {'toolchain': ConfigName(tc)})
|
| -
|
| - output.write(" }\n },\n")
|
| -
|
| - output.write("\n 'targets': [\n")
|
| -
|
| - # make a list of all the so target names so that the nmf rules
|
| - # can depend on them all
|
| - sofiles = []
|
| - soremap = []
|
| - for target in desc['TARGETS']:
|
| - if target['TYPE'] == 'so':
|
| - name = target['NAME']
|
| - sofiles.append('<(PRODUCT_DIR)/%s_x86_64.so' % name)
|
| - sofiles.append('<(PRODUCT_DIR)/%s_x86_32.so' % name)
|
| - soremap += ['-n', '%s_x86_64.so,%s.so' % (name, name)]
|
| - soremap += ['-n', '%s_x86_32.so,%s.so' % (name, name)]
|
| -
|
| -
|
| - # iterate through dsc targets generating gyp targets
|
| - for target in desc['TARGETS']:
|
| - target.setdefault('INCLUDES', [])
|
| - target['INCLUDES'] = [x.replace("$(NACL_SDK_ROOT)", "../..")
|
| - for x in target['INCLUDES']]
|
| -
|
| - libs = target.get('LIBS', [])
|
| - if win32:
|
| - libs = [l for l in libs if l not in ('ppapi', 'ppapi_cpp')]
|
| - target['LIBS'] = ['-l' + l + '.lib' for l in libs]
|
| - else:
|
| - target['LIBS'] = ['-l' + l for l in libs]
|
| - if target['TYPE'] == 'so':
|
| - if win32:
|
| - target['EXT'] = ''
|
| - else:
|
| - target['EXT'] = '.so'
|
| - target['GYP_TYPE'] = 'shared_library'
|
| - elif target['TYPE'] == 'lib':
|
| - if win32:
|
| - target['EXT'] = ''
|
| - else:
|
| - target['EXT'] = '.a'
|
| - target['GYP_TYPE'] = 'static_library'
|
| - elif target['TYPE'] == 'main':
|
| - target['EXT'] = '.nexe'
|
| - target['GYP_TYPE'] = 'executable'
|
| - else:
|
| - Error("unknown type: %s" % target['TYPE'])
|
| -
|
| - target['CFLAGS'] = target.get('CXXFLAGS', [])
|
| -
|
| - if not win32 and ('newlib' in desc['TOOLS'] or 'glibc' in desc['TOOLS']):
|
| - WriteNaClTargets(output, target, desc['TOOLS'])
|
| - if target['TYPE'] == 'main':
|
| - target['SODEPS'] = sofiles
|
| - target['NMFACTION'] = ['-o', '<@(_outputs)', '-L<(NMF_PATH1)',
|
| - '-L<(NMF_PATH2)', '-D', '<(OBJDUMP)',
|
| - '<@(_inputs)']
|
| - target['NMFACTION'] += soremap
|
| - if 'newlib' in desc['TOOLS']:
|
| - target['TOOLCHAIN'] = 'newlib'
|
| - output.write(NMF_TARGET % target)
|
| - if 'glibc' in desc['TOOLS']:
|
| - target['TOOLCHAIN'] = 'glibc'
|
| - output.write(NMF_TARGET % target)
|
| -
|
| - if win32 or getos.GetPlatform() in desc['TOOLS']:
|
| - target['ARCH'] = 'x86_32'
|
| - target['INCLUDES'].append('../../include')
|
| - if win32:
|
| - target['HOST'] = 'win'
|
| - target['CONFIGS'] = ''
|
| - target['CFLAGS'] = []
|
| - else:
|
| - target['CONFIGS'] = ''
|
| - target['HOST'] = 'linux'
|
| - target['CFLAGS'].append('-fPIC')
|
| - if target['TYPE'] == 'main':
|
| - target['GYP_TYPE'] = 'shared_library'
|
| - if win32:
|
| - target['EXT'] = ''
|
| - else:
|
| - target['EXT'] = '.so'
|
| - output.write(HOST_EXE_TARGET % target)
|
| - else:
|
| - output.write(HOST_LIB_TARGET % target)
|
| -
|
| - output.write(' ],\n}\n')
|
| -
|
| - print('Writing: ' + outfile)
|
| - open(outfile, 'w').write(output.getvalue())
|
| -
|
| -
|
| -def main(args):
|
| - parser = argparse.ArgumentParser()
|
| - parser.add_argument('-o', help='Set output filename.', dest='output')
|
| - parser.add_argument('dsc', help='dsc to convert')
|
| - options = parser.parse_args(args)
|
| -
|
| - if options.output:
|
| - outdir = os.path.dirname(options.output)
|
| - if not os.path.exists(outdir):
|
| - os.makedirs(outdir)
|
| -
|
| - ProcessDSC(options.dsc, options.output)
|
| - return 0
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - sys.exit(main(sys.argv[1:]))
|
|
|