# 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) {
  baseclasses_dir = "Samples/multimedia/directshow/baseclasses"

  config("winsdk_samples_config") {
    if (is_win && is_clang) {
      # When compiling with clang-cl, use -imsvc (similar to -isystem in clang)
      # instead of include_dirs (-I), so we don't need to suppress warnings
      # coming from this package in other projects.
      "-imsvc",
      rebase_path(baseclasses_dir, root_build_dir),
    } else {
      include_dirs = [ baseclasses_dir ]
    }
  }

  # These warnings suppression flags are still needed even if -imsvc is used
  # because some of them will trigger when .cpp files in this package are
  # compiled.
  config("winsdk_samples_warnings_config") {
    if (is_win && is_clang) {
      cflags = [
        # Disable warnings failing when compiling with Clang on Windows.
        # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
        "-Wno-comment",
        "-Wno-delete-non-virtual-dtor",
        "-Wno-ignored-attributes",
        "-Wno-logical-op-parentheses",
        "-Wno-non-pod-varargs",
        "-Wno-microsoft-extra-qualification",
        "-Wno-missing-braces",
        "-Wno-overloaded-virtual",
        "-Wno-parentheses",
        "-Wno-reorder",
        "-Wno-string-conversion",
        "-Wno-tautological-constant-out-of-range-compare",
        "-Wno-unknown-pragmas",
        "-Wno-unused-private-field",
        "-Wno-writable-strings",
      ]
    }
  }

  static_library("winsdk_samples") {
    sources = [
      "$baseclasses_dir/amextra.cpp",
      "$baseclasses_dir/amextra.h",
      "$baseclasses_dir/amfilter.cpp",
      "$baseclasses_dir/amfilter.h",
      "$baseclasses_dir/amvideo.cpp",
      "$baseclasses_dir/cache.h",
      "$baseclasses_dir/combase.cpp",
      "$baseclasses_dir/combase.h",
      "$baseclasses_dir/cprop.cpp",
      "$baseclasses_dir/cprop.h",
      "$baseclasses_dir/ctlutil.cpp",
      "$baseclasses_dir/ctlutil.h",
      "$baseclasses_dir/ddmm.cpp",
      "$baseclasses_dir/ddmm.h",
      "$baseclasses_dir/dllentry.cpp",
      "$baseclasses_dir/dllsetup.cpp",
      "$baseclasses_dir/dllsetup.h",
      "$baseclasses_dir/fourcc.h",
      "$baseclasses_dir/measure.h",
      "$baseclasses_dir/msgthrd.h",
      "$baseclasses_dir/mtype.cpp",
      "$baseclasses_dir/mtype.h",
      "$baseclasses_dir/outputq.cpp",
      "$baseclasses_dir/outputq.h",
      "$baseclasses_dir/pstream.cpp",
      "$baseclasses_dir/pstream.h",
      "$baseclasses_dir/pullpin.cpp",
      "$baseclasses_dir/pullpin.h",
      "$baseclasses_dir/refclock.cpp",
      "$baseclasses_dir/refclock.h",
      "$baseclasses_dir/reftime.h",
      "$baseclasses_dir/renbase.cpp",
      "$baseclasses_dir/renbase.h",
      "$baseclasses_dir/schedule.cpp",
      "$baseclasses_dir/seekpt.cpp",
      "$baseclasses_dir/seekpt.h",
      "$baseclasses_dir/source.cpp",
      "$baseclasses_dir/source.h",
      "$baseclasses_dir/streams.h",
      "$baseclasses_dir/strmctl.cpp",
      "$baseclasses_dir/strmctl.h",
      "$baseclasses_dir/sysclock.cpp",
      "$baseclasses_dir/sysclock.h",
      "$baseclasses_dir/transfrm.cpp",
      "$baseclasses_dir/transfrm.h",
      "$baseclasses_dir/transip.cpp",
      "$baseclasses_dir/transip.h",
      "$baseclasses_dir/videoctl.cpp",
      "$baseclasses_dir/videoctl.h",
      "$baseclasses_dir/vtrans.cpp",
      "$baseclasses_dir/vtrans.h",
      "$baseclasses_dir/winctrl.cpp",
      "$baseclasses_dir/winctrl.h",
      "$baseclasses_dir/winutil.cpp",
      "$baseclasses_dir/winutil.h",
      "$baseclasses_dir/wxdebug.cpp",
      "$baseclasses_dir/wxdebug.h",
      "$baseclasses_dir/wxlist.cpp",
      "$baseclasses_dir/wxlist.h",
      "$baseclasses_dir/wxutil.cpp",
      "$baseclasses_dir/wxutil.h",
    ]

    public_configs = [ ":winsdk_samples_config" ]

    configs -= [
      "//build/config/compiler:chromium_code",
      "//build/config/win:nominmax",
    ]
    configs += [
      "//build/config/compiler:no_chromium_code",
      ":winsdk_samples_warnings_config",
    ]
  }
}
