GN: Enable libvpx, add link target and convert some test targets
Libvpx now supports GN and this CL turns on compiling it.
I also introduced an executable target 'webrtc_tests'
that depends on all in WeBRTC + tests in order to get a full
linking step executed (since we've seen link problems for GN
when rolling WebRTC into Chromium).
I also converted a few test targets and made a GN file for
third_party/gflags.
BUG=3441
TESTED=Trybots + full Chromium build with a symlinked src/third_party/webrtc
dir to a workspace wit this CL applied.
R=brettw@chromium.org
TBR=niklas.enbom@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/25569004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7344 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/.gitignore b/.gitignore
index f1490c5..9737029 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,6 +59,7 @@
/third_party/android_testrunner
/third_party/android_tools
/third_party/asan
+/third_party/ashmem
/third_party/binutils
/third_party/boringssl
/third_party/BUILD.gn
@@ -73,17 +74,21 @@
/third_party/google-visualization-python
/third_party/icu
/third_party/jsoncpp
+/third_party/jsr-305
/third_party/junit
/third_party/libc++
/third_party/libc++abi
+/third_party/libevent
/third_party/libjingle
/third_party/libjpeg
/third_party/libjpeg_turbo
/third_party/libsrtp
/third_party/libvpx
+/third_party/libxml
/third_party/libyuv
/third_party/llvm
/third_party/llvm-build
+/third_party/modp_b64
/third_party/nss
/third_party/oauth2
/third_party/openmax_dl
diff --git a/setup_links.py b/setup_links.py
index c403ca8..a72565e 100755
--- a/setup_links.py
+++ b/setup_links.py
@@ -79,6 +79,11 @@
'base',
'third_party/android_testrunner',
'third_party/android_tools',
+ 'third_party/ashmem',
+ 'third_party/jsr-305',
+ 'third_party/libevent',
+ 'third_party/libxml',
+ 'third_party/modp_b64',
'tools/android',
]
diff --git a/third_party/gflags/BUILD.gn b/third_party/gflags/BUILD.gn
new file mode 100644
index 0000000..a2f1c3d
--- /dev/null
+++ b/third_party/gflags/BUILD.gn
@@ -0,0 +1,59 @@
+# Copyright (c) 2014 The WebRTC 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 in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS. All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+if (is_win) {
+ gflags_gen_arch_root = "gen/win"
+} else {
+ gflags_gen_arch_root = "gen/posix"
+}
+
+config("gflags_config") {
+ include_dirs = [
+ "$gflags_gen_arch_root/include", # For configured files.
+ "src", # For everything else.
+ ]
+
+ defines = [
+ # These macros exist so flags and symbols are properly exported when
+ # building DLLs. Since we don't build DLLs, we need to disable them.
+ "GFLAGS_DLL_DECL=",
+ "GFLAGS_DLL_DECLARE_FLAG=",
+ "GFLAGS_DLL_DEFINE_FLAG=",
+ ]
+}
+
+source_set("gflags") {
+ sources = [
+ "src/gflags.cc",
+ "src/gflags_completions.cc",
+ "src/gflags_reporting.cc",
+ ]
+ if (is_win) {
+ sources += [ "src/windows/port.cc" ]
+
+ cflags = [
+ "/wd4005", # WIN32_LEAN_AND_MEAN.
+ "/wd4267", # Conversion from size_t to "type".
+ ]
+ }
+
+ include_dirs = [
+ "$gflags_gen_arch_root/include/private", # For config.h
+ ]
+
+ public_configs = [ ":gflags_config" ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+
+ if (is_clang) {
+ # TODO(andrew): Look into fixing this warning upstream:
+ # http://code.google.com/p/webrtc/issues/detail?id=760
+ configs -= [ "//build/config/clang:extra_warnings" ]
+ }
+}
diff --git a/third_party/gflags/OWNERS b/third_party/gflags/OWNERS
index 3ee6b4b..26b205a 100644
--- a/third_party/gflags/OWNERS
+++ b/third_party/gflags/OWNERS
@@ -3,3 +3,5 @@
# structural changes, please get a review from a reviewer in this file.
per-file *.gyp=*
per-file *.gypi=*
+
+per-file BUILD.gn=kjellander@webrtc.org
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index 0f6c09c..9d2fa6a 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -205,12 +205,25 @@
"modules/video_processing",
"modules/video_render",
"system_wrappers",
+ "tools",
"video",
"video_engine",
"voice_engine",
]
}
+if (!build_with_chromium) {
+ executable("webrtc_tests") {
+ testonly = true
+ deps = [
+ ":webrtc",
+ "modules/video_render:video_render_internal_impl",
+ "modules/video_capture:video_capture_internal_impl",
+ "test",
+ ]
+ }
+}
+
source_set("webrtc_common") {
sources = [
"config.h",
diff --git a/webrtc/common_audio/BUILD.gn b/webrtc/common_audio/BUILD.gn
index 27f9bc8..adee4b2 100644
--- a/webrtc/common_audio/BUILD.gn
+++ b/webrtc/common_audio/BUILD.gn
@@ -116,15 +116,13 @@
sources += [ "signal_processing/vector_scaling_operations_mips.c" ]
}
} else {
- sources += [
- "signal_processing/complex_fft.c",
- "signal_processing/filter_ar_fast_q12.c",
- ]
+ sources += [ "signal_processing/complex_fft.c" ]
}
if (cpu_arch != "arm" && cpu_arch != "mipsel") {
sources += [
"signal_processing/complex_bit_reverse.c",
+ "signal_processing/filter_ar_fast_q12.c",
"signal_processing/spl_sqrt_floor.c",
]
}
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index b3c954d..d6cdf0e 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -528,13 +528,12 @@
} else {
sources += [ "codecs/isac/fix/source/pitch_filter_c.c" ]
}
+ } else {
+ sources += [ "codecs/isac/fix/source/pitch_estimator_c.c" ]
}
- if (rtc_build_armv7_neon) {
- sources += [
- "codecs/isac/fix/source/lattice_c.c",
- "codecs/isac/fix/source/pitch_estimator_c.c",
- ]
+ if (!rtc_build_armv7_neon && cpu_arch != "mipsel") {
+ sources += [ "codecs/isac/fix/source/lattice_c.c" ]
}
}
diff --git a/webrtc/modules/remote_bitrate_estimator/BUILD.gn b/webrtc/modules/remote_bitrate_estimator/BUILD.gn
index a7a45bd..d794577 100644
--- a/webrtc/modules/remote_bitrate_estimator/BUILD.gn
+++ b/webrtc/modules/remote_bitrate_estimator/BUILD.gn
@@ -8,6 +8,22 @@
source_set("remote_bitrate_estimator") {
sources = [
+ "include/bwe_defines.h",
+ "include/remote_bitrate_estimator.h",
+ "rate_statistics.cc",
+ "rate_statistics.h",
+ ]
+
+ configs += [ "../../:common_inherited_config"]
+
+ deps = [
+ ":rbe_components",
+ "../../system_wrappers",
+ ]
+}
+
+source_set("rbe_components") {
+ sources = [
"overuse_detector.cc",
"overuse_detector.h",
"remote_bitrate_estimator_single_stream.cc",
diff --git a/webrtc/modules/video_coding/BUILD.gn b/webrtc/modules/video_coding/BUILD.gn
index f101e2b..07e7afc 100644
--- a/webrtc/modules/video_coding/BUILD.gn
+++ b/webrtc/modules/video_coding/BUILD.gn
@@ -86,6 +86,8 @@
sources = [
"utility/include/frame_dropper.h",
"utility/frame_dropper.cc",
+ "utility/quality_scaler.cc",
+ "utility/quality_scaler.h",
]
configs += [ "../..:common_config" ]
@@ -118,21 +120,19 @@
deps = [ "../../system_wrappers" ]
}
-# TODO(holmer): Some files below has been commented out since libvpx is still
-# missing a BUILD.gn file.
source_set("webrtc_vp8") {
sources = [
-# "codecs/vp8/default_temporal_layers.cc",
-# "codecs/vp8/default_temporal_layers.h",
-# "codecs/vp8/realtime_temporal_layers.cc",
-# "codecs/vp8/reference_picture_selection.cc",
-# "codecs/vp8/reference_picture_selection.h",
+ "codecs/vp8/default_temporal_layers.cc",
+ "codecs/vp8/default_temporal_layers.h",
+ "codecs/vp8/realtime_temporal_layers.cc",
+ "codecs/vp8/reference_picture_selection.cc",
+ "codecs/vp8/reference_picture_selection.h",
"codecs/vp8/include/vp8.h",
"codecs/vp8/include/vp8_common_types.h",
"codecs/vp8/temporal_layers.h",
"codecs/vp8/vp8_factory.cc",
-# "codecs/vp8/vp8_impl.cc",
-# "codecs/vp8/vp8_impl.h",
+ "codecs/vp8/vp8_impl.cc",
+ "codecs/vp8/vp8_impl.h",
]
configs += [ "../..:common_config" ]
@@ -144,14 +144,18 @@
configs -= [ "//build/config/clang:find_bad_constructs" ]
}
+ # TODO(kjellander): Remove once libvpx has changed it's libvpx_config to be
+ # in direct_dependent_configs.
+ configs += [ "//third_party/libvpx:libvpx_config" ]
+
deps = [
":video_coding_utility",
"../../common_video",
"../../system_wrappers",
]
-# if (rtc_build_libvpx) {
-# deps += [
-# "//third_party/libvpx",
-# ]
-# }
+ if (rtc_build_libvpx) {
+ deps += [
+ "//third_party/libvpx",
+ ]
+ }
}
diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn
new file mode 100644
index 0000000..3de1dca
--- /dev/null
+++ b/webrtc/test/BUILD.gn
@@ -0,0 +1,102 @@
+# Copyright (c) 2014 The WebRTC 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 in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS. All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# TODO(kjellander): Convert the rest of the test.gyp targets and put here.
+
+source_set("test") {
+ testonly = true
+
+ deps = [
+ ":field_trial",
+ ":test_support",
+ ":test_support_main",
+ ]
+}
+
+source_set("field_trial") {
+ sources = [
+ "field_trial.cc",
+ "field_trial.h",
+ ]
+
+ deps = [
+ "../system_wrappers",
+ ]
+
+ if (is_clang) {
+ # Suppress warnings from Chrome's Clang plugins.
+ # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+ configs -= [ "//build/config/clang:find_bad_constructs" ]
+ }
+}
+
+source_set("test_support") {
+ testonly = true
+
+ sources = [
+ "testsupport/fileutils.cc",
+ "testsupport/fileutils.h",
+ "testsupport/frame_reader.cc",
+ "testsupport/frame_reader.h",
+ "testsupport/frame_writer.cc",
+ "testsupport/frame_writer.h",
+ "testsupport/gtest_prod_util.h",
+ "testsupport/gtest_disable.h",
+ "testsupport/mock/mock_frame_reader.h",
+ "testsupport/mock/mock_frame_writer.h",
+ "testsupport/packet_reader.cc",
+ "testsupport/packet_reader.h",
+ "testsupport/perf_test.cc",
+ "testsupport/perf_test.h",
+ "testsupport/trace_to_stderr.cc",
+ "testsupport/trace_to_stderr.h",
+ ]
+
+ deps = [
+ "//testing/gmock",
+ "//testing/gtest",
+ "../system_wrappers",
+ ]
+
+ if (is_android) {
+ sources += [ "testsupport/android/root_path_android_chromium.cc" ]
+ deps += [ "//base:base" ]
+ } else {
+ sources += [ "testsupport/android/root_path_android.cc" ]
+ }
+
+ if (is_clang) {
+ # Suppress warnings from Chrome's Clang plugins.
+ # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+ configs -= [ "//build/config/clang:find_bad_constructs" ]
+ }
+}
+
+source_set("test_support_main") {
+ testonly = true
+
+ sources = [
+ "run_all_unittests.cc",
+ "test_suite.cc",
+ "test_suite.h",
+ ]
+
+ deps = [
+ ":field_trial",
+ ":test_support",
+ "//testing/gmock",
+ "//testing/gtest",
+ "//third_party/gflags",
+ ]
+
+ if (is_clang) {
+ # Suppress warnings from Chrome's Clang plugins.
+ # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+ configs -= [ "//build/config/clang:find_bad_constructs" ]
+ }
+}
diff --git a/webrtc/tools/BUILD.gn b/webrtc/tools/BUILD.gn
new file mode 100644
index 0000000..f66d8d5
--- /dev/null
+++ b/webrtc/tools/BUILD.gn
@@ -0,0 +1,40 @@
+# Copyright (c) 2014 The WebRTC 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 in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS. All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+import("../build/webrtc.gni")
+
+source_set("tools") {
+ deps = [
+ ":command_line_parser",
+ ]
+}
+
+source_set("command_line_parser") {
+ sources = [
+ "simple_command_line_parser.h",
+ "simple_command_line_parser.cc",
+ ]
+}
+
+# TODO(kjellander): Convert all of tools.gyp into GN here.
+
+if (!build_with_chromium) {
+ executable("tools_unittests") {
+ testonly = true
+
+ sources = [
+ "simple_command_line_parser_unittest.cc",
+ ]
+
+ deps = [
+ ":command_line_parser",
+ "../test:test_support_main",
+ "//testing/gtest",
+ ]
+ }
+}