# 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") {
    include_dirs = [ baseclasses_dir ]
  }

  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-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",
    ]
  }
}
