blob: 723736fcc284b425c8564448c293f7e14c613d8b [file] [log] [blame] [edit]
# Copyright 2023 The ChromiumOS Authors
# 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 = [
":install_headers",
":libnet-base",
":libnet-base-test",
":libnet-base-test_pc",
":libnet-base_pc",
]
if (use.fuzzer) {
deps += [
":http_url_fuzzer",
":netlink_attribute_list_fuzzer",
":rtnl_handler_fuzzer",
]
}
if (use.test) {
deps += [ ":libnet-base-testrunner" ]
}
}
pkg_config("target_defaults") {
cflags = [
"-Wconversion",
"-Wextra",
"-Werror",
"-Wno-unused-parameter", # needed for libchrome
]
pkg_deps = [
"libbrillo",
"libcares",
"libchrome",
"libminijail",
]
}
shared_library("libnet-base") {
sources = [
"ares_interface.cc",
"attribute_list.cc",
"byte_utils.cc",
"control_netlink_attribute.cc",
"dns_client.cc",
"generic_netlink_message.cc",
"http_url.cc",
"ip_address.cc",
"ip_address_utils.cc",
"ipv4_address.cc",
"ipv6_address.cc",
"log_watcher.cc",
"mac_address.cc",
"netlink_attribute.cc",
"netlink_manager.cc",
"netlink_message.cc",
"netlink_packet.cc",
"netlink_sock_diag.cc",
"netlink_socket.cc",
"network_config.cc",
"network_priority.cc",
"proc_fs_stub.cc",
"process_manager.cc",
"rtnl_handler.cc",
"rtnl_listener.cc",
"rtnl_message.cc",
"socket.cc",
"socket_forwarder.cc",
"technology.cc",
]
configs += [ ":target_defaults" ]
install_path = "lib"
}
generate_pkg_config("libnet-base_pc") {
name = "libnet-base"
description = "Network primitive library"
version = getenv("PV")
requires = [ "libchrome" ]
libs = [ "-lnet-base" ]
install = true
}
# Install headers to /usr/include/chromeos/.
# Args:
# sources: A list of headers to be installed.
# subdir: The subfolder name under platform2/. Headers will be installed to
# /usr/include/chromeos/${subdir}/.
template("install_chromeos_headers") {
assert(defined(invoker.sources),
"Need sources in $target_name listing the header files to install.")
assert(
defined(invoker.subdir),
"Need subdir in $target_name specifying the folder name under platform2/.")
preprocessing_target_name = "pre_" + target_name
action_foreach(preprocessing_target_name) {
forward_variables_from(invoker,
[
"sources",
"subdir",
])
outputs =
[ "${target_gen_dir}/include/chromeos/${subdir}/{{source_file_part}}" ]
script = "/bin/sh"
args = [
"-c",
"sed '/.pb.h/! s:${subdir}/:chromeos/${subdir}/:g' " +
rebase_path("{{source}}") +
"> ${target_gen_dir}/include/chromeos/${subdir}/{{source_file_part}}",
]
}
install_config(target_name) {
forward_variables_from(invoker, [ "subdir" ])
sources = get_target_outputs(":${preprocessing_target_name}")
install_path = "/usr/include/chromeos/${subdir}"
deps = [ ":${preprocessing_target_name}" ]
}
}
install_chromeos_headers("install_headers") {
sources = [
"ares_interface.h",
"attribute_list.h",
"byte_utils.h",
"control_netlink_attribute.h",
"dns_client.h",
"generic_netlink_message.h",
"http_url.h",
"ip_address.h",
"ip_address_utils.h",
"ipv4_address.h",
"ipv6_address.h",
"log_watcher.h",
"mac_address.h",
"netlink_attribute.h",
"netlink_manager.h",
"netlink_message.h",
"netlink_packet.h",
"netlink_sock_diag.h",
"netlink_socket.h",
"network_config.h",
"network_priority.h",
"proc_fs_stub.h",
"process_manager.h",
"rtnl_handler.h",
"rtnl_listener.h",
"rtnl_message.h",
"socket.h",
"socket_forwarder.h",
"technology.h",
]
subdir = "net-base"
}
install_chromeos_headers("install_test_headers") {
sources = [
"mock_netlink_manager.h",
"mock_netlink_socket.h",
"mock_proc_fs_stub.h",
"mock_process_manager.h",
"mock_rtnl_handler.h",
"mock_socket.h",
]
subdir = "net-base"
}
generate_pkg_config("libnet-base-test_pc") {
name = "libnet-base-test"
description = "net-base test library"
version = getenv("PV")
requires = [ "libchrome" ]
libs = [ "-lnet-base-test" ]
install = true
}
shared_library("libnet-base-test") {
sources = [
"mock_netlink_manager.cc",
"mock_netlink_socket.cc",
"mock_proc_fs_stub.cc",
"mock_process_manager.cc",
"mock_rtnl_handler.cc",
"mock_socket.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
install_path = "/build/lib"
deps = [
":install_test_headers",
":libnet-base",
]
}
if (use.fuzzer) {
executable("http_url_fuzzer") {
sources = [ "http_url_fuzzer.cc" ]
configs += [
"//common-mk/common_fuzzer",
":target_defaults",
]
deps = [ ":libnet-base" ]
}
executable("netlink_attribute_list_fuzzer") {
sources = [ "attribute_list_fuzzer.cc" ]
configs += [
"//common-mk/common_fuzzer",
":target_defaults",
]
deps = [ ":libnet-base" ]
}
executable("rtnl_handler_fuzzer") {
sources = [ "rtnl_handler_fuzzer.cc" ]
configs += [
"//common-mk/common_fuzzer",
":target_defaults",
]
deps = [ ":libnet-base" ]
}
}
if (use.test) {
executable("libnet-base-testrunner") {
run_test = true
sources = [
"attribute_list_test.cc",
"byte_utils_test.cc",
"dns_client_test.cc",
"http_url_test.cc",
"ip_address_test.cc",
"ipv4_address_test.cc",
"ipv6_address_test.cc",
"log_watcher_test.cc",
"mac_address_test.cc",
"netlink_attribute_test.cc",
"netlink_packet_test.cc",
"netlink_socket_test.cc",
"network_config_test.cc",
"process_manager_test.cc",
"rtnl_handler_test.cc",
"rtnl_listener_test.cc",
"rtnl_message_test.cc",
"socket_forwarder_test.cc",
"socket_test.cc",
"technology_test.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
deps = [
":libnet-base",
":libnet-base-test",
"//common-mk/testrunner",
]
pkg_deps = [
"libchrome-test",
"re2",
]
}
}