Add support for the GN configuration language (#3368)

* Add samples and definition for GN build files

* Add grammar to provide GN syntax highlighting

* Fix failing tests

* Add Python extensions for GYP includes and .gclient configs
This commit is contained in:
John Gardner
2016-12-08 04:20:23 +11:00
committed by Brandon Black
parent 33ce2d7264
commit 45c27f26a2
21 changed files with 15256 additions and 15 deletions

3
.gitmodules vendored
View File

@@ -803,3 +803,6 @@
[submodule "vendor/grammars/language-fontforge"]
path = vendor/grammars/language-fontforge
url = https://github.com/Alhadis/language-fontforge
[submodule "vendor/grammars/language-gn"]
path = vendor/grammars/language-gn
url = https://github.com/devoncarew/language-gn

View File

@@ -368,6 +368,8 @@ vendor/grammars/language-fontforge:
- text.sfd
vendor/grammars/language-gfm:
- source.gfm
vendor/grammars/language-gn:
- source.gn
vendor/grammars/language-graphql:
- source.graphql
vendor/grammars/language-haml:

View File

@@ -19,7 +19,7 @@
# language_id - Integer used as a language-name-independent indexed field so that we can rename
# languages in Linguist without reindexing all the code on GitHub. Must not be
# changed for existing languages without the explicit permission of GitHub staff.
# color - CSS hex color to represent the language. Only used if type is "programming" or "prose"
# color - CSS hex color to represent the language. Only used if type is "programming" or "prose".
# tm_scope - The TextMate scope that represents this programming
# language. This should match one of the scopes listed in
# the grammars.yml file. Use "none" if there is no grammar
@@ -1393,6 +1393,18 @@ GLSL:
- ".vshader"
ace_mode: glsl
language_id: 124
GN:
type: data
extensions:
- ".gn"
- ".gni"
interpreters:
- gn
tm_scope: source.gn
ace_mode: python
codemirror_mode: python
codemirror_mime_type: text/x-python
language_id: 302957008
Game Maker Language:
type: programming
color: "#8fb200"
@@ -3392,6 +3404,7 @@ Python:
- ".cgi"
- ".fcgi"
- ".gyp"
- ".gypi"
- ".lmi"
- ".py3"
- ".pyde"
@@ -3404,6 +3417,7 @@ Python:
- ".wsgi"
- ".xpy"
filenames:
- .gclient
- BUCK
- BUILD
- SConscript

59
samples/GN/BUILD.2.gn Normal file
View File

@@ -0,0 +1,59 @@
# Copyright 2016 the V8 project 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("../gni/isolate.gni")
group("gn_all") {
testonly = true
if (v8_test_isolation_mode != "noop") {
deps = [
":check-static-initializers_run",
":jsfunfuzz_run",
":run-deopt-fuzzer_run",
":run-gcmole_run",
":run-valgrind_run",
]
}
}
v8_isolate_run("check-static-initializers") {
deps = [
"..:d8_run",
]
isolate = "check-static-initializers.isolate"
}
v8_isolate_run("jsfunfuzz") {
deps = [
"..:d8_run",
]
isolate = "jsfunfuzz/jsfunfuzz.isolate"
}
v8_isolate_run("run-deopt-fuzzer") {
deps = [
"..:d8_run",
]
isolate = "run-deopt-fuzzer.isolate"
}
v8_isolate_run("run-gcmole") {
deps = [
"..:d8_run",
]
isolate = "gcmole/run-gcmole.isolate"
}
v8_isolate_run("run-valgrind") {
deps = [
"..:d8_run",
]
isolate = "run-valgrind.isolate"
}

1646
samples/GN/BUILD.3.gn Normal file

File diff suppressed because it is too large Load Diff

2583
samples/GN/BUILD.gn Normal file

File diff suppressed because it is too large Load Diff

2781
samples/GN/android-rules.gni Normal file

File diff suppressed because it is too large Load Diff

13
samples/GN/clang.gni Normal file
View File

@@ -0,0 +1,13 @@
# Copyright 2014 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("//build/toolchain/toolchain.gni")
declare_args() {
# Indicates if the build should use the Chrome-specific plugins for enforcing
# coding guidelines, etc. Only used when compiling with Clang.
clang_use_chrome_plugins = is_clang && !is_nacl && !use_xcode_clang
clang_base_path = "//third_party/llvm-build/Release+Asserts"
}

25
samples/GN/filenames/.gn Normal file
View File

@@ -0,0 +1,25 @@
# This file is used by the GN meta build system to find the root of the source
# tree and to set startup options. For documentation on the values set in this
# file, run "gn help dotfile" at the command line.
import("//build/dotfile_settings.gni")
# The location of the build configuration file.
buildconfig = "//build/config/BUILDCONFIG.gn"
# The secondary source root is a parallel directory tree where
# GN build files are placed when they can not be placed directly
# in the source tree, e.g. for third party source trees.
secondary_source = "//build/secondary/"
# These are the targets to check headers for by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will have
# their includes checked for proper dependencies when you run either
# "gn check" or "gn gen --check".
check_targets = []
# These are the list of GN files that run exec_script. This whitelist exists
# to force additional review for new uses of exec_script, which is strongly
# discouraged except for gypi_to_gn calls.
exec_script_whitelist =
build_dotfile_settings.exec_script_whitelist + [ "//test/test262/BUILD.gn" ]

View File

@@ -0,0 +1,503 @@
# Copyright (c) 2013 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("//build/config/android/config.gni")
import("//build/config/clang/clang.gni")
import("//build/config/nacl/config.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/v8_target_cpu.gni")
import("//build/toolchain/cc_wrapper.gni")
import("//build/toolchain/goma.gni")
import("//build/toolchain/toolchain.gni")
# This template defines a toolchain for something that works like gcc
# (including clang).
#
# It requires the following variables specifying the executables to run:
# - ar
# - cc
# - cxx
# - ld
#
# Optional parameters that control the tools:
#
# - extra_cflags
# Extra flags to be appended when compiling C files (but not C++ files).
# - extra_cppflags
# Extra flags to be appended when compiling both C and C++ files. "CPP"
# stands for "C PreProcessor" in this context, although it can be
# used for non-preprocessor flags as well. Not to be confused with
# "CXX" (which follows).
# - extra_cxxflags
# Extra flags to be appended when compiling C++ files (but not C files).
# - extra_ldflags
# Extra flags to be appended when linking
#
# - libs_section_prefix
# - libs_section_postfix
# The contents of these strings, if specified, will be placed around
# the libs section of the linker line. It allows one to inject libraries
# at the beginning and end for all targets in a toolchain.
# - solink_libs_section_prefix
# - solink_libs_section_postfix
# Same as libs_section_{pre,post}fix except used for solink instead of link.
# - link_outputs
# The content of this array, if specified, will be added to the list of
# outputs from the link command. This can be useful in conjunction with
# the post_link parameter.
# - post_link
# The content of this string, if specified, will be run as a separate
# command following the the link command.
# - deps
# Just forwarded to the toolchain definition.
# - executable_extension
# If this string is specified it will be used for the file extension
# for an executable, rather than using no extension; targets will
# still be able to override the extension using the output_extension
# variable.
# - rebuild_define
# The contents of this string, if specified, will be passed as a #define
# to the toolchain. It can be used to force recompiles whenever a
# toolchain is updated.
# - shlib_extension
# If this string is specified it will be used for the file extension
# for a shared library, rather than default value specified in
# toolchain.gni
# - strip
# Location of the strip executable. When specified, strip will be run on
# all shared libraries and executables as they are built. The pre-stripped
# artifacts will be put in lib.unstripped/ and exe.unstripped/.
template("gcc_toolchain") {
toolchain(target_name) {
assert(defined(invoker.ar), "gcc_toolchain() must specify a \"ar\" value")
assert(defined(invoker.cc), "gcc_toolchain() must specify a \"cc\" value")
assert(defined(invoker.cxx), "gcc_toolchain() must specify a \"cxx\" value")
assert(defined(invoker.ld), "gcc_toolchain() must specify a \"ld\" value")
# This define changes when the toolchain changes, forcing a rebuild.
# Nothing should ever use this define.
if (defined(invoker.rebuild_define)) {
rebuild_string = "-D" + invoker.rebuild_define + " "
} else {
rebuild_string = ""
}
# GN's syntax can't handle more than one scope dereference at once, like
# "invoker.toolchain_args.foo", so make a temporary to hold the toolchain
# args so we can do "invoker_toolchain_args.foo".
assert(defined(invoker.toolchain_args),
"Toolchains must specify toolchain_args")
invoker_toolchain_args = invoker.toolchain_args
assert(defined(invoker_toolchain_args.current_cpu),
"toolchain_args must specify a current_cpu")
assert(defined(invoker_toolchain_args.current_os),
"toolchain_args must specify a current_os")
# When invoking this toolchain not as the default one, these args will be
# passed to the build. They are ignored when this is the default toolchain.
toolchain_args = {
# Populate toolchain args from the invoker.
forward_variables_from(invoker_toolchain_args, "*")
# The host toolchain value computed by the default toolchain's setup
# needs to be passed through unchanged to all secondary toolchains to
# ensure that it's always the same, regardless of the values that may be
# set on those toolchains.
host_toolchain = host_toolchain
if (!defined(invoker_toolchain_args.v8_current_cpu)) {
v8_current_cpu = invoker_toolchain_args.current_cpu
}
}
# When the invoker has explicitly overridden use_goma or cc_wrapper in the
# toolchain args, use those values, otherwise default to the global one.
# This works because the only reasonable override that toolchains might
# supply for these values are to force-disable them.
if (defined(toolchain_args.use_goma)) {
toolchain_uses_goma = toolchain_args.use_goma
} else {
toolchain_uses_goma = use_goma
}
if (defined(toolchain_args.cc_wrapper)) {
toolchain_cc_wrapper = toolchain_args.cc_wrapper
} else {
toolchain_cc_wrapper = cc_wrapper
}
# Compute the compiler prefix.
if (toolchain_uses_goma) {
assert(toolchain_cc_wrapper == "",
"Goma and cc_wrapper can't be used together.")
compiler_prefix = "$goma_dir/gomacc "
} else if (toolchain_cc_wrapper != "") {
compiler_prefix = toolchain_cc_wrapper + " "
} else {
compiler_prefix = ""
}
cc = compiler_prefix + invoker.cc
cxx = compiler_prefix + invoker.cxx
ar = invoker.ar
ld = invoker.ld
if (defined(invoker.readelf)) {
readelf = invoker.readelf
} else {
readelf = "readelf"
}
if (defined(invoker.nm)) {
nm = invoker.nm
} else {
nm = "nm"
}
if (defined(invoker.shlib_extension)) {
default_shlib_extension = invoker.shlib_extension
} else {
default_shlib_extension = shlib_extension
}
if (defined(invoker.executable_extension)) {
default_executable_extension = invoker.executable_extension
} else {
default_executable_extension = ""
}
# Bring these into our scope for string interpolation with default values.
if (defined(invoker.libs_section_prefix)) {
libs_section_prefix = invoker.libs_section_prefix
} else {
libs_section_prefix = ""
}
if (defined(invoker.libs_section_postfix)) {
libs_section_postfix = invoker.libs_section_postfix
} else {
libs_section_postfix = ""
}
if (defined(invoker.solink_libs_section_prefix)) {
solink_libs_section_prefix = invoker.solink_libs_section_prefix
} else {
solink_libs_section_prefix = ""
}
if (defined(invoker.solink_libs_section_postfix)) {
solink_libs_section_postfix = invoker.solink_libs_section_postfix
} else {
solink_libs_section_postfix = ""
}
if (defined(invoker.extra_cflags) && invoker.extra_cflags != "") {
extra_cflags = " " + invoker.extra_cflags
} else {
extra_cflags = ""
}
if (defined(invoker.extra_cppflags) && invoker.extra_cppflags != "") {
extra_cppflags = " " + invoker.extra_cppflags
} else {
extra_cppflags = ""
}
if (defined(invoker.extra_cxxflags) && invoker.extra_cxxflags != "") {
extra_cxxflags = " " + invoker.extra_cxxflags
} else {
extra_cxxflags = ""
}
if (defined(invoker.extra_ldflags) && invoker.extra_ldflags != "") {
extra_ldflags = " " + invoker.extra_ldflags
} else {
extra_ldflags = ""
}
# These library switches can apply to all tools below.
lib_switch = "-l"
lib_dir_switch = "-L"
# Object files go in this directory.
object_subdir = "{{target_out_dir}}/{{label_name}}"
tool("cc") {
depfile = "{{output}}.d"
command = "$cc -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}${extra_cppflags}${extra_cflags} -c {{source}} -o {{output}}"
depsformat = "gcc"
description = "CC {{output}}"
outputs = [
# The whitelist file is also an output, but ninja does not
# currently support multiple outputs for tool("cc").
"$object_subdir/{{source_name_part}}.o",
]
if (enable_resource_whitelist_generation) {
compile_wrapper =
rebase_path("//build/toolchain/gcc_compile_wrapper.py",
root_build_dir)
command = "$python_path \"$compile_wrapper\" --resource-whitelist=\"{{output}}.whitelist\" $command"
}
}
tool("cxx") {
depfile = "{{output}}.d"
command = "$cxx -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}}${extra_cppflags}${extra_cxxflags} -c {{source}} -o {{output}}"
depsformat = "gcc"
description = "CXX {{output}}"
outputs = [
# The whitelist file is also an output, but ninja does not
# currently support multiple outputs for tool("cxx").
"$object_subdir/{{source_name_part}}.o",
]
if (enable_resource_whitelist_generation) {
compile_wrapper =
rebase_path("//build/toolchain/gcc_compile_wrapper.py",
root_build_dir)
command = "$python_path \"$compile_wrapper\" --resource-whitelist=\"{{output}}.whitelist\" $command"
}
}
tool("asm") {
# For GCC we can just use the C compiler to compile assembly.
depfile = "{{output}}.d"
command = "$cc -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{asmflags}} -c {{source}} -o {{output}}"
depsformat = "gcc"
description = "ASM {{output}}"
outputs = [
"$object_subdir/{{source_name_part}}.o",
]
}
tool("alink") {
rspfile = "{{output}}.rsp"
whitelist_flag = " "
if (enable_resource_whitelist_generation) {
whitelist_flag = " --resource-whitelist=\"{{output}}.whitelist\""
}
# This needs a Python script to avoid using simple sh features in this
# command, in case the host does not use a POSIX shell (e.g. compiling
# POSIX-like toolchains such as NaCl on Windows).
ar_wrapper =
rebase_path("//build/toolchain/gcc_ar_wrapper.py", root_build_dir)
command = "$python_path \"$ar_wrapper\"$whitelist_flag --output={{output}} --ar=\"$ar\" {{arflags}} rcsD @\"$rspfile\""
description = "AR {{output}}"
rspfile_content = "{{inputs}}"
outputs = [
"{{output_dir}}/{{target_output_name}}{{output_extension}}",
]
# Shared libraries go in the target out directory by default so we can
# generate different targets with the same name and not have them collide.
default_output_dir = "{{target_out_dir}}"
default_output_extension = ".a"
output_prefix = "lib"
}
tool("solink") {
soname = "{{target_output_name}}{{output_extension}}" # e.g. "libfoo.so".
sofile = "{{output_dir}}/$soname" # Possibly including toolchain dir.
rspfile = sofile + ".rsp"
pool = "//build/toolchain:link_pool($default_toolchain)"
whitelist_flag = " "
if (enable_resource_whitelist_generation) {
whitelist_file = "$sofile.whitelist"
whitelist_flag = " --resource-whitelist=\"$whitelist_file\""
}
if (defined(invoker.strip)) {
unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname"
} else {
unstripped_sofile = sofile
}
# These variables are not built into GN but are helpers that
# implement (1) linking to produce a .so, (2) extracting the symbols
# from that file (3) if the extracted list differs from the existing
# .TOC file, overwrite it, otherwise, don't change it.
tocfile = sofile + ".TOC"
link_command = "$ld -shared {{ldflags}}${extra_ldflags} -o \"$unstripped_sofile\" -Wl,-soname=\"$soname\" @\"$rspfile\""
assert(defined(readelf), "to solink you must have a readelf")
assert(defined(nm), "to solink you must have an nm")
strip_switch = ""
if (defined(invoker.strip)) {
strip_switch = "--strip=${invoker.strip}"
}
# This needs a Python script to avoid using a complex shell command
# requiring sh control structures, pipelines, and POSIX utilities.
# The host might not have a POSIX shell and utilities (e.g. Windows).
solink_wrapper = rebase_path("//build/toolchain/gcc_solink_wrapper.py")
command = "$python_path \"$solink_wrapper\" --readelf=\"$readelf\" --nm=\"$nm\" $strip_switch --sofile=\"$unstripped_sofile\" --tocfile=\"$tocfile\" --output=\"$sofile\"$whitelist_flag -- $link_command"
rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix"
description = "SOLINK $sofile"
# Use this for {{output_extension}} expansions unless a target manually
# overrides it (in which case {{output_extension}} will be what the target
# specifies).
default_output_extension = default_shlib_extension
default_output_dir = "{{root_out_dir}}"
if (shlib_subdir != ".") {
default_output_dir += "/$shlib_subdir"
}
output_prefix = "lib"
# Since the above commands only updates the .TOC file when it changes, ask
# Ninja to check if the timestamp actually changed to know if downstream
# dependencies should be recompiled.
restat = true
# Tell GN about the output files. It will link to the sofile but use the
# tocfile for dependency management.
outputs = [
sofile,
tocfile,
]
if (enable_resource_whitelist_generation) {
outputs += [ whitelist_file ]
}
if (sofile != unstripped_sofile) {
outputs += [ unstripped_sofile ]
}
link_output = sofile
depend_output = tocfile
}
tool("solink_module") {
soname = "{{target_output_name}}{{output_extension}}" # e.g. "libfoo.so".
sofile = "{{output_dir}}/$soname"
rspfile = sofile + ".rsp"
pool = "//build/toolchain:link_pool($default_toolchain)"
if (defined(invoker.strip)) {
unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname"
} else {
unstripped_sofile = sofile
}
command = "$ld -shared {{ldflags}}${extra_ldflags} -o \"$unstripped_sofile\" -Wl,-soname=\"$soname\" @\"$rspfile\""
if (defined(invoker.strip)) {
strip_command = "${invoker.strip} --strip-unneeded -o \"$sofile\" \"$unstripped_sofile\""
command += " && " + strip_command
}
rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix"
description = "SOLINK_MODULE $sofile"
# Use this for {{output_extension}} expansions unless a target manually
# overrides it (in which case {{output_extension}} will be what the target
# specifies).
if (defined(invoker.loadable_module_extension)) {
default_output_extension = invoker.loadable_module_extension
} else {
default_output_extension = default_shlib_extension
}
default_output_dir = "{{root_out_dir}}"
if (shlib_subdir != ".") {
default_output_dir += "/$shlib_subdir"
}
output_prefix = "lib"
outputs = [
sofile,
]
if (sofile != unstripped_sofile) {
outputs += [ unstripped_sofile ]
}
}
tool("link") {
exename = "{{target_output_name}}{{output_extension}}"
outfile = "{{output_dir}}/$exename"
rspfile = "$outfile.rsp"
unstripped_outfile = outfile
pool = "//build/toolchain:link_pool($default_toolchain)"
# Use this for {{output_extension}} expansions unless a target manually
# overrides it (in which case {{output_extension}} will be what the target
# specifies).
default_output_extension = default_executable_extension
default_output_dir = "{{root_out_dir}}"
if (defined(invoker.strip)) {
unstripped_outfile = "{{root_out_dir}}/exe.unstripped/$exename"
}
command = "$ld {{ldflags}}${extra_ldflags} -o \"$unstripped_outfile\" -Wl,--start-group @\"$rspfile\" {{solibs}} -Wl,--end-group $libs_section_prefix {{libs}} $libs_section_postfix"
if (defined(invoker.strip)) {
link_wrapper =
rebase_path("//build/toolchain/gcc_link_wrapper.py", root_build_dir)
command = "$python_path \"$link_wrapper\" --strip=\"${invoker.strip}\" --unstripped-file=\"$unstripped_outfile\" --output=\"$outfile\" -- $command"
}
description = "LINK $outfile"
rspfile_content = "{{inputs}}"
outputs = [
outfile,
]
if (outfile != unstripped_outfile) {
outputs += [ unstripped_outfile ]
}
if (defined(invoker.link_outputs)) {
outputs += invoker.link_outputs
}
}
# These two are really entirely generic, but have to be repeated in
# each toolchain because GN doesn't allow a template to be used here.
# See //build/toolchain/toolchain.gni for details.
tool("stamp") {
command = stamp_command
description = stamp_description
}
tool("copy") {
command = copy_command
description = copy_description
}
forward_variables_from(invoker, [ "deps" ])
}
}
# This is a shorthand for gcc_toolchain instances based on the Chromium-built
# version of Clang. Only the toolchain_cpu and toolchain_os variables need to
# be specified by the invoker, and optionally toolprefix if it's a
# cross-compile case. Note that for a cross-compile case this toolchain
# requires a config to pass the appropriate -target option, or else it will
# actually just be doing a native compile. The invoker can optionally override
# use_gold too.
template("clang_toolchain") {
if (defined(invoker.toolprefix)) {
toolprefix = invoker.toolprefix
} else {
toolprefix = ""
}
gcc_toolchain(target_name) {
prefix = rebase_path("$clang_base_path/bin", root_build_dir)
cc = "$prefix/clang"
cxx = "$prefix/clang++"
ld = cxx
readelf = "${toolprefix}readelf"
ar = "${toolprefix}ar"
nm = "${toolprefix}nm"
forward_variables_from(invoker, [ "strip" ])
toolchain_args = {
if (defined(invoker.toolchain_args)) {
forward_variables_from(invoker.toolchain_args, "*")
}
is_clang = true
}
}
}

235
samples/GN/icu.gn Normal file
View File

@@ -0,0 +1,235 @@
# Copyright 2016 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("//build/config/linux/pkg_config.gni")
import("//build/shim_headers.gni")
group("icu") {
public_deps = [
":icui18n",
":icuuc",
]
}
config("icu_config") {
defines = [
"USING_SYSTEM_ICU=1",
"ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC",
]
}
pkg_config("system_icui18n") {
packages = [ "icu-i18n" ]
}
pkg_config("system_icuuc") {
packages = [ "icu-uc" ]
}
source_set("icui18n") {
deps = [
":icui18n_shim",
]
public_configs = [
":icu_config",
":system_icui18n",
]
}
source_set("icuuc") {
deps = [
":icuuc_shim",
]
public_configs = [
":icu_config",
":system_icuuc",
]
}
shim_headers("icui18n_shim") {
root_path = "source/i18n"
headers = [
# This list can easily be updated using the command below:
# find third_party/icu/source/i18n/unicode \
# -iname '*.h' -printf '"%p",\n' | \
# sed -e 's|third_party/icu/i18n/common/||' | sort -u
"unicode/alphaindex.h",
"unicode/basictz.h",
"unicode/calendar.h",
"unicode/choicfmt.h",
"unicode/coleitr.h",
"unicode/coll.h",
"unicode/compactdecimalformat.h",
"unicode/curramt.h",
"unicode/currpinf.h",
"unicode/currunit.h",
"unicode/datefmt.h",
"unicode/dcfmtsym.h",
"unicode/decimfmt.h",
"unicode/dtfmtsym.h",
"unicode/dtitvfmt.h",
"unicode/dtitvinf.h",
"unicode/dtptngen.h",
"unicode/dtrule.h",
"unicode/fieldpos.h",
"unicode/fmtable.h",
"unicode/format.h",
"unicode/fpositer.h",
"unicode/gender.h",
"unicode/gregocal.h",
"unicode/locdspnm.h",
"unicode/measfmt.h",
"unicode/measunit.h",
"unicode/measure.h",
"unicode/msgfmt.h",
"unicode/numfmt.h",
"unicode/numsys.h",
"unicode/plurfmt.h",
"unicode/plurrule.h",
"unicode/rbnf.h",
"unicode/rbtz.h",
"unicode/regex.h",
"unicode/region.h",
"unicode/reldatefmt.h",
"unicode/scientificnumberformatter.h",
"unicode/search.h",
"unicode/selfmt.h",
"unicode/simpletz.h",
"unicode/smpdtfmt.h",
"unicode/sortkey.h",
"unicode/stsearch.h",
"unicode/tblcoll.h",
"unicode/timezone.h",
"unicode/tmunit.h",
"unicode/tmutamt.h",
"unicode/tmutfmt.h",
"unicode/translit.h",
"unicode/tzfmt.h",
"unicode/tznames.h",
"unicode/tzrule.h",
"unicode/tztrans.h",
"unicode/ucal.h",
"unicode/ucol.h",
"unicode/ucoleitr.h",
"unicode/ucsdet.h",
"unicode/ucurr.h",
"unicode/udat.h",
"unicode/udateintervalformat.h",
"unicode/udatpg.h",
"unicode/udisplaycontext.h",
"unicode/ufieldpositer.h",
"unicode/uformattable.h",
"unicode/ugender.h",
"unicode/uldnames.h",
"unicode/ulocdata.h",
"unicode/umsg.h",
"unicode/unirepl.h",
"unicode/unum.h",
"unicode/unumsys.h",
"unicode/upluralrules.h",
"unicode/uregex.h",
"unicode/uregion.h",
"unicode/usearch.h",
"unicode/uspoof.h",
"unicode/utmscale.h",
"unicode/utrans.h",
"unicode/vtzone.h",
]
}
shim_headers("icuuc_shim") {
root_path = "source/common"
headers = [
# This list can easily be updated using the command below:
# find third_party/icu/source/common/unicode \
# -iname '*.h' -printf '"%p",\n' | \
# sed -e 's|third_party/icu/source/common/||' | sort -u
"unicode/appendable.h",
"unicode/brkiter.h",
"unicode/bytestream.h",
"unicode/bytestrie.h",
"unicode/bytestriebuilder.h",
"unicode/caniter.h",
"unicode/chariter.h",
"unicode/dbbi.h",
"unicode/docmain.h",
"unicode/dtintrv.h",
"unicode/enumset.h",
"unicode/errorcode.h",
"unicode/filteredbrk.h",
"unicode/icudataver.h",
"unicode/icuplug.h",
"unicode/idna.h",
"unicode/listformatter.h",
"unicode/localpointer.h",
"unicode/locid.h",
"unicode/messagepattern.h",
"unicode/normalizer2.h",
"unicode/normlzr.h",
"unicode/parseerr.h",
"unicode/parsepos.h",
"unicode/platform.h",
"unicode/ptypes.h",
"unicode/putil.h",
"unicode/rbbi.h",
"unicode/rep.h",
"unicode/resbund.h",
"unicode/schriter.h",
"unicode/std_string.h",
"unicode/strenum.h",
"unicode/stringpiece.h",
"unicode/stringtriebuilder.h",
"unicode/symtable.h",
"unicode/ubidi.h",
"unicode/ubrk.h",
"unicode/ucasemap.h",
"unicode/ucat.h",
"unicode/uchar.h",
"unicode/ucharstrie.h",
"unicode/ucharstriebuilder.h",
"unicode/uchriter.h",
"unicode/uclean.h",
"unicode/ucnv.h",
"unicode/ucnv_cb.h",
"unicode/ucnv_err.h",
"unicode/ucnvsel.h",
"unicode/uconfig.h",
"unicode/udata.h",
"unicode/uenum.h",
"unicode/uidna.h",
"unicode/uiter.h",
"unicode/ulistformatter.h",
"unicode/uloc.h",
"unicode/umachine.h",
"unicode/umisc.h",
"unicode/unifilt.h",
"unicode/unifunct.h",
"unicode/unimatch.h",
"unicode/uniset.h",
"unicode/unistr.h",
"unicode/unorm.h",
"unicode/unorm2.h",
"unicode/uobject.h",
"unicode/urename.h",
"unicode/urep.h",
"unicode/ures.h",
"unicode/uscript.h",
"unicode/uset.h",
"unicode/usetiter.h",
"unicode/ushape.h",
"unicode/usprep.h",
"unicode/ustring.h",
"unicode/ustringtrie.h",
"unicode/utext.h",
"unicode/utf.h",
"unicode/utf16.h",
"unicode/utf32.h",
"unicode/utf8.h",
"unicode/utf_old.h",
"unicode/utrace.h",
"unicode/utypes.h",
"unicode/uvernum.h",
"unicode/uversion.h",
]
}

File diff suppressed because it is too large Load Diff

1422
samples/GN/ios-rules.gni Normal file

File diff suppressed because it is too large Load Diff

193
samples/GN/isolate.gni Normal file
View File

@@ -0,0 +1,193 @@
# Copyright 2016 the V8 project 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("//build/config/sanitizers/sanitizers.gni")
import("//third_party/icu/config.gni")
import("v8.gni")
declare_args() {
# Sets the test isolation mode (noop|prepare|check).
v8_test_isolation_mode = "noop"
}
template("v8_isolate_run") {
forward_variables_from(invoker,
"*",
[
"deps",
"isolate",
])
# Remember target name as within the action scope the target name will be
# different.
name = target_name
assert(defined(invoker.deps))
assert(defined(invoker.isolate))
if (name != "" && v8_test_isolation_mode != "noop") {
action(name + "_run") {
testonly = true
deps = invoker.deps
script = "//tools/isolate_driver.py"
sources = [
invoker.isolate,
]
inputs = [
# Files that are known to be involved in this step.
"//tools/swarming_client/isolate.py",
"//tools/swarming_client/run_isolated.py",
]
if (v8_test_isolation_mode == "prepare") {
outputs = [
"$root_out_dir/$name.isolated.gen.json",
]
} else if (v8_test_isolation_mode == "check") {
outputs = [
"$root_out_dir/$name.isolated",
"$root_out_dir/$name.isolated.state",
]
}
# Translate gn to gyp variables.
if (is_asan) {
asan = "1"
} else {
asan = "0"
}
if (is_msan) {
msan = "1"
} else {
msan = "0"
}
if (is_tsan) {
tsan = "1"
} else {
tsan = "0"
}
if (is_cfi) {
cfi_vptr = "1"
} else {
cfi_vptr = "0"
}
if (target_cpu == "x86") {
target_arch = "ia32"
} else {
target_arch = target_cpu
}
if (is_debug) {
configuration_name = "Debug"
} else {
configuration_name = "Release"
}
if (is_component_build) {
component = "shared_library"
} else {
component = "static_library"
}
if (icu_use_data_file) {
icu_use_data_file_flag = "1"
} else {
icu_use_data_file_flag = "0"
}
if (v8_enable_inspector) {
enable_inspector = "1"
} else {
enable_inspector = "0"
}
if (v8_use_external_startup_data) {
use_external_startup_data = "1"
} else {
use_external_startup_data = "0"
}
if (v8_use_snapshot) {
use_snapshot = "true"
} else {
use_snapshot = "false"
}
if (v8_has_valgrind) {
has_valgrind = "1"
} else {
has_valgrind = "0"
}
if (v8_gcmole) {
gcmole = "1"
} else {
gcmole = "0"
}
# Note, all paths will be rebased in isolate_driver.py to be relative to
# the isolate file.
args = [
v8_test_isolation_mode,
"--isolated",
rebase_path("$root_out_dir/$name.isolated", root_build_dir),
"--isolate",
rebase_path(invoker.isolate, root_build_dir),
# Path variables are used to replace file paths when loading a .isolate
# file
"--path-variable",
"DEPTH",
rebase_path("//", root_build_dir),
"--path-variable",
"PRODUCT_DIR",
rebase_path(root_out_dir, root_build_dir),
# TODO(machenbach): Set variables for remaining features.
"--config-variable",
"CONFIGURATION_NAME=$configuration_name",
"--config-variable",
"OS=$target_os",
"--config-variable",
"asan=$asan",
"--config-variable",
"cfi_vptr=$cfi_vptr",
"--config-variable",
"gcmole=$gcmole",
"--config-variable",
"has_valgrind=$has_valgrind",
"--config-variable",
"icu_use_data_file_flag=$icu_use_data_file_flag",
"--config-variable",
"is_gn=1",
"--config-variable",
"msan=$msan",
"--config-variable",
"tsan=$tsan",
"--config-variable",
"coverage=0",
"--config-variable",
"sanitizer_coverage=0",
"--config-variable",
"component=$component",
"--config-variable",
"target_arch=$target_arch",
"--config-variable",
"v8_enable_inspector=$enable_inspector",
"--config-variable",
"v8_use_external_startup_data=$use_external_startup_data",
"--config-variable",
"v8_use_snapshot=$use_snapshot",
]
if (is_win) {
args += [
"--config-variable",
"msvs_version=2015",
]
} else {
args += [
"--config-variable",
"msvs_version=0",
]
}
}
}
}

View File

@@ -0,0 +1,9 @@
solutions = [
{
"url": "https://chromium.googlesource.com/v8/v8.git",
"managed": False,
"name": "v8",
"deps_file": "DEPS",
"custom_deps": {},
},
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4
vendor/README.md vendored
View File

@@ -125,6 +125,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
- **Gettext Catalog:** [textmate/gettext.tmbundle](https://github.com/textmate/gettext.tmbundle)
- **GLSL:** [euler0/sublime-glsl](https://github.com/euler0/sublime-glsl)
- **Glyph:** [textmate/tcl.tmbundle](https://github.com/textmate/tcl.tmbundle)
- **GN:** [devoncarew/language-gn](https://github.com/devoncarew/language-gn)
- **Gnuplot:** [mattfoster/gnuplot-tmbundle](https://github.com/mattfoster/gnuplot-tmbundle)
- **Go:** [AlanQuatermain/go-tmbundle](https://github.com/AlanQuatermain/go-tmbundle)
- **Golo:** [TypeUnsafe/sublime-golo](https://github.com/TypeUnsafe/sublime-golo)
@@ -224,6 +225,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
- **NewLisp:** [textmate/lisp.tmbundle](https://github.com/textmate/lisp.tmbundle)
- **Nginx:** [brandonwamboldt/sublime-nginx](https://github.com/brandonwamboldt/sublime-nginx)
- **Nimrod:** [Varriount/NimLime](https://github.com/Varriount/NimLime)
- **Ninja:** [khyo/language-ninja](https://github.com/khyo/language-ninja)
- **Nit:** [R4PaSs/Sublime-Nit](https://github.com/R4PaSs/Sublime-Nit)
- **Nix:** [wmertens/sublime-nix](https://github.com/wmertens/sublime-nix)
- **NSIS:** [github-linguist/NSIS](https://github.com/github-linguist/NSIS)
@@ -239,6 +241,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
- **OpenCL:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle)
- **OpenEdge ABL:** [jfairbank/Sublime-Text-2-OpenEdge-ABL](https://github.com/jfairbank/Sublime-Text-2-OpenEdge-ABL)
- **OpenRC runscript:** [atom/language-shellscript](https://github.com/atom/language-shellscript)
- **OpenType Feature File:** [Alhadis/language-fontforge](https://github.com/Alhadis/language-fontforge)
- **Ox:** [andreashetland/sublime-text-ox](https://github.com/andreashetland/sublime-text-ox)
- **Oz:** [eregon/oz-tmbundle](https://github.com/eregon/oz-tmbundle)
- **Papyrus:** [Kapiainen/SublimePapyrus](https://github.com/Kapiainen/SublimePapyrus)
@@ -306,6 +309,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
- **SMT:** [SRI-CSL/SMT.tmbundle](https://github.com/SRI-CSL/SMT.tmbundle)
- **SourcePawn:** [github-linguist/sublime-sourcepawn](https://github.com/github-linguist/sublime-sourcepawn)
- **SPARQL:** [peta/turtle.tmbundle](https://github.com/peta/turtle.tmbundle)
- **Spline Font Database:** [Alhadis/language-fontforge](https://github.com/Alhadis/language-fontforge)
- **SQF:** [JonBons/Sublime-SQF-Language](https://github.com/JonBons/Sublime-SQF-Language)
- **SQL:** [textmate/sql.tmbundle](https://github.com/textmate/sql.tmbundle)
- **SQLPL:** [textmate/sql.tmbundle](https://github.com/textmate/sql.tmbundle)

1
vendor/grammars/language-gn vendored Submodule

32
vendor/licenses/grammar/language-gn.txt vendored Normal file
View File

@@ -0,0 +1,32 @@
---
type: grammar
name: language-gn
license: bsd-3-clause
---
Copyright (c) 2015, Devon Carew
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the organization nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,14 +0,0 @@
---
type: grammar
name: xquery
license: permissive
curated: true
---
If not otherwise specified (see below), files in this repository fall under the following license:
Permission to copy, use, modify, sell and distribute this
software is granted. This software is provided "as is" without
express or implied warranty, and with no claim as to its
suitability for any purpose.
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.