Index: gn/BUILD.gn |
diff --git a/gn/BUILD.gn b/gn/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..547f57ebea9202a5bf9dcd43457c8e07b580c42d |
--- /dev/null |
+++ b/gn/BUILD.gn |
@@ -0,0 +1,122 @@ |
+# Copyright 2016 Google Inc. |
+# |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+declare_args() { |
+ ar = "ar" |
+ cc = "cc" |
+ cxx = "c++" |
+} |
+ |
+config("default") { |
+ cflags = [ |
+ "-g", |
+ "-fstrict-aliasing", |
+ "-fPIC", |
+ |
+ "-Werror", |
+ "-Wall", |
+ "-Wextra", |
+ "-Winit-self", |
+ "-Wpointer-arith", |
+ "-Wsign-compare", |
+ "-Wvla", |
+ |
+ "-Wno-deprecated-declarations", |
+ "-Wno-unused-parameter", |
+ ] |
+ cflags_cc = [ |
+ "-std=c++11", |
+ "-fno-exceptions", |
+ "-fno-rtti", |
+ "-fno-threadsafe-statics", |
+ |
+ "-Wnon-virtual-dtor", |
+ ] |
+} |
+ |
+config("release") { |
+ cflags = [ "-Os" ] |
+ defines = [ "NDEBUG" ] |
+} |
+ |
+config("executable") { |
+ if (is_mac) { |
+ ldflags = [ "-Wl,-rpath,@loader_path/." ] |
+ } else if (is_linux) { |
+ ldflags = [ "-Wl,-rpath,\$ORIGIN" ] |
+ } |
+} |
+ |
+toolchain("gcc_like") { |
+ lib_switch = "-l" |
+ lib_dir_switch = "-L" |
+ |
+ tool("cc") { |
+ depfile = "{{output}}.d" |
+ command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}" |
+ depsformat = "gcc" |
+ outputs = [ |
+ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o", |
+ ] |
+ } |
+ |
+ tool("cxx") { |
+ depfile = "{{output}}.d" |
+ command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}" |
+ depsformat = "gcc" |
+ outputs = [ |
+ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o", |
+ ] |
+ } |
+ |
+ tool("asm") { |
+ depfile = "{{output}}.d" |
+ command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{asmflags}} -c {{source}} -o {{output}}" |
+ depsformat = "gcc" |
+ outputs = [ |
+ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o", |
+ ] |
+ } |
+ |
+ tool("alink") { |
+ command = "rm -f {{output}} && $ar rcs {{output}} {{inputs}}" |
+ outputs = [ |
+ "{{target_out_dir}}/{{target_output_name}}{{output_extension}}", |
+ ] |
+ default_output_extension = ".a" |
+ output_prefix = "lib" |
+ } |
+ |
+ tool("solink") { |
+ soname = "{{target_output_name}}{{output_extension}}" |
+ |
+ rpath = "-Wl,-soname,$soname" |
+ if (is_mac) { |
+ rpath = "-Wl,-install_name,@rpath/$soname" |
+ } |
+ |
+ command = "$cxx -shared {{ldflags}} {{inputs}} {{solibs}} {{libs}} $rpath -o {{output}}" |
+ outputs = [ |
+ "{{root_out_dir}}/$soname", |
+ ] |
+ output_prefix = "lib" |
+ default_output_extension = ".so" |
+ } |
+ |
+ tool("link") { |
+ command = "$cxx {{ldflags}} {{inputs}} {{solibs}} {{libs}} -o {{output}}" |
+ outputs = [ |
+ "{{root_out_dir}}/{{target_output_name}}{{output_extension}}", |
+ ] |
+ } |
+ |
+ tool("stamp") { |
+ command = "touch {{output}}" |
+ } |
+ |
+ tool("copy") { |
+ command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})" |
+ } |
+} |