blob: e34dfcb33d0aeb54e208e6290878e2e6d0f8f700 [file] [log] [blame]
# Copyright 2018 The Chromium OS 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("//common-mk/pkg_config.gni")
group("all") {
deps = [
":libp2p-client",
":libp2p-http-server",
":libp2p-server",
":libp2p-util",
":p2p-client",
":p2p-http-server",
":p2p-server",
]
if (use.test) {
deps += [
":libp2p-testutil",
":p2p-client-unittests",
":p2p-common-unittests",
":p2p-http-server-unittests",
":p2p-server-unittests",
]
}
if (use.fuzzer) {
deps += [ ":p2p_http_server_fuzzer" ]
}
}
pkg_config("target_defaults") {
cflags_cc = [ "-fno-strict-aliasing" ]
ldflags = [ "-Wl,--gc-sections" ]
cflags = [
"-ffunction-sections",
"-Wextra",
# Restore overridden flag by -Wextra.
"-Wno-unused-parameter",
# To allow { 0 } initializations.
"-Wno-missing-field-initializers",
]
pkg_deps = [
"libbrillo",
"libchrome",
]
}
pkg_config("libp2p-util_dependent_config") {
pkg_deps = [
"glib-2.0",
"gobject-2.0",
]
}
# common utils.
static_library("libp2p-util") {
configs += [ ":target_defaults" ]
all_dependent_configs = [ ":libp2p-util_dependent_config" ]
sources = [
"common/clock.cc",
"common/server_message.cc",
"common/util.cc",
]
libs = [ "rt" ]
}
pkg_config("libp2p-client_dependent_config") {
pkg_deps = [
"avahi-client",
"avahi-glib",
"glib-2.0",
"gobject-2.0",
"libmetrics",
]
}
# p2p-client
static_library("libp2p-client") {
configs += [ ":target_defaults" ]
all_dependent_configs = [ ":libp2p-client_dependent_config" ]
sources = [
"client/peer_selector.cc",
"client/service_finder.cc",
]
}
executable("p2p-client") {
configs += [ ":target_defaults" ]
sources = [ "client/main.cc" ]
deps = [
":libp2p-client",
":libp2p-util",
]
}
pkg_config("libp2p-server_dependent_config") {
pkg_deps = [
"avahi-client",
"avahi-glib",
"gio-2.0",
"gio-unix-2.0",
"glib-2.0",
"gobject-2.0",
"libmetrics",
]
}
# p2p-server
static_library("libp2p-server") {
configs += [ ":target_defaults" ]
all_dependent_configs = [ ":libp2p-server_dependent_config" ]
sources = [
"server/file_watcher.cc",
"server/http_server.cc",
"server/peer_update_manager.cc",
"server/service_publisher.cc",
]
}
executable("p2p-server") {
configs += [ ":target_defaults" ]
sources = [ "server/main.cc" ]
deps = [
":libp2p-server",
":libp2p-util",
]
}
pkg_config("libp2p-http-server_dependent_config") {
pkg_deps = [
"avahi-client",
"avahi-glib",
"glib-2.0",
"libmetrics",
]
}
# p2p-http-server
static_library("libp2p-http-server") {
configs += [ ":target_defaults" ]
all_dependent_configs = [ ":libp2p-http-server_dependent_config" ]
sources = [
"http_server/connection_delegate.cc",
"http_server/server.cc",
]
libs = [ "attr" ]
}
executable("p2p-http-server") {
configs += [ ":target_defaults" ]
sources = [ "http_server/main.cc" ]
deps = [
":libp2p-http-server",
":libp2p-util",
]
}
# Test only.
if (use.test) {
pkg_config("libp2p-testutil_dependent_config") {
pkg_deps = [
"gobject-2.0",
"libchrome-test",
]
}
# common test-utils.
static_library("libp2p-testutil") {
configs += [
"//common-mk:test",
":target_defaults",
]
all_dependent_configs = [ ":libp2p-testutil_dependent_config" ]
sources = [ "common/testutil.cc" ]
}
# common tests
executable("p2p-common-unittests") {
configs += [
# This config should be at the top.
# TODO(crbug.com/887845): Remove this after library order issue is resolved.
"//common-mk:test",
":target_defaults",
]
sources = [
"common/server_message_test.cc",
"common/struct_serializer_test.cc",
"common/testutil_test.cc",
]
deps = [
":libp2p-testutil",
":libp2p-util",
"//common-mk/testrunner",
]
}
# p2p-client tests
executable("p2p-client-unittests") {
configs += [
# This config should be at the top.
# TODO(crbug.com/887845): Remove this after library order issue is resolved.
"//common-mk:test",
":target_defaults",
]
sources = [
"client/fake_service_finder.cc",
"client/peer_selector_test.cc",
]
deps = [
":libp2p-client",
":libp2p-testutil",
":libp2p-util",
"//common-mk/testrunner",
]
}
# p2p-server tests
executable("p2p-server-unittests") {
configs += [
# This config should be at the top.
# TODO(crbug.com/887845): Remove this after library order issue is resolved.
"//common-mk:test",
":target_defaults",
]
sources = [
"server/file_watcher_test.cc",
"server/http_server_test.cc",
"server/peer_update_manager_test.cc",
]
deps = [
":libp2p-server",
":libp2p-testutil",
":libp2p-util",
"//common-mk/testrunner",
]
}
# p2p-http-server tests
executable("p2p-http-server-unittests") {
configs += [
# This config should be at the top.
# TODO(crbug.com/887845): Remove this after library order issue is resolved.
"//common-mk:test",
":target_defaults",
]
sources = [
"http_server/connection_delegate_test.cc",
"http_server/server_test.cc",
]
deps = [
":libp2p-http-server",
":libp2p-testutil",
":libp2p-util",
"//common-mk/testrunner",
]
}
}
# Fuzzer only.
if (use.fuzzer) {
pkg_config("p2p_http_server_fuzzer_config") {
pkg_deps = [ "libchrome-test" ]
}
# p2p-http-server fuzzer
executable("p2p_http_server_fuzzer") {
configs += [
"//common-mk/common_fuzzer",
":p2p_http_server_fuzzer_config",
]
sources = [ "fuzzers/p2p_http_server_fuzzer.cc" ]
deps = [
":libp2p-server",
":libp2p-util",
]
}
}