# 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.
      cflags = [
        "-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-extra-semi",
        "-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",
    ]
  }
}
