mirror of
https://github.com/chromium/crashpad.git
synced 2025-01-14 01:08:01 +08:00
b9c828ea83
On Android, the compat library built compat/android/sys/mman.cc, which provides a fallback for mmap, and compat/linux/sys/mman.cc, which provides a fallback for memfd_create. This can result in two object files colliding in the library, which is flagged as a “gn analyze” error: > ERROR at //crashpad/compat/BUILD.gn:62:5: Duplicate object file > static_library(target_name) { > ^---------------------------- > The target //crashpad/compat:compat > generates two object files with the same name: > obj/crashpad/compat/compat/mman.o > > It could be you accidentally have a file listed twice in the > sources. Or, depending on how your toolchain maps sources to > object files, two source files with the same name in different > directories could map to the same object file. > > In the latter case, either rename one of the files or move one of > the sources to a separate source_set to avoid them both being in > the same target. The files are renamed to avoid this collision. The associated headers cannot be renamed because they need to shadow the SDK’s copies. There is no “gn analyze” conflict reported for headers with the same name. Change-Id: Ia49ef5ff8375673395597e96555f72f7c69e3564 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2285965 Commit-Queue: Mark Mentovai <mark@chromium.org> Reviewed-by: Robert Sesek <rsesek@chromium.org>
175 lines
4.0 KiB
Plaintext
175 lines
4.0 KiB
Plaintext
# Copyright 2015 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.
|
||
|
||
import("../build/crashpad_buildconfig.gni")
|
||
|
||
if (crashpad_is_in_chromium) {
|
||
# Prevent Chromium source assignment filters from being inherited.
|
||
set_sources_assignment_filter([])
|
||
}
|
||
|
||
config("compat_config") {
|
||
include_dirs = []
|
||
|
||
if (crashpad_is_mac || crashpad_is_ios) {
|
||
include_dirs += [ "mac" ]
|
||
} else {
|
||
include_dirs += [ "non_mac" ]
|
||
}
|
||
|
||
if (crashpad_is_ios) {
|
||
include_dirs += [ "ios" ]
|
||
}
|
||
|
||
if (crashpad_is_linux || crashpad_is_android) {
|
||
include_dirs += [ "linux" ]
|
||
}
|
||
|
||
if (crashpad_is_android) {
|
||
include_dirs += [ "android" ]
|
||
}
|
||
|
||
if (crashpad_is_win) {
|
||
include_dirs += [ "win" ]
|
||
} else {
|
||
include_dirs += [ "non_win" ]
|
||
}
|
||
|
||
if (!crashpad_is_linux && !crashpad_is_android && !crashpad_is_fuchsia) {
|
||
include_dirs += [ "non_elf" ]
|
||
}
|
||
}
|
||
|
||
template("compat_target") {
|
||
if (crashpad_is_mac || crashpad_is_ios) {
|
||
# There are no sources to compile, which doesn’t mix will with a
|
||
# static_library.
|
||
group(target_name) {
|
||
forward_variables_from(invoker, "*")
|
||
}
|
||
} else {
|
||
static_library(target_name) {
|
||
forward_variables_from(invoker, "*")
|
||
}
|
||
}
|
||
}
|
||
|
||
compat_target("compat") {
|
||
sources = []
|
||
|
||
if (crashpad_is_mac || crashpad_is_ios) {
|
||
sources += [
|
||
"mac/AvailabilityMacros.h",
|
||
"mac/kern/exc_resource.h",
|
||
"mac/mach-o/loader.h",
|
||
"mac/mach/i386/thread_state.h",
|
||
"mac/mach/mach.h",
|
||
"mac/sys/resource.h",
|
||
]
|
||
} else {
|
||
sources += [
|
||
"non_mac/mach-o/loader.h",
|
||
"non_mac/mach/mach.h",
|
||
"non_mac/mach/machine.h",
|
||
"non_mac/mach/vm_prot.h",
|
||
]
|
||
}
|
||
|
||
if (crashpad_is_ios) {
|
||
sources += [
|
||
"ios/mach/exc.defs",
|
||
"ios/mach/mach_exc.defs",
|
||
"ios/mach/mach_types.defs",
|
||
"ios/mach/machine/machine_types.defs",
|
||
"ios/mach/std_types.defs",
|
||
]
|
||
}
|
||
|
||
if (crashpad_is_linux || crashpad_is_android) {
|
||
sources += [
|
||
"linux/signal.h",
|
||
"linux/sys/mman.h",
|
||
"linux/sys/mman_memfd_create.cc",
|
||
"linux/sys/ptrace.h",
|
||
"linux/sys/user.h",
|
||
]
|
||
}
|
||
|
||
if (crashpad_is_android) {
|
||
sources += [
|
||
"android/android/api-level.cc",
|
||
"android/android/api-level.h",
|
||
"android/dlfcn_internal.cc",
|
||
"android/dlfcn_internal.h",
|
||
"android/elf.h",
|
||
"android/linux/elf.h",
|
||
"android/linux/prctl.h",
|
||
"android/linux/ptrace.h",
|
||
"android/sched.h",
|
||
"android/sys/epoll.cc",
|
||
"android/sys/epoll.h",
|
||
"android/sys/mman.h",
|
||
"android/sys/mman_mmap.cc",
|
||
"android/sys/syscall.h",
|
||
"android/sys/user.h",
|
||
]
|
||
}
|
||
|
||
if (crashpad_is_win) {
|
||
sources += [
|
||
"win/getopt.h",
|
||
"win/strings.cc",
|
||
"win/strings.h",
|
||
"win/sys/types.h",
|
||
"win/time.cc",
|
||
"win/time.h",
|
||
"win/winbase.h",
|
||
"win/winnt.h",
|
||
"win/winternl.h",
|
||
]
|
||
} else {
|
||
sources += [
|
||
"non_win/dbghelp.h",
|
||
"non_win/minwinbase.h",
|
||
"non_win/timezoneapi.h",
|
||
"non_win/verrsrc.h",
|
||
"non_win/windows.h",
|
||
"non_win/winnt.h",
|
||
]
|
||
}
|
||
|
||
if (!crashpad_is_linux && !crashpad_is_android && !crashpad_is_fuchsia) {
|
||
sources += [ "non_elf/elf.h" ]
|
||
}
|
||
|
||
public_configs = [
|
||
":compat_config",
|
||
"..:crashpad_config",
|
||
]
|
||
|
||
deps = []
|
||
|
||
if (!crashpad_is_mac) {
|
||
deps += [ "../third_party/xnu" ]
|
||
}
|
||
|
||
if (crashpad_is_win) {
|
||
deps += [ "../third_party/getopt" ]
|
||
}
|
||
|
||
if (!crashpad_is_linux && !crashpad_is_android && !crashpad_is_fuchsia) {
|
||
deps += [ "../third_party/glibc" ]
|
||
}
|
||
}
|