# Copyright 2014 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.

import("//mojo/public/mojo_application.gni")

mojo_native_application("http_server") {
  sources = [
    "http_request_parser.cc",
    "http_request_parser.h",
    "http_server.cc",
  ]

  deps = [
    "//base",
    "//mojo/common",
    "//mojo/public/c/system:for_shared_library",
    "//mojo/public/cpp/application:standalone",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/utility",
    "//mojo/services/public/interfaces/network",
    "//services/http_server/public",
    "//services/http_server/public:util",
    "//third_party/re2",
  ]

  if (is_win) {
    cflags = [
      # size_t to int.
      "/wd4267",
    ]
  }
}
