# Copyright (c) 2012 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.

{
  'targets': [
    {
      'target_name': 'directshow_baseclasses',
      'type': 'static_library',
      'variables': {
        'baseclasses_dir%':
          'src/Samples/multimedia/directshow/baseclasses',
      },
      'defines!': [
        'NOMINMAX',
      ],
      'include_dirs': ['<(baseclasses_dir)',],
      'direct_dependent_settings': {
        'include_dirs': ['<(baseclasses_dir)',],
      },
      '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',
      ],
    },
  ],
}
