diff options
author | Edward Lemur <ehmaldonado@chromium.org> | 2016-09-13 12:02:40 +0200 |
---|---|---|
committer | Edward Lemur <ehmaldonado@chromium.org> | 2016-09-13 12:02:40 +0200 |
commit | d8fe1ad6bbcf9d6da946b31e8bc67088b4ff7eac (patch) | |
tree | 92c7053c8d7f7e723fdd096eb1adfffd72c39989 | |
parent | 48e8f8e73980f54dd1a68cb896d1edabc326398e (diff) | |
download | libyuv-d8fe1ad6bbcf9d6da946b31e8bc67088b4ff7eac.tar.gz |
GN: Add GN test targets.
BUG=libyuv:523
R=fbarchard@google.com, kjellander@chromium.org, magjed@chromium.org
Review URL: https://codereview.chromium.org/2317073002 .
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | BUILD.gn | 163 | ||||
-rw-r--r-- | build_overrides/build.gni | 4 | ||||
-rw-r--r-- | build_overrides/gtest.gni | 19 | ||||
-rw-r--r-- | libyuv.gni | 17 | ||||
-rwxr-xr-x | setup_links.py | 3 |
6 files changed, 199 insertions, 11 deletions
@@ -28,6 +28,7 @@ pin-log.txt /third_party/BUILD.gn /third_party/catapult /third_party/ced +/third_party/class-dump /third_party/closure_compiler /third_party/drmemory /third_party/gflags/src @@ -49,12 +50,15 @@ pin-log.txt /third_party/mockito /third_party/modp_b64 /third_party/ow2_asm +/third_party/proguard /third_party/protobuf /third_party/requests /third_party/robolectric /third_party/sqlite4java +/third_party/tcmalloc /third_party/WebKit /third_party/yasm +/third_party/zlib /tools/android /tools/clang /tools/generate_library_loader @@ -6,18 +6,19 @@ # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. -import("//build/config/arm.gni") -import("//build/config/sanitizers/sanitizers.gni") +import("libyuv.gni") +import("//testing/test.gni") config("libyuv_config") { - include_dirs = [ - ".", - "include", - ] + include_dirs = [ "include" ] + if (is_android && current_cpu=="arm64") { + ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64" ] + } + if (is_android && current_cpu != "arm64") { + ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker" ] + } } -use_neon = current_cpu == "arm64" || (current_cpu == "arm" && (arm_use_neon || arm_optionally_use_neon)) - static_library("libyuv") { sources = [ # Headers @@ -79,7 +80,7 @@ static_library("libyuv") { "source/video_common.cc", ] - public_configs = [ ":libyuv_config" ] + public_configs = [ ":libyuv_config" ] defines = [] deps = [] @@ -89,7 +90,7 @@ static_library("libyuv") { deps += [ "//third_party:jpeg" ] } - if (use_neon) { + if (libyuv_use_neon) { deps += [ ":libyuv_neon" ] } @@ -100,7 +101,7 @@ static_library("libyuv") { } } -if (use_neon) { +if (libyuv_use_neon) { static_library("libyuv_neon") { sources = [ # ARM Source Files @@ -122,3 +123,143 @@ if (use_neon) { } } } + +if (libyuv_include_tests) { + config("libyuv_unittest_warnings_config") { + if (!is_win) { + cflags = [ + # TODO(fbarchard): Fix sign and unused variable warnings. + "-Wno-sign-compare", + "-Wno-unused-variable" + ] + } + if (is_win) { + cflags = [ + "/wd4245", # signed/unsigned mismatch + "/wd4189", # local variable is initialized but not referenced + ] + } + } + config("libyuv_unittest_config") { + defines = [ "GTEST_RELATIVE_PATH" ] + } + + test("libyuv_unittest") { + testonly = true + + sources = [ + # headers + "unit_test/unit_test.h", + # sources + "unit_test/basictypes_test.cc", + "unit_test/compare_test.cc", + "unit_test/color_test.cc", + "unit_test/convert_test.cc", + "unit_test/cpu_test.cc", + "unit_test/math_test.cc", + "unit_test/planar_test.cc", + "unit_test/rotate_argb_test.cc", + "unit_test/rotate_test.cc", + "unit_test/scale_argb_test.cc", + "unit_test/scale_test.cc", + "unit_test/unit_test.cc", + "unit_test/video_common_test.cc", + ] + + deps = [ + ":libyuv", + "//testing/gtest", + "//third_party/gflags", + ] + + configs += [ ":libyuv_unittest_warnings_config" ] + + public_deps = [ "//testing/gtest" ] + public_configs = [ ":libyuv_unittest_config" ] + + defines = [] + + if (is_linux) { + cflags = [ "-fexceptions" ] + } + if (is_ios && target_cpu=="arm64") { + defines += [ "LIBYUV_DISABLE_NEON" ] + } + if (is_ios) { + configs -= [ "//build/config/compiler:default_symbols" ] + configs += [ "//build/config/compiler:symbols" ] + cflags = [ "-Wno-sometimes-uninitialized" ] + } + if (!is_ios && !libyuv_disable_jpeg) { + defines += [ "HAVE_JPEG" ] + } + if (is_android) { + deps += [ "//testing/android/native_test:native_test_native_code" ] + } + + # TODO(YangZhang): These lines can be removed when high accuracy + # YUV to RGB to Neon is ported. + if ((target_cpu=="armv7" || target_cpu=="armv7s" || + (target_cpu=="arm" && arm_version >= 7) || target_cpu=="arm64") && + (arm_use_neon || arm_optionally_use_neon)) { + defines += [ "LIBYUV_NEON" ] + } + + defines += [ + # Enable the following 3 macros to turn off assembly for specified CPU. + # "LIBYUV_DISABLE_X86", + # "LIBYUV_DISABLE_NEON", + # "LIBYUV_DISABLE_MIPS", + # Enable the following macro to build libyuv as a shared library (dll). + # "LIBYUV_USING_SHARED_LIBRARY" + ] + } + + executable("compare") { + sources = [ + # sources + "util/compare.cc" + ] + deps = [ ":libyuv" ] + if (is_linux) { + cflags = [ "-fexceptions" ] + } + } + + executable("convert") { + sources = [ + # sources + "util/convert.cc" + ] + deps = [ ":libyuv" ] + if (is_linux) { + cflags = [ "-fexceptions" ] + } + } + + executable("psnr") { + sources = [ + # sources + "util/psnr_main.cc", + "util/psnr.cc", + "util/ssim.cc" + ] + deps = [ ":libyuv" ] + + if (is_ios && target_cpu=="arm64") { + # TODO(fbarchard): Enable Neon. See https://crbug.com/646279 + defines = [ "LIBYUV_DISABLE_NEON" ] + } + if (!is_ios && !libyuv_disable_jpeg) { + defines = [ "HAVE_JPEG" ] + } + } + + executable("cpuid") { + sources = [ + # sources + "util/cpuid.c" + ] + deps = [ ":libyuv" ] + } +} diff --git a/build_overrides/build.gni b/build_overrides/build.gni index 7a7e7415..d9ee7c54 100644 --- a/build_overrides/build.gni +++ b/build_overrides/build.gni @@ -14,5 +14,9 @@ mac_sdk_min_build_override = "10.11" mac_deployment_target_build_override = "10.7" +# Variable that can be used to support multiple build scenarios, like having +# Chromium specific targets in a client project's GN file etc. +build_with_chromium = false + # Some non-Chromium builds don't support building java targets. enable_java_templates = true diff --git a/build_overrides/gtest.gni b/build_overrides/gtest.gni new file mode 100644 index 00000000..d3c3f68c --- /dev/null +++ b/build_overrides/gtest.gni @@ -0,0 +1,19 @@ +# Copyright (c) 2016 The LibYuv 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. + +# Include support for registering main function in multi-process tests. +gtest_include_multiprocess = true + +# Include support for platform-specific operations across unit tests. +gtest_include_platform_test = true + +# Exclude support for testing Objective C code on OS X and iOS. +gtest_include_objc_support = true + +# Exclude support for flushing coverage files on iOS. +gtest_include_ios_coverage = true diff --git a/libyuv.gni b/libyuv.gni new file mode 100644 index 00000000..2f6930d7 --- /dev/null +++ b/libyuv.gni @@ -0,0 +1,17 @@ +# Copyright 2016 The LibYuv 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_overrides/build.gni") +import("//build/config/arm.gni") + +declare_args() { + libyuv_include_tests = !build_with_chromium + libyuv_disable_jpeg = false + libyuv_use_neon = (current_cpu == "arm64" || + (current_cpu == "arm" && (arm_use_neon || arm_optionally_use_neon))) +} diff --git a/setup_links.py b/setup_links.py index dd9a57e2..2825c28d 100755 --- a/setup_links.py +++ b/setup_links.py @@ -45,6 +45,8 @@ DIRECTORIES = [ 'third_party/libjpeg_turbo', 'third_party/llvm-build', 'third_party/lss', + 'third_party/proguard', + 'third_party/tcmalloc', 'third_party/yasm', 'third_party/WebKit', # TODO(kjellander): Remove, see webrtc:5629. 'tools/clang', @@ -89,6 +91,7 @@ if 'android' in target_os: 'third_party/requests', 'third_party/robolectric', 'third_party/sqlite4java', + 'third_party/zlib', 'tools/android', 'tools/grit', ] |