blob: ff7907107216f4f81a708dffa2733f200e85563d [file] [log] [blame]
# 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.
import("//build/toolchain/toolchain.gni")
if (is_mac) {
import("//build/config/sysroot.gni")
}
# Allows the source set to inject ldflags for targets that link to it.
config("util_link_config") {
if (is_mac) {
libs = [ "bsm" ]
}
}
if (is_mac) {
action_foreach("mig") {
script = "mach/mig.py"
sources = [
"$sysroot/usr/include/mach/exc.defs",
"$sysroot/usr/include/mach/mach_exc.defs",
"$sysroot/usr/include/mach/notify.defs",
"mach/child_port.defs",
]
outputs = [
"$target_gen_dir/mach/{{source_name_part}}User.c",
"$target_gen_dir/mach/{{source_name_part}}Server.c",
"$target_gen_dir/mach/{{source_name_part}}.h",
"$target_gen_dir/mach/{{source_name_part}}Server.h",
]
args = [ "{{source}}" ]
args += rebase_path(outputs, root_build_dir)
if (!use_system_xcode) {
args += [ hermetic_xcode_path ]
}
}
}
static_library("util") {
sources = [
"file/file_io.cc",
"file/file_io.h",
"file/file_io_posix.cc",
"file/file_io_win.cc",
"file/file_reader.cc",
"file/file_reader.h",
"file/file_seeker.cc",
"file/file_seeker.h",
"file/file_writer.cc",
"file/file_writer.h",
"file/string_file.cc",
"file/string_file.h",
"mac/checked_mach_address_range.h",
"mac/launchd.h",
"mac/launchd.mm",
"mac/mac_util.cc",
"mac/mac_util.h",
"mac/service_management.cc",
"mac/service_management.h",
"mac/xattr.cc",
"mac/xattr.h",
"misc/address_sanitizer.h",
"misc/arraysize_unsafe.h",
"misc/clock.h",
"misc/clock_mac.cc",
"misc/clock_posix.cc",
"misc/clock_win.cc",
"misc/implicit_cast.h",
"misc/initialization_state.h",
"misc/initialization_state_dcheck.cc",
"misc/initialization_state_dcheck.h",
"misc/metrics.cc",
"misc/metrics.h",
"misc/pdb_structures.cc",
"misc/pdb_structures.h",
"misc/random_string.cc",
"misc/random_string.h",
"misc/scoped_forbid_return.cc",
"misc/scoped_forbid_return.h",
"misc/symbolic_constants_common.h",
"misc/tri_state.h",
"misc/uuid.cc",
"misc/uuid.h",
"net/http_body.cc",
"net/http_body.h",
"net/http_headers.cc",
"net/http_headers.h",
"net/http_multipart_builder.cc",
"net/http_multipart_builder.h",
"net/http_transport.cc",
"net/http_transport.h",
"net/http_transport_mac.mm",
"net/http_transport_win.cc",
"numeric/checked_address_range.cc",
"numeric/checked_address_range.h",
"numeric/checked_range.h",
"numeric/in_range_cast.h",
"numeric/int128.h",
"numeric/safe_assignment.h",
"posix/close_multiple.cc",
"posix/close_multiple.h",
"posix/close_stdio.cc",
"posix/close_stdio.h",
"posix/drop_privileges.cc",
"posix/drop_privileges.h",
"posix/process_info.h",
"posix/process_info_mac.cc",
"posix/symbolic_constants_posix.cc",
"posix/symbolic_constants_posix.h",
"stdlib/aligned_allocator.cc",
"stdlib/aligned_allocator.h",
"stdlib/cxx.h",
"stdlib/map_insert.h",
"stdlib/objc.h",
"stdlib/pointer_container.h",
"stdlib/string_number_conversion.cc",
"stdlib/string_number_conversion.h",
"stdlib/strlcpy.cc",
"stdlib/strlcpy.h",
"stdlib/strnlen.cc",
"stdlib/strnlen.h",
"string/split_string.cc",
"string/split_string.h",
"synchronization/semaphore.h",
"synchronization/semaphore_mac.cc",
"synchronization/semaphore_posix.cc",
"synchronization/semaphore_win.cc",
"thread/thread.cc",
"thread/thread.h",
"thread/thread_log_messages.cc",
"thread/thread_log_messages.h",
"thread/thread_posix.cc",
"thread/thread_win.cc",
"thread/worker_thread.cc",
"thread/worker_thread.h",
"win/address_types.h",
"win/capture_context.asm",
"win/capture_context.h",
"win/checked_win_address_range.h",
"win/command_line.cc",
"win/command_line.h",
"win/critical_section_with_debug_info.cc",
"win/critical_section_with_debug_info.h",
"win/exception_handler_server.cc",
"win/exception_handler_server.h",
"win/get_function.cc",
"win/get_function.h",
"win/get_module_information.cc",
"win/get_module_information.h",
"win/handle.cc",
"win/handle.h",
"win/initial_client_data.cc",
"win/initial_client_data.h",
"win/module_version.cc",
"win/module_version.h",
"win/nt_internals.cc",
"win/nt_internals.h",
"win/ntstatus_logging.cc",
"win/ntstatus_logging.h",
"win/process_info.cc",
"win/process_info.h",
"win/process_structs.h",
"win/registration_protocol_win.cc",
"win/registration_protocol_win.h",
"win/scoped_handle.cc",
"win/scoped_handle.h",
"win/scoped_local_alloc.cc",
"win/scoped_local_alloc.h",
"win/scoped_process_suspend.cc",
"win/scoped_process_suspend.h",
"win/termination_codes.h",
"win/time.cc",
"win/time.h",
"win/xp_compat.h",
]
if (is_mac) {
# mach/ are not globally filtered.
sources += [
"mach/child_port_handshake.cc",
"mach/child_port_handshake.h",
"mach/child_port_server.cc",
"mach/child_port_server.h",
"mach/child_port_types.h",
"mach/composite_mach_message_server.cc",
"mach/composite_mach_message_server.h",
"mach/exc_client_variants.cc",
"mach/exc_client_variants.h",
"mach/exc_server_variants.cc",
"mach/exc_server_variants.h",
"mach/exception_behaviors.cc",
"mach/exception_behaviors.h",
"mach/exception_ports.cc",
"mach/exception_ports.h",
"mach/exception_types.cc",
"mach/exception_types.h",
"mach/mach_extensions.cc",
"mach/mach_extensions.h",
"mach/mach_message.cc",
"mach/mach_message.h",
"mach/mach_message_server.cc",
"mach/mach_message_server.h",
"mach/notify_server.cc",
"mach/notify_server.h",
"mach/scoped_task_suspend.cc",
"mach/scoped_task_suspend.h",
"mach/symbolic_constants_mach.cc",
"mach/symbolic_constants_mach.h",
"mach/task_for_pid.cc",
"mach/task_for_pid.h",
"mach/task_memory.cc",
"mach/task_memory.h",
]
}
# Include files from here and generated files starting with "util".
include_dirs = [
"..",
"$root_gen_dir/third_party/crashpad/crashpad",
]
all_dependent_configs = [ ":util_link_config" ]
deps = [
"//base",
"//third_party/crashpad/crashpad/compat",
]
if (is_win) {
libs = [ "winhttp.lib" ]
cflags = [
"/wd4201", # nonstandard extension used : nameless struct/union.
"/wd4577", # 'noexcept' used with no exception handling mode specified.
]
if (current_cpu == "x86") {
asmflags = [ "/safeseh" ]
}
} else if (is_mac) {
sources += get_target_outputs(":mig")
deps += [ ":mig" ]
libs = [
"CoreFoundation.framework",
"Foundation.framework",
"IOKit.framework",
]
}
}