Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prototype building hermetically for arm. #4414

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 30 additions & 17 deletions base/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ if (is_apple) {
}

# Determines whether libevent should be dep.
dep_libevent = !is_fuchsia && !is_win && !is_mac && !is_nacl
dep_libevent = !is_fuchsia && !is_win && !is_mac && !is_nacl && !is_starboard

# Determines whether message_pump_libevent should be used.
use_libevent = dep_libevent && !is_ios
Expand Down Expand Up @@ -197,7 +197,7 @@ buildflag_header("ios_cronet_buildflags") {
flags = [ "CRONET_BUILD=$is_cronet_build" ]
}

enable_message_pump_epoll = is_linux || is_chromeos || is_android
enable_message_pump_epoll = is_linux || is_chromeos || is_android || is_starboard
buildflag_header("message_pump_buildflags") {
header = "message_pump_buildflags.h"
header_dir = "base/message_loop"
Expand Down Expand Up @@ -1658,7 +1658,7 @@ component("base") {
]
}

if (is_posix && !is_apple) {
if (is_posix && !is_apple && !is_starboard) {
sources += [
"native_library_posix.cc",
"posix/can_lower_nice_to.cc",
Expand Down Expand Up @@ -2102,7 +2102,7 @@ component("base") {
configs += linux_configs
all_dependent_configs += linux_configs
sources += [ "system/sys_info_linux.cc" ]
if (!is_cronet_build) {
if (!is_cronet_build && !is_starboard) {
# These dependencies are not required on Android, and in the case
# of xdg_mime must be excluded due to licensing restrictions.
sources += [
Expand Down Expand Up @@ -3053,7 +3053,10 @@ source_set("arm_bti_testfunctions") {
}
}

test("base_unittests") {
#hack
#test("base_unittests") {
shared_library("base_unittests") {
testonly=true
sources = [
"allocator/dispatcher/dispatcher_unittest.cc",
"allocator/dispatcher/initializer_unittest.cc",
Expand Down Expand Up @@ -3124,7 +3127,8 @@ test("base_unittests") {
"files/file_path_watcher_unittest.cc",
"files/file_proxy_unittest.cc",
"files/file_unittest.cc",
"files/file_util_unittest.cc",
# hack
#"files/file_util_unittest.cc",
"files/important_file_writer_cleaner_unittest.cc",
"files/important_file_writer_unittest.cc",
"files/memory_mapped_file_unittest.cc",
Expand Down Expand Up @@ -3458,10 +3462,16 @@ test("base_unittests") {
"//third_party/modp_b64",
]

data_deps = [
"//base/test:immediate_crash_test_helper",
"//base/test:test_child_process",
"//base/test:test_shared_library",
data_deps = []
if (!is_starboard) {
data_deps += [
"//base/test:immediate_crash_test_helper",
"//base/test:test_child_process",
"//base/test:test_shared_library",
]
}

data_deps += [
"//testing/buildbot/filters:base_unittests_filters",
]

Expand Down Expand Up @@ -3780,7 +3790,8 @@ test("base_unittests") {
"allocator/partition_allocator/partition_alloc_base/scoped_clear_last_error_pa_unittest.cc",
"allocator/partition_allocator/partition_alloc_base/strings/stringprintf_pa_unittest.cc",
"allocator/partition_allocator/partition_alloc_base/thread_annotations_pa_unittest.cc",
"allocator/partition_allocator/partition_alloc_unittest.cc",
# hack
#"allocator/partition_allocator/partition_alloc_unittest.cc",
"allocator/partition_allocator/partition_lock_unittest.cc",
"allocator/partition_allocator/reverse_bytes_unittest.cc",
"allocator/partition_allocator/thread_cache_unittest.cc",
Expand Down Expand Up @@ -3843,18 +3854,20 @@ test("base_unittests") {
}
}

if (is_fuchsia || is_linux || is_chromeos) {
if ((is_fuchsia || is_linux || is_chromeos) && !is_starboard) {
sources += [
"debug/elf_reader_unittest.cc",
"debug/test_elf_image_builder.cc",
"debug/test_elf_image_builder.h",
]

deps += [ "//base/test:malloc_wrapper" ]
defines += [
# This library is used by ElfReaderTest to test reading elf files.
"MALLOC_WRAPPER_LIB=\"${shlib_prefix}malloc_wrapper${shlib_extension}\"",
]
if(!is_starboard) {
deps += [ "//base/test:malloc_wrapper" ]
defines += [
# This library is used by ElfReaderTest to test reading elf files.
"MALLOC_WRAPPER_LIB=\"${shlib_prefix}malloc_wrapper${shlib_extension}\"",
]
}

if (!is_component_build) {
# Set rpath to find libmalloc_wrapper.so even in a non-component build.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include "build/build_config.h"

#if defined(ARCH_CPU_ARM_FAMILY) && \
(BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
(BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
#include <asm/hwcap.h>
#include <sys/auxv.h>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include "base/allocator/partition_allocator/partition_alloc_check.h"
#include "build/build_config.h"

#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
#include "third_party/lss/linux_syscall_support.h"
#elif BUILDFLAG(IS_MAC)
// TODO(crbug.com/995996): Waiting for this header to appear in the iOS SDK.
Expand Down Expand Up @@ -68,7 +68,7 @@ namespace partition_alloc::internal::base {
// (https://chromium-review.googlesource.com/c/chromium/src/+/1545096) and land
// it or some form of it.
void RandBytes(void* output, size_t output_length) {
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
// We have to call `getrandom` via Linux Syscall Support, rather than through
// the libc wrapper, because we might not have an up-to-date libc (e.g. on
// some bots).
Expand Down
6 changes: 3 additions & 3 deletions base/allocator/partition_allocator/partition_alloc_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ static_assert(sizeof(void*) != 8, "");
// POSIX is not only UNIX, e.g. macOS and other OSes. We do use Linux-specific
// features such as futex(2).
#define PA_CONFIG_HAS_LINUX_KERNEL() \
(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID))
((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)) && !BUILDFLAG(IS_STARBOARD))

// On some platforms, we implement locking by spinning in userspace, then going
// into the kernel only if there is contention. This requires platform support,
Expand All @@ -119,8 +119,8 @@ static_assert(sizeof(void*) != 8, "");
// is available.
//
// Otherwise, a userspace spinlock implementation is used.
#if PA_CONFIG(HAS_LINUX_KERNEL) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || \
BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
#if (PA_CONFIG(HAS_LINUX_KERNEL) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || \
BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)) && !BUILDFLAG(IS_STARBOARD)
#define PA_CONFIG_HAS_FAST_MUTEX() 1
#else
#define PA_CONFIG_HAS_FAST_MUTEX() 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

#if defined(__GNUC__)

#if BUILDFLAG(IS_POSIX)
#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_STARBOARD)
#include <sys/cdefs.h> // for __THROW
#endif

Expand Down
4 changes: 2 additions & 2 deletions base/allocator/partition_allocator/spinning_mutex.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ class PA_LOCKABLE PA_COMPONENT_EXPORT(PARTITION_ALLOC) SpinningMutex {
static constexpr int kSpinCount = 64;

#if PA_CONFIG(HAS_FAST_MUTEX)

#if PA_CONFIG(HAS_LINUX_KERNEL)
void FutexWait();
void FutexWake();
Expand All @@ -112,7 +111,8 @@ class PA_LOCKABLE PA_COMPONENT_EXPORT(PARTITION_ALLOC) SpinningMutex {
std::atomic<bool> lock_{false};

// Spinlock-like, fallback.
PA_ALWAYS_INLINE bool TrySpinLock();
// hack
PA_ALWAYS_INLINE bool TrySpinLock() { return true;}
PA_ALWAYS_INLINE void ReleaseSpinLock();
void LockSlowSpinLock();
#endif // PA_CONFIG(HAS_FAST_MUTEX)
Expand Down
6 changes: 3 additions & 3 deletions base/cpu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include "build/build_config.h"

#if defined(ARCH_CPU_ARM_FAMILY) && \
(BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
((BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD))
#include <asm/hwcap.h>
#include <sys/auxv.h>

Expand Down Expand Up @@ -143,7 +143,7 @@ uint64_t xgetbv(uint32_t xcr) {
#endif // ARCH_CPU_X86_FAMILY

#if defined(ARCH_CPU_ARM_FAMILY) && \
(BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
((BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD))
StringPairs::const_iterator FindFirstProcCpuKey(const StringPairs& pairs,
StringPiece key) {
return ranges::find_if(pairs, [key](const StringPairs::value_type& pair) {
Expand Down Expand Up @@ -340,7 +340,7 @@ void CPU::Initialize(bool require_branding) {
}
}
#elif defined(ARCH_CPU_ARM_FAMILY)
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#if (BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
if (require_branding) {
const ProcCpuInfo& info = ParseProcCpu();
cpu_brand_ = info.brand;
Expand Down
4 changes: 2 additions & 2 deletions base/debug/stack_trace_posix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ void PrintToStderr(const char* output) {
std::ignore = HANDLE_EINTR(write(STDERR_FILENO, output, strlen(output)));
}

#if BUILDFLAG(IS_LINUX)
#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_STARBOARD)
void AlarmSignalHandler(int signal, siginfo_t* info, void* void_context) {
// We have seen rare cases on AMD linux where the default signal handler
// either does not run or a thread (Probably an AMD driver thread) prevents
Expand Down Expand Up @@ -534,7 +534,7 @@ void StackDumpSignalHandler(int signal, siginfo_t* info, void* void_context) {
if (::signal(signal, SIG_DFL) == SIG_ERR) {
_exit(EXIT_FAILURE);
}
#elif !BUILDFLAG(IS_LINUX)
#elif !BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_STARBOARD)
// For all operating systems but Linux we do not reraise the signal that
// brought us here but terminate the process immediately.
// Otherwise various tests break on different operating systems, see
Expand Down
2 changes: 1 addition & 1 deletion base/files/file_util_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
#include <sys/socket.h>
#endif

#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
#include <linux/fs.h>
#endif

Expand Down
4 changes: 2 additions & 2 deletions base/process/memory_linux.cc
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ bool AdjustOOMScore(ProcessId process, int score) {
bool UncheckedMalloc(size_t size, void** result) {
#if BUILDFLAG(USE_ALLOCATOR_SHIM)
*result = allocator_shim::UncheckedAlloc(size);
#elif defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || !defined(LIBC_GLIBC)
#elif defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || !defined(LIBC_GLIBC) || BUILDFLAG(IS_STARBOARD)
*result = malloc(size);
#elif defined(LIBC_GLIBC)
*result = __libc_malloc(size);
Expand All @@ -119,7 +119,7 @@ bool UncheckedMalloc(size_t size, void** result) {
void UncheckedFree(void* ptr) {
#if BUILDFLAG(USE_ALLOCATOR_SHIM)
allocator_shim::UncheckedFree(ptr);
#elif defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || !defined(LIBC_GLIBC)
#elif defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || !defined(LIBC_GLIBC) || BUILDFLAG(IS_STARBOARD)
free(ptr);
#elif defined(LIBC_GLIBC)
__libc_free(ptr);
Expand Down
2 changes: 2 additions & 0 deletions base/process/process_linux.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
#include "base/process/process.h"

#include <errno.h>
#if !BUILDFLAG(IS_STARBOARD)
#include <linux/magic.h>
#endif
#include <sys/resource.h>
#include <sys/vfs.h>

Expand Down
6 changes: 4 additions & 2 deletions base/process/process_metrics_posix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ void IncreaseFdLimitTo(unsigned int max_descriptors) {

#endif // !BUILDFLAG(IS_FUCHSIA)

#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)) && !BUILDFLAG(IS_STARBOARD)
namespace {

size_t GetMallocUsageMallinfo() {
Expand All @@ -131,11 +131,13 @@ size_t ProcessMetrics::GetMallocUsage() {
malloc_statistics_t stats = {0};
malloc_zone_statistics(nullptr, &stats);
return stats.size_in_use;
#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)) && !BUILDFLAG(IS_STARBOARD)
return GetMallocUsageMallinfo();
#elif BUILDFLAG(IS_FUCHSIA)
// TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
return 0;
#elif BUILDFLAG(IS_STARBOARD)
return 0;
#endif
}

Expand Down
2 changes: 1 addition & 1 deletion base/rand_util_posix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#include "base/time/time.h"
#include "build/build_config.h"

#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_STARBOARD)
#include "third_party/lss/linux_syscall_support.h"
#elif BUILDFLAG(IS_MAC)
// TODO(crbug.com/995996): Waiting for this header to appear in the iOS SDK.
Expand Down
6 changes: 3 additions & 3 deletions base/system/sys_info_posix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include <sys/statvfs.h>
#endif

#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
#include <linux/magic.h>
#include <sys/vfs.h>
#endif
Expand All @@ -60,7 +60,7 @@ base::LazyInstance<
base::internal::LazySysInfoValue<uint64_t, AmountOfVirtualMemory>>::Leaky
g_lazy_virtual_memory = LAZY_INSTANCE_INITIALIZER;

#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
bool IsStatsZeroIfUnlimited(const base::FilePath& path) {
struct statfs stats;

Expand Down Expand Up @@ -90,7 +90,7 @@ bool GetDiskSpaceInfo(const base::FilePath& path,
if (HANDLE_EINTR(statvfs(path.value().c_str(), &stats)) != 0)
return false;

#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_STARBOARD)
const bool zero_size_means_unlimited =
stats.f_blocks == 0 && IsStatsZeroIfUnlimited(path);
#else
Expand Down
46 changes: 24 additions & 22 deletions base/third_party/xdg_mime/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,29 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

static_library("xdg_mime") {
visibility = [ "//base/*" ]
sources = [
"xdgmime.c",
"xdgmime.h",
"xdgmimealias.c",
"xdgmimealias.h",
"xdgmimecache.c",
"xdgmimecache.h",
"xdgmimeglob.c",
"xdgmimeglob.h",
"xdgmimeicon.c",
"xdgmimeicon.h",
"xdgmimeint.c",
"xdgmimeint.h",
"xdgmimemagic.c",
"xdgmimemagic.h",
"xdgmimeparent.c",
"xdgmimeparent.h",
]
if (!is_starboard) {
static_library("xdg_mime") {
visibility = [ "//base/*" ]
sources = [
"xdgmime.c",
"xdgmime.h",
"xdgmimealias.c",
"xdgmimealias.h",
"xdgmimecache.c",
"xdgmimecache.h",
"xdgmimeglob.c",
"xdgmimeglob.h",
"xdgmimeicon.c",
"xdgmimeicon.h",
"xdgmimeint.c",
"xdgmimeint.h",
"xdgmimemagic.c",
"xdgmimemagic.h",
"xdgmimeparent.c",
"xdgmimeparent.h",
]

configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
}
}
Loading
Loading