# 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 = "src/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",
    ]
  }
}
