| # Copyright 2014 The Crashpad Authors. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| { |
| 'includes': [ |
| '../build/crashpad.gypi', |
| ], |
| 'targets': [ |
| { |
| 'target_name': 'crashpad_util', |
| 'type': 'static_library', |
| 'dependencies': [ |
| '../compat/compat.gyp:crashpad_compat', |
| '../third_party/mini_chromium/mini_chromium.gyp:base', |
| '../third_party/lss/lss.gyp:lss', |
| ], |
| 'defines': [ |
| 'ZLIB_CONST', |
| 'CRASHPAD_USE_BORINGSSL', |
| ], |
| 'include_dirs': [ |
| '..', |
| '<(INTERMEDIATE_DIR)', |
| ], |
| 'sources': [ |
| 'file/delimited_file_reader.cc', |
| 'file/delimited_file_reader.h', |
| 'file/directory_reader.h', |
| 'file/directory_reader_posix.cc', |
| 'file/directory_reader_win.cc', |
| '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/filesystem.h', |
| 'file/filesystem_posix.cc', |
| 'file/filesystem_win.cc', |
| 'file/file_writer.cc', |
| 'file/file_writer.h', |
| 'file/output_stream_file_writer.cc', |
| 'file/output_stream_file_writer.h', |
| 'file/scoped_remove_file.cc', |
| 'file/scoped_remove_file.h', |
| 'file/string_file.cc', |
| 'file/string_file.h', |
| 'linux/address_types.h', |
| 'linux/auxiliary_vector.cc', |
| 'linux/auxiliary_vector.h', |
| 'linux/checked_address_range.h', |
| 'linux/direct_ptrace_connection.cc', |
| 'linux/direct_ptrace_connection.h', |
| 'linux/exception_handler_client.cc', |
| 'linux/exception_handler_client.h', |
| 'linux/exception_handler_protocol.cc', |
| 'linux/exception_handler_protocol.h', |
| 'linux/exception_information.h', |
| 'linux/memory_map.cc', |
| 'linux/memory_map.h', |
| 'linux/proc_stat_reader.cc', |
| 'linux/proc_stat_reader.h', |
| 'linux/proc_task_reader.cc', |
| 'linux/proc_task_reader.h', |
| 'linux/ptrace_broker.cc', |
| 'linux/ptrace_broker.h', |
| 'linux/ptrace_client.cc', |
| 'linux/ptrace_client.h' |
| 'linux/ptrace_connection.h', |
| 'linux/ptracer.cc', |
| 'linux/ptracer.h', |
| 'linux/scoped_pr_set_dumpable.cc', |
| 'linux/scoped_pr_set_dumpable.h', |
| 'linux/scoped_pr_set_ptracer.cc', |
| 'linux/scoped_pr_set_ptracer.h', |
| 'linux/scoped_ptrace_attach.cc', |
| 'linux/scoped_ptrace_attach.h', |
| 'linux/socket.cc', |
| 'linux/socket.h', |
| 'linux/thread_info.cc', |
| 'linux/thread_info.h', |
| 'linux/traits.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', |
| 'mach/child_port.defs', |
| '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', |
| 'misc/address_sanitizer.h', |
| 'misc/address_types.h', |
| 'misc/arraysize.h', |
| 'misc/as_underlying_type.h', |
| 'misc/capture_context.h', |
| 'misc/capture_context_linux.S', |
| 'misc/capture_context_mac.S', |
| 'misc/capture_context_win.asm', |
| 'misc/clock.h', |
| 'misc/clock_mac.cc', |
| 'misc/clock_posix.cc', |
| 'misc/clock_win.cc', |
| 'misc/elf_note_types.h', |
| 'misc/from_pointer_cast.h', |
| 'misc/implicit_cast.h', |
| 'misc/initialization_state.h', |
| 'misc/initialization_state_dcheck.cc', |
| 'misc/initialization_state_dcheck.h', |
| 'misc/lexing.cc', |
| 'misc/lexing.h', |
| 'misc/metrics.cc', |
| 'misc/metrics.h', |
| 'misc/paths.h', |
| 'misc/paths_mac.cc', |
| 'misc/paths_linux.cc', |
| 'misc/paths_win.cc', |
| 'misc/pdb_structures.cc', |
| 'misc/pdb_structures.h', |
| 'misc/random_string.cc', |
| 'misc/random_string.h', |
| 'misc/range_set.cc', |
| 'misc/range_set.h', |
| 'misc/reinterpret_bytes.cc', |
| 'misc/reinterpret_bytes.h', |
| 'misc/scoped_forbid_return.cc', |
| 'misc/scoped_forbid_return.h', |
| 'misc/symbolic_constants_common.h', |
| 'misc/time.cc', |
| 'misc/time.h', |
| 'misc/time_linux.cc', |
| 'misc/time_win.cc', |
| 'misc/tri_state.h', |
| 'misc/uuid.cc', |
| 'misc/uuid.h', |
| 'misc/zlib.cc', |
| 'misc/zlib.h', |
| 'net/http_body.cc', |
| 'net/http_body.h', |
| 'net/http_body_gzip.cc', |
| 'net/http_body_gzip.h', |
| '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', |
| 'net/url.cc', |
| 'net/url.h', |
| 'numeric/checked_address_range.cc', |
| 'numeric/checked_address_range.h', |
| 'numeric/checked_range.h', |
| 'numeric/checked_vm_address_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/double_fork_and_exec.cc', |
| 'posix/double_fork_and_exec.h', |
| 'posix/process_info.h', |
| 'posix/process_info_linux.cc', |
| 'posix/process_info_mac.cc', |
| 'posix/scoped_dir.cc', |
| 'posix/scoped_dir.h', |
| 'posix/scoped_mmap.cc', |
| 'posix/scoped_mmap.h', |
| 'posix/signals.cc', |
| 'posix/signals.h', |
| 'posix/symbolic_constants_posix.cc', |
| 'posix/symbolic_constants_posix.h', |
| 'process/process_id.h', |
| 'process/process_memory.cc', |
| 'process/process_memory.h', |
| 'process/process_memory_linux.cc', |
| 'process/process_memory_linux.h', |
| 'process/process_memory_mac.cc', |
| 'process/process_memory_mac.h', |
| 'process/process_memory_native.h', |
| 'process/process_memory_range.cc', |
| 'process/process_memory_range.h', |
| 'stdlib/aligned_allocator.cc', |
| 'stdlib/aligned_allocator.h', |
| 'stdlib/map_insert.h', |
| 'stdlib/objc.h', |
| 'stdlib/string_number_conversion.cc', |
| 'stdlib/string_number_conversion.h', |
| 'stdlib/strlcpy.cc', |
| 'stdlib/strlcpy.h', |
| 'stdlib/strnlen.cc', |
| 'stdlib/strnlen.h', |
| 'stdlib/thread_safe_vector.h', |
| 'stream/base94_output_stream.cc', |
| 'stream/base94_output_stream.h', |
| 'stream/file_encoder.cc', |
| 'stream/file_encoder.h', |
| 'stream/file_output_stream.cc', |
| 'stream/file_output_stream.h', |
| 'stream/log_output_stream.cc', |
| 'stream/log_output_stream.h', |
| 'stream/output_stream_interface.h', |
| 'stream/zlib_output_stream.cc', |
| 'stream/zlib_output_stream.h', |
| 'string/split_string.cc', |
| 'string/split_string.h', |
| 'synchronization/semaphore_mac.cc', |
| 'synchronization/semaphore_posix.cc', |
| 'synchronization/semaphore_win.cc', |
| 'synchronization/semaphore.h', |
| 'thread/stoppable.h', |
| '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/checked_win_address_range.h', |
| 'win/command_line.cc', |
| 'win/command_line.h', |
| 'win/context_wrappers.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/safe_terminate_process.asm', |
| 'win/safe_terminate_process.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/scoped_set_event.cc', |
| 'win/scoped_set_event.h', |
| 'win/session_end_watcher.cc', |
| 'win/session_end_watcher.h', |
| 'win/termination_codes.h', |
| 'win/xp_compat.h', |
| ], |
| 'conditions': [ |
| ['OS=="mac"', { |
| 'conditions': [ |
| ['GENERATOR=="ninja"', { |
| # ninja’s rules can’t deal with sources that have paths relative |
| # to environment variables like SDKROOT. Copy the .defs files out |
| # of SDKROOT and into a place they can be referenced without any |
| # environment variables. |
| 'copies': [ |
| { |
| 'destination': '<(INTERMEDIATE_DIR)/util/mach', |
| 'files': [ |
| '$(SDKROOT)/usr/include/mach/exc.defs', |
| '$(SDKROOT)/usr/include/mach/mach_exc.defs', |
| '$(SDKROOT)/usr/include/mach/notify.defs', |
| ], |
| }, |
| ], |
| 'sources': [ |
| '<(INTERMEDIATE_DIR)/util/mach/exc.defs', |
| '<(INTERMEDIATE_DIR)/util/mach/mach_exc.defs', |
| '<(INTERMEDIATE_DIR)/util/mach/notify.defs', |
| ], |
| }, { # else: GENERATOR!="ninja" |
| # The Xcode generator does copies after rules, so the above trick |
| # won’t work, but its rules tolerate sources with SDKROOT-relative |
| # paths. |
| 'sources': [ |
| '$(SDKROOT)/usr/include/mach/exc.defs', |
| '$(SDKROOT)/usr/include/mach/mach_exc.defs', |
| '$(SDKROOT)/usr/include/mach/notify.defs', |
| ], |
| }], |
| ], |
| 'rules': [ |
| { |
| 'rule_name': 'mig', |
| 'extension': 'defs', |
| 'inputs': [ |
| 'mach/mig.py', |
| ], |
| 'outputs': [ |
| '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT)User.c', |
| '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT)Server.c', |
| '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT).h', |
| '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT)Server.h', |
| ], |
| 'action': [ |
| 'python2', |
| '<@(_inputs)', |
| '<(RULE_INPUT_PATH)', |
| '<@(_outputs)', |
| '--include=../compat/mac' |
| ], |
| 'process_outputs_as_sources': 1, |
| }, |
| ], |
| 'link_settings': { |
| 'libraries': [ |
| '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework', |
| '$(SDKROOT)/System/Library/Frameworks/Foundation.framework', |
| '$(SDKROOT)/System/Library/Frameworks/IOKit.framework', |
| '$(SDKROOT)/usr/lib/libbsm.dylib', |
| ], |
| }, |
| }, { # else: OS!=mac |
| 'sources!': [ 'misc/capture_context_mac.S' ], |
| }], |
| ['OS=="win"', { |
| 'link_settings': { |
| 'libraries': [ |
| '-luser32.lib', |
| '-lversion.lib', |
| '-lwinhttp.lib', |
| ], |
| }, |
| 'msvs_disabled_warnings': [ |
| 4201, # nonstandard extension used : nameless struct/union. |
| 4577, # 'noexcept' used with no exception handling mode specified |
| ], |
| 'direct_dependent_settings': { |
| 'msvs_disabled_warnings': [ |
| 4577, # 'noexcept' used with no exception handling mode specified |
| ], |
| }, |
| 'conditions': [ |
| ['target_arch=="ia32"', { |
| 'msvs_settings': { |
| 'MASM': { |
| 'UseSafeExceptionHandlers': 'true', |
| }, |
| }, |
| }], |
| ], |
| }, { # else: OS!="win" |
| 'sources!': [ |
| 'misc/capture_context_win.asm', |
| 'win/safe_terminate_process.asm', |
| ], |
| }], |
| ['OS=="android"', { |
| 'link_settings': { |
| 'libraries': [ |
| '-llog', |
| ], |
| }, |
| }], |
| ['target_os=="linux" or target_os=="android"', { |
| 'sources': [ |
| 'process/process_memory_sanitized.cc', |
| 'process/process_memory_sanitized.h', |
| ], |
| }, { # else: OS!="linux" |
| 'sources!': [ |
| 'misc/capture_context_linux.S', |
| ], |
| }], |
| ['target_os!="linux" and target_os!="android"', { |
| 'sources/': [ |
| ['exclude', '^process/'], |
| ], |
| }], |
| ], |
| 'target_conditions': [ |
| ['OS=="android"', { |
| 'sources/': [ |
| ['include', '^linux/'], |
| ['include', '^misc/capture_context_linux\\.S$'], |
| ['include', '^misc/paths_linux\\.cc$'], |
| ['include', '^misc/time_linux\\.cc$'], |
| ['include', '^posix/process_info_linux\\.cc$'], |
| ['include', '^process/process_memory_linux\\.cc$'], |
| ['include', '^process/process_memory_linux\\.h$'], |
| ], |
| }], |
| ], |
| }, |
| ], |
| } |