# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

config("wds_config") {
  include_dirs = [
    "gen",
    "src",
  ]
}

shared_library("libwds") {
  sources = [
    "gen/errorscanner.cpp",
    "gen/errorscanner.h",
    "gen/headerscanner.cpp",
    "gen/headerscanner.h",
    "gen/messagescanner.cpp",
    "gen/messagescanner.h",
    "gen/parser.cpp",
    "gen/parser.h",
    "src/libwds/common/logging.cpp",
    "src/libwds/common/logging.h",
    "src/libwds/common/message_handler.cpp",
    "src/libwds/common/message_handler.h",
    "src/libwds/common/rtsp_input_handler.cpp",
    "src/libwds/common/rtsp_input_handler.h",
    "src/libwds/common/video_format.cpp",
    "src/libwds/public/audio_codec.h",
    "src/libwds/public/connector_type.h",
    "src/libwds/public/logging.h",
    "src/libwds/public/media_manager.h",
    "src/libwds/public/peer.h",
    "src/libwds/public/source.h",
    "src/libwds/public/video_format.h",
    "src/libwds/public/wds_export.h",
    "src/libwds/rtsp/audiocodecs.cpp",
    "src/libwds/rtsp/audiocodecs.h",
    "src/libwds/rtsp/avformatchangetiming.cpp",
    "src/libwds/rtsp/avformatchangetiming.h",
    "src/libwds/rtsp/clientrtpports.cpp",
    "src/libwds/rtsp/clientrtpports.h",
    "src/libwds/rtsp/connectortype.cpp",
    "src/libwds/rtsp/connectortype.h",
    "src/libwds/rtsp/constants.h",
    "src/libwds/rtsp/contentprotection.cpp",
    "src/libwds/rtsp/contentprotection.h",
    "src/libwds/rtsp/coupledsink.cpp",
    "src/libwds/rtsp/coupledsink.h",
    "src/libwds/rtsp/displayedid.cpp",
    "src/libwds/rtsp/displayedid.h",
    "src/libwds/rtsp/driver.cpp",
    "src/libwds/rtsp/driver.h",
    "src/libwds/rtsp/errorscanner.h",
    "src/libwds/rtsp/formats3d.cpp",
    "src/libwds/rtsp/formats3d.h",
    "src/libwds/rtsp/genericproperty.cpp",
    "src/libwds/rtsp/genericproperty.h",
    "src/libwds/rtsp/getparameter.cpp",
    "src/libwds/rtsp/getparameter.h",
    "src/libwds/rtsp/header.cpp",
    "src/libwds/rtsp/header.h",
    "src/libwds/rtsp/headerscanner.h",
    "src/libwds/rtsp/i2c.cpp",
    "src/libwds/rtsp/i2c.h",
    "src/libwds/rtsp/idrrequest.cpp",
    "src/libwds/rtsp/idrrequest.h",
    "src/libwds/rtsp/message.cpp",
    "src/libwds/rtsp/message.h",
    "src/libwds/rtsp/messagescanner.h",
    "src/libwds/rtsp/options.cpp",
    "src/libwds/rtsp/options.h",
    "src/libwds/rtsp/pause.cpp",
    "src/libwds/rtsp/pause.h",
    "src/libwds/rtsp/payload.cpp",
    "src/libwds/rtsp/payload.h",
    "src/libwds/rtsp/play.cpp",
    "src/libwds/rtsp/play.h",
    "src/libwds/rtsp/preferreddisplaymode.cpp",
    "src/libwds/rtsp/preferreddisplaymode.h",
    "src/libwds/rtsp/presentationurl.cpp",
    "src/libwds/rtsp/presentationurl.h",
    "src/libwds/rtsp/property.cpp",
    "src/libwds/rtsp/property.h",
    "src/libwds/rtsp/propertyerrors.cpp",
    "src/libwds/rtsp/propertyerrors.h",
    "src/libwds/rtsp/reply.cpp",
    "src/libwds/rtsp/reply.h",
    "src/libwds/rtsp/route.cpp",
    "src/libwds/rtsp/route.h",
    "src/libwds/rtsp/setparameter.cpp",
    "src/libwds/rtsp/setparameter.h",
    "src/libwds/rtsp/setup.cpp",
    "src/libwds/rtsp/setup.h",
    "src/libwds/rtsp/standby.cpp",
    "src/libwds/rtsp/standby.h",
    "src/libwds/rtsp/standbyresumecapability.cpp",
    "src/libwds/rtsp/standbyresumecapability.h",
    "src/libwds/rtsp/teardown.cpp",
    "src/libwds/rtsp/teardown.h",
    "src/libwds/rtsp/transportheader.cpp",
    "src/libwds/rtsp/transportheader.h",
    "src/libwds/rtsp/triggermethod.cpp",
    "src/libwds/rtsp/triggermethod.h",
    "src/libwds/rtsp/uibccapability.cpp",
    "src/libwds/rtsp/uibccapability.h",
    "src/libwds/rtsp/uibcsetting.cpp",
    "src/libwds/rtsp/uibcsetting.h",
    "src/libwds/rtsp/videoformats.cpp",
    "src/libwds/rtsp/videoformats.h",
    "src/libwds/source/cap_negotiation_state.cpp",
    "src/libwds/source/cap_negotiation_state.h",
    "src/libwds/source/init_state.cpp",
    "src/libwds/source/init_state.h",
    "src/libwds/source/session_state.cpp",
    "src/libwds/source/session_state.h",
    "src/libwds/source/source.cpp",
    "src/libwds/source/streaming_state.cpp",
    "src/libwds/source/streaming_state.h",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  public_configs = [ ":wds_config" ]
}
