mirror of https://github.com/lukechilds/node.git
Browse Source
PR-URL: https://github.com/nodejs/node/pull/14718 Refs:canary-base324dd166b7
Refs:324dd166b7
Reviewed-By: James M Snell <jasnell@gmail.com>
Refael Ackermann
7 years ago
10 changed files with 279 additions and 383 deletions
@ -1,115 +0,0 @@ |
|||||
# Copyright (c) 2016 Ben Noordhuis <info@bnoordhuis.nl>. All rights reserved. |
|
||||
# Use of this source code is governed by a BSD-style license that can be |
|
||||
# found in the LICENSE file. |
|
||||
|
|
||||
import gyp.common |
|
||||
import gyp.xcode_emulation |
|
||||
import json |
|
||||
import os |
|
||||
|
|
||||
generator_additional_non_configuration_keys = [] |
|
||||
generator_additional_path_sections = [] |
|
||||
generator_extra_sources_for_rules = [] |
|
||||
generator_filelist_paths = None |
|
||||
generator_supports_multiple_toolsets = True |
|
||||
generator_wants_sorted_dependencies = False |
|
||||
|
|
||||
# Lifted from make.py. The actual values don't matter much. |
|
||||
generator_default_variables = { |
|
||||
'CONFIGURATION_NAME': '$(BUILDTYPE)', |
|
||||
'EXECUTABLE_PREFIX': '', |
|
||||
'EXECUTABLE_SUFFIX': '', |
|
||||
'INTERMEDIATE_DIR': '$(obj).$(TOOLSET)/$(TARGET)/geni', |
|
||||
'PRODUCT_DIR': '$(builddir)', |
|
||||
'RULE_INPUT_DIRNAME': '%(INPUT_DIRNAME)s', |
|
||||
'RULE_INPUT_EXT': '$(suffix $<)', |
|
||||
'RULE_INPUT_NAME': '$(notdir $<)', |
|
||||
'RULE_INPUT_PATH': '$(abspath $<)', |
|
||||
'RULE_INPUT_ROOT': '%(INPUT_ROOT)s', |
|
||||
'SHARED_INTERMEDIATE_DIR': '$(obj)/gen', |
|
||||
'SHARED_LIB_PREFIX': 'lib', |
|
||||
'STATIC_LIB_PREFIX': 'lib', |
|
||||
'STATIC_LIB_SUFFIX': '.a', |
|
||||
} |
|
||||
|
|
||||
|
|
||||
def IsMac(params): |
|
||||
return 'mac' == gyp.common.GetFlavor(params) |
|
||||
|
|
||||
|
|
||||
def CalculateVariables(default_variables, params): |
|
||||
default_variables.setdefault('OS', gyp.common.GetFlavor(params)) |
|
||||
|
|
||||
|
|
||||
def AddCommandsForTarget(cwd, target, params, per_config_commands): |
|
||||
output_dir = params['generator_flags']['output_dir'] |
|
||||
for configuration_name, configuration in target['configurations'].iteritems(): |
|
||||
builddir_name = os.path.join(output_dir, configuration_name) |
|
||||
|
|
||||
if IsMac(params): |
|
||||
xcode_settings = gyp.xcode_emulation.XcodeSettings(target) |
|
||||
cflags = xcode_settings.GetCflags(configuration_name) |
|
||||
cflags_c = xcode_settings.GetCflagsC(configuration_name) |
|
||||
cflags_cc = xcode_settings.GetCflagsCC(configuration_name) |
|
||||
else: |
|
||||
cflags = configuration.get('cflags', []) |
|
||||
cflags_c = configuration.get('cflags_c', []) |
|
||||
cflags_cc = configuration.get('cflags_cc', []) |
|
||||
|
|
||||
cflags_c = cflags + cflags_c |
|
||||
cflags_cc = cflags + cflags_cc |
|
||||
|
|
||||
defines = configuration.get('defines', []) |
|
||||
defines = ['-D' + s for s in defines] |
|
||||
|
|
||||
# TODO(bnoordhuis) Handle generated source files. |
|
||||
sources = target.get('sources', []) |
|
||||
sources = [s for s in sources if s.endswith('.c') or s.endswith('.cc')] |
|
||||
|
|
||||
def resolve(filename): |
|
||||
return os.path.abspath(os.path.join(cwd, filename)) |
|
||||
|
|
||||
# TODO(bnoordhuis) Handle generated header files. |
|
||||
include_dirs = configuration.get('include_dirs', []) |
|
||||
include_dirs = [s for s in include_dirs if not s.startswith('$(obj)')] |
|
||||
includes = ['-I' + resolve(s) for s in include_dirs] |
|
||||
|
|
||||
defines = gyp.common.EncodePOSIXShellList(defines) |
|
||||
includes = gyp.common.EncodePOSIXShellList(includes) |
|
||||
cflags_c = gyp.common.EncodePOSIXShellList(cflags_c) |
|
||||
cflags_cc = gyp.common.EncodePOSIXShellList(cflags_cc) |
|
||||
|
|
||||
commands = per_config_commands.setdefault(configuration_name, []) |
|
||||
for source in sources: |
|
||||
file = resolve(source) |
|
||||
isc = source.endswith('.c') |
|
||||
cc = 'cc' if isc else 'c++' |
|
||||
cflags = cflags_c if isc else cflags_cc |
|
||||
command = ' '.join((cc, defines, includes, cflags, |
|
||||
'-c', gyp.common.EncodePOSIXShellArgument(file))) |
|
||||
commands.append(dict(command=command, directory=output_dir, file=file)) |
|
||||
|
|
||||
|
|
||||
def GenerateOutput(target_list, target_dicts, data, params): |
|
||||
per_config_commands = {} |
|
||||
for qualified_target, target in target_dicts.iteritems(): |
|
||||
build_file, target_name, toolset = ( |
|
||||
gyp.common.ParseQualifiedTarget(qualified_target)) |
|
||||
if IsMac(params): |
|
||||
settings = data[build_file] |
|
||||
gyp.xcode_emulation.MergeGlobalXcodeSettingsToSpec(settings, target) |
|
||||
cwd = os.path.dirname(build_file) |
|
||||
AddCommandsForTarget(cwd, target, params, per_config_commands) |
|
||||
|
|
||||
output_dir = params['generator_flags']['output_dir'] |
|
||||
for configuration_name, commands in per_config_commands.iteritems(): |
|
||||
filename = os.path.join(output_dir, |
|
||||
configuration_name, |
|
||||
'compile_commands.json') |
|
||||
gyp.common.EnsureDirExists(filename) |
|
||||
fp = open(filename, 'w') |
|
||||
json.dump(commands, fp=fp, indent=0, check_circular=False) |
|
||||
|
|
||||
|
|
||||
def PerformBuild(data, configurations, params): |
|
||||
pass |
|
Loading…
Reference in new issue