Remove most of build/, move generation to build/gen.py Build now with `./build/gen.py && ninja -C out`. README.md updated. Change-Id: I00be44215e4a0e203a2e1ff38867e17535701cad Reviewed-on: https://gn-review.googlesource.com/1240 Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/README.md b/README.md index 331f0d3..c7e1ad3 100644 --- a/README.md +++ b/README.md
@@ -1,3 +1,11 @@ # GN -GN is a meta-build system that generates [Ninja](https://ninja-build.org). +GN is a meta-build system that generates build files for +[Ninja](https://ninja-build.org). + +Get started with: + + git clone https://gn.googlesource.com/gn + cd gn + build/gen.py + ninja -C out
diff --git a/base/allocator/allocator_check.cc b/base/allocator/allocator_check.cc index f5e4edc..57c1eb0 100644 --- a/base/allocator/allocator_check.cc +++ b/base/allocator/allocator_check.cc
@@ -4,7 +4,7 @@ #include "base/allocator/allocator_check.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/allocator/winheap_stubs_win.h"
diff --git a/base/allocator/allocator_extension.h b/base/allocator/allocator_extension.h index 9f2775a..00d88cd 100644 --- a/base/allocator/allocator_extension.h +++ b/base/allocator/allocator_extension.h
@@ -8,7 +8,7 @@ #include <stddef.h> // for size_t #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace allocator {
diff --git a/base/allocator/allocator_interception_mac.mm b/base/allocator/allocator_interception_mac.mm index dce7eda..17cf3f0 100644 --- a/base/allocator/allocator_interception_mac.mm +++ b/base/allocator/allocator_interception_mac.mm
@@ -35,7 +35,7 @@ #include "base/process/memory.h" #include "base/scoped_clear_errno.h" #include "base/threading/sequenced_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" #include "third_party/apple_apsl/CFBase.h" namespace base {
diff --git a/base/allocator/allocator_shim.cc b/base/allocator/allocator_shim.cc index e919f09..d0205ca 100644 --- a/base/allocator/allocator_shim.cc +++ b/base/allocator/allocator_shim.cc
@@ -13,7 +13,7 @@ #include "base/macros.h" #include "base/process/process_metrics.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_WIN) #include <unistd.h>
diff --git a/base/allocator/allocator_shim.h b/base/allocator/allocator_shim.h index 527e414..6256f30 100644 --- a/base/allocator/allocator_shim.h +++ b/base/allocator/allocator_shim.h
@@ -8,7 +8,7 @@ #include <stddef.h> #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace allocator {
diff --git a/base/allocator/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc b/base/allocator/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc index c351a7c..89cabc4 100644 --- a/base/allocator/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc +++ b/base/allocator/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc
@@ -5,7 +5,7 @@ #include <malloc.h> #include "base/allocator/allocator_shim.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) && __ANDROID_API__ < 17 #include <dlfcn.h>
diff --git a/base/allocator/allocator_shim_unittest.cc b/base/allocator/allocator_shim_unittest.cc index 73ff031..0a18eb2 100644 --- a/base/allocator/allocator_shim_unittest.cc +++ b/base/allocator/allocator_shim_unittest.cc
@@ -17,7 +17,7 @@ #include "base/synchronization/waitable_event.h" #include "base/threading/platform_thread.h" #include "base/threading/thread_local.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/allocator/partition_allocator/address_space_randomization.cc b/base/allocator/partition_allocator/address_space_randomization.cc index a7e17c7..b25fbdc 100644 --- a/base/allocator/partition_allocator/address_space_randomization.cc +++ b/base/allocator/partition_allocator/address_space_randomization.cc
@@ -8,7 +8,7 @@ #include "base/allocator/partition_allocator/spin_lock.h" #include "base/lazy_instance.h" #include "base/rand_util.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h> // Must be in front of other Windows header files.
diff --git a/base/allocator/partition_allocator/address_space_randomization.h b/base/allocator/partition_allocator/address_space_randomization.h index 3f65a87..ab40e2b 100644 --- a/base/allocator/partition_allocator/address_space_randomization.h +++ b/base/allocator/partition_allocator/address_space_randomization.h
@@ -7,7 +7,7 @@ #include "base/allocator/partition_allocator/page_allocator.h" #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/allocator/partition_allocator/address_space_randomization_unittest.cc b/base/allocator/partition_allocator/address_space_randomization_unittest.cc index 40f494d..a9fe1ce 100644 --- a/base/allocator/partition_allocator/address_space_randomization_unittest.cc +++ b/base/allocator/partition_allocator/address_space_randomization_unittest.cc
@@ -8,7 +8,7 @@ #include "base/bit_cast.h" #include "base/bits.h" #include "base/sys_info.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/allocator/partition_allocator/page_allocator.cc b/base/allocator/partition_allocator/page_allocator.cc index 328384e..72e34df 100644 --- a/base/allocator/partition_allocator/page_allocator.cc +++ b/base/allocator/partition_allocator/page_allocator.cc
@@ -14,7 +14,7 @@ #include "base/lazy_instance.h" #include "base/logging.h" #include "base/numerics/checked_math.h" -#include "build/build_config.h" +#include "build_config.h" #include <atomic>
diff --git a/base/allocator/partition_allocator/page_allocator.h b/base/allocator/partition_allocator/page_allocator.h index 4973348..0db2fde 100644 --- a/base/allocator/partition_allocator/page_allocator.h +++ b/base/allocator/partition_allocator/page_allocator.h
@@ -12,7 +12,7 @@ #include "base/allocator/partition_allocator/page_allocator_constants.h" #include "base/base_export.h" #include "base/compiler_specific.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/allocator/partition_allocator/page_allocator_constants.h b/base/allocator/partition_allocator/page_allocator_constants.h index 308d099..a2a2003 100644 --- a/base/allocator/partition_allocator/page_allocator_constants.h +++ b/base/allocator/partition_allocator/page_allocator_constants.h
@@ -7,7 +7,7 @@ #include <stddef.h> -#include "build/build_config.h" +#include "build_config.h" namespace base { #if defined(OS_WIN)
diff --git a/base/allocator/partition_allocator/page_allocator_internals_posix.h b/base/allocator/partition_allocator/page_allocator_internals_posix.h index a579266..baadbdc 100644 --- a/base/allocator/partition_allocator/page_allocator_internals_posix.h +++ b/base/allocator/partition_allocator/page_allocator_internals_posix.h
@@ -15,7 +15,7 @@ #include <sys/resource.h> #endif -#include "build/build_config.h" +#include "build_config.h" #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON
diff --git a/base/allocator/partition_allocator/page_allocator_unittest.cc b/base/allocator/partition_allocator/page_allocator_unittest.cc index 22c6455..ad14c06 100644 --- a/base/allocator/partition_allocator/page_allocator_unittest.cc +++ b/base/allocator/partition_allocator/page_allocator_unittest.cc
@@ -8,7 +8,7 @@ #include <string.h> #include "base/allocator/partition_allocator/address_space_randomization.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX) && !defined(OS_FUCHSIA)
diff --git a/base/allocator/partition_allocator/partition_alloc.h b/base/allocator/partition_allocator/partition_alloc.h index 79d0905..c69fd01 100644 --- a/base/allocator/partition_allocator/partition_alloc.h +++ b/base/allocator/partition_allocator/partition_alloc.h
@@ -76,7 +76,7 @@ #include "base/logging.h" #include "base/macros.h" #include "base/sys_byteorder.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) #include <stdlib.h>
diff --git a/base/allocator/partition_allocator/partition_alloc_unittest.cc b/base/allocator/partition_allocator/partition_alloc_unittest.cc index 4bf6b26..994f339 100644 --- a/base/allocator/partition_allocator/partition_alloc_unittest.cc +++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc
@@ -14,7 +14,7 @@ #include "base/bit_cast.h" #include "base/bits.h" #include "base/sys_info.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX)
diff --git a/base/allocator/partition_allocator/partition_bucket.cc b/base/allocator/partition_allocator/partition_bucket.cc index fcea523..f38b2ea 100644 --- a/base/allocator/partition_allocator/partition_bucket.cc +++ b/base/allocator/partition_allocator/partition_bucket.cc
@@ -10,7 +10,7 @@ #include "base/allocator/partition_allocator/partition_oom.h" #include "base/allocator/partition_allocator/partition_page.h" #include "base/allocator/partition_allocator/partition_root_base.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/allocator/partition_allocator/partition_freelist_entry.h b/base/allocator/partition_allocator/partition_freelist_entry.h index 7e3282e..c9fe004 100644 --- a/base/allocator/partition_allocator/partition_freelist_entry.h +++ b/base/allocator/partition_allocator/partition_freelist_entry.h
@@ -10,7 +10,7 @@ #include "base/allocator/partition_allocator/partition_alloc_constants.h" #include "base/compiler_specific.h" #include "base/sys_byteorder.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/allocator/partition_allocator/partition_oom.cc b/base/allocator/partition_allocator/partition_oom.cc index 5e1cf79..6476761 100644 --- a/base/allocator/partition_allocator/partition_oom.cc +++ b/base/allocator/partition_allocator/partition_oom.cc
@@ -5,7 +5,7 @@ #include "base/allocator/partition_allocator/partition_oom.h" #include "base/allocator/partition_allocator/oom.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/allocator/partition_allocator/partition_oom.h b/base/allocator/partition_allocator/partition_oom.h index da8fc15..242da38 100644 --- a/base/allocator/partition_allocator/partition_oom.h +++ b/base/allocator/partition_allocator/partition_oom.h
@@ -9,7 +9,7 @@ #define BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_OOM_H_ #include "base/compiler_specific.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/allocator/partition_allocator/partition_root_base.cc b/base/allocator/partition_allocator/partition_root_base.cc index 91b998f..db51d02 100644 --- a/base/allocator/partition_allocator/partition_root_base.cc +++ b/base/allocator/partition_allocator/partition_root_base.cc
@@ -7,7 +7,7 @@ #include "base/allocator/partition_allocator/oom.h" #include "base/allocator/partition_allocator/partition_oom.h" #include "base/allocator/partition_allocator/partition_page.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/allocator/partition_allocator/spin_lock.cc b/base/allocator/partition_allocator/spin_lock.cc index 46f4965..0250c58 100644 --- a/base/allocator/partition_allocator/spin_lock.cc +++ b/base/allocator/partition_allocator/spin_lock.cc
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "base/allocator/partition_allocator/spin_lock.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/allocator/tcmalloc_unittest.cc b/base/allocator/tcmalloc_unittest.cc index 78c4f84..4b5b664 100644 --- a/base/allocator/tcmalloc_unittest.cc +++ b/base/allocator/tcmalloc_unittest.cc
@@ -9,7 +9,7 @@ #include "base/logging.h" #include "base/process/process_metrics.h" #include "base/sys_info.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(USE_TCMALLOC)
diff --git a/base/atomicops.h b/base/atomicops.h index 4d8510e..ccf05f9 100644 --- a/base/atomicops.h +++ b/base/atomicops.h
@@ -37,7 +37,7 @@ #include <cstddef> #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) && defined(ARCH_CPU_64_BITS) // windows.h #defines this (only on x64). This causes problems because the
diff --git a/base/atomicops_internals_atomicword_compat.h b/base/atomicops_internals_atomicword_compat.h index 8b000d2..d985d10 100644 --- a/base/atomicops_internals_atomicword_compat.h +++ b/base/atomicops_internals_atomicword_compat.h
@@ -9,7 +9,7 @@ #include <stdint.h> -#include "build/build_config.h" +#include "build_config.h" // AtomicWord is a synonym for intptr_t, and Atomic32 is a synonym for int32_t, // which in turn means int. On some LP32 platforms, intptr_t is an int, but
diff --git a/base/atomicops_internals_portable.h b/base/atomicops_internals_portable.h index ee034de..b75d080 100644 --- a/base/atomicops_internals_portable.h +++ b/base/atomicops_internals_portable.h
@@ -34,7 +34,7 @@ #include <atomic> -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace subtle {
diff --git a/base/atomicops_internals_x86_msvc.h b/base/atomicops_internals_x86_msvc.h index ee9043e..38001a8 100644 --- a/base/atomicops_internals_x86_msvc.h +++ b/base/atomicops_internals_x86_msvc.h
@@ -12,7 +12,7 @@ #include <intrin.h> #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(ARCH_CPU_64_BITS) // windows.h #defines this (only on x64). This causes problems because the
diff --git a/base/base_paths.h b/base/base_paths.h index 2a163f4..b67e3db 100644 --- a/base/base_paths.h +++ b/base/base_paths.h
@@ -8,7 +8,7 @@ // This file declares path keys for the base module. These can be used with // the PathService to access various special directories and files. -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/base_paths_win.h"
diff --git a/base/base_paths_mac.mm b/base/base_paths_mac.mm index 46bbd16..6eb6e07 100644 --- a/base/base_paths_mac.mm +++ b/base/base_paths_mac.mm
@@ -20,7 +20,7 @@ #include "base/path_service.h" #include "base/strings/string_util.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/base/base_paths_posix.cc b/base/base_paths_posix.cc index 00a1569..02ae498 100644 --- a/base/base_paths_posix.cc +++ b/base/base_paths_posix.cc
@@ -22,7 +22,7 @@ #include "base/nix/xdg_util.h" #include "base/path_service.h" #include "base/process/process_metrics.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_FREEBSD) #include <sys/param.h>
diff --git a/base/base_switches.cc b/base/base_switches.cc index 7ce7380..49eb975 100644 --- a/base/base_switches.cc +++ b/base/base_switches.cc
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "base/base_switches.h" -#include "build/build_config.h" +#include "build_config.h" namespace switches {
diff --git a/base/base_switches.h b/base/base_switches.h index 3425e6f..ada2727 100644 --- a/base/base_switches.h +++ b/base/base_switches.h
@@ -7,7 +7,7 @@ #ifndef BASE_BASE_SWITCHES_H_ #define BASE_BASE_SWITCHES_H_ -#include "build/build_config.h" +#include "build_config.h" namespace switches {
diff --git a/base/bind_helpers.h b/base/bind_helpers.h index 15961e6..f4bbd80 100644 --- a/base/bind_helpers.h +++ b/base/bind_helpers.h
@@ -13,7 +13,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/memory/weak_ptr.h" -#include "build/build_config.h" +#include "build_config.h" // This defines a set of simple functions and utilities that people want when // using Callback<> and Bind().
diff --git a/base/bind_internal.h b/base/bind_internal.h index d748f89..ffe9ed7 100644 --- a/base/bind_internal.h +++ b/base/bind_internal.h
@@ -14,7 +14,7 @@ #include "base/memory/raw_scoped_refptr_mismatch_checker.h" #include "base/memory/weak_ptr.h" #include "base/template_util.h" -#include "build/build_config.h" +#include "build_config.h" // See base/callback.h for user documentation. //
diff --git a/base/bind_unittest.cc b/base/bind_unittest.cc index f1d19a1..5162a08 100644 --- a/base/bind_unittest.cc +++ b/base/bind_unittest.cc
@@ -15,7 +15,7 @@ #include "base/memory/weak_ptr.h" #include "base/test/bind_test_util.h" #include "base/test/gtest_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/bit_cast.h b/base/bit_cast.h index 90dd925..213dcc5 100644 --- a/base/bit_cast.h +++ b/base/bit_cast.h
@@ -10,7 +10,7 @@ #include "base/compiler_specific.h" #include "base/template_util.h" -#include "build/build_config.h" +#include "build_config.h" // bit_cast<Dest,Source> is a template function that implements the equivalent // of "*reinterpret_cast<Dest*>(&source)". We need this in very low-level
diff --git a/base/bits.h b/base/bits.h index a1c8b5d..b02f303 100644 --- a/base/bits.h +++ b/base/bits.h
@@ -12,7 +12,7 @@ #include "base/compiler_specific.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(COMPILER_MSVC) #include <intrin.h>
diff --git a/base/bits_unittest.cc b/base/bits_unittest.cc index 98b9c08..ceaad3f 100644 --- a/base/bits_unittest.cc +++ b/base/bits_unittest.cc
@@ -5,7 +5,7 @@ // This file contains the unit tests for the bit utilities. #include "base/bits.h" -#include "build/build_config.h" +#include "build_config.h" #include <stddef.h>
diff --git a/base/command_line.cc b/base/command_line.cc index aec89f5..134ffb8 100644 --- a/base/command_line.cc +++ b/base/command_line.cc
@@ -15,7 +15,7 @@ #include "base/strings/string_tokenizer.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/command_line.h b/base/command_line.h index 25fd7d9..f82ebfd 100644 --- a/base/command_line.h +++ b/base/command_line.h
@@ -23,7 +23,7 @@ #include "base/base_export.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/command_line_unittest.cc b/base/command_line_unittest.cc index 3718cd9..2396830 100644 --- a/base/command_line_unittest.cc +++ b/base/command_line_unittest.cc
@@ -11,7 +11,7 @@ #include "base/files/file_path.h" #include "base/macros.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/compiler_specific.h b/base/compiler_specific.h index 88c290f..c27c7bc 100644 --- a/base/compiler_specific.h +++ b/base/compiler_specific.h
@@ -5,7 +5,7 @@ #ifndef BASE_COMPILER_SPECIFIC_H_ #define BASE_COMPILER_SPECIFIC_H_ -#include "build/build_config.h" +#include "build_config.h" #if defined(COMPILER_MSVC)
diff --git a/base/component_export.h b/base/component_export.h index b5cb364..9e55664 100644 --- a/base/component_export.h +++ b/base/component_export.h
@@ -5,7 +5,7 @@ #ifndef BASE_COMPONENT_EXPORT_H_ #define BASE_COMPONENT_EXPORT_H_ -#include "build/build_config.h" +#include "build_config.h" // Used to annotate symbols which are exported by the component named // |component|. Note that this only does the right thing if the corresponding
diff --git a/base/containers/stack_container.h b/base/containers/stack_container.h index c775744..7d84d07 100644 --- a/base/containers/stack_container.h +++ b/base/containers/stack_container.h
@@ -10,7 +10,7 @@ #include <vector> #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/containers/stack_container_unittest.cc b/base/containers/stack_container_unittest.cc index b6bb9b6..8c039ad 100644 --- a/base/containers/stack_container_unittest.cc +++ b/base/containers/stack_container_unittest.cc
@@ -9,7 +9,7 @@ #include <algorithm> #include "base/memory/ref_counted.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/cpu.cc b/base/cpu.cc index cd9066f..68a6bbc 100644 --- a/base/cpu.cc +++ b/base/cpu.cc
@@ -13,7 +13,7 @@ #include <utility> #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX)) #include "base/files/file_util.h"
diff --git a/base/cpu_unittest.cc b/base/cpu_unittest.cc index 8a68ea0..bfdb1cd 100644 --- a/base/cpu_unittest.cc +++ b/base/cpu_unittest.cc
@@ -4,7 +4,7 @@ #include "base/cpu.h" #include "base/stl_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if _MSC_VER >= 1700
diff --git a/base/critical_closure.h b/base/critical_closure.h index 94c618d..d593537 100644 --- a/base/critical_closure.h +++ b/base/critical_closure.h
@@ -9,7 +9,7 @@ #include "base/callback.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_IOS) #include "base/bind.h"
diff --git a/base/debug/activity_tracker.cc b/base/debug/activity_tracker.cc index 362013e..bb1349c 100644 --- a/base/debug/activity_tracker.cc +++ b/base/debug/activity_tracker.cc
@@ -25,7 +25,7 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace debug {
diff --git a/base/debug/alias.cc b/base/debug/alias.cc index 6b0caaa..d93d495 100644 --- a/base/debug/alias.cc +++ b/base/debug/alias.cc
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "base/debug/alias.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace debug {
diff --git a/base/debug/asan_invalid_access.cc b/base/debug/asan_invalid_access.cc index 07c19db..d5d43d5 100644 --- a/base/debug/asan_invalid_access.cc +++ b/base/debug/asan_invalid_access.cc
@@ -10,7 +10,7 @@ #include "base/debug/alias.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/debug/asan_invalid_access.h b/base/debug/asan_invalid_access.h index dc9a7ee..f8b078a 100644 --- a/base/debug/asan_invalid_access.h +++ b/base/debug/asan_invalid_access.h
@@ -10,7 +10,7 @@ #include "base/base_export.h" #include "base/compiler_specific.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace debug {
diff --git a/base/debug/close_handle_hook_win.cc b/base/debug/close_handle_hook_win.cc index 1f1f432..35afdf5 100644 --- a/base/debug/close_handle_hook_win.cc +++ b/base/debug/close_handle_hook_win.cc
@@ -16,7 +16,7 @@ #include "base/win/iat_patch_function.h" #include "base/win/pe_image.h" #include "base/win/scoped_handle.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/base/debug/debugger.cc b/base/debug/debugger.cc index 1ccee1c..025bc54 100644 --- a/base/debug/debugger.cc +++ b/base/debug/debugger.cc
@@ -5,7 +5,7 @@ #include "base/debug/debugger.h" #include "base/logging.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace debug {
diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc index b62bf01..63d9d52 100644 --- a/base/debug/debugger_posix.cc +++ b/base/debug/debugger_posix.cc
@@ -20,7 +20,7 @@ #include "base/macros.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(__GLIBCXX__) #include <cxxabi.h>
diff --git a/base/debug/debugger_unittest.cc b/base/debug/debugger_unittest.cc index 0a5a039..23ea83d 100644 --- a/base/debug/debugger_unittest.cc +++ b/base/debug/debugger_unittest.cc
@@ -4,7 +4,7 @@ #include "base/debug/debugger.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace {
diff --git a/base/debug/dump_without_crashing.h b/base/debug/dump_without_crashing.h index 913f6c4..c36973f 100644 --- a/base/debug/dump_without_crashing.h +++ b/base/debug/dump_without_crashing.h
@@ -7,7 +7,7 @@ #include "base/base_export.h" #include "base/compiler_specific.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/debug/elf_reader_linux_unittest.cc b/base/debug/elf_reader_linux_unittest.cc index 5510418..88ed502 100644 --- a/base/debug/elf_reader_linux_unittest.cc +++ b/base/debug/elf_reader_linux_unittest.cc
@@ -8,7 +8,7 @@ #include "base/files/memory_mapped_file.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" extern char __executable_start;
diff --git a/base/debug/leak_annotations.h b/base/debug/leak_annotations.h index dc50246..f1a2d07 100644 --- a/base/debug/leak_annotations.h +++ b/base/debug/leak_annotations.h
@@ -6,7 +6,7 @@ #define BASE_DEBUG_LEAK_ANNOTATIONS_H_ #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" // This file defines macros which can be used to annotate intentional memory // leaks. Support for annotations is implemented in LeakSanitizer. Annotated
diff --git a/base/debug/leak_tracker.h b/base/debug/leak_tracker.h index 7ddd5b6..43f2102 100644 --- a/base/debug/leak_tracker.h +++ b/base/debug/leak_tracker.h
@@ -7,7 +7,7 @@ #include <stddef.h> -#include "build/build_config.h" +#include "build_config.h" // Only enable leak tracking in non-uClibc debug builds. #if !defined(NDEBUG) && !defined(__UCLIBC__)
diff --git a/base/debug/proc_maps_linux.cc b/base/debug/proc_maps_linux.cc index 0bb44b4..1a9476f 100644 --- a/base/debug/proc_maps_linux.cc +++ b/base/debug/proc_maps_linux.cc
@@ -10,7 +10,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_file.h" #include "base/strings/string_split.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_LINUX) || defined(OS_ANDROID) #include <inttypes.h>
diff --git a/base/debug/proc_maps_linux_unittest.cc b/base/debug/proc_maps_linux_unittest.cc index 7abf152..d291507 100644 --- a/base/debug/proc_maps_linux_unittest.cc +++ b/base/debug/proc_maps_linux_unittest.cc
@@ -11,7 +11,7 @@ #include "base/path_service.h" #include "base/strings/stringprintf.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/debug/profiler.cc b/base/debug/profiler.cc index 91619a1..82e5229 100644 --- a/base/debug/profiler.cc +++ b/base/debug/profiler.cc
@@ -9,7 +9,7 @@ #include "base/process/process_handle.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/current_module.h"
diff --git a/base/debug/stack_trace.h b/base/debug/stack_trace.h index 322e77b..33023fe 100644 --- a/base/debug/stack_trace.h +++ b/base/debug/stack_trace.h
@@ -12,7 +12,7 @@ #include "base/base_export.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) #include <unistd.h>
diff --git a/base/debug/stack_trace_posix.cc b/base/debug/stack_trace_posix.cc index b954b97..c67fd62 100644 --- a/base/debug/stack_trace_posix.cc +++ b/base/debug/stack_trace_posix.cc
@@ -48,7 +48,7 @@ #include "base/numerics/safe_conversions.h" #include "base/posix/eintr_wrapper.h" #include "base/strings/string_number_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(USE_SYMBOLIZE) #include "base/third_party/symbolize/symbolize.h"
diff --git a/base/debug/stack_trace_unittest.cc b/base/debug/stack_trace_unittest.cc index 1fbeea2..6d37c40 100644 --- a/base/debug/stack_trace_unittest.cc +++ b/base/debug/stack_trace_unittest.cc
@@ -13,7 +13,7 @@ #include "base/process/kill.h" #include "base/process/process_handle.h" #include "base/test/test_timeouts.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h"
diff --git a/base/debug/thread_heap_usage_tracker.cc b/base/debug/thread_heap_usage_tracker.cc index f9852db..7dda2f7 100644 --- a/base/debug/thread_heap_usage_tracker.cc +++ b/base/debug/thread_heap_usage_tracker.cc
@@ -14,7 +14,7 @@ #include "base/logging.h" #include "base/no_destructor.h" #include "base/threading/thread_local_storage.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) || defined(OS_IOS) #include <malloc/malloc.h>
diff --git a/base/environment.cc b/base/environment.cc index cdea53c..fed01d0 100644 --- a/base/environment.cc +++ b/base/environment.cc
@@ -12,7 +12,7 @@ #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/environment.h b/base/environment.h index e842ab0..5d05396 100644 --- a/base/environment.h +++ b/base/environment.h
@@ -12,7 +12,7 @@ #include "base/base_export.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/environment_unittest.cc b/base/environment_unittest.cc index 23aec51..79800ad 100644 --- a/base/environment_unittest.cc +++ b/base/environment_unittest.cc
@@ -6,7 +6,7 @@ #include <memory> -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h"
diff --git a/base/file_version_info.h b/base/file_version_info.h index 3b9457c..3240bbe 100644 --- a/base/file_version_info.h +++ b/base/file_version_info.h
@@ -7,7 +7,7 @@ #include <string> -#include "build/build_config.h" +#include "build_config.h" #include "base/base_export.h" #include "base/strings/string16.h"
diff --git a/base/file_version_info_mac.mm b/base/file_version_info_mac.mm index ce42924..ec0743c 100644 --- a/base/file_version_info_mac.mm +++ b/base/file_version_info_mac.mm
@@ -11,7 +11,7 @@ #include "base/mac/bundle_locations.h" #include "base/mac/foundation_util.h" #include "base/strings/sys_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" FileVersionInfoMac::FileVersionInfoMac(NSBundle *bundle) : bundle_([bundle retain]) {
diff --git a/base/files/dir_reader_posix.h b/base/files/dir_reader_posix.h index 15fc744..e238d6b 100644 --- a/base/files/dir_reader_posix.h +++ b/base/files/dir_reader_posix.h
@@ -5,7 +5,7 @@ #ifndef BASE_FILES_DIR_READER_POSIX_H_ #define BASE_FILES_DIR_READER_POSIX_H_ -#include "build/build_config.h" +#include "build_config.h" // This header provides a class, DirReaderPosix, which allows one to open and // read from directories without allocating memory. For the interface, see
diff --git a/base/files/dir_reader_posix_unittest.cc b/base/files/dir_reader_posix_unittest.cc index 1954cb2..f82619b 100644 --- a/base/files/dir_reader_posix_unittest.cc +++ b/base/files/dir_reader_posix_unittest.cc
@@ -13,7 +13,7 @@ #include "base/files/scoped_temp_dir.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_ANDROID)
diff --git a/base/files/file.cc b/base/files/file.cc index 1a4ee37..92ff6dd 100644 --- a/base/files/file.cc +++ b/base/files/file.cc
@@ -7,7 +7,7 @@ #include "base/files/file_tracing.h" #include "base/metrics/histogram.h" #include "base/timer/elapsed_timer.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) || defined(OS_FUCHSIA) #include <errno.h>
diff --git a/base/files/file.h b/base/files/file.h index c3a31d84..801d68a 100644 --- a/base/files/file.h +++ b/base/files/file.h
@@ -16,7 +16,7 @@ #include "base/files/scoped_file.h" #include "base/macros.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) || defined(OS_FUCHSIA) #include <sys/stat.h>
diff --git a/base/files/file_descriptor_watcher_posix_unittest.cc b/base/files/file_descriptor_watcher_posix_unittest.cc index 4ed044b..8fc57ce 100644 --- a/base/files/file_descriptor_watcher_posix_unittest.cc +++ b/base/files/file_descriptor_watcher_posix_unittest.cc
@@ -19,7 +19,7 @@ #include "base/threading/platform_thread.h" #include "base/threading/thread.h" #include "base/threading/thread_checker_impl.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/files/file_enumerator.h b/base/files/file_enumerator.h index 0fa99a6..db54301 100644 --- a/base/files/file_enumerator.h +++ b/base/files/file_enumerator.h
@@ -15,7 +15,7 @@ #include "base/files/file_path.h" #include "base/macros.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/files/file_enumerator_posix.cc b/base/files/file_enumerator_posix.cc index 4b429c6..383d202 100644 --- a/base/files/file_enumerator_posix.cc +++ b/base/files/file_enumerator_posix.cc
@@ -12,7 +12,7 @@ #include "base/logging.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace {
diff --git a/base/files/file_locking_unittest.cc b/base/files/file_locking_unittest.cc index e158b7d..bfe62ce 100644 --- a/base/files/file_locking_unittest.cc +++ b/base/files/file_locking_unittest.cc
@@ -11,7 +11,7 @@ #include "base/test/test_timeouts.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h"
diff --git a/base/files/file_path.cc b/base/files/file_path.cc index 14f9251..6221db9 100644 --- a/base/files/file_path.cc +++ b/base/files/file_path.cc
@@ -14,7 +14,7 @@ #include "base/strings/string_util.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include "base/mac/scoped_cftyperef.h"
diff --git a/base/files/file_path.h b/base/files/file_path.h index 2dc15f9..a31253e 100644 --- a/base/files/file_path.h +++ b/base/files/file_path.h
@@ -113,7 +113,7 @@ #include "base/macros.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" // Windows-style drive letter support and pathname separator characters can be // enabled and disabled independently, to aid testing. These #defines are
diff --git a/base/files/file_path_unittest.cc b/base/files/file_path_unittest.cc index e722c68..d0fd00e 100644 --- a/base/files/file_path_unittest.cc +++ b/base/files/file_path_unittest.cc
@@ -9,7 +9,7 @@ #include "base/files/file_path.h" #include "base/macros.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h"
diff --git a/base/files/file_path_watcher.cc b/base/files/file_path_watcher.cc index af40346..5b50312 100644 --- a/base/files/file_path_watcher.cc +++ b/base/files/file_path_watcher.cc
@@ -8,7 +8,7 @@ #include "base/files/file_path_watcher.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/files/file_path_watcher_mac.cc b/base/files/file_path_watcher_mac.cc index 4dcf90b..bd5a559 100644 --- a/base/files/file_path_watcher_mac.cc +++ b/base/files/file_path_watcher_mac.cc
@@ -8,7 +8,7 @@ #include "base/files/file_path_watcher_kqueue.h" #include "base/macros.h" #include "base/memory/ptr_util.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_IOS) #include "base/files/file_path_watcher_fsevents.h"
diff --git a/base/files/file_path_watcher_unittest.cc b/base/files/file_path_watcher_unittest.cc index 2cc2e58..9e3d94d 100644 --- a/base/files/file_path_watcher_unittest.cc +++ b/base/files/file_path_watcher_unittest.cc
@@ -30,7 +30,7 @@ #include "base/test/test_file_util.h" #include "base/test/test_timeouts.h" #include "base/threading/thread_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_ANDROID)
diff --git a/base/files/file_posix.cc b/base/files/file_posix.cc index d538b66..d6b7641 100644 --- a/base/files/file_posix.cc +++ b/base/files/file_posix.cc
@@ -15,7 +15,7 @@ #include "base/posix/eintr_wrapper.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) #include "base/os_compat_android.h"
diff --git a/base/files/file_proxy_unittest.cc b/base/files/file_proxy_unittest.cc index 20bb489..73a0497 100644 --- a/base/files/file_proxy_unittest.cc +++ b/base/files/file_proxy_unittest.cc
@@ -19,7 +19,7 @@ #include "base/run_loop.h" #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/files/file_unittest.cc b/base/files/file_unittest.cc index 112b90d..b9992ad 100644 --- a/base/files/file_unittest.cc +++ b/base/files/file_unittest.cc
@@ -12,7 +12,7 @@ #include "base/files/memory_mapped_file.h" #include "base/files/scoped_temp_dir.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" using base::File;
diff --git a/base/files/file_util.cc b/base/files/file_util.cc index 109cb22..887139b 100644 --- a/base/files/file_util.cc +++ b/base/files/file_util.cc
@@ -19,7 +19,7 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/files/file_util.h b/base/files/file_util.h index 1ba9368..9c7c748 100644 --- a/base/files/file_util.h +++ b/base/files/file_util.h
@@ -25,7 +25,7 @@ #include "base/files/file.h" #include "base/files/file_path.h" #include "base/strings/string16.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/windows_types.h"
diff --git a/base/files/file_util_posix.cc b/base/files/file_util_posix.cc index d8a0ae0..37fb015 100644 --- a/base/files/file_util_posix.cc +++ b/base/files/file_util_posix.cc
@@ -42,7 +42,7 @@ #include "base/sys_info.h" #include "base/threading/thread_restrictions.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include <AvailabilityMacros.h>
diff --git a/base/files/file_util_unittest.cc b/base/files/file_util_unittest.cc index a89e1b3..b4de085 100644 --- a/base/files/file_util_unittest.cc +++ b/base/files/file_util_unittest.cc
@@ -34,7 +34,7 @@ #include "base/test/test_file_util.h" #include "base/test/test_timeouts.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h" #include "testing/platform_test.h"
diff --git a/base/files/important_file_writer.cc b/base/files/important_file_writer.cc index 235bb8d..7fd9d79 100644 --- a/base/files/important_file_writer.cc +++ b/base/files/important_file_writer.cc
@@ -28,7 +28,7 @@ #include "base/task_runner_util.h" #include "base/threading/thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/files/memory_mapped_file.cc b/base/files/memory_mapped_file.cc index ccd9e23..8a07e49 100644 --- a/base/files/memory_mapped_file.cc +++ b/base/files/memory_mapped_file.cc
@@ -10,7 +10,7 @@ #include "base/logging.h" #include "base/numerics/safe_math.h" #include "base/sys_info.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/files/memory_mapped_file.h b/base/files/memory_mapped_file.h index 04f4336..012f091 100644 --- a/base/files/memory_mapped_file.h +++ b/base/files/memory_mapped_file.h
@@ -11,7 +11,7 @@ #include "base/base_export.h" #include "base/files/file.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/files/memory_mapped_file_posix.cc b/base/files/memory_mapped_file_posix.cc index 45a0aea..e51c7e3 100644 --- a/base/files/memory_mapped_file_posix.cc +++ b/base/files/memory_mapped_file_posix.cc
@@ -14,7 +14,7 @@ #include "base/logging.h" #include "base/numerics/safe_conversions.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) #include <android/api-level.h>
diff --git a/base/files/platform_file.h b/base/files/platform_file.h index 3929a0d..59bb6fe 100644 --- a/base/files/platform_file.h +++ b/base/files/platform_file.h
@@ -6,7 +6,7 @@ #define BASE_FILES_PLATFORM_FILE_H_ #include "base/files/scoped_file.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/scoped_handle.h"
diff --git a/base/files/scoped_file.cc b/base/files/scoped_file.cc index 1b9227d..f73e1c8 100644 --- a/base/files/scoped_file.cc +++ b/base/files/scoped_file.cc
@@ -5,7 +5,7 @@ #include "base/files/scoped_file.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) || defined(OS_FUCHSIA) #include <errno.h>
diff --git a/base/files/scoped_file.h b/base/files/scoped_file.h index e32a603..ee8ed8b 100644 --- a/base/files/scoped_file.h +++ b/base/files/scoped_file.h
@@ -12,7 +12,7 @@ #include "base/base_export.h" #include "base/logging.h" #include "base/scoped_generic.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/files/scoped_temp_dir_unittest.cc b/base/files/scoped_temp_dir_unittest.cc index 024b438..84eff6e 100644 --- a/base/files/scoped_temp_dir_unittest.cc +++ b/base/files/scoped_temp_dir_unittest.cc
@@ -7,7 +7,7 @@ #include "base/files/file.h" #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/format_macros.h b/base/format_macros.h index 1279ff7..46cd12c 100644 --- a/base/format_macros.h +++ b/base/format_macros.h
@@ -24,7 +24,7 @@ #include <stddef.h> #include <stdint.h> -#include "build/build_config.h" +#include "build_config.h" #if (defined(OS_POSIX) || defined(OS_FUCHSIA)) && \ (defined(_INTTYPES_H) || defined(_INTTYPES_H_)) && !defined(PRId64)
diff --git a/base/guid.h b/base/guid.h index c6937a1..9b0eb28 100644 --- a/base/guid.h +++ b/base/guid.h
@@ -11,7 +11,7 @@ #include "base/base_export.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/guid_unittest.cc b/base/guid_unittest.cc index 70dad67..8aa56ed 100644 --- a/base/guid_unittest.cc +++ b/base/guid_unittest.cc
@@ -9,7 +9,7 @@ #include <limits> #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/i18n/char_iterator.h b/base/i18n/char_iterator.h index 24024d4..33f2934 100644 --- a/base/i18n/char_iterator.h +++ b/base/i18n/char_iterator.h
@@ -13,7 +13,7 @@ #include "base/i18n/base_i18n_export.h" #include "base/macros.h" #include "base/strings/string16.h" -#include "build/build_config.h" +#include "build_config.h" // The CharIterator classes iterate through the characters in UTF8 and // UTF16 strings. Example usage:
diff --git a/base/i18n/encoding_detection.cc b/base/i18n/encoding_detection.cc index fef34e4..f6bbf4a 100644 --- a/base/i18n/encoding_detection.cc +++ b/base/i18n/encoding_detection.cc
@@ -4,7 +4,7 @@ #include "base/i18n/encoding_detection.h" -#include "build/build_config.h" +#include "build_config.h" #include "third_party/ced/src/compact_enc_det/compact_enc_det.h" // third_party/ced/src/util/encodings/encodings.h, which is included
diff --git a/base/i18n/file_util_icu.cc b/base/i18n/file_util_icu.cc index c91aea1..20a7d2d 100644 --- a/base/i18n/file_util_icu.cc +++ b/base/i18n/file_util_icu.cc
@@ -19,7 +19,7 @@ #include "base/strings/string_util.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "third_party/icu/source/common/unicode/uniset.h" #include "third_party/icu/source/i18n/unicode/coll.h"
diff --git a/base/i18n/file_util_icu_unittest.cc b/base/i18n/file_util_icu_unittest.cc index 062d29b..f1c2ecc 100644 --- a/base/i18n/file_util_icu_unittest.cc +++ b/base/i18n/file_util_icu_unittest.cc
@@ -9,7 +9,7 @@ #include "base/files/file_util.h" #include "base/macros.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h"
diff --git a/base/i18n/icu_string_conversions_unittest.cc b/base/i18n/icu_string_conversions_unittest.cc index d155986..871f18b 100644 --- a/base/i18n/icu_string_conversions_unittest.cc +++ b/base/i18n/icu_string_conversions_unittest.cc
@@ -16,7 +16,7 @@ #include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc index bc08ecb..1cbfbd6 100644 --- a/base/i18n/icu_util.cc +++ b/base/i18n/icu_util.cc
@@ -17,7 +17,7 @@ #include "base/path_service.h" #include "base/strings/string_util.h" #include "base/strings/sys_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "third_party/icu/source/common/unicode/putil.h" #include "third_party/icu/source/common/unicode/udata.h" #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
diff --git a/base/i18n/icu_util.h b/base/i18n/icu_util.h index 5f9948f..9bae8a1 100644 --- a/base/i18n/icu_util.h +++ b/base/i18n/icu_util.h
@@ -9,7 +9,7 @@ #include "base/files/memory_mapped_file.h" #include "base/i18n/base_i18n_export.h" -#include "build/build_config.h" +#include "build_config.h" #define ICU_UTIL_DATA_FILE 0 #define ICU_UTIL_DATA_SHARED 1
diff --git a/base/i18n/number_formatting_unittest.cc b/base/i18n/number_formatting_unittest.cc index 045bc0e..71b15a5 100644 --- a/base/i18n/number_formatting_unittest.cc +++ b/base/i18n/number_formatting_unittest.cc
@@ -12,7 +12,7 @@ #include "base/macros.h" #include "base/strings/utf_string_conversions.h" #include "base/test/icu_test_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/icu/source/i18n/unicode/usearch.h"
diff --git a/base/i18n/rtl.cc b/base/i18n/rtl.cc index bba0d44..295968b 100644 --- a/base/i18n/rtl.cc +++ b/base/i18n/rtl.cc
@@ -18,7 +18,7 @@ #include "base/strings/string_util.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "third_party/icu/source/common/unicode/locid.h" #include "third_party/icu/source/common/unicode/uchar.h" #include "third_party/icu/source/common/unicode/uscript.h"
diff --git a/base/i18n/rtl.h b/base/i18n/rtl.h index 5325970..d3ba29f 100644 --- a/base/i18n/rtl.h +++ b/base/i18n/rtl.h
@@ -10,7 +10,7 @@ #include "base/compiler_specific.h" #include "base/i18n/base_i18n_export.h" #include "base/strings/string16.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/i18n/rtl_unittest.cc b/base/i18n/rtl_unittest.cc index 313d2b4..88ae36a 100644 --- a/base/i18n/rtl_unittest.cc +++ b/base/i18n/rtl_unittest.cc
@@ -14,7 +14,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/test/icu_test_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" #include "third_party/icu/source/common/unicode/locid.h"
diff --git a/base/json/json_file_value_serializer.cc b/base/json/json_file_value_serializer.cc index a7c68c5..b0974c0 100644 --- a/base/json/json_file_value_serializer.cc +++ b/base/json/json_file_value_serializer.cc
@@ -7,7 +7,7 @@ #include "base/files/file_util.h" #include "base/json/json_string_value_serializer.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" using base::FilePath;
diff --git a/base/json/json_reader_unittest.cc b/base/json/json_reader_unittest.cc index faaf43e..828fba0 100644 --- a/base/json/json_reader_unittest.cc +++ b/base/json/json_reader_unittest.cc
@@ -16,7 +16,7 @@ #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/json/json_value_serializer_unittest.cc b/base/json/json_value_serializer_unittest.cc index d25f950..b358dec 100644 --- a/base/json/json_value_serializer_unittest.cc +++ b/base/json/json_value_serializer_unittest.cc
@@ -16,7 +16,7 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/json/json_writer.cc b/base/json/json_writer.cc index e4f1e3c..86af250 100644 --- a/base/json/json_writer.cc +++ b/base/json/json_writer.cc
@@ -14,7 +14,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/json/json_writer_unittest.cc b/base/json/json_writer_unittest.cc index 2d81af3..b90c3ea 100644 --- a/base/json/json_writer_unittest.cc +++ b/base/json/json_writer_unittest.cc
@@ -6,7 +6,7 @@ #include "base/memory/ptr_util.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/lazy_instance_unittest.cc b/base/lazy_instance_unittest.cc index a5f024c..242e8b5 100644 --- a/base/lazy_instance_unittest.cc +++ b/base/lazy_instance_unittest.cc
@@ -17,7 +17,7 @@ #include "base/threading/platform_thread.h" #include "base/threading/simple_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace {
diff --git a/base/linux_util.cc b/base/linux_util.cc index ddf848e..5c57d78 100644 --- a/base/linux_util.cc +++ b/base/linux_util.cc
@@ -25,7 +25,7 @@ #include "base/strings/string_tokenizer.h" #include "base/strings/string_util.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/base/location.cc b/base/location.cc index 8bbf6ed..59d6728 100644 --- a/base/location.cc +++ b/base/location.cc
@@ -11,7 +11,7 @@ #include "base/compiler_specific.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/logging.cc b/base/logging.cc index 8eabda0..cf96aeb 100644 --- a/base/logging.cc +++ b/base/logging.cc
@@ -8,7 +8,7 @@ #include <stdint.h> #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <io.h>
diff --git a/base/logging.h b/base/logging.h index 2996059..39b17ff 100644 --- a/base/logging.h +++ b/base/logging.h
@@ -21,7 +21,7 @@ #include "base/macros.h" #include "base/strings/string_piece_forward.h" #include "base/template_util.h" -#include "build/build_config.h" +#include "build_config.h" // // Optional message capabilities
diff --git a/base/logging_unittest.cc b/base/logging_unittest.cc index 9025aaf..0264012 100644 --- a/base/logging_unittest.cc +++ b/base/logging_unittest.cc
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "base/strings/string_piece.h" #include "base/test/scoped_feature_list.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/mac/bind_objc_block_unittest.mm b/base/mac/bind_objc_block_unittest.mm index 2b18672..38da5aa 100644 --- a/base/mac/bind_objc_block_unittest.mm +++ b/base/mac/bind_objc_block_unittest.mm
@@ -9,7 +9,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/callback_helpers.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest_mac.h"
diff --git a/base/mac/bind_objc_block_unittest_arc.mm b/base/mac/bind_objc_block_unittest_arc.mm index 24ec974..f5f953d 100644 --- a/base/mac/bind_objc_block_unittest_arc.mm +++ b/base/mac/bind_objc_block_unittest_arc.mm
@@ -9,7 +9,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/callback_helpers.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest_mac.h"
diff --git a/base/mac/call_with_eh_frame.cc b/base/mac/call_with_eh_frame.cc index 4578541..35e01bc 100644 --- a/base/mac/call_with_eh_frame.cc +++ b/base/mac/call_with_eh_frame.cc
@@ -7,7 +7,7 @@ #include <stdint.h> #include <unwind.h> -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace mac {
diff --git a/base/mac/foundation_util.h b/base/mac/foundation_util.h index abdfdf3..d92a204 100644 --- a/base/mac/foundation_util.h +++ b/base/mac/foundation_util.h
@@ -13,7 +13,7 @@ #include "base/base_export.h" #include "base/logging.h" #include "base/mac/scoped_cftyperef.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(__OBJC__) #import <Foundation/Foundation.h>
diff --git a/base/mac/foundation_util.mm b/base/mac/foundation_util.mm index 15fc15b..ae19544 100644 --- a/base/mac/foundation_util.mm +++ b/base/mac/foundation_util.mm
@@ -15,7 +15,7 @@ #include "base/macros.h" #include "base/numerics/safe_conversions.h" #include "base/strings/sys_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_IOS) #import <AppKit/AppKit.h>
diff --git a/base/mac/foundation_util_unittest.mm b/base/mac/foundation_util_unittest.mm index a584094..ce02163 100644 --- a/base/mac/foundation_util_unittest.mm +++ b/base/mac/foundation_util_unittest.mm
@@ -14,7 +14,7 @@ #include "base/mac/scoped_nsautorelease_pool.h" #include "base/macros.h" #include "base/strings/stringprintf.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #import "testing/gtest_mac.h"
diff --git a/base/mac/mac_logging.h b/base/mac/mac_logging.h index 30e43ea..ccdc404 100644 --- a/base/mac/mac_logging.h +++ b/base/mac/mac_logging.h
@@ -8,7 +8,7 @@ #include "base/base_export.h" #include "base/logging.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_IOS) #include <MacTypes.h>
diff --git a/base/mac/mac_logging.mm b/base/mac/mac_logging.mm index f0d3c07..1f9682d 100644 --- a/base/mac/mac_logging.mm +++ b/base/mac/mac_logging.mm
@@ -8,7 +8,7 @@ #include <iomanip> -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_IOS) #include <CoreServices/CoreServices.h>
diff --git a/base/mac/mach_logging.cc b/base/mac/mach_logging.cc index 7b939b3..fbd0134 100644 --- a/base/mac/mach_logging.cc +++ b/base/mac/mach_logging.cc
@@ -8,7 +8,7 @@ #include <string> #include "base/strings/stringprintf.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_IOS) #include <servers/bootstrap.h>
diff --git a/base/mac/mach_logging.h b/base/mac/mach_logging.h index 59ab762..b4b4215 100644 --- a/base/mac/mach_logging.h +++ b/base/mac/mach_logging.h
@@ -10,7 +10,7 @@ #include "base/base_export.h" #include "base/logging.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" // Use the MACH_LOG family of macros along with a mach_error_t (kern_return_t) // containing a Mach error. The error value will be decoded so that logged
diff --git a/base/memory/aligned_memory.cc b/base/memory/aligned_memory.cc index 93cbeb5..861ea50 100644 --- a/base/memory/aligned_memory.cc +++ b/base/memory/aligned_memory.cc
@@ -5,7 +5,7 @@ #include "base/memory/aligned_memory.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) #include <malloc.h>
diff --git a/base/memory/aligned_memory.h b/base/memory/aligned_memory.h index 89f9505..e0dd7f5 100644 --- a/base/memory/aligned_memory.h +++ b/base/memory/aligned_memory.h
@@ -12,7 +12,7 @@ #include "base/base_export.h" #include "base/compiler_specific.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(COMPILER_MSVC) #include <malloc.h>
diff --git a/base/memory/aligned_memory_unittest.cc b/base/memory/aligned_memory_unittest.cc index e354f38..29ed706 100644 --- a/base/memory/aligned_memory_unittest.cc +++ b/base/memory/aligned_memory_unittest.cc
@@ -6,7 +6,7 @@ #include <memory> -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #define EXPECT_ALIGNED(ptr, align) \
diff --git a/base/memory/discardable_shared_memory.cc b/base/memory/discardable_shared_memory.cc index 3b6b4db..8601e21 100644 --- a/base/memory/discardable_shared_memory.cc +++ b/base/memory/discardable_shared_memory.cc
@@ -16,7 +16,7 @@ #include "base/process/process_metrics.h" #include "base/trace_event/memory_allocator_dump.h" #include "base/trace_event/process_memory_dump.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) && !defined(OS_NACL) // For madvise() which is available on all POSIX compatible systems.
diff --git a/base/memory/discardable_shared_memory.h b/base/memory/discardable_shared_memory.h index 52a78b1..55e99d9 100644 --- a/base/memory/discardable_shared_memory.h +++ b/base/memory/discardable_shared_memory.h
@@ -14,7 +14,7 @@ #include "base/memory/unsafe_shared_memory_region.h" #include "base/threading/thread_collision_warner.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if DCHECK_IS_ON() #include <set>
diff --git a/base/memory/discardable_shared_memory_unittest.cc b/base/memory/discardable_shared_memory_unittest.cc index a7310a7..bda37f6 100644 --- a/base/memory/discardable_shared_memory_unittest.cc +++ b/base/memory/discardable_shared_memory_unittest.cc
@@ -11,7 +11,7 @@ #include "base/process/process_metrics.h" #include "base/trace_event/memory_allocator_dump.h" #include "base/trace_event/process_memory_dump.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/memory/platform_shared_memory_region.h b/base/memory/platform_shared_memory_region.h index 143a1d4..df4cc4d 100644 --- a/base/memory/platform_shared_memory_region.h +++ b/base/memory/platform_shared_memory_region.h
@@ -11,7 +11,7 @@ #include "base/gtest_prod_util.h" #include "base/macros.h" #include "base/unguessable_token.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) && !defined(OS_IOS) #include <mach/mach.h>
diff --git a/base/memory/platform_shared_memory_region_mac.cc b/base/memory/platform_shared_memory_region_mac.cc index b4d12ba..9cbe92e 100644 --- a/base/memory/platform_shared_memory_region_mac.cc +++ b/base/memory/platform_shared_memory_region_mac.cc
@@ -9,7 +9,7 @@ #include "base/mac/mach_logging.h" #include "base/mac/scoped_mach_vm.h" #include "base/numerics/checked_math.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_IOS) #error "MacOS only - iOS uses platform_shared_memory_region_posix.cc"
diff --git a/base/memory/platform_shared_memory_region_posix.cc b/base/memory/platform_shared_memory_region_posix.cc index 8453c12..422cec5 100644 --- a/base/memory/platform_shared_memory_region_posix.cc +++ b/base/memory/platform_shared_memory_region_posix.cc
@@ -11,7 +11,7 @@ #include "base/files/file_util.h" #include "base/numerics/checked_math.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace subtle {
diff --git a/base/memory/platform_shared_memory_region_unittest.cc b/base/memory/platform_shared_memory_region_unittest.cc index df3e526..f4d3071 100644 --- a/base/memory/platform_shared_memory_region_unittest.cc +++ b/base/memory/platform_shared_memory_region_unittest.cc
@@ -9,7 +9,7 @@ #include "base/sys_info.h" #include "base/test/gtest_util.h" #include "base/test/test_shared_memory_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/base/memory/protected_memory.h b/base/memory/protected_memory.h index 8d7868f..9f372ca 100644 --- a/base/memory/protected_memory.h +++ b/base/memory/protected_memory.h
@@ -57,7 +57,7 @@ #include "base/logging.h" #include "base/macros.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" #define PROTECTED_MEMORY_ENABLED 1
diff --git a/base/memory/protected_memory_cfi.h b/base/memory/protected_memory_cfi.h index 44f4654..f5b0121 100644 --- a/base/memory/protected_memory_cfi.h +++ b/base/memory/protected_memory_cfi.h
@@ -16,7 +16,7 @@ #include "base/compiler_specific.h" #include "base/macros.h" #include "base/memory/protected_memory.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/memory/protected_memory_posix.cc b/base/memory/protected_memory_posix.cc index d003d79..1839e3e 100644 --- a/base/memory/protected_memory_posix.cc +++ b/base/memory/protected_memory_posix.cc
@@ -20,7 +20,7 @@ #include "base/posix/eintr_wrapper.h" #include "base/process/process_metrics.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/memory/protected_memory_unittest.cc b/base/memory/protected_memory_unittest.cc index 5601f45..b6ec61d 100644 --- a/base/memory/protected_memory_unittest.cc +++ b/base/memory/protected_memory_unittest.cc
@@ -6,7 +6,7 @@ #include "base/memory/protected_memory_cfi.h" #include "base/synchronization/lock.h" #include "base/test/gtest_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/memory/protected_memory_win.cc b/base/memory/protected_memory_win.cc index cf3da78..43ad8ba 100644 --- a/base/memory/protected_memory_win.cc +++ b/base/memory/protected_memory_win.cc
@@ -10,7 +10,7 @@ #include "base/process/process_metrics.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/memory/read_only_shared_memory_region.cc b/base/memory/read_only_shared_memory_region.cc index 6b654c9..0a5f900 100644 --- a/base/memory/read_only_shared_memory_region.cc +++ b/base/memory/read_only_shared_memory_region.cc
@@ -7,7 +7,7 @@ #include <utility> #include "base/memory/shared_memory.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/memory/ref_counted.h b/base/memory/ref_counted.h index 249f70e..26a8437 100644 --- a/base/memory/ref_counted.h +++ b/base/memory/ref_counted.h
@@ -17,7 +17,7 @@ #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/threading/thread_collision_warner.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace subtle {
diff --git a/base/memory/shared_memory.h b/base/memory/shared_memory.h index c573ef7..aa1f682 100644 --- a/base/memory/shared_memory.h +++ b/base/memory/shared_memory.h
@@ -15,7 +15,7 @@ #include "base/memory/shared_memory_handle.h" #include "base/process/process_handle.h" #include "base/strings/string16.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) || defined(OS_FUCHSIA) #include <stdio.h>
diff --git a/base/memory/shared_memory_handle.h b/base/memory/shared_memory_handle.h index ae143af..18aa816 100644 --- a/base/memory/shared_memory_handle.h +++ b/base/memory/shared_memory_handle.h
@@ -8,7 +8,7 @@ #include <stddef.h> #include "base/unguessable_token.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/process/process_handle.h"
diff --git a/base/memory/shared_memory_helper.h b/base/memory/shared_memory_helper.h index 2c24f86..9da810e 100644 --- a/base/memory/shared_memory_helper.h +++ b/base/memory/shared_memory_helper.h
@@ -6,7 +6,7 @@ #define BASE_MEMORY_SHARED_MEMORY_HELPER_H_ #include "base/memory/shared_memory.h" -#include "build/build_config.h" +#include "build_config.h" #include <fcntl.h>
diff --git a/base/memory/shared_memory_mac.cc b/base/memory/shared_memory_mac.cc index 0a233e5..3990948 100644 --- a/base/memory/shared_memory_mac.cc +++ b/base/memory/shared_memory_mac.cc
@@ -28,7 +28,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_restrictions.h" #include "base/unguessable_token.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_IOS) #error "MacOS only - iOS uses shared_memory_posix.cc"
diff --git a/base/memory/shared_memory_mapping.cc b/base/memory/shared_memory_mapping.cc index 005e3fc..878a012 100644 --- a/base/memory/shared_memory_mapping.cc +++ b/base/memory/shared_memory_mapping.cc
@@ -9,7 +9,7 @@ #include "base/logging.h" #include "base/memory/shared_memory_tracker.h" #include "base/unguessable_token.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) #include <sys/mman.h>
diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc index d3163e5..6b53551 100644 --- a/base/memory/shared_memory_posix.cc +++ b/base/memory/shared_memory_posix.cc
@@ -25,7 +25,7 @@ #include "base/threading/thread_restrictions.h" #include "base/trace_event/trace_event.h" #include "base/unguessable_token.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) #include "base/os_compat_android.h"
diff --git a/base/memory/shared_memory_region_unittest.cc b/base/memory/shared_memory_region_unittest.cc index fcecb1f..e917154 100644 --- a/base/memory/shared_memory_region_unittest.cc +++ b/base/memory/shared_memory_region_unittest.cc
@@ -10,7 +10,7 @@ #include "base/memory/writable_shared_memory_region.h" #include "base/sys_info.h" #include "base/test/test_shared_memory_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/memory/shared_memory_unittest.cc b/base/memory/shared_memory_unittest.cc index b754540..c4c21c4 100644 --- a/base/memory/shared_memory_unittest.cc +++ b/base/memory/shared_memory_unittest.cc
@@ -26,7 +26,7 @@ #include "base/threading/platform_thread.h" #include "base/time/time.h" #include "base/unguessable_token.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h"
diff --git a/base/memory/writable_shared_memory_region.cc b/base/memory/writable_shared_memory_region.cc index 0806c37..7a29522 100644 --- a/base/memory/writable_shared_memory_region.cc +++ b/base/memory/writable_shared_memory_region.cc
@@ -7,7 +7,7 @@ #include <utility> #include "base/memory/shared_memory.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/message_loop/incoming_task_queue.cc b/base/message_loop/incoming_task_queue.cc index 9f5f855..0dd1272 100644 --- a/base/message_loop/incoming_task_queue.cc +++ b/base/message_loop/incoming_task_queue.cc
@@ -11,7 +11,7 @@ #include "base/message_loop/message_loop.h" #include "base/synchronization/waitable_event.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h index 2d8047d..6bcccb8 100644 --- a/base/message_loop/message_loop.h +++ b/base/message_loop/message_loop.h
@@ -26,7 +26,7 @@ #include "base/threading/sequence_local_storage_map.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/message_loop/message_loop_current.h b/base/message_loop/message_loop_current.h index c5016dc..593942b 100644 --- a/base/message_loop/message_loop_current.h +++ b/base/message_loop/message_loop_current.h
@@ -12,7 +12,7 @@ #include "base/message_loop/message_pump_for_ui.h" #include "base/pending_task.h" #include "base/single_thread_task_runner.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/message_loop/message_loop_io_posix_unittest.cc b/base/message_loop/message_loop_io_posix_unittest.cc index 4dd5f28..9ecd606 100644 --- a/base/message_loop/message_loop_io_posix_unittest.cc +++ b/base/message_loop/message_loop_io_posix_unittest.cc
@@ -16,7 +16,7 @@ #include "base/posix/eintr_wrapper.h" #include "base/run_loop.h" #include "base/test/gtest_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/message_loop/message_loop_unittest.cc b/base/message_loop/message_loop_unittest.cc index 8525366..970f6d1 100644 --- a/base/message_loop/message_loop_unittest.cc +++ b/base/message_loop/message_loop_unittest.cc
@@ -29,7 +29,7 @@ #include "base/threading/sequence_local_storage_slot.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_ANDROID)
diff --git a/base/message_loop/message_pump_default.cc b/base/message_loop/message_pump_default.cc index 4104e73..b84aa36 100644 --- a/base/message_loop/message_pump_default.cc +++ b/base/message_loop/message_pump_default.cc
@@ -7,7 +7,7 @@ #include "base/auto_reset.h" #include "base/logging.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include <mach/thread_policy.h>
diff --git a/base/message_loop/message_pump_default.h b/base/message_loop/message_pump_default.h index dd11adc..f92d2e4 100644 --- a/base/message_loop/message_pump_default.h +++ b/base/message_loop/message_pump_default.h
@@ -10,7 +10,7 @@ #include "base/message_loop/message_pump.h" #include "base/synchronization/waitable_event.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/message_loop/message_pump_for_io.h b/base/message_loop/message_pump_for_io.h index 6aac1e6..39a972e 100644 --- a/base/message_loop/message_pump_for_io.h +++ b/base/message_loop/message_pump_for_io.h
@@ -8,7 +8,7 @@ // This header is a forwarding header to coalesce the various platform specific // types representing MessagePumpForIO. -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/message_loop/message_pump_win.h"
diff --git a/base/message_loop/message_pump_for_ui.h b/base/message_loop/message_pump_for_ui.h index 6ee02b0..620c2ae 100644 --- a/base/message_loop/message_pump_for_ui.h +++ b/base/message_loop/message_pump_for_ui.h
@@ -8,7 +8,7 @@ // This header is a forwarding header to coalesce the various platform specific // implementations of MessagePumpForUI. -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/message_loop/message_pump_win.h"
diff --git a/base/message_loop/message_pump_libevent.cc b/base/message_loop/message_pump_libevent.cc index 2a595e5..a8efd27 100644 --- a/base/message_loop/message_pump_libevent.cc +++ b/base/message_loop/message_pump_libevent.cc
@@ -17,7 +17,7 @@ #include "base/third_party/libevent/event.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include "base/mac/scoped_nsautorelease_pool.h"
diff --git a/base/message_loop/message_pump_libevent_unittest.cc b/base/message_loop/message_pump_libevent_unittest.cc index 55eb0b4..bb26c29 100644 --- a/base/message_loop/message_pump_libevent_unittest.cc +++ b/base/message_loop/message_pump_libevent_unittest.cc
@@ -24,7 +24,7 @@ #include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/message_loop/message_pump_mac.h b/base/message_loop/message_pump_mac.h index fa88c3a..686fcd2 100644 --- a/base/message_loop/message_pump_mac.h +++ b/base/message_loop/message_pump_mac.h
@@ -38,7 +38,7 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/message_loop/timer_slack.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(__OBJC__) #if defined(OS_IOS)
diff --git a/base/message_loop/message_pump_mac.mm b/base/message_loop/message_pump_mac.mm index fb25201..14b0a86 100644 --- a/base/message_loop/message_pump_mac.mm +++ b/base/message_loop/message_pump_mac.mm
@@ -17,7 +17,7 @@ #include "base/message_loop/timer_slack.h" #include "base/run_loop.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_IOS) #import <AppKit/AppKit.h>
diff --git a/base/message_loop/message_pump_perftest.cc b/base/message_loop/message_pump_perftest.cc index 76f18cb..8391888 100644 --- a/base/message_loop/message_pump_perftest.cc +++ b/base/message_loop/message_pump_perftest.cc
@@ -17,7 +17,7 @@ #include "base/synchronization/waitable_event.h" #include "base/threading/thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/perf/perf_test.h"
diff --git a/base/metrics/field_trial.h b/base/metrics/field_trial.h index ac4ea1c..d5d6cb8 100644 --- a/base/metrics/field_trial.h +++ b/base/metrics/field_trial.h
@@ -80,7 +80,7 @@ #include "base/strings/string_piece.h" #include "base/synchronization/lock.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc index 41550dd..4d55697 100644 --- a/base/metrics/field_trial_unittest.cc +++ b/base/metrics/field_trial_unittest.cc
@@ -20,7 +20,7 @@ #include "base/test/mock_entropy_provider.h" #include "base/test/scoped_feature_list.h" #include "base/test/test_shared_memory_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/metrics/histogram.cc b/base/metrics/histogram.cc index f765181..07e09cf 100644 --- a/base/metrics/histogram.cc +++ b/base/metrics/histogram.cc
@@ -34,7 +34,7 @@ #include "base/synchronization/lock.h" #include "base/sys_info.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/metrics/persistent_histogram_storage.cc b/base/metrics/persistent_histogram_storage.cc index e2a56d7..8f527b0 100644 --- a/base/metrics/persistent_histogram_storage.cc +++ b/base/metrics/persistent_histogram_storage.cc
@@ -12,7 +12,7 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/base/metrics/persistent_histogram_storage_unittest.cc b/base/metrics/persistent_histogram_storage_unittest.cc index 0b9b1ce..ed42068 100644 --- a/base/metrics/persistent_histogram_storage_unittest.cc +++ b/base/metrics/persistent_histogram_storage_unittest.cc
@@ -11,7 +11,7 @@ #include "base/files/scoped_temp_dir.h" #include "base/metrics/histogram_macros.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/metrics/persistent_memory_allocator.cc b/base/metrics/persistent_memory_allocator.cc index 9b18a00..7d9c03d 100644 --- a/base/metrics/persistent_memory_allocator.cc +++ b/base/metrics/persistent_memory_allocator.cc
@@ -22,7 +22,7 @@ #include "base/numerics/safe_conversions.h" #include "base/sys_info.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/base/native_library.h b/base/native_library.h index 04356d9..6bd37d0 100644 --- a/base/native_library.h +++ b/base/native_library.h
@@ -12,7 +12,7 @@ #include "base/base_export.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/native_library_unittest.cc b/base/native_library_unittest.cc index 2bfb9ec..ac8ec5c 100644 --- a/base/native_library_unittest.cc +++ b/base/native_library_unittest.cc
@@ -7,7 +7,7 @@ #include "base/native_library.h" #include "base/path_service.h" #include "base/test/native_library_test_utils.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/nix/mime_util_xdg.h b/base/nix/mime_util_xdg.h index e0f264a..0685321 100644 --- a/base/nix/mime_util_xdg.h +++ b/base/nix/mime_util_xdg.h
@@ -8,7 +8,7 @@ #include <string> #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/no_destructor_unittest.cc b/base/no_destructor_unittest.cc index 8f9d4a4..c552a92 100644 --- a/base/no_destructor_unittest.cc +++ b/base/no_destructor_unittest.cc
@@ -8,7 +8,7 @@ #include <utility> #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/observer_list_threadsafe.h b/base/observer_list_threadsafe.h index bd349f3..05b5a56 100644 --- a/base/observer_list_threadsafe.h +++ b/base/observer_list_threadsafe.h
@@ -20,7 +20,7 @@ #include "base/synchronization/lock.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread_local.h" -#include "build/build_config.h" +#include "build_config.h" // TODO(fdoray): Removing these includes causes IWYU failures in other headers, // remove them in a follow- up CL.
diff --git a/base/path_service.cc b/base/path_service.cc index 6ac501e..2843dce 100644 --- a/base/path_service.cc +++ b/base/path_service.cc
@@ -16,7 +16,7 @@ #include "base/files/file_util.h" #include "base/logging.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/path_service.h b/base/path_service.h index 9b4715f..f92fead 100644 --- a/base/path_service.h +++ b/base/path_service.h
@@ -10,7 +10,7 @@ #include "base/base_export.h" #include "base/base_paths.h" #include "base/gtest_prod_util.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/path_service_unittest.cc b/base/path_service_unittest.cc index 8fcd673..378064a 100644 --- a/base/path_service_unittest.cc +++ b/base/path_service_unittest.cc
@@ -8,7 +8,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest-spi.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h"
diff --git a/base/pickle.cc b/base/pickle.cc index c2189c8..89e2d01 100644 --- a/base/pickle.cc +++ b/base/pickle.cc
@@ -13,7 +13,7 @@ #include "base/macros.h" #include "base/numerics/safe_conversions.h" #include "base/numerics/safe_math.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/posix/eintr_wrapper.h b/base/posix/eintr_wrapper.h index c0ffced..c3565da 100644 --- a/base/posix/eintr_wrapper.h +++ b/base/posix/eintr_wrapper.h
@@ -17,7 +17,7 @@ #ifndef BASE_POSIX_EINTR_WRAPPER_H_ #define BASE_POSIX_EINTR_WRAPPER_H_ -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) && !defined(OS_FUCHSIA)
diff --git a/base/posix/global_descriptors.h b/base/posix/global_descriptors.h index 9d68761..1afd12f 100644 --- a/base/posix/global_descriptors.h +++ b/base/posix/global_descriptors.h
@@ -5,7 +5,7 @@ #ifndef BASE_POSIX_GLOBAL_DESCRIPTORS_H_ #define BASE_POSIX_GLOBAL_DESCRIPTORS_H_ -#include "build/build_config.h" +#include "build_config.h" #include <vector> #include <utility>
diff --git a/base/posix/safe_strerror.cc b/base/posix/safe_strerror.cc index aef5742..aa18098 100644 --- a/base/posix/safe_strerror.cc +++ b/base/posix/safe_strerror.cc
@@ -16,7 +16,7 @@ #include <stdio.h> #include <string.h> -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/posix/unix_domain_socket.cc b/base/posix/unix_domain_socket.cc index 7c087a5..17c8a24 100644 --- a/base/posix/unix_domain_socket.cc +++ b/base/posix/unix_domain_socket.cc
@@ -18,7 +18,7 @@ #include "base/pickle.h" #include "base/posix/eintr_wrapper.h" #include "base/stl_util.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_NACL_NONSFI) #include <sys/uio.h>
diff --git a/base/posix/unix_domain_socket.h b/base/posix/unix_domain_socket.h index 5c74f07..0bbd064 100644 --- a/base/posix/unix_domain_socket.h +++ b/base/posix/unix_domain_socket.h
@@ -13,7 +13,7 @@ #include "base/base_export.h" #include "base/files/scoped_file.h" #include "base/process/process_handle.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/posix/unix_domain_socket_unittest.cc b/base/posix/unix_domain_socket_unittest.cc index 453064f..f626de5 100644 --- a/base/posix/unix_domain_socket_unittest.cc +++ b/base/posix/unix_domain_socket_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "build/build_config.h" +#include "build_config.h" #include <stddef.h> #include <stdint.h>
diff --git a/base/power_monitor/power_monitor_device_source.h b/base/power_monitor/power_monitor_device_source.h index 1e2c885..2996609 100644 --- a/base/power_monitor/power_monitor_device_source.h +++ b/base/power_monitor/power_monitor_device_source.h
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "base/power_monitor/power_monitor_source.h" #include "base/power_monitor/power_observer.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/power_monitor/power_monitor_source.cc b/base/power_monitor/power_monitor_source.cc index d4757b0..8ec6e68 100644 --- a/base/power_monitor/power_monitor_source.cc +++ b/base/power_monitor/power_monitor_source.cc
@@ -5,7 +5,7 @@ #include "base/power_monitor/power_monitor_source.h" #include "base/power_monitor/power_monitor.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/kill.h b/base/process/kill.h index 005b72e..a3a7c63 100644 --- a/base/process/kill.h +++ b/base/process/kill.h
@@ -12,7 +12,7 @@ #include "base/process/process.h" #include "base/process/process_handle.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/kill_posix.cc b/base/process/kill_posix.cc index 4b52d8b..5159c19 100644 --- a/base/process/kill_posix.cc +++ b/base/process/kill_posix.cc
@@ -18,7 +18,7 @@ #include "base/process/process_iterator.h" #include "base/task_scheduler/post_task.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/launch.cc b/base/process/launch.cc index c03e1a7..dbb8447 100644 --- a/base/process/launch.cc +++ b/base/process/launch.cc
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "base/process/launch.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/launch.h b/base/process/launch.h index b4530b7..0a08750 100644 --- a/base/process/launch.h +++ b/base/process/launch.h
@@ -19,7 +19,7 @@ #include "base/process/process.h" #include "base/process/process_handle.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc index ec58488..d1690bc 100644 --- a/base/process/launch_posix.cc +++ b/base/process/launch_posix.cc
@@ -43,7 +43,7 @@ #include "base/threading/thread_restrictions.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_LINUX) || defined(OS_AIX) #include <sys/prctl.h>
diff --git a/base/process/memory.cc b/base/process/memory.cc index 5b98733..a98e309 100644 --- a/base/process/memory.cc +++ b/base/process/memory.cc
@@ -5,7 +5,7 @@ #include "base/debug/alias.h" #include "base/logging.h" #include "base/process/memory.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/memory.h b/base/process/memory.h index 7f16e12..5ed3acc 100644 --- a/base/process/memory.h +++ b/base/process/memory.h
@@ -9,7 +9,7 @@ #include "base/base_export.h" #include "base/process/process_handle.h" -#include "build/build_config.h" +#include "build_config.h" #ifdef PVALLOC_AVAILABLE // Build config explicitly tells us whether or not pvalloc is available.
diff --git a/base/process/memory_linux.cc b/base/process/memory_linux.cc index ffd8757..7c78cb8 100644 --- a/base/process/memory_linux.cc +++ b/base/process/memory_linux.cc
@@ -14,7 +14,7 @@ #include "base/logging.h" #include "base/process/internal_linux.h" #include "base/strings/string_number_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(USE_TCMALLOC) #include "third_party/tcmalloc/chromium/src/config.h" @@ -95,14 +95,7 @@ } bool UncheckedMalloc(size_t size, void** result) { -#if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || \ - (!defined(LIBC_GLIBC) && !defined(USE_TCMALLOC)) *result = malloc(size); -#elif defined(LIBC_GLIBC) && !defined(USE_TCMALLOC) - *result = __libc_malloc(size); -#elif defined(USE_TCMALLOC) - *result = tc_malloc_skip_new_handler(size); -#endif return *result != nullptr; }
diff --git a/base/process/memory_mac.mm b/base/process/memory_mac.mm index 6cf380f..6f51fbe 100644 --- a/base/process/memory_mac.mm +++ b/base/process/memory_mac.mm
@@ -6,7 +6,7 @@ #include "base/allocator/allocator_interception_mac.h" #include "base/allocator/allocator_shim.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/memory_unittest.cc b/base/process/memory_unittest.cc index 41c078d..3a565ee 100644 --- a/base/process/memory_unittest.cc +++ b/base/process/memory_unittest.cc
@@ -15,7 +15,7 @@ #include "base/debug/alias.h" #include "base/memory/aligned_memory.h" #include "base/strings/stringprintf.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/process/memory_unittest_mac.h b/base/process/memory_unittest_mac.h index 713589b..4d82a73 100644 --- a/base/process/memory_unittest_mac.h +++ b/base/process/memory_unittest_mac.h
@@ -11,7 +11,7 @@ #include <stddef.h> #include <sys/types.h> -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/memory_unittest_mac.mm b/base/process/memory_unittest_mac.mm index 26fe1af..7ec7afd 100644 --- a/base/process/memory_unittest_mac.mm +++ b/base/process/memory_unittest_mac.mm
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "base/process/memory_unittest_mac.h" -#include "build/build_config.h" +#include "build_config.h" #import <Foundation/Foundation.h> #include <CoreFoundation/CoreFoundation.h>
diff --git a/base/process/process.h b/base/process/process.h index c06998e..479e24d 100644 --- a/base/process/process.h +++ b/base/process/process.h
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "base/process/process_handle.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/scoped_handle.h"
diff --git a/base/process/process_handle.cc b/base/process/process_handle.cc index 58ceb08..fde631e 100644 --- a/base/process/process_handle.cc +++ b/base/process/process_handle.cc
@@ -6,7 +6,7 @@ #include "base/logging.h" #include "base/process/process_handle.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/process_handle.h b/base/process/process_handle.h index f3f6343..bf9a720 100644 --- a/base/process/process_handle.h +++ b/base/process/process_handle.h
@@ -10,7 +10,7 @@ #include "base/base_export.h" #include "base/files/file_path.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/windows_types.h"
diff --git a/base/process/process_info.h b/base/process/process_info.h index 5138e24..8d5aa07 100644 --- a/base/process/process_info.h +++ b/base/process/process_info.h
@@ -6,7 +6,7 @@ #define BASE_PROCESS_PROCESS_INFO_H_ #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/process_info_unittest.cc b/base/process/process_info_unittest.cc index f54d957..51b15b9 100644 --- a/base/process/process_info_unittest.cc +++ b/base/process/process_info_unittest.cc
@@ -5,7 +5,7 @@ #include "base/process/process_info.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/process/process_iterator.cc b/base/process/process_iterator.cc index 8b530a0..bc8c0a8 100644 --- a/base/process/process_iterator.cc +++ b/base/process/process_iterator.cc
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "base/process/process_iterator.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/process_iterator.h b/base/process/process_iterator.h index b30ad41..672d58b 100644 --- a/base/process/process_iterator.h +++ b/base/process/process_iterator.h
@@ -17,7 +17,7 @@ #include "base/files/file_path.h" #include "base/macros.h" #include "base/process/process.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/process/process_linux.cc b/base/process/process_linux.cc index faf39af..8cfeef2 100644 --- a/base/process/process_linux.cc +++ b/base/process/process_linux.cc
@@ -14,7 +14,7 @@ #include "base/strings/stringprintf.h" #include "base/synchronization/lock.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" // Not defined on AIX by default. #if defined(OS_AIX)
diff --git a/base/process/process_metrics.cc b/base/process/process_metrics.cc index c3a7063..fe9f8d3 100644 --- a/base/process/process_metrics.cc +++ b/base/process/process_metrics.cc
@@ -8,7 +8,7 @@ #include "base/logging.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) namespace {
diff --git a/base/process/process_metrics.h b/base/process/process_metrics.h index 0170a0c..5d47abf 100644 --- a/base/process/process_metrics.h +++ b/base/process/process_metrics.h
@@ -20,7 +20,7 @@ #include "base/process/process_handle.h" #include "base/time/time.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include <mach/mach.h>
diff --git a/base/process/process_metrics_iocounters.h b/base/process/process_metrics_iocounters.h index e12d090..39f7d3b 100644 --- a/base/process/process_metrics_iocounters.h +++ b/base/process/process_metrics_iocounters.h
@@ -11,7 +11,7 @@ #include <stdint.h> #include "base/process/process_metrics.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/process/process_metrics_linux.cc b/base/process/process_metrics_linux.cc index 16cde35..f045e24 100644 --- a/base/process/process_metrics_linux.cc +++ b/base/process/process_metrics_linux.cc
@@ -26,7 +26,7 @@ #include "base/strings/string_tokenizer.h" #include "base/strings/string_util.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/process/process_metrics_posix.cc b/base/process/process_metrics_posix.cc index a09bbf2..858ab05 100644 --- a/base/process/process_metrics_posix.cc +++ b/base/process/process_metrics_posix.cc
@@ -11,7 +11,7 @@ #include <unistd.h> #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_FUCHSIA) #include <sys/resource.h>
diff --git a/base/process/process_metrics_unittest.cc b/base/process/process_metrics_unittest.cc index eba543a..aec7be1 100644 --- a/base/process/process_metrics_unittest.cc +++ b/base/process/process_metrics_unittest.cc
@@ -22,7 +22,7 @@ #include "base/sys_info.h" #include "base/test/multiprocess_test.h" #include "base/threading/thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h"
diff --git a/base/process/process_posix.cc b/base/process/process_posix.cc index 7645b78..51b57e1 100644 --- a/base/process/process_posix.cc +++ b/base/process/process_posix.cc
@@ -16,7 +16,7 @@ #include "base/posix/eintr_wrapper.h" #include "base/process/kill.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include <sys/event.h>
diff --git a/base/process/process_unittest.cc b/base/process/process_unittest.cc index 9f678d1..0f05d24 100644 --- a/base/process/process_unittest.cc +++ b/base/process/process_unittest.cc
@@ -12,7 +12,7 @@ #include "base/test/test_timeouts.h" #include "base/threading/platform_thread.h" #include "base/threading/thread_local.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h"
diff --git a/base/process/process_util_unittest.cc b/base/process/process_util_unittest.cc index 8946669..81c31b2 100644 --- a/base/process/process_util_unittest.cc +++ b/base/process/process_util_unittest.cc
@@ -33,7 +33,7 @@ #include "base/test/test_timeouts.h" #include "base/threading/platform_thread.h" #include "base/threading/thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h"
diff --git a/base/profiler/stack_sampling_profiler_unittest.cc b/base/profiler/stack_sampling_profiler_unittest.cc index 8fc25c9..b25943f 100644 --- a/base/profiler/stack_sampling_profiler_unittest.cc +++ b/base/profiler/stack_sampling_profiler_unittest.cc
@@ -29,7 +29,7 @@ #include "base/threading/platform_thread.h" #include "base/threading/simple_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/rand_util.h b/base/rand_util.h index 03bf46f..32c8fc7 100644 --- a/base/rand_util.h +++ b/base/rand_util.h
@@ -12,7 +12,7 @@ #include <string> #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/run_loop.cc b/base/run_loop.cc index 3882f64..f15d62a 100644 --- a/base/run_loop.cc +++ b/base/run_loop.cc
@@ -11,7 +11,7 @@ #include "base/single_thread_task_runner.h" #include "base/threading/thread_local.h" #include "base/threading/thread_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/run_loop.h b/base/run_loop.h index 719f928..493d934 100644 --- a/base/run_loop.h +++ b/base/run_loop.h
@@ -17,7 +17,7 @@ #include "base/observer_list.h" #include "base/sequence_checker.h" #include "base/threading/thread_checker.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { #if defined(OS_ANDROID)
diff --git a/base/run_loop_unittest.cc b/base/run_loop_unittest.cc index c7db14a..3564a2e 100644 --- a/base/run_loop_unittest.cc +++ b/base/run_loop_unittest.cc
@@ -23,7 +23,7 @@ #include "base/threading/thread.h" #include "base/threading/thread_checker_impl.h" #include "base/threading/thread_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/safe_numerics_unittest.cc b/base/safe_numerics_unittest.cc index 44675cf..7fcc5d1 100644 --- a/base/safe_numerics_unittest.cc +++ b/base/safe_numerics_unittest.cc
@@ -29,7 +29,7 @@ #include "base/numerics/safe_conversions.h" #include "base/numerics/safe_math.h" #include "base/test/gtest_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(COMPILER_MSVC) && defined(ARCH_CPU_32_BITS)
diff --git a/base/sampling_heap_profiler/sampling_heap_profiler.cc b/base/sampling_heap_profiler/sampling_heap_profiler.cc index 94383a2..aa695d8 100644 --- a/base/sampling_heap_profiler/sampling_heap_profiler.cc +++ b/base/sampling_heap_profiler/sampling_heap_profiler.cc
@@ -17,7 +17,7 @@ #include "base/partition_alloc_buildflags.h" #include "base/rand_util.h" #include "base/threading/thread_local_storage.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/sampling_heap_profiler/sampling_heap_profiler_unittest.cc b/base/sampling_heap_profiler/sampling_heap_profiler_unittest.cc index 6602e6c..d3bef90 100644 --- a/base/sampling_heap_profiler/sampling_heap_profiler_unittest.cc +++ b/base/sampling_heap_profiler/sampling_heap_profiler_unittest.cc
@@ -10,7 +10,7 @@ #include "base/allocator/allocator_shim.h" #include "base/debug/alias.h" #include "base/threading/simple_thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/scoped_native_library_unittest.cc b/base/scoped_native_library_unittest.cc index 763b45f..261e9d1 100644 --- a/base/scoped_native_library_unittest.cc +++ b/base/scoped_native_library_unittest.cc
@@ -4,7 +4,7 @@ #include "base/scoped_native_library.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/security_unittest.cc b/base/security_unittest.cc index 3073299..9a3bc27 100644 --- a/base/security_unittest.cc +++ b/base/security_unittest.cc
@@ -17,7 +17,7 @@ #include "base/files/file_util.h" #include "base/logging.h" #include "base/memory/free_deleter.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX)
diff --git a/base/strings/old_utf_string_conversions.cc b/base/strings/old_utf_string_conversions.cc index 5cab038..b6edb29 100644 --- a/base/strings/old_utf_string_conversions.cc +++ b/base/strings/old_utf_string_conversions.cc
@@ -9,7 +9,7 @@ #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversion_utils.h" -#include "build/build_config.h" +#include "build_config.h" namespace base_old {
diff --git a/base/strings/safe_sprintf.cc b/base/strings/safe_sprintf.cc index 4d695cf..8c6e8ca 100644 --- a/base/strings/safe_sprintf.cc +++ b/base/strings/safe_sprintf.cc
@@ -10,7 +10,7 @@ #include <limits> #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(NDEBUG) // In debug builds, we use RAW_CHECK() to print useful error messages, if
diff --git a/base/strings/safe_sprintf.h b/base/strings/safe_sprintf.h index 01d649d..56a6eaf 100644 --- a/base/strings/safe_sprintf.h +++ b/base/strings/safe_sprintf.h
@@ -5,7 +5,7 @@ #ifndef BASE_STRINGS_SAFE_SPRINTF_H_ #define BASE_STRINGS_SAFE_SPRINTF_H_ -#include "build/build_config.h" +#include "build_config.h" #include <stddef.h> #include <stdint.h>
diff --git a/base/strings/safe_sprintf_unittest.cc b/base/strings/safe_sprintf_unittest.cc index bb9908f..4a0948b 100644 --- a/base/strings/safe_sprintf_unittest.cc +++ b/base/strings/safe_sprintf_unittest.cc
@@ -14,7 +14,7 @@ #include "base/logging.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" // Death tests on Android are currently very flaky. No need to add more flaky
diff --git a/base/strings/strcat.h b/base/strings/strcat.h index 44c6211..b2fcaae 100644 --- a/base/strings/strcat.h +++ b/base/strings/strcat.h
@@ -11,7 +11,7 @@ #include "base/compiler_specific.h" #include "base/containers/span.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) // To resolve a conflict with Win32 API StrCat macro.
diff --git a/base/strings/string16.h b/base/strings/string16.h index a86baa2..570a6d5 100644 --- a/base/strings/string16.h +++ b/base/strings/string16.h
@@ -34,7 +34,7 @@ #include <string> #include "base/base_export.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(WCHAR_T_IS_UTF16)
diff --git a/base/strings/string_number_conversions.h b/base/strings/string_number_conversions.h index 057b60a..b59ce46 100644 --- a/base/strings/string_number_conversions.h +++ b/base/strings/string_number_conversions.h
@@ -14,7 +14,7 @@ #include "base/base_export.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" // ---------------------------------------------------------------------------- // IMPORTANT MESSAGE FROM YOUR SPONSOR
diff --git a/base/strings/string_util.cc b/base/strings/string_util.cc index 32e5ff2..6293f6d 100644 --- a/base/strings/string_util.cc +++ b/base/strings/string_util.cc
@@ -26,7 +26,7 @@ #include "base/strings/utf_string_conversion_utils.h" #include "base/strings/utf_string_conversions.h" #include "base/third_party/icu/icu_utf.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/strings/string_util.h b/base/strings/string_util.h index d6780ec..f1045bb 100644 --- a/base/strings/string_util.h +++ b/base/strings/string_util.h
@@ -20,7 +20,7 @@ #include "base/compiler_specific.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" // For implicit conversions. -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/strings/stringize_macros.h b/base/strings/stringize_macros.h index d4e2707..95322e0 100644 --- a/base/strings/stringize_macros.h +++ b/base/strings/stringize_macros.h
@@ -9,7 +9,7 @@ #ifndef BASE_STRINGS_STRINGIZE_MACROS_H_ #define BASE_STRINGS_STRINGIZE_MACROS_H_ -#include "build/build_config.h" +#include "build_config.h" // This is not very useful as it does not expand defined symbols if // called directly. Use its counterpart without the _NO_EXPANSION
diff --git a/base/strings/stringprintf.cc b/base/strings/stringprintf.cc index 415845d..dba4318 100644 --- a/base/strings/stringprintf.cc +++ b/base/strings/stringprintf.cc
@@ -13,7 +13,7 @@ #include "base/scoped_clear_errno.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/strings/stringprintf.h b/base/strings/stringprintf.h index 7a75d89..83969bb 100644 --- a/base/strings/stringprintf.h +++ b/base/strings/stringprintf.h
@@ -11,7 +11,7 @@ #include "base/base_export.h" #include "base/compiler_specific.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/strings/stringprintf_unittest.cc b/base/strings/stringprintf_unittest.cc index 3d43e8c..02cd349 100644 --- a/base/strings/stringprintf_unittest.cc +++ b/base/strings/stringprintf_unittest.cc
@@ -8,7 +8,7 @@ #include <stddef.h> #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/strings/sys_string_conversions.h b/base/strings/sys_string_conversions.h index 1ad0307..875cafb 100644 --- a/base/strings/sys_string_conversions.h +++ b/base/strings/sys_string_conversions.h
@@ -16,7 +16,7 @@ #include "base/base_export.h" #include "base/strings/string16.h" #include "base/strings/string_piece.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include <CoreFoundation/CoreFoundation.h>
diff --git a/base/strings/sys_string_conversions_posix.cc b/base/strings/sys_string_conversions_posix.cc index cfa7b76..97b027a 100644 --- a/base/strings/sys_string_conversions_posix.cc +++ b/base/strings/sys_string_conversions_posix.cc
@@ -9,7 +9,7 @@ #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/strings/sys_string_conversions_unittest.cc b/base/strings/sys_string_conversions_unittest.cc index f5ffaec..0f4eddd 100644 --- a/base/strings/sys_string_conversions_unittest.cc +++ b/base/strings/sys_string_conversions_unittest.cc
@@ -11,7 +11,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_locale.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #ifdef WCHAR_T_IS_UTF32
diff --git a/base/strings/utf_string_conversion_utils.cc b/base/strings/utf_string_conversion_utils.cc index f7682c1..89f02d5 100644 --- a/base/strings/utf_string_conversion_utils.cc +++ b/base/strings/utf_string_conversion_utils.cc
@@ -5,7 +5,7 @@ #include "base/strings/utf_string_conversion_utils.h" #include "base/third_party/icu/icu_utf.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/strings/utf_string_conversions.cc b/base/strings/utf_string_conversions.cc index 89acc38..6a32e39 100644 --- a/base/strings/utf_string_conversions.cc +++ b/base/strings/utf_string_conversions.cc
@@ -10,7 +10,7 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversion_utils.h" #include "base/third_party/icu/icu_utf.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/strings/utf_string_conversions_unittest.cc b/base/strings/utf_string_conversions_unittest.cc index 6f5e60c..ce776c8 100644 --- a/base/strings/utf_string_conversions_unittest.cc +++ b/base/strings/utf_string_conversions_unittest.cc
@@ -9,7 +9,7 @@ #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/sync_socket.h b/base/sync_socket.h index 42db9a2..9d582da 100644 --- a/base/sync_socket.h +++ b/base/sync_socket.h
@@ -17,7 +17,7 @@ #include "base/process/process_handle.h" #include "base/synchronization/waitable_event.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/base/sync_socket_posix.cc b/base/sync_socket_posix.cc index ff1e0e6..816bb73 100644 --- a/base/sync_socket_posix.cc +++ b/base/sync_socket_posix.cc
@@ -21,7 +21,7 @@ #include "base/files/file_util.h" #include "base/logging.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/synchronization/atomic_flag_unittest.cc b/base/synchronization/atomic_flag_unittest.cc index f7daafa..1a3da7f 100644 --- a/base/synchronization/atomic_flag_unittest.cc +++ b/base/synchronization/atomic_flag_unittest.cc
@@ -11,7 +11,7 @@ #include "base/test/gtest_util.h" #include "base/threading/platform_thread.h" #include "base/threading/thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/synchronization/condition_variable.h b/base/synchronization/condition_variable.h index dfcf813..9ec9cd8 100644 --- a/base/synchronization/condition_variable.h +++ b/base/synchronization/condition_variable.h
@@ -73,7 +73,7 @@ #include "base/logging.h" #include "base/macros.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/windows_types.h"
diff --git a/base/synchronization/condition_variable_posix.cc b/base/synchronization/condition_variable_posix.cc index f263252..b234341 100644 --- a/base/synchronization/condition_variable_posix.cc +++ b/base/synchronization/condition_variable_posix.cc
@@ -12,7 +12,7 @@ #include "base/threading/scoped_blocking_call.h" #include "base/threading/thread_restrictions.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/synchronization/condition_variable_unittest.cc b/base/synchronization/condition_variable_unittest.cc index 705257a..929060a 100644 --- a/base/synchronization/condition_variable_unittest.cc +++ b/base/synchronization/condition_variable_unittest.cc
@@ -22,7 +22,7 @@ #include "base/threading/thread.h" #include "base/threading/thread_collision_warner.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h"
diff --git a/base/synchronization/lock.h b/base/synchronization/lock.h index d1c647c..ecfa854 100644 --- a/base/synchronization/lock.h +++ b/base/synchronization/lock.h
@@ -10,7 +10,7 @@ #include "base/macros.h" #include "base/synchronization/lock_impl.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/synchronization/lock_impl.h b/base/synchronization/lock_impl.h index 221d763..e9da872 100644 --- a/base/synchronization/lock_impl.h +++ b/base/synchronization/lock_impl.h
@@ -8,7 +8,7 @@ #include "base/base_export.h" #include "base/logging.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/windows_types.h"
diff --git a/base/synchronization/lock_impl_posix.cc b/base/synchronization/lock_impl_posix.cc index 392c53c..1cfa88a 100644 --- a/base/synchronization/lock_impl_posix.cc +++ b/base/synchronization/lock_impl_posix.cc
@@ -11,7 +11,7 @@ #include "base/posix/safe_strerror.h" #include "base/strings/stringprintf.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace internal {
diff --git a/base/synchronization/waitable_event.h b/base/synchronization/waitable_event.h index 836adc0..64f5719 100644 --- a/base/synchronization/waitable_event.h +++ b/base/synchronization/waitable_event.h
@@ -9,7 +9,7 @@ #include "base/base_export.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/scoped_handle.h"
diff --git a/base/synchronization/waitable_event_mac.cc b/base/synchronization/waitable_event_mac.cc index ad6f8cb..56e6cb3 100644 --- a/base/synchronization/waitable_event_mac.cc +++ b/base/synchronization/waitable_event_mac.cc
@@ -17,7 +17,7 @@ #include "base/posix/eintr_wrapper.h" #include "base/threading/scoped_blocking_call.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/synchronization/waitable_event_unittest.cc b/base/synchronization/waitable_event_unittest.cc index e1d2683..9c981d8 100644 --- a/base/synchronization/waitable_event_unittest.cc +++ b/base/synchronization/waitable_event_unittest.cc
@@ -11,7 +11,7 @@ #include "base/compiler_specific.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/synchronization/waitable_event_watcher.h b/base/synchronization/waitable_event_watcher.h index 51728e3..5d0cf71 100644 --- a/base/synchronization/waitable_event_watcher.h +++ b/base/synchronization/waitable_event_watcher.h
@@ -8,7 +8,7 @@ #include "base/base_export.h" #include "base/macros.h" #include "base/sequenced_task_runner.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/object_watcher.h"
diff --git a/base/synchronization/waitable_event_watcher_unittest.cc b/base/synchronization/waitable_event_watcher_unittest.cc index ec056ef..bdb45a3 100644 --- a/base/synchronization/waitable_event_watcher_unittest.cc +++ b/base/synchronization/waitable_event_watcher_unittest.cc
@@ -13,7 +13,7 @@ #include "base/synchronization/waitable_event.h" #include "base/threading/platform_thread.h" #include "base/threading/sequenced_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/sys_byteorder.h b/base/sys_byteorder.h index 9ee1827..767210c 100644 --- a/base/sys_byteorder.h +++ b/base/sys_byteorder.h
@@ -14,7 +14,7 @@ #include <stdint.h> #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(COMPILER_MSVC) #include <stdlib.h>
diff --git a/base/sys_byteorder_unittest.cc b/base/sys_byteorder_unittest.cc index 8167be3..f5bad31 100644 --- a/base/sys_byteorder_unittest.cc +++ b/base/sys_byteorder_unittest.cc
@@ -6,7 +6,7 @@ #include <stdint.h> -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace {
diff --git a/base/sys_info.cc b/base/sys_info.cc index 379d7f2..4250ca9 100644 --- a/base/sys_info.cc +++ b/base/sys_info.cc
@@ -11,7 +11,7 @@ #include "base/lazy_instance.h" #include "base/sys_info_internal.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace {
diff --git a/base/sys_info.h b/base/sys_info.h index 6e58715..19ed0e4 100644 --- a/base/sys_info.h +++ b/base/sys_info.h
@@ -15,7 +15,7 @@ #include "base/files/file_path.h" #include "base/gtest_prod_util.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/sys_info_linux.cc b/base/sys_info_linux.cc index b1fecff..f8fc1ae 100644 --- a/base/sys_info_linux.cc +++ b/base/sys_info_linux.cc
@@ -16,7 +16,7 @@ #include "base/process/process_metrics.h" #include "base/strings/string_number_conversions.h" #include "base/sys_info_internal.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/base/sys_info_posix.cc b/base/sys_info_posix.cc index f6fcd10..b3d18b9 100644 --- a/base/sys_info_posix.cc +++ b/base/sys_info_posix.cc
@@ -18,7 +18,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/sys_info_internal.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_FUCHSIA) #include <sys/resource.h>
diff --git a/base/sys_info_unittest.cc b/base/sys_info_unittest.cc index e97ab57..7b2c458 100644 --- a/base/sys_info_unittest.cc +++ b/base/sys_info_unittest.cc
@@ -12,7 +12,7 @@ #include "base/sys_info.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h"
diff --git a/base/syslog_logging.h b/base/syslog_logging.h index 736a5b2..2c2ff55 100644 --- a/base/syslog_logging.h +++ b/base/syslog_logging.h
@@ -8,7 +8,7 @@ #include <iosfwd> #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" namespace logging {
diff --git a/base/system_monitor/system_monitor.h b/base/system_monitor/system_monitor.h index 7f21e47..f0828d1 100644 --- a/base/system_monitor/system_monitor.h +++ b/base/system_monitor/system_monitor.h
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/observer_list_threadsafe.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/task_scheduler/lazy_task_runner.h b/base/task_scheduler/lazy_task_runner.h index 7fcbddf..c0e0940 100644 --- a/base/task_scheduler/lazy_task_runner.h +++ b/base/task_scheduler/lazy_task_runner.h
@@ -16,7 +16,7 @@ #include "base/task_scheduler/scheduler_lock.h" #include "base/task_scheduler/single_thread_task_runner_thread_mode.h" #include "base/task_scheduler/task_traits.h" -#include "build/build_config.h" +#include "build_config.h" // Lazy(Sequenced|SingleThread|COMSTA)TaskRunner lazily creates a TaskRunner. //
diff --git a/base/task_scheduler/lazy_task_runner_unittest.cc b/base/task_scheduler/lazy_task_runner_unittest.cc index 3ca09c9..e898a1e 100644 --- a/base/task_scheduler/lazy_task_runner_unittest.cc +++ b/base/task_scheduler/lazy_task_runner_unittest.cc
@@ -10,7 +10,7 @@ #include "base/task_scheduler/scoped_set_task_priority_for_current_thread.h" #include "base/test/scoped_task_environment.h" #include "base/threading/thread_checker_impl.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/task_scheduler/post_task.h b/base/task_scheduler/post_task.h index d757c85..042c1a0 100644 --- a/base/task_scheduler/post_task.h +++ b/base/task_scheduler/post_task.h
@@ -19,7 +19,7 @@ #include "base/task_scheduler/single_thread_task_runner_thread_mode.h" #include "base/task_scheduler/task_traits.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/task_scheduler/scheduler_single_thread_task_runner_manager.h b/base/task_scheduler/scheduler_single_thread_task_runner_manager.h index b25230d..5c5bb6c 100644 --- a/base/task_scheduler/scheduler_single_thread_task_runner_manager.h +++ b/base/task_scheduler/scheduler_single_thread_task_runner_manager.h
@@ -17,7 +17,7 @@ #include "base/task_scheduler/single_thread_task_runner_thread_mode.h" #include "base/task_scheduler/tracked_ref.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/task_scheduler/scheduler_worker.h b/base/task_scheduler/scheduler_worker.h index 8bcfcb3..002db45 100644 --- a/base/task_scheduler/scheduler_worker.h +++ b/base/task_scheduler/scheduler_worker.h
@@ -19,7 +19,7 @@ #include "base/task_scheduler/tracked_ref.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/com_init_check_hook.h"
diff --git a/base/task_scheduler/scheduler_worker_pool_impl.h b/base/task_scheduler/scheduler_worker_pool_impl.h index d9a169b..997fcc9 100644 --- a/base/task_scheduler/scheduler_worker_pool_impl.h +++ b/base/task_scheduler/scheduler_worker_pool_impl.h
@@ -30,7 +30,7 @@ #include "base/task_scheduler/task.h" #include "base/task_scheduler/tracked_ref.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc index 5f099b3..21e77f4 100644 --- a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc +++ b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
@@ -43,7 +43,7 @@ #include "base/threading/thread_local_storage.h" #include "base/threading/thread_restrictions.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/task_scheduler/scheduler_worker_pool_unittest.cc b/base/task_scheduler/scheduler_worker_pool_unittest.cc index 717409b..20c1ad0 100644 --- a/base/task_scheduler/scheduler_worker_pool_unittest.cc +++ b/base/task_scheduler/scheduler_worker_pool_unittest.cc
@@ -22,7 +22,7 @@ #include "base/threading/platform_thread.h" #include "base/threading/simple_thread.h" #include "base/threading/thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/task_scheduler/scheduler_worker_unittest.cc b/base/task_scheduler/scheduler_worker_unittest.cc index cbeb355..b7a2eda 100644 --- a/base/task_scheduler/scheduler_worker_unittest.cc +++ b/base/task_scheduler/scheduler_worker_unittest.cc
@@ -26,7 +26,7 @@ #include "base/threading/platform_thread.h" #include "base/threading/simple_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/task_scheduler/service_thread_unittest.cc b/base/task_scheduler/service_thread_unittest.cc index 9f61f9b..df4d8d6 100644 --- a/base/task_scheduler/service_thread_unittest.cc +++ b/base/task_scheduler/service_thread_unittest.cc
@@ -13,7 +13,7 @@ #include "base/test/histogram_tester.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/task_scheduler/task_scheduler.h b/base/task_scheduler/task_scheduler.h index cb6d097..8881028 100644 --- a/base/task_scheduler/task_scheduler.h +++ b/base/task_scheduler/task_scheduler.h
@@ -20,7 +20,7 @@ #include "base/task_scheduler/single_thread_task_runner_thread_mode.h" #include "base/task_scheduler/task_traits.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" namespace gin { class V8Platform;
diff --git a/base/task_scheduler/task_scheduler_impl.h b/base/task_scheduler/task_scheduler_impl.h index 81a5a87..4ad7fc2 100644 --- a/base/task_scheduler/task_scheduler_impl.h +++ b/base/task_scheduler/task_scheduler_impl.h
@@ -23,7 +23,7 @@ #include "base/task_scheduler/task_scheduler.h" #include "base/task_scheduler/task_tracker.h" #include "base/task_scheduler/task_traits.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) && !defined(OS_NACL_SFI) #include "base/task_scheduler/task_tracker_posix.h"
diff --git a/base/task_scheduler/task_scheduler_impl_unittest.cc b/base/task_scheduler/task_scheduler_impl_unittest.cc index 4fe4a25..6eee033 100644 --- a/base/task_scheduler/task_scheduler_impl_unittest.cc +++ b/base/task_scheduler/task_scheduler_impl_unittest.cc
@@ -32,7 +32,7 @@ #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX)
diff --git a/base/task_scheduler/task_traits.h b/base/task_scheduler/task_traits.h index a4a41fe..1adba6d 100644 --- a/base/task_scheduler/task_traits.h +++ b/base/task_scheduler/task_traits.h
@@ -12,7 +12,7 @@ #include "base/base_export.h" #include "base/task_scheduler/task_traits_details.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/template_util.h b/base/template_util.h index 8544aa2..11e7ba8 100644 --- a/base/template_util.h +++ b/base/template_util.h
@@ -12,7 +12,7 @@ #include <utility> #include <vector> -#include "build/build_config.h" +#include "build_config.h" // Some versions of libstdc++ have partial support for type_traits, but misses // a smaller subset while removing some of the older non-standard stuff. Assume
diff --git a/base/test/gtest_util.h b/base/test/gtest_util.h index df2bce9..e4ec0bf 100644 --- a/base/test/gtest_util.h +++ b/base/test/gtest_util.h
@@ -11,7 +11,7 @@ #include "base/compiler_specific.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" // EXPECT/ASSERT_DCHECK_DEATH is intended to replace EXPECT/ASSERT_DEBUG_DEATH
diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc index 71eb1ad..b5197c5 100644 --- a/base/test/launcher/test_launcher.cc +++ b/base/test/launcher/test_launcher.cc
@@ -48,7 +48,7 @@ #include "base/threading/thread_restrictions.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX)
diff --git a/base/test/launcher/test_launcher.h b/base/test/launcher/test_launcher.h index 88b9f1f..fe9f080 100644 --- a/base/test/launcher/test_launcher.h +++ b/base/test/launcher/test_launcher.h
@@ -22,7 +22,7 @@ #include "base/threading/thread_checker.h" #include "base/time/time.h" #include "base/timer/timer.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/test/launcher/test_launcher_nacl_nonsfi.cc b/base/test/launcher/test_launcher_nacl_nonsfi.cc index bdc4f67..eeb0d92 100644 --- a/base/test/launcher/test_launcher_nacl_nonsfi.cc +++ b/base/test/launcher/test_launcher_nacl_nonsfi.cc
@@ -21,7 +21,7 @@ #include "base/test/launcher/unit_test_launcher.h" #include "base/test/test_switches.h" #include "base/test/test_timeouts.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/base/test/launcher/unit_test_launcher.cc b/base/test/launcher/unit_test_launcher.cc index 1d4439c..230ecc3 100644 --- a/base/test/launcher/unit_test_launcher.cc +++ b/base/test/launcher/unit_test_launcher.cc
@@ -33,7 +33,7 @@ #include "base/third_party/dynamic_annotations/dynamic_annotations.h" #include "base/threading/thread_checker.h" #include "base/threading/thread_task_runner_handle.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX)
diff --git a/base/test/launcher/unit_test_launcher.h b/base/test/launcher/unit_test_launcher.h index 0d1c21e..4e3d314 100644 --- a/base/test/launcher/unit_test_launcher.h +++ b/base/test/launcher/unit_test_launcher.h
@@ -14,7 +14,7 @@ #include "base/files/file_path.h" #include "base/macros.h" #include "base/test/launcher/test_launcher.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/test/multiprocess_test.cc b/base/test/multiprocess_test.cc index 46556f7..7bc26e3 100644 --- a/base/test/multiprocess_test.cc +++ b/base/test/multiprocess_test.cc
@@ -9,7 +9,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/test/multiprocess_test.h b/base/test/multiprocess_test.h index 7c00d37..3fc0b61 100644 --- a/base/test/multiprocess_test.h +++ b/base/test/multiprocess_test.h
@@ -10,7 +10,7 @@ #include "base/macros.h" #include "base/process/launch.h" #include "base/process/process.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/platform_test.h" namespace base {
diff --git a/base/test/native_library_test_utils.h b/base/test/native_library_test_utils.h index e26fd1a..c6c46ff 100644 --- a/base/test/native_library_test_utils.h +++ b/base/test/native_library_test_utils.h
@@ -5,7 +5,7 @@ #ifndef BASE_TEST_NATIVE_LIBRARY_TEST_UTILS_H_ #define BASE_TEST_NATIVE_LIBRARY_TEST_UTILS_H_ -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #define NATIVE_LIBRARY_TEST_ALWAYS_EXPORT __declspec(dllexport)
diff --git a/base/test/perf_test_suite.cc b/base/test/perf_test_suite.cc index 2e2cdbb..e789883 100644 --- a/base/test/perf_test_suite.cc +++ b/base/test/perf_test_suite.cc
@@ -11,7 +11,7 @@ #include "base/process/launch.h" #include "base/strings/string_util.h" #include "base/test/perf_log.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/test/run_all_base_unittests.cc b/base/test/run_all_base_unittests.cc index da52310..5d44604 100644 --- a/base/test/run_all_base_unittests.cc +++ b/base/test/run_all_base_unittests.cc
@@ -5,7 +5,7 @@ #include "base/bind.h" #include "base/test/launcher/unit_test_launcher.h" #include "base/test/test_suite.h" -#include "build/build_config.h" +#include "build_config.h" int main(int argc, char** argv) { base::TestSuite test_suite(argc, argv);
diff --git a/base/test/run_all_unittests.cc b/base/test/run_all_unittests.cc index 0ad84ed..dd5a0ad 100644 --- a/base/test/run_all_unittests.cc +++ b/base/test/run_all_unittests.cc
@@ -5,7 +5,7 @@ #include "base/bind.h" #include "base/test/launcher/unit_test_launcher.h" #include "base/test/test_suite.h" -#include "build/build_config.h" +#include "build_config.h" int main(int argc, char** argv) { base::TestSuite test_suite(argc, argv);
diff --git a/base/test/scoped_task_environment.h b/base/test/scoped_task_environment.h index f9523b3..038cca3 100644 --- a/base/test/scoped_task_environment.h +++ b/base/test/scoped_task_environment.h
@@ -9,7 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/single_thread_task_runner.h" #include "base/task_scheduler/lazy_task_runner.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/test/scoped_task_environment_unittest.cc b/base/test/scoped_task_environment_unittest.cc index 478fa5e..1c10d69 100644 --- a/base/test/scoped_task_environment_unittest.cc +++ b/base/test/scoped_task_environment_unittest.cc
@@ -17,7 +17,7 @@ #include "base/threading/sequence_local_storage_slot.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/tick_clock.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX)
diff --git a/base/test/test_file_util.h b/base/test/test_file_util.h index d9172d7..f167ca7 100644 --- a/base/test/test_file_util.h +++ b/base/test/test_file_util.h
@@ -14,7 +14,7 @@ #include "base/compiler_specific.h" #include "base/files/file_path.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) #include <jni.h>
diff --git a/base/test/test_file_util_posix.cc b/base/test/test_file_util_posix.cc index 87290fb..2082709 100644 --- a/base/test/test_file_util_posix.cc +++ b/base/test/test_file_util_posix.cc
@@ -17,7 +17,7 @@ #include "base/logging.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/test/test_shared_memory_util.cc b/base/test/test_shared_memory_util.cc index cfc96a9..5cde5b1 100644 --- a/base/test/test_shared_memory_util.cc +++ b/base/test/test_shared_memory_util.cc
@@ -10,7 +10,7 @@ #include <stdint.h> #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) && !defined(OS_NACL) #include <errno.h>
diff --git a/base/test/test_suite.cc b/base/test/test_suite.cc index 3d53097..3bbb983 100644 --- a/base/test/test_suite.cc +++ b/base/test/test_suite.cc
@@ -34,7 +34,7 @@ #include "base/test/test_switches.h" #include "base/test/test_timeouts.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h"
diff --git a/base/test/test_suite.h b/base/test/test_suite.h index 6d852ba..3547acf 100644 --- a/base/test/test_suite.h +++ b/base/test/test_suite.h
@@ -17,7 +17,7 @@ #include "base/macros.h" #include "base/test/scoped_feature_list.h" #include "base/test/trace_to_file.h" -#include "build/build_config.h" +#include "build_config.h" namespace testing { class TestInfo;
diff --git a/base/test/test_timeouts.cc b/base/test/test_timeouts.cc index dd5acbc..4c8b4ab 100644 --- a/base/test/test_timeouts.cc +++ b/base/test/test_timeouts.cc
@@ -11,7 +11,7 @@ #include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "base/test/test_switches.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/base/third_party/nspr/prtime.cc b/base/third_party/nspr/prtime.cc index c125160..8a3f7c0 100644 --- a/base/third_party/nspr/prtime.cc +++ b/base/third_party/nspr/prtime.cc
@@ -69,7 +69,7 @@ #include "base/logging.h" #include "base/third_party/nspr/prtime.h" -#include "build/build_config.h" +#include "build_config.h" #include <errno.h> /* for EINVAL */ #include <time.h>
diff --git a/base/threading/platform_thread.h b/base/threading/platform_thread.h index faeb858..b891aef 100644 --- a/base/threading/platform_thread.h +++ b/base/threading/platform_thread.h
@@ -14,7 +14,7 @@ #include "base/base_export.h" #include "base/macros.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/windows_types.h"
diff --git a/base/threading/platform_thread_linux.cc b/base/threading/platform_thread_linux.cc index 190aced..27d83d6 100644 --- a/base/threading/platform_thread_linux.cc +++ b/base/threading/platform_thread_linux.cc
@@ -14,7 +14,7 @@ #include "base/strings/string_number_conversions.h" #include "base/threading/platform_thread_internal_posix.h" #include "base/threading/thread_id_name_manager.h" -#include "build/build_config.h" +#include "build_config.h" #if !defined(OS_NACL) && !defined(OS_AIX) #include <pthread.h>
diff --git a/base/threading/platform_thread_mac.mm b/base/threading/platform_thread_mac.mm index 39d979d..8f50203 100644 --- a/base/threading/platform_thread_mac.mm +++ b/base/threading/platform_thread_mac.mm
@@ -18,7 +18,7 @@ #include "base/mac/foundation_util.h" #include "base/mac/mach_logging.h" #include "base/threading/thread_id_name_manager.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc index 2466b78..a5ddb2e 100644 --- a/base/threading/platform_thread_posix.cc +++ b/base/threading/platform_thread_posix.cc
@@ -21,7 +21,7 @@ #include "base/threading/platform_thread_internal_posix.h" #include "base/threading/thread_id_name_manager.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_LINUX) #include <sys/syscall.h>
diff --git a/base/threading/platform_thread_unittest.cc b/base/threading/platform_thread_unittest.cc index 7eea22e..968f0e0 100644 --- a/base/threading/platform_thread_unittest.cc +++ b/base/threading/platform_thread_unittest.cc
@@ -8,7 +8,7 @@ #include "base/macros.h" #include "base/synchronization/waitable_event.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_POSIX)
diff --git a/base/threading/thread.cc b/base/threading/thread.cc index 97e160f..e3ebb80 100644 --- a/base/threading/thread.cc +++ b/base/threading/thread.cc
@@ -15,7 +15,7 @@ #include "base/threading/thread_id_name_manager.h" #include "base/threading/thread_local.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_POSIX) && !defined(OS_NACL) #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/base/threading/thread.h b/base/threading/thread.h index 9fbdcb8..86a454c 100644 --- a/base/threading/thread.h +++ b/base/threading/thread.h
@@ -21,7 +21,7 @@ #include "base/synchronization/lock.h" #include "base/synchronization/waitable_event.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/threading/thread_local_storage.cc b/base/threading/thread_local_storage.cc index 21fd323..466bd2f 100644 --- a/base/threading/thread_local_storage.cc +++ b/base/threading/thread_local_storage.cc
@@ -7,7 +7,7 @@ #include "base/atomicops.h" #include "base/logging.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" using base::internal::PlatformThreadLocalStorage;
diff --git a/base/threading/thread_local_storage.h b/base/threading/thread_local_storage.h index f84ac33..f9c7e98 100644 --- a/base/threading/thread_local_storage.h +++ b/base/threading/thread_local_storage.h
@@ -10,7 +10,7 @@ #include "base/atomicops.h" #include "base/base_export.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/win/windows_types.h"
diff --git a/base/threading/thread_local_storage_unittest.cc b/base/threading/thread_local_storage_unittest.cc index 9062ff0..006f928 100644 --- a/base/threading/thread_local_storage_unittest.cc +++ b/base/threading/thread_local_storage_unittest.cc
@@ -12,7 +12,7 @@ #include "base/macros.h" #include "base/no_destructor.h" #include "base/threading/simple_thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/threading/thread_perftest.cc b/base/threading/thread_perftest.cc index bf89049..272420e 100644 --- a/base/threading/thread_perftest.cc +++ b/base/threading/thread_perftest.cc
@@ -20,7 +20,7 @@ #include "base/synchronization/waitable_event.h" #include "base/threading/thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/perf/perf_test.h"
diff --git a/base/threading/thread_unittest.cc b/base/threading/thread_unittest.cc index d90b1f9..a1a9ed3 100644 --- a/base/threading/thread_unittest.cc +++ b/base/threading/thread_unittest.cc
@@ -23,7 +23,7 @@ #include "base/third_party/dynamic_annotations/dynamic_annotations.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h"
diff --git a/base/time/pr_time_unittest.cc b/base/time/pr_time_unittest.cc index 6fce4ab..341d778 100644 --- a/base/time/pr_time_unittest.cc +++ b/base/time/pr_time_unittest.cc
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "base/third_party/nspr/prtime.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" using base::Time;
diff --git a/base/time/time.cc b/base/time/time.cc index 9c541a4..577895c 100644 --- a/base/time/time.cc +++ b/base/time/time.cc
@@ -16,7 +16,7 @@ #include "base/strings/stringprintf.h" #include "base/third_party/nspr/prtime.h" #include "base/time/time_override.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/time/time.h b/base/time/time.h index 329dbd3..a760c55 100644 --- a/base/time/time.h +++ b/base/time/time.h
@@ -61,7 +61,7 @@ #include "base/compiler_specific.h" #include "base/logging.h" #include "base/numerics/safe_math.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_FUCHSIA) #include <zircon/types.h>
diff --git a/base/time/time_exploded_posix.cc b/base/time/time_exploded_posix.cc index 627c6b4..ad95167 100644 --- a/base/time/time_exploded_posix.cc +++ b/base/time/time_exploded_posix.cc
@@ -16,7 +16,7 @@ #include "base/numerics/safe_math.h" #include "base/synchronization/lock.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) #include "base/os_compat_android.h"
diff --git a/base/time/time_mac.cc b/base/time/time_mac.cc index 7ae7459..567696d 100644 --- a/base/time/time_mac.cc +++ b/base/time/time_mac.cc
@@ -22,7 +22,7 @@ #include "base/macros.h" #include "base/numerics/safe_conversions.h" #include "base/time/time_override.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_IOS) #include <time.h>
diff --git a/base/time/time_now_posix.cc b/base/time/time_now_posix.cc index 5427836..f19a19f 100644 --- a/base/time/time_now_posix.cc +++ b/base/time/time_now_posix.cc
@@ -15,7 +15,7 @@ #include "base/logging.h" #include "base/numerics/safe_math.h" #include "base/time/time_override.h" -#include "build/build_config.h" +#include "build_config.h" // Ensure the Fuchsia and Mac builds do not include this module. Instead, // non-POSIX implementation is used for sampling the system clocks.
diff --git a/base/time/time_unittest.cc b/base/time/time_unittest.cc index cde5cf5..0471dd4 100644 --- a/base/time/time_unittest.cc +++ b/base/time/time_unittest.cc
@@ -16,7 +16,7 @@ #include "base/strings/stringprintf.h" #include "base/threading/platform_thread.h" #include "base/time/time_override.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_ANDROID)
diff --git a/base/timer/hi_res_timer_manager.h b/base/timer/hi_res_timer_manager.h index bfa316d..8939cd2 100644 --- a/base/timer/hi_res_timer_manager.h +++ b/base/timer/hi_res_timer_manager.h
@@ -10,7 +10,7 @@ #include "base/memory/ref_counted.h" #include "base/power_monitor/power_observer.h" #include "base/timer/timer.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/timer/hi_res_timer_manager_unittest.cc b/base/timer/hi_res_timer_manager_unittest.cc index 43f607a..3860c09 100644 --- a/base/timer/hi_res_timer_manager_unittest.cc +++ b/base/timer/hi_res_timer_manager_unittest.cc
@@ -11,7 +11,7 @@ #include "base/power_monitor/power_monitor_device_source.h" #include "base/test/scoped_task_environment.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc index aaab237..ae587bf 100644 --- a/base/timer/timer_unittest.cc +++ b/base/timer/timer_unittest.cc
@@ -26,7 +26,7 @@ #include "base/threading/thread.h" #include "base/time/tick_clock.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/tools_sanity_unittest.cc b/base/tools_sanity_unittest.cc index 42d45f4..761559e 100644 --- a/base/tools_sanity_unittest.cc +++ b/base/tools_sanity_unittest.cc
@@ -13,7 +13,7 @@ #include "base/debug/profiler.h" #include "base/third_party/dynamic_annotations/dynamic_annotations.h" #include "base/threading/thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/trace_event/heap_profiler_allocation_context_tracker.cc b/base/trace_event/heap_profiler_allocation_context_tracker.cc index 977f3b1..526eac8 100644 --- a/base/trace_event/heap_profiler_allocation_context_tracker.cc +++ b/base/trace_event/heap_profiler_allocation_context_tracker.cc
@@ -14,7 +14,7 @@ #include "base/threading/platform_thread.h" #include "base/threading/thread_local_storage.h" #include "base/trace_event/heap_profiler_allocation_context.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_LINUX) || defined(OS_ANDROID) #include <sys/prctl.h>
diff --git a/base/trace_event/malloc_dump_provider.cc b/base/trace_event/malloc_dump_provider.cc index 975e6eb..04a4dd5 100644 --- a/base/trace_event/malloc_dump_provider.cc +++ b/base/trace_event/malloc_dump_provider.cc
@@ -12,7 +12,7 @@ #include "base/debug/profiler.h" #include "base/trace_event/process_memory_dump.h" #include "base/trace_event/trace_event_argument.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_MACOSX) #include <malloc/malloc.h>
diff --git a/base/trace_event/malloc_dump_provider.h b/base/trace_event/malloc_dump_provider.h index e02eb9d..726c382 100644 --- a/base/trace_event/malloc_dump_provider.h +++ b/base/trace_event/malloc_dump_provider.h
@@ -9,7 +9,7 @@ #include "base/memory/singleton.h" #include "base/synchronization/lock.h" #include "base/trace_event/memory_dump_provider.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || \ (defined(OS_MACOSX) && !defined(OS_IOS))
diff --git a/base/trace_event/memory_allocator_dump_unittest.cc b/base/trace_event/memory_allocator_dump_unittest.cc index b0b6e74..3818629 100644 --- a/base/trace_event/memory_allocator_dump_unittest.cc +++ b/base/trace_event/memory_allocator_dump_unittest.cc
@@ -14,7 +14,7 @@ #include "base/trace_event/process_memory_dump.h" #include "base/trace_event/trace_event_argument.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc index 9e595d6..60ba1bb 100644 --- a/base/trace_event/memory_dump_manager.cc +++ b/base/trace_event/memory_dump_manager.cc
@@ -36,7 +36,7 @@ #include "base/trace_event/process_memory_dump.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event_argument.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_ANDROID) #include "base/trace_event/java_heap_dump_provider_android.h"
diff --git a/base/trace_event/memory_dump_manager_unittest.cc b/base/trace_event/memory_dump_manager_unittest.cc index 2cd6977..8ed5fb3 100644 --- a/base/trace_event/memory_dump_manager_unittest.cc +++ b/base/trace_event/memory_dump_manager_unittest.cc
@@ -32,7 +32,7 @@ #include "base/trace_event/memory_dump_scheduler.h" #include "base/trace_event/memory_infra_background_whitelist.h" #include "base/trace_event/process_memory_dump.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/trace_event/memory_peak_detector.cc b/base/trace_event/memory_peak_detector.cc index 5419594..5f2ea91 100644 --- a/base/trace_event/memory_peak_detector.cc +++ b/base/trace_event/memory_peak_detector.cc
@@ -14,7 +14,7 @@ #include "base/trace_event/memory_dump_manager.h" #include "base/trace_event/memory_dump_provider_info.h" #include "base/trace_event/trace_event.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace trace_event {
diff --git a/base/trace_event/memory_usage_estimator_unittest.cc b/base/trace_event/memory_usage_estimator_unittest.cc index b525990..7f8efc7 100644 --- a/base/trace_event/memory_usage_estimator_unittest.cc +++ b/base/trace_event/memory_usage_estimator_unittest.cc
@@ -8,7 +8,7 @@ #include "base/memory/ptr_util.h" #include "base/strings/string16.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(ARCH_CPU_64_BITS)
diff --git a/base/trace_event/process_memory_dump.cc b/base/trace_event/process_memory_dump.cc index 7442578..d565b47 100644 --- a/base/trace_event/process_memory_dump.cc +++ b/base/trace_event/process_memory_dump.cc
@@ -17,7 +17,7 @@ #include "base/trace_event/memory_infra_background_whitelist.h" #include "base/trace_event/trace_event_argument.h" #include "base/unguessable_token.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_IOS) #include <mach/vm_page_size.h>
diff --git a/base/trace_event/process_memory_dump.h b/base/trace_event/process_memory_dump.h index a732a26..b2ce66f 100644 --- a/base/trace_event/process_memory_dump.h +++ b/base/trace_event/process_memory_dump.h
@@ -18,7 +18,7 @@ #include "base/trace_event/memory_allocator_dump.h" #include "base/trace_event/memory_allocator_dump_guid.h" #include "base/trace_event/memory_dump_request_args.h" -#include "build/build_config.h" +#include "build_config.h" // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the // resident memory.
diff --git a/base/trace_event/process_memory_dump_unittest.cc b/base/trace_event/process_memory_dump_unittest.cc index f1209ca..b33a39e 100644 --- a/base/trace_event/process_memory_dump_unittest.cc +++ b/base/trace_event/process_memory_dump_unittest.cc
@@ -14,7 +14,7 @@ #include "base/trace_event/memory_infra_background_whitelist.h" #include "base/trace_event/trace_event_argument.h" #include "base/trace_event/trace_log.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h index 2569f5e..e3ee400 100644 --- a/base/trace_event/trace_event.h +++ b/base/trace_event/trace_event.h
@@ -23,7 +23,7 @@ #include "base/trace_event/trace_category.h" #include "base/trace_event/trace_event_system_stats_monitor.h" #include "base/trace_event/trace_log.h" -#include "build/build_config.h" +#include "build_config.h" // By default, const char* argument values are assumed to have long-lived scope // and will not be copied. Use this macro to force a const char* to be copied.
diff --git a/base/trace_event/trace_event_impl.h b/base/trace_event/trace_event_impl.h index b1c67b1..af47f49 100644 --- a/base/trace_event/trace_event_impl.h +++ b/base/trace_event/trace_event_impl.h
@@ -24,7 +24,7 @@ #include "base/synchronization/lock.h" #include "base/threading/thread_local.h" #include "base/trace_event/trace_event_memory_overhead.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace trace_event {
diff --git a/base/trace_event/trace_event_system_stats_monitor_unittest.cc b/base/trace_event/trace_event_system_stats_monitor_unittest.cc index 52a05ba..978746d 100644 --- a/base/trace_event/trace_event_system_stats_monitor_unittest.cc +++ b/base/trace_event/trace_event_system_stats_monitor_unittest.cc
@@ -11,7 +11,7 @@ #include "base/message_loop/message_loop.h" #include "base/run_loop.h" #include "base/trace_event/trace_event_impl.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc index 338e0f6..0012c09 100644 --- a/base/trace_event/trace_log.cc +++ b/base/trace_event/trace_log.cc
@@ -43,7 +43,7 @@ #include "base/trace_event/process_memory_dump.h" #include "base/trace_event/trace_buffer.h" #include "base/trace_event/trace_event.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include "base/trace_event/trace_event_etw_export_win.h"
diff --git a/base/trace_event/trace_log.h b/base/trace_event/trace_log.h index 2c23189..56df18d 100644 --- a/base/trace_event/trace_log.h +++ b/base/trace_event/trace_log.h
@@ -21,7 +21,7 @@ #include "base/trace_event/memory_dump_provider.h" #include "base/trace_event/trace_config.h" #include "base/trace_event/trace_event_impl.h" -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/tuple.h b/base/tuple.h index 58681d5..393e17b 100644 --- a/base/tuple.h +++ b/base/tuple.h
@@ -29,7 +29,7 @@ #include <tuple> #include <utility> -#include "build/build_config.h" +#include "build_config.h" namespace base {
diff --git a/base/win/com_init_check_hook.h b/base/win/com_init_check_hook.h index c998233..3f1fbcd 100644 --- a/base/win/com_init_check_hook.h +++ b/base/win/com_init_check_hook.h
@@ -8,7 +8,7 @@ #include "base/base_export.h" #include "base/logging.h" #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" namespace base { namespace win {
diff --git a/base/win/pe_image_unittest.cc b/base/win/pe_image_unittest.cc index 7890ce6..2216449 100644 --- a/base/win/pe_image_unittest.cc +++ b/base/win/pe_image_unittest.cc
@@ -10,7 +10,7 @@ #include "base/path_service.h" #include "base/scoped_native_library.h" #include "base/win/pe_image.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base {
diff --git a/build/BUILD.gn b/build/BUILD.gn deleted file mode 100644 index 7ab955a..0000000 --- a/build/BUILD.gn +++ /dev/null
@@ -1,9 +0,0 @@ -# Copyright 2018 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. - -source_set("buildflag_header_h") { - sources = [ - "buildflag.h", - ] -}
diff --git a/build/OWNERS b/build/OWNERS deleted file mode 100644 index 0b659dd..0000000 --- a/build/OWNERS +++ /dev/null
@@ -1,27 +0,0 @@ -agrieve@chromium.org -dpranke@chromium.org -jbudorick@chromium.org -jochen@chromium.org -scottmg@chromium.org -thakis@chromium.org -brucedawson@chromium.org - -# Clang build config changes -hans@chromium.org - -per-file .gitignore=* -per-file check_gn_headers_whitelist.txt=* -per-file install-build-deps.sh=thomasanderson@chromium.org -per-file mac_toolchain.py=erikchen@chromium.org -per-file mac_toolchain.py=justincohen@chromium.org -per-file package_mac_toolchain.py=erikchen@chromium.org -per-file package_mac_toolchain.py=justincohen@chromium.org -per-file whitespace_file.txt=* -per-file OWNERS.status=* - -# gn-dev is probably a better team here, but the tooling won't let us -# have more than one team per component, and infra-dev is a catch-all -# for other build-related lists. -# -# TEAM: infra-dev@chromium.org -# COMPONENT: Build
diff --git a/build/OWNERS.status b/build/OWNERS.status deleted file mode 100644 index f5cc1fc..0000000 --- a/build/OWNERS.status +++ /dev/null
@@ -1,12 +0,0 @@ -# Use this file to set a global status message that should be shown whenever -# git cl owners proposes to add you as a reviewer. -# -# The status messages should be somewhat stable, so please don't use this for -# short term, or frequently changing updates. -# -# The format of the file is -# -# you@chromium.org: Single line status message. -# - -jochen@chromium.org: EMEA based reviewer.
diff --git a/build/PRESUBMIT.py b/build/PRESUBMIT.py deleted file mode 100644 index b886326..0000000 --- a/build/PRESUBMIT.py +++ /dev/null
@@ -1,26 +0,0 @@ -# Copyright (c) 2017 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. - -"""Presubmit script for //build. - -See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts -for more details about the presubmit API built into depot_tools. -""" - -def PostUploadHook(cl, change, output_api): - """git cl upload will call this hook after the issue is created/modified. - - This hook modifies the CL description in order to run extra tests. - """ - - def affects_gn_checker(f): - return 'check_gn_headers' in f.LocalPath() - if not change.AffectedFiles(file_filter=affects_gn_checker): - return [] - return output_api.EnsureCQIncludeTrybotsAreAdded( - cl, - [ - 'luci.chromium.try:linux_chromium_dbg_ng', - ], - 'Automatically added tests to run on CQ.')
diff --git a/build/apply_locales.py b/build/apply_locales.py deleted file mode 100755 index 6af7280..0000000 --- a/build/apply_locales.py +++ /dev/null
@@ -1,45 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2009 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. - -# TODO: remove this script when GYP has for loops - -import sys -import optparse - -def main(argv): - - parser = optparse.OptionParser() - usage = 'usage: %s [options ...] format_string locale_list' - parser.set_usage(usage.replace('%s', '%prog')) - parser.add_option('-d', dest='dash_to_underscore', action="store_true", - default=False, - help='map "en-US" to "en" and "-" to "_" in locales') - - (options, arglist) = parser.parse_args(argv) - - if len(arglist) < 3: - print 'ERROR: need string and list of locales' - return 1 - - str_template = arglist[1] - locales = arglist[2:] - - results = [] - for locale in locales: - # For Cocoa to find the locale at runtime, it needs to use '_' instead - # of '-' (http://crbug.com/20441). Also, 'en-US' should be represented - # simply as 'en' (http://crbug.com/19165, http://crbug.com/25578). - if options.dash_to_underscore: - if locale == 'en-US': - locale = 'en' - locale = locale.replace('-', '_') - results.append(str_template.replace('ZZLOCALE', locale)) - - # Quote each element so filename spaces don't mess up GYP's attempt to parse - # it into a list. - print ' '.join(["'%s'" % x for x in results]) - -if __name__ == '__main__': - sys.exit(main(sys.argv))
diff --git a/build/args/OWNERS b/build/args/OWNERS deleted file mode 100644 index d218b6b..0000000 --- a/build/args/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -per-file headless.gn=file://headless/OWNERS
diff --git a/build/args/README.txt b/build/args/README.txt deleted file mode 100644 index 825bf64..0000000 --- a/build/args/README.txt +++ /dev/null
@@ -1,31 +0,0 @@ -This directory is here to hold .gni files that contain sets of GN build -arguments for given configurations. - -(Currently this directory is empty because we removed the only thing here, but -this has come up several times so I'm confident we'll need this again. If this -directory is still empty by 2017, feel free to delete it. --Brett) - -Some projects or bots may have build configurations with specific combinations -of flags. Rather than making a new global flag for your specific project and -adding it all over the build to each arg it should affect, you can add a .gni -file here with the variables. - -For example, for project foo you may put in build/args/foo.gni: - - target_os = "android" - use_pulseaudio = false - use_ozone = true - system_libdir = "foo" - -Users wanting to build this configuration would run: - - $ gn args out/mybuild - -And add the following line to their args for that build directory: - - import("//build/args/foo.gni") - # You can set any other args here like normal. - is_component_build = false - -This way everybody can agree on a set of flags for a project, and their builds -stay in sync as the flags in foo.gni are modified.
diff --git a/build/args/fuchsia.gn b/build/args/fuchsia.gn deleted file mode 100644 index ba10b88..0000000 --- a/build/args/fuchsia.gn +++ /dev/null
@@ -1,7 +0,0 @@ -import("//build/args/headless.gn") - -target_os = "fuchsia" -enable_basic_printing = false -headless_fontconfig_utils = false -toolkit_views = false -enable_plugins = false
diff --git a/build/args/headless.gn b/build/args/headless.gn deleted file mode 100644 index ae5e043..0000000 --- a/build/args/headless.gn +++ /dev/null
@@ -1,42 +0,0 @@ -# GN args template for the Headless Chrome library -# -# Add import to arg.gn in out directory and run gn gen on the directory to use. -# E.g. for out directory out/foo: -# echo 'import("//build/args/headless.gn")' > out/foo/args.gn -# gn gen out/foo -# -# Use gn args to add your own build preference args. - -use_ozone = true -ozone_auto_platforms = false -ozone_platform = "headless" -ozone_platform_headless = true - -# Embed resource.pak into binary to simplify deployment. -headless_use_embedded_resources = true - -# Expose headless bindings for freetype library bundled with Chromium. -headless_fontconfig_utils = true - -# Remove a dependency on a system fontconfig library. -use_bundled_fontconfig = true - -# In order to simplify deployment we build ICU data file -# into binary. -icu_use_data_file = false - -# Use embedded data instead external files for headless in order -# to simplify deployment. -v8_use_external_startup_data = false - -enable_nacl = false -enable_print_preview = false -enable_remoting = false -use_alsa = false -use_cups = false -use_dbus = false -use_gio = false -use_kerberos = false -use_libpci = false -use_pulseaudio = false -use_udev = false
diff --git a/build/branding_value.sh b/build/branding_value.sh deleted file mode 100755 index 9fcb550..0000000 --- a/build/branding_value.sh +++ /dev/null
@@ -1,51 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2008 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. - -# This is a wrapper for fetching values from the BRANDING files. Pass the -# value of GYP's branding variable followed by the key you want and the right -# file is checked. -# -# branding_value.sh Chromium COPYRIGHT -# branding_value.sh Chromium PRODUCT_FULLNAME -# - -set -e - -if [ $# -ne 2 ] ; then - echo "error: expect two arguments, branding and key" >&2 - exit 1 -fi - -BUILD_BRANDING=$1 -THE_KEY=$2 - -pushd $(dirname "${0}") > /dev/null -BUILD_DIR=$(pwd) -popd > /dev/null - -TOP="${BUILD_DIR}/.." - -case ${BUILD_BRANDING} in - Chromium) - BRANDING_FILE="${TOP}/chrome/app/theme/chromium/BRANDING" - ;; - Chrome) - BRANDING_FILE="${TOP}/chrome/app/theme/google_chrome/BRANDING" - ;; - *) - echo "error: unknown branding: ${BUILD_BRANDING}" >&2 - exit 1 - ;; -esac - -BRANDING_VALUE=$(sed -n -e "s/^${THE_KEY}=\(.*\)\$/\1/p" "${BRANDING_FILE}") - -if [ -z "${BRANDING_VALUE}" ] ; then - echo "error: failed to find key '${THE_KEY}'" >&2 - exit 1 -fi - -echo "${BRANDING_VALUE}"
diff --git a/build/build-ctags.sh b/build/build-ctags.sh deleted file mode 100755 index 61e017e..0000000 --- a/build/build-ctags.sh +++ /dev/null
@@ -1,49 +0,0 @@ -#!/bin/bash - -# Copyright 2013 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. - -if [[ a"`ctags --version | head -1 | grep \"^Exuberant Ctags\"`" == "a" ]]; then - cat <<EOF - You must be using Exuberant Ctags, not just standard GNU ctags. If you are on - Debian or a related flavor of Linux, you may want to try running - apt-get install exuberant-ctags. -EOF - exit -fi - -CHROME_SRC_DIR="$PWD" - -fail() { - echo "Failed to create ctags for $1" - exit 1 -} - -ctags_cmd() { - echo "ctags --languages=C++ $1 --exclude=.git -R -f .tmp_tags" -} - -build_dir() { - local extraexcludes="" - if [[ a"$1" == "a--extra-excludes" ]]; then - extraexcludes="--exclude=third_party --exclude=build --exclude=out" - shift - fi - - cd "$CHROME_SRC_DIR/$1" || fail $1 - # Redirect error messages so they aren't seen because they are almost always - # errors about components that you just happen to have not built (NaCl, for - # example). - $(ctags_cmd "$extraexcludes") 2> /dev/null || fail $1 - mv -f .tmp_tags tags -} - -# We always build the top level but leave all submodules as optional. -build_dir --extra-excludes "" "top level" - -# Build any other directies that are listed on the command line. -for dir in $@; do - build_dir "$1" - shift -done
diff --git a/tools/gn/bootstrap/build.ninja.template b/build/build.ninja.template similarity index 100% rename from tools/gn/bootstrap/build.ninja.template rename to build/build.ninja.template
diff --git a/tools/gn/bootstrap/build_aix.ninja.template b/build/build_aix.ninja.template similarity index 100% rename from tools/gn/bootstrap/build_aix.ninja.template rename to build/build_aix.ninja.template
diff --git a/build/build_config.h b/build/build_config.h deleted file mode 100644 index c7b0266..0000000 --- a/build/build_config.h +++ /dev/null
@@ -1,207 +0,0 @@ -// Copyright (c) 2012 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. - -// This file adds defines about the platform we're currently building on. -// Operating System: -// OS_WIN / OS_MACOSX / OS_LINUX / OS_POSIX (MACOSX or LINUX) / -// OS_NACL (NACL_SFI or NACL_NONSFI) / OS_NACL_SFI / OS_NACL_NONSFI -// OS_CHROMEOS is set by the build system -// Compiler: -// COMPILER_MSVC / COMPILER_GCC -// Processor: -// ARCH_CPU_X86 / ARCH_CPU_X86_64 / ARCH_CPU_X86_FAMILY (X86 or X86_64) -// ARCH_CPU_32_BITS / ARCH_CPU_64_BITS - -#ifndef BUILD_BUILD_CONFIG_H_ -#define BUILD_BUILD_CONFIG_H_ - -// A set of macros to use for platform detection. -#if defined(__native_client__) -// __native_client__ must be first, so that other OS_ defines are not set. -#define OS_NACL 1 -// OS_NACL comes in two sandboxing technology flavors, SFI or Non-SFI. -// PNaCl toolchain defines __native_client_nonsfi__ macro in Non-SFI build -// mode, while it does not in SFI build mode. -#if defined(__native_client_nonsfi__) -#define OS_NACL_NONSFI -#else -#define OS_NACL_SFI -#endif -#elif defined(ANDROID) -#define OS_ANDROID 1 -#elif defined(__APPLE__) -// only include TargetConditions after testing ANDROID as some android builds -// on mac don't have this header available and it's not needed unless the target -// is really mac/ios. -#include <TargetConditionals.h> -#define OS_MACOSX 1 -#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE -#define OS_IOS 1 -#endif // defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE -#elif defined(__linux__) -#define OS_LINUX 1 -// include a system header to pull in features.h for glibc/uclibc macros. -#include <unistd.h> -#if defined(__GLIBC__) && !defined(__UCLIBC__) -// we really are using glibc, not uClibc pretending to be glibc -#define LIBC_GLIBC 1 -#endif -#elif defined(_WIN32) -#define OS_WIN 1 -#elif defined(__Fuchsia__) -#define OS_FUCHSIA 1 -#elif defined(__FreeBSD__) -#define OS_FREEBSD 1 -#elif defined(__NetBSD__) -#define OS_NETBSD 1 -#elif defined(__OpenBSD__) -#define OS_OPENBSD 1 -#elif defined(__sun) -#define OS_SOLARIS 1 -#elif defined(__QNXNTO__) -#define OS_QNX 1 -#elif defined(_AIX) -#define OS_AIX 1 -#elif defined(__asmjs__) -#define OS_ASMJS -#else -#error Please add support for your platform in build/build_config.h -#endif -// NOTE: Adding a new port? Please follow -// https://chromium.googlesource.com/chromium/src/+/master/docs/new_port_policy.md - -// For access to standard BSD features, use OS_BSD instead of a -// more specific macro. -#if defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_OPENBSD) -#define OS_BSD 1 -#endif - -// For access to standard POSIXish features, use OS_POSIX instead of a -// more specific macro. -#if defined(OS_AIX) || defined(OS_ANDROID) || defined(OS_ASMJS) || \ - defined(OS_FREEBSD) || defined(OS_LINUX) || defined(OS_MACOSX) || \ - defined(OS_NACL) || defined(OS_NETBSD) || defined(OS_OPENBSD) || \ - defined(OS_QNX) || defined(OS_SOLARIS) -#define OS_POSIX 1 -#endif - -// Use tcmalloc -#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID)) && \ - !defined(NO_TCMALLOC) -#define USE_TCMALLOC 1 -#endif - -// Compiler detection. -#if defined(__GNUC__) -#define COMPILER_GCC 1 -#elif defined(_MSC_VER) -#define COMPILER_MSVC 1 -#else -#error Please add support for your compiler in build/build_config.h -#endif - -// Processor architecture detection. For more info on what's defined, see: -// http://msdn.microsoft.com/en-us/library/b0084kay.aspx -// http://www.agner.org/optimize/calling_conventions.pdf -// or with gcc, run: "echo | gcc -E -dM -" -#if defined(_M_X64) || defined(__x86_64__) -#define ARCH_CPU_X86_FAMILY 1 -#define ARCH_CPU_X86_64 1 -#define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#elif defined(_M_IX86) || defined(__i386__) -#define ARCH_CPU_X86_FAMILY 1 -#define ARCH_CPU_X86 1 -#define ARCH_CPU_32_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#elif defined(__s390x__) -#define ARCH_CPU_S390_FAMILY 1 -#define ARCH_CPU_S390X 1 -#define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_BIG_ENDIAN 1 -#elif defined(__s390__) -#define ARCH_CPU_S390_FAMILY 1 -#define ARCH_CPU_S390 1 -#define ARCH_CPU_31_BITS 1 -#define ARCH_CPU_BIG_ENDIAN 1 -#elif (defined(__PPC64__) || defined(__PPC__)) && defined(__BIG_ENDIAN__) -#define ARCH_CPU_PPC64_FAMILY 1 -#define ARCH_CPU_PPC64 1 -#define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_BIG_ENDIAN 1 -#elif defined(__PPC64__) -#define ARCH_CPU_PPC64_FAMILY 1 -#define ARCH_CPU_PPC64 1 -#define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#elif defined(__ARMEL__) -#define ARCH_CPU_ARM_FAMILY 1 -#define ARCH_CPU_ARMEL 1 -#define ARCH_CPU_32_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#elif defined(__aarch64__) -#define ARCH_CPU_ARM_FAMILY 1 -#define ARCH_CPU_ARM64 1 -#define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#elif defined(__pnacl__) || defined(__asmjs__) -#define ARCH_CPU_32_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#elif defined(__MIPSEL__) -#if defined(__LP64__) -#define ARCH_CPU_MIPS_FAMILY 1 -#define ARCH_CPU_MIPS64EL 1 -#define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#else -#define ARCH_CPU_MIPS_FAMILY 1 -#define ARCH_CPU_MIPSEL 1 -#define ARCH_CPU_32_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 -#endif -#elif defined(__MIPSEB__) -#if defined(__LP64__) -#define ARCH_CPU_MIPS_FAMILY 1 -#define ARCH_CPU_MIPS64 1 -#define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_BIG_ENDIAN 1 -#else -#define ARCH_CPU_MIPS_FAMILY 1 -#define ARCH_CPU_MIPS 1 -#define ARCH_CPU_32_BITS 1 -#define ARCH_CPU_BIG_ENDIAN 1 -#endif -#else -#error Please add support for your architecture in build/build_config.h -#endif - -// Type detection for wchar_t. -#if defined(OS_WIN) -#define WCHAR_T_IS_UTF16 -#elif defined(OS_FUCHSIA) -#define WCHAR_T_IS_UTF32 -#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \ - (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff) -#define WCHAR_T_IS_UTF32 -#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \ - (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff) -// On Posix, we'll detect short wchar_t, but projects aren't guaranteed to -// compile in this mode (in particular, Chrome doesn't). This is intended for -// other projects using base who manage their own dependencies and make sure -// short wchar works for them. -#define WCHAR_T_IS_UTF16 -#else -#error Please add support for your compiler in build/build_config.h -#endif - -#if defined(OS_ANDROID) -// The compiler thinks std::string::const_iterator and "const char*" are -// equivalent types. -#define STD_STRING_ITERATOR_IS_CHAR_POINTER -// The compiler thinks base::string16::const_iterator and "char16*" are -// equivalent types. -#define BASE_STRING16_ITERATOR_IS_CHAR16_POINTER -#endif - -#endif // BUILD_BUILD_CONFIG_H_
diff --git a/tools/gn/bootstrap/build_mac.ninja.template b/build/build_mac.ninja.template similarity index 100% rename from tools/gn/bootstrap/build_mac.ninja.template rename to build/build_mac.ninja.template
diff --git a/tools/gn/bootstrap/build_vs.ninja.template b/build/build_vs.ninja.template similarity index 100% rename from tools/gn/bootstrap/build_vs.ninja.template rename to build/build_vs.ninja.template
diff --git a/build/buildflag.h b/build/buildflag.h deleted file mode 100644 index 5776a75..0000000 --- a/build/buildflag.h +++ /dev/null
@@ -1,47 +0,0 @@ -// 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. - -#ifndef BUILD_BUILDFLAG_H_ -#define BUILD_BUILDFLAG_H_ - -// These macros un-mangle the names of the build flags in a way that looks -// natural, and gives errors if the flag is not defined. Normally in the -// preprocessor it's easy to make mistakes that interpret "you haven't done -// the setup to know what the flag is" as "flag is off". Normally you would -// include the generated header rather than include this file directly. -// -// This is for use with generated headers. See build/buildflag_header.gni. - -// This dance of two macros does a concatenation of two preprocessor args using -// ## doubly indirectly because using ## directly prevents macros in that -// parameter from being expanded. -#define BUILDFLAG_CAT_INDIRECT(a, b) a ## b -#define BUILDFLAG_CAT(a, b) BUILDFLAG_CAT_INDIRECT(a, b) - -// Accessor for build flags. -// -// To test for a value, if the build file specifies: -// -// ENABLE_FOO=true -// -// Then you would check at build-time in source code with: -// -// #include "foo_flags.h" // The header the build file specified. -// -// #if BUILDFLAG(ENABLE_FOO) -// ... -// #endif -// -// There will no #define called ENABLE_FOO so if you accidentally test for -// whether that is defined, it will always be negative. You can also use -// the value in expressions: -// -// const char kSpamServerName[] = BUILDFLAG(SPAM_SERVER_NAME); -// -// Because the flag is accessed as a preprocessor macro with (), an error -// will be thrown if the proper header defining the internal flag value has -// not been included. -#define BUILDFLAG(flag) (BUILDFLAG_CAT(BUILDFLAG_INTERNAL_, flag)()) - -#endif // BUILD_BUILDFLAG_H_
diff --git a/build/buildflag_header.gni b/build/buildflag_header.gni deleted file mode 100644 index 281c164..0000000 --- a/build/buildflag_header.gni +++ /dev/null
@@ -1,141 +0,0 @@ -# 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. - -# Generates a header with preprocessor defines specified by the build file. -# -# The flags are converted to function-style defines with mangled names and -# code uses an accessor macro to access the values. This is to try to -# minimize bugs where code checks whether something is defined or not, and -# the proper header isn't included, meaning the answer will always be silently -# false or might vary across the code base. -# -# In the GN template, specify build flags in the template as a list -# of strings that encode key/value pairs like this: -# -# flags = [ "ENABLE_FOO=1", "ENABLE_BAR=$enable_bar" ] -# -# The GN values "true" and "false" will be mapped to 0 and 1 for boolean -# #if flags to be expressed naturally. This means you can't directly make a -# define that generates C++ value of true or false for use in code. If you -# REALLY need this, you can also use the string "(true)" and "(false)" to -# prevent the rewriting. - -# To check the value of the flag in C code: -# -# #include "path/to/here/header_file.h" -# -# #if BUILDFLAG(ENABLE_FOO) -# ... -# #endif -# -# const char kSpamServerUrl[] = BUILDFLAG(SPAM_SERVER_URL); -# -# There will no #define called ENABLE_FOO so if you accidentally test for that -# in an ifdef it will always be negative. -# -# -# Template parameters -# -# flags [required, list of strings] -# Flag values as described above. -# -# header [required, string] -# File name for generated header. By default, this will go in the -# generated file directory for this target, and you would include it -# with: -# #include "<path_to_this_BUILD_file>/<header>" -# -# header_dir [optional, string] -# Override the default location of the generated header. The string will -# be treated as a subdirectory of the root_gen_dir. For example: -# header_dir = "foo/bar" -# Then you can include the header as: -# #include "foo/bar/baz.h" -# -# deps, public_deps, testonly, visibility -# Normal meaning. -# -# -# Grit defines -# -# If one .grd file uses a flag, just add to the grit target: -# -# defines = [ -# "enable_doom_melon=$enable_doom_melon", -# ] -# -# If multiple .grd files use it, you'll want to put the defines in a .gni file -# so it can be shared. Generally this .gni file should include all grit defines -# for a given module (for some definition of "module"). Then do: -# -# defines = ui_grit_defines -# -# If you forget to do this, the flag will be implicitly false in the .grd file -# and those resources won't be compiled. You'll know because the resource -# #define won't be generated and any code that uses it won't compile. If you -# see a missing IDS_* string, this is probably the reason. -# -# -# Example -# -# buildflag_header("foo_buildflags") { -# header = "foo_buildflags.h" -# -# flags = [ -# # This uses the GN build flag enable_doom_melon as the definition. -# "ENABLE_DOOM_MELON=$enable_doom_melon", -# -# # This force-enables the flag. -# "ENABLE_SPACE_LASER=true", -# -# # This will expand to the quoted C string when used in source code. -# "SPAM_SERVER_URL=\"http://www.example.com/\"", -# ] -# } -template("buildflag_header") { - action(target_name) { - script = "//build/write_buildflag_header.py" - - if (defined(invoker.header_dir)) { - header_file = "${invoker.header_dir}/${invoker.header}" - } else { - # Compute the path from the root to this file. - header_file = rebase_path(".", "//") + "/${invoker.header}" - } - - outputs = [ - "$root_gen_dir/$header_file", - ] - - # Always write --flags to the file so it's not empty. Empty will confuse GN - # into thinking the response file isn't used. - response_file_contents = [ "--flags" ] - if (defined(invoker.flags)) { - response_file_contents += invoker.flags - } - - args = [ - "--output", - header_file, # Not rebased, Python script puts it inside gen-dir. - "--rulename", - get_label_info(":$target_name", "label_no_toolchain"), - "--gen-dir", - rebase_path(root_gen_dir, root_build_dir), - "--definitions", - "{{response_file_name}}", - ] - - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - "visibility", - ]) - - public_deps = [ - "//build:buildflag_header_h", - ] - } -}
diff --git a/build/check_gn_headers.py b/build/check_gn_headers.py deleted file mode 100755 index f6ae8f5..0000000 --- a/build/check_gn_headers.py +++ /dev/null
@@ -1,304 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""Find header files missing in GN. - -This script gets all the header files from ninja_deps, which is from the true -dependency generated by the compiler, and report if they don't exist in GN. -""" - -import argparse -import json -import os -import re -import shutil -import subprocess -import sys -import tempfile -from multiprocessing import Process, Queue - -SRC_DIR = os.path.abspath( - os.path.join(os.path.abspath(os.path.dirname(__file__)), os.path.pardir)) -DEPOT_TOOLS_DIR = os.path.join(SRC_DIR, 'third_party', 'depot_tools') - - -def GetHeadersFromNinja(out_dir, skip_obj, q): - """Return all the header files from ninja_deps""" - - def NinjaSource(): - cmd = [os.path.join(DEPOT_TOOLS_DIR, 'ninja'), '-C', out_dir, '-t', 'deps'] - # A negative bufsize means to use the system default, which usually - # means fully buffered. - popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=-1) - for line in iter(popen.stdout.readline, ''): - yield line.rstrip() - - popen.stdout.close() - return_code = popen.wait() - if return_code: - raise subprocess.CalledProcessError(return_code, cmd) - - ans, err = set(), None - try: - ans = ParseNinjaDepsOutput(NinjaSource(), out_dir, skip_obj) - except Exception as e: - err = str(e) - q.put((ans, err)) - - -def ParseNinjaDepsOutput(ninja_out, out_dir, skip_obj): - """Parse ninja output and get the header files""" - all_headers = {} - - # Ninja always uses "/", even on Windows. - prefix = '../../' - - is_valid = False - obj_file = '' - for line in ninja_out: - if line.startswith(' '): - if not is_valid: - continue - if line.endswith('.h') or line.endswith('.hh'): - f = line.strip() - if f.startswith(prefix): - f = f[6:] # Remove the '../../' prefix - # build/ only contains build-specific files like build_config.h - # and buildflag.h, and system header files, so they should be - # skipped. - if f.startswith(out_dir) or f.startswith('out'): - continue - if not f.startswith('build'): - all_headers.setdefault(f, []) - if not skip_obj: - all_headers[f].append(obj_file) - else: - is_valid = line.endswith('(VALID)') - obj_file = line.split(':')[0] - - return all_headers - - -def GetHeadersFromGN(out_dir, q): - """Return all the header files from GN""" - - tmp = None - ans, err = set(), None - try: - # Argument |dir| is needed to make sure it's on the same drive on Windows. - # dir='' means dir='.', but doesn't introduce an unneeded prefix. - tmp = tempfile.mkdtemp(dir='') - shutil.copy2(os.path.join(out_dir, 'args.gn'), - os.path.join(tmp, 'args.gn')) - # Do "gn gen" in a temp dir to prevent dirtying |out_dir|. - gn_exe = 'gn.bat' if sys.platform == 'win32' else 'gn' - subprocess.check_call([ - os.path.join(DEPOT_TOOLS_DIR, gn_exe), 'gen', tmp, '--ide=json', '-q']) - gn_json = json.load(open(os.path.join(tmp, 'project.json'))) - ans = ParseGNProjectJSON(gn_json, out_dir, tmp) - except Exception as e: - err = str(e) - finally: - if tmp: - shutil.rmtree(tmp) - q.put((ans, err)) - - -def ParseGNProjectJSON(gn, out_dir, tmp_out): - """Parse GN output and get the header files""" - all_headers = set() - - for _target, properties in gn['targets'].iteritems(): - sources = properties.get('sources', []) - public = properties.get('public', []) - # Exclude '"public": "*"'. - if type(public) is list: - sources += public - for f in sources: - if f.endswith('.h') or f.endswith('.hh'): - if f.startswith('//'): - f = f[2:] # Strip the '//' prefix. - if f.startswith(tmp_out): - f = out_dir + f[len(tmp_out):] - all_headers.add(f) - - return all_headers - - -def GetDepsPrefixes(q): - """Return all the folders controlled by DEPS file""" - prefixes, err = set(), None - try: - gclient_exe = 'gclient.bat' if sys.platform == 'win32' else 'gclient' - gclient_out = subprocess.check_output([ - os.path.join(DEPOT_TOOLS_DIR, gclient_exe), - 'recurse', '--no-progress', '-j1', - 'python', '-c', 'import os;print os.environ["GCLIENT_DEP_PATH"]'], - universal_newlines=True) - for i in gclient_out.split('\n'): - if i.startswith('src/'): - i = i[4:] - prefixes.add(i) - except Exception as e: - err = str(e) - q.put((prefixes, err)) - - -def IsBuildClean(out_dir): - cmd = [os.path.join(DEPOT_TOOLS_DIR, 'ninja'), '-C', out_dir, '-n'] - try: - out = subprocess.check_output(cmd) - return 'no work to do.' in out - except Exception as e: - print e - return False - -def ParseWhiteList(whitelist): - out = set() - for line in whitelist.split('\n'): - line = re.sub(r'#.*', '', line).strip() - if line: - out.add(line) - return out - - -def FilterOutDepsedRepo(files, deps): - return {f for f in files if not any(f.startswith(d) for d in deps)} - - -def GetNonExistingFiles(lst): - out = set() - for f in lst: - if not os.path.isfile(f): - out.add(f) - return out - - -def main(): - - def DumpJson(data): - if args.json: - with open(args.json, 'w') as f: - json.dump(data, f) - - def PrintError(msg): - DumpJson([]) - parser.error(msg) - - parser = argparse.ArgumentParser(description=''' - NOTE: Use ninja to build all targets in OUT_DIR before running - this script.''') - parser.add_argument('--out-dir', metavar='OUT_DIR', default='out/Release', - help='output directory of the build') - parser.add_argument('--json', - help='JSON output filename for missing headers') - parser.add_argument('--whitelist', help='file containing whitelist') - parser.add_argument('--skip-dirty-check', action='store_true', - help='skip checking whether the build is dirty') - parser.add_argument('--verbose', action='store_true', - help='print more diagnostic info') - - args, _extras = parser.parse_known_args() - - if not os.path.isdir(args.out_dir): - parser.error('OUT_DIR "%s" does not exist.' % args.out_dir) - - if not args.skip_dirty_check and not IsBuildClean(args.out_dir): - dirty_msg = 'OUT_DIR looks dirty. You need to build all there.' - if args.json: - # Assume running on the bots. Silently skip this step. - # This is possible because "analyze" step can be wrong due to - # underspecified header files. See crbug.com/725877 - print dirty_msg - DumpJson([]) - return 0 - else: - # Assume running interactively. - parser.error(dirty_msg) - - d_q = Queue() - d_p = Process(target=GetHeadersFromNinja, args=(args.out_dir, True, d_q,)) - d_p.start() - - gn_q = Queue() - gn_p = Process(target=GetHeadersFromGN, args=(args.out_dir, gn_q,)) - gn_p.start() - - deps_q = Queue() - deps_p = Process(target=GetDepsPrefixes, args=(deps_q,)) - deps_p.start() - - d, d_err = d_q.get() - gn, gn_err = gn_q.get() - missing = set(d.keys()) - gn - nonexisting = GetNonExistingFiles(gn) - - deps, deps_err = deps_q.get() - missing = FilterOutDepsedRepo(missing, deps) - nonexisting = FilterOutDepsedRepo(nonexisting, deps) - - d_p.join() - gn_p.join() - deps_p.join() - - if d_err: - PrintError(d_err) - if gn_err: - PrintError(gn_err) - if deps_err: - PrintError(deps_err) - if len(GetNonExistingFiles(d)) > 0: - print 'Non-existing files in ninja deps:', GetNonExistingFiles(d) - PrintError('Found non-existing files in ninja deps. You should ' + - 'build all in OUT_DIR.') - if len(d) == 0: - PrintError('OUT_DIR looks empty. You should build all there.') - if any((('/gen/' in i) for i in nonexisting)): - PrintError('OUT_DIR looks wrong. You should build all there.') - - if args.whitelist: - whitelist = ParseWhiteList(open(args.whitelist).read()) - missing -= whitelist - nonexisting -= whitelist - - missing = sorted(missing) - nonexisting = sorted(nonexisting) - - DumpJson(sorted(missing + nonexisting)) - - if len(missing) == 0 and len(nonexisting) == 0: - return 0 - - if len(missing) > 0: - print '\nThe following files should be included in gn files:' - for i in missing: - print i - - if len(nonexisting) > 0: - print '\nThe following non-existing files should be removed from gn files:' - for i in nonexisting: - print i - - if args.verbose: - # Only get detailed obj dependency here since it is slower. - GetHeadersFromNinja(args.out_dir, False, d_q) - d, d_err = d_q.get() - print '\nDetailed dependency info:' - for f in missing: - print f - for cc in d[f]: - print ' ', cc - - print '\nMissing headers sorted by number of affected object files:' - count = {k: len(v) for (k, v) in d.iteritems()} - for f in sorted(count, key=count.get, reverse=True): - if f in missing: - print count[f], f - - return 1 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/check_gn_headers_unittest.py b/build/check_gn_headers_unittest.py deleted file mode 100755 index 20c3b13..0000000 --- a/build/check_gn_headers_unittest.py +++ /dev/null
@@ -1,101 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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 logging -import json -import unittest -import check_gn_headers - - -ninja_input = r''' -obj/a.o: #deps 1, deps mtime 123 (VALID) - ../../a.cc - ../../dir/path/b.h - ../../c.hh - -obj/b.o: #deps 1, deps mtime 123 (STALE) - ../../b.cc - ../../dir2/path/b.h - ../../c2.hh - -obj/c.o: #deps 1, deps mtime 123 (VALID) - ../../c.cc - ../../build/a.h - gen/b.h - ../../out/Release/gen/no.h - ../../dir3/path/b.h - ../../c3.hh -''' - - -gn_input = json.loads(r''' -{ - "others": [], - "targets": { - "//:All": { - }, - "//:base": { - "public": [ "//base/p.h" ], - "sources": [ "//base/a.cc", "//base/a.h", "//base/b.hh" ], - "visibility": [ "*" ] - }, - "//:star_public": { - "public": "*", - "sources": [ "//base/c.h", "//tmp/gen/a.h" ], - "visibility": [ "*" ] - } - } -} -''') - - -whitelist = r''' - white-front.c -a/b/c/white-end.c # comment - dir/white-both.c #more comment - -# empty line above -a/b/c -''' - - -class CheckGnHeadersTest(unittest.TestCase): - def testNinja(self): - headers = check_gn_headers.ParseNinjaDepsOutput( - ninja_input.split('\n'), 'out/Release', False) - expected = { - 'dir/path/b.h': ['obj/a.o'], - 'c.hh': ['obj/a.o'], - 'dir3/path/b.h': ['obj/c.o'], - 'c3.hh': ['obj/c.o'], - } - self.assertEquals(headers, expected) - - def testGn(self): - headers = check_gn_headers.ParseGNProjectJSON(gn_input, - 'out/Release', 'tmp') - expected = set([ - 'base/a.h', - 'base/b.hh', - 'base/c.h', - 'base/p.h', - 'out/Release/gen/a.h', - ]) - self.assertEquals(headers, expected) - - def testWhitelist(self): - output = check_gn_headers.ParseWhiteList(whitelist) - expected = set([ - 'white-front.c', - 'a/b/c/white-end.c', - 'dir/white-both.c', - 'a/b/c', - ]) - self.assertEquals(output, expected) - - -if __name__ == '__main__': - logging.getLogger().setLevel(logging.DEBUG) - unittest.main(verbosity=2)
diff --git a/build/check_gn_headers_whitelist.txt b/build/check_gn_headers_whitelist.txt deleted file mode 100644 index 5755df1..0000000 --- a/build/check_gn_headers_whitelist.txt +++ /dev/null
@@ -1,369 +0,0 @@ -# Do not add files to this whitelist unless you are adding a new OS or -# changing the GN arguments on bots. - -ash/accelerators/accelerator_controller_delegate.h -ash/accelerators/accelerator_controller_delegate_aura.h -ash/accelerators/accelerator_table.h -ash/ash_export.h -ash/frame/frame_header.h -ash/metrics/task_switch_metrics_recorder.h -ash/metrics/task_switch_source.h -ash/metrics/user_metrics_action.h -ash/metrics/user_metrics_recorder.h -ash/public/cpp/ash_public_export.h -ash/public/cpp/ash_switches.h -ash/public/cpp/config.h -ash/public/cpp/shelf_types.h -ash/session/session_observer.h -ash/shell.h -ash/system/devicetype_utils.h -ash/wm/system_modal_container_event_filter_delegate.h -cc/base/ring_buffer.h -cc/cc_export.h -cc/input/browser_controls_state.h -cc/input/event_listener_properties.h -cc/input/scrollbar.h -cc/input/scroller_size_metrics.h -cc/layers/performance_properties.h -cc/layers/scrollbar_theme_painter.h -cc/output/bsp_compare_result.h -cc/resources/release_callback_impl.h -cc/resources/return_callback.h -cc/surfaces/surface_observer.h -chrome/browser/android/android_theme_resources.h -chrome/browser/android/resource_id.h -chrome/browser/chromeos/certificate_provider/certificate_info.h -chrome/browser/chromeos/certificate_provider/certificate_provider.h -chrome/browser/chromeos/certificate_provider/certificate_provider_service.h -chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h -chrome/browser/chromeos/certificate_provider/certificate_requests.h -chrome/browser/chromeos/certificate_provider/pin_dialog_manager.h -chrome/browser/chromeos/certificate_provider/sign_requests.h -chrome/browser/chromeos/certificate_provider/thread_safe_certificate_map.h -chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_observer.h -chrome/browser/chromeos/login/signin/oauth2_login_manager.h -chrome/browser/chromeos/login/signin/oauth2_login_verifier.h -chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h -chrome/browser/chromeos/profiles/profile_helper.h -chrome/browser/chromeos/settings/cros_settings.h -chrome/browser/chromeos/ui/request_pin_view.h -chrome/browser/component_updater/component_installer_errors.h -chrome/browser/download/download_file_icon_extractor.h -chrome/browser/extensions/api/networking_cast_private/chrome_networking_cast_private_delegate.h -chrome/browser/extensions/api/omnibox/omnibox_api_testbase.h -chrome/browser/extensions/api/socket/mock_tcp_client_socket.h -chrome/browser/mac/bluetooth_utility.h -chrome/browser/media/router/mojo/media_route_provider_util_win.h -chrome/browser/media/webrtc/desktop_media_list_ash.h -chrome/browser/media/webrtc/desktop_media_list_observer.h -chrome/browser/media/webrtc/rtp_dump_type.h -chrome/browser/media_galleries/media_file_system_context.h -chrome/browser/notifications/displayed_notifications_dispatch_callback.h -chrome/browser/permissions/permission_queue_controller.h -chrome/browser/prefs/active_profile_pref_service.h -chrome/browser/rlz/chrome_rlz_tracker_delegate.h -chrome/browser/ui/android/content_settings/subresource_filter_infobar_delegate.h -chrome/browser/ui/app_icon_loader_delegate.h -chrome/browser/ui/app_list/app_list_syncable_service_factory.h -chrome/browser/ui/ash/ash_util.h -chrome/browser/ui/ash/multi_user/multi_user_util.h -chrome/browser/ui/network_profile_bubble.h -chrome/browser/ui/passwords/manage_passwords_icon.h -chrome/browser/ui/views/frame/browser_frame_header_ash.h -chrome/browser/ui/webui/large_icon_source.h -chrome/common/mac/app_shim_launch.h -chrome/common/mac/app_shim_messages.h -chrome/install_static/chromium_install_modes.h -chrome/install_static/install_constants.h -chrome/install_static/install_details.h -chrome/install_static/install_modes.h -chrome/install_static/install_util.h -chrome/install_static/test/scoped_install_details.h -chrome/installer/util/browser_distribution.h -chrome/installer/util/google_update_constants.h -chrome/installer/util/google_update_settings.h -chrome/installer/util/util_constants.h -chromeos/chromeos_export.h -chromeos/login/login_state.h -chromeos/login/scoped_test_public_session_login_state.h -chromeos/settings/cros_settings_names.h -chromeos/settings/cros_settings_provider.h -components/browser_watcher/features.h -components/browser_watcher/stability_paths.h -components/cast_certificate/cast_crl_root_ca_cert_der-inc.h -components/cdm/browser/cdm_message_filter_android.h -components/contextual_search/browser/contextual_search_js_api_handler.h -components/cryptauth/connection_finder.h -components/cryptauth/connection_observer.h -components/data_reduction_proxy/core/browser/data_use_group.h -components/data_reduction_proxy/core/browser/data_use_group_provider.h -components/data_use_measurement/core/url_request_classifier.h -components/device_event_log/device_event_log_export.h -components/dom_distiller/core/font_family_list.h -components/dom_distiller/core/theme_list.h -components/login/login_export.h -components/nacl/browser/nacl_browser_delegate.h -components/nacl/renderer/ppb_nacl_private.h -components/omnibox/browser/autocomplete_i18n.h -components/omnibox/browser/autocomplete_provider_client.h -components/omnibox/browser/autocomplete_provider_listener.h -components/password_manager/core/browser/keychain_migration_status_mac.h -components/policy/core/browser/configuration_policy_handler_parameters.h -components/policy/proto/policy_proto_export.h -components/rlz/rlz_tracker_delegate.h -components/session_manager/session_manager_types.h -components/sessions/core/sessions_export.h -components/sync/engine/connection_status.h -components/sync/engine/net/network_time_update_callback.h -components/translate/core/browser/translate_infobar_delegate.h -components/user_manager/user.h -components/user_manager/user_image/user_image.h -components/user_manager/user_manager.h -components/viz/display_compositor/display_provider.h -components/viz/viz_export.h -components/wifi/wifi_export.h -components/wifi/wifi_service.h -content/browser/background_fetch/background_fetch_constants.h -content/browser/service_worker/service_worker_response_type.h -content/common/gpu_stream_constants.h -content/common/mac/attributed_string_coder.h -content/public/browser/context_factory.h -content/public/browser/media_observer.h -content/renderer/external_popup_menu.h -content/shell/android/shell_descriptors.h -device/media_transfer_protocol/media_transfer_protocol_manager.h -extensions/browser/api/clipboard/clipboard_api.h -extensions/browser/api/networking_config/networking_config_service_factory.h -extensions/browser/api/webcam_private/webcam.h -extensions/browser/api/webcam_private/webcam_private_api.h -extensions/browser/entry_info.h -extensions/browser/extension_event_histogram_value.h -extensions/browser/extension_function_histogram_value.h -google_apis/gcm/base/encryptor.h -google_apis/gcm/base/gcm_export.h -gpu/GLES2/gl2chromium.h -gpu/GLES2/gl2chromium_autogen.h -gpu/GLES2/gl2extchromium.h -gpu/command_buffer/client/context_support.h -gpu/command_buffer/client/gles2_implementation_unittest_autogen.h -gpu/command_buffer/client/gles2_interface_autogen.h -gpu/command_buffer/client/gles2_interface_stub_autogen.h -gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h -gpu/command_buffer/client/gpu_control_client.h -gpu/command_buffer/client/ref_counted.h -gpu/command_buffer/client/shared_memory_limits.h -gpu/command_buffer/common/command_buffer_shared.h -gpu/command_buffer/common/gles2_cmd_utils_autogen.h -gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h -gpu/command_buffer/common/gpu_memory_allocation.h -gpu/command_buffer/service/gl_stream_texture_image.h -gpu/command_buffer/service/gles2_cmd_decoder_unittest_extensions_autogen.h -gpu/command_buffer/service/memory_tracking.h -gpu/command_buffer/service/progress_reporter.h -gpu/config/gpu_lists_version.h -gpu/gles2_conform_support/gtf/gtf_stubs.h -gpu/gpu_export.h -headless/lib/headless_macros.h -headless/public/headless_tab_socket.h -ipc/ipc_channel_proxy_unittest_messages.h -ipc/ipc_message_null_macros.h -ipc/param_traits_size_macros.h -media/audio/audio_logging.h -media/audio/sounds/test_data.h -media/base/routing_token_callback.h -media/base/video_renderer_sink.h -media/cast/common/mod_util.h -media/cast/net/rtcp/rtcp_session.h -media/filters/ffmpeg_aac_bitstream_converter.h -media/filters/ffmpeg_h264_to_annex_b_bitstream_converter.h -media/filters/h264_to_annex_b_bitstream_converter.h -media/formats/mp4/avc.h -media/formats/mp4/bitstream_converter.h -media/formats/mp4/fourccs.h -media/formats/mp4/rcheck.h -media/formats/mpeg/adts_stream_parser.h -media/formats/mpeg/mpeg1_audio_stream_parser.h -media/formats/mpeg/mpeg_audio_stream_parser_base.h -media/gpu/media_gpu_export.h -mojo/edk/system/broker_messages.h -mojo/edk/system/system_impl_export.h -mojo/public/cpp/bindings/strong_associated_binding_set.h -mojo/public/cpp/bindings/tests/mojo_test_blink_export.h -mojo/public/cpp/test_support/test_support.h -net/base/winsock_init.h -net/cert/cert_type.h -net/cert/cert_verify_proc_android.h -net/cert/scoped_nss_types.h -net/dns/notify_watcher_mac.h -net/http/http_status_code_list.h -net/http/transport_security_state_static.h -net/quic/core/session_notifier_interface.h -ppapi/cpp/pass_ref.h -ppapi/lib/gl/include/GLES2/gl2.h -ppapi/lib/gl/include/GLES2/gl2ext.h -ppapi/lib/gl/include/GLES2/gl2platform.h -ppapi/lib/gl/include/KHR/khrplatform.h -ppapi/nacl_irt/irt_manifest.h -ppapi/nacl_irt/public/irt_ppapi.h -ppapi/native_client/src/shared/ppapi_proxy/ppruntime.h -ppapi/native_client/src/untrusted/pnacl_irt_shim/irt_shim_ppapi.h -ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.h -ppapi/native_client/src/untrusted/pnacl_irt_shim/shim_ppapi.h -ppapi/proxy/dispatch_reply_message.h -ppapi/proxy/plugin_proxy_delegate.h -ppapi/proxy/plugin_resource_callback.h -ppapi/proxy/ppapi_proxy_export.h -ppapi/proxy/resource_message_filter.h -ppapi/proxy/video_decoder_constants.h -ppapi/shared_impl/api_id.h -ppapi/shared_impl/dir_contents.h -ppapi/shared_impl/ppapi_shared_export.h -ppapi/shared_impl/singleton_resource_id.h -remoting/base/chromoting_event_log_writer.h -remoting/base/logging.h -remoting/client/display/gl_renderer_delegate.h -remoting/client/display/gl_texture_ids.h -remoting/codec/webrtc_video_encoder.h -remoting/host/linux/x11_keyboard.h -remoting/host/worker_process_ipc_delegate.h -remoting/protocol/audio_source.h -remoting/protocol/audio_stream.h -remoting/protocol/cursor_shape_stub.h -remoting/protocol/message_channel_factory.h -remoting/protocol/test_event_matchers.h -remoting/protocol/video_feedback_stub.h -remoting/protocol/video_stream.h -sandbox/linux/system_headers/capability.h -services/service_manager/public/c/main.h -services/ui/ws/ids.h -skia/ext/convolver_mips_dspr2.h -skia/ext/skia_commit_hash.h -testing/gmock_mutant.h -third_party/blink/renderer/bindings/modules/v8/serialization/WebCryptoSubTags.h -third_party/blink/renderer/core/animation/CSSInterpolationEnvironment.h -third_party/blink/renderer/core/animation/SVGInterpolationEnvironment.h -third_party/blink/renderer/core/css/resolver/StyleBuilder.h -third_party/blink/renderer/core/css/threaded/MultiThreadedTestUtil.h -third_party/blink/renderer/core/css/zoomAdjustedPixelValue.h -third_party/blink/renderer/core/dom/ArrayBufferViewHelpers.h -third_party/blink/renderer/core/editing/finder/FindOptions.h -third_party/blink/renderer/core/paint/FindPaintOffsetAndVisualRectNeedingUpdate.h -third_party/blink/renderer/core/style/ShapeValue.h -third_party/blink/renderer/core/style/TransformOrigin.h -third_party/blink/renderer/platform/EncryptedMediaRequest.h -third_party/blink/renderer/platform/fonts/FontSelector.h -third_party/blink/renderer/platform/fonts/Glyph.h -third_party/blink/renderer/platform/graphics/cpu/arm/WebGLImageConversionNEON.h -third_party/blink/renderer/platform/graphics/cpu/mips/WebGLImageConversionMSA.h -third_party/blink/renderer/platform/graphics/paint/PaintImage.h -third_party/blink/renderer/platform/scheduler/base/task_queue.h -third_party/blink/renderer/platform/text/TabSize.h -third_party/blink/renderer/platform/text/TextDirection.h -third_party/blink/renderer/platform/transforms/TransformOperation.h -third_party/blink/public/platform/WebSourceLocation.h -third_party/blink/public/platform/WebTouchInfo.h -third_party/blink/public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h -third_party/cacheinvalidation/src/google/cacheinvalidation/impl/build_constants.h -third_party/expat/files/lib/ascii.h -third_party/expat/files/lib/asciitab.h -third_party/expat/files/lib/expat_config.h -third_party/expat/files/lib/expat_external.h -third_party/expat/files/lib/iasciitab.h -third_party/expat/files/lib/internal.h -third_party/expat/files/lib/latin1tab.h -third_party/expat/files/lib/nametab.h -third_party/expat/files/lib/utf8tab.h -third_party/expat/files/lib/xmlrole.h -third_party/expat/files/lib/xmltok.h -third_party/expat/files/lib/xmltok_impl.h -third_party/harfbuzz-ng/src/hb-ot-cbdt-table.hh -third_party/harfbuzz-ng/src/hb-ot-cmap-table.hh -third_party/harfbuzz-ng/src/hb-ot-glyf-table.hh -third_party/harfbuzz-ng/src/hb-ot-layout-jstf-table.hh -third_party/harfbuzz-ng/src/hb-ot-os2-table.hh -third_party/hunspell/src/hunspell/hunvisapi.h -third_party/khronos/EGL/egl.h -third_party/khronos/EGL/eglext.h -third_party/khronos/EGL/eglplatform.h -third_party/khronos/GLES2/gl2.h -third_party/khronos/GLES2/gl2ext.h -third_party/khronos/GLES2/gl2platform.h -third_party/khronos/GLES3/gl3.h -third_party/khronos/GLES3/gl3platform.h -third_party/khronos/KHR/khrplatform.h -third_party/leveldatabase/chromium_logger.h -third_party/libaddressinput/chromium/addressinput_util.h -third_party/libphonenumber/phonenumber_api.h -third_party/libudev/libudev0.h -third_party/libudev/libudev1.h -third_party/libvpx/source/config/linux/x64/vp8_rtcd.h -third_party/libvpx/source/config/linux/x64/vp9_rtcd.h -third_party/libvpx/source/config/linux/x64/vpx_config.h -third_party/libvpx/source/config/linux/x64/vpx_dsp_rtcd.h -third_party/libvpx/source/config/linux/x64/vpx_scale_rtcd.h -third_party/libvpx/source/config/nacl/vp8_rtcd.h -third_party/libvpx/source/config/nacl/vp9_rtcd.h -third_party/libvpx/source/config/nacl/vpx_config.h -third_party/libvpx/source/config/nacl/vpx_dsp_rtcd.h -third_party/libvpx/source/config/nacl/vpx_scale_rtcd.h -third_party/libvpx/source/config/vpx_version.h -third_party/libxslt/src/libxslt/xsltwin32config.h -third_party/opus/src/src/opus_private.h -third_party/opus/src/tests/test_opus_common.h -third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_names.h -third_party/protobuf/src/google/protobuf/compiler/javanano/javanano_params.h -third_party/qcms/src/halffloat.h -third_party/qcms/src/tests/qcms_test_util.h -third_party/qcms/src/tests/timing.h -third_party/snappy/linux/config.h -third_party/speech-dispatcher/libspeechd.h -third_party/sqlite/sqlite3.h -third_party/tcmalloc/chromium/src/addressmap-inl.h -third_party/tcmalloc/chromium/src/base/basictypes.h -third_party/tcmalloc/chromium/src/base/dynamic_annotations.h -third_party/tcmalloc/chromium/src/base/googleinit.h -third_party/tcmalloc/chromium/src/base/linux_syscall_support.h -third_party/tcmalloc/chromium/src/base/spinlock_linux-inl.h -third_party/tcmalloc/chromium/src/base/stl_allocator.h -third_party/tcmalloc/chromium/src/base/thread_annotations.h -third_party/tcmalloc/chromium/src/base/thread_lister.h -third_party/tcmalloc/chromium/src/gperftools/malloc_extension_c.h -third_party/tcmalloc/chromium/src/gperftools/malloc_hook_c.h -third_party/tcmalloc/chromium/src/gperftools/tcmalloc.h -third_party/tcmalloc/chromium/src/heap-profile-stats.h -third_party/tcmalloc/chromium/src/libc_override.h -third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h -third_party/tcmalloc/chromium/src/packed-cache-inl.h -third_party/tcmalloc/chromium/src/page_heap_allocator.h -third_party/tcmalloc/chromium/src/pagemap.h -third_party/tcmalloc/chromium/src/stacktrace_config.h -third_party/tcmalloc/chromium/src/stacktrace_x86-inl.h -third_party/tcmalloc/chromium/src/system-alloc.h -third_party/tcmalloc/chromium/src/tcmalloc_guard.h -third_party/wayland/include/config.h -third_party/wayland/include/src/wayland-version.h -third_party/woff2/src/port.h -third_party/yasm/source/config/linux/config.h -third_party/yasm/source/config/linux/libyasm-stdint.h -third_party/zlib/contrib/minizip/crypt.h -tools/battor_agent/battor_protocol_types.h -tools/gn/ordered_set.h -tools/ipc_fuzzer/message_lib/all_message_null_macros.h -ui/app_list/app_list_export.h -ui/app_list/app_list_item.h -ui/app_list/app_list_switches.h -ui/base/clipboard/clipboard_test_template.h -ui/events/keycodes/keyboard_codes_posix.h -ui/gfx/overlay_transform.h -ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h -ui/gfx/swap_result.h -ui/gfx/sys_color_change_listener.h -ui/gl/GL/glextchromium.h -ui/gl/gl_bindings_api_autogen_egl.h -ui/gl/gl_bindings_api_autogen_gl.h -ui/gl/gl_bindings_api_autogen_glx.h -ui/gl/gl_bindings_api_autogen_osmesa.h -ui/gl/gpu_preference.h -ui/gl/gpu_switching_observer.h -ui/ozone/ozone_base_export.h -ui/ozone/public/ozone_switches.h
diff --git a/build/check_return_value.py b/build/check_return_value.py deleted file mode 100755 index c659d1e..0000000 --- a/build/check_return_value.py +++ /dev/null
@@ -1,17 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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. - -"""This program wraps an arbitrary command and prints "1" if the command ran -successfully.""" - -import os -import subprocess -import sys - -devnull = open(os.devnull, 'wb') -if not subprocess.call(sys.argv[1:], stdout=devnull, stderr=devnull): - print 1 -else: - print 0
diff --git a/build/chromeos/create_vm_test_script.py b/build/chromeos/create_vm_test_script.py deleted file mode 100755 index f14b818..0000000 --- a/build/chromeos/create_vm_test_script.py +++ /dev/null
@@ -1,95 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2018 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. - -"""Creates a script that runs a CrOS VM test by delegating to -build/chromeos/run_vm_test.py. -""" - -import argparse -import os -import re -import sys - - -SCRIPT_TEMPLATE = """\ -#!/usr/bin/env python -# -# This file was generated by build/chromeos/create_vm_test_script.py - -import os -import sys - -def main(): - script_directory = os.path.dirname(__file__) - def ResolvePath(path): - return os.path.abspath(os.path.join(script_directory, path)) - - vm_test_script = os.path.abspath( - os.path.join(script_directory, '{vm_test_script}')) - - vm_args = {vm_test_args} - path_args = {vm_test_path_args} - for arg, path in path_args: - vm_args.extend([arg, ResolvePath(path)]) - - os.execv(vm_test_script, - [vm_test_script] + vm_args + sys.argv[1:]) - -if __name__ == '__main__': - sys.exit(main()) -""" - -def main(args): - parser = argparse.ArgumentParser() - parser.add_argument('--script-output-path') - parser.add_argument('--output-directory') - parser.add_argument('--test-exe') - parser.add_argument('--runtime-deps-path') - parser.add_argument('--cros-cache') - parser.add_argument('--board') - args = parser.parse_args(args) - - - def RelativizePathToScript(path): - return os.path.relpath(path, os.path.dirname(args.script_output_path)) - - run_test_path = RelativizePathToScript( - os.path.join(os.path.dirname(__file__), 'run_vm_test.py')) - - vm_test_args = [ - '--board', args.board, - '-v', - ] - if args.test_exe: - vm_test_args.extend([ - 'vm-test', - '--test-exe', - args.test_exe, - ]) - else: - vm_test_args.append('host-cmd') - - vm_test_path_args = [ - ('--cros-cache', RelativizePathToScript(args.cros_cache)), - ] - if args.runtime_deps_path: - vm_test_path_args.append( - ('--runtime-deps-path', RelativizePathToScript(args.runtime_deps_path))) - if args.output_directory: - vm_test_path_args.append( - ('--path-to-outdir', RelativizePathToScript(args.output_directory))) - - with open(args.script_output_path, 'w') as script: - script.write(SCRIPT_TEMPLATE.format( - vm_test_script=run_test_path, - vm_test_args=str(vm_test_args), - vm_test_path_args=str(vm_test_path_args))) - - os.chmod(args.script_output_path, 0750) - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:]))
diff --git a/build/chromeos/run_vm_test.py b/build/chromeos/run_vm_test.py deleted file mode 100755 index 00a7249..0000000 --- a/build/chromeos/run_vm_test.py +++ /dev/null
@@ -1,242 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2018 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 argparse -import contextlib -import json -import logging -import os -import re -import stat -import subprocess -import sys - - -CHROMIUM_SRC_PATH = os.path.abspath(os.path.join( - os.path.dirname(__file__), '..', '..')) - -# Use the android test-runner's gtest results support library for generating -# output json ourselves. -sys.path.insert(0, os.path.join(CHROMIUM_SRC_PATH, 'build', 'android')) -from pylib.base import base_test_result -from pylib.results import json_results - -CHROMITE_PATH = os.path.abspath(os.path.join( - CHROMIUM_SRC_PATH, 'third_party', 'chromite')) -CROS_RUN_VM_TEST_PATH = os.path.abspath(os.path.join( - CHROMITE_PATH, 'bin', 'cros_run_vm_test')) - - -_FILE_BLACKLIST = [ - re.compile(r'.*build/chromeos.*'), - re.compile(r'.*build/cros_cache.*'), - re.compile(r'.*third_party/chromite.*'), -] - - -def read_runtime_files(runtime_deps_path, outdir): - if not runtime_deps_path: - return [] - - abs_runtime_deps_path = os.path.abspath( - os.path.join(outdir, runtime_deps_path)) - with open(abs_runtime_deps_path) as runtime_deps_file: - files = [l.strip() for l in runtime_deps_file if l] - rel_file_paths = [] - for f in files: - rel_file_path = os.path.relpath( - os.path.abspath(os.path.join(outdir, f)), - os.getcwd()) - if not any(regex.match(rel_file_path) for regex in _FILE_BLACKLIST): - rel_file_paths.append(rel_file_path) - - return rel_file_paths - - -def host_cmd(args): - if not args.cmd: - logging.error('Must specify command to run on the host.') - return 1 - - cros_run_vm_test_cmd = [ - CROS_RUN_VM_TEST_PATH, - '--start', - '--board', args.board, - '--cache-dir', args.cros_cache, - ] - if args.verbose: - cros_run_vm_test_cmd.append('--debug') - - cros_run_vm_test_cmd += [ - '--host-cmd', - '--', - ] + args.cmd - - logging.info('Running the following command:') - logging.info(' '.join(cros_run_vm_test_cmd)) - - return subprocess.call( - cros_run_vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr) - - -def vm_test(args): - is_sanity_test = args.test_exe == 'cros_vm_sanity_test' - - cros_run_vm_test_cmd = [ - CROS_RUN_VM_TEST_PATH, - '--start', - '--board', args.board, - '--cache-dir', args.cros_cache, - ] - - # cros_run_vm_test has trouble with relative paths that go up directories, so - # cd to src/, which should be the root of all data deps. - os.chdir(CHROMIUM_SRC_PATH) - - runtime_files = read_runtime_files( - args.runtime_deps_path, args.path_to_outdir) - # If we're pushing files, we need to set the cwd. - if runtime_files: - cros_run_vm_test_cmd.extend( - ['--cwd', os.path.relpath(args.path_to_outdir, CHROMIUM_SRC_PATH)]) - for f in runtime_files: - cros_run_vm_test_cmd.extend(['--files', f]) - - if args.test_launcher_summary_output and not is_sanity_test: - result_dir, result_file = os.path.split(args.test_launcher_summary_output) - # If args.test_launcher_summary_output is a file in cwd, result_dir will be - # an empty string, so replace it with '.' when this is the case so - # cros_run_vm_test can correctly handle it. - if not result_dir: - result_dir = '.' - vm_result_file = '/tmp/%s' % result_file - cros_run_vm_test_cmd += [ - '--results-src', vm_result_file, - '--results-dest-dir', result_dir, - ] - - if is_sanity_test: - # run_cros_vm_test's default behavior when no cmd is specified is the sanity - # test that's baked into the VM image. This test smoke-checks the system - # browser, so deploy our locally-built chrome to the VM before testing. - cros_run_vm_test_cmd += [ - '--deploy', - '--build-dir', os.path.relpath(args.path_to_outdir, CHROMIUM_SRC_PATH), - ] - else: - cros_run_vm_test_cmd += [ - '--cmd', - '--', - './' + args.test_exe, - '--test-launcher-shard-index=%d' % args.test_launcher_shard_index, - '--test-launcher-total-shards=%d' % args.test_launcher_total_shards, - ] - - if args.test_launcher_summary_output and not is_sanity_test: - cros_run_vm_test_cmd += [ - '--test-launcher-summary-output=%s' % vm_result_file, - ] - - logging.info('Running the following command:') - logging.info(' '.join(cros_run_vm_test_cmd)) - - # deploy_chrome needs a set of GN args used to build chrome to determine if - # certain libraries need to be pushed to the VM. It looks for the args via an - # env var. To trigger the default deploying behavior, give it a dummy set of - # args. - # TODO(crbug.com/823996): Make the GN-dependent deps controllable via cmd-line - # args. - env_copy = os.environ.copy() - if not env_copy.get('GN_ARGS'): - env_copy['GN_ARGS'] = 'is_chromeos = true' - env_copy['PATH'] = env_copy['PATH'] + ':' + os.path.join(CHROMITE_PATH, 'bin') - rc = subprocess.call( - cros_run_vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr, env=env_copy) - - # Create a simple json results file for the sanity test if needed. The results - # will contain only one test ('cros_vm_sanity_test'), and will either be a - # PASS or FAIL depending on the return code of cros_run_vm_test above. - if args.test_launcher_summary_output and is_sanity_test: - result = (base_test_result.ResultType.FAIL if rc else - base_test_result.ResultType.PASS) - sanity_test_result = base_test_result.BaseTestResult( - 'cros_vm_sanity_test', result) - run_results = base_test_result.TestRunResults() - run_results.AddResult(sanity_test_result) - with open(args.test_launcher_summary_output, 'w') as f: - json.dump(json_results.GenerateResultsDict([run_results]), f) - - return rc - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--verbose', '-v', action='store_true') - # Required args. - parser.add_argument( - '--board', type=str, required=True, help='Type of CrOS device.') - subparsers = parser.add_subparsers(dest='test_type') - # Host-side test args. - host_cmd_parser = subparsers.add_parser( - 'host-cmd', - help='Runs a host-side test. Pass the host-side command to run after ' - '"--". Hostname and port for the VM will be 127.0.0.1:9222.') - host_cmd_parser.set_defaults(func=host_cmd) - host_cmd_parser.add_argument( - '--cros-cache', type=str, required=True, help='Path to cros cache.') - host_cmd_parser.add_argument('cmd', nargs=argparse.REMAINDER) - # VM-side test args. - vm_test_parser = subparsers.add_parser( - 'vm-test', - help='Runs a vm-side gtest.') - vm_test_parser.set_defaults(func=vm_test) - vm_test_parser.add_argument( - '--cros-cache', type=str, required=True, help='Path to cros cache.') - vm_test_parser.add_argument( - '--test-exe', type=str, required=True, - help='Path to test executable to run inside VM. If the value is ' - '"cros_vm_sanity_test", the sanity test that ships with the VM ' - 'image runs instead. This test smokes-check the system browser ' - '(eg: loads a simple webpage, executes some javascript), so a ' - 'fully-built Chrome binary that can get deployed to the VM is ' - 'expected to available in the out-dir.') - vm_test_parser.add_argument( - '--path-to-outdir', type=str, required=True, - help='Path to output directory, all of whose contents will be deployed ' - 'to the device.') - vm_test_parser.add_argument( - '--runtime-deps-path', type=str, - help='Runtime data dependency file from GN.') - vm_test_parser.add_argument( - '--test-launcher-summary-output', type=str, - help='When set, will pass the same option down to the test and retrieve ' - 'its result file at the specified location.') - vm_test_parser.add_argument( - '--test-launcher-shard-index', - type=int, default=os.environ.get('GTEST_SHARD_INDEX', 0), - help='Index of the external shard to run.') - vm_test_parser.add_argument( - '--test-launcher-total-shards', - type=int, default=os.environ.get('GTEST_TOTAL_SHARDS', 1), - help='Total number of external shards.') - args = parser.parse_args() - - logging.basicConfig(level=logging.DEBUG if args.verbose else logging.WARN) - - if not os.path.exists('/dev/kvm'): - logging.error('/dev/kvm is missing. Is KVM installed on this machine?') - return 1 - elif not os.access('/dev/kvm', os.W_OK): - logging.error( - '/dev/kvm is not writable as current user. Perhaps you should be root?') - return 1 - - args.cros_cache = os.path.abspath(args.cros_cache) - return args.func(args) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/ciopfs b/build/ciopfs deleted file mode 100755 index 23f87e8..0000000 --- a/build/ciopfs +++ /dev/null Binary files differ
diff --git a/build/ciopfs.sha1 b/build/ciopfs.sha1 deleted file mode 100644 index c1855a3..0000000 --- a/build/ciopfs.sha1 +++ /dev/null
@@ -1 +0,0 @@ -5454b3c4f1c9992047e7ae9d6d14d5b49b1b12f3 \ No newline at end of file
diff --git a/build/cipd/clobber_cipd_root.py b/build/cipd/clobber_cipd_root.py deleted file mode 100755 index 5d36c72..0000000 --- a/build/cipd/clobber_cipd_root.py +++ /dev/null
@@ -1,33 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2018 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. - -"""Clobbers a CIPD root.""" - -import argparse -import os -import shutil -import sys - - -def main(): - parser = argparse.ArgumentParser( - description='Clobbers the CIPD root in the given directory.') - - parser.add_argument( - '--root', - required=True, - help='Root directory for dependency.') - args = parser.parse_args() - - cipd_root_dir = os.path.join(args.root, '.cipd') - if os.path.exists(cipd_root_dir): - shutil.rmtree(cipd_root_dir) - - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/clobber.py b/build/clobber.py deleted file mode 100755 index 18791c2..0000000 --- a/build/clobber.py +++ /dev/null
@@ -1,132 +0,0 @@ -#!/usr/bin/env python -# 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. - -"""This script provides methods for clobbering build directories.""" - -import argparse -import os -import shutil -import subprocess -import sys - - -def extract_gn_build_commands(build_ninja_file): - """Extracts from a build.ninja the commands to run GN. - - The commands to run GN are the gn rule and build.ninja build step at the - top of the build.ninja file. We want to keep these when deleting GN builds - since we want to preserve the command-line flags to GN. - - On error, returns the empty string.""" - result = "" - with open(build_ninja_file, 'r') as f: - # Read until the third blank line. The first thing GN writes to the file - # is "ninja_required_version = x.y.z", then the "rule gn" and the third - # is the section for "build build.ninja", separated by blank lines. - num_blank_lines = 0 - while num_blank_lines < 3: - line = f.readline() - if len(line) == 0: - return '' # Unexpected EOF. - result += line - if line[0] == '\n': - num_blank_lines = num_blank_lines + 1 - return result - - -def delete_dir(build_dir): - if os.path.islink(build_dir): - return - # For unknown reasons (anti-virus?) rmtree of Chromium build directories - # often fails on Windows. - if sys.platform.startswith('win'): - subprocess.check_call(['rmdir', '/s', '/q', build_dir], shell=True) - else: - shutil.rmtree(build_dir) - - -def delete_build_dir(build_dir): - # GN writes a build.ninja.d file. Note that not all GN builds have args.gn. - build_ninja_d_file = os.path.join(build_dir, 'build.ninja.d') - if not os.path.exists(build_ninja_d_file): - delete_dir(build_dir) - return - - # GN builds aren't automatically regenerated when you sync. To avoid - # messing with the GN workflow, erase everything but the args file, and - # write a dummy build.ninja file that will automatically rerun GN the next - # time Ninja is run. - build_ninja_file = os.path.join(build_dir, 'build.ninja') - build_commands = extract_gn_build_commands(build_ninja_file) - - try: - gn_args_file = os.path.join(build_dir, 'args.gn') - with open(gn_args_file, 'r') as f: - args_contents = f.read() - except IOError: - args_contents = '' - - e = None - try: - # delete_dir and os.mkdir() may fail, such as when chrome.exe is running, - # and we still want to restore args.gn/build.ninja/build.ninja.d, so catch - # the exception and rethrow it later. - delete_dir(build_dir) - os.mkdir(build_dir) - except Exception as e: - pass - - # Put back the args file (if any). - if args_contents != '': - with open(gn_args_file, 'w') as f: - f.write(args_contents) - - # Write the build.ninja file sufficiently to regenerate itself. - with open(os.path.join(build_dir, 'build.ninja'), 'w') as f: - if build_commands != '': - f.write(build_commands) - else: - # Couldn't parse the build.ninja file, write a default thing. - f.write('''rule gn -command = gn -q gen //out/%s/ -description = Regenerating ninja files - -build build.ninja: gn -generator = 1 -depfile = build.ninja.d -''' % (os.path.split(build_dir)[1])) - - # Write a .d file for the build which references a nonexistant file. This - # will make Ninja always mark the build as dirty. - with open(build_ninja_d_file, 'w') as f: - f.write('build.ninja: nonexistant_file.gn\n') - - if e: - # Rethrow the exception we caught earlier. - raise e - -def clobber(out_dir): - """Clobber contents of build directory. - - Don't delete the directory itself: some checkouts have the build directory - mounted.""" - for f in os.listdir(out_dir): - path = os.path.join(out_dir, f) - if os.path.isfile(path): - os.unlink(path) - elif os.path.isdir(path): - delete_build_dir(path) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('out_dir', help='The output directory to clobber') - args = parser.parse_args() - clobber(args.out_dir) - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/common.croc b/build/common.croc deleted file mode 100644 index fde7a8b..0000000 --- a/build/common.croc +++ /dev/null
@@ -1,127 +0,0 @@ -# -*- python -*- -# Crocodile config file for Chromium - settings common to all platforms -# -# This should be speicified before the platform-specific config, for example: -# croc -c chrome_common.croc -c linux/chrome_linux.croc - -{ - # List of root directories, applied in order - 'roots' : [ - # Sub-paths we specifically care about and want to call out - { - 'root' : '_/src', - 'altname' : 'CHROMIUM', - }, - ], - - # List of rules, applied in order - # Note that any 'include':0 rules here will be overridden by the 'include':1 - # rules in the platform-specific configs. - 'rules' : [ - # Don't scan for executable lines in uninstrumented C++ header files - { - 'regexp' : '.*\\.(h|hpp)$', - 'add_if_missing' : 0, - }, - - # Groups - { - 'regexp' : '', - 'group' : 'source', - }, - { - 'regexp' : '.*_(test|unittest|uitest|browsertest)\\.', - 'group' : 'test', - }, - - # Languages - { - 'regexp' : '.*\\.(c|h)$', - 'language' : 'C', - }, - { - 'regexp' : '.*\\.(cc|cpp|hpp)$', - 'language' : 'C++', - }, - - # Files/paths to include. Specify these before the excludes, since rules - # are in order. - { - 'regexp' : '^CHROMIUM/(base|media|net|printing|remoting|chrome|content|webkit/glue|native_client)/', - 'include' : 1, - }, - # Don't include subversion or mercurial SCM dirs - { - 'regexp' : '.*/(\\.svn|\\.hg)/', - 'include' : 0, - }, - # Don't include output dirs - { - 'regexp' : '.*/(Debug|Release|out|xcodebuild)/', - 'include' : 0, - }, - # Don't include third-party source - { - 'regexp' : '.*/third_party/', - 'include' : 0, - }, - # We don't run the V8 test suite, so we don't care about V8 coverage. - { - 'regexp' : '.*/v8/', - 'include' : 0, - }, - ], - - # Paths to add source from - 'add_files' : [ - 'CHROMIUM' - ], - - # Statistics to print - 'print_stats' : [ - { - 'stat' : 'files_executable', - 'format' : '*RESULT FilesKnown: files_executable= %d files', - }, - { - 'stat' : 'files_instrumented', - 'format' : '*RESULT FilesInstrumented: files_instrumented= %d files', - }, - { - 'stat' : '100.0 * files_instrumented / files_executable', - 'format' : '*RESULT FilesInstrumentedPercent: files_instrumented_percent= %g percent', - }, - { - 'stat' : 'lines_executable', - 'format' : '*RESULT LinesKnown: lines_known= %d lines', - }, - { - 'stat' : 'lines_instrumented', - 'format' : '*RESULT LinesInstrumented: lines_instrumented= %d lines', - }, - { - 'stat' : 'lines_covered', - 'format' : '*RESULT LinesCoveredSource: lines_covered_source= %d lines', - 'group' : 'source', - }, - { - 'stat' : 'lines_covered', - 'format' : '*RESULT LinesCoveredTest: lines_covered_test= %d lines', - 'group' : 'test', - }, - { - 'stat' : '100.0 * lines_covered / lines_executable', - 'format' : '*RESULT PercentCovered: percent_covered= %g percent', - }, - { - 'stat' : '100.0 * lines_covered / lines_executable', - 'format' : '*RESULT PercentCoveredSource: percent_covered_source= %g percent', - 'group' : 'source', - }, - { - 'stat' : '100.0 * lines_covered / lines_executable', - 'format' : '*RESULT PercentCoveredTest: percent_covered_test= %g percent', - 'group' : 'test', - }, - ], -}
diff --git a/build/common.gypi b/build/common.gypi deleted file mode 100644 index 2341fd7..0000000 --- a/build/common.gypi +++ /dev/null
@@ -1,15 +0,0 @@ -# Copyright (c) 2012 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. - -# IMPORTANT: -# Please don't directly include this file if you are building via gyp_chromium, -# since gyp_chromium is automatically forcing its inclusion. -{ - 'target_defaults': { - 'default_configuration': 'Release', - 'configurations': { - 'Release': {}, - }, - }, -}
diff --git a/build/compiled_action.gni b/build/compiled_action.gni deleted file mode 100644 index 02170af..0000000 --- a/build/compiled_action.gni +++ /dev/null
@@ -1,165 +0,0 @@ -# Copyright 2014 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. - -# This file introduces two related templates that act like action and -# action_foreach but instead of running a Python script, it will compile a -# given tool in the host toolchain and run that (either once or over the list -# of inputs, depending on the variant). -# -# Parameters -# -# tool (required) -# [label] Label of the tool to run. This should be an executable, and -# this label should not include a toolchain (anything in parens). The -# host compile of this tool will be used. -# -# outputs (required) -# [list of files] Like the outputs of action (if using "compiled_action", -# this would be just the list of outputs), or action_foreach (if using -# "compiled_action_foreach", this would contain source expansions mapping -# input to output files). -# -# args (required) -# [list of strings] Same meaning as action/action_foreach. -# -# inputs (optional) -# Files the binary takes as input. The step will be re-run whenever any -# of these change. If inputs is empty, the step will run only when the -# binary itself changes. -# -# visibility -# deps -# args (all optional) -# Same meaning as action/action_foreach. -# -# -# Example of usage: -# -# compiled_action("run_my_tool") { -# tool = "//tools/something:mytool" -# outputs = [ -# "$target_gen_dir/mysource.cc", -# "$target_gen_dir/mysource.h", -# ] -# -# # The tool takes this input. -# inputs = [ "my_input_file.idl" ] -# -# # In this case, the tool takes as arguments the input file and the output -# # build dir (both relative to the "cd" that the script will be run in) -# # and will produce the output files listed above. -# args = [ -# rebase_path("my_input_file.idl", root_build_dir), -# "--output-dir", rebase_path(target_gen_dir, root_build_dir), -# ] -# } -# -# You would typically declare your tool like this: -# if (host_toolchain == current_toolchain) { -# executable("mytool") { -# ... -# } -# } -# The if statement around the executable is optional. That says "I only care -# about this target in the host toolchain". Usually this is what you want, and -# saves unnecessarily compiling your tool for the target platform. But if you -# need a target build of your tool as well, just leave off the if statement. - -if (host_os == "win") { - _host_executable_suffix = ".exe" -} else { - _host_executable_suffix = "" -} - -template("compiled_action") { - assert(defined(invoker.tool), "tool must be defined for $target_name") - assert(defined(invoker.outputs), "outputs must be defined for $target_name") - assert(defined(invoker.args), "args must be defined for $target_name") - - assert(!defined(invoker.sources), - "compiled_action doesn't take a sources arg. Use inputs instead.") - - action(target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - "inputs", - "outputs", - "testonly", - "visibility", - ]) - if (!defined(deps)) { - deps = [] - } - if (!defined(inputs)) { - inputs = [] - } - - script = "//build/gn_run_binary.py" - - # Constuct the host toolchain version of the tool. - host_tool = invoker.tool + "($host_toolchain)" - - # Get the path to the executable. Currently, this assumes that the tool - # does not specify output_name so that the target name is the name to use. - # If that's not the case, we'll need another argument to the script to - # specify this, since we can't know what the output name is (it might be in - # another file not processed yet). - host_executable = - get_label_info(host_tool, "root_out_dir") + "/" + - get_label_info(host_tool, "name") + _host_executable_suffix - - deps += [ host_tool ] - - # The script takes as arguments the binary to run, and then the arguments - # to pass it. - args = [ rebase_path(host_executable, root_build_dir) ] + invoker.args - } -} - -template("compiled_action_foreach") { - assert(defined(invoker.sources), "sources must be defined for $target_name") - assert(defined(invoker.tool), "tool must be defined for $target_name") - assert(defined(invoker.outputs), "outputs must be defined for $target_name") - assert(defined(invoker.args), "args must be defined for $target_name") - - action_foreach(target_name) { - forward_variables_from(invoker, - [ - "deps", - "inputs", - "outputs", - "sources", - "testonly", - "visibility", - ]) - if (!defined(deps)) { - deps = [] - } - if (!defined(inputs)) { - inputs = [] - } - - script = "//build/gn_run_binary.py" - - # Constuct the host toolchain version of the tool. - host_tool = invoker.tool + "($host_toolchain)" - - # Get the path to the executable. Currently, this assumes that the tool - # does not specify output_name so that the target name is the name to use. - # If that's not the case, we'll need another argument to the script to - # specify this, since we can't know what the output name is (it might be in - # another file not processed yet). - host_executable = - get_label_info(host_tool, "root_out_dir") + "/" + - get_label_info(host_tool, "name") + _host_executable_suffix - - deps += [ host_tool ] - - # The script takes as arguments the binary to run, and then the arguments - # to pass it. - args = [ rebase_path(host_executable, root_build_dir) ] + invoker.args - } -}
diff --git a/build/config/BUILD.gn b/build/config/BUILD.gn deleted file mode 100644 index 4ba4d33..0000000 --- a/build/config/BUILD.gn +++ /dev/null
@@ -1,397 +0,0 @@ -# Copyright (c) 2013 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/config/allocator.gni") -import("//build/config/c++/c++.gni") -import("//build/config/chrome_build.gni") -import("//build/config/chromecast_build.gni") -import("//build/config/coverage/coverage.gni") -import("//build/config/crypto.gni") -import("//build/config/dcheck_always_on.gni") -import("//build/config/features.gni") - -# Subprojects need to override arguments in {mac,ios}_sdk_overrides.gni in their -# .gn config, but those arguments are only used on macOS. Including -# mac_sdk_overrides.gni insures that this doesn't trigger an unused argument -# warning. -import("//build/config/mac/mac_sdk_overrides.gni") -import("//build/config/ios/ios_sdk_overrides.gni") - -import("//build/config/pch.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/config/ui.gni") -import("//build/toolchain/goma.gni") - -declare_args() { - # When set (the default) enables C++ iterator debugging in debug builds. - # Iterator debugging is always off in release builds (technically, this flag - # affects the "debug" config, which is always available but applied by - # default only in debug builds). - # - # Iterator debugging is generally useful for catching bugs. But it can - # introduce extra locking to check the state of an iterator against the state - # of the current object. For iterator- and thread-heavy code, this can - # significantly slow execution. - enable_iterator_debugging = true -} - -# ============================================== -# PLEASE DO NOT ADD MORE THINGS TO THIS LIST -# ============================================== -# -# Legacy feature defines applied to all targets. -# -# These are applied to every single compile in the build and most of them are -# only relevant to a few files. This bloats command lines and causes -# unnecessary recompiles when flags are flipped. -# -# To pass defines to source code from the build, use the buildflag system which -# will write headers containing the defines you need. This isolates the define -# and means its definition can participate in the build graph, only recompiling -# things when it actually changes. -# -# See //build/buildflag_header.gni for instructions on generating headers. -# -# This will also allow you to scope your build flag to a BUILD.gn file (or a -# .gni file if you need it from more than one place) rather than making global -# flags. See //build/config/BUILDCONFIG.gn for advice on where to define -# build flags. -config("feature_flags") { - # Don't use deprecated V8 APIs anywhere. - defines = [ "V8_DEPRECATION_WARNINGS" ] - if (dcheck_always_on) { - defines += [ "DCHECK_ALWAYS_ON=1" ] - if (dcheck_is_configurable) { - defines += [ "DCHECK_IS_CONFIGURABLE=1" ] - } - } - if (use_udev) { - # TODO(brettw) should probably be "=1". - defines += [ "USE_UDEV" ] - } - if (use_aura) { - defines += [ "USE_AURA=1" ] - } - if (use_glib) { - defines += [ "USE_GLIB=1" ] - } - if (use_nss_certs) { - defines += [ "USE_NSS_CERTS=1" ] - } - if (use_ozone && !is_android) { - # Note that some Chrome OS builds unconditionally set |use_ozone| to true, - # but they also build some targets with the Android toolchain. This ensures - # that Android targets still build with USE_OZONE=0 in such cases. - # - # TODO(crbug.com/837032): Maybe this can be cleaned up if we can avoid - # setting use_ozone globally. - defines += [ "USE_OZONE=1" ] - } - if (use_x11) { - defines += [ "USE_X11=1" ] - } - if (use_allocator != "tcmalloc") { - defines += [ "NO_TCMALLOC" ] - } - if (is_asan || is_lsan || is_tsan || is_msan) { - defines += [ - "MEMORY_TOOL_REPLACES_ALLOCATOR", - "MEMORY_SANITIZER_INITIAL_SIZE", - ] - } - if (is_asan) { - defines += [ "ADDRESS_SANITIZER" ] - } - if (is_lsan) { - defines += [ "LEAK_SANITIZER" ] - } - if (is_tsan) { - defines += [ - "THREAD_SANITIZER", - "DYNAMIC_ANNOTATIONS_EXTERNAL_IMPL=1", - "WTF_USE_DYNAMIC_ANNOTATIONS_NOIMPL=1", - ] - } - if (is_msan) { - defines += [ "MEMORY_SANITIZER" ] - } - if (is_ubsan || is_ubsan_null || is_ubsan_vptr || is_ubsan_security) { - defines += [ "UNDEFINED_SANITIZER" ] - } - if (use_clang_coverage) { - defines += [ "CLANG_COVERAGE" ] - } - if (safe_browsing_mode == 1) { - defines += [ "FULL_SAFE_BROWSING" ] - defines += [ "SAFE_BROWSING_CSD" ] - defines += [ "SAFE_BROWSING_DB_LOCAL" ] - } else if (safe_browsing_mode == 2) { - defines += [ "SAFE_BROWSING_DB_REMOTE" ] - } - if (is_official_build) { - defines += [ "OFFICIAL_BUILD" ] - } - if (is_chrome_branded) { - defines += [ "GOOGLE_CHROME_BUILD" ] - } else { - defines += [ "CHROMIUM_BUILD" ] - } - if (!fieldtrial_testing_like_official_build && !is_chrome_branded) { - defines += [ "FIELDTRIAL_TESTING_ENABLED" ] - } - - # ============================================== - # PLEASE DO NOT ADD MORE THINGS TO THIS LIST - # ============================================== - # - # See the comment at the top. -} - -# Debug/release ---------------------------------------------------------------- - -config("debug") { - defines = [ - "_DEBUG", - "DYNAMIC_ANNOTATIONS_ENABLED=1", - "WTF_USE_DYNAMIC_ANNOTATIONS=1", - ] - - if (is_nacl) { - defines += [ "DYNAMIC_ANNOTATIONS_PREFIX=NACL_" ] - } - - if (is_win) { - if (!enable_iterator_debugging) { - # Iterator debugging is enabled by default by the compiler on debug - # builds, and we have to tell it to turn it off. - defines += [ "_HAS_ITERATOR_DEBUGGING=0" ] - } - } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) { - # Enable libstdc++ debugging facilities to help catch problems early, see - # http://crbug.com/65151 . - # TODO(phajdan.jr): Should we enable this for all of POSIX? - defines += [ "_GLIBCXX_DEBUG=1" ] - } -} - -config("release") { - defines = [ "NDEBUG" ] - - # Sanitizers. - if (is_tsan) { - defines += [ - "DYNAMIC_ANNOTATIONS_ENABLED=1", - "WTF_USE_DYNAMIC_ANNOTATIONS=1", - ] - } else { - defines += [ "NVALGRIND" ] - if (!is_nacl) { - # NaCl always enables dynamic annotations. Currently this value is set to - # 1 for all .nexes. - defines += [ "DYNAMIC_ANNOTATIONS_ENABLED=0" ] - } - } - - if (is_ios) { - # Disable NSAssert and GTMDevAssert (from Google Toolbox for Mac). This - # follows XCode's default behavior for Release builds. - defines += [ "NS_BLOCK_ASSERTIONS=1" ] - } -} - -# Default libraries ------------------------------------------------------------ - -# This config defines the default libraries applied to all targets. -config("default_libs") { - if (is_win) { - # TODO(brettw) this list of defaults should probably be smaller, and - # instead the targets that use the less common ones (e.g. wininet or - # winspool) should include those explicitly. - libs = [ - "advapi32.lib", - "comdlg32.lib", - "dbghelp.lib", - "dnsapi.lib", - "gdi32.lib", - "msimg32.lib", - "odbc32.lib", - "odbccp32.lib", - "oleaut32.lib", - "psapi.lib", - "shell32.lib", - "shlwapi.lib", - "user32.lib", - "usp10.lib", - "uuid.lib", - "version.lib", - "wininet.lib", - "winmm.lib", - "winspool.lib", - "ws2_32.lib", - - # Please don't add more stuff here. We should actually be making this - # list smaller, since all common things should be covered. If you need - # some extra libraries, please just add a libs = [ "foo.lib" ] to your - # target that needs it. - ] - if (current_os == "winuwp") { - # These libraries are needed for Windows UWP (i.e. store apps). - libs += [ - "dloadhelper.lib", - "WindowsApp.lib", - ] - } else { - # These libraries are not compatible with Windows UWP (i.e. store apps.) - libs += [ - "delayimp.lib", - "kernel32.lib", - "ole32.lib", - ] - } - } else if (is_android) { - libs = [ - "dl", - "m", - ] - } else if (is_mac) { - # Targets should choose to explicitly link frameworks they require. Since - # linking can have run-time side effects, nothing should be listed here. - libs = [] - } else if (is_ios) { - # The libraries listed here will be specified for both the target and the - # host. Only the common ones should be listed here. - libs = [ - "CoreFoundation.framework", - "CoreGraphics.framework", - "CoreText.framework", - "Foundation.framework", - ] - } else if (is_linux) { - libs = [ - "dl", - "pthread", - "rt", - ] - } -} - -# Dependencies that all executables and shared libraries should have. -group("exe_and_shlib_deps") { - public_deps = [] - if (using_sanitizer) { - public_deps += [ "//build/config/sanitizers:deps" ] - } - if (use_custom_libcxx) { - public_deps += [ "//buildtools/third_party/libc++" ] - } - if (use_afl) { - public_deps += [ "//third_party/afl" ] - } - - if (is_win && generate_order_files && !is_nacl) { - public_deps += [ "//tools/cygprofile_win" ] - } -} - -# Executable configs ----------------------------------------------------------- - -# Windows linker setup for EXEs and DLLs. -if (is_win) { - _windows_linker_configs = [ - "//build/config/win:sdk_link", - "//build/config/win:common_linker_setup", - ] -} - -# This config defines the configs applied to all executables. -config("executable_config") { - configs = [] - - if (is_win) { - configs += _windows_linker_configs - - # Currently only turn on linker CFI for executables. - configs += [ "//build/config/win:cfi_linker" ] - } else if (is_mac) { - configs += [ "//build/config/mac:mac_dynamic_flags" ] - } else if (is_ios) { - configs += [ - "//build/config/ios:ios_dynamic_flags", - "//build/config/ios:ios_executable_flags", - ] - } else if (is_linux || is_android || current_os == "aix") { - configs += [ "//build/config/gcc:executable_ldconfig" ] - if (is_android) { - configs += [ "//build/config/android:executable_config" ] - } else if (is_chromecast) { - configs += [ "//build/config/chromecast:executable_config" ] - } - } - - # If we're using the prebuilt instrumented libraries with the sanitizers, we - # need to add ldflags to every binary to make sure they are picked up. - if (prebuilt_instrumented_libraries_available) { - configs += [ "//third_party/instrumented_libraries:prebuilt_ldflags" ] - } - if (use_locally_built_instrumented_libraries) { - configs += [ "//third_party/instrumented_libraries:locally_built_ldflags" ] - } - configs += [ "//build/config/sanitizers:link_executable" ] -} - -# Shared library configs ------------------------------------------------------- - -# This config defines the configs applied to all shared libraries. -config("shared_library_config") { - configs = [] - - if (is_win) { - configs += _windows_linker_configs - } else if (is_mac) { - configs += [ "//build/config/mac:mac_dynamic_flags" ] - } else if (is_ios) { - configs += [ "//build/config/ios:ios_dynamic_flags" ] - } else if (is_chromecast) { - configs += [ "//build/config/chromecast:shared_library_config" ] - } - - # If we're using the prebuilt instrumented libraries with the sanitizers, we - # need to add ldflags to every binary to make sure they are picked up. - if (prebuilt_instrumented_libraries_available) { - configs += [ "//third_party/instrumented_libraries:prebuilt_ldflags" ] - } - if (use_locally_built_instrumented_libraries) { - configs += [ "//third_party/instrumented_libraries:locally_built_ldflags" ] - } - configs += [ "//build/config/sanitizers:link_shared_library" ] -} - -# Add this config to your target to enable precompiled headers. -# -# Precompiled headers are done on a per-target basis. If you have just a couple -# of files, the time it takes to precompile (~2 seconds) can actually be longer -# than the time saved. On a Z620, a 100 file target compiles about 2 seconds -# faster with precompiled headers, with greater savings for larger targets. -# -# Recommend precompiled headers for targets with more than 50 .cc files. -config("precompiled_headers") { - if (enable_precompiled_headers) { - if (is_win) { - # This is a string rather than a file GN knows about. It has to match - # exactly what's in the /FI flag below, and what might appear in the - # source code in quotes for an #include directive. - precompiled_header = "build/precompile.h" - - # This is a file that GN will compile with the above header. It will be - # implicitly added to the sources (potentially multiple times, with one - # variant for each language used in the target). - precompiled_source = "//build/precompile.cc" - - # Force include the header. - cflags = [ "/FI$precompiled_header" ] - } else if (is_mac) { - precompiled_source = "//build/precompile.h" - } - } -}
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn deleted file mode 100644 index a0b62e5..0000000 --- a/build/config/BUILDCONFIG.gn +++ /dev/null
@@ -1,696 +0,0 @@ -# Copyright (c) 2013 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. - -# ============================================================================= -# WHAT IS THIS FILE? -# ============================================================================= -# -# This is the master GN build configuration. This file is loaded after the -# build args (args.gn) for the build directory and after the toplevel ".gn" -# file (which points to this file as the build configuration). -# -# This file will be executed and the resulting context will be used to execute -# every other file in the build. So variables declared here (that don't start -# with an underscore) will be implicitly global. - -# ============================================================================= -# PLATFORM SELECTION -# ============================================================================= -# -# There are two main things to set: "os" and "cpu". The "toolchain" is the name -# of the GN thing that encodes combinations of these things. -# -# Users typically only set the variables "target_os" and "target_cpu" in "gn -# args", the rest are set up by our build and internal to GN. -# -# There are three different types of each of these things: The "host" -# represents the computer doing the compile and never changes. The "target" -# represents the main thing we're trying to build. The "current" represents -# which configuration is currently being defined, which can be either the -# host, the target, or something completely different (like nacl). GN will -# run the same build file multiple times for the different required -# configuration in the same build. -# -# This gives the following variables: -# - host_os, host_cpu, host_toolchain -# - target_os, target_cpu, default_toolchain -# - current_os, current_cpu, current_toolchain. -# -# Note the default_toolchain isn't symmetrical (you would expect -# target_toolchain). This is because the "default" toolchain is a GN built-in -# concept, and "target" is something our build sets up that's symmetrical with -# its GYP counterpart. Potentially the built-in default_toolchain variable -# could be renamed in the future. -# -# When writing build files, to do something only for the host: -# if (current_toolchain == host_toolchain) { ... - -if (target_os == "") { - target_os = host_os -} - -if (target_cpu == "") { - if (target_os == "android") { - # If we're building for Android, we should assume that we want to - # build for ARM by default, not the host_cpu (which is likely x64). - # This allows us to not have to specify both target_os and target_cpu - # on the command line. - target_cpu = "arm" - } else { - target_cpu = host_cpu - } -} - -if (current_cpu == "") { - current_cpu = target_cpu -} -if (current_os == "") { - current_os = target_os -} - -# ============================================================================= -# BUILD FLAGS -# ============================================================================= -# -# This block lists input arguments to the build, along with their default -# values. -# -# If a value is specified on the command line, it will overwrite the defaults -# given in a declare_args block, otherwise the default will be used. -# -# YOU SHOULD ALMOST NEVER NEED TO ADD FLAGS TO THIS FILE. GN allows any file in -# the build to declare build flags. If you need a flag for a single component, -# you can just declare it in the corresponding BUILD.gn file. -# -# - If your feature is a single target, say //components/foo, you can put -# a declare_args() block in //components/foo/BUILD.gn and use it there. -# Nobody else in the build needs to see the flag. -# -# - Defines based on build variables should be implemented via the generated -# build flag header system. See //build/buildflag_header.gni. You can put -# the buildflag_header target in the same file as the build flag itself. You -# should almost never set "defines" directly. -# -# - If your flag toggles a target on and off or toggles between different -# versions of similar things, write a "group" target that forwards to the -# right target (or no target) depending on the value of the build flag. This -# group can be in the same BUILD.gn file as the build flag, and targets can -# depend unconditionally on the group rather than duplicating flag checks -# across many targets. -# -# - If a semi-random set of build files REALLY needs to know about a define and -# the above pattern for isolating the build logic in a forwarding group -# doesn't work, you can put the argument in a .gni file. This should be put -# in the lowest level of the build that knows about this feature (which should -# almost always be outside of the //build directory!). -# -# Other flag advice: -# -# - Use boolean values when possible. If you need a default value that expands -# to some complex thing in the default case (like the location of the -# compiler which would be computed by a script), use a default value of -1 or -# the empty string. Outside of the declare_args block, conditionally expand -# the default value as necessary. -# -# - Use a name like "use_foo" or "is_foo" (whatever is more appropriate for -# your feature) rather than just "foo". -# -# - Write good comments directly above the declaration with no blank line. -# These comments will appear as documentation in "gn args --list". -# -# - Don't call exec_script inside declare_args. This will execute the script -# even if the value is overridden, which is wasteful. See first bullet. - -declare_args() { - # Set to enable the official build level of optimization. This has nothing - # to do with branding, but enables an additional level of optimization above - # release (!is_debug). This might be better expressed as a tri-state - # (debug, release, official) but for historical reasons there are two - # separate flags. - is_official_build = false - - # Whether we're a traditional desktop unix. - is_desktop_linux = current_os == "linux" - - # Set to true when compiling with the Clang compiler. - is_clang = current_os != "linux" || - (current_cpu != "s390x" && current_cpu != "s390" && - current_cpu != "ppc64" && current_cpu != "ppc" && - current_cpu != "mips" && current_cpu != "mips64") - - # Allows the path to a custom target toolchain to be injected as a single - # argument, and set as the default toolchain. - custom_toolchain = "" - - # This should not normally be set as a build argument. It's here so that - # every toolchain can pass through the "global" value via toolchain_args(). - host_toolchain = "" - - # DON'T ADD MORE FLAGS HERE. Read the comment above. -} - -declare_args() { - # Debug build. Enabling official builds automatically sets is_debug to false. - is_debug = !is_official_build -} - -declare_args() { - # Component build. Setting to true compiles targets declared as "components" - # as shared libraries loaded dynamically. This speeds up development time. - # When false, components will be linked statically. - # - # For more information see - # https://chromium.googlesource.com/chromium/src/+/master/docs/component_build.md - is_component_build = is_debug && current_os != "ios" -} - -assert(!(is_debug && is_official_build), "Can't do official debug builds") - -# ============================================================================== -# TOOLCHAIN SETUP -# ============================================================================== -# -# Here we set the default toolchain, as well as the variable host_toolchain -# which will identify the toolchain corresponding to the local system when -# doing cross-compiles. When not cross-compiling, this will be the same as the -# default toolchain. -# -# We do this before anything else to make sure we complain about any -# unsupported os/cpu combinations as early as possible. - -if (host_toolchain == "") { - # This should only happen in the top-level context. - # In a specific toolchain context, the toolchain_args() - # block should have propagated a value down. - # TODO(dpranke): Add some sort of assert here that verifies that - # no toolchain omitted host_toolchain from its toolchain_args(). - - if (host_os == "linux") { - if (target_os != "linux") { - # TODO(dpranke) - is_clang normally applies only to the target - # build, and there is no way to indicate that you want to override - # it for both the target build *and* the host build. Do we need to - # support this? - host_toolchain = "//build/toolchain/linux:clang_$host_cpu" - } else if (is_clang) { - host_toolchain = "//build/toolchain/linux:clang_$host_cpu" - } else { - host_toolchain = "//build/toolchain/linux:$host_cpu" - } - } else if (host_os == "mac") { - host_toolchain = "//build/toolchain/mac:clang_$host_cpu" - } else if (host_os == "win") { - # On Windows always use the target CPU for host builds for x86/x64. On the - # configurations we support this will always work and it saves build steps. - if (target_cpu == "x86" || target_cpu == "x64") { - if (is_clang) { - host_toolchain = "//build/toolchain/win:win_clang_$target_cpu" - } else { - host_toolchain = "//build/toolchain/win:$target_cpu" - } - } else if (is_clang) { - host_toolchain = "//build/toolchain/win:win_clang_$host_cpu" - } else { - host_toolchain = "//build/toolchain/win:$host_cpu" - } - } else if (host_os == "aix") { - host_toolchain = "//build/toolchain/aix:$host_cpu" - } else { - assert(false, "Unsupported host_os: $host_os") - } -} - -_default_toolchain = "" - -if (target_os == "android") { - assert(host_os == "linux" || host_os == "mac", - "Android builds are only supported on Linux and Mac hosts.") - _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu" -} else if (target_os == "chromeos" || target_os == "linux") { - # See comments in build/toolchain/cros/BUILD.gn about board compiles. - if (is_clang) { - _default_toolchain = "//build/toolchain/linux:clang_$target_cpu" - } else { - _default_toolchain = "//build/toolchain/linux:$target_cpu" - } -} else if (target_os == "fuchsia") { - _default_toolchain = "//build/toolchain/fuchsia:$target_cpu" -} else if (target_os == "ios") { - _default_toolchain = "//build/toolchain/mac:ios_clang_$target_cpu" -} else if (target_os == "mac") { - assert(host_os == "mac", "Mac cross-compiles are unsupported.") - _default_toolchain = host_toolchain -} else if (target_os == "win") { - # On Windows we use the same toolchain for host and target by default. - # Beware, win cross builds have some caveats, see docs/win_cross.md - # TODO(thakis): See if we want to make 32-bit builds on mac hosts work. - assert(host_os != "mac" || target_cpu == "x64", - "Mac hosts can only build 64-bit chrome/win, https://crbug.com/794838") - if (is_clang) { - _default_toolchain = "//build/toolchain/win:win_clang_$target_cpu" - } else { - _default_toolchain = "//build/toolchain/win:$target_cpu" - } -} else if (target_os == "winuwp") { - # Only target WinUWP on for a Windows store application and only - # x86, x64 and arm are supported target CPUs. - assert(target_cpu == "x86" || target_cpu == "x64" || target_cpu == "arm" || - target_cpu == "arm64") - _default_toolchain = "//build/toolchain/win:uwp_$target_cpu" -} else if (target_os == "aix") { - _default_toolchain = "//build/toolchain/aix:$target_cpu" -} else { - assert(false, "Unsupported target_os: $target_os") -} - -# If a custom toolchain has been set in the args, set it as default. Otherwise, -# set the default toolchain for the platform (if any). -if (custom_toolchain != "") { - set_default_toolchain(custom_toolchain) -} else if (_default_toolchain != "") { - set_default_toolchain(_default_toolchain) -} - -# ============================================================================= -# OS DEFINITIONS -# ============================================================================= -# -# We set these various is_FOO booleans for convenience in writing OS-based -# conditions. -# -# - is_android, is_chromeos, is_ios, and is_win should be obvious. -# - is_mac is set only for desktop Mac. It is not set on iOS. -# - is_posix is true for mac and any Unix-like system (basically everything -# except Windows). -# - is_linux is true for desktop Linux and ChromeOS, but not Android (which is -# generally too different despite being based on the Linux kernel). -# -# Do not add more is_* variants here for random lesser-used Unix systems like -# aix or one of the BSDs. If you need to check these, just check the -# current_os value directly. - -if (current_os == "win" || current_os == "winuwp") { - is_android = false - is_chromeos = false - is_fuchsia = false - is_ios = false - is_linux = false - is_mac = false - is_nacl = false - is_posix = false - is_win = true -} else if (current_os == "mac") { - is_android = false - is_chromeos = false - is_fuchsia = false - is_ios = false - is_linux = false - is_mac = true - is_nacl = false - is_posix = true - is_win = false -} else if (current_os == "android") { - is_android = true - is_chromeos = false - is_fuchsia = false - is_ios = false - is_linux = false - is_mac = false - is_nacl = false - is_posix = true - is_win = false -} else if (current_os == "chromeos") { - is_android = false - is_chromeos = true - is_fuchsia = false - is_ios = false - is_linux = true - is_mac = false - is_nacl = false - is_posix = true - is_win = false -} else if (current_os == "nacl") { - # current_os == "nacl" will be passed by the nacl toolchain definition. - # It is not set by default or on the command line. We treat is as a - # Posix variant. - is_android = false - is_chromeos = false - is_fuchsia = false - is_ios = false - is_linux = false - is_mac = false - is_nacl = true - is_posix = true - is_win = false -} else if (current_os == "fuchsia") { - is_android = false - is_chromeos = false - is_fuchsia = true - is_ios = false - is_linux = false - is_mac = false - is_nacl = false - is_posix = false - is_win = false -} else if (current_os == "ios") { - is_android = false - is_chromeos = false - is_fuchsia = false - is_ios = true - is_linux = false - is_mac = false - is_nacl = false - is_posix = true - is_win = false -} else if (current_os == "linux") { - is_android = false - is_chromeos = false - is_fuchsia = false - is_ios = false - is_linux = true - is_mac = false - is_nacl = false - is_posix = true - is_win = false -} else if (current_os == "aix") { - is_android = false - is_chromeos = false - is_fuchsia = false - is_ios = false - is_linux = false - is_mac = false - is_nacl = false - is_posix = true - is_win = false -} - -# ============================================================================= -# SOURCES FILTERS -# ============================================================================= -# -# These patterns filter out platform-specific files when assigning to the -# sources variable. The magic variable |sources_assignment_filter| is applied -# to each assignment or appending to the sources variable and matches are -# automatically removed. -# -# Note that the patterns are NOT regular expressions. Only "*" and "\b" (path -# boundary = end of string or slash) are supported, and the entire string -# must match the pattern (so you need "*.cc" to match all .cc files, for -# example). - -# DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call -# below. -sources_assignment_filter = [] - -if (!is_win) { - sources_assignment_filter += [ - "*_win.cc", - "*_win.h", - "*_win_unittest.cc", - "*\bwin/*", - "*.def", - "*.rc", - ] -} -if (!is_mac) { - sources_assignment_filter += [ - "*_mac.h", - "*_mac.cc", - "*_mac.mm", - "*_mac_unittest.h", - "*_mac_unittest.cc", - "*_mac_unittest.mm", - "*\bmac/*", - "*_cocoa.h", - "*_cocoa.cc", - "*_cocoa.mm", - "*_cocoa_unittest.h", - "*_cocoa_unittest.cc", - "*_cocoa_unittest.mm", - "*\bcocoa/*", - ] -} -if (!is_ios) { - sources_assignment_filter += [ - "*_ios.h", - "*_ios.cc", - "*_ios.mm", - "*_ios_unittest.h", - "*_ios_unittest.cc", - "*_ios_unittest.mm", - "*\bios/*", - ] -} -if (!is_mac && !is_ios) { - sources_assignment_filter += [ "*.mm" ] -} -if (!is_linux) { - sources_assignment_filter += [ - "*_linux.h", - "*_linux.cc", - "*_linux_unittest.h", - "*_linux_unittest.cc", - "*\blinux/*", - ] -} -if (!is_android) { - sources_assignment_filter += [ - "*_android.h", - "*_android.cc", - "*_android_unittest.h", - "*_android_unittest.cc", - "*\bandroid/*", - ] -} -if (!is_chromeos) { - sources_assignment_filter += [ - "*_chromeos.h", - "*_chromeos.cc", - "*_chromeos_unittest.h", - "*_chromeos_unittest.cc", - "*\bchromeos/*", - ] -} - -# DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call -# below. - -# Actually save this list. -# -# These patterns are executed for every file in the source tree of every run. -# Therefore, adding more patterns slows down the build for everybody. We should -# only add automatic patterns for configurations affecting hundreds of files -# across many projects in the tree. -# -# Therefore, we only add rules to this list corresponding to platforms on the -# Chromium waterfall. This is not for non-officially-supported platforms -# (FreeBSD, etc.) toolkits, (X11, GTK, etc.), or features. For these cases, -# write a conditional in the target to remove the file(s) from the list when -# your platform/toolkit/feature doesn't apply. -set_sources_assignment_filter(sources_assignment_filter) - -# ============================================================================= -# TARGET DEFAULTS -# ============================================================================= -# -# Set up the default configuration for every build target of the given type. -# The values configured here will be automatically set on the scope of the -# corresponding target. Target definitions can add or remove to the settings -# here as needed. -# -# WHAT GOES HERE? -# -# Other than the main compiler and linker configs, the only reason for a config -# to be in this list is if some targets need to explicitly override that config -# by removing it. This is how targets opt-out of flags. If you don't have that -# requirement and just need to add a config everywhere, reference it as a -# sub-config of an existing one, most commonly the main "compiler" one. - -# Holds all configs used for running the compiler. -default_compiler_configs = [ - "//build/config:feature_flags", - "//build/config/compiler:afdo", - "//build/config/compiler:afdo_optimize_size", - "//build/config/compiler:compiler", - "//build/config/compiler:clang_stackrealign", - "//build/config/compiler:compiler_arm_fpu", - "//build/config/compiler:compiler_arm_thumb", - "//build/config/compiler:chromium_code", - "//build/config/compiler:default_include_dirs", - "//build/config/compiler:default_optimization", - "//build/config/compiler:default_stack_frames", - "//build/config/compiler:default_symbols", - "//build/config/compiler:no_exceptions", - "//build/config/compiler:no_rtti", - "//build/config/compiler:runtime_library", - "//build/config/compiler:thin_archive", - "//build/config/coverage:default_coverage", - "//build/config/sanitizers:default_sanitizer_flags", -] - -if (is_win) { - default_compiler_configs += [ - "//build/config/win:default_crt", - "//build/config/win:lean_and_mean", - "//build/config/win:nominmax", - "//build/config/win:unicode", - "//build/config/win:winver", - "//build/config/win:vs_code_analysis", - ] -} - -if (is_posix) { - if (current_os != "aix") { - default_compiler_configs += - [ "//build/config/gcc:symbol_visibility_hidden" ] - } -} - -if (is_fuchsia) { - default_compiler_configs += [ "//build/config/gcc:symbol_visibility_hidden" ] -} - -if (is_android) { - default_compiler_configs += - [ "//build/config/android:default_cygprofile_instrumentation" ] -} - -if (is_win) { - default_compiler_configs += - [ "//build/config/win:default_cygprofile_instrumentation" ] -} - -if (is_clang && !is_nacl) { - default_compiler_configs += [ - "//build/config/clang:find_bad_constructs", - "//build/config/clang:extra_warnings", - ] -} - -# Debug/release-related defines. -if (is_debug) { - default_compiler_configs += [ "//build/config:debug" ] -} else { - default_compiler_configs += [ "//build/config:release" ] -} - -# Static libraries and source sets use only the compiler ones. -set_defaults("static_library") { - configs = default_compiler_configs -} -set_defaults("source_set") { - configs = default_compiler_configs -} - -# Compute the set of configs common to all linked targets (shared libraries, -# loadable modules, executables) to avoid duplication below. -if (is_win) { - # Many targets remove these configs, so they are not contained within - # //build/config:executable_config for easy removal. - _linker_configs = [ - "//build/config/win:default_incremental_linking", - - # Default to console-mode apps. Most of our targets are tests and such - # that shouldn't use the windows subsystem. - "//build/config/win:console", - ] -} else if (is_mac) { - _linker_configs = [ "//build/config/mac:strip_all" ] -} else { - _linker_configs = [] -} - -# Executable defaults. -default_executable_configs = default_compiler_configs + [ - "//build/config:default_libs", - "//build/config:executable_config", - ] + _linker_configs -set_defaults("executable") { - configs = default_executable_configs -} - -# Shared library and loadable module defaults (also for components in component -# mode). -default_shared_library_configs = default_compiler_configs + [ - "//build/config:default_libs", - "//build/config:shared_library_config", - ] + _linker_configs -if (is_android) { - # Strip native JNI exports from shared libraries by default. Binaries that - # want this can remove this config. - default_shared_library_configs += - [ "//build/config/android:hide_all_but_jni_onload" ] -} -set_defaults("shared_library") { - configs = default_shared_library_configs -} -set_defaults("loadable_module") { - configs = default_shared_library_configs - - # loadable_modules are generally used by other libs, not just via JNI. - if (is_android) { - configs -= [ "//build/config/android:hide_all_but_jni_onload" ] - } -} - -# ============================================================================== -# COMPONENT SETUP -# ============================================================================== - -# Defines a component, which equates to a shared_library when -# is_component_build == true and a static_library otherwise. -# -# Use static libraries for the static build rather than source sets because -# many of of our test binaries link many large dependencies but often don't -# use large portions of them. The static libraries are much more efficient to -# link in this situation since only the necessary object files are linked. -# -# The invoker can override the type of the target in the non-component-build -# case by setting static_component_type to either "source_set" or -# "static_library". If unset, the default will be used. -template("component") { - if (is_component_build) { - _component_mode = "shared_library" - } else if (defined(invoker.static_component_type)) { - assert(invoker.static_component_type == "static_library" || - invoker.static_component_type == "source_set") - _component_mode = invoker.static_component_type - } else if (!defined(invoker.sources)) { - # When there are no sources defined, use a source set to avoid creating - # an empty static library (which generally don't work). - _component_mode = "source_set" - } else { - _component_mode = "static_library" - } - target(_component_mode, target_name) { - # Explicitly forward visibility, implicitly forward everything else. - # Forwarding "*" doesn't recurse into nested scopes (to avoid copying all - # globals into each template invocation), so won't pick up file-scoped - # variables. Normally this isn't too bad, but visibility is commonly - # defined at the file scope. Explicitly forwarding visibility and then - # excluding it from the "*" set works around this problem. - # See http://crbug.com/594610 - forward_variables_from(invoker, [ "visibility" ]) - forward_variables_from(invoker, "*", [ "visibility" ]) - - # All shared libraries must have the sanitizer deps to properly link in - # asan mode (this target will be empty in other cases). - if (!defined(deps)) { - deps = [] - } - deps += [ "//build/config:exe_and_shlib_deps" ] - } -} - -# Component defaults -set_defaults("component") { - if (is_component_build) { - configs = default_shared_library_configs - if (is_android) { - configs -= [ "//build/config/android:hide_all_but_jni_onload" ] - } - } else { - configs = default_compiler_configs - } -}
diff --git a/build/config/OWNERS b/build/config/OWNERS deleted file mode 100644 index f1592d3..0000000 --- a/build/config/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -dpranke@chromium.org -scottmg@chromium.org - -per-file BUILDCONFIG.gn=dpranke@chromium.org -per-file BUILDCONFIG.gn=set noparent
diff --git a/build/config/aix/BUILD.gn b/build/config/aix/BUILD.gn deleted file mode 100644 index 7ab1e7c..0000000 --- a/build/config/aix/BUILD.gn +++ /dev/null
@@ -1,50 +0,0 @@ -# Copyright 2017 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/config/sanitizers/sanitizers.gni") -import("//build/toolchain/toolchain.gni") - -# This is included by reference in the //build/config/compiler config that -# is applied to all targets. It is here to separate out the logic. - -config("compiler") { - # These flags are shared between the C compiler and linker. - defines = [ - "_LINUX_SOURCE_COMPAT=1", - "__STDC_FORMAT_MACROS", - "_ALL_SOURCE=1", - ] - - cflags = [ - "-Wall", - "-Wno-unused-parameter", - "-pthread", - "-Wmissing-field-initializers", - "-Wno-uninitialized", - "-mcpu=power5+", - "-mfprnd", - "-mno-popcntb", - "-maix64", - "-fdata-sections", - "-ffunction-sections", - "-O3", - - # "-Werror" - # We need to find a way to fix the TOC warnings if we want to enable this. - ] - - cflags_cc = [ - "-std=gnu++11", - "-fno-rtti", - "-fno-exceptions", - "-Wno-narrowing", - "-Wnon-virtual-dtor", - ] - - ldflags = [ - "-pthread", - "-maix64", - "-Wl,-bbigtoc", - ] -}
diff --git a/build/config/allocator.gni b/build/config/allocator.gni deleted file mode 100644 index 709f80f..0000000 --- a/build/config/allocator.gni +++ /dev/null
@@ -1,55 +0,0 @@ -# Copyright 2014 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/config/sanitizers/sanitizers.gni") - -# Temporarily disable tcmalloc on arm64 linux to get rid of compilation errors. -if (is_android || is_mac || is_ios || is_asan || is_lsan || is_tsan || - is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64")) { - _default_allocator = "none" -} else { - _default_allocator = "tcmalloc" -} - -# The debug CRT on Windows has some debug features that are incompatible with -# the shim. NaCl in particular does seem to link some binaries statically -# against the debug CRT with "is_nacl=false". -if ((is_linux || is_android || is_mac || - (is_win && !is_component_build && !is_debug)) && !is_asan && !is_lsan && - !is_tsan && !is_msan) { - _default_use_allocator_shim = true -} else { - _default_use_allocator_shim = false -} - -declare_args() { - # Memory allocator to use. Set to "none" to use default allocator. - use_allocator = _default_allocator - - # Causes all the allocations to be routed via allocator_shim.cc. - use_allocator_shim = _default_use_allocator_shim - - # Partition alloc is included by default except iOS. - use_partition_alloc = !is_ios -} - -if (is_nacl) { - # Turn off the build flag for NaCL builds to minimize confusion, as NaCL - # doesn't support the heap shim. - use_allocator_shim = false -} - -assert(use_allocator == "none" || use_allocator == "tcmalloc") - -assert(!is_win || use_allocator == "none", "Tcmalloc doesn't work on Windows.") -assert(!is_mac || use_allocator == "none", "Tcmalloc doesn't work on macOS.") - -assert( - !use_allocator_shim || is_linux || is_android || is_win || is_mac, - "use_allocator_shim is supported only on Linux, Android, Windows and macOS targets") - -if (is_win && use_allocator_shim) { - assert(!is_component_build, - "The allocator shim doesn't work for the component build on Windows.") -}
diff --git a/build/config/android/BUILD.gn b/build/config/android/BUILD.gn deleted file mode 100644 index bf74673..0000000 --- a/build/config/android/BUILD.gn +++ /dev/null
@@ -1,215 +0,0 @@ -# Copyright 2014 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/config/android/config.gni") -import("//build/config/c++/c++.gni") -import("//build/config/sanitizers/sanitizers.gni") - -assert(is_android) - -# This is included by reference in the //build/config/compiler config that -# is applied to all targets. It is here to separate out the logic that is -# Android-only. -config("compiler") { - cflags = [ - "-ffunction-sections", - "-fno-short-enums", - ] - defines = [ - "ANDROID", - - # The NDK has these things, but doesn't define the constants to say that it - # does. Define them here instead. - "HAVE_SYS_UIO_H", - - # Forces full rebuilds on NDK rolls. To rebuild everything when NDK version - # stays the same, increment the suffix number. - "ANDROID_NDK_VERSION_ROLL=${android_ndk_version}_1", - ] - - if (current_cpu == "mips64el") { - cflags += [ - # Have to force IAS for mips64. - "-fintegrated-as", - ] - } - - ldflags = [ - "-Wl,--no-undefined", - - # Don't allow visible symbols from libgcc or libc++ to be - # re-exported. - "-Wl,--exclude-libs=libgcc.a", - "-Wl,--exclude-libs=libc++_static.a", - - # Don't allow visible symbols from libraries that contain - # assembly code with symbols that aren't hidden properly. - # http://crbug.com/448386 - "-Wl,--exclude-libs=libvpx_assembly_arm.a", - ] - - # $compile_api_level corresponds to the API level used for the sysroot path - # calculation in //build/config/android/config.gni - if (current_cpu == "arm") { - abi_target = "arm-linux-androideabi" - compile_api_level = android32_ndk_api_level - } else if (current_cpu == "x86") { - abi_target = "i686-linux-android" - compile_api_level = android32_ndk_api_level - } else if (current_cpu == "arm64") { - abi_target = "aarch64-linux-android" - compile_api_level = android64_ndk_api_level - } else if (current_cpu == "x64") { - # Place holder for x64 support, not tested. - # TODO: Enable clang support for Android x64. http://crbug.com/539781 - abi_target = "x86_64-linux-android" - compile_api_level = android64_ndk_api_level - } else if (current_cpu == "mipsel") { - abi_target = "mipsel-linux-android" - compile_api_level = android32_ndk_api_level - } else if (current_cpu == "mips64el") { - # Place holder for mips64 support, not tested. - abi_target = "mips64el-linux-android" - compile_api_level = android64_ndk_api_level - } else { - assert(false, "Architecture not supported") - } - cflags += [ - "--target=$abi_target", - "-isystem" + - rebase_path("$android_ndk_root/sysroot/usr/include/$abi_target", - root_build_dir), - "-D__ANDROID_API__=$compile_api_level", - - # Temporary workaround for third party dependencies requiring this to be - # defined. - # TODO(crbug.com/771171): Remove this once the third party deps have been - # fixed to be compatible with newer NDK versions - "-D__NDK_FPABI__=", - ] - ldflags += [ "--target=$abi_target" ] - - # TODO(crbug.com/771171): Remove this define once code that uses it has been - # updated to no longer need it. This is leftover from older Android NDK - # versions. - if (compile_api_level < 20) { - cflags += [ "-DHAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC=1" ] - } - - # Assign any flags set for the C compiler to asmflags so that they are sent - # to the assembler. - asmflags = cflags -} - -# This is included by reference in the //build/config/compiler:runtime_library -# config that is applied to all targets. It is here to separate out the logic -# that is Android-only. Please see that target for advice on what should go in -# :runtime_library vs. :compiler. -config("runtime_library") { - # NOTE: The libc++ header include paths below are specified in cflags_cc - # rather than include_dirs because they need to come after include_dirs. - # Think of them like system headers, but don't use '-isystem' because the - # arm-linux-androideabi-4.4.3 toolchain (circa Gingerbread) will exhibit - # strange errors. The include ordering here is important; change with - # caution. - cflags_cc = [] - if (!use_custom_libcxx) { - cflags_cc = [] - if (android_ndk_major_version >= 13) { - libcxx_include_path = - rebase_path("$android_libcpp_root/include", root_build_dir) - libcxxabi_include_path = rebase_path( - "$android_ndk_root/sources/cxx-stl/llvm-libc++abi/include", - root_build_dir) - } else { - libcxx_include_path = - rebase_path("$android_libcpp_root/libcxx/include", root_build_dir) - libcxxabi_include_path = rebase_path( - "$android_ndk_root/sources/cxx-stl/llvm-libc++abi/libcxxabi/include", - root_build_dir) - } - cflags_cc += [ - "-isystem" + libcxx_include_path, - "-isystem" + libcxxabi_include_path, - ] - } - cflags_cc += [ "-isystem" + rebase_path( - "$android_ndk_root/sources/android/support/include", - root_build_dir) ] - - defines = [ - "__GNU_SOURCE=1", # Necessary for clone(). - "CHROMIUM_CXX_TWEAK_INLINES", # Saves binary size. - ] - ldflags = [ "-nostdlib" ] - lib_dirs = [ android_libcpp_lib_dir ] - - libs = [] - if (!use_custom_libcxx) { - # The libc++ runtime library (must come first). - # ASan needs to dynamically link to libc++ even in static builds so - # that it can interpose operator new. - if (is_component_build || is_asan) { - libs += [ "c++_shared" ] - } else { - libs += [ "c++_static" ] - } - libs += [ "c++abi" ] - } - libs += [ "android_support" ] - - # arm builds of libc++ starting in NDK r12 depend on unwind. - if (current_cpu == "arm") { - libs += [ "unwind" ] - } - - # Manually link the libgcc.a that the cross compiler uses. This is - # absolute because the linker will look inside the sysroot if it's not. - libs += [ - rebase_path(android_libgcc_file), - "c", - ] - - if (current_cpu == "arm" && arm_version == 6) { - libs += [ "atomic" ] - } - - if (current_cpu == "mipsel") { - libs += [ "atomic" ] - } - - # TODO(jdduke) Re-enable on mips after resolving linking - # issues with libc++ (crbug.com/456380). - if (current_cpu != "mipsel" && current_cpu != "mips64el") { - ldflags += [ "-Wl,--warn-shared-textrel" ] - } -} - -config("executable_config") { - cflags = [ "-fPIE" ] - asmflags = [ "-fPIE" ] - ldflags = [ "-pie" ] -} - -config("hide_all_but_jni_onload") { - ldflags = [ "-Wl,--version-script=" + rebase_path( - "//build/android/android_only_explicit_jni_exports.lst") ] -} - -config("hide_all_but_jni") { - ldflags = [ "-Wl,--version-script=" + - rebase_path("//build/android/android_only_jni_exports.lst") ] -} - -config("lld_pack_relocations") { - ldflags = [ "-Wl,--pack-dyn-relocs=android" ] -} - -# Used for instrumented build to generate the orderfile. -config("default_cygprofile_instrumentation") { - if (use_order_profiling) { - defines = [ "CYGPROFILE_INSTRUMENTATION=1" ] - cflags = [ "-finstrument-function-entry-bare" ] - } -}
diff --git a/build/config/android/OWNERS b/build/config/android/OWNERS deleted file mode 100644 index 74dca6f..0000000 --- a/build/config/android/OWNERS +++ /dev/null
@@ -1,6 +0,0 @@ -agrieve@chromium.org -estevenson@chromium.org -digit@chromium.org -wnwen@chromium.org - -# COMPONENT: Build
diff --git a/build/config/android/abi.gni b/build/config/android/abi.gni deleted file mode 100644 index dc25b49..0000000 --- a/build/config/android/abi.gni +++ /dev/null
@@ -1,69 +0,0 @@ -# Copyright 2017 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. - -# Logic separated out from config.gni so that it can be used by compiler.gni -# without introducing a circular dependency. - -# NOTE: Because Chrome OS builds may depend on targets built with the Android -# toolchain, this GNI file may be read and processed from within Chrome OS -# toolchains. Checking |is_android| here would therefore be too restrictive. -assert(is_android || is_chromeos) - -declare_args() { - # Adds intrumentation to each function. Writes a file with the order that - # functions are called at startup. - use_order_profiling = false - - # Builds secondary abi for APKs, supports build 32-bit arch as secondary - # abi in 64-bit Monochrome and WebView. - build_apk_secondary_abi = true -} - -if (current_cpu == "x86") { - android_app_abi = "x86" -} else if (current_cpu == "arm") { - import("//build/config/arm.gni") - if (arm_version < 7) { - android_app_abi = "armeabi" - } else { - android_app_abi = "armeabi-v7a" - } -} else if (current_cpu == "mipsel") { - android_app_abi = "mips" -} else if (current_cpu == "x64") { - android_app_abi = "x86_64" -} else if (current_cpu == "arm64") { - android_app_abi = "arm64-v8a" -} else if (current_cpu == "mips64el") { - android_app_abi = "mips64" -} else { - assert(false, "Unknown Android ABI: " + current_cpu) -} - -if (target_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el") { - android_64bit_target_cpu = true -} else if (target_cpu == "arm" || target_cpu == "x86" || - target_cpu == "mipsel") { - android_64bit_target_cpu = false -} else { - assert(false, "Unknown target CPU: $target_cpu") -} - -# Intentionally do not define android_app_secondary_abi_cpu and -# android_app_secondary_abi for 32-bit target_cpu, since they are not used. -if (target_cpu == "arm64") { - android_secondary_abi_cpu = "arm" - android_app_secondary_abi = "armeabi-v7a" -} else if (target_cpu == "x64") { - android_secondary_abi_cpu = "x86" - android_app_secondary_abi = "x86" -} else if (target_cpu == "mips64el") { - android_secondary_abi_cpu = "mipsel" - android_app_secondary_abi = "mips" -} - -if (defined(android_secondary_abi_cpu)) { - android_secondary_abi_toolchain = - "//build/toolchain/android:android_clang_${android_secondary_abi_cpu}" -}
diff --git a/build/config/android/config.gni b/build/config/android/config.gni deleted file mode 100644 index dcd694c..0000000 --- a/build/config/android/config.gni +++ /dev/null
@@ -1,374 +0,0 @@ -# Copyright 2014 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. - -# This file contains common system config stuff for the Android build. - -# NOTE: Because Chrome OS builds may depend on targets built with the Android -# toolchain, this GNI file may be read and processed from within Chrome OS -# toolchains. Checking |is_android| here would therefore be too restrictive. -if (is_android || is_chromeos) { - import("//build_overrides/build.gni") - import("abi.gni") - - if (build_with_chromium) { - # Some non-chromium projects (e.g. WebRTC) use our build configs - # heavily but don't write gclient args files. - - import("//build/config/gclient_args.gni") - if (defined(checkout_android_native_support)) { - n = "$0x0A" # Newline - assert(checkout_android_native_support, - "Missing native Android toolchain support. |target_os| in your " + - ".gclient configuration file (in the parent directory of " + - "src) must include \"android\" and/or \"chromeos\". For " + - "example:${n}${n}solutions = [${n}...${n}]${n}" + - "target_os=[\"chromeos\"]${n}") - } - } - - has_chrome_android_internal = - exec_script("//build/dir_exists.py", - [ rebase_path("//clank", root_build_dir) ], - "string") == "True" - - # We are using a separate declare_args block for only this argument so that - # we can decide if we have to pull in definitions from the internal config - # early. - declare_args() { - # Enables using the internal Chrome for Android repository. The default - # value depends on whether the repository is available, and if it's not but - # this argument is manually set to True, the generation will fail. - # The main purpose of this argument is to avoid having to maintain 2 - # repositories to support both public only and internal builds. - enable_chrome_android_internal = has_chrome_android_internal - - # Android API level for 32 bits platforms - android32_ndk_api_level = 16 - - # Android API level for 64 bits platforms - android64_ndk_api_level = 21 - } - - if (enable_chrome_android_internal) { - import("//clank/config.gni") - } else { - import("//build/config/android/sdk.gni") - declare_args() { - # Android SDK release. Currently, only "o_mr1" is publicly supported. - android_sdk_release = default_android_sdk_release - } - } - - if (!defined(extra_chrome_shared_library_configs)) { - extra_chrome_shared_library_configs = [] - } - if (!defined(extra_chrome_shared_library_deps)) { - extra_chrome_shared_library_deps = [] - } - - if (!defined(default_android_ndk_root)) { - default_android_ndk_root = "//third_party/android_ndk" - default_android_ndk_version = "r16" - default_android_ndk_major_version = 16 - } else { - assert(defined(default_android_ndk_version)) - assert(defined(default_android_ndk_major_version)) - } - - if (android_sdk_release == "o_mr1") { - default_android_sdk_root = "//third_party/android_tools/sdk" - default_android_sdk_version = "27" - default_android_sdk_build_tools_version = "27.0.3" - default_android_sdk_tools_version_suffix = "-26.0.0-dev" - public_android_sdk = true - } - - if (!defined(default_lint_android_sdk_root)) { - # Purposefully repeated so that downstream can change - # default_android_sdk_root without changing lint version. - default_lint_android_sdk_root = "//third_party/android_tools/sdk" - default_lint_android_sdk_version = "26" - } - - if (!defined(default_extras_android_sdk_root)) { - # Purposefully repeated so that downstream can change - # default_android_sdk_root without changing where we load the SDK extras - # from. (Google Play services, etc.) - default_extras_android_sdk_root = "//third_party/android_tools/sdk" - } - - if (!defined(default_android_keystore_path)) { - default_android_keystore_path = "//build/android/chromium-debug.keystore" - default_android_keystore_name = "chromiumdebugkey" - default_android_keystore_password = "chromium" - } - - # google_play_services_package contains the path where individual client - # targets (e.g. google_play_services_base_java) are located. - if (!defined(google_play_services_package)) { - google_play_services_package = "//third_party/android_tools" - } - - if (!defined(android_support_library_package)) { - android_support_library_package = "//third_party/android_tools/support" - } - - if (!defined(system_webview_apk_target)) { - system_webview_apk_target = "//android_webview:system_webview_apk" - } - - webview_public_framework_jar = - "//third_party/android_system_sdk/android_system.jar" - if (!defined(webview_framework_jar)) { - webview_framework_jar = webview_public_framework_jar - } - - # TODO(crbug.com/807768): Remove this extra dependency. - if (!defined(android_extra_test_deps)) { - android_extra_test_deps = [] - } - - assert(defined(default_android_sdk_root), - "SDK release " + android_sdk_release + " not recognized.") - - declare_args() { - android_ndk_root = default_android_ndk_root - android_ndk_version = default_android_ndk_version - android_ndk_major_version = default_android_ndk_major_version - - android_sdk_root = default_android_sdk_root - android_sdk_version = default_android_sdk_version - android_sdk_build_tools_version = default_android_sdk_build_tools_version - android_sdk_tools_version_suffix = default_android_sdk_tools_version_suffix - - lint_android_sdk_root = default_lint_android_sdk_root - lint_android_sdk_version = default_lint_android_sdk_version - - # Libc++ library directory. Override to use a custom libc++ binary. - android_libcpp_lib_dir = "" - - # Android versionCode for android_apk()s that don't explicitly set one. - android_default_version_code = "1" - - # Android versionName for android_apk()s that don't explicitly set one. - android_default_version_name = "Developer Build" - - # The path to the keystore to use for signing builds. - android_keystore_path = default_android_keystore_path - - # The name of the keystore to use for signing builds. - android_keystore_name = default_android_keystore_name - - # The password for the keystore to use for signing builds. - android_keystore_password = default_android_keystore_password - - # Enables verbose proguard output (summaries and unfiltered output). - proguard_verbose = false - - # Java debug on Android. Having this on enables multidexing, and turning it - # off will enable proguard. - is_java_debug = is_debug - - # Report Java assert failure on Android. Turning it on will report Java - # assert failure without crash. - report_java_assert = false - - # Mark APKs as android:debuggable="true". - debuggable_apks = !is_official_build - - # Set to false to disable the Errorprone compiler - use_errorprone_java_compiler = true - - # Enables EMMA Java code coverage. Instruments classes during build to - # produce .ec files during runtime - emma_coverage = false - - # EMMA filter string consisting of a list of inclusion/exclusion patterns - # separated with whitespace and/or comma. Only has effect if - # emma_coverage==true - emma_filter = "" - - # Disables process isolation when building _incremental targets. - # Required for Android M+ due to SELinux policies (stronger sandboxing). - disable_incremental_isolated_processes = false - - # Speeds up incremental compiles by compiling only changed files. - enable_incremental_javac = false - - # Build incremental targets whenever possible. - # Ex. with this arg set to true, the chrome_public_apk target result in - # chrome_public_apk_incremental being built. - incremental_apk_by_default = false - - # When true, updates all android_aar_prebuilt() .info files during gn gen. - # Refer to android_aar_prebuilt() for more details. - update_android_aar_prebuilts = false - - # When true, uses the third party libraries from //third_party/android_deps - # over the ones in other places. (instead of the support library from - # android_tools for example) - enable_android_deps_repository = true - } - - # We need a second declare_args block to make sure we are using the overridden - # value of the arguments set above. - declare_args() { - if (defined(default_android_sdk_platform_version)) { - android_sdk_platform_version = default_android_sdk_platform_version - } else { - android_sdk_platform_version = android_sdk_version - } - - # Speed up dexing using dx --incremental. - enable_incremental_dx = is_java_debug - } - - # Neither of these should ever be used for release builds since they are - # somewhat experimental and dx --incremental is known to not produce - # byte-for-byte identical output. - assert(!(enable_incremental_dx && !is_java_debug)) - assert(!(enable_incremental_javac && !is_java_debug)) - - # Path to where selected build variables are written to. - android_build_vars = "$root_build_dir/build_vars.txt" - - # Host stuff ----------------------------------------------------------------- - - # Defines the name the Android build gives to the current host CPU - # architecture, which is different than the names GN uses. - if (host_cpu == "x64") { - android_host_arch = "x86_64" - } else if (host_cpu == "x86") { - android_host_arch = "x86" - } else { - assert(false, "Need Android toolchain support for your build CPU arch.") - } - - # Defines the name the Android build gives to the current host CPU - # architecture, which is different than the names GN uses. - if (host_os == "linux") { - android_host_os = "linux" - } else if (host_os == "mac") { - android_host_os = "darwin" - } else { - assert(false, "Need Android toolchain support for your build OS.") - } - - # Directories and files ------------------------------------------------------ - # - # We define may of the dirs strings here for each output architecture (rather - # than just the current one) since these are needed by the Android toolchain - # file to define toolchains for all possible targets in one pass. - - android_sdk = - "${android_sdk_root}/platforms/android-${android_sdk_platform_version}" - - # Path to the Android NDK and SDK. - android_ndk_include_dir = "$android_ndk_root/usr/include" - - android_sdk_tools = "${android_sdk_root}/tools" - android_sdk_build_tools = - "${android_sdk_root}/build-tools/$android_sdk_build_tools_version" - - # Path to the SDK's android.jar - android_sdk_jar = "$android_sdk/android.jar" - - # Subdirectories inside android_ndk_root that contain the sysroot for the - # associated platform. - x86_android_sysroot_subdir = - "platforms/android-${android32_ndk_api_level}/arch-x86" - arm_android_sysroot_subdir = - "platforms/android-${android32_ndk_api_level}/arch-arm" - mips_android_sysroot_subdir = - "platforms/android-${android32_ndk_api_level}/arch-mips" - x86_64_android_sysroot_subdir = - "platforms/android-${android64_ndk_api_level}/arch-x86_64" - arm64_android_sysroot_subdir = - "platforms/android-${android64_ndk_api_level}/arch-arm64" - mips64_android_sysroot_subdir = - "platforms/android-${android64_ndk_api_level}/arch-mips64" - - # Toolchain root directory for each build. The actual binaries are inside - # a "bin" directory inside of these. - _android_toolchain_version = "4.9" - _android_toolchain_detailed_version = "4.9.x" - x86_android_toolchain_root = "$android_ndk_root/toolchains/x86-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" - arm_android_toolchain_root = "$android_ndk_root/toolchains/arm-linux-androideabi-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" - mips_android_toolchain_root = "$android_ndk_root/toolchains/mipsel-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" - x86_64_android_toolchain_root = "$android_ndk_root/toolchains/x86_64-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" - arm64_android_toolchain_root = "$android_ndk_root/toolchains/aarch64-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" - mips64_android_toolchain_root = "$android_ndk_root/toolchains/mips64el-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" - - # Location of libgcc. This is only needed for the current GN toolchain, so we - # only need to define the current one, rather than one for every platform - # like the toolchain roots. - if (current_cpu == "x86") { - android_prebuilt_arch = "android-x86" - _binary_prefix = "i686-linux-android" - android_toolchain_root = "$x86_android_toolchain_root" - android_libgcc_file = "$android_toolchain_root/lib/gcc/i686-linux-android/${_android_toolchain_detailed_version}/libgcc.a" - } else if (current_cpu == "arm") { - android_prebuilt_arch = "android-arm" - _binary_prefix = "arm-linux-androideabi" - android_toolchain_root = "$arm_android_toolchain_root" - android_libgcc_file = "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_detailed_version}/libgcc.a" - } else if (current_cpu == "mipsel") { - android_prebuilt_arch = "android-mips" - _binary_prefix = "mipsel-linux-android" - android_toolchain_root = "$mips_android_toolchain_root" - android_libgcc_file = "$android_toolchain_root/lib/gcc/mipsel-linux-android/${_android_toolchain_detailed_version}/libgcc.a" - } else if (current_cpu == "x64") { - android_prebuilt_arch = "android-x86_64" - _binary_prefix = "x86_64-linux-android" - android_toolchain_root = "$x86_64_android_toolchain_root" - android_libgcc_file = "$android_toolchain_root/lib/gcc/x86_64-linux-android/${_android_toolchain_detailed_version}/libgcc.a" - } else if (current_cpu == "arm64") { - android_prebuilt_arch = "android-arm64" - _binary_prefix = "aarch64-linux-android" - android_toolchain_root = "$arm64_android_toolchain_root" - android_libgcc_file = "$android_toolchain_root/lib/gcc/aarch64-linux-android/${_android_toolchain_detailed_version}/libgcc.a" - } else if (current_cpu == "mips64el") { - android_prebuilt_arch = "android-mips64" - _binary_prefix = "mips64el-linux-android" - android_toolchain_root = "$mips64_android_toolchain_root" - android_libgcc_file = "$android_toolchain_root/lib/gcc/mips64el-linux-android/${_android_toolchain_detailed_version}/libgcc.a" - } else { - assert(false, "Need android libgcc support for your target arch.") - } - - android_tool_prefix = "$android_toolchain_root/bin/$_binary_prefix-" - android_readelf = "${android_tool_prefix}readelf" - android_objcopy = "${android_tool_prefix}objcopy" - android_gdbserver = - "$android_ndk_root/prebuilt/$android_prebuilt_arch/gdbserver/gdbserver" - - # Toolchain stuff ------------------------------------------------------------ - - android_libcpp_root = "$android_ndk_root/sources/cxx-stl/llvm-libc++" - - if (android_libcpp_lib_dir == "") { - android_libcpp_lib_dir = "${android_libcpp_root}/libs/${android_app_abi}" - } - - # Dynamic app bundles ------------------------------------------------------- - - # TODO(digit): Remove this once we roll a version of the Android SDK that - # has the proper build-tools binaries to both public and internal. - declare_args() { - # To enable generation of application bundles, define - # android_sdk_app_bundle_build_tools to point to an Android SDK build-tools - # directory that has the relevant aapt2 and bundletool binaries. - # - android_sdk_app_bundle_build_tools = "" - } - - # Whether building application bundles is supported. - android_enable_app_bundles = android_sdk_app_bundle_build_tools != "" -} - -declare_args() { - # Enables used resource whitelist generation. Set for official builds only - # as a large amount of build output is generated. - enable_resource_whitelist_generation = is_android && is_official_build -}
diff --git a/build/config/android/extract_unwind_tables.gni b/build/config/android/extract_unwind_tables.gni deleted file mode 100644 index d0b0532..0000000 --- a/build/config/android/extract_unwind_tables.gni +++ /dev/null
@@ -1,50 +0,0 @@ -# Copyright 2018 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/config/android/rules.gni") - -template("unwind_table_asset") { - # Note: This file name is used in multiple monochrome build scripts. - _asset_path = "${target_gen_dir}/${target_name}/unwind_cfi_32" - _unwind_action = "${target_name}__extract" - - action(_unwind_action) { - if (defined(invoker.testonly)) { - testonly = invoker.testonly - } - - script = "//build/android/gyp/extract_unwind_tables.py" - outputs = [ - _asset_path, - ] - inputs = [ - "$root_out_dir/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension", - ] - - args = [ - "--input_path", - rebase_path( - "$root_out_dir/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension", - root_build_dir), - "--output_path", - rebase_path(_asset_path, root_build_dir), - "--dump_syms_path", - rebase_path("$root_out_dir/dump_syms", root_build_dir), - ] - deps = invoker.deps - deps += [ "//third_party/breakpad:dump_syms" ] - } - android_assets(target_name) { - if (defined(invoker.testonly)) { - testonly = invoker.testonly - } - sources = [ - _asset_path, - ] - disable_compression = true - deps = [ - ":$_unwind_action", - ] - } -}
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni deleted file mode 100644 index 02bfabf..0000000 --- a/build/config/android/internal_rules.gni +++ /dev/null
@@ -1,3179 +0,0 @@ -# Copyright 2014 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. - -# Do not add any imports to non-//build directories here. -# Some projects (e.g. V8) do not have non-build directories DEPS'ed in. -import("//build_overrides/build.gni") -import("//build/config/android/config.gni") -import("//build/config/dcheck_always_on.gni") -import("//build/config/sanitizers/sanitizers.gni") - -assert(is_android) - -# These identify targets that have .build_config files (except for android_apk, -# java_binary, resource_rewriter, since we never need to depend on these). -_java_target_whitelist = [ - "*:*_java", - "*:*_javalib", - "*:*_java_*", # e.g. java_test_support - "*:java", - "*:junit", - "*:junit_*", - "*:*_junit_*", - "*:*javatests", - "*:*_assets", - "*android*:assets", - "*:*_apk_*resources", - "*android*:resources", - "*:*_resources", - "*:*_grd", - "*:*locale_paks", - - # TODO(agrieve): Rename targets below to match above patterns. - "*android_webview/glue:glue", -] - -# Targets that match the whitelist but are not actually java targets. -_java_target_blacklist = [ - "//chrome:packed_resources", - "*:*_unpack_aar", -] - -_default_proguard_jar_path = "//third_party/proguard/lib/proguard.jar" - -# Write the target's .build_config file. This is a json file that contains a -# dictionary of information about how to build this target (things that -# require knowledge about this target's dependencies and cannot be calculated -# at gn-time). There is a special syntax to add a value in that dictionary to -# an action/action_foreachs args: -# --python-arg=@FileArg($rebased_build_config_path:key0:key1) -# At runtime, such an arg will be replaced by the value in the build_config. -# See build/android/gyp/write_build_config.py and -# build/android/gyp/util/build_utils.py:ExpandFileArgs -template("write_build_config") { - _type = invoker.type - - # Don't need to enforce naming scheme for these targets since we never - # consider them in dependency chains. - if (_type != "android_apk" && _type != "java_binary" && - _type != "resource_rewriter" && _type != "dist_jar" && - _type != "java_annotation_processor" && _type != "dist_aar") { - set_sources_assignment_filter(_java_target_whitelist) - _parent_invoker = invoker.invoker - _target_label = - get_label_info(":${_parent_invoker.target_name}", "label_no_toolchain") - sources = [ - _target_label, - ] - if (sources != []) { - set_sources_assignment_filter(_java_target_blacklist) - sources = [] - sources = [ - _target_label, - ] - if (sources != []) { - assert(false, "Invalid java target name: $_target_label") - } - } - sources = [] - } - - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - if (!defined(deps)) { - deps = [] - } - if (defined(invoker.android_manifest_dep)) { - deps += [ invoker.android_manifest_dep ] - } - - script = "//build/android/gyp/write_build_config.py" - depfile = "$target_gen_dir/$target_name.d" - inputs = [] - outputs = [ - invoker.build_config, - ] - - _deps_configs = [] - if (defined(invoker.possible_config_deps)) { - foreach(_possible_dep, invoker.possible_config_deps) { - set_sources_assignment_filter(_java_target_whitelist) - _target_label = get_label_info(_possible_dep, "label_no_toolchain") - sources = [ - _target_label, - ] - if (sources == []) { - set_sources_assignment_filter(_java_target_blacklist) - sources = [] - sources = [ - _target_label, - ] - if (sources != []) { - deps += [ "${_target_label}__build_config" ] - _dep_gen_dir = get_label_info(_possible_dep, "target_gen_dir") - _dep_name = get_label_info(_possible_dep, "name") - _deps_configs += [ "$_dep_gen_dir/$_dep_name.build_config" ] - } - } - sources = [] - } - } - _rebased_deps_configs = rebase_path(_deps_configs, root_build_dir) - - args = [ - "--type=$_type", - "--depfile", - rebase_path(depfile, root_build_dir), - "--deps-configs=$_rebased_deps_configs", - "--build-config", - rebase_path(invoker.build_config, root_build_dir), - ] - - if (defined(invoker.jar_path)) { - args += [ - "--jar-path", - rebase_path(invoker.jar_path, root_build_dir), - ] - } - if (defined(invoker.unprocessed_jar_path)) { - args += [ - "--unprocessed-jar-path", - rebase_path(invoker.unprocessed_jar_path, root_build_dir), - ] - } - if (defined(invoker.ijar_path)) { - args += [ - "--interface-jar-path", - rebase_path(invoker.ijar_path, root_build_dir), - ] - } - if (defined(invoker.java_resources_jar)) { - args += [ - "--java-resources-jar-path", - rebase_path(invoker.java_resources_jar, root_build_dir), - ] - } - if (defined(invoker.annotation_processor_deps)) { - _processor_configs = [] - foreach(_processor_dep, invoker.annotation_processor_deps) { - _target_label = get_label_info(_processor_dep, "label_no_toolchain") - _dep_gen_dir = get_label_info(_processor_dep, "target_gen_dir") - _dep_name = get_label_info(_processor_dep, "name") - deps += [ "${_target_label}__build_config" ] - _processor_configs += [ "$_dep_gen_dir/$_dep_name.build_config" ] - } - _rebased_processor_configs = - rebase_path(_processor_configs, root_build_dir) - args += [ "--annotation-processor-configs=$_rebased_processor_configs" ] - } - - if (defined(invoker.dex_path)) { - args += [ - "--dex-path", - rebase_path(invoker.dex_path, root_build_dir), - ] - } - if (defined(invoker.supports_android) && invoker.supports_android) { - args += [ "--supports-android" ] - } - if (defined(invoker.requires_android) && invoker.requires_android) { - args += [ "--requires-android" ] - } - if (defined(invoker.is_prebuilt) && invoker.is_prebuilt) { - args += [ "--is-prebuilt" ] - } - if (defined(invoker.bypass_platform_checks) && - invoker.bypass_platform_checks) { - args += [ "--bypass-platform-checks" ] - } - - if (defined(invoker.apk_under_test)) { - deps += [ "${invoker.apk_under_test}__build_config" ] - apk_under_test_gen_dir = - get_label_info(invoker.apk_under_test, "target_gen_dir") - apk_under_test_name = get_label_info(invoker.apk_under_test, "name") - apk_under_test_config = - "$apk_under_test_gen_dir/$apk_under_test_name.build_config" - args += [ - "--tested-apk-config", - rebase_path(apk_under_test_config, root_build_dir), - ] - } - - if (defined(invoker.asset_sources)) { - _rebased_asset_sources = - rebase_path(invoker.asset_sources, root_build_dir) - args += [ "--asset-sources=$_rebased_asset_sources" ] - } - if (defined(invoker.asset_renaming_sources)) { - _rebased_asset_renaming_sources = - rebase_path(invoker.asset_renaming_sources, root_build_dir) - args += [ "--asset-renaming-sources=$_rebased_asset_renaming_sources" ] - - # These are zip paths, so no need to rebase. - args += [ - "--asset-renaming-destinations=${invoker.asset_renaming_destinations}", - ] - } - if (defined(invoker.disable_compression) && invoker.disable_compression) { - args += [ "--disable-asset-compression" ] - } - if (defined(invoker.treat_as_locale_paks) && invoker.treat_as_locale_paks) { - args += [ "--treat-as-locale-paks" ] - } - - if (defined(invoker.android_manifest)) { - inputs += [ invoker.android_manifest ] - args += [ - "--android-manifest", - rebase_path(invoker.android_manifest, root_build_dir), - ] - } - if (defined(invoker.resources_zip)) { - args += [ - "--resources-zip", - rebase_path(invoker.resources_zip, root_build_dir), - ] - } - if (defined(invoker.custom_package)) { - args += [ - "--package-name", - invoker.custom_package, - ] - } - if (defined(invoker.r_text)) { - args += [ - "--r-text", - rebase_path(invoker.r_text, root_build_dir), - ] - } - - if (defined(invoker.resource_dirs)) { - resource_dirs = rebase_path(invoker.resource_dirs, root_build_dir) - args += [ "--resource-dirs=$resource_dirs" ] - } - - if (defined(invoker.proto_resources_path)) { - _rebased_proto_resources = - rebase_path(invoker.proto_resources_path, root_build_dir) - args += [ "--apk-proto-resources=$_rebased_proto_resources" ] - } - - if (defined(invoker.shared_libraries_runtime_deps_file)) { - # Don't list shared_libraries_runtime_deps_file as an input in order to - # avoid having to depend on the runtime_deps target. See comment in - # rules.gni for why we do this. - args += [ - "--shared-libraries-runtime-deps", - rebase_path(invoker.shared_libraries_runtime_deps_file, root_build_dir), - ] - } - - if (defined(invoker.secondary_abi_shared_libraries_runtime_deps_file)) { - # Don't list secondary_abi_shared_libraries_runtime_deps_file as an - # input in order to avoid having to depend on the runtime_deps target. - # See comment in rules.gni for why we do this. - args += [ - "--secondary-abi-shared-libraries-runtime-deps", - rebase_path(invoker.secondary_abi_shared_libraries_runtime_deps_file, - root_build_dir), - ] - } - - if (defined(invoker.apk_path)) { - _rebased_apk_path = rebase_path(invoker.apk_path, root_build_dir) - _rebased_incremental_apk_path = - rebase_path(invoker.incremental_apk_path, root_build_dir) - _rebased_incremental_install_json_path = - rebase_path(invoker.incremental_install_json_path, root_build_dir) - _incremental_allowed = - defined(invoker.incremental_allowed) && invoker.incremental_allowed - args += [ "--apk-path=$_rebased_apk_path" ] - args += [ "--incremental-install-json-path=$_rebased_incremental_install_json_path" ] - - assert(_rebased_incremental_apk_path != "") # Mark as used. - if (_incremental_allowed) { - args += [ "--incremental-apk-path=$_rebased_incremental_apk_path" ] - } - } - - if (defined(invoker.non_native_packed_relocations) && - invoker.non_native_packed_relocations) { - args += [ "--non-native-packed-relocations" ] - } - if (defined(invoker.java_sources_file)) { - args += [ - "--java-sources-file", - rebase_path(invoker.java_sources_file, root_build_dir), - ] - } - if (defined(invoker.srcjar)) { - args += [ - "--srcjar", - rebase_path(invoker.srcjar, root_build_dir), - ] - } - if (defined(invoker.bundled_srcjars)) { - _rebased_bundled_srcjars = - rebase_path(invoker.bundled_srcjars, root_build_dir) - args += [ "--bundled-srcjars=$_rebased_bundled_srcjars" ] - } - if (defined(invoker.classpath_deps)) { - _classpath_deps_configs = [] - foreach(d, invoker.classpath_deps) { - _target_label = get_label_info(d, "label_no_toolchain") - deps += [ "${_target_label}__build_config" ] - _dep_gen_dir = get_label_info(d, "target_gen_dir") - _dep_name = get_label_info(d, "name") - _classpath_deps_configs += [ "$_dep_gen_dir/$_dep_name.build_config" ] - } - _rebased_classpath_deps_configs = - rebase_path(_classpath_deps_configs, root_build_dir) - args += [ "--classpath-deps-configs=$_rebased_classpath_deps_configs" ] - } - if (defined(invoker.input_jars_paths)) { - _rebased_input_jars_paths = - rebase_path(invoker.input_jars_paths, root_build_dir) - args += [ "--extra-classpath-jars=$_rebased_input_jars_paths" ] - } - if (defined(invoker.proguard_enabled) && invoker.proguard_enabled) { - args += [ "--proguard-enabled" ] - } - if (defined(invoker.proguard_configs)) { - _rebased_proguard_configs = - rebase_path(invoker.proguard_configs, root_build_dir) - args += [ "--proguard-configs=$_rebased_proguard_configs" ] - } - if (defined(invoker.gradle_treat_as_prebuilt) && - invoker.gradle_treat_as_prebuilt) { - args += [ "--gradle-treat-as-prebuilt" ] - } - if (defined(invoker.main_class)) { - args += [ - "--main-class", - invoker.main_class, - ] - } - if (defined(invoker.alternative_android_sdk_ijar)) { - args += [ - "--bootclasspath", - rebase_path(invoker.alternative_android_sdk_ijar, root_build_dir), - ] - } - if (current_toolchain != default_toolchain) { - # This has to be a built-time error rather than a GN assert because many - # packages have a mix of java and non-java targets. For example, the - # following would fail even though nothing depends on :bar(//baz): - # - # shared_library("foo") { - # } - # - # android_library("bar") { - # deps = [ ":foo(//baz)" ] - # assert(current_toolchain == default_toolchain) - # } - _msg = [ - "Tried to build an Android target in a non-default toolchain.", - "target: " + get_label_info(":$target_name", "label_with_toolchain"), - "default_toolchain: $default_toolchain", - ] - args += [ "--fail=$_msg" ] - } - } -} - -# Copy a list of file into a destination directory. Potentially renaming -# files are they are copied. This also ensures that symlinks are followed -# during the copy (i.e. the symlinks are never copied, only their content). -# -# Variables: -# dest: Destination directory path. -# sources: List of source files or directories to copy to dest. -# renaming_sources: Optional list of source file paths that will be renamed -# during the copy operation. If provided, renaming_destinations is required. -# renaming_destinations: Optional list of destination file paths, required -# when renaming_sources is provided. Both lists should have the same size -# and matching entries. -# args: Optional. Additionnal arguments to the copy_ex.py script. -# -# The following variables have the usual GN meaning: data, deps, inputs, -# outputs, testonly, visibility. -# -template("copy_ex") { - set_sources_assignment_filter([]) - action(target_name) { - forward_variables_from(invoker, - [ - "data", - "deps", - "inputs", - "outputs", - "sources", - "testonly", - "visibility", - ]) - if (!defined(sources)) { - sources = [] - } - script = "//build/android/gyp/copy_ex.py" - - args = [ - "--dest", - rebase_path(invoker.dest, root_build_dir), - ] - rebased_sources = rebase_path(sources, root_build_dir) - args += [ "--files=$rebased_sources" ] - - if (defined(invoker.args)) { - args += invoker.args - } - - if (defined(invoker.renaming_sources) && - defined(invoker.renaming_destinations)) { - sources += invoker.renaming_sources - rebased_renaming_sources = - rebase_path(invoker.renaming_sources, root_build_dir) - args += [ "--renaming-sources=$rebased_renaming_sources" ] - - renaming_destinations = invoker.renaming_destinations - args += [ "--renaming-destinations=$renaming_destinations" ] - } - } -} - -# Generates a script in the build bin directory which runs the test -# target using the test runner script in build/android/test_runner.py. -template("test_runner_script") { - testonly = true - _test_name = invoker.test_name - _test_type = invoker.test_type - _incremental_install = - defined(invoker.incremental_install) && invoker.incremental_install - - _runtime_deps = - !defined(invoker.ignore_all_data_deps) || !invoker.ignore_all_data_deps - - if (_runtime_deps) { - # This runtime_deps file is used at runtime and thus cannot go in - # target_gen_dir. - _target_dir_name = get_label_info(":$target_name", "dir") - _runtime_deps_file = - "$root_out_dir/gen.runtime/$_target_dir_name/$target_name.runtime_deps" - _runtime_deps_target = "${target_name}__write_deps" - group(_runtime_deps_target) { - forward_variables_from(invoker, - [ - "data", - "deps", - "public_deps", - ]) - data_deps = [] - if (defined(invoker.data_deps)) { - data_deps += invoker.data_deps - } - if (defined(invoker.additional_apks)) { - data_deps += invoker.additional_apks - } - write_runtime_deps = _runtime_deps_file - } - } - - action(target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - ]) - if (!defined(deps)) { - deps = [] - } - if (!defined(data_deps)) { - data_deps = [] - } - - script = "//build/android/gyp/create_test_runner_script.py" - depfile = "$target_gen_dir/$target_name.d" - - data_deps += [ - "//build/android:test_runner_py", - "//build/android:logdog_wrapper_py", - ] - - data = [] - - test_runner_args = [ - _test_type, - "--output-directory", - rebase_path(root_build_dir, root_build_dir), - ] - - if (_runtime_deps) { - deps += [ ":$_runtime_deps_target" ] - data += [ _runtime_deps_file ] - test_runner_args += [ - "--runtime-deps-path", - rebase_path(_runtime_deps_file, root_build_dir), - ] - } - - # apk_target is not used for native executable tests - # (e.g. breakpad_unittests). - if (defined(invoker.apk_target)) { - assert(!defined(invoker.executable_dist_dir)) - deps += [ "${invoker.apk_target}__build_config" ] - _apk_build_config = - get_label_info(invoker.apk_target, "target_gen_dir") + "/" + - get_label_info(invoker.apk_target, "name") + ".build_config" - _rebased_apk_build_config = rebase_path(_apk_build_config, root_build_dir) - assert(_rebased_apk_build_config != "") # Mark as used. - } else if (_test_type == "gtest") { - assert( - defined(invoker.executable_dist_dir), - "Must define either apk_target or executable_dist_dir for test_runner_script()") - test_runner_args += [ - "--executable-dist-dir", - rebase_path(invoker.executable_dist_dir, root_build_dir), - ] - } - - _device_test = true - if (_test_type == "gtest") { - assert(defined(invoker.test_suite)) - test_runner_args += [ - "--suite", - invoker.test_suite, - ] - } else if (_test_type == "instrumentation") { - _test_apk = "@FileArg($_rebased_apk_build_config:deps_info:apk_path)" - if (_incremental_install) { - _test_apk = "@FileArg($_rebased_apk_build_config:deps_info:incremental_apk_path)" - } - test_runner_args += [ - "--test-apk=$_test_apk", - "--test-jar", - rebase_path(invoker.test_jar, root_build_dir), - ] - if (defined(invoker.apk_under_test)) { - deps += [ "${invoker.apk_under_test}__build_config" ] - _apk_under_test_build_config = - get_label_info(invoker.apk_under_test, "target_gen_dir") + "/" + - get_label_info(invoker.apk_under_test, "name") + ".build_config" - _rebased_apk_under_test_build_config = - rebase_path(_apk_under_test_build_config, root_build_dir) - _apk_under_test = - "@FileArg($_rebased_apk_under_test_build_config:deps_info:apk_path)" - if (_incremental_install) { - _apk_under_test = "@FileArg($_rebased_apk_under_test_build_config:deps_info:incremental_apk_path)" - } - test_runner_args += [ "--apk-under-test=$_apk_under_test" ] - test_runner_args += [ - "--non-native-packed-relocations", - "@FileArg($_rebased_apk_under_test_build_config:deps_info:non_native_packed_relocations)", - ] - } - if (defined(invoker.proguard_enabled) && invoker.proguard_enabled) { - test_runner_args += [ "--enable-java-deobfuscation" ] - } - if (emma_coverage) { - # Set a default coverage output directory (can be overridden by user - # passing the same flag). - test_runner_args += [ - "--coverage-dir", - rebase_path("$root_out_dir/coverage", root_build_dir), - ] - } - } else if (_test_type == "junit") { - assert(defined(invoker.test_suite)) - _device_test = false - test_runner_args += [ - "--test-suite", - invoker.test_suite, - ] - if (defined(invoker.android_manifest_path)) { - test_runner_args += [ - "--android-manifest-path", - rebase_path(invoker.android_manifest_path, root_build_dir), - ] - } - - if (defined(invoker.package_name)) { - test_runner_args += [ - "--package-name", - invoker.package_name, - ] - - deps += [ ":${invoker.test_suite}__build_config" ] - _junit_binary_build_config = - "${target_gen_dir}/${invoker.test_suite}.build_config" - _rebased_build_config = - rebase_path("$_junit_binary_build_config", root_build_dir) - test_runner_args += [ - "--resource-zips", - "@FileArg($_rebased_build_config:resources:dependency_zips)", - ] - } - - test_runner_args += [ - "--robolectric-runtime-deps-dir", - rebase_path("$root_build_dir/lib.java/third_party/robolectric", - root_build_dir), - ] - } else if (_test_type == "linker") { - test_runner_args += [ - "--test-apk", - "@FileArg($_rebased_apk_build_config:deps_info:apk_path)", - ] - } else { - assert(false, "Invalid test type: $_test_type.") - } - - if (defined(invoker.additional_apks)) { - foreach(additional_apk, invoker.additional_apks) { - deps += [ "${additional_apk}__build_config" ] - _build_config = get_label_info(additional_apk, "target_gen_dir") + "/" + - get_label_info(additional_apk, "name") + ".build_config" - _rebased_build_config = rebase_path(_build_config, root_build_dir) - test_runner_args += [ - "--additional-apk", - "@FileArg($_rebased_build_config:deps_info:apk_path)", - "--additional-apk-incremental", - "@FileArg($_rebased_build_config:deps_info:incremental_apk_path)", - ] - } - } - if (defined(invoker.shard_timeout)) { - test_runner_args += [ "--shard-timeout=${invoker.shard_timeout}" ] - } - if (_incremental_install) { - test_runner_args += [ - "--test-apk-incremental-install-json", - "@FileArg($_rebased_apk_build_config:deps_info:incremental_install_json_path)", - ] - if (defined(invoker.apk_under_test)) { - test_runner_args += [ - "--apk-under-test-incremental-install-json", - "@FileArg($_rebased_apk_under_test_build_config:deps_info:incremental_install_json_path)", - ] - } - test_runner_args += [ "--fast-local-dev" ] - } - if (_device_test && is_asan) { - test_runner_args += [ "--tool=asan" ] - } - - if (defined(invoker.generated_script)) { - assert(_test_name != "" || true) # Mark _test_name as used. - generated_script = invoker.generated_script - } else { - generated_script = "$root_build_dir/bin/run_${_test_name}" - } - outputs = [ - generated_script, - ] - data += [ generated_script ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--script-output-path", - rebase_path(generated_script, root_build_dir), - ] - if (defined(android_test_runner_script)) { - args += [ - "--test-runner-path", - android_test_runner_script, - ] - } - - args += test_runner_args - } -} - -template("stack_script") { - forward_variables_from(invoker, [ "testonly" ]) - - _stack_target_name = invoker.stack_target_name - - action(target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - ]) - if (!defined(deps)) { - deps = [] - } - if (!defined(data_deps)) { - data_deps = [] - } - - data_deps += - [ "//third_party/android_platform/development/scripts:stack_py" ] - - script = "//build/android/gyp/create_stack_script.py" - depfile = "$target_gen_dir/$target_name.d" - - _stack_script = "//third_party/android_platform/development/scripts/stack" - - _generated_script = "$root_build_dir/bin/stack_${_stack_target_name}" - - outputs = [ - _generated_script, - ] - data = [ - _generated_script, - ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--output-directory", - rebase_path(root_build_dir, root_build_dir), - "--script-path", - rebase_path(_stack_script, root_build_dir), - "--script-output-path", - rebase_path(_generated_script, root_build_dir), - "--arch=$target_cpu", - ] - if (defined(invoker.packed_libraries)) { - args += [ - "--packed-libs", - invoker.packed_libraries, - ] - } - } -} - -if (enable_java_templates) { - import("//build/config/zip.gni") - import("//third_party/ijar/ijar.gni") - import("//third_party/android_platform/config.gni") - - android_sdk_jar = "$android_sdk/android.jar" - android_default_aapt_path = "$android_sdk_build_tools/aapt" - - template("android_lint") { - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "data_deps", - "public_deps", - "testonly", - ]) - if (!defined(deps)) { - deps = [] - } - - if (defined(invoker.lint_suppressions_file)) { - lint_suppressions_file = invoker.lint_suppressions_file - } else if (!defined(lint_suppressions_file)) { - lint_suppressions_file = "//build/android/lint/suppressions.xml" - } - - _lint_path = "$lint_android_sdk_root/tools/bin/lint" - _cache_dir = "$root_build_dir/android_lint_cache" - _result_path = "$target_gen_dir/$target_name/result.xml" - _config_path = "$target_gen_dir/$target_name/config.xml" - _suppressions_file = lint_suppressions_file - _platform_xml_path = - "${android_sdk_root}/platform-tools/api/api-versions.xml" - - script = "//build/android/gyp/lint.py" - depfile = "$target_gen_dir/$target_name.d" - inputs = [ - _platform_xml_path, - _suppressions_file, - ] - - outputs = [ - _result_path, - _config_path, - ] - - args = [ - "--lint-path", - rebase_path(_lint_path, root_build_dir), - "--cache-dir", - rebase_path(_cache_dir, root_build_dir), - "--platform-xml-path", - rebase_path(_platform_xml_path, root_build_dir), - "--android-sdk-version=${lint_android_sdk_version}", - "--depfile", - rebase_path(depfile, root_build_dir), - "--config-path", - rebase_path(_suppressions_file, root_build_dir), - "--product-dir=.", - "--processed-config-path", - rebase_path(_config_path, root_build_dir), - "--result-path", - rebase_path(_result_path, root_build_dir), - "--include-unexpected-failures", - ] - if (defined(invoker.android_manifest)) { - inputs += [ invoker.android_manifest ] - args += [ - "--manifest-path", - rebase_path(invoker.android_manifest, root_build_dir), - ] - } - - if (defined(invoker.disable)) { - args += [ "--disable=${invoker.disable}" ] - } - - if (defined(invoker.create_cache) && invoker.create_cache) { - args += [ - "--create-cache", - "--silent", - ] - } else { - inputs += invoker.java_files - inputs += [ - invoker.jar_path, - invoker.build_config, - ] - if (invoker.java_files != []) { - inputs += [ invoker.java_sources_file ] - _rebased_java_sources_file = - rebase_path(invoker.java_sources_file, root_build_dir) - args += [ "--java-sources-file=$_rebased_java_sources_file" ] - } - deps += [ "//build/android:prepare_android_lint_cache" ] - - _rebased_build_config = - rebase_path(invoker.build_config, root_build_dir) - args += [ - "--jar-path", - rebase_path(invoker.jar_path, root_build_dir), - "--classpath=@FileArg($_rebased_build_config:javac:interface_classpath)", - "--srcjars=@FileArg($_rebased_build_config:gradle:bundled_srcjars)", - "--can-fail-build", - ] - if (invoker.requires_android) { - args += [ - "--resource-sources=@FileArg($_rebased_build_config:deps_info:owned_resources_dirs)", - "--resource-sources=@FileArg($_rebased_build_config:deps_info:owned_resources_zips)", - ] - } - } - } - } - - template("proguard") { - action(target_name) { - set_sources_assignment_filter([]) - forward_variables_from(invoker, - [ - "data", - "data_deps", - "deps", - "public_deps", - "testonly", - ]) - script = "//build/android/gyp/proguard.py" - - # http://crbug.com/725224. Fix for bots running out of memory. - pool = "//build/toolchain:link_pool($default_toolchain)" - - _output_jar_path = invoker.output_jar_path - _proguard_jar_path = _default_proguard_jar_path - if (defined(invoker.proguard_jar_path)) { - _proguard_jar_path = invoker.proguard_jar_path - } - _android_sdk_jar = android_sdk_jar - if (defined(invoker.alternative_android_sdk_jar)) { - _android_sdk_jar = invoker.alternative_android_sdk_jar - } - - inputs = [ - _android_sdk_jar, - _proguard_jar_path, - ] - if (defined(invoker.inputs)) { - inputs += invoker.inputs - } - depfile = "${target_gen_dir}/${target_name}.d" - outputs = [ - _output_jar_path, - "$_output_jar_path.flags", - "$_output_jar_path.mapping", - "$_output_jar_path.seeds", - "$_output_jar_path.usage", - ] - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--proguard-path", - rebase_path(_proguard_jar_path, root_build_dir), - "--output-path", - rebase_path(_output_jar_path, root_build_dir), - "--classpath", - rebase_path(_android_sdk_jar, root_build_dir), - ] - if (proguard_verbose) { - args += [ "--verbose" ] - } - if (defined(invoker.args)) { - args += invoker.args - } - if (defined(invoker.proguard_jar_path)) { - # We assume that if we are using a different ProGuard, this new version - # can handle the 'dangerous' optimizaions. - args += [ "--enable-dangerous-optimizations" ] - } - } - } - - # Generates a script in the build bin directory to run a java binary. - # - # Variables - # main_class: The class containing the program entry point. - # build_config: Path to .build_config for the jar (contains classpath). - # jar_path: Optional. First classpath entry to be inserted before - # the classpath extracted from the build_config. - # script_name: Name of the script to generate. - # wrapper_script_args: List of extra arguments to pass to the executable. - # bootclasspath: Optional. list of zip/jar file paths to add to the boot - # class path when the script will invoke javac. - # - template("java_binary_script") { - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - - _main_class = invoker.main_class - _build_config = invoker.build_config - _script_name = invoker.script_name - - script = "//build/android/gyp/create_java_binary_script.py" - depfile = "$target_gen_dir/$_script_name.d" - _java_script = "$root_build_dir/bin/$_script_name" - inputs = [ - _build_config, - ] - outputs = [ - _java_script, - ] - _rebased_build_config = rebase_path(_build_config, root_build_dir) - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--output", - rebase_path(_java_script, root_build_dir), - "--main-class", - _main_class, - ] - if (defined(invoker.jar_path)) { - _jar_path_list = [ rebase_path(invoker.jar_path, root_build_dir) ] - args += [ "--classpath=$_jar_path_list" ] - } - args += [ "--classpath=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)" ] - - if (emma_coverage) { - args += [ - "--classpath", - rebase_path("//third_party/android_tools/sdk/tools/lib/emma.jar", - root_build_dir), - "--noverify", - ] - } - if (defined(invoker.wrapper_script_args)) { - args += [ "--" ] + invoker.wrapper_script_args - } - if (defined(invoker.bootclasspath)) { - args += [ - "--bootclasspath", - rebase_path(invoker.bootclasspath, root_build_dir), - ] - } - } - } - - template("dex") { - _enable_multidex = - defined(invoker.enable_multidex) && invoker.enable_multidex - - if (_enable_multidex) { - _main_dex_list_path = invoker.output + ".main_dex_list" - _main_dex_list_target_name = "${target_name}__main_dex_list" - action(_main_dex_list_target_name) { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - - script = "//build/android/gyp/main_dex_list.py" - depfile = "$target_gen_dir/$target_name.d" - - # http://crbug.com/725224. Fix for bots running out of memory. - pool = "//build/toolchain:link_pool($default_toolchain)" - - main_dex_rules = "//build/android/main_dex_classes.flags" - - if (defined(invoker.proguard_jar_path)) { - _proguard_jar_path = invoker.proguard_jar_path - } else { - _proguard_jar_path = _default_proguard_jar_path - } - - inputs = [ - main_dex_rules, - _proguard_jar_path, - ] - - outputs = [ - _main_dex_list_path, - ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--android-sdk-tools", - rebase_path(android_sdk_build_tools, root_build_dir), - "--main-dex-list-path", - rebase_path(_main_dex_list_path, root_build_dir), - "--main-dex-rules-path", - rebase_path(main_dex_rules, root_build_dir), - "--proguard-path", - rebase_path(_proguard_jar_path, root_build_dir), - ] - - if (defined(invoker.extra_main_dex_proguard_config)) { - inputs += [ invoker.extra_main_dex_proguard_config ] - args += [ - "--main-dex-rules-path", - rebase_path(invoker.extra_main_dex_proguard_config, root_build_dir), - ] - } - - if (defined(invoker.negative_main_dex_globs)) { - args += - [ "--negative-main-dex-globs=${invoker.negative_main_dex_globs}" ] - } - - if (defined(invoker.input_jars_file_arg)) { - inputs += [ invoker.build_config ] - args += [ "--inputs=${invoker.input_jars_file_arg}" ] - } - - if (defined(invoker.input_jars)) { - inputs += invoker.input_jars - args += rebase_path(invoker.input_jars, root_build_dir) - } - } - } - - assert(defined(invoker.output)) - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - script = "//build/android/gyp/dex.py" - depfile = "$target_gen_dir/$target_name.d" - inputs = [] - outputs = [ - invoker.output, - ] - - if (defined(invoker.use_pool) && invoker.use_pool) { - pool = "//build/toolchain:link_pool($default_toolchain)" - } - - _rebased_output = rebase_path(invoker.output, root_build_dir) - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--android-sdk-tools", - rebase_path(android_sdk_build_tools, root_build_dir), - "--dex-path", - _rebased_output, - ] - - if (enable_incremental_dx) { - args += [ "--incremental" ] - } - - # EMMA requires --no-locals. - if (emma_coverage) { - args += [ "--no-locals=1" ] - } - - if (_enable_multidex) { - args += [ - "--multi-dex", - "--main-dex-list-path", - rebase_path(_main_dex_list_path, root_build_dir), - ] - deps += [ ":${_main_dex_list_target_name}" ] - inputs += [ _main_dex_list_path ] - } - - if (defined(invoker.input_jars_file_arg)) { - inputs += [ invoker.build_config ] - args += [ "--inputs=${invoker.input_jars_file_arg}" ] - } - - if (defined(invoker.input_jars)) { - inputs += invoker.input_jars - args += rebase_path(invoker.input_jars, root_build_dir) - } - } - } - - template("emma_instr") { - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - ]) - - _coverage_file = "$target_out_dir/${target_name}.em" - _source_dirs_listing_file = "$target_out_dir/${target_name}_sources.txt" - _emma_jar = "${android_sdk_root}/tools/lib/emma.jar" - - script = "//build/android/gyp/emma_instr.py" - depfile = "${target_gen_dir}/${target_name}.d" - inputs = invoker.java_files + [ - _emma_jar, - invoker.input_jar_path, - ] - outputs = [ - _coverage_file, - _source_dirs_listing_file, - invoker.output_jar_path, - ] - args = [ - "instrument_jar", - "--input-path", - rebase_path(invoker.input_jar_path, root_build_dir), - "--output-path", - rebase_path(invoker.output_jar_path, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - "--coverage-file", - rebase_path(_coverage_file, root_build_dir), - "--sources-list-file", - rebase_path(_source_dirs_listing_file, root_build_dir), - "--src-root", - rebase_path("//", root_build_dir), - "--emma-jar", - rebase_path(_emma_jar, root_build_dir), - ] - _rebased_java_sources_file = - rebase_path(invoker.java_sources_file, root_build_dir) - args += [ "--java-sources-file=$_rebased_java_sources_file" ] - - if (emma_filter != "") { - args += [ - "--filter-string", - emma_filter, - ] - } - } - } - - # TODO(digit): Document this! - # - # Variables: - # testonly: - # build_config: - # input_jar_path: - # output_jar_path: - # enable_build_hooks: - # enable_build_hooks_android: - # supports_android: - # emma_instrument: - # jar_excluded_patterns: Optional list of .class file patterns to exclude - # from the final .jar file. - # jar_included_patterns: OPtional list of .class file patterns to include - # in the final .jar file. jar_excluded_patterns take precedence over this. - # strip_resource_classes: - # alternative_android_sdk_ijar: - # alternative_android_sdk_ijar_dep: - # alternative_android_sdk: - # deps: - # java_files: - # java_sources_file: - # inputs: - # data_deps: - # visibility: - # - template("process_java_prebuilt") { - set_sources_assignment_filter([]) - forward_variables_from(invoker, [ "testonly" ]) - - assert(invoker.build_config != "") - _build_config = invoker.build_config - _rebased_build_config = rebase_path(_build_config, root_build_dir) - assert(_rebased_build_config != "" || true) # Mark used. - - _input_jar_path = invoker.input_jar_path - _output_jar_path = invoker.output_jar_path - - _enable_assert = - defined(invoker.enable_build_hooks) && invoker.enable_build_hooks && - (is_java_debug || dcheck_always_on || report_java_assert) - - _enable_custom_resources = defined(invoker.enable_build_hooks_android) && - invoker.enable_build_hooks_android - - _desugar = defined(invoker.supports_android) && invoker.supports_android - _emma_instrument = invoker.emma_instrument - - _jar_excluded_patterns = [] - if (defined(invoker.jar_excluded_patterns)) { - _jar_excluded_patterns = invoker.jar_excluded_patterns - } - _jar_included_patterns = [] - if (defined(invoker.jar_included_patterns)) { - _jar_included_patterns = invoker.jar_included_patterns - } - _strip_resource_classes = defined(invoker.strip_resource_classes) && - invoker.strip_resource_classes - _filter_jar = _jar_excluded_patterns != [] || - _jar_included_patterns != [] || _strip_resource_classes - - _deps = [] - _previous_output_jar = _input_jar_path - - assert(!defined(invoker.alternative_android_sdk_ijar) || - invoker.alternative_android_sdk_ijar != "") - assert(!defined(invoker.alternative_android_sdk_ijar_dep) || - invoker.alternative_android_sdk_ijar_dep != "") - assert(!defined(invoker.alternative_android_sdk_jar) || - invoker.alternative_android_sdk_jar != "") - - if (_enable_assert || _enable_custom_resources) { - _java_bytecode_rewriter_target = "${target_name}__bytecode_rewrite" - _java_bytecode_rewriter_input_jar = _previous_output_jar - _java_bytecode_rewriter_output_jar = - "$target_out_dir/$target_name-bytecode-rewritten.jar" - - action(_java_bytecode_rewriter_target) { - script = "//build/android/gyp/bytecode_processor.py" - depfile = "$target_gen_dir/$target_name.d" - _bytecode_rewriter_script = - "$root_build_dir/bin/helper/java_bytecode_rewriter" - deps = [ - "//build/android/bytecode:java_bytecode_rewriter($default_toolchain)", - ] - deps += _deps - if (defined(invoker.deps)) { - deps += invoker.deps - } - _android_sdk_jar = android_sdk_jar - if (defined(invoker.alternative_android_sdk_jar)) { - _android_sdk_jar = invoker.alternative_android_sdk_jar - } - inputs = [ - _android_sdk_jar, - _java_bytecode_rewriter_input_jar, - _build_config, - ] - outputs = [ - _java_bytecode_rewriter_output_jar, - ] - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--script", - rebase_path(_bytecode_rewriter_script, root_build_dir), - "--input-jar", - rebase_path(_java_bytecode_rewriter_input_jar, root_build_dir), - "--output-jar", - rebase_path(_java_bytecode_rewriter_output_jar, root_build_dir), - ] - if (_enable_assert) { - args += [ "--enable-assert" ] - } - if (_enable_custom_resources) { - args += [ "--enable-custom-resources" ] - } - args += [ - "--extra-classpath-jar", - rebase_path(_android_sdk_jar, root_build_dir), - "--extra-classpath-jar", - "@FileArg($_rebased_build_config:deps_info:javac_full_classpath)", - ] - } - - _deps = [] - _deps = [ ":$_java_bytecode_rewriter_target" ] - _previous_output_jar = _java_bytecode_rewriter_output_jar - } - - if (_desugar) { - _desugar_target = "${target_name}__desugar" - _desugar_input_jar = _previous_output_jar - _desugar_output_jar = "$target_out_dir/$target_name-desugar.jar" - - action(_desugar_target) { - script = "//build/android/gyp/desugar.py" - depfile = "$target_gen_dir/$target_name.d" - deps = _deps - if (defined(invoker.deps)) { - deps += invoker.deps - } - inputs = [ - _build_config, - _desugar_input_jar, - ] - outputs = [ - _desugar_output_jar, - ] - if (defined(invoker.alternative_android_sdk_ijar)) { - deps += [ invoker.alternative_android_sdk_ijar_dep ] - _android_sdk_ijar = invoker.alternative_android_sdk_ijar - } else { - deps += [ "//build/android:android_ijar" ] - _android_sdk_ijar = "$root_out_dir/lib.java/android.interface.jar" - } - inputs += [ _android_sdk_ijar ] - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--input-jar", - rebase_path(_desugar_input_jar, root_build_dir), - "--output-jar", - rebase_path(_desugar_output_jar, root_build_dir), - "--classpath=@FileArg($_rebased_build_config:javac:interface_classpath)", - "--bootclasspath-entry", - rebase_path(_android_sdk_ijar, root_build_dir), - ] - } - - _deps = [] - _deps = [ ":$_desugar_target" ] - _previous_output_jar = _desugar_output_jar - } - - if (_filter_jar) { - _filter_target = "${target_name}__filter" - _filter_input_jar = _previous_output_jar - _filter_output_jar = "$target_out_dir/$target_name-filtered.jar" - - action(_filter_target) { - script = "//build/android/gyp/jar.py" - deps = _deps - if (defined(invoker.deps)) { - deps += invoker.deps - } - inputs = [ - _build_config, - _filter_input_jar, - ] - outputs = [ - _filter_output_jar, - ] - args = [ - "--input-jar", - rebase_path(_filter_input_jar, root_build_dir), - "--jar-path", - rebase_path(_filter_output_jar, root_build_dir), - "--excluded-classes=$_jar_excluded_patterns", - "--included-classes=$_jar_included_patterns", - ] - if (_strip_resource_classes) { - args += [ "--strip-resource-classes-for=@FileArg($_rebased_build_config:javac:resource_packages)" ] - } - } - - _deps = [] - _deps = [ ":$_filter_target" ] - _previous_output_jar = _filter_output_jar - } - - if (_emma_instrument) { - # Emma must run after desugar (or else desugar sometimes fails). - _emma_target = "${target_name}__emma" - _emma_input_jar = _previous_output_jar - _emma_output_jar = "$target_out_dir/$target_name-instrumented.jar" - - emma_instr(_emma_target) { - deps = _deps - if (defined(invoker.deps)) { - deps += invoker.deps - } - - forward_variables_from(invoker, - [ - "java_files", - "java_sources_file", - ]) - - input_jar_path = _emma_input_jar - output_jar_path = _emma_output_jar - } - - _deps = [] - _deps = [ ":$_emma_target" ] - _previous_output_jar = _emma_output_jar - } - - _output_jar_target = "${target_name}__copy" - - # This is copy_ex rather than copy to ensure that JARs (rather than - # possibly broken symlinks to them) get copied into the output - # directory. - copy_ex(_output_jar_target) { - forward_variables_from(invoker, [ "inputs" ]) - deps = _deps - if (defined(invoker.deps)) { - deps += invoker.deps - } - dest = _output_jar_path - sources = [ - _previous_output_jar, - ] - outputs = [ - _output_jar_path, - ] - } - - group(target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "visibility", - ]) - public_deps = [ - ":$_output_jar_target", - ] - } - } - - template("merge_manifests") { - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - script = "//build/android/gyp/merge_manifest.py" - depfile = "$target_gen_dir/$target_name.d" - - inputs = [ - invoker.build_config, - invoker.input_manifest, - ] - - outputs = [ - invoker.output_manifest, - ] - _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--build-vars", - rebase_path(android_build_vars, root_build_dir), - "--root-manifest", - rebase_path(invoker.input_manifest, root_build_dir), - "--output", - rebase_path(invoker.output_manifest, root_build_dir), - "--extras", - "@FileArg($_rebased_build_config:extra_android_manifests)", - ] - } - } - - # This template is used to parse a set of resource directories and - # create the R.txt, .srcjar and .resources.zip for it. - # - # Input variables: - # deps: Specifies the input dependencies for this target. - # - # build_config: Path to the .build_config file corresponding to the target. - # - # resource_dirs: - # List of directories containing Android resources, layout should be - # similar to what aapt -S <dir> expects. - # - # generated_resource_dirs: (optional) - # List of directories containing generated resources. - # - # generated_resource_files: (optional) - # If generated_resources_dirs is not empty, must list all the files - # within these directories (the directory must appear at the start of - # the file path). - # - # custom_package: (optional) - # Package name for the generated R.java source file. Optional if - # android_manifest is not provided. - # - # android_manifest: (optional) - # If custom_package is not provided, path to an AndroidManifest.xml file - # that is only used to extract a package name out of it. - # - # r_text_in_path: (optional) - # Path to an input R.txt file to use to generate the R.java file. - # The default is to use 'aapt' to generate the file from the content - # of the resource directories. - # - # alternative_android_sdk_jar: Alternative system android.jar to use. - # - # shared_resources: (optional) - # If true, generate an R.java file that uses non-final resource ID - # variables and an onResourcesLoaded() method. - # - # v14_skip: (optional) - # If true, skip generation of v14 compatible resources. - # (see generate_v14_compatible_resources.py for details). - # - # Output variables: - # zip_path: (optional) - # Path to a .resources.zip that will simply contain all the - # input resources, collected in a single archive. - # - # r_text_out_path: (optional): Path for the generated R.txt file. - # - # srcjar_path: (optional) Path to a generated .srcjar containing the - # generated R.java source file. - # - template("prepare_resources") { - if (defined(invoker.srcjar_path)) { - _srcjar_path = invoker.srcjar_path - } - action(target_name) { - set_sources_assignment_filter([]) - forward_variables_from(invoker, - [ - "deps", - "testonly", - "visibility", - ]) - script = "//build/android/gyp/prepare_resources.py" - - depfile = "$target_gen_dir/${invoker.target_name}.d" - outputs = [] - _all_resource_dirs = [] - sources = [] - - if (defined(invoker.resource_dirs)) { - _all_resource_dirs += invoker.resource_dirs - - # Speed up "gn gen" by short-circuiting the empty directory. - if (invoker.resource_dirs != [ "//build/android/empty" ] && - invoker.resource_dirs != []) { - _sources_build_rel = - exec_script("//build/android/gyp/find.py", - rebase_path(invoker.resource_dirs, root_build_dir), - "list lines") - sources += rebase_path(_sources_build_rel, ".", root_build_dir) - } - } - - if (defined(invoker.generated_resource_dirs)) { - assert(defined(invoker.generated_resource_files)) - _all_resource_dirs += invoker.generated_resource_dirs - sources += invoker.generated_resource_files - } - - _android_aapt_path = android_default_aapt_path - - _android_sdk_jar = android_sdk_jar - if (defined(invoker.alternative_android_sdk_jar)) { - _android_sdk_jar = invoker.alternative_android_sdk_jar - } - - inputs = [ - invoker.build_config, - _android_aapt_path, - _android_sdk_jar, - ] - - _rebased_all_resource_dirs = - rebase_path(_all_resource_dirs, root_build_dir) - _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--android-sdk-jar", - rebase_path(_android_sdk_jar, root_build_dir), - "--aapt-path", - rebase_path(_android_aapt_path, root_build_dir), - "--dependencies-res-zips=@FileArg($_rebased_build_config:resources:dependency_zips)", - "--extra-res-packages=@FileArg($_rebased_build_config:resources:extra_package_names)", - "--extra-r-text-files=@FileArg($_rebased_build_config:resources:extra_r_text_files)", - ] - - if (defined(invoker.android_manifest)) { - inputs += [ invoker.android_manifest ] - args += [ - "--android-manifest", - rebase_path(invoker.android_manifest, root_build_dir), - ] - } - - if (_rebased_all_resource_dirs != []) { - args += [ "--resource-dirs=$_rebased_all_resource_dirs" ] - } - - if (defined(invoker.zip_path)) { - outputs += [ - invoker.zip_path, - invoker.zip_path + ".info", - ] - args += [ - "--resource-zip-out", - rebase_path(invoker.zip_path, root_build_dir), - ] - } - - if (defined(invoker.r_text_out_path)) { - outputs += [ invoker.r_text_out_path ] - args += [ - "--r-text-out", - rebase_path(invoker.r_text_out_path, root_build_dir), - ] - } - - if (defined(_srcjar_path)) { - outputs += [ _srcjar_path ] - args += [ - "--srcjar-out", - rebase_path(_srcjar_path, root_build_dir), - ] - } - - if (defined(invoker.r_text_in_path)) { - _r_text_in_path = invoker.r_text_in_path - inputs += [ _r_text_in_path ] - args += [ - "--r-text-in", - rebase_path(_r_text_in_path, root_build_dir), - ] - } - - if (defined(invoker.custom_package)) { - args += [ - "--custom-package", - invoker.custom_package, - ] - } - - if (defined(invoker.shared_resources) && invoker.shared_resources) { - args += [ "--shared-resources" ] - } - - if (defined(invoker.v14_skip) && invoker.v14_skip) { - args += [ "--v14-skip" ] - } - } - } - - # A template that is used to compile all resources needed by a binary - # (e.g. an android_apk or a junit_binary) into an intermediate .ar_ - # archive. It can also generate an associated .srcjar that contains the - # final R.java sources for all resource packages the binary depends on. - # - # Input variables: - # deps: Specifies the input dependencies for this target. - # - # build_config: Path to the .build_config file corresponding to the target. - # - # android_manifest: Path to root manifest for the binary. - # - # version_code: (optional) - # - # version_name: (optional) - # - # alternative_android_sdk_jar: Alternative system android.jar to use. - # - # shared_resources: (optional) - # If true, make all variables in each generated R.java file non-final, - # and provide an onResourcesLoaded() method that can be used to reset - # their package index at load time. Useful when the APK corresponds to - # a library that is loaded at runtime, like system_webview_apk or - # monochrome_apk. - # - # app_as_shared_lib: (optional) - # If true, same effect as shared_resources, but also ensures that the - # resources can be used by the APK when it is loaded as a regular - # application as well. Useful for the monochrome_public_apk target - # which is both an application and a shared runtime library that - # implements the system webview feature. - # - # shared_resources_whitelist: (optional) - # Path to an R.txt file. If provided, acts similar to shared_resources - # except that it restricts the list of non-final resource variables - # to the list from the input R.txt file. Overrides shared_resources - # when both are specified. - # - # support_zh_hk: (optional) - # If true, support zh-HK in Chrome on Android by using the resources - # from zh-TW. See https://crbug.com/780847. - # - # aapt_locale_whitelist: (optional) - # Restrict compiled locale-dependent resources to a specific whitelist. - # NOTE: This is a list of Chromium locale names, not Android ones. - # - # exclude_xxxhdpi: (optional) - # - # xxxhdpi_whitelist: (optional) - # - # no_xml_namespaces: (optional) - # - # png_to_webp: (optional) - # If true, convert all PNG resources (except 9-patch files) to WebP. - # - # post_process_script: (optional) - # - # proto_format: (optional). If true, compiles resources into protocol - # buffer format. - # - # Output variables: - # output: Path to a zip file containing the compiled resources. - # - # r_text_out_path: (optional): - # Path for the corresponding generated R.txt file. - # - # srcjar_path: (optional) - # Path to a generated .srcjar containing the generated R.java sources - # for all dependent resource libraries. - # - # proguard_file: (optional) - # Path to proguard configuration file for this apk target. - # - # proguard_file_main_dex: (optional) - # - # - template("compile_resources") { - _compile_resources_target_name = target_name - _compiled_resources_path = invoker.output - - if (defined(invoker.srcjar_path)) { - _srcjar_path = invoker.srcjar_path - } - if (defined(invoker.post_process_script)) { - _compile_resources_target_name = "${target_name}__intermediate" - _compiled_resources_path = - get_path_info(_compiled_resources_path, "dir") + "/" + - get_path_info(_compiled_resources_path, "name") + ".intermediate.ap_" - _srcjar_path = "${_srcjar_path}.intermediate.srcjar" - } - - action(_compile_resources_target_name) { - set_sources_assignment_filter([]) - forward_variables_from(invoker, - [ - "deps", - "testonly", - "visibility", - ]) - script = "//build/android/gyp/compile_resources.py" - - depfile = "$target_gen_dir/${invoker.target_name}_1.d" - outputs = [] - - _android_aapt_path = android_default_aapt_path - if (defined(invoker.proto_format) && invoker.proto_format) { - _android_aapt_path = "$android_sdk_app_bundle_build_tools/aapt" - } - - _android_sdk_jar = android_sdk_jar - if (defined(invoker.alternative_android_sdk_jar)) { - _android_sdk_jar = invoker.alternative_android_sdk_jar - } - - inputs = [ - invoker.build_config, - _android_aapt_path, - _android_sdk_jar, - ] - - _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--android-sdk-jar", - rebase_path(_android_sdk_jar, root_build_dir), - "--aapt-path", - rebase_path(_android_aapt_path, root_build_dir), - "--dependencies-res-zips=@FileArg($_rebased_build_config:resources:dependency_zips)", - "--extra-res-packages=@FileArg($_rebased_build_config:resources:extra_package_names)", - "--extra-r-text-files=@FileArg($_rebased_build_config:resources:extra_r_text_files)", - ] - - inputs += [ invoker.android_manifest ] - args += [ - "--android-manifest", - rebase_path(invoker.android_manifest, root_build_dir), - ] - - if (defined(invoker.no_xml_namespaces) && invoker.no_xml_namespaces) { - args += [ "--no-xml-namespaces" ] - } - - if (defined(invoker.version_code)) { - args += [ - "--version-code", - invoker.version_code, - ] - } - if (defined(invoker.version_name)) { - args += [ - "--version-name", - invoker.version_name, - ] - } - if (defined(_compiled_resources_path)) { - _info_path = invoker.output + ".info" - outputs += [ - _compiled_resources_path, - _info_path, - ] - args += [ - "--apk-path", - rebase_path(_compiled_resources_path, root_build_dir), - "--apk-info-path", - rebase_path(_info_path, root_build_dir), - ] - } - - # Useful to have android:debuggable in the manifest even for Release - # builds. Just omit it for officai - if (debuggable_apks) { - args += [ "--debuggable" ] - } - - if (defined(invoker.r_text_out_path)) { - outputs += [ invoker.r_text_out_path ] - args += [ - "--r-text-out", - rebase_path(invoker.r_text_out_path, root_build_dir), - ] - } - - if (defined(_srcjar_path)) { - outputs += [ _srcjar_path ] - args += [ - "--srcjar-out", - rebase_path(_srcjar_path, root_build_dir), - ] - } - - if (defined(invoker.custom_package)) { - args += [ - "--custom-package", - invoker.custom_package, - ] - } - - _proto_format = defined(invoker.proto_format) && invoker.proto_format - if (_proto_format) { - args += [ "--proto-format" ] - } - - # Define the flags related to shared resources. - # - # Note the small sanity check to ensure that the package ID of the - # generated resources table is correct. It should be 0x02 for runtime - # shared libraries, and 0x7f otherwise. - - _expected_resources_pkg_id = "0x7f" - if (defined(invoker.shared_resources) && invoker.shared_resources) { - args += [ "--shared-resources" ] - _expected_resources_pkg_id = "0x02" - } else if (defined(invoker.app_as_shared_lib) && - invoker.app_as_shared_lib) { - args += [ "--app-as-shared-lib" ] - } - - # NOTE: It is not possible to check the resources package ID of - # proto-compiled APKs at the moment. - if (!_proto_format) { - args += [ "--check-resources-pkg-id=$_expected_resources_pkg_id" ] - } else { - assert(_expected_resources_pkg_id != "") # Mark as used. - } - - if (defined(invoker.shared_resources_whitelist)) { - inputs += [ invoker.shared_resources_whitelist ] - args += [ - "--shared-resources-whitelist", - rebase_path(invoker.shared_resources_whitelist, root_build_dir), - ] - } - - if (defined(invoker.proguard_file)) { - outputs += [ invoker.proguard_file ] - args += [ - "--proguard-file", - rebase_path(invoker.proguard_file, root_build_dir), - ] - } - - if (defined(invoker.proguard_file_main_dex)) { - outputs += [ invoker.proguard_file_main_dex ] - args += [ - "--proguard-file-main-dex", - rebase_path(invoker.proguard_file_main_dex, root_build_dir), - ] - } - - if (defined(invoker.aapt_locale_whitelist)) { - args += [ "--locale-whitelist=${invoker.aapt_locale_whitelist}" ] - } - if (defined(invoker.png_to_webp) && invoker.png_to_webp) { - _webp_target = "//third_party/libwebp:cwebp($host_toolchain)" - _webp_binary = get_label_info(_webp_target, "root_out_dir") + "/cwebp" - deps += [ _webp_target ] - inputs += [ _webp_binary ] - args += [ - "--png-to-webp", - "--webp-binary", - rebase_path(_webp_binary, root_build_dir), - ] - } - if (defined(invoker.exclude_xxxhdpi) && invoker.exclude_xxxhdpi) { - args += [ "--exclude-xxxhdpi" ] - if (defined(invoker.xxxhdpi_whitelist)) { - args += [ "--xxxhdpi-whitelist=${invoker.xxxhdpi_whitelist}" ] - } - } - - if (defined(invoker.support_zh_hk) && invoker.support_zh_hk) { - args += [ "--support-zh-hk" ] - } - - if (defined(invoker.args)) { - args += invoker.args - } - } - - if (defined(invoker.post_process_script)) { - action(target_name) { - depfile = "${target_gen_dir}/${invoker.target_name}_2.d" - script = invoker.post_process_script - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--apk-path", - rebase_path(_compiled_resources_path, root_build_dir), - "--output", - rebase_path(invoker.output, root_build_dir), - "--srcjar-in", - rebase_path(_srcjar_path, root_build_dir), - "--srcjar-out", - rebase_path(invoker.srcjar_path, root_build_dir), - ] - if (defined(invoker.shared_resources_whitelist)) { - args += [ - "--r-text-whitelist", - rebase_path(invoker.shared_resources_whitelist, root_build_dir), - "--r-text", - rebase_path(invoker.r_text_out_path, root_build_dir), - ] - } - inputs = [ - _srcjar_path, - _compiled_resources_path, - ] - outputs = [ - invoker.output, - invoker.srcjar_path, - ] - public_deps = [ - ":${_compile_resources_target_name}", - ] - } - } - } - - # Compile resources for an APK. - # - # This is very similar to compile_resources, except that it can *also* - # compile the same set of inputs using the new protocol-buffer based - # format, if proto_outut and proto_resources_target are set. - # - # Takes the same variables as compile_resources, with the following - # extras: - # - # proto_output: optional. If provided, the path to an output file that - # will contain the resources compiled in the new protocol buffer format. - # proto_resources_target: required when proto_output is set. Name of the - # target associated with compiling the protocol-buffer based resources. - # - template("compile_apk_resources") { - # First call to compile_resources() is used to generate the compiled - # resources using the standard binary xml + resources.arsc format. - compile_resources(target_name) { - forward_variables_from(invoker, - "*", - [ - "proto_format", - "proto_output", - "proto_resources_target", - ]) - } - - # The second call is optional, and is only used to compile the resources - # using the new protocol buffer based format. This omits the generation of - # R.txt, /srcjar and proguard files (performed during the first call), or - # resources post-processing. - if (defined(invoker.proto_output)) { - compile_resources(invoker.proto_resources_target) { - forward_variables_from(invoker, - "*", - [ - "output", - "post_process_script", - "proguard_file", - "proguard_file_main_dex", - "proto_output", - "proto_resources_target", - "r_text_out_path", - "srcjar_path", - ]) - output = invoker.proto_output - proto_format = true - } - } - } - - # Create an apk.jar.info file by merging several .jar.info files into one. - # - # Variables: - # apk_build_config: Path to APK's build config file. Used to extract the - # list of input .jar files from its dependencies. - # output: Output file path. - # - template("create_apk_jar_info") { - _output = invoker.output - _build_config = invoker.apk_build_config - _rebased_build_config = rebase_path(_build_config, root_build_dir) - action(target_name) { - forward_variables_from(invoker, - [ - "testonly", - "deps", - ]) - script = "//build/android/gyp/merge_jar_info_files.py" - inputs = [ - _build_config, - ] - outputs = [ - _output, - ] - depfile = "$target_gen_dir/$target_name.d" - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--output", - rebase_path(_output, root_build_dir), - "--apk-jar-file=@FileArg($_rebased_build_config:deps_info:jar_path)", - "--dep-jar-files=@FileArg(" + - "$_rebased_build_config:deps_info:javac_full_classpath)", - ] - } - } - - # Creates a signed and aligned .apk. - # - # Variables - # assets_build_config: Path to android_apk .build_config containing merged - # asset information. - # deps: Specifies the dependencies of this target. - # dex_path: Path to classes.dex file to include (optional). - # packaged_resources_path: Path to .ap_ to use. - # output_apk_path: Output path for the generated .apk. - # native_lib_placeholders: List of placeholder filenames to add to the apk - # (optional). - # secondary_native_lib_placeholders: List of placeholder filenames to add to - # the apk for the secondary ABI (optional). - # native_libs: List of native libraries. - # native_libs_filearg: @FileArg() of additionally native libraries. - # write_asset_list: Adds an extra file to the assets, which contains a list of - # all other asset files. - # keystore_path: Path to keystore to use for signing. - # keystore_name: Key alias to use. - # keystore_password: Keystore password. - template("package_apk") { - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - ]) - _native_lib_placeholders = [] - if (defined(invoker.native_lib_placeholders)) { - _native_lib_placeholders = invoker.native_lib_placeholders - } - _secondary_native_lib_placeholders = [] - if (defined(invoker.secondary_native_lib_placeholders)) { - _secondary_native_lib_placeholders = - invoker.secondary_native_lib_placeholders - } - - script = "//build/android/gyp/apkbuilder.py" - depfile = "$target_gen_dir/$target_name.d" - _apksigner = "$android_sdk_build_tools/apksigner" - _zipalign = "$android_sdk_build_tools/zipalign" - data_deps = [ - "//tools/android/md5sum", - ] # Used when deploying APKs - - inputs = invoker.native_libs + [ - invoker.keystore_path, - invoker.packaged_resources_path, - _apksigner, - _zipalign, - ] - if (defined(invoker.dex_path)) { - inputs += [ invoker.dex_path ] - } - - outputs = [ - invoker.output_apk_path, - ] - data = [ - invoker.output_apk_path, - ] - - _rebased_compiled_resources_path = - rebase_path(invoker.packaged_resources_path, root_build_dir) - _rebased_packaged_apk_path = - rebase_path(invoker.output_apk_path, root_build_dir) - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--resource-apk=$_rebased_compiled_resources_path", - "--output-apk=$_rebased_packaged_apk_path", - "--apksigner-path", - rebase_path(_apksigner, root_build_dir), - "--zipalign-path", - rebase_path(_zipalign, root_build_dir), - "--key-path", - rebase_path(invoker.keystore_path, root_build_dir), - "--key-name", - invoker.keystore_name, - "--key-passwd", - invoker.keystore_password, - ] - if (defined(invoker.assets_build_config)) { - inputs += [ invoker.assets_build_config ] - _rebased_build_config = - rebase_path(invoker.assets_build_config, root_build_dir) - args += [ - "--assets=@FileArg($_rebased_build_config:assets)", - "--uncompressed-assets=@FileArg($_rebased_build_config:uncompressed_assets)", - ] - - # TODO(mlopatkin) We are relying on the fact that assets_build_config is - # an APK build_config. - args += [ "--java-resources=@FileArg($_rebased_build_config:java_resources_jars)" ] - - if (defined(invoker.apk_name)) { - # The supersize tool will search in this directory for each apk. - _apk_pak_info_path = "size-info/${invoker.apk_name}.apk.pak.info" - _apk_res_info_path = "size-info/${invoker.apk_name}.apk.res.info" - args += [ - "--apk-pak-info-path", - _apk_pak_info_path, - "--apk-res-info-path", - _apk_res_info_path, - ] - outputs += [ - "$root_build_dir/$_apk_pak_info_path", - "$root_build_dir/$_apk_res_info_path", - ] - } - } - if (defined(invoker.write_asset_list) && invoker.write_asset_list) { - args += [ "--write-asset-list" ] - } - if (defined(invoker.dex_path)) { - _rebased_dex_path = rebase_path(invoker.dex_path, root_build_dir) - args += [ "--dex-file=$_rebased_dex_path" ] - } - if (invoker.native_libs != [] || defined(invoker.native_libs_filearg) || - _native_lib_placeholders != []) { - args += [ "--android-abi=$android_app_abi" ] - } - if (defined(invoker.secondary_abi_native_libs_filearg) || - (defined(invoker.secondary_native_libs) && - invoker.secondary_native_libs != []) || - _secondary_native_lib_placeholders != []) { - assert(defined(android_app_secondary_abi)) - args += [ "--secondary-android-abi=$android_app_secondary_abi" ] - } - if (invoker.native_libs != []) { - _rebased_native_libs = rebase_path(invoker.native_libs, root_build_dir) - args += [ "--native-libs=$_rebased_native_libs" ] - } - if (defined(invoker.native_libs_filearg)) { - args += [ "--native-libs=${invoker.native_libs_filearg}" ] - } - if (_native_lib_placeholders != []) { - args += [ "--native-lib-placeholders=$_native_lib_placeholders" ] - } - if (_secondary_native_lib_placeholders != []) { - args += [ "--secondary-native-lib-placeholders=$_secondary_native_lib_placeholders" ] - } - - # TODO (michaelbai): Remove the secondary_native_libs variable. - if (defined(invoker.secondary_abi_native_libs_filearg)) { - args += [ "--secondary-native-libs=${invoker.secondary_abi_native_libs_filearg}" ] - } else if (defined(invoker.secondary_native_libs) && - invoker.secondary_native_libs != []) { - inputs += invoker.secondary_native_libs - _secondary_native_libs = rebase_path(invoker.secondary_native_libs) - args += [ "--secondary-native-libs=$_secondary_native_libs" ] - } - - if (defined(invoker.uncompress_shared_libraries) && - invoker.uncompress_shared_libraries) { - args += [ "--uncompress-shared-libraries" ] - } - } - } - - # Packages resources, assets, dex, and native libraries into an apk. Signs and - # zipaligns the apk. - template("create_apk") { - set_sources_assignment_filter([]) - forward_variables_from(invoker, [ "testonly" ]) - - _android_manifest = invoker.android_manifest - _base_path = invoker.base_path - _final_apk_path = invoker.apk_path - _incremental_final_apk_path_helper = - process_file_template( - [ _final_apk_path ], - "{{source_dir}}/{{source_name_part}}_incremental.apk") - _incremental_final_apk_path = _incremental_final_apk_path_helper[0] - - if (defined(invoker.dex_path)) { - _dex_path = invoker.dex_path - } - _load_library_from_apk = invoker.load_library_from_apk - assert(_load_library_from_apk || true) - - _deps = [] - if (defined(invoker.deps)) { - _deps = invoker.deps - } - _incremental_deps = [] - if (defined(invoker.incremental_deps)) { - _incremental_deps = invoker.incremental_deps - } - _native_libs = [] - if (defined(invoker.native_libs)) { - _native_libs = invoker.native_libs - } - _native_libs_even_when_incremental = [] - if (defined(invoker.native_libs_even_when_incremental)) { - _native_libs_even_when_incremental = - invoker.native_libs_even_when_incremental - } - - _incremental_compiled_resources_path = "${_base_path}_incremental.ap_" - _shared_resources = - defined(invoker.shared_resources) && invoker.shared_resources - assert(_shared_resources || true) # Mark as used. - - _keystore_path = invoker.keystore_path - _keystore_name = invoker.keystore_name - _keystore_password = invoker.keystore_password - - _incremental_compile_resources_target_name = - "${target_name}_incremental__compile_resources" - _incremental_android_manifest = - get_label_info(_incremental_compile_resources_target_name, - "target_gen_dir") + "/AndroidManifest.xml" - action(_incremental_compile_resources_target_name) { - deps = _incremental_deps - script = - "//build/android/incremental_install/generate_android_manifest.py" - inputs = [ - # Save on a depfile by listing only .py dep here. - "//build/android/gyp/util/build_utils.py", - _android_manifest, - invoker.packaged_resources_path, - ] - outputs = [ - # Output the non-compiled manifest for easy debugging (as opposed to - # generating to a temp file). - _incremental_android_manifest, - _incremental_compiled_resources_path, - ] - - _android_sdk_jar = android_sdk_jar - if (defined(invoker.alternative_android_sdk_jar)) { - _android_sdk_jar = invoker.alternative_android_sdk_jar - } - args = [ - "--src-manifest", - rebase_path(_android_manifest, root_build_dir), - "--out-manifest", - rebase_path(_incremental_android_manifest, root_build_dir), - "--in-apk", - rebase_path(invoker.packaged_resources_path, root_build_dir), - "--out-apk", - rebase_path(_incremental_compiled_resources_path, root_build_dir), - "--aapt-path", - rebase_path(android_default_aapt_path, root_build_dir), - "--android-sdk-jar", - rebase_path(_android_sdk_jar, root_build_dir), - ] - if (disable_incremental_isolated_processes) { - args += [ "--disable-isolated-processes" ] - } - } - - package_apk(target_name) { - forward_variables_from(invoker, - [ - "apk_name", - "assets_build_config", - "native_lib_placeholders", - "native_libs_filearg", - "packaged_resources_path", - "secondary_native_lib_placeholders", - "secondary_abi_native_libs_filearg", - "secondary_native_libs", - "uncompress_shared_libraries", - "write_asset_list", - ]) - if (!defined(uncompress_shared_libraries)) { - uncompress_shared_libraries = _load_library_from_apk - } - deps = _deps - native_libs = _native_libs + _native_libs_even_when_incremental - keystore_path = _keystore_path - keystore_name = _keystore_name - keystore_password = _keystore_password - - if (defined(_dex_path)) { - dex_path = _dex_path - } - - output_apk_path = _final_apk_path - } - - package_apk("${target_name}_incremental") { - forward_variables_from(invoker, - [ - "assets_build_config", - "secondary_native_libs", - "uncompress_shared_libraries", - ]) - if (!defined(uncompress_shared_libraries)) { - uncompress_shared_libraries = _load_library_from_apk - } - _dex_target = "//build/android/incremental_install:bootstrap_java__dex" - deps = _incremental_deps + [ - ":${_incremental_compile_resources_target_name}", - _dex_target, - ] - - if (defined(_dex_path)) { - dex_path = - get_label_info(_dex_target, "target_gen_dir") + "/bootstrap.dex" - } - - native_libs = _native_libs_even_when_incremental - keystore_path = _keystore_path - keystore_name = _keystore_name - keystore_password = _keystore_password - - # http://crbug.com/384638 - _has_native_libs = - defined(invoker.native_libs_filearg) || _native_libs != [] - if (_has_native_libs && _native_libs_even_when_incremental == []) { - native_lib_placeholders = [ "libfix.crbug.384638.so" ] - } - - output_apk_path = _incremental_final_apk_path - packaged_resources_path = _incremental_compiled_resources_path - } - } - - # Compile Java source files into a .jar file, potentially using an - # annotation processor, and/or the errorprone compiler. - # - # Note that the only way to specify custom annotation processors is - # by using build_config to point to a file that corresponds to a java-related - # target that includes javac:processor_classes entries (i.e. there is no - # variable here that can be used for this purpose). - # - # Note also the peculiar use of java_files / java_sources_file. The content - # of the java_files list and the java_sources_file file must match exactly. - # This rule uses java_files only to list the inputs to the action that - # calls the javac.py script, but will pass the list of Java source files - # with the '@${java_sources_file}" command-line syntax. Not a problem in - # practice since this is only called from java_library_impl() that sets up - # the variables properly. - # - # Variables: - # java_files: Optional list of Java source file paths. - # srcjar_deps: Optional list of .srcjar dependencies (not file paths). - # The corresponding source files they contain will be compiled too. - # srcjar_filearg: Optional @FileArg for additional srcjars. - # java_sources_file: Optional path to file containing list of Java source - # file paths. This must always be provided if java_files is not empty - # and must match it exactly. - # build_config: Path to the .build_config file of the corresponding - # java_library_impl() target. The following entries will be used by this - # template: javac:srcjars, deps_info:javac_full_classpath, - # deps_info:javac_full_interface_classpath, javac:processor_classpath, - # javac:processor_classes - # javac_jar_path: Path to the final output .jar file. - # javac_args: Optional list of extra arguments to pass to javac. - # chromium_code: Whether this corresponds to Chromium-specific sources. - # requires_android: True if these sources can only run on Android. - # alternative_android_sdk_ijar: Optional path to alternative Android system - # interface jar file (android.jar). Ignored it !requires_android. - # alternative_android_sdk_ijar_dep: If alternative_android_sdk_ijar is - # provided, this should be the dependency target that generates the - # alternative .jar file. - # additional_jar_files: Optional list of files to copy into the resulting - # .jar file (by default, only .class files are put there). Each entry - # has the 'srcPath:dstPath' format. - # enable_incremental_javac_override: Optional. If provided, determines - # whether incremental javac compilation (based on jmake) is enabled. - # Otherwise, decision is based on the global enable_incremental_javac - # build arg variable. - # enable_errorprone: Optional. If True, use the errorprone compiler to - # check for error-prone constructs in the language. If not provided, - # whether this is enabled depends on chromium_code and the global - # use_errorprone_java_compiler variable. - # apk_name: Optional APK name. If provided, will tell javac.py to also - # generate an .apk.jar.info file under size-info/${apk_name}.apk.jar.info - # provider_configurations: Optional list of paths to Java service - # provider configuration files [1]. These will be copied under - # META-INF/services/ in the final .jar file. - # processor_args_javac: List of annotation processor arguments, each one - # will be passed to javac as -A<entry>. - # deps: Dependencies for the corresponding target. - # testonly: Usual meaning (should be True for test-only targets) - # - # [1] https://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html - # - template("compile_java") { - forward_variables_from(invoker, [ "testonly" ]) - - _build_config = invoker.build_config - _chromium_code = invoker.chromium_code - _requires_android = invoker.requires_android - - if (defined(invoker.enable_errorprone)) { - _enable_errorprone = invoker.enable_errorprone - } else { - _enable_errorprone = use_errorprone_java_compiler && _chromium_code - } - - _provider_configurations = [] - if (defined(invoker.provider_configurations)) { - _provider_configurations = invoker.provider_configurations - } - - _processor_args = [] - if (defined(invoker.processor_args_javac)) { - _processor_args = invoker.processor_args_javac - } - - _additional_jar_files = [] - if (defined(invoker.additional_jar_files)) { - _additional_jar_files = invoker.additional_jar_files - } - - if (defined(invoker.enable_incremental_javac_override)) { - # Use invoker-specified override. - _enable_incremental_javac = invoker.enable_incremental_javac_override - } else { - # Default to build arg if not overridden. - _enable_incremental_javac = enable_incremental_javac - } - - _srcjar_deps = [] - if (defined(invoker.srcjar_deps)) { - _srcjar_deps += invoker.srcjar_deps - } - - _java_srcjars = [] - foreach(dep, _srcjar_deps) { - _dep_gen_dir = get_label_info(dep, "target_gen_dir") - _dep_name = get_label_info(dep, "name") - _java_srcjars += [ "$_dep_gen_dir/$_dep_name.srcjar" ] - } - - _javac_args = [] - if (defined(invoker.javac_args)) { - _javac_args = invoker.javac_args - } - - action(target_name) { - script = "//build/android/gyp/javac.py" - depfile = "$target_gen_dir/$target_name.d" - deps = _srcjar_deps - if (defined(invoker.deps)) { - deps += invoker.deps - } - - outputs = [ - invoker.javac_jar_path, - invoker.javac_jar_path + ".md5.stamp", - invoker.javac_jar_path + ".info", - ] - inputs = invoker.java_files + _java_srcjars + [ _build_config ] - if (invoker.java_files != []) { - inputs += [ invoker.java_sources_file ] - } - - _rebased_build_config = rebase_path(_build_config, root_build_dir) - _rebased_javac_jar_path = - rebase_path(invoker.javac_jar_path, root_build_dir) - _rebased_java_srcjars = rebase_path(_java_srcjars, root_build_dir) - _rebased_depfile = rebase_path(depfile, root_build_dir) - args = [ - "--depfile=$_rebased_depfile", - "--jar-path=$_rebased_javac_jar_path", - "--java-srcjars=$_rebased_java_srcjars", - "--java-version=1.8", - "--full-classpath=@FileArg($_rebased_build_config:deps_info:javac_full_classpath)", - "--interface-classpath=@FileArg($_rebased_build_config:deps_info:javac_full_interface_classpath)", - "--processorpath=@FileArg($_rebased_build_config:javac:processor_classpath)", - "--processors=@FileArg($_rebased_build_config:javac:processor_classes)", - ] - if (defined(invoker.srcjar_filearg)) { - args += [ "--java-srcjars=${invoker.srcjar_filearg}" ] - } - if (_enable_incremental_javac) { - args += [ "--incremental" ] - deps += [ "//third_party/jmake($default_toolchain)" ] - inputs += [ "$root_build_dir/bin/jmake" ] - outputs += [ "${invoker.javac_jar_path}.pdb" ] - } - if (_requires_android) { - if (defined(invoker.alternative_android_sdk_ijar)) { - deps += [ invoker.alternative_android_sdk_ijar_dep ] - _android_sdk_ijar = invoker.alternative_android_sdk_ijar - } else { - deps += [ "//build/android:android_ijar" ] - _android_sdk_ijar = "$root_out_dir/lib.java/android.interface.jar" - } - inputs += [ _android_sdk_ijar ] - _rebased_android_sdk_ijar = - rebase_path(_android_sdk_ijar, root_build_dir) - args += [ "--bootclasspath=$_rebased_android_sdk_ijar" ] - } - if (_chromium_code) { - args += [ "--chromium-code=1" ] - } - if (_enable_errorprone) { - deps += [ "//third_party/errorprone:errorprone($default_toolchain)" ] - deps += [ "//tools/android/errorprone_plugin:errorprone_plugin_java($default_toolchain)" ] - _rebased_errorprone_processorpath = [ - "lib.java/tools/android/errorprone_plugin/errorprone_plugin_java.jar", - ] - args += [ - "--use-errorprone-path", - "bin/errorprone", - "--processorpath=$_rebased_errorprone_processorpath", - ] - } - foreach(e, _provider_configurations) { - args += [ "--provider-configuration=" + rebase_path(e, root_build_dir) ] - } - foreach(e, _processor_args) { - args += [ "--processor-arg=" + e ] - } - - foreach(file_tuple, _additional_jar_files) { - # Each element is of length two, [ path_to_file, path_to_put_in_jar ] - inputs += [ file_tuple[0] ] - args += - [ "--additional-jar-file=" + file_tuple[0] + ":" + file_tuple[1] ] - } - if (invoker.java_files != []) { - args += [ "@" + rebase_path(invoker.java_sources_file, root_build_dir) ] - } - foreach(e, _javac_args) { - args += [ "--javac-arg=" + e ] - } - } - } - - # A rule that will handle multiple Java-related targets. - # - # The caller can provide a list of source files with 'java_files' - # and 'srcjar_deps', or a prebuilt .jar file through 'jar_path'. - # - # In the case of a 'java_binary' target type, it can even provide none of - # that (and the rule will just generate its wrapper script). - # - # The template will process the input .jar file (either the prebuilt one, - # or the result of compiling the sources), for example to apply Proguard, - # but also other ranges of bytecode-level rewriting schemes. - # - # Variables: - # type: type of Java target, valid values: 'java_library', 'java_binary', - # 'junit_binary', 'java_annotation_processor', and 'android_apk' - # main_target_name: optional. If provided, overrides target_name when - # creating sub-targets (e.g. "${main_target_name}__build_config") and - # some output files (e.g. "${main_target_name}.sources"). Only used - # for 'android_apk' types at the moment, where main_target_name will - # be the name of the main APK target. - # supports_android: Optional. True if target can run on Android. - # requires_android: Optional. True if target can only run on Android. - # java_files: Optional list of Java source file paths for this target. - # srcjar_deps: Optional list of .srcjar targets (not file paths). The Java - # source files they contain will also be compiled for this target. - # java_sources_file: Optional path to a file which will be written with - # the content of java_files. If not provided, the file will be written - # under $target_gen_dir/$main_target_name.sources. Ignored if - # java_files is empty. If not - # jar_path: Optional path to a prebuilt .jar file for this target. - # Mutually exclusive with java_files and srcjar_deps. - # final_jar_path: Optional path to the final output .jar file (after - # processing). If not provided, the output will go under - # $root_build_dir/lib.java/ - # output_name: Optional output name for the final jar path. Ignored if - # final_jar_path is provided. Otherwise, used to determine the name - # of the final jar. If not provided, the default is to use the same - # name as jar_path, if provided, or main_target_name. - # dex_path: Optional. Path to the output dex.jar file for this target. - # Ignored if !supports_android. - # main_class: Main Java class name for 'java_binary', 'junit_binary' and - # 'java_annotation_processor' target types. Should not be set for other - # ones. - # deps: Dependencies for this target. - # testonly: True iff target should only be used for tests. - # no_build_hooks: Disables bytecode rewriting of asserts and android - # resources methods. - # chromium_code: Optional. Whether this is Chromium-specific code. If not - # provided, this is determined automatically, based on the location of - # the source files (i.e. anything under third_party/ is not - # Chromium-specific unless it is in a 'chromium' sub-directory). - # emma_never_instrument: Optional. If provided, whether to forbid - # instrumentation with the Emma coverage processor. If not provided, - # this is controlled by the global emma_coverage build arg variable - # and only used for non-test Chromium code. - # alternative_android_sdk_jar: Optional. Alternative Android system - # android.jar to use. - # alternative_android_sdk_ijar: Optional alternative Android system - # interface jar path (i.e. the alternative_android_sdk_jar file processed - # by the ijar tool). - # alternative_android_sdk_ijar_dep: Optional. Dependency target that - # generates alternative_android_sdk_ijar (if the latter is provided). - # annotation_processor_deps: Optional list of dependencies corresponding - # to annotation processors used to compile these sources. - # input_jars_paths: Optional list of additional .jar file paths, which will - # be added to the compile-time classpath when building this target (but - # not to the runtime classpath). - # classpath_deps: Optional list of additional java library dependencies, - # whose .jar files will be added to the compile-time classpath when - # building this target (but not to the runtime classpath). - # gradle_treat_as_prebuilt: Cause generate_gradle.py to reference this - # library via its built .jar rather than including its .java sources. - # proguard_enabled: Optional. True to enable ProGuard obfuscation. - # proguard_configs: Optional list of additional proguard config file paths. - # bypass_platform_checks: Optional. If True, platform checks will not - # be performed. They are used to verify that every target with - # requires_android only depends on targets that, at least supports_android. - # Similarly, if a target has !supports_android, then it cannot depend on - # any other target that has requires_android. - # include_java_resources: Optional. If True, include Java (not Android) - # resources into final .jar file. - # android_manifest_for_lint: Optional path to Android manifest to use - # if Android linting is enabled. Ignored for 'android_apk' types - # (since the value of android_manifest will be used instead). - # lint_suppressions_file: Optional lint suppressions input file. - # jar_excluded_patterns: Optional list of .class file patterns to exclude - # from the final .jar file. - # jar_included_patterns: Optional list of .class file patterns to include - # in the final .jar file. jar_excluded_patterns take precedence over this. - # - # For 'android_apk' targets only: - # - # apk_path: Path to the final APK file. - # android_manifest: Path to AndroidManifest.xml file for the APK. - # android_manifest_dep: Optional. Dependency target that generates - # android_manifest. - # apk_under_test: For 'android_apk' targets used to test other APKs, - # this is the target name of APK being tested. - # incremental_allowed: Optional (default false). True to allow the - # generation of incremental APKs ('android_apk' targets only). - # incremental_apk_path: If incremental_allowed, path to the incremental - # output APK. - # incremental_install_json_path: If incremental_allowed, path to the output - # incremental install json configuration file. - # non_native_packed_relocations: Optional. True if the target Android - # system does not support compressed relocations in native shared - # libraries. - # shared_libraries_runtime_deps_file: Optional. Path to a file listing the - # native shared libraries required at runtime by - # secondary_abi_shared_libraries_runtime_deps_file: - # - # - # For 'java_binary' and 'junit_binary' targets only. Ignored by others: - # - # bootclasspath: Optional list of boot class paths used by the generated - # wrapper script. - # wrapper_script_name: Optional name for the generated wrapper script. - # Default is main target name. - # wrapper_script_args: Optional list of extra arguments used by the - # generated wrapper script. - # - template("java_library_impl") { - set_sources_assignment_filter([]) - forward_variables_from(invoker, [ "testonly" ]) - _is_prebuilt = defined(invoker.jar_path) - _is_annotation_processor = invoker.type == "java_annotation_processor" - _is_java_binary = - invoker.type == "java_binary" || invoker.type == "junit_binary" - _supports_android = - defined(invoker.supports_android) && invoker.supports_android - _requires_android = - defined(invoker.requires_android) && invoker.requires_android - - _main_target_name = target_name - if (defined(invoker.main_target_name)) { - _main_target_name = invoker.main_target_name - } - _java_files = [] - if (defined(invoker.java_files)) { - _java_files = invoker.java_files - } - _srcjar_deps = [] - if (defined(invoker.srcjar_deps)) { - _srcjar_deps = invoker.srcjar_deps - } - _has_sources = _java_files != [] || _srcjar_deps != [] - - if (_is_prebuilt) { - assert(!_has_sources) - } else { - # Allow java_binary to not specify any sources. This is needed when a prebuilt - # is needed as a library as well as a binary. - assert(_is_annotation_processor || _is_java_binary || _has_sources) - } - - if (_is_java_binary) { - assert(defined(invoker.main_class), - "${invoker.type}() must set main_class") - } else if (_is_annotation_processor) { - assert(defined(invoker.main_class), - "java_annotation_processor() must set main_class") - } else { - assert(!defined(invoker.main_class), - "main_class cannot be used for target of type ${invoker.type}") - } - - # The only target that might have no prebuilt and no sources is a java_binary. - if (_is_prebuilt || _has_sources) { - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } else if (_is_prebuilt) { - _output_name = get_path_info(invoker.jar_path, "name") - } else { - _output_name = _main_target_name - } - - # Jar files can be needed at runtime (by Robolectric tests or java binaries), - # so do not put them under gen/. - _target_dir_name = get_label_info(":$_main_target_name", "dir") - _final_jar_path = - "$root_out_dir/lib.java$_target_dir_name/$_output_name.jar" - if (defined(invoker.final_jar_path)) { - _final_jar_path = invoker.final_jar_path - } - _final_ijar_path = - get_path_info(_final_jar_path, "dir") + "/" + - get_path_info(_final_jar_path, "name") + ".interface.jar" - - if (_has_sources) { - _javac_jar_path = "$target_gen_dir/$_main_target_name.javac.jar" - } - - if (_is_prebuilt) { - _unprocessed_jar_path = invoker.jar_path - } else { - _unprocessed_jar_path = _javac_jar_path - } - - if (_supports_android) { - _dex_path = "$target_gen_dir/$_main_target_name.dex.jar" - if (defined(invoker.dex_path)) { - _dex_path = invoker.dex_path - } - } - } - - _accumulated_deps = [] - if (defined(invoker.deps)) { - _accumulated_deps = invoker.deps - } - _accumulated_deps += [ "//build/config:exe_and_shlib_deps" ] - - _enable_build_hooks = - _supports_android && - (!defined(invoker.no_build_hooks) || !invoker.no_build_hooks) - if (_enable_build_hooks) { - _accumulated_deps += [ "//build/android/buildhooks:build_hooks_java" ] - } - - # Some testonly targets use their own resources and the code being - # tested will use custom resources so there's no need to enable this - # for testonly targets. - _enable_build_hooks_android = - _enable_build_hooks && _requires_android && - (!defined(invoker.testonly) || !invoker.testonly) - if (_enable_build_hooks_android) { - _accumulated_deps += - [ "//build/android/buildhooks:build_hooks_android_java" ] - } - - # Don't enable coverage or lint unless the target has some non-generated - # files. - if (defined(invoker.chromium_code)) { - _chromium_code = invoker.chromium_code - } else { - # Default based on whether target is in third_party. - set_sources_assignment_filter([ "*\bthird_party\b*" ]) - sources = [ - get_label_info(":$_main_target_name", "dir"), - ] - _chromium_code = sources != [] - if (!_chromium_code && !_is_prebuilt && _java_files != []) { - # Unless third_party code has an org.chromium file in it. - set_sources_assignment_filter([ "*\bchromium\b*" ]) - sources = _java_files - _chromium_code = _java_files != sources - } - set_sources_assignment_filter([]) - sources = [] - } - - if (defined(_final_jar_path)) { - _emma_instrument = emma_coverage && _chromium_code && _java_files != [] && - (!defined(invoker.testonly) || !invoker.testonly) - if (defined(invoker.emma_never_instrument)) { - _emma_instrument = !invoker.emma_never_instrument && _emma_instrument - } - if (_emma_instrument) { - _accumulated_deps += [ "//third_party/android_tools:emma_device_java" ] - } - } - - if (_java_files != []) { - _java_sources_file = "$target_gen_dir/$_main_target_name.sources" - if (defined(invoker.java_sources_file)) { - _java_sources_file = invoker.java_sources_file - } - write_file(_java_sources_file, rebase_path(_java_files, root_build_dir)) - } - - # Define build_config_deps which will be a list of targets required to - # build the _build_config. - _build_config = "$target_gen_dir/$_main_target_name.build_config" - _build_config_target_name = "${_main_target_name}__build_config" - - write_build_config(_build_config_target_name) { - forward_variables_from(invoker, - [ - "alternative_android_sdk_ijar", - "annotation_processor_deps", - "classpath_deps", - "gradle_treat_as_prebuilt", - "proguard_enabled", - "proguard_configs", - "input_jars_paths", - "main_class", - "type", - ]) - if (type == "android_apk") { - forward_variables_from( - invoker, - [ - "android_manifest", - "android_manifest_dep", - "apk_path", - "apk_under_test", - "incremental_allowed", - "incremental_apk_path", - "incremental_install_json_path", - "non_native_packed_relocations", - "proto_resources_path", - "shared_libraries_runtime_deps_file", - "secondary_abi_shared_libraries_runtime_deps_file", - ]) - } - build_config = _build_config - is_prebuilt = _is_prebuilt - possible_config_deps = _accumulated_deps - if (defined(apk_under_test)) { - possible_config_deps += [ apk_under_test ] - } - supports_android = _supports_android - requires_android = _requires_android - bypass_platform_checks = defined(invoker.bypass_platform_checks) && - invoker.bypass_platform_checks - - if (defined(_final_jar_path)) { - jar_path = _final_jar_path - ijar_path = _final_ijar_path - unprocessed_jar_path = _unprocessed_jar_path - } - if (defined(_dex_path)) { - dex_path = _dex_path - } - if (_java_files != []) { - java_sources_file = _java_sources_file - } - - bundled_srcjars = [] - foreach(d, _srcjar_deps) { - _dep_gen_dir = get_label_info(d, "target_gen_dir") - _dep_name = get_label_info(d, "name") - bundled_srcjars += [ "$_dep_gen_dir/$_dep_name.srcjar" ] - } - if (defined(invoker.include_java_resources) && - invoker.include_java_resources) { - # Use original jar_path because _jar_path points to a library without - # resources. - java_resources_jar = invoker.jar_path - } - } - _accumulated_deps += [ ":$_build_config_target_name" ] - - # Don't need to depend on the apk-under-test to be packaged. - if (defined(invoker.apk_under_test)) { - _accumulated_deps += [ "${invoker.apk_under_test}__java" ] - } - if (defined(invoker.android_manifest_dep)) { - _accumulated_deps += [ invoker.android_manifest_dep ] - } - if (defined(invoker.classpath_deps)) { - _accumulated_deps += invoker.classpath_deps - } - if (defined(invoker.annotation_processor_deps)) { - _accumulated_deps += invoker.annotation_processor_deps - } - - # TODO(agrieve): Enable lint for _has_sources rather than just _java_files. - _has_lint_target = _java_files != [] && _supports_android && _chromium_code - if (_has_sources) { - _compile_java_target = "${_main_target_name}__compile_java" - compile_java(_compile_java_target) { - forward_variables_from(invoker, - [ - "additional_jar_files", - "alternative_android_sdk_ijar", - "alternative_android_sdk_ijar_dep", - "apk_name", - "enable_errorprone", - "enable_incremental_javac_override", - "processor_args_javac", - "provider_configurations", - "javac_args", - ]) - build_config = _build_config - java_files = _java_files - if (_java_files != []) { - java_sources_file = _java_sources_file - } - srcjar_deps = _srcjar_deps - chromium_code = _chromium_code - requires_android = _requires_android - deps = _accumulated_deps - javac_jar_path = _javac_jar_path - - # android_apk and junit_binary pass R.java srcjars via srcjar_deps. - if (invoker.type == "java_library" && _requires_android) { - _rebased_build_config = rebase_path(_build_config, root_build_dir) - srcjar_filearg = "@FileArg($_rebased_build_config:deps_info:owned_resource_srcjars)" - } - } - _accumulated_deps += [ ":$_compile_java_target" ] - - if (_has_lint_target) { - android_lint("${_main_target_name}__lint") { - if (invoker.type == "android_apk") { - forward_variables_from(invoker, [ "android_manifest" ]) - } else if (defined(invoker.android_manifest_for_lint)) { - android_manifest = invoker.android_manifest_for_lint - } - build_config = _build_config - requires_android = _requires_android - jar_path = _javac_jar_path - deps = _accumulated_deps - java_files = _java_files - if (_java_files != []) { - java_sources_file = _java_sources_file - } - if (defined(invoker.lint_suppressions_file)) { - lint_suppressions_file = invoker.lint_suppressions_file - } - } - - # Use an intermediate group() rather as the data_deps target in order to - # avoid lint artifacts showing up as runtime_deps (while still having lint - # run in parallel to other targets). - group("${_main_target_name}__analysis") { - public_deps = [ - ":${_main_target_name}__lint", - ] - } - } - } # _has_sources - - if (defined(_final_jar_path)) { - _process_prebuilt_target_name = "${target_name}__process_prebuilt" - process_java_prebuilt(_process_prebuilt_target_name) { - forward_variables_from(invoker, - [ - "alternative_android_sdk_ijar", - "alternative_android_sdk_ijar_dep", - "alternative_android_sdk_jar", - "jar_excluded_patterns", - "jar_included_patterns", - ]) - supports_android = _supports_android - enable_build_hooks = _enable_build_hooks - enable_build_hooks_android = _enable_build_hooks_android - build_config = _build_config - input_jar_path = _unprocessed_jar_path - emma_instrument = _emma_instrument - if (_emma_instrument) { - java_files = _java_files - java_sources_file = _java_sources_file - } - output_jar_path = _final_jar_path - deps = _accumulated_deps - - # Although these will be listed as deps in the depfile, they must also - # appear here so that "gn analyze" knows about them. - # https://crbug.com/827197 - if (defined(invoker.proguard_configs)) { - inputs = invoker.proguard_configs - deps += _srcjar_deps # For the aapt-generated proguard rules. - } - } - _accumulated_deps += [ ":$_process_prebuilt_target_name" ] - - if (defined(_dex_path)) { - dex("${target_name}__dex") { - input_jars = [ _final_jar_path ] - output = _dex_path - deps = [ - ":$_process_prebuilt_target_name", - ] - } - _accumulated_deps += [ ":${target_name}__dex" ] - } - - _ijar_target_name = "${target_name}__ijar" - generate_interface_jar(_ijar_target_name) { - # Always used the unfiltered .jar to create the interface jar so that - # other targets will resolve filtered classes when depending on - # BuildConfig, NativeLibraries, etc. - input_jar = _unprocessed_jar_path - if (_is_prebuilt) { - forward_variables_from(invoker, [ "deps" ]) - } else { - deps = [ - ":$_compile_java_target", - ] - } - output_jar = _final_ijar_path - } - _accumulated_deps += [ ":$_ijar_target_name" ] - } - - if (_is_java_binary) { - # Targets might use the generated script while building, so make it a dep - # rather than a data_dep. - java_binary_script("${target_name}__java_binary_script") { - forward_variables_from(invoker, - [ - "bootclasspath", - "main_class", - "wrapper_script_args", - ]) - build_config = _build_config - if (defined(_final_jar_path)) { - jar_path = _final_jar_path - } - script_name = _main_target_name - if (defined(invoker.wrapper_script_name)) { - script_name = invoker.wrapper_script_name - } - deps = _accumulated_deps - } - _accumulated_deps += [ ":${target_name}__java_binary_script" ] - } - - group(target_name) { - forward_variables_from(invoker, - [ - "data", - "data_deps", - "visibility", - ]) - public_deps = _accumulated_deps - if (_has_lint_target) { - if (!defined(data_deps)) { - data_deps = [] - } - data_deps += [ ":${_main_target_name}__analysis" ] - } - } - } - - template("pack_relocation_section") { - assert(defined(invoker.file_list_json)) - assert(defined(invoker.libraries_filearg)) - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "inputs", - "testonly", - ]) - script = "//build/android/gyp/pack_relocations.py" - depfile = "$target_gen_dir/$target_name.d" - _packed_libraries_dir = "$target_gen_dir/$target_name/packed-libs" - outputs = [ - invoker.file_list_json, - ] - deps += [ relocation_packer_target ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--enable-packing=1", - "--android-pack-relocations", - rebase_path(relocation_packer_exe, root_build_dir), - "--stripped-libraries-dir", - rebase_path(root_build_dir, root_build_dir), - "--packed-libraries-dir", - rebase_path(_packed_libraries_dir, root_build_dir), - "--libraries=${invoker.libraries_filearg}", - "--filelistjson", - rebase_path(invoker.file_list_json, root_build_dir), - ] - } - } -}
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni deleted file mode 100644 index c1b35a3..0000000 --- a/build/config/android/rules.gni +++ /dev/null
@@ -1,3415 +0,0 @@ -# Copyright 2014 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. - -# Do not add any imports to non-//build directories here. -# Some projects (e.g. V8) do not have non-build directories DEPS'ed in. -import("//build/config/android/config.gni") -import("//build/config/android/internal_rules.gni") -import("//build/config/clang/clang.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/dcheck_always_on.gni") -import("//build/toolchain/toolchain.gni") - -assert(is_android) - -declare_args() { - enable_jni_tracing = false -} - -if (target_cpu == "arm") { - _sanitizer_arch = "arm" -} else if (target_cpu == "arm64") { - _sanitizer_arch = "aarch64" -} else if (target_cpu == "x86") { - _sanitizer_arch = "i686" -} - -_sanitizer_runtimes = [] -if (use_cfi_diag || is_ubsan || is_ubsan_security || is_ubsan_vptr) { - _sanitizer_runtimes = [ "$clang_base_path/lib/clang/$clang_version/lib/linux/libclang_rt.ubsan_standalone-$_sanitizer_arch-android.so" ] -} - -# Creates a dist directory for a native executable. -# -# Running a native executable on a device requires all the shared library -# dependencies of that executable. To make it easier to install and run such an -# executable, this will create a directory containing the native exe and all -# it's library dependencies. -# -# Note: It's usually better to package things as an APK than as a native -# executable. -# -# Variables -# dist_dir: Directory for the exe and libraries. Everything in this directory -# will be deleted before copying in the exe and libraries. -# binary: Path to (stripped) executable. -# extra_files: List of extra files to copy in (optional). -# -# Example -# create_native_executable_dist("foo_dist") { -# dist_dir = "$root_build_dir/foo_dist" -# binary = "$root_build_dir/foo" -# deps = [ ":the_thing_that_makes_foo" ] -# } -template("create_native_executable_dist") { - forward_variables_from(invoker, [ "testonly" ]) - - _libraries_list = "${target_gen_dir}/${target_name}_library_dependencies.list" - - _runtime_deps_file = "$target_gen_dir/${target_name}.runtimedeps" - _runtime_deps_target_name = "${target_name}__runtime_deps" - group(_runtime_deps_target_name) { - data = _sanitizer_runtimes - data_deps = [] - if (defined(invoker.deps)) { - data_deps += invoker.deps - } - if (is_component_build || is_asan) { - data_deps += [ "//build/android:cpplib_stripped" ] - } - write_runtime_deps = _runtime_deps_file - } - - _find_deps_target_name = "${target_name}__find_library_dependencies" - - # TODO(agrieve): Extract dependent libs from GN rather than readelf. - action(_find_deps_target_name) { - deps = invoker.deps + [ ":$_runtime_deps_target_name" ] - script = "//build/android/gyp/write_ordered_libraries.py" - depfile = "$target_gen_dir/$target_name.d" - inputs = [ - invoker.binary, - _runtime_deps_file, - android_readelf, - ] - outputs = [ - _libraries_list, - ] - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--runtime-deps", - rebase_path(_runtime_deps_file, root_build_dir), - "--output", - rebase_path(_libraries_list, root_build_dir), - "--readelf", - rebase_path(android_readelf, root_build_dir), - ] - } - - copy_ex(target_name) { - inputs = [ - _libraries_list, - invoker.binary, - ] - - dest = invoker.dist_dir - data = [ - "${invoker.dist_dir}/", - ] - - _rebased_libraries_list = rebase_path(_libraries_list, root_build_dir) - _rebased_binaries_list = rebase_path([ invoker.binary ], root_build_dir) - args = [ - "--clear", - "--files=@FileArg($_rebased_libraries_list:lib_paths)", - "--files=$_rebased_binaries_list", - ] - if (defined(invoker.extra_files)) { - _rebased_extra_files = rebase_path(invoker.extra_files, root_build_dir) - args += [ "--files=$_rebased_extra_files" ] - } - - _depfile = "$target_gen_dir/$target_name.d" - _stamp_file = "$target_gen_dir/$target_name.stamp" - outputs = [ - _stamp_file, - ] - args += [ - "--depfile", - rebase_path(_depfile, root_build_dir), - "--stamp", - rebase_path(_stamp_file, root_build_dir), - ] - - deps = [ - ":$_find_deps_target_name", - ] - if (defined(invoker.deps)) { - deps += invoker.deps - } - } -} - -# Writes a script to root_out_dir/bin that passes --output-directory to the -# wrapped script, in addition to forwarding arguments. Most / all of these -# wrappers should be made deps of //tools/android:android_tools. -# -# Variables -# target: Script to wrap. -# flag_name: Default is "--output-directory" -# -# Example -# wrapper_script("foo_wrapper") { -# target = "//pkg/foo.py" -# } -template("wrapper_script") { - action(target_name) { - _name = get_path_info(invoker.target, "name") - _output = "$root_out_dir/bin/$_name" - - script = "//build/android/gyp/create_tool_wrapper.py" - outputs = [ - _output, - ] - - # The target isn't actually used by the script, but it's nice to have GN - # check that it exists. - inputs = [ - invoker.target, - ] - args = [ - "--output", - rebase_path(_output, root_build_dir), - "--target", - rebase_path(invoker.target, root_build_dir), - "--output-directory", - rebase_path(root_out_dir, root_build_dir), - ] - if (defined(invoker.flag_name)) { - args += [ "--flag-name=${invoker.flag_name}" ] - } - } -} - -if (enable_java_templates) { - import("//build/config/sanitizers/sanitizers.gni") - import("//tools/grit/grit_rule.gni") - - # Declare a jni target - # - # This target generates the native jni bindings for a set of .java files. - # - # See base/android/jni_generator/jni_generator.py for more info about the - # format of generating JNI bindings. - # - # Variables - # sources: list of .java files to generate jni for - # jni_package: subdirectory path for generated bindings - # - # Example - # generate_jni("foo_jni") { - # sources = [ - # "android/java/src/org/chromium/foo/Foo.java", - # "android/java/src/org/chromium/foo/FooUtil.java", - # ] - # jni_package = "foo" - # } - template("generate_jni") { - set_sources_assignment_filter([]) - forward_variables_from(invoker, [ "testonly" ]) - - _base_output_dir = "${target_gen_dir}/${target_name}" - _package_output_dir = "${_base_output_dir}/${invoker.jni_package}" - _jni_output_dir = "${_package_output_dir}/jni" - - if (defined(invoker.jni_generator_include)) { - _jni_generator_include = invoker.jni_generator_include - _jni_generator_include_deps = [] - } else { - _jni_generator_include = - "//base/android/jni_generator/jni_generator_helper.h" - _jni_generator_include_deps = [ - # Using //base/android/jni_generator/jni_generator_helper.h introduces - # a dependency on debugging_buildflags indirectly through - # base/android/jni_android.h, which is part of the //base target. - # This can't depend directly on //base without causing a dependency - # cycle, though. - "//base:debugging_buildflags", - ] - } - - _foreach_target_name = "${target_name}__jni_gen" - action_foreach(_foreach_target_name) { - script = "//base/android/jni_generator/jni_generator.py" - depfile = "$target_gen_dir/$target_name.{{source_name_part}}.d" - sources = invoker.sources - outputs = [ - "${_jni_output_dir}/{{source_name_part}}_jni.h", - ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--input_file={{source}}", - "--ptr_type=long", - "--output_dir", - rebase_path(_jni_output_dir, root_build_dir), - "--includes", - rebase_path(_jni_generator_include, _jni_output_dir), - ] - - if (enable_profiling) { - args += [ "--enable_profiling" ] - } - if (defined(invoker.namespace)) { - args += [ "-n ${invoker.namespace}" ] - } - if (enable_jni_tracing) { - args += [ "--enable_tracing" ] - } - } - - config("jni_includes_${target_name}") { - # TODO(cjhopman): #includes should probably all be relative to - # _base_output_dir. Remove that from this config once the includes are - # updated. - include_dirs = [ - _base_output_dir, - _package_output_dir, - ] - } - - group(target_name) { - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "visibility", - ]) - if (!defined(public_deps)) { - public_deps = [] - } - public_deps += [ ":$_foreach_target_name" ] - public_deps += _jni_generator_include_deps - public_configs = [ ":jni_includes_${target_name}" ] - } - } - - # Declare a jni target for a prebuilt jar - # - # This target generates the native jni bindings for a set of classes in a .jar. - # - # See base/android/jni_generator/jni_generator.py for more info about the - # format of generating JNI bindings. - # - # Variables - # classes: list of .class files in the jar to generate jni for. These should - # include the full path to the .class file. - # jni_package: subdirectory path for generated bindings - # jar_file: the path to the .jar. If not provided, will default to the sdk's - # android.jar - # - # deps, public_deps: As normal - # - # Example - # generate_jar_jni("foo_jni") { - # classes = [ - # "android/view/Foo.class", - # ] - # jni_package = "foo" - # } - template("generate_jar_jni") { - forward_variables_from(invoker, [ "testonly" ]) - - if (defined(invoker.jar_file)) { - _jar_file = invoker.jar_file - } else { - _jar_file = android_sdk_jar - } - - _base_output_dir = "${target_gen_dir}/${target_name}/${invoker.jni_package}" - _jni_output_dir = "${_base_output_dir}/jni" - - if (defined(invoker.jni_generator_include)) { - _jni_generator_include = invoker.jni_generator_include - } else { - _jni_generator_include = - "//base/android/jni_generator/jni_generator_helper.h" - } - - # TODO(cjhopman): make jni_generator.py support generating jni for multiple - # .class files from a .jar. - _jni_actions = [] - foreach(_class, invoker.classes) { - _classname = get_path_info(_class, "name") - _jni_target_name = "${target_name}__jni_${_classname}" - _jni_actions += [ ":$_jni_target_name" ] - action(_jni_target_name) { - # The sources aren't compiled so don't check their dependencies. - check_includes = false - depfile = "$target_gen_dir/$target_name.d" - script = "//base/android/jni_generator/jni_generator.py" - inputs = [ - _jar_file, - ] - outputs = [ - "${_jni_output_dir}/${_classname}_jni.h", - ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--jar_file", - rebase_path(_jar_file, root_build_dir), - "--input_file", - _class, - "--ptr_type=long", - "--output_dir", - rebase_path(_jni_output_dir, root_build_dir), - "--includes", - rebase_path(_jni_generator_include, _jni_output_dir), - ] - - if (enable_profiling) { - args += [ "--enable_profiling" ] - } - if (enable_jni_tracing) { - args += [ "--enable_tracing" ] - } - } - } - - config("jni_includes_${target_name}") { - include_dirs = [ _base_output_dir ] - } - - group(target_name) { - public_deps = [] - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "visibility", - ]) - public_deps += _jni_actions - public_configs = [ ":jni_includes_${target_name}" ] - } - } - - # Declare a jni registration target. - # - # This target generates a header file calling JNI registration functions - # created by generate_jni and generate_jar_jni. - # - # See base/android/jni_generator/jni_registration_generator.py for more info - # about the format of the header file. - # - # Variables - # target: The Apk target to generate registrations for. - # output: Path to the generated .h file. - # exception_files: List of .java files that should be ignored when searching - # for native methods. (optional) - # - # Example - # generate_jni_registration("chrome_jni_registration") { - # target = ":chrome_public_apk" - # output = "$root_gen_dir/chrome/browser/android/${target_name}.h" - # exception_files = [ - # "//base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java", - # "//base/android/java/src/org/chromium/base/library_loader/Linker.java", - # "//base/android/java/src/org/chromium/base/library_loader/ModernLinker.java", - # ] - # } - template("generate_jni_registration") { - action(target_name) { - forward_variables_from(invoker, [ "testonly" ]) - _build_config = get_label_info(invoker.target, "target_gen_dir") + "/" + - get_label_info(invoker.target, "name") + ".build_config" - _rebased_build_config = rebase_path(_build_config, root_build_dir) - - _rebase_exception_java_files = - rebase_path(invoker.exception_files, root_build_dir) - - script = "//base/android/jni_generator/jni_registration_generator.py" - deps = [ - "${invoker.target}__build_config", - ] - inputs = [ - _build_config, - ] - outputs = [ - invoker.output, - ] - depfile = "$target_gen_dir/$target_name.d" - - args = [ - # This is a list of .sources files. - "--sources_files=@FileArg($_rebased_build_config:jni:all_source)", - "--output", - rebase_path(invoker.output, root_build_dir), - "--no_register_java=$_rebase_exception_java_files", - "--depfile", - rebase_path(depfile, root_build_dir), - ] - } - } - - # Declare a target for c-preprocessor-generated java files - # - # NOTE: For generating Java conterparts to enums prefer using the java_cpp_enum - # rule instead. - # - # This target generates java files using the host C pre-processor. Each file in - # sources will be compiled using the C pre-processor. If include_path is - # specified, it will be passed (with --I) to the pre-processor. - # - # This target will create a single .srcjar. Adding this target to an - # android_library target's srcjar_deps will make the generated java files be - # included in that library's final outputs. - # - # Variables - # sources: list of files to be processed by the C pre-processor. For each - # file in sources, there will be one .java file in the final .srcjar. For a - # file named FooBar.template, a java file will be created with name - # FooBar.java. - # inputs: additional compile-time dependencies. Any files - # `#include`-ed in the templates should be listed here. - # package_path: this will be the subdirectory for each .java file in the - # .srcjar. - # - # Example - # java_cpp_template("foo_generated_enum") { - # sources = [ - # "android/java/templates/Foo.template", - # ] - # inputs = [ - # "android/java/templates/native_foo_header.h", - # ] - # - # package_path = "org/chromium/base/library_loader" - # include_path = "android/java/templates" - # } - template("java_cpp_template") { - set_sources_assignment_filter([]) - forward_variables_from(invoker, [ "testonly" ]) - - _include_path = "//" - if (defined(invoker.include_path)) { - _include_path = invoker.include_path - } - - _apply_gcc_target_name = "${target_name}__apply_gcc" - _base_gen_dir = "${target_gen_dir}/${target_name}/java_cpp_template" - _package_path = invoker.package_path - - action_foreach(_apply_gcc_target_name) { - forward_variables_from(invoker, - [ - "deps", - "inputs", - "public_deps", - "data_deps", - ]) - script = "//build/android/gyp/gcc_preprocess.py" - depfile = - "${target_gen_dir}/${invoker.target_name}_{{source_name_part}}.d" - - sources = invoker.sources - - outputs = [ - "$_base_gen_dir/${_package_path}/{{source_name_part}}.java", - ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--include-path", - rebase_path(_include_path, root_build_dir), - "--output", - rebase_path(outputs[0], root_build_dir), - "--template={{source}}", - ] - - if (defined(invoker.defines)) { - foreach(_def, invoker.defines) { - args += [ - "--defines", - _def, - ] - } - } - } - - # Filter out .d files. - set_sources_assignment_filter([ "*.d" ]) - sources = get_target_outputs(":$_apply_gcc_target_name") - - zip(target_name) { - forward_variables_from(invoker, [ "visibility" ]) - inputs = sources - output = "${target_gen_dir}/${target_name}.srcjar" - base_dir = _base_gen_dir - deps = [ - ":$_apply_gcc_target_name", - ] - } - } - - # Declare a target for generating Java classes from C++ enums. - # - # This target generates Java files from C++ enums using a script. - # - # This target will create a single .srcjar. Adding this target to an - # android_library target's srcjar_deps will make the generated java files be - # included in that library's final outputs. - # - # Variables - # sources: list of files to be processed by the script. For each annotated - # enum contained in the sources files the script will generate a .java - # file with the same name as the name of the enum. - # - # Example - # java_cpp_enum("foo_generated_enum") { - # sources = [ - # "src/native_foo_header.h", - # ] - # } - template("java_cpp_enum") { - set_sources_assignment_filter([]) - action(target_name) { - forward_variables_from(invoker, - [ - "sources", - "testonly", - "visibility", - ]) - - # The sources aren't compiled so don't check their dependencies. - check_includes = false - script = "//build/android/gyp/java_cpp_enum.py" - depfile = "$target_gen_dir/$target_name.d" - - _srcjar_path = "${target_gen_dir}/${target_name}.srcjar" - _rebased_srcjar_path = rebase_path(_srcjar_path, root_build_dir) - _rebased_sources = rebase_path(invoker.sources, root_build_dir) - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--srcjar=$_rebased_srcjar_path", - ] + _rebased_sources - outputs = [ - _srcjar_path, - ] - } - } - - # Declare a target for processing a Jinja template. - # - # Variables - # input: The template file to be processed. - # output: Where to save the result. - # variables: (Optional) A list of variables to make available to the template - # processing environment, e.g. ["name=foo", "color=red"]. - # - # Example - # jinja_template("chrome_public_manifest") { - # input = "java/AndroidManifest.xml" - # output = "$target_gen_dir/AndroidManifest.xml" - # } - template("jinja_template") { - forward_variables_from(invoker, [ "testonly" ]) - - action(target_name) { - forward_variables_from(invoker, - [ - "visibility", - "deps", - ]) - - inputs = [ - invoker.input, - ] - script = "//build/android/gyp/jinja_template.py" - depfile = "$target_gen_dir/$target_name.d" - - outputs = [ - invoker.output, - ] - - args = [ - "--loader-base-dir", - rebase_path("//", root_build_dir), - "--inputs", - rebase_path(invoker.input, root_build_dir), - "--output", - rebase_path(invoker.output, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - ] - if (defined(invoker.variables)) { - args += [ "--variables=${invoker.variables}" ] - } - } - } - - # Declare a target for processing Android resources as Jinja templates. - # - # This takes an Android resource directory where each resource is a Jinja - # template, processes each template, then packages the results in a zip file - # which can be consumed by an android resources, library, or apk target. - # - # If this target is included in the deps of an android resources/library/apk, - # the resources will be included with that target. - # - # Variables - # resources: The list of resources files to process. - # res_dir: The resource directory containing the resources. - # variables: (Optional) A list of variables to make available to the template - # processing environment, e.g. ["name=foo", "color=red"]. - # - # Example - # jinja_template_resources("chrome_public_template_resources") { - # res_dir = "res_template" - # resources = ["res_template/xml/syncable.xml"] - # variables = ["color=red"] - # } - template("jinja_template_resources") { - forward_variables_from(invoker, [ "testonly" ]) - - # JUnit tests use resource zip files. These must not be put in gen/ - # directory or they will not be available to tester bots. - _resources_zip_rebased_path = rebase_path(target_gen_dir, root_gen_dir) - _resources_zip = "${root_out_dir}/resource_zips/${_resources_zip_rebased_path}/${target_name}.resources.zip" - _build_config = "$target_gen_dir/$target_name.build_config" - - write_build_config("${target_name}__build_config") { - build_config = _build_config - resources_zip = _resources_zip - type = "android_resources" - if (defined(invoker.deps)) { - possible_config_deps = invoker.deps - } - } - - action("${target_name}__template") { - forward_variables_from(invoker, [ "deps" ]) - inputs = invoker.resources - script = "//build/android/gyp/jinja_template.py" - depfile = "$target_gen_dir/$target_name.d" - - outputs = [ - _resources_zip, - ] - - _rebased_resources = rebase_path(invoker.resources, root_build_dir) - args = [ - "--inputs=${_rebased_resources}", - "--inputs-base-dir", - rebase_path(invoker.res_dir, root_build_dir), - "--outputs-zip", - rebase_path(_resources_zip, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - ] - if (defined(invoker.variables)) { - variables = invoker.variables - args += [ "--variables=${variables}" ] - } - } - - group(target_name) { - public_deps = [ - ":${target_name}__build_config", - ":${target_name}__template", - ] - } - } - - # Declare an Android resources target - # - # This creates a resources zip file that will be used when building an Android - # library or apk and included into a final apk. - # - # To include these resources in a library/apk, this target should be listed in - # the library's deps. A library/apk will also include any resources used by its - # own dependencies. - # - # Variables - # deps: Specifies the dependencies of this target. Any Android resources - # listed in deps will be included by libraries/apks that depend on this - # target. - # resource_dirs: List of directories containing resources for this target. - # generated_resource_dirs: List of directories containing resources for this - # target which are *generated* by a dependency. |generated_resource_files| - # must be specified if |generated_resource_dirs| is specified. - # generated_resource_files: List of all files in |generated_resource_dirs|. - # |generated_resource_dirs| must be specified in |generated_resource_files| - # is specified. - # android_manifest: AndroidManifest.xml for this target (optional). Will be - # merged into apks that directly or indirectly depend on this target. - # android_manifest_dep: Target that generates AndroidManifest (if applicable) - # custom_package: java package for generated .java files. - # v14_skip: If true, don't run v14 resource generator on this. Defaults to - # false. (see build/android/gyp/generate_v14_compatible_resources.py) - # shared_resources: If true make a resource package that can be loaded by a - # different application at runtime to access the package's resources. - # r_text_file: (optional) path to pre-generated R.txt to be used when - # generating R.java instead of resource-based aapt-generated one. - # create_srcjar: If false, does not create an R.java file. Needed only for - # prebuilts that have R.txt files that do not match their res/ - # (Play Services). - # - # Example: - # android_resources("foo_resources") { - # deps = [":foo_strings_grd"] - # resource_dirs = ["res"] - # custom_package = "org.chromium.foo" - # } - # - # android_resources("foo_resources_overrides") { - # deps = [":foo_resources"] - # resource_dirs = ["res_overrides"] - # } - template("android_resources") { - forward_variables_from(invoker, [ "testonly" ]) - - _base_path = "$target_gen_dir/$target_name" - - # JUnit tests use resource zip files. These must not be put in gen/ - # directory or they will not be available to tester bots. - _resources_zip_rebased_path = rebase_path(target_gen_dir, root_gen_dir) - _zip_path = "${root_out_dir}/resource_zips/${_resources_zip_rebased_path}/${target_name}.resources.zip" - _r_text_out_path = _base_path + "_R.txt" - _build_config = _base_path + ".build_config" - _build_config_target_name = "${target_name}__build_config" - - if (!defined(invoker.create_srcjar) || invoker.create_srcjar) { - _srcjar_path = _base_path + ".srcjar" - } - - write_build_config(_build_config_target_name) { - type = "android_resources" - build_config = _build_config - resources_zip = _zip_path - - resource_dirs = invoker.resource_dirs - if (defined(invoker.generated_resource_dirs)) { - resource_dirs += invoker.generated_resource_dirs - } - - if (defined(_srcjar_path)) { - forward_variables_from(invoker, - [ - "android_manifest", - "android_manifest_dep", - "custom_package", - ]) - - # No package means resources override their deps. - if (defined(custom_package) || defined(android_manifest)) { - r_text = _r_text_out_path - } else { - assert(defined(invoker.deps), - "Must specify deps when custom_package is omitted.") - } - srcjar = _srcjar_path - } - - if (defined(invoker.deps)) { - possible_config_deps = invoker.deps - } - } - - prepare_resources(target_name) { - forward_variables_from(invoker, - [ - "android_manifest", - "custom_package", - "deps", - "generated_resource_dirs", - "generated_resource_files", - "resource_dirs", - "v14_skip", - ]) - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_build_config_target_name" ] - if (defined(invoker.android_manifest_dep)) { - deps += [ invoker.android_manifest_dep ] - } - - build_config = _build_config - zip_path = _zip_path - r_text_out_path = _r_text_out_path - - if (defined(invoker.r_text_file)) { - r_text_in_path = invoker.r_text_file - } - if (defined(_srcjar_path)) { - srcjar_path = _srcjar_path - } - - # Always generate R.onResourcesLoaded() method, it is required for - # compiling ResourceRewriter, there is no side effect because the - # generated R.class isn't used in final apk. - shared_resources = true - } - } - - # Declare an Android assets target. - # - # Defines a set of files to include as assets in a dependent apk. - # - # To include these assets in an apk, this target should be listed in - # the apk's deps, or in the deps of a library target used by an apk. - # - # Variables - # deps: Specifies the dependencies of this target. Any Android assets - # listed in deps will be included by libraries/apks that depend on this - # target. - # sources: List of files to include as assets. - # renaming_sources: List of files to include as assets and be renamed. - # renaming_destinations: List of asset paths for files in renaming_sources. - # disable_compression: Whether to disable compression for files that are - # known to be compressable (default: false). - # treat_as_locale_paks: Causes base's BuildConfig.java to consider these - # assets to be locale paks. - # - # Example: - # android_assets("content_shell_assets") { - # deps = [ - # ":generates_foo", - # ":other_assets", - # ] - # sources = [ - # "//path/asset1.png", - # "//path/asset2.png", - # "$target_gen_dir/foo.dat", - # ] - # } - # - # android_assets("overriding_content_shell_assets") { - # deps = [ ":content_shell_assets" ] - # # Override foo.dat from content_shell_assets. - # sources = [ "//custom/foo.dat" ] - # renaming_sources = [ "//path/asset2.png" ] - # renaming_destinations = [ "renamed/asset2.png" ] - # } - template("android_assets") { - forward_variables_from(invoker, [ "testonly" ]) - - _build_config = "$target_gen_dir/$target_name.build_config" - _build_config_target_name = "${target_name}__build_config" - - write_build_config(_build_config_target_name) { - type = "android_assets" - build_config = _build_config - - forward_variables_from(invoker, - [ - "disable_compression", - "treat_as_locale_paks", - ]) - - if (defined(invoker.deps)) { - possible_config_deps = invoker.deps - } - - if (defined(invoker.sources)) { - asset_sources = invoker.sources - } - if (defined(invoker.renaming_sources)) { - assert(defined(invoker.renaming_destinations)) - _source_count = 0 - foreach(_, invoker.renaming_sources) { - _source_count += 1 - } - _dest_count = 0 - foreach(_, invoker.renaming_destinations) { - _dest_count += 1 - } - assert( - _source_count == _dest_count, - "android_assets() renaming_sources.length != renaming_destinations.length") - asset_renaming_sources = invoker.renaming_sources - asset_renaming_destinations = invoker.renaming_destinations - } - } - - group(target_name) { - forward_variables_from(invoker, - [ - "deps", - "visibility", - ]) - public_deps = [ - ":$_build_config_target_name", - ] - } - } - - # Declare a group() that supports forwarding java dependency information. - # - # Example - # java_group("conditional_deps") { - # if (enable_foo) { - # deps = [":foo_java"] - # } - # } - template("java_group") { - forward_variables_from(invoker, [ "testonly" ]) - write_build_config("${target_name}__build_config") { - type = "group" - build_config = "$target_gen_dir/${invoker.target_name}.build_config" - supports_android = true - if (defined(invoker.deps)) { - possible_config_deps = invoker.deps - } - } - group(target_name) { - forward_variables_from(invoker, "*") - if (!defined(deps)) { - deps = [] - } - deps += [ ":${target_name}__build_config" ] - } - } - - # Declare a target that generates localized strings.xml from a .grd file. - # - # If this target is included in the deps of an android resources/library/apk, - # the strings.xml will be included with that target. - # - # Variables - # deps: Specifies the dependencies of this target. - # grd_file: Path to the .grd file to generate strings.xml from. - # outputs: Expected grit outputs (see grit rule). - # - # Example - # java_strings_grd("foo_strings_grd") { - # grd_file = "foo_strings.grd" - # } - template("java_strings_grd") { - forward_variables_from(invoker, [ "testonly" ]) - - # JUnit tests use resource zip files. These must not be put in gen/ - # directory or they will not be available to tester bots. - _resources_zip_rebased_path = rebase_path(target_gen_dir, root_gen_dir) - _resources_zip = "${root_out_dir}/resource_zips/${_resources_zip_rebased_path}/${target_name}.resources.zip" - _build_config = "$target_gen_dir/$target_name.build_config" - - write_build_config("${target_name}__build_config") { - type = "android_resources" - build_config = _build_config - resources_zip = _resources_zip - } - - _grit_target_name = "${target_name}__grit" - _grit_output_dir = "$target_gen_dir/${target_name}_grit_output" - - grit(_grit_target_name) { - forward_variables_from(invoker, [ "deps" ]) - grit_flags = [ - "-E", - "ANDROID_JAVA_TAGGED_ONLY=false", - ] - output_dir = _grit_output_dir - resource_ids = "" - source = invoker.grd_file - outputs = invoker.outputs - } - - zip(target_name) { - base_dir = _grit_output_dir - - # This needs to get outputs from grit's internal target, not the final - # source_set. - inputs = get_target_outputs(":${_grit_target_name}_grit") - output = _resources_zip - deps = [ - ":$_grit_target_name", - ] - } - } - - # Declare a target that packages strings.xml generated from a grd file. - # - # If this target is included in the deps of an android resources/library/apk, - # the strings.xml will be included with that target. - # - # Variables - # grit_output_dir: directory containing grit-generated files. - # generated_files: list of android resource files to package. - # - # Example - # java_strings_grd_prebuilt("foo_strings_grd") { - # grit_output_dir = "$root_gen_dir/foo/grit" - # generated_files = [ - # "values/strings.xml" - # ] - # } - template("java_strings_grd_prebuilt") { - forward_variables_from(invoker, [ "testonly" ]) - - # JUnit tests use resource zip files. These must not be put in gen/ - # directory or they will not be available to tester bots. - _resources_zip_rebased_path = rebase_path(target_gen_dir, root_gen_dir) - _resources_zip = "${root_out_dir}/resource_zips/${_resources_zip_rebased_path}/${target_name}.resources.zip" - _build_config = "$target_gen_dir/$target_name.build_config" - _build_config_target_name = "${target_name}__build_config" - - write_build_config(_build_config_target_name) { - type = "android_resources" - build_config = _build_config - resources_zip = _resources_zip - } - - zip(target_name) { - forward_variables_from(invoker, [ "visibility" ]) - - base_dir = invoker.grit_output_dir - inputs = rebase_path(invoker.generated_files, ".", base_dir) - output = _resources_zip - deps = [ - ":$_build_config_target_name", - ] - if (defined(invoker.deps)) { - deps += invoker.deps - } - } - } - - # Declare a Java executable target - # - # Same as java_library, but also creates a wrapper script within - # $root_out_dir/bin. - # - # Supports all variables of java_library(), plus: - # main_class: When specified, a wrapper script is created within - # $root_build_dir/bin to launch the binary with the given class as the - # entrypoint. - # wrapper_script_name: Filename for the wrapper script (default=target_name) - # wrapper_script_args: List of additional arguments for the wrapper script. - # - # Example - # java_binary("foo") { - # java_files = [ "org/chromium/foo/FooMain.java" ] - # deps = [ ":bar_java" ] - # main_class = "org.chromium.foo.FooMain" - # } - # - # java_binary("foo") { - # jar_path = "lib/prebuilt.jar" - # deps = [ ":bar_java" ] - # main_class = "org.chromium.foo.FooMain" - # } - template("java_binary") { - java_library_impl(target_name) { - forward_variables_from(invoker, "*") - type = "java_binary" - } - } - - # Declare a Java Annotation Processor. - # - # Supports all variables of java_library(), plus: - # jar_path: Path to a prebuilt jar. Mutually exclusive with java_files & - # srcjar_deps. - # main_class: The fully-quallified class name of the processor's entry - # point. - # - # Example - # java_annotation_processor("foo_processor") { - # java_files = [ "org/chromium/foo/FooProcessor.java" ] - # deps = [ ":bar_java" ] - # main_class = "org.chromium.foo.FooProcessor" - # } - # - # java_annotation_processor("foo_processor") { - # jar_path = "lib/prebuilt.jar" - # main_class = "org.chromium.foo.FooMain" - # } - # - # java_library("...") { - # annotation_processor_deps = [":foo_processor"] - # } - # - template("java_annotation_processor") { - java_library_impl(target_name) { - forward_variables_from(invoker, "*") - type = "java_annotation_processor" - } - } - - # Declare a Junit executable target - # - # This target creates an executable from java code for running as a junit test - # suite. The executable will be in the output folder's /bin/ directory. - # - # Supports all variables of java_binary(). - # - # Example - # junit_binary("foo") { - # java_files = [ "org/chromium/foo/FooTest.java" ] - # deps = [ ":bar_java" ] - # } - template("junit_binary") { - testonly = true - - _java_binary_target_name = "${target_name}__java_binary" - _test_runner_target_name = "${target_name}__test_runner_script" - _main_class = "org.chromium.testing.local.JunitTestMain" - - _build_config = "$target_gen_dir/$target_name.build_config" - _build_config_target_name = "${target_name}__build_config" - _deps = [ - "//testing/android/junit:junit_test_support", - "//third_party/junit", - "//third_party/mockito:mockito_java", - "//third_party/robolectric:robolectric_all_java", - - # This dep is required if any deps require android (but it doesn't hurt - # to add it regardless) and is used by bytecode rewritten classes. - "//build/android/buildhooks:build_hooks_android_impl_java", - ] - if (defined(invoker.deps)) { - _deps += invoker.deps - } - - _prepare_resources_target = "${target_name}__prepare_resources" - prepare_resources(_prepare_resources_target) { - deps = _deps + [ ":$_build_config_target_name" ] - build_config = _build_config - srcjar_path = "${target_gen_dir}/${target_name}.srcjar" - if (defined(invoker.package_name)) { - custom_package = invoker.package_name - } - if (defined(invoker.android_manifest_path)) { - android_manifest = invoker.android_manifest_path - } else { - android_manifest = "//build/android/AndroidManifest.xml" - } - } - - java_library_impl(_java_binary_target_name) { - forward_variables_from(invoker, "*", [ "deps" ]) - type = "junit_binary" - main_target_name = invoker.target_name - - # Robolectric can handle deps that set !supports_android as well those - # that set requires_android. - bypass_platform_checks = true - deps = _deps - testonly = true - main_class = _main_class - wrapper_script_name = "helper/$main_target_name" - if (!defined(srcjar_deps)) { - srcjar_deps = [] - } - srcjar_deps += [ - ":$_prepare_resources_target", - - # This dep is required for any targets that depend on //base:base_java. - "//base:base_build_config_gen", - ] - } - - test_runner_script(_test_runner_target_name) { - test_name = invoker.target_name - test_suite = invoker.target_name - test_type = "junit" - ignore_all_data_deps = true - forward_variables_from(invoker, - [ - "android_manifest_path", - "package_name", - ]) - } - - group(target_name) { - public_deps = [ - ":$_build_config_target_name", - ":$_java_binary_target_name", - ":$_test_runner_target_name", - ] - } - } - - # Declare a java library target - # - # Variables - # deps: Specifies the dependencies of this target. Java targets in this list - # will be added to the javac classpath. - # annotation_processor_deps: List of java_annotation_processor targets to - # use when compiling. - # - # jar_path: Path to a prebuilt jar. Mutually exclusive with java_files & - # srcjar_deps. - # java_files: List of .java files included in this library. - # srcjar_deps: List of srcjar dependencies. The .java files in the srcjars - # will be added to java_files and be included in this library. - # - # input_jars_paths: A list of paths to the jars that should be included - # in the compile-time classpath. These are in addition to library .jars - # that appear in deps. - # classpath_deps: Deps that should added to the classpath for this target, - # but not linked into the apk (use this for annotation processors). - # - # chromium_code: If true, extra analysis warning/errors will be enabled. - # enable_errorprone: If true, enables the errorprone compiler. - # enable_incremental_javac_override: Overrides the global - # enable_incremental_javac. - # - # jar_excluded_patterns: List of patterns of .class files to exclude. - # jar_included_patterns: List of patterns of .class files to include. - # When omitted, all classes not matched by jar_excluded_patterns are - # included. When specified, all non-matching .class files are stripped. - # - # output_name: File name for the output .jar (not including extension). - # Defaults to the input .jar file name. - # - # proguard_configs: List of proguard configs to use in final apk step for - # any apk that depends on this library. - # - # supports_android: If true, Android targets (android_library, android_apk) - # may depend on this target. Note: if true, this target must only use the - # subset of Java available on Android. - # bypass_platform_checks: Disables checks about cross-platform (Java/Android) - # dependencies for this target. This will allow depending on an - # android_library target, for example. - # - # additional_jar_files: Use to package additional files (Java resources) - # into the output jar. Pass a list of length-2 lists with format: - # [ [ path_to_file, path_to_put_in_jar ] ] - # - # javac_args: Additional arguments to pass to javac. - # - # data_deps, testonly - # - # Example - # java_library("foo_java") { - # java_files = [ - # "org/chromium/foo/Foo.java", - # "org/chromium/foo/FooInterface.java", - # "org/chromium/foo/FooService.java", - # ] - # deps = [ - # ":bar_java" - # ] - # srcjar_deps = [ - # ":foo_generated_enum" - # ] - # jar_excluded_patterns = [ - # "*/FooService.class", "org/chromium/FooService\$*.class" - # ] - # } - template("java_library") { - java_library_impl(target_name) { - forward_variables_from(invoker, "*") - type = "java_library" - } - } - - # Declare a java library target for a prebuilt jar - # - # Supports all variables of java_library(). - # - # Example - # java_prebuilt("foo_java") { - # jar_path = "foo.jar" - # deps = [ - # ":foo_resources", - # ":bar_java" - # ] - # } - template("java_prebuilt") { - java_library_impl(target_name) { - forward_variables_from(invoker, "*") - type = "java_library" - } - } - - # Combines all dependent .jar files into a single .jar file. - # - # Variables: - # output: Path to the output jar. - # dex_path: Path to dex()'ed output (optional). - # override_build_config: Use a pre-existing .build_config. Must be of type - # "apk". - # use_interface_jars: Use all dependent interface .jars rather than - # implementation .jars. - # use_unprocessed_jars: Use unprocessed / undesugared .jars. - # direct_deps_only: Do not recurse on deps. - # proguard_enabled: Whether to run ProGuard on resulting jar. - # proguard_configs: List of proguard configs. - # proguard_jar_path: The path to proguard.jar you wish to use. If undefined, - # the proguard used will be the checked in one in //third_party/proguard. - # alternative_android_sdk_jar: System jar to use when proguard is enabled. - # - # Example - # dist_jar("lib_fatjar") { - # deps = [ ":my_java_lib" ] - # output = "$root_build_dir/MyLibrary.jar" - # } - # dist_jar("sideloaded_dex") { - # deps = [ ":my_java_lib" ] - # output = "$root_build_dir/MyLibrary.jar" - # dex_path = "$root_build_dir/MyLibrary.dex" - # } - template("dist_jar") { - forward_variables_from(invoker, [ "testonly" ]) - _supports_android = - !defined(invoker.supports_android) || invoker.supports_android - _requires_android = - defined(invoker.requires_android) && invoker.requires_android - _proguard_enabled = - defined(invoker.proguard_enabled) && invoker.proguard_enabled - _use_interface_jars = - defined(invoker.use_interface_jars) && invoker.use_interface_jars - _use_unprocessed_jars = - defined(invoker.use_unprocessed_jars) && invoker.use_unprocessed_jars - _direct_deps_only = - defined(invoker.direct_deps_only) && invoker.direct_deps_only - assert(!(_proguard_enabled && _use_interface_jars), - "Cannot set both proguard_enabled and use_interface_jars") - assert(!(_proguard_enabled && _direct_deps_only), - "Cannot set both proguard_enabled and direct_deps_only") - assert(!(_use_unprocessed_jars && _use_interface_jars), - "Cannot set both use_interface_jars and use_unprocessed_jars") - - _jar_target_name = target_name - if (defined(invoker.dex_path)) { - if (_proguard_enabled) { - _jar_target_name = "${target_name}__proguard" - } else { - _jar_target_name = "${target_name}__dist_jar" - } - } - - _deps = [] - if (defined(invoker.deps)) { - _deps = invoker.deps - } - _enable_build_hooks = - _supports_android && - (!defined(invoker.no_build_hooks) || !invoker.no_build_hooks) - if (_enable_build_hooks && _requires_android) { - _deps += [ "//build/android/buildhooks:build_hooks_android_impl_java" ] - } - - if (defined(invoker.override_build_config)) { - _build_config = invoker.override_build_config - } else { - _build_config = "$target_gen_dir/$target_name.build_config" - _build_config_target_name = "${target_name}__build_config" - - write_build_config(_build_config_target_name) { - type = "dist_jar" - forward_variables_from(invoker, - [ - "proguard_enabled", - "proguard_configs", - ]) - supports_android = _supports_android - requires_android = _requires_android - possible_config_deps = _deps - build_config = _build_config - } - - _deps += [ ":$_build_config_target_name" ] - } - - _rebased_build_config = rebase_path(_build_config, root_build_dir) - if (_proguard_enabled) { - proguard(_jar_target_name) { - forward_variables_from(invoker, - [ - "alternative_android_sdk_jar", - "data", - "proguard_jar_path", - ]) - deps = _deps - inputs = [ - _build_config, - ] - - # Although these will be listed as deps in the depfile, they must also - # appear here so that "gn analyze" knows about them. - # https://crbug.com/827197 - if (defined(invoker.proguard_configs)) { - inputs += invoker.proguard_configs - } - - output_jar_path = invoker.output - args = [ - "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)", - "--input-paths=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)", - "--classpath=@FileArg($_rebased_build_config:deps_info:proguard_all_extra_jars)", - ] - if (defined(invoker.proguard_config_exclusions)) { - _rebased_proguard_config_exclusions = - rebase_path(invoker.proguard_config_exclusions, root_build_dir) - args += [ - "--proguard-config-exclusions=$_rebased_proguard_config_exclusions", - ] - } - } - } else { - action(_jar_target_name) { - forward_variables_from(invoker, [ "data" ]) - script = "//build/android/gyp/create_dist_jar.py" - depfile = "$target_gen_dir/$target_name.d" - deps = _deps - - inputs = [ - _build_config, - ] - - outputs = [ - invoker.output, - ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--output", - rebase_path(invoker.output, root_build_dir), - ] - - if (_direct_deps_only) { - if (_use_interface_jars) { - args += [ "--jars=@FileArg($_rebased_build_config:javac:interface_classpath)" ] - } else if (_use_unprocessed_jars) { - args += - [ "--jars=@FileArg($_rebased_build_config:javac:classpath)" ] - } else { - assert( - false, - "direct_deps_only does not work without use_interface_jars or use_unprocessed_jars") - } - } else { - if (_use_interface_jars) { - args += [ "--jars=@FileArg($_rebased_build_config:dist_jar:all_interface_jars)" ] - } else if (_use_unprocessed_jars) { - args += [ "--jars=@FileArg($_rebased_build_config:deps_info:javac_full_classpath)" ] - } else { - args += [ "--jars=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)" ] - } - } - } - } - if (defined(invoker.dex_path)) { - dex(target_name) { - deps = [ - ":$_jar_target_name", - ] - input_jars = [ invoker.output ] - output = invoker.dex_path - } - } - } - - # Creates an Android .aar library. - # - # Currently supports: - # * AndroidManifest.xml - # * classes.jar - # * jni/ - # * res/ - # * R.txt - # * proguard.txt - # Does not yet support: - # * public.txt - # * annotations.zip - # * assets/ - # See: https://developer.android.com/studio/projects/android-library.html#aar-contents - # - # Variables: - # output: Path to the output .aar. - # proguard_configs: List of proguard configs (optional). - # android_manifest: Path to AndroidManifest.xml (optional). - # native_libraries: list of native libraries (optional). - # direct_deps_only: Do not recurse on deps. (optional, defaults false). - # - # Example - # dist_aar("my_aar") { - # deps = [ ":my_java_lib" ] - # output = "$root_build_dir/MyLibrary.aar" - # } - template("dist_aar") { - forward_variables_from(invoker, [ "testonly" ]) - - _deps = [] - if (defined(invoker.deps)) { - _deps = invoker.deps - } - - _direct_deps_only = - defined(invoker.direct_deps_only) && invoker.direct_deps_only - - _build_config = "$target_gen_dir/$target_name.build_config" - _build_config_target_name = "${target_name}__build_config" - - write_build_config(_build_config_target_name) { - type = "dist_aar" - forward_variables_from(invoker, [ "proguard_configs" ]) - possible_config_deps = _deps - supports_android = true - requires_android = true - build_config = _build_config - } - - _deps += [ ":$_build_config_target_name" ] - - _rebased_build_config = rebase_path(_build_config, root_build_dir) - - action(target_name) { - forward_variables_from(invoker, [ "data" ]) - depfile = "$target_gen_dir/$target_name.d" - deps = _deps - script = "//build/android/gyp/dist_aar.py" - - inputs = [ - _build_config, - ] - - # Although these will be listed as deps in the depfile, they must also - # appear here so that "gn analyze" knows about them. - # https://crbug.com/827197 - if (defined(invoker.proguard_configs)) { - inputs += invoker.proguard_configs - } - - outputs = [ - invoker.output, - ] - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--output", - rebase_path(invoker.output, root_build_dir), - "--dependencies-res-zips=@FileArg($_rebased_build_config:resources:dependency_zips)", - "--r-text-files=@FileArg($_rebased_build_config:resources:extra_r_text_files)", - "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)", - ] - if (_direct_deps_only) { - args += [ "--jars=@FileArg($_rebased_build_config:javac:classpath)" ] - } else { - args += [ "--jars=@FileArg($_rebased_build_config:deps_info:javac_full_classpath)" ] - } - if (defined(invoker.android_manifest)) { - args += [ - "--android-manifest", - rebase_path(invoker.android_manifest, root_build_dir), - ] - } - if (defined(invoker.native_libraries) && invoker.native_libraries != []) { - inputs += invoker.native_libraries - _rebased_native_libraries = - rebase_path(invoker.native_libraries, root_build_dir) - - args += [ - "--native-libraries=$_rebased_native_libraries", - "--abi=$android_app_abi", - ] - } - } - } - - # Declare an Android library target - # - # This target creates an Android library containing java code and Android - # resources. - # - # Supports all variables of java_library(), plus: - # android_manifest_for_lint: Path to AndroidManifest.xml (optional). This - # manifest will be used by Android lint, but will not be merged into apks. - # To have a manifest merged, add it to an android_resources() target. - # deps: In addition to defining java deps, this can also include - # android_assets() and android_resources() targets. - # dex_path: If set, the resulting .dex.jar file will be placed under this - # path. - # alternative_android_sdk_ijar: if set, the given android_sdk_ijar file - # replaces the default android_sdk_ijar. - # alternative_android_sdk_ijar_dep: the target that generates - # alternative_android_sdk_ijar, must be set if alternative_android_sdk_ijar - # is used. - # alternative_android_sdk_jar: actual jar corresponding to - # alternative_android_sdk_ijar, must be set if alternative_android_sdk_ijar - # is used. - # - # Example - # android_library("foo_java") { - # java_files = [ - # "android/org/chromium/foo/Foo.java", - # "android/org/chromium/foo/FooInterface.java", - # "android/org/chromium/foo/FooService.java", - # ] - # deps = [ - # ":bar_java" - # ] - # srcjar_deps = [ - # ":foo_generated_enum" - # ] - # jar_excluded_patterns = [ - # "*/FooService.class", "org/chromium/FooService\$*.class" - # ] - # } - template("android_library") { - java_library(target_name) { - forward_variables_from(invoker, "*") - - if (defined(alternative_android_sdk_ijar)) { - assert(defined(alternative_android_sdk_ijar_dep)) - assert(defined(alternative_android_sdk_jar)) - } - - supports_android = true - requires_android = true - - if (!defined(jar_excluded_patterns)) { - jar_excluded_patterns = [] - } - jar_excluded_patterns += [ - "*/R.class", - "*/R\$*.class", - "*/Manifest.class", - "*/Manifest\$*.class", - ] - } - } - - # Declare an Android library target for a prebuilt jar - # - # This target creates an Android library containing java code and Android - # resources. - # - # Supports all variables of android_library(). - # - # Example - # android_java_prebuilt("foo_java") { - # jar_path = "foo.jar" - # deps = [ - # ":foo_resources", - # ":bar_java" - # ] - # } - template("android_java_prebuilt") { - android_library(target_name) { - forward_variables_from(invoker, "*") - } - } - - # Creates org/chromium/base/BuildConfig.java - # This doesn't really belong in //build since it genates a file for //base. - # However, we don't currently have a better way to include this file in all - # apks that depend on //base:base_java. - # - # Variables: - # use_final_fields: True to use final fields. All other variables are - # ignored when this is false. - # build_config: Path to build_config used for locale list - # enable_multidex: Value for ENABLE_MULTIDEX. - # firebase_app_id: Value for FIREBASE_APP_ID. - # - template("generate_build_config_srcjar") { - java_cpp_template(target_name) { - package_path = "org/chromium/base" - sources = [ - "//base/android/java/templates/BuildConfig.template", - ] - defines = [] - - # TODO(agrieve): These two are not target-specific and should be moved - # to BuildHooks.java. - # Set these even when !use_final_fields so that they have correct default - # values withnin junit_binary(). - if (is_java_debug || dcheck_always_on) { - defines += [ "_DCHECK_IS_ON" ] - } - if (use_cfi_diag || is_ubsan || is_ubsan_security || is_ubsan_vptr) { - defines += [ "_IS_UBSAN" ] - } - - if (invoker.use_final_fields) { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - defines += [ "USE_FINAL" ] - if (invoker.enable_multidex) { - defines += [ "ENABLE_MULTIDEX" ] - } - inputs = [ - invoker.build_config, - ] - _rebased_build_config = rebase_path(invoker.build_config) - defines += [ - "COMPRESSED_LOCALE_LIST=" + - "@FileArg($_rebased_build_config:compressed_locales_java_list)", - "UNCOMPRESSED_LOCALE_LIST=" + - "@FileArg($_rebased_build_config:uncompressed_locales_java_list)", - ] - if (defined(invoker.firebase_app_id)) { - defines += [ "_FIREBASE_APP_ID=${invoker.firebase_app_id}" ] - } - if (defined(invoker.resources_version_variable)) { - defines += [ - "_RESOURCES_VERSION_VARIABLE=${invoker.resources_version_variable}", - ] - } - } - } - } - - # Declare an Android apk target - # - # This target creates an Android APK containing java code, resources, assets, - # and (possibly) native libraries. - # - # Supports all variables of android_library(), plus: - # android_manifest: Path to AndroidManifest.xml. - # android_manifest_dep: Target that generates AndroidManifest (if applicable) - # png_to_webp: If true, pngs (with the exception of 9-patch) are - # converted to webp during resource packaging. - # dist_ijar_path: Path to create "${target_name}_dist_ijar" target - # (used by instrumentation_test_apk). - # apk_name: Name for final apk. - # final_apk_path: Path to final built apk. Default is - # $root_out_dir/apks/$apk_name.apk. Setting this will override apk_name. - # loadable_modules: List of paths to native libraries to include. Different - # from |shared_libraries| in that: - # * dependencies of this .so are not automatically included - # * ".cr.so" is never added - # * they are not side-loaded for _incremental targets. - # * load_library_from_apk, use_chromium_linker, - # and enable_relocation_packing do not apply - # Use this instead of shared_libraries when you are going to load the library - # conditionally, and only when shared_libraries doesn't work for you. - # shared_libraries: List shared_library targets to bundle. If these - # libraries depend on other shared_library targets, those dependencies will - # also be included in the apk (e.g. for is_component_build). - # secondary_abi_shared_libraries: secondary abi shared_library targets to - # bundle. If these libraries depend on other shared_library targets, those - # dependencies will also be included in the apk (e.g. for is_component_build). - # native_lib_placeholders: List of placeholder filenames to add to the apk - # (optional). - # secondary_native_lib_placeholders: List of placeholder filenames to add to - # the apk for the secondary ABI (optional). - # apk_under_test: For an instrumentation test apk, this is the target of the - # tested apk. - # write_asset_list: Adds an extra file to the assets, which contains a list of - # all other asset files. - # generate_buildconfig_java: If defined and false, skip generating the - # BuildConfig java class describing the build configuration. The default - # is true for non-test APKs. - # firebase_app_id: The value for BuildConfig.FIREBASE_APP_ID (optional). - # Identifier is sent with crash reports to enable Java stack deobfuscation. - # requires_sdk_api_level_23: If defined and true, the apk is intended for - # installation only on Android M or later. In these releases the system - # linker does relocation unpacking, so we can enable it unconditionally. - # secondary_native_libs (deprecated): The path of native libraries for secondary - # app abi. - # proguard_jar_path: The path to proguard.jar you wish to use. If undefined, - # the proguard used will be the checked in one in //third_party/proguard. - # never_incremental: If true, |incremental_apk_by_default| will be ignored. - # aapt_locale_whitelist: If set, all locales not in this list will be - # stripped from resources.arsc. - # exclude_xxxhdpi: Causes all drawable-xxxhdpi images to be excluded - # (mipmaps are still included). - # xxxhdpi_whitelist: A list of globs used when exclude_xxxhdpi=true. Files - # that match this whitelist will still be included. - # shared_resources: True if this is a runtime shared library APK, like - # the system_webview_apk target. Ensures that its resources can be - # used by the loading application process. - # app_as_shared_lib: True if this is a regular application apk that can - # also serve as a runtime shared library, like the monochrome_public_apk - # target. Ensures that the resources are usable both by the APK running - # as an application, or by another process that loads it at runtime. - # shared_resources_whitelist_target: Optional name of a target specifying - # an input R.txt file that lists the resources that can be exported - # by the APK when shared_resources or app_as_shared_lib is defined. - # - # Example - # android_apk("foo_apk") { - # android_manifest = "AndroidManifest.xml" - # java_files = [ - # "android/org/chromium/foo/FooApplication.java", - # "android/org/chromium/foo/FooActivity.java", - # ] - # deps = [ - # ":foo_support_java" - # ":foo_resources" - # ] - # srcjar_deps = [ - # ":foo_generated_enum" - # ] - # shared_libraries = [ - # ":my_shared_lib", - # ] - # } - template("android_apk") { - forward_variables_from(invoker, [ "testonly" ]) - - assert(defined(invoker.final_apk_path) || defined(invoker.apk_name)) - assert(defined(invoker.android_manifest)) - _gen_dir = "$target_gen_dir/$target_name" - _base_path = "$_gen_dir/$target_name" - _build_config = "$target_gen_dir/$target_name.build_config" - _build_config_target = "${target_name}__build_config" - - # JUnit tests use resource zip files. These must not be put in gen/ - # directory or they will not be available to tester bots. - _jar_path = "$_base_path.jar" - _lib_dex_path = "$_base_path.dex.jar" - _rebased_lib_dex_path = rebase_path(_lib_dex_path, root_build_dir) - _template_name = target_name - - _enable_multidex = - defined(invoker.enable_multidex) && invoker.enable_multidex - if (_enable_multidex) { - _final_dex_path = "$_gen_dir/classes.dex.zip" - } else { - _final_dex_path = "$_gen_dir/classes.dex" - } - _final_dex_target_name = "${_template_name}__final_dex" - - if (defined(invoker.final_apk_path)) { - _final_apk_path = invoker.final_apk_path - } else { - _final_apk_path = "$root_build_dir/apks/${invoker.apk_name}.apk" - } - _final_apk_path_no_ext_list = - process_file_template([ _final_apk_path ], - "{{source_dir}}/{{source_name_part}}") - _final_apk_path_no_ext = _final_apk_path_no_ext_list[0] - assert(_final_apk_path_no_ext != "") # Mark as used. - - # resource_sizes.py needs to be able to find the unpacked resources.arsc file based on apk name. - _packaged_resources_path = - "$root_gen_dir/arsc/" + - rebase_path(_final_apk_path_no_ext, root_build_dir) + ".ap_" - - _incremental_install_json_path = - "$target_gen_dir/$target_name.incremental.json" - - _version_code = android_default_version_code - if (defined(invoker.version_code)) { - _version_code = invoker.version_code - } - - _version_name = android_default_version_name - if (defined(invoker.version_name)) { - _version_name = invoker.version_name - } - _keystore_path = android_keystore_path - _keystore_name = android_keystore_name - _keystore_password = android_keystore_password - - if (defined(invoker.keystore_path)) { - _keystore_path = invoker.keystore_path - _keystore_name = invoker.keystore_name - _keystore_password = invoker.keystore_password - } - - _deps = [] - if (defined(invoker.deps)) { - _deps = invoker.deps - set_sources_assignment_filter([ "*manifest*" ]) - sources = _deps - set_sources_assignment_filter([]) - if (sources != _deps) { - _bad_deps = _deps - sources - assert( - false, - "Possible manifest-generating dep found in deps. Use android_manifest_dep for this instead. Found: $_bad_deps") - } - sources = [] - } - - _srcjar_deps = [] - if (defined(invoker.srcjar_deps)) { - _srcjar_deps = invoker.srcjar_deps - } - - _use_build_hooks = - !defined(invoker.no_build_hooks) || !invoker.no_build_hooks - if (defined(invoker.build_hooks_android_impl_deps)) { - assert(_use_build_hooks, - "Cannot set no_build_hooks and build_hooks_android_impl_deps at " + - "the same time") - _deps += invoker.build_hooks_android_impl_deps - } else if (_use_build_hooks) { - _deps += [ "//build/android/buildhooks:build_hooks_android_impl_java" ] - } - - _android_root_manifest_deps = [] - if (defined(invoker.android_manifest_dep)) { - _android_root_manifest_deps = [ invoker.android_manifest_dep ] - } - _android_root_manifest = invoker.android_manifest - - _use_chromium_linker = - defined(invoker.use_chromium_linker) && invoker.use_chromium_linker - _pack_relocations = - defined(invoker.pack_relocations) && invoker.pack_relocations - - _load_library_from_apk = - defined(invoker.load_library_from_apk) && invoker.load_library_from_apk - _requires_sdk_api_level_23 = defined(invoker.requires_sdk_api_level_23) && - invoker.requires_sdk_api_level_23 - - assert(_use_chromium_linker || true) # Mark as used. - assert(_requires_sdk_api_level_23 || true) - assert(!_pack_relocations || !use_lld, - "Use //build/config/android:lld_pack_relocations to pack " + - "relocations when use_lld=true.") - assert(!_pack_relocations || _use_chromium_linker || - _requires_sdk_api_level_23, - "pack_relocations requires either use_chromium_linker " + - "or requires_sdk_api_level_23") - assert(!_load_library_from_apk || _use_chromium_linker || - _requires_sdk_api_level_23, - "load_library_from_apk requires use_chromium_linker " + - "or requires_sdk_api_level_23") - - # The dependency that makes the chromium linker, if any is needed. - _native_libs_deps = [] - _shared_libraries_is_valid = - defined(invoker.shared_libraries) && invoker.shared_libraries != [] - _secondary_abi_native_libs_deps = [] - assert(_secondary_abi_native_libs_deps == []) # mark as used. - _secondary_abi_shared_libraries_is_valid = - defined(invoker.secondary_abi_shared_libraries) && - invoker.secondary_abi_shared_libraries != [] - - if (is_component_build || is_asan) { - if (_shared_libraries_is_valid) { - _native_libs_deps += [ "//build/android:cpplib_stripped" ] - } - if (_secondary_abi_shared_libraries_is_valid) { - _secondary_abi_native_libs_deps += [ - "//build/android:cpplib_stripped($android_secondary_abi_toolchain)", - ] - } - } - - if (_shared_libraries_is_valid) { - _native_libs_deps += invoker.shared_libraries - - # To determine the filenames of all dependent shared libraries, write the - # runtime deps of |shared_libraries| to a file during "gn gen". - # write_build_config.py will then grep this file for *.so to obtain the - # complete list. - _runtime_deps_file = - "$target_gen_dir/${_template_name}.native.runtimedeps" - group("${_template_name}__runtime_deps") { - deps = _native_libs_deps - write_runtime_deps = _runtime_deps_file - } - - _native_lib_version_rule = "" - if (defined(invoker.native_lib_version_rule)) { - _native_lib_version_rule = invoker.native_lib_version_rule - } - _native_lib_version_arg = "\"\"" - if (defined(invoker.native_lib_version_arg)) { - _native_lib_version_arg = invoker.native_lib_version_arg - } - } else { - # Must exist for instrumentation_test_apk() to depend on. - group("${_template_name}__runtime_deps") { - } - } - - if (_secondary_abi_shared_libraries_is_valid) { - _secondary_abi_native_libs_deps += invoker.secondary_abi_shared_libraries - - # To determine the filenames of all dependent shared libraries, write the - # runtime deps of |shared_libraries| to a file during "gn gen". - # write_build_config.py will then grep this file for *.so to obtain the - # complete list. - _secondary_abi_runtime_deps_file = - "$target_gen_dir/${_template_name}.secondary.abi.native.runtimedeps" - group("${_template_name}__secondary_abi__runtime_deps") { - deps = _secondary_abi_native_libs_deps - write_runtime_deps = _secondary_abi_runtime_deps_file - } - } else { - # Must exist for instrumentation_test_apk() to depend on. - group("${_template_name}__secondary_abi_runtime_deps") { - } - } - - _rebased_build_config = rebase_path(_build_config, root_build_dir) - - _generate_buildconfig_java = !defined(invoker.apk_under_test) - if (defined(invoker.generate_buildconfig_java)) { - _generate_buildconfig_java = invoker.generate_buildconfig_java - } - - _proguard_enabled = - defined(invoker.proguard_enabled) && invoker.proguard_enabled - if (_proguard_enabled) { - _proguard_output_jar_path = "$_base_path.proguard.jar" - } - - _incremental_allowed = - !(defined(invoker.never_incremental) && invoker.never_incremental) - - _android_manifest = - "$target_gen_dir/${_template_name}_manifest/AndroidManifest.xml" - _merge_manifest_target = "${_template_name}__merge_manifests" - merge_manifests(_merge_manifest_target) { - input_manifest = _android_root_manifest - output_manifest = _android_manifest - build_config = _build_config - deps = _android_root_manifest_deps + [ ":$_build_config_target" ] - } - - _final_deps = [] - - if (_enable_multidex) { - _generated_proguard_main_dex_config = - "$_base_path.resources.main-dex-proguard.txt" - } - _generated_proguard_config = "$_base_path.resources.proguard.txt" - - if (_generate_buildconfig_java && - defined(invoker.product_version_resources_dep)) { - _deps += [ invoker.product_version_resources_dep ] - } - - _compile_resources_target = "${_template_name}__compile_resources" - - if (android_enable_app_bundles) { - # Path to the intermediate proto-format resources zip file. - _packaged_proto_resources_path = - "$root_gen_dir/proto_resources/" + - rebase_path(_final_apk_path_no_ext, root_build_dir) + ".proto.ap_" - - # Define another target used to generate an archive containing the - # resources compiled in protocol buffer format. This is not used by - # the APK itself, but by android_bundle_module() targets that depend - # on it. - _compile_proto_resources_target = - "${_template_name}__compile_proto_resources" - } - - compile_apk_resources(_compile_resources_target) { - forward_variables_from(invoker, - [ - "alternative_android_sdk_jar", - "app_as_shared_lib", - "shared_resources", - "support_zh_hk", - "aapt_locale_whitelist", - "exclude_xxxhdpi", - "png_to_webp", - "xxxhdpi_whitelist", - "no_xml_namespaces", - ]) - android_manifest = _android_manifest - version_code = _version_code - version_name = _version_name - - # Subtle: required to avoid GN build errors. "testonly" cannot be added - # to the forward_variables_from() above because it was already forwarded - # at the start of android_apk(). And if the assignment below is not - # performed, GN will complain that some test-only targets depend - # on non-test-only ones. - testonly = defined(testonly) && testonly - - if (defined(invoker.post_process_package_resources_script)) { - post_process_script = invoker.post_process_package_resources_script - } - srcjar_path = "${target_gen_dir}/${target_name}.srcjar" - r_text_out_path = "${target_gen_dir}/${target_name}_R.txt" - proguard_file = _generated_proguard_config - if (_enable_multidex) { - proguard_file_main_dex = _generated_proguard_main_dex_config - } - output = _packaged_resources_path - - build_config = _build_config - deps = _deps + [ - ":$_merge_manifest_target", - ":$_build_config_target", - ] - if (defined(invoker.shared_resources_whitelist_target)) { - _whitelist_gen_dir = - get_label_info(invoker.shared_resources_whitelist_target, - "target_gen_dir") - _whitelist_target_name = - get_label_info(invoker.shared_resources_whitelist_target, "name") - shared_resources_whitelist = - "${_whitelist_gen_dir}/${_whitelist_target_name}" + - "__compile_resources_R.txt" - deps += [ - "${invoker.shared_resources_whitelist_target}__compile_resources", - ] - } - - if (android_enable_app_bundles) { - proto_output = _packaged_proto_resources_path - proto_resources_target = _compile_proto_resources_target - } - } - _srcjar_deps += [ ":$_compile_resources_target" ] - - if (_native_libs_deps != []) { - _enable_chromium_linker_tests = false - if (defined(invoker.enable_chromium_linker_tests)) { - _enable_chromium_linker_tests = invoker.enable_chromium_linker_tests - } - _ordered_libraries_json = - "$target_gen_dir/$target_name.ordered_libararies.json" - _rebased_ordered_libraries_json = - rebase_path(_ordered_libraries_json, root_build_dir) - _ordered_libraries_target = "${_template_name}__write_ordered_libraries" - - # TODO(agrieve): Make GN write runtime deps in dependency order so as to - # not need this manual sorting step. - action(_ordered_libraries_target) { - script = "//build/android/gyp/write_ordered_libraries.py" - deps = [ - ":$_build_config_target", - ":${_template_name}__runtime_deps", - ] - inputs = [ - _runtime_deps_file, - ] - outputs = [ - _ordered_libraries_json, - ] - _rebased_android_readelf = rebase_path(android_readelf, root_build_dir) - args = [ - "--readelf=$_rebased_android_readelf", - "--output=$_rebased_ordered_libraries_json", - "--runtime-deps=" + rebase_path(_runtime_deps_file, root_build_dir), - ] - if (defined(invoker.dont_load_shared_libraries)) { - args += [ "--exclude-shared-libraries=" + - invoker.dont_load_shared_libraries ] - } - } - - java_cpp_template("${_template_name}__native_libraries_java") { - package_path = "org/chromium/base/library_loader" - sources = [ - "//base/android/java/templates/NativeLibraries.template", - ] - inputs = [ - _ordered_libraries_json, - ] - deps = [ - ":${_ordered_libraries_target}", - ] - if (_native_lib_version_rule != "") { - deps += [ _native_lib_version_rule ] - } - - defines = [ - "NATIVE_LIBRARIES_LIST=" + - "@FileArg($_rebased_ordered_libraries_json:java_libraries_list)", - "NATIVE_LIBRARIES_VERSION_NUMBER=$_native_lib_version_arg", - ] - if (current_cpu == "arm" || current_cpu == "arm64") { - defines += [ "ANDROID_APP_CPU_FAMILY_ARM" ] - } else if (current_cpu == "x86" || current_cpu == "x64") { - defines += [ "ANDROID_APP_CPU_FAMILY_X86" ] - } else if (current_cpu == "mipsel" || current_cpu == "mips64el") { - defines += [ "ANDROID_APP_CPU_FAMILY_MIPS" ] - } else { - assert(false, "Unsupported CPU family") - } - if (_use_chromium_linker) { - defines += [ "ENABLE_CHROMIUM_LINKER" ] - } - if (_load_library_from_apk) { - defines += [ "ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE" ] - } - if (_enable_chromium_linker_tests) { - defines += [ "ENABLE_CHROMIUM_LINKER_TESTS" ] - } - } - _srcjar_deps += [ ":${_template_name}__native_libraries_java" ] - } - - if (_generate_buildconfig_java) { - generate_build_config_srcjar("${_template_name}__build_config_java") { - forward_variables_from(invoker, [ "firebase_app_id" ]) - use_final_fields = true - build_config = _build_config - enable_multidex = _enable_multidex - if (defined(invoker.product_version_resources_dep)) { - resources_version_variable = - "org.chromium.base.R.string.product_version" - } - deps = [ - ":$_build_config_target", - ] - } - _srcjar_deps += [ ":${_template_name}__build_config_java" ] - } - - _java_target = "${_template_name}__java" - java_library_impl(_java_target) { - forward_variables_from(invoker, - [ - "android_manifest", - "android_manifest_dep", - "apk_under_test", - "chromium_code", - "classpath_deps", - "emma_never_instrument", - "java_files", - "no_build_hooks", - "javac_args", - ]) - type = "android_apk" - main_target_name = _template_name - supports_android = true - requires_android = true - deps = _deps - - srcjar_deps = _srcjar_deps - final_jar_path = _jar_path - dex_path = _lib_dex_path - apk_path = _final_apk_path - - if (android_enable_app_bundles) { - proto_resources_path = _packaged_proto_resources_path - } - - incremental_allowed = _incremental_allowed - incremental_apk_path = "${_final_apk_path_no_ext}_incremental.apk" - incremental_install_json_path = _incremental_install_json_path - - proguard_enabled = _proguard_enabled - if (_proguard_enabled) { - proguard_configs = [ _generated_proguard_config ] - if (defined(invoker.proguard_configs)) { - proguard_configs += invoker.proguard_configs - } - if (_enable_multidex) { - proguard_configs += [ "//build/android/multidex.flags" ] - } - } - non_native_packed_relocations = _pack_relocations - - # Don't depend on the runtime_deps target in order to avoid having to - # build the native libraries just to create the .build_config file. - # The dep is unnecessary since the runtime_deps file is created by gn gen - # and the runtime_deps file is added to write_build_config.py's depfile. - if (_native_libs_deps != []) { - shared_libraries_runtime_deps_file = _runtime_deps_file - } - if (_secondary_abi_native_libs_deps != []) { - secondary_abi_shared_libraries_runtime_deps_file = - _secondary_abi_runtime_deps_file - } - } - - # TODO(cjhopman): This is only ever needed to calculate the list of tests to - # run. See build/android/pylib/instrumentation/test_jar.py. We should be - # able to just do that calculation at build time instead. - if (defined(invoker.dist_ijar_path)) { - _dist_ijar_path = invoker.dist_ijar_path - dist_jar("${_template_name}_dist_ijar") { - override_build_config = _build_config - output = _dist_ijar_path - data = [ - _dist_ijar_path, - ] - use_interface_jars = true - deps = [ - ":$_build_config_target", - ":$_java_target", - ] - } - } - - if (_proguard_enabled) { - _proguard_target = "${_template_name}__proguard" - proguard(_proguard_target) { - forward_variables_from(invoker, - [ - "alternative_android_sdk_jar", - "proguard_jar_path", - ]) - deps = _deps + [ - ":$_build_config_target", - ":$_compile_resources_target", - ":$_java_target", - ] - inputs = [ - _build_config, - _jar_path, - ] - - output_jar_path = _proguard_output_jar_path - args = [ - "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)", - "--input-paths=@FileArg($_rebased_build_config:deps_info:java_runtime_classpath)", - "--classpath=@FileArg($_rebased_build_config:deps_info:proguard_all_extra_jars)", - ] - if (defined(invoker.proguard_config_exclusions)) { - _rebased_proguard_config_exclusions = - rebase_path(invoker.proguard_config_exclusions, root_build_dir) - args += [ - "--proguard-config-exclusions=$_rebased_proguard_config_exclusions", - ] - } - } - _dex_sources = [ _proguard_output_jar_path ] - _dex_deps = [ ":$_proguard_target" ] - - _copy_proguard_mapping_target = "${_template_name}__copy_proguard_mapping" - copy(_copy_proguard_mapping_target) { - sources = [ - "$_proguard_output_jar_path.mapping", - ] - outputs = [ - "$_final_apk_path.mapping", - ] - deps = [ - ":$_proguard_target", - ] - } - } else { - if (_enable_multidex) { - # .jar already included in java_runtime_classpath. - _dex_sources = [] - } else { - _dex_sources = [ _lib_dex_path ] - } - _dex_deps = [ ":$_java_target" ] - } - - dex("$_final_dex_target_name") { - deps = _dex_deps + [ ":$_build_config_target" ] - input_jars = _dex_sources - output = _final_dex_path - enable_multidex = _enable_multidex - - if (_enable_multidex) { - forward_variables_from(invoker, [ "negative_main_dex_globs" ]) - extra_main_dex_proguard_config = _generated_proguard_main_dex_config - deps += [ ":$_compile_resources_target" ] - } - - # All deps are already included in _dex_sources when proguard is used. - if (!_proguard_enabled) { - if (_enable_multidex) { - _dex_arg_key = - "${_rebased_build_config}:deps_info:java_runtime_classpath" - } else { - _dex_arg_key = - "${_rebased_build_config}:final_dex:dependency_dex_files" - } - build_config = _build_config - input_jars_file_arg = "@FileArg($_dex_arg_key)" - } - - # http://crbug.com/725224. Fix for bots running out of memory. - use_pool = true - } - - _native_libs_file_arg_dep = ":$_build_config_target" - _native_libs_file_arg = "@FileArg($_rebased_build_config:native:libraries)" - _secondary_abi_native_libs_file_arg_dep = ":$_build_config_target" - _secondary_abi_native_libs_file_arg = - "@FileArg($_rebased_build_config:native:secondary_abi_libraries)" - assert(_secondary_abi_native_libs_file_arg != "" && - _secondary_abi_native_libs_file_arg_dep != "") # Mark as used. - - if (_native_libs_deps != [] && _pack_relocations) { - _prepare_native_target_name = "${_template_name}__prepare_native" - _native_libs_json = "$_gen_dir/packed-libs/filelist.json" - _rebased_native_libs_json = rebase_path(_native_libs_json, root_build_dir) - _native_libs_file_arg_dep = ":$_prepare_native_target_name" - _native_libs_file_arg = "@FileArg($_rebased_native_libs_json:files)" - - pack_relocation_section(_prepare_native_target_name) { - file_list_json = _native_libs_json - libraries_filearg = - "@FileArg(${_rebased_build_config}:native:libraries)" - inputs = [ - _build_config, - ] - - deps = _native_libs_deps - deps += [ ":$_build_config_target" ] - } - if (_secondary_abi_native_libs_deps != []) { - _prepare_native_target_name = - "${_template_name}_secondary_abi__prepare_native" - _native_libs_json = - "$_gen_dir/packed-libs/$android_secondary_abi_cpu/filelist.json" - _rebased_native_libs_json = - rebase_path(_native_libs_json, root_build_dir) - _secondary_abi_native_libs_file_arg_dep = - ":$_prepare_native_target_name" - _secondary_abi_native_libs_file_arg = - "@FileArg($_rebased_native_libs_json:files)" - - pack_relocation_section(_prepare_native_target_name) { - file_list_json = _native_libs_json - libraries_filearg = "@FileArg(${_rebased_build_config}:native:secondary_abi_libraries)" - inputs = [ - _build_config, - ] - - deps = _secondary_abi_native_libs_deps - deps += [ ":$_build_config_target" ] - } - } - } - - _extra_native_libs = _sanitizer_runtimes - _extra_native_libs_deps = [] - assert(_extra_native_libs_deps == []) # Mark as used. - _extra_native_libs_even_when_incremental = [] - if (_native_libs_deps != []) { - if (_use_chromium_linker) { - _extra_native_libs += - [ "$root_shlib_dir/libchromium_android_linker$shlib_extension" ] - _extra_native_libs_deps += - [ "//base/android/linker:chromium_android_linker" ] - } - - _create_stack_script_rule_name = "${_template_name}__stack_script" - _final_deps += [ ":${_create_stack_script_rule_name}" ] - stack_script(_create_stack_script_rule_name) { - stack_target_name = invoker.target_name - deps = _native_libs_deps - if (_native_libs_deps != [] && _pack_relocations) { - packed_libraries = _native_libs_file_arg - deps += [ _native_libs_file_arg_dep ] - } - } - } - - if (defined(invoker.loadable_modules) && invoker.loadable_modules != []) { - _extra_native_libs_even_when_incremental += invoker.loadable_modules - } - - # Generate .apk.jar.info files if needed. - if (defined(invoker.apk_name)) { - _apk_jar_info_target = "${target_name}__apk_jar_info" - create_apk_jar_info(_apk_jar_info_target) { - output = "$root_build_dir/size-info/${invoker.apk_name}.apk.jar.info" - apk_build_config = _build_config - deps = [ - ":$_build_config_target", - ":$_java_target", - ] - } - _deps += [ ":$_apk_jar_info_target" ] - } - - _final_deps += [ ":${_template_name}__create" ] - create_apk("${_template_name}__create") { - forward_variables_from(invoker, - [ - "alternative_android_sdk_jar", - "public_deps", - "secondary_native_libs", - "shared_resources", - "uncompress_shared_libraries", - "write_asset_list", - ]) - packaged_resources_path = _packaged_resources_path - apk_path = _final_apk_path - android_manifest = _android_manifest - assets_build_config = _build_config - base_path = _base_path - dex_path = _final_dex_path - load_library_from_apk = _load_library_from_apk - - # This is used to generate *.apk.pak.info files. - apk_name = invoker.apk_name - - keystore_name = _keystore_name - keystore_path = _keystore_path - keystore_password = _keystore_password - - # Incremental apk does not use native libs nor final dex. - incremental_deps = _deps + [ - ":$_merge_manifest_target", - ":$_build_config_target", - ":$_compile_resources_target", - ] - - # This target generates the input file _all_resources_zip_path. - deps = _deps + [ - ":$_merge_manifest_target", - ":$_build_config_target", - ":$_final_dex_target_name", - ":$_compile_resources_target", - ] - - if (_native_libs_deps != [] || - _extra_native_libs_even_when_incremental != []) { - deps += _native_libs_deps + _extra_native_libs_deps + - [ _native_libs_file_arg_dep ] - native_libs_filearg = _native_libs_file_arg - native_libs = _extra_native_libs - native_libs_even_when_incremental = - _extra_native_libs_even_when_incremental - } - - if (_secondary_abi_native_libs_deps != []) { - deps += _secondary_abi_native_libs_deps + - [ _secondary_abi_native_libs_file_arg_dep ] - secondary_abi_native_libs_filearg = _secondary_abi_native_libs_file_arg - } - - # Placeholders necessary for some older devices. - # http://crbug.com/395038 - forward_variables_from(invoker, - [ - "native_lib_placeholders", - "secondary_native_lib_placeholders", - ]) - } - - _write_installer_json_rule_name = "${_template_name}__incremental_json" - action(_write_installer_json_rule_name) { - script = "//build/android/incremental_install/write_installer_json.py" - depfile = "$target_gen_dir/$target_name.d" - deps = [ - _native_libs_file_arg_dep, - ] - - outputs = [ - _incremental_install_json_path, - ] - - _rebased_apk_path_no_ext = - rebase_path(_final_apk_path_no_ext, root_build_dir) - _rebased_incremental_install_json_path = - rebase_path(_incremental_install_json_path, root_build_dir) - _rebased_depfile = rebase_path(depfile, root_build_dir) - _dex_arg_key = "${_rebased_build_config}:final_dex:dependency_dex_files" - args = [ - "--apk-path=${_rebased_apk_path_no_ext}_incremental.apk", - "--output-path=$_rebased_incremental_install_json_path", - "--dex-file=$_rebased_lib_dex_path", - "--dex-file-list=@FileArg($_dex_arg_key)", - "--depfile=$_rebased_depfile", - ] - if (_proguard_enabled) { - args += [ "--show-proguard-warning" ] - } - if (defined(_native_libs_file_arg)) { - args += [ "--native-libs=$_native_libs_file_arg" ] - } - if (_extra_native_libs != []) { - # Don't pass in _extra_native_libs_even_when_incremental, since these are - # end up in the apk and are not side-loaded. - _rebased_extra_native_libs = - rebase_path(_extra_native_libs, root_build_dir) - args += [ "--native-libs=$_rebased_extra_native_libs" ] - } - if (_load_library_from_apk) { - args += [ "--dont-even-try=Incremental builds do not work with load_library_from_apk. Try setting is_component_build=true in your GN args." ] - } - } - - _apk_operations = [] - _incremental_apk_operations = [] - - # Generate apk operation related script. - if (!defined(invoker.create_apk_script) || invoker.create_apk_script) { - _apk_operations_target_name = "${target_name}__apk_operations" - action(_apk_operations_target_name) { - _generated_script = "$root_build_dir/bin/${invoker.target_name}" - script = "//build/android/gyp/create_apk_operations_script.py" - outputs = [ - _generated_script, - ] - if (_proguard_enabled) { - # Required by logcat command. - data_deps = [ - "//build/android/stacktrace:java_deobfuscate", - ] - } - args = [ - "--script-output-path", - rebase_path(_generated_script, root_build_dir), - "--apk-path", - rebase_path(_final_apk_path, root_build_dir), - "--target-cpu=$target_cpu", - ] - if (defined(invoker.command_line_flags_file)) { - args += [ - "--command-line-flags-file", - invoker.command_line_flags_file, - ] - } - if (_incremental_allowed) { - args += [ - "--incremental-install-json-path", - rebase_path(_incremental_install_json_path, root_build_dir), - ] - } - if (_proguard_enabled) { - args += [ - "--proguard-mapping-path", - rebase_path("$_final_apk_path.mapping", root_build_dir), - ] - } - } - _apk_operations += [ ":$_apk_operations_target_name" ] - _incremental_apk_operations += [ ":$_apk_operations_target_name" ] - } - - group(target_name) { - if (_incremental_allowed && incremental_apk_by_default) { - deps = [ - ":${target_name}_incremental", - ] - assert(_apk_operations != [] || true) # Prevent "unused variable". - } else { - forward_variables_from(invoker, - [ - "data", - "data_deps", - ]) - public_deps = _final_deps - - # Generate apk related operations at runtime. - public_deps += _apk_operations - - # Make the proguard .mapping file easy to find by putting it beside the .apk. - if (_proguard_enabled) { - deps = [ - ":$_copy_proguard_mapping_target", - ] - } - } - } - - if (_incremental_allowed) { - group("${target_name}_incremental") { - forward_variables_from(invoker, - [ - "data", - "data_deps", - ]) - if (!defined(data_deps)) { - data_deps = [] - } - - # device/commands is used by the installer script to push files via .zip. - data_deps += [ "//build/android/pylib/device/commands" ] + - _native_libs_deps + _extra_native_libs_deps - - # Since the _incremental.apk does not include use .so nor .dex from the - # actual target, but instead loads them at runtime, we need to explicitly - # depend on them here. - public_deps = [ - ":${_java_target}", - ":${_template_name}__create_incremental", - ":${_write_installer_json_rule_name}", - ] - - # Generate incremental apk related operations at runtime. - public_deps += _incremental_apk_operations - } - } - } - - # Declare an Android instrumentation test apk - # - # This target creates an Android instrumentation test apk. - # - # Variables - # android_manifest: Path to AndroidManifest.xml. - # data_deps: List of dependencies needed at runtime. These will be built but - # won't change the generated .apk in any way (in fact they may be built - # after the .apk is). - # deps: List of dependencies. All Android java resources and libraries in the - # "transitive closure" of these dependencies will be included in the apk. - # Note: this "transitive closure" actually only includes such targets if - # they are depended on through android_library or android_resources targets - # (and so not through builtin targets like 'action', 'group', etc). - # java_files: List of .java files to include in the apk. - # srcjar_deps: List of srcjar dependencies. The .java files in the srcjars - # will be added to java_files and be included in this apk. - # apk_name: Name for final apk. - # final_apk_path: Path to final built apk. Default is - # $root_out_dir/apks/$apk_name.apk. Setting this will override apk_name. - # shared_libraries: List shared_library targets to bundle. If these - # libraries depend on other shared_library targets, those dependencies will - # also be included in the apk (e.g. for is_component_build). - # apk_under_test: The apk being tested. - # javac_args: Additional arguments to pass to javac. - # - # Example - # instrumentation_test_apk("foo_test_apk") { - # android_manifest = "AndroidManifest.xml" - # apk_name = "FooTest" - # apk_under_test = "Foo" - # java_files = [ - # "android/org/chromium/foo/FooTestCase.java", - # "android/org/chromium/foo/FooExampleTest.java", - # ] - # deps = [ - # ":foo_test_support_java" - # ] - # } - template("instrumentation_test_apk") { - assert(defined(invoker.apk_name)) - testonly = true - _apk_target_name = "${target_name}__apk" - _test_runner_target_name = "${target_name}__test_runner_script" - _dist_ijar_path = - "$root_build_dir/test.lib.java/" + invoker.apk_name + ".jar" - _incremental_test_runner_target_name = - "${_test_runner_target_name}_incremental" - _incremental_test_name = "${invoker.target_name}_incremental" - if (incremental_apk_by_default) { - _incremental_test_runner_target_name = _test_runner_target_name - _incremental_test_name = invoker.target_name - } - - if (!incremental_apk_by_default) { - test_runner_script(_test_runner_target_name) { - forward_variables_from(invoker, - [ - "additional_apks", - "apk_under_test", - "data", - "data_deps", - "deps", - "ignore_all_data_deps", - "proguard_enabled", - "public_deps", - ]) - test_name = invoker.target_name - test_type = "instrumentation" - apk_target = ":$_apk_target_name" - test_jar = _dist_ijar_path - } - } - test_runner_script(_incremental_test_runner_target_name) { - forward_variables_from(invoker, - [ - "additional_apks", - "apk_under_test", - "data", - "data_deps", - "deps", - "ignore_all_data_deps", - "public_deps", - ]) - test_name = _incremental_test_name - test_type = "instrumentation" - apk_target = ":$_apk_target_name" - test_jar = _dist_ijar_path - incremental_install = true - } - - android_apk(_apk_target_name) { - deps = [] - data_deps = [] - forward_variables_from(invoker, "*") - deps += [ "//testing/android/broker:broker_java" ] - data_deps += [ - "//build/android/pylib/device/commands", - "//tools/android/forwarder2", - "//tools/android/md5sum", - ] - if (defined(invoker.apk_under_test)) { - data_deps += [ invoker.apk_under_test ] - } - if (defined(invoker.additional_apks)) { - data_deps += invoker.additional_apks - } - if (defined(invoker.apk_under_test)) { - # Prevent a build_hooks_android_impl exising in both the test apks as - # well as the apk_under_test. - no_build_hooks = true - } - - if (defined(invoker.proguard_enabled) && invoker.proguard_enabled) { - # When ProGuard is on, we use ProGuard to combine the under test java - # code and the test java code. This is to allow us to apply all ProGuard - # optimizations that we ship with, but not have them break tests. The - # apk under test will still have the same resources, assets, and - # manifest, all of which are the ones used in the tests. - if (!defined(invoker.proguard_configs)) { - proguard_configs = [] - } - proguard_configs += [ "//testing/android/proguard_for_test.flags" ] - if (defined(final_apk_path)) { - _final_apk_path = final_apk_path - } else { - _final_apk_path = "$root_build_dir/apks/${apk_name}.apk" - } - data = [ - "$_final_apk_path.mapping", - ] - } - - dist_ijar_path = _dist_ijar_path - create_apk_script = false - } - - group(target_name) { - if (incremental_apk_by_default) { - public_deps = [ - ":${target_name}_incremental", - ] - } else { - public_deps = [ - ":$_apk_target_name", - ":$_test_runner_target_name", - - # Required by test runner to enumerate test list. - ":${_apk_target_name}_dist_ijar", - ] - if (defined(invoker.apk_under_test)) { - public_deps += [ invoker.apk_under_test ] - } - } - - # Ensure unstripped libraries are included in runtime deps so that - # symbolization can be done. - deps = [ - ":${_apk_target_name}__runtime_deps", - ":${_apk_target_name}__secondary_abi_runtime_deps", - ] - if (defined(invoker.apk_under_test)) { - _under_test_label = - get_label_info(invoker.apk_under_test, "label_no_toolchain") - deps += [ - "${_under_test_label}__runtime_deps", - "${_under_test_label}__secondary_abi_runtime_deps", - ] - } - } - - group("${target_name}_incremental") { - public_deps = [ - ":$_incremental_test_runner_target_name", - ":${_apk_target_name}_dist_ijar", - ":${_apk_target_name}_incremental", - ] - if (defined(invoker.apk_under_test)) { - public_deps += [ "${invoker.apk_under_test}_incremental" ] - } - } - } - - # Declare an Android gtest apk - # - # This target creates an Android apk for running gtest-based unittests. - # - # Variables - # deps: Specifies the dependencies of this target. These will be passed to - # the underlying android_apk invocation and should include the java and - # resource dependencies of the apk. - # shared_library: shared_library target that contains the unit tests. - # apk_name: The name of the produced apk. If unspecified, it uses the name - # of the shared_library target suffixed with "_apk" - # use_default_launcher: Whether the default activity (NativeUnitTestActivity) - # should be used for launching tests. - # use_native_activity: Test implements ANativeActivity_onCreate(). - # - # Example - # unittest_apk("foo_unittests_apk") { - # deps = [ ":foo_java", ":foo_resources" ] - # shared_library = ":foo_unittests" - # } - template("unittest_apk") { - _use_native_activity = - defined(invoker.use_native_activity) && invoker.use_native_activity - _android_manifest = "$target_gen_dir/$target_name/AndroidManifest.xml" - assert(invoker.shared_library != "") - - # This trivial assert is needed in case android_manifest is defined, - # as otherwise _use_native_activity and _android_manifest would not be used. - assert(_use_native_activity != "" && _android_manifest != "") - - if (!defined(invoker.android_manifest)) { - jinja_template("${target_name}_manifest") { - _native_library_name = get_label_info(invoker.shared_library, "name") - input = "//testing/android/native_test/java/AndroidManifest.xml.jinja2" - output = _android_manifest - variables = [ - "is_component_build=${is_component_build}", - "native_library_name=${_native_library_name}", - "use_native_activity=${_use_native_activity}", - ] - } - } - - android_apk(target_name) { - data_deps = [] - forward_variables_from(invoker, "*") - testonly = true - create_apk_script = false - - assert(!defined(invoker.proguard_enabled) || !invoker.proguard_enabled || - invoker.proguard_configs != []) - - if (!defined(apk_name)) { - apk_name = get_label_info(invoker.shared_library, "name") - } - - if (!defined(android_manifest)) { - android_manifest_dep = ":${target_name}_manifest" - android_manifest = _android_manifest - } - - final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk" - - if (!defined(use_default_launcher) || use_default_launcher) { - deps += [ "//testing/android/native_test:native_test_java" ] - } - shared_libraries = [ invoker.shared_library ] - deps += [ - ":${target_name}__runtime_deps", - ":${target_name}__secondary_abi_runtime_deps", - "//base:base_java", - "//testing/android/reporter:reporter_java", - ] - data_deps += [ - "//build/android/pylib/device/commands", - "//tools/android/md5sum", - ] - if (host_os == "linux") { - data_deps += [ "//tools/android/forwarder2" ] - } - } - } - - # Generate .java files from .aidl files. - # - # This target will store the .java files in a srcjar and should be included in - # an android_library or android_apk's srcjar_deps. - # - # Variables - # sources: Paths to .aidl files to compile. - # import_include: Path to directory containing .java files imported by the - # .aidl files. - # interface_file: Preprocessed aidl file to import. - # - # Example - # android_aidl("foo_aidl") { - # import_include = "java/src" - # sources = [ - # "java/src/com/foo/bar/FooBarService.aidl", - # "java/src/com/foo/bar/FooBarServiceCallback.aidl", - # ] - # } - template("android_aidl") { - action(target_name) { - set_sources_assignment_filter([]) - forward_variables_from(invoker, [ "testonly" ]) - - script = "//build/android/gyp/aidl.py" - sources = invoker.sources - - _srcjar_path = "${target_gen_dir}/${target_name}.srcjar" - _aidl_path = "${android_sdk_build_tools}/aidl" - _framework_aidl = "$android_sdk/framework.aidl" - _imports = [ _framework_aidl ] - if (defined(invoker.interface_file)) { - assert(invoker.interface_file != "") - _imports += [ invoker.interface_file ] - } - - inputs = [ _aidl_path ] + _imports - - depfile = "${target_gen_dir}/${target_name}.d" - outputs = [ - _srcjar_path, - ] - _rebased_imports = rebase_path(_imports, root_build_dir) - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--aidl-path", - rebase_path(_aidl_path, root_build_dir), - "--imports=$_rebased_imports", - "--srcjar", - rebase_path(_srcjar_path, root_build_dir), - ] - if (defined(invoker.import_include) && invoker.import_include != []) { - # TODO(cjhopman): aidl supports creating a depfile. We should be able to - # switch to constructing a depfile for the overall action from that - # instead of having all the .java files in the include paths as inputs. - _rebased_import_paths = [] - foreach(_import_path, invoker.import_include) { - _rebased_import_path = [] - _rebased_import_path = [ rebase_path(_import_path, root_build_dir) ] - _rebased_import_paths += _rebased_import_path - _java_files_build_rel = [] - _java_files_build_rel = - exec_script("//build/android/gyp/find.py", - [ "--pattern=*.java" ] + _rebased_import_path, - "list lines") - inputs += rebase_path(_java_files_build_rel, ".", root_build_dir) - } - args += [ "--includes=$_rebased_import_paths" ] - } - args += rebase_path(sources, root_build_dir) - } - } - - # Compile a protocol buffer to java. - # - # This generates java files from protocol buffers and creates an Android library - # containing the classes. - # - # Variables - # sources (required) - # Paths to .proto files to compile. - # - # proto_path (required) - # Root directory of .proto files. - # - # generate_nano (optional, default false) - # Whether to generate nano protos. If false, this will use the lite proto generator. - # Nano protos are deprecated, so please use lite new proto libraries. - # - # Example: - # proto_java_library("foo_proto_java") { - # proto_path = "src/foo" - # sources = [ "$proto_path/foo.proto" ] - # } - template("proto_java_library") { - set_sources_assignment_filter([]) - forward_variables_from(invoker, [ "testonly" ]) - _generate_nano = - defined(invoker.generate_nano) && invoker.generate_nano == true - - if (_generate_nano) { - # Use the legacy Android nano proto generator. - _protoc_dep = - "//third_party/android_protobuf:android_protoc($host_toolchain)" - _protoc_out_dir = get_label_info(_protoc_dep, "root_out_dir") - _protoc_bin = "$_protoc_out_dir/android_protoc" - _proto_runtime = "//third_party/android_protobuf:protobuf_nano_javalib" - } else { - # Use the regular proto library to generate lite protos. - _protoc_dep = "//third_party/protobuf:protoc($host_toolchain)" - _protoc_out_dir = get_label_info(_protoc_dep, "root_out_dir") - _protoc_bin = "$_protoc_out_dir/protoc" - _proto_runtime = "//third_party/protobuf:protobuf_lite_javalib" - } - _proto_path = invoker.proto_path - _template_name = target_name - - action("${_template_name}__protoc_java") { - _srcjar_path = "$target_gen_dir/$target_name.srcjar" - script = "//build/protoc_java.py" - - deps = [ - _protoc_dep, - ] - if (defined(invoker.deps)) { - deps += invoker.deps - } - - sources = invoker.sources - depfile = "$target_gen_dir/$target_name.d" - outputs = [ - _srcjar_path, - ] - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--protoc", - rebase_path(_protoc_bin, root_build_dir), - "--proto-path", - rebase_path(_proto_path, root_build_dir), - "--srcjar", - rebase_path(_srcjar_path, root_build_dir), - ] + rebase_path(sources, root_build_dir) - if (_generate_nano) { - args += [ "--nano" ] - } - } - - android_library(target_name) { - chromium_code = false - java_files = [] - srcjar_deps = [ ":${_template_name}__protoc_java" ] - deps = [ - _proto_runtime, - ] - } - } - - # Declare an Android library target for a prebuilt AAR. - # - # This target creates an Android library containing java code and Android - # resources. For libraries without resources, it will not generate - # corresponding android_resources targets. - # - # To avoid slowing down "gn gen", an associated .info file must be committed - # along with the .aar file. In order to create this file, define the target - # and then run once with the gn arg "update_android_aar_prebuilts = true". - # - # Variables - # aar_path: Path to the AAR. - # info_path: Path to the .aar.info file (generated via - # update_android_aar_prebuilts GN arg). - # proguard_configs: List of proguard configs to use in final apk step for - # any apk that depends on this library. - # ignore_aidl: Whether to ignore .aidl files found with the .aar. - # ignore_assets: Whether to ignore assets found in the .aar. - # ignore_native_libraries: Whether to ignore .so files found in the .aar. - # create_srcjar: If false, does not create an R.java file. - # TODO(jbudorick@): remove this arguments after crbug.com/522043 is fixed. - # requires_android: Whether this target can only be used for compiling - # Android related targets. - # - # Example - # android_aar_prebuilt("foo_java") { - # aar_path = "foo.aar" - # } - template("android_aar_prebuilt") { - _info_path = "$target_name.info" - if (defined(invoker.info_path)) { - _info_path = invoker.info_path - } - _output_path = "${target_gen_dir}/${target_name}" - _unpack_target_name = "${target_name}__unpack_aar" - _ignore_aidl = defined(invoker.ignore_aidl) && invoker.ignore_aidl - _ignore_assets = defined(invoker.ignore_assets) && invoker.ignore_assets - _ignore_native_libraries = defined(invoker.ignore_native_libraries) && - invoker.ignore_native_libraries - - # Scan the AAR file and determine the resources and jar files. - # Some libraries might not have resources; others might have two jars. - if (update_android_aar_prebuilts) { - print("Writing " + rebase_path(_info_path, "//")) - exec_script("//build/android/gyp/aar.py", - [ - "list", - rebase_path(invoker.aar_path, root_build_dir), - "--output", - rebase_path(_info_path, root_build_dir), - ]) - } - - # If "gn gen" is failing on the following line, you need to generate an - # .info file for your new target by running: - # gn gen --args='target_os="android" update_android_aar_prebuilts=true' out/tmp - # rm -r out/tmp - _scanned_files = read_file(_info_path, "scope") - - assert(_ignore_aidl || _scanned_files.aidl == [], - "android_aar_prebuilt() aidl not yet supported." + - " Implement or use ignore_aidl = true." + - " http://crbug.com/644439") - assert(_ignore_assets || _scanned_files.assets == [], - "android_aar_prebuilt() assets not yet supported." + - " Implement or use ignore_assets = true." + - " http://crbug.com/643966") - assert(_ignore_native_libraries || !_scanned_files.has_native_libraries, - "android_aar_prebuilt() with .so files is not supported." + - " Use ignore_native_libraries = true to silence this error.") - assert(_scanned_files.has_classes_jar || _scanned_files.subjars == []) - - action(_unpack_target_name) { - script = "//build/android/gyp/aar.py" # Unzips the AAR - args = [ - "extract", - rebase_path(invoker.aar_path, root_build_dir), - "--output-dir", - rebase_path(_output_path, root_build_dir), - "--assert-info-file", - rebase_path(_info_path, root_build_dir), - ] - inputs = [ - invoker.aar_path, - ] - outputs = [ - "${_output_path}/AndroidManifest.xml", - ] - - if (_scanned_files.has_r_text_file) { - # Certain packages, in particular Play Services have no R.txt even - # though its presence is mandated by AAR spec. Such packages cause - # spurious rebuilds if this output is specified unconditionally. - outputs += [ "${_output_path}/R.txt" ] - } - - if (_scanned_files.resources != []) { - outputs += get_path_info( - rebase_path(_scanned_files.resources, "", _output_path), - "abspath") - } - if (_scanned_files.has_classes_jar) { - outputs += [ "${_output_path}/classes.jar" ] - } - outputs += - get_path_info(rebase_path(_scanned_files.subjars, "", _output_path), - "abspath") - if (_scanned_files.has_proguard_flags) { - outputs += [ "${_output_path}/proguard.txt" ] - } - } - - # Create the android_resources target for resources. - if (_scanned_files.resources != [] || _scanned_files.has_r_text_file || - !_scanned_files.is_manifest_empty) { - _res_target_name = "${target_name}__res" - android_resources(_res_target_name) { - forward_variables_from(invoker, - [ - "create_srcjar", - "deps", - "testonly", - ]) - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_unpack_target_name" ] - resource_dirs = [] - generated_resource_dirs = [] - if (_scanned_files.resources != []) { - generated_resource_dirs += [ "${_output_path}/res" ] - } - generated_resource_files = - rebase_path(_scanned_files.resources, "", _output_path) - android_manifest_dep = ":$_unpack_target_name" - android_manifest = "${_output_path}/AndroidManifest.xml" - if (_scanned_files.has_r_text_file) { - r_text_file = "${_output_path}/R.txt" - } - v14_skip = true - } - } - - # Create android_java_prebuilt target for extra jars within jars/. - _subjar_targets = [] - foreach(_tuple, _scanned_files.subjar_tuples) { - _current_target = "${target_name}__subjar_${_tuple[0]}" - _subjar_targets += [ ":$_current_target" ] - java_prebuilt(_current_target) { - forward_variables_from(invoker, - [ - "jar_excluded_patterns", - "jar_included_patterns", - "requires_android", - ]) - deps = [ - ":$_unpack_target_name", - ] - if (!defined(requires_android)) { - requires_android = true - } - supports_android = true - jar_path = "$_output_path/${_tuple[1]}" - _base_output_name = get_path_info(jar_path, "name") - output_name = "${invoker.target_name}-$_base_output_name" - } - } - - # Create android_java_prebuilt target for classes.jar. - if (_scanned_files.has_classes_jar) { - _jar_target_name = "${target_name}__classes" - java_prebuilt(_jar_target_name) { - forward_variables_from(invoker, - [ - "deps", - "input_jars_paths", - "jar_excluded_patterns", - "jar_included_patterns", - "proguard_configs", - "requires_android", - "testonly", - ]) - if (!defined(deps)) { - deps = [] - } - deps += _subjar_targets + [ ":$_unpack_target_name" ] - if (defined(_res_target_name)) { - deps += [ ":$_res_target_name" ] - } - if (!defined(requires_android)) { - requires_android = true - } - supports_android = true - jar_path = "$_output_path/classes.jar" - output_name = invoker.target_name - - if (_scanned_files.has_proguard_flags) { - if (!defined(proguard_configs)) { - proguard_configs = [] - } - proguard_configs += [ "$_output_path/proguard.txt" ] - } - } - } - - java_group(target_name) { - forward_variables_from(invoker, - [ - "testonly", - "visibility", - ]) - public_deps = [ - ":$_unpack_target_name", - ] - deps = [] - if (defined(_jar_target_name)) { - deps += [ ":$_jar_target_name" ] - - # Although subjars are meant to be private, we add them as deps here - # because in practice they seem to contain classes required to be in the - # classpath. - deps += _subjar_targets - } - if (defined(_res_target_name)) { - deps += [ ":$_res_target_name" ] - } - } - } -} - -# Compatibility wrapper to toggle android_deps usage for a dependency. -# -# This target creates a wrapper for a dependency allowing it to be loaded -# either from //third_party/android_deps or from an existing //third_party -# (or other) target. -# -# Variables -# fallback_target: Target to use when the android_deps repo is not enabled. -# android_deps_target_name: Name of the target from the android_deps repo to -# use when the repo is enabled. Is not set, the wrapper's target name will -# be used instead. -# -# Example -# prebuilt_wrapper("android_support_multidex_java") { -# android_deps_target_name = "com_android_support_multidex_java" -# fallback_target = "$android_support_library_package:$target_name" -# } -template("prebuilt_wrapper") { - if (defined(invoker.android_deps_target_name)) { - _resolved_android_deps_target_name = invoker.android_deps_target_name - } else { - _resolved_android_deps_target_name = target_name - } - - if (enable_android_deps_repository) { - _resolved_target = - "//third_party/android_deps:${_resolved_android_deps_target_name}" - assert(invoker.fallback_target != "") # Mark as used. - } else { - _resolved_target = "${invoker.fallback_target}" - assert(_resolved_android_deps_target_name != "") # Mark as used. - } - - java_group(target_name) { - forward_variables_from(invoker, [ "testonly" ]) - deps = [ - _resolved_target, - ] - } -}
diff --git a/build/config/android/sdk.gni b/build/config/android/sdk.gni deleted file mode 100644 index 2fe0400..0000000 --- a/build/config/android/sdk.gni +++ /dev/null
@@ -1,10 +0,0 @@ -# Copyright 2017 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. - -# The default SDK release used by public builds. Value may differ in -# internal builds. -default_android_sdk_release = "o_mr1" - -# SDK releases against which public builds are supported. -public_sdk_releases = [ "o_mr1" ]
diff --git a/build/config/arm.gni b/build/config/arm.gni deleted file mode 100644 index abd4dd0..0000000 --- a/build/config/arm.gni +++ /dev/null
@@ -1,135 +0,0 @@ -# Copyright 2014 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/config/v8_target_cpu.gni") -import("//build/secondary/third_party/catapult/devil/devil_arm.gni") - -# These are primarily relevant in current_cpu == "arm" contexts, where -# ARM code is being compiled. But they can also be relevant in the -# other contexts when the code will change its behavior based on the -# cpu it wants to generate code for. -if (current_cpu == "arm" || v8_current_cpu == "arm") { - declare_args() { - # Version of the ARM processor when compiling on ARM. Ignored on non-ARM - # platforms. - arm_version = 7 - - # The ARM architecture. This will be a string like "armv6" or "armv7-a". - # An empty string means to use the default for the arm_version. - arm_arch = "" - - # The ARM floating point hardware. This will be a string like "neon" or - # "vfpv3". An empty string means to use the default for the arm_version. - arm_fpu = "" - - # The ARM floating point mode. This is either the string "hard", "soft", or - # "softfp". An empty string means to use the default one for the - # arm_version. - arm_float_abi = "" - - # The ARM variant-specific tuning mode. This will be a string like "armv6" - # or "cortex-a15". An empty string means to use the default for the - # arm_version. - arm_tune = "" - - # Whether to use the neon FPU instruction set or not. - arm_use_neon = "" - - # Whether to enable optional NEON code paths. - arm_optionally_use_neon = false - - # Thumb is a reduced instruction set available on some ARM processors that - # has increased code density. - arm_use_thumb = true - } - - assert(arm_float_abi == "" || arm_float_abi == "hard" || - arm_float_abi == "soft" || arm_float_abi == "softfp") - - if (arm_use_neon == "") { - if (current_os == "linux" && target_cpu != v8_target_cpu) { - # Don't use neon on V8 simulator builds as a default. - arm_use_neon = false - } else { - arm_use_neon = true - } - } - - if (arm_version == 6) { - if (arm_arch == "") { - arm_arch = "armv6" - } - if (arm_tune != "") { - arm_tune = "" - } - if (arm_float_abi == "") { - arm_float_abi = "softfp" - } - if (arm_fpu == "") { - arm_fpu = "vfp" - } - arm_use_thumb = false - arm_use_neon = false - } else if (arm_version == 7) { - if (arm_arch == "") { - arm_arch = "armv7-a" - } - if (arm_tune == "") { - arm_tune = "generic-armv7-a" - } - - if (arm_float_abi == "") { - if (current_os == "android") { - arm_float_abi = "softfp" - } else if (target_os == "android") { - if (build_devil_arm_deps) { - # Raspberry Pis require "hard" - arm_float_abi = "hard" - } else { - arm_float_abi = "softfp" - } - } else if (current_os == "linux" && target_cpu != v8_target_cpu) { - # Default to the same as Android for V8 simulator builds. - arm_float_abi = "softfp" - } else { - arm_float_abi = "hard" - } - } - - if (arm_fpu == "") { - if (arm_use_neon) { - arm_fpu = "neon" - } else { - arm_fpu = "vfpv3-d16" - } - } - } else if (arm_version == 8) { - if (arm_arch == "") { - arm_arch = "armv8-a" - } - if (arm_tune == "") { - arm_tune = "generic-armv8-a" - } - - if (arm_float_abi == "") { - if (current_os == "android" || target_os == "android") { - arm_float_abi = "softfp" - } else { - arm_float_abi = "hard" - } - } - - if (arm_fpu == "") { - if (arm_use_neon) { - arm_fpu = "neon" - } else { - arm_fpu = "vfpv3-d16" - } - } - } -} else if (current_cpu == "arm64" || v8_current_cpu == "arm64") { - # arm64 supports only "hard". - arm_float_abi = "hard" - arm_use_neon = true -}
diff --git a/build/config/c++/c++.gni b/build/config/c++/c++.gni deleted file mode 100644 index 85ffde0..0000000 --- a/build/config/c++/c++.gni +++ /dev/null
@@ -1,42 +0,0 @@ -# Copyright 2017 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/config/sanitizers/sanitizers.gni") - -declare_args() { - # Use libc++ (buildtools/third_party/libc++ and - # buildtools/third_party/libc++abi) instead of stdlibc++ as standard - # library. - # Don't check in changes that set this to false for more platforms; doing so - # is not supported. - use_custom_libcxx = - is_msan || is_fuchsia || - (is_linux && - (!is_chromeos || default_toolchain != "//build/toolchain/cros:target")) - - # Use libc++ instead of stdlibc++ when using the host_cpu toolchain, even if - # use_custom_libcxx is false. This is useful for cross-compiles where a custom - # toolchain for the target_cpu has been set as the default toolchain, but - # use_custom_libcxx should still be true when building for the host. The - # expected usage is to set use_custom_libcxx=false and - # use_custom_libcxx_for_host=true in the passed in buildargs. - use_custom_libcxx_for_host = false - - # ASan, MSan and TSan builds need to override operator new, operator delete, - # and some exception handling symbols, so libc++ must be a shared library to - # prevent duplicate symbol errors when linking. - # Additionally, -fsanitize=vptr requires libc++ to be a shared library - # because the ubsan runtime library that implements -fsanitize=vptr calls - # dynamic_cast with the ABI type info classes, which won't return the right - # answer if each DSO has its own copy of the ABI classes. - libcpp_is_static = !is_component_build && !is_asan && !is_msan && !is_tsan && - !is_ubsan && !is_ubsan_security && !is_ubsan_vptr -} - -use_custom_libcxx = - use_custom_libcxx || (use_custom_libcxx_for_host && current_cpu == host_cpu) -use_custom_libcxx = use_custom_libcxx && !is_nacl - -libcxx_prefix = "//buildtools/third_party/libc++/trunk" -libcxxabi_prefix = "//buildtools/third_party/libc++abi/trunk"
diff --git a/build/config/chrome_build.gni b/build/config/chrome_build.gni deleted file mode 100644 index 4bb4a04..0000000 --- a/build/config/chrome_build.gni +++ /dev/null
@@ -1,26 +0,0 @@ -# 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. - -declare_args() { - # Select the desired branding flavor. False means normal Chromium branding, - # true means official Google Chrome branding (requires extra Google-internal - # resources). - is_chrome_branded = false - - # Break chrome.dll into multple pieces based on process type. Only available - # on Windows. - is_multi_dll_chrome = is_win && !is_component_build - - # Turn this on to generate order files. See - # https://chromium.googlesource.com/chromium/src/+/master/docs/win_order_files.md - generate_order_files = false -} - -# Refers to the subdirectory for branding in various places including -# chrome/app/theme. -if (is_chrome_branded) { - branding_path_component = "google_chrome" -} else { - branding_path_component = "chromium" -}
diff --git a/build/config/chromecast/BUILD.gn b/build/config/chromecast/BUILD.gn deleted file mode 100644 index c8b2989..0000000 --- a/build/config/chromecast/BUILD.gn +++ /dev/null
@@ -1,85 +0,0 @@ -# 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/config/chromecast_build.gni") - -assert(is_chromecast) - -config("static_config") { - if (!is_clang) { - ldflags = [ - # Don't allow visible symbols from libraries that contain - # assembly code with symbols that aren't hidden properly. - # http://b/26390825 - "-Wl,--exclude-libs=libffmpeg.a", - ] - - if (!is_android) { - ldflags += [ - # We want to statically link libstdc++/libgcc on Linux. - # (On Android, libstdc++ and libgcc aren't used.) - "-static-libstdc++", - "-static-libgcc", - ] - } - } -} - -config("ldconfig") { - visibility = [ ":*" ] - - # Chromecast executables depend on several shared libraries in - # /oem_cast_shlib, $ORIGIN, and $ORIGIN/lib. Add these rpaths to each binary. - # This is explicitly disabled in Chrome for security reasons (see comments in - # //build/config/gcc/BUILD.gn), but necessary on Chromecast so that OEM's may - # override the default libraries shipped in the Cast receiver package. - ldflags = [ - "-Wl,-rpath=/oem_cast_shlib", - "-Wl,-rpath=\$ORIGIN/lib", - "-Wl,-rpath=\$ORIGIN", - ] - - # Binaries which don't live in the same directory as Chrome component - # libraries may still depend on them. Explicitly add the component library - # directory to the rpath for the component build. - if (is_component_build) { - ldflags += [ "-Wl,-rpath=/system/chrome" ] - } -} - -config("executable_config") { - configs = [ ":ldconfig" ] - - if (!is_clang && current_cpu == "arm") { - ldflags = [ - # Export stdlibc++ and libgcc symbols to force shlibs to refer to these - # symbols from the executable. - "-Wl,--export-dynamic", - - "-lm", # stdlibc++ requires math.h - - # In case we redefined stdlibc++ symbols (e.g. tc_malloc) - "-Wl,--allow-multiple-definition", - - "-Wl,--whole-archive", - "-l:libstdc++.a", - "-l:libgcc.a", - "-Wl,--no-whole-archive", - ] - - # Despite including libstdc++/libgcc archives, we still need to specify - # static linking for them in order to prevent the executable from having a - # dynamic dependency on them. - configs += [ ":static_config" ] - } -} - -# Shared libaries should not have RPATH or RUNPATH set. This allows the -# shared libs to inherit RPATH from the parent executable that is loading -# the shared library. (See internal b/37514052 for more details.) -config("shared_library_config") { - if (current_cpu == "arm") { - configs = [ ":static_config" ] - } -}
diff --git a/build/config/chromecast_build.gni b/build/config/chromecast_build.gni deleted file mode 100644 index d4869d7..0000000 --- a/build/config/chromecast_build.gni +++ /dev/null
@@ -1,36 +0,0 @@ -# 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. - -# The args declared in this file should be referenced by components outside of -# //chromecast. Args needed only in //chromecast should be declared in -# //chromecast/chromecast.gni. -declare_args() { - # Set this true for a Chromecast build. Chromecast builds are supported on - # Linux and Android. - is_chromecast = false - - # Set this true for an audio-only Chromecast build. - is_cast_audio_only = false -} - -# Note(slan): This arg depends on the value of is_chromecast, and thus must be -# declared in a separate block. These blocks can be combined when/if -# crbug.com/542846 is resolved. -declare_args() { - # True if Chromecast build is targeted for linux desktop. This type of build - # is useful for testing and development, but currently supports only a subset - # of Cast functionality. Though this defaults to true for x86 Linux devices, - # this should be overriden manually for an embedded x86 build. - # TODO(slan): Remove instances of this when x86 is a fully supported platform. - is_cast_desktop_build = is_chromecast && target_os == "linux" && - (target_cpu == "x86" || target_cpu == "x64") -} - -# Assert that Chromecast is being built for a supported platform. -assert(is_linux || is_android || is_fuchsia || !is_chromecast, - "Chromecast builds are not supported on $target_os") - -# Assert that is_cast_audio_only and is_cast_desktop_build are both false on a -# non-Chromecast build. -assert(is_chromecast || (!is_cast_audio_only && !is_cast_desktop_build))
diff --git a/build/config/chromeos/rules.gni b/build/config/chromeos/rules.gni deleted file mode 100644 index 5f1ece8..0000000 --- a/build/config/chromeos/rules.gni +++ /dev/null
@@ -1,80 +0,0 @@ -# Copyright 2018 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. - -assert(is_chromeos) - -declare_args() { - cros_board = getenv("SDK_BOARD") - cros_sdk_version = getenv("SDK_VERSION") -} - -template("generate_vm_runner_script") { - _cache_path_prefix = - "//build/cros_cache/chrome-sdk/tarballs/${cros_board}+${cros_sdk_version}" - _vm_image_path = "${_cache_path_prefix}+chromiumos_qemu_image.tar.xz/" - _qemu_dir = "${_cache_path_prefix}+app-emulation/" - - action(target_name) { - forward_variables_from(invoker, - [ - "testonly", - "need_toolchain", - ]) - - script = "//build/chromeos/create_vm_test_script.py" - - outputs = [ - invoker.generated_script, - ] - - data = [ - # We use android test-runner's results libs to construct gtest output - # json. - "//build/android/pylib/__init__.py", - "//build/android/pylib/base/", - "//build/android/pylib/results/", - invoker.generated_script, - "//build/chromeos/", - "//build/cros_cache/chrome-sdk/misc/", - - # The LKGM file controls what version of the VM image to download. Add it - # as data here so that changes to it will trigger analyze. - "//chromeos/CHROMEOS_LKGM", - "//third_party/chromite/", - _vm_image_path, - _qemu_dir, - ] - if (defined(need_toolchain) && need_toolchain) { - data += [ "${_cache_path_prefix}+target_toolchain/" ] - } - - # Required arguments used at build time by the runner script generator. - args = [ - "--script-output-path", - rebase_path(invoker.generated_script, root_build_dir), - "--cros-cache", - rebase_path("//build/cros_cache/", root_build_dir), - "--board", - cros_board, - ] - - # When --test-exe is specified, run_vm_test will push the exe to the VM and - # execute it. Otherwise it wraps a host-side command and just takes care - # launching & tearing-down the VM. - if (defined(invoker.test_exe)) { - args += [ - "--test-exe", - rebase_path(invoker.test_exe, root_build_dir), - "--output-directory", - rebase_path(root_out_dir, root_build_dir), - ] - if (defined(invoker.runtime_deps_file)) { - args += [ - "--runtime-deps-path", - rebase_path(invoker.runtime_deps_file, root_build_dir), - ] - } - } - } -}
diff --git a/build/config/clang/BUILD.gn b/build/config/clang/BUILD.gn deleted file mode 100644 index 11dba35..0000000 --- a/build/config/clang/BUILD.gn +++ /dev/null
@@ -1,75 +0,0 @@ -# Copyright (c) 2013 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("clang.gni") - -config("find_bad_constructs") { - if (clang_use_chrome_plugins) { - cflags = [] - - # On Windows, the plugin is built directly into clang, so there's - # no need to load it dynamically. - if (host_os == "mac") { - cflags += [ - "-Xclang", - "-load", - "-Xclang", - rebase_path("${clang_base_path}/lib/libFindBadConstructs.dylib", - root_build_dir), - ] - } else if (host_os == "linux") { - cflags += [ - "-Xclang", - "-load", - "-Xclang", - rebase_path("${clang_base_path}/lib/libFindBadConstructs.so", - root_build_dir), - ] - } - - cflags += [ - "-Xclang", - "-add-plugin", - "-Xclang", - "find-bad-constructs", - ] - - cflags += [ - "-Xclang", - "-plugin-arg-find-bad-constructs", - "-Xclang", - "enforce-in-thirdparty-webkit", - ] - - # TODO(dcheng): remove this once the plugin is updated and rolled again. - cflags += [ - "-Xclang", - "-plugin-arg-find-bad-constructs", - "-Xclang", - "check-enum-max-value", - ] - - if (is_linux || is_android || is_fuchsia) { - cflags += [ - "-Xclang", - "-plugin-arg-find-bad-constructs", - "-Xclang", - "check-ipc", - ] - } - } -} - -# Enables some extra Clang-specific warnings. Some third-party code won't -# compile with these so may want to remove this config. -config("extra_warnings") { - cflags = [ - "-Wheader-hygiene", - - # Warns when a const char[] is converted to bool. - "-Wstring-conversion", - - "-Wtautological-overlap-compare", - ] -}
diff --git a/build/config/clang/clang.gni b/build/config/clang/clang.gni deleted file mode 100644 index 2c2d76f..0000000 --- a/build/config/clang/clang.gni +++ /dev/null
@@ -1,15 +0,0 @@ -# Copyright 2014 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") - -default_clang_base_path = "//third_party/llvm-build/Release+Asserts" - -declare_args() { - # Indicates if the build should use the Chrome-specific plugins for enforcing - # coding guidelines, etc. Only used when compiling with Clang. - clang_use_chrome_plugins = is_clang && !is_nacl && !use_xcode_clang - - clang_base_path = default_clang_base_path -}
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn deleted file mode 100644 index 83337d5..0000000 --- a/build/config/compiler/BUILD.gn +++ /dev/null
@@ -1,2229 +0,0 @@ -# Copyright (c) 2013 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/config/android/config.gni") -import("//build/config/c++/c++.gni") -import("//build/config/chrome_build.gni") -import("//build/config/chromecast_build.gni") -import("//build/config/clang/clang.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/coverage/coverage.gni") -import("//build/config/host_byteorder.gni") -import("//build/config/ui.gni") -import("//build/toolchain/cc_wrapper.gni") -import("//build/toolchain/toolchain.gni") -import("//build_overrides/build.gni") - -if (current_cpu == "arm" || current_cpu == "arm64") { - import("//build/config/arm.gni") -} -if (current_cpu == "mipsel" || current_cpu == "mips64el" || - current_cpu == "mips" || current_cpu == "mips64") { - import("//build/config/mips.gni") -} -if (is_mac) { - import("//build/config/mac/symbols.gni") -} -if (is_ios) { - import("//build/config/ios/ios_sdk.gni") -} -if (is_nacl) { - # To keep NaCl variables out of builds that don't include NaCl, all - # variables defined in nacl/config.gni referenced here should be protected by - # is_nacl conditions. - import("//build/config/nacl/config.gni") -} - -declare_args() { - # Default to warnings as errors for default workflow, where we catch - # warnings with known toolchains. Allow overriding this e.g. for Chromium - # builds on Linux that could use a different version of the compiler. - # With GCC, warnings in no-Chromium code are always not treated as errors. - treat_warnings_as_errors = true - - # Normally, Android builds are lightly optimized, even for debug builds, to - # keep binary size down. Setting this flag to true disables such optimization - android_full_debug = false - - # Whether to use the binary binutils checked into third_party/binutils. - # These are not multi-arch so cannot be used except on x86 and x86-64 (the - # only two architectures that are currently checked in). Turn this off when - # you are using a custom toolchain and need to control -B in cflags. - linux_use_bundled_binutils = - linux_use_bundled_binutils_override && is_linux && - (current_cpu == "x64" || current_cpu == "x86") - binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", - root_build_dir) - - # Compile in such a way as to make it possible for the profiler to unwind full - # stack frames. Setting this flag has a large effect on the performance of the - # generated code than just setting profiling, but gives the profiler more - # information to analyze. - # Requires profiling to be set to true. - enable_full_stack_frames_for_profiling = false - - # When we are going to use gold we need to find it. - # This is initialized below, after use_gold might have been overridden. - gold_path = false - - if (is_win) { - # Whether the VS xtree header has been patched to disable warning 4702. If - # it has, then we don't need to disable 4702 (unreachable code warning). - # The patch is preapplied to the internal toolchain and hence all bots. - msvs_xtree_patched = false - } - - # Enable fatal linker warnings. Building Chromium with certain versions - # of binutils can cause linker warning. - # See: https://bugs.chromium.org/p/chromium/issues/detail?id=457359 - fatal_linker_warnings = true - - # Build with C++ RTTI enabled. Chromium builds without RTTI by default, - # but some sanitizers are known to require it, like CFI diagnostics - # and UBsan variants. - use_rtti = use_cfi_diag || is_ubsan_vptr || is_ubsan_security - - # AFDO (Automatic Feedback Directed Optimizer) is a form of profile-guided - # optimization that GCC supports. It used by ChromeOS in their official - # builds. To use it, set auto_profile_path to the path to a file containing - # the needed gcov profiling data. - auto_profile_path = "" - - # Optimize for coverage guided fuzzing (balance between speed and number of - # branches) - optimize_for_fuzzing = false - - # Optimize symbol files for maximizing goma cache hit rate. This is on by - # default only when goma is enabled on Linux because setting this to true may - # make it harder to debug binaries. - # See below reference for detail. - # https://chromium.googlesource.com/chromium/src/+/master/docs/linux_debugging.md#Source-level-debug-with-fdebug-prefix-map - strip_absolute_paths_from_debug_symbols = is_linux && use_goma - - # Allow projects that wish to stay on C++11 to override Chromium's default. - use_cxx11 = false - - # Strip the debug info of symbols file in lib.unstripped to reduce size. - strip_debug_info = false - - # Path to an AFDO profile to use while building with clang, if any. Empty - # implies none. - clang_sample_profile_path = "" - - # Some configurations have default sample profiles. If this is true and - # clang_sample_profile_path is empty, we'll fall back to the default. - # - # We currently only have default profiles for Chromium in-tree, so we disable - # this by default for all downstream projects, since these profiles are likely - # nonsensical for said projects. - clang_use_default_sample_profile = build_with_chromium && is_official_build && - (is_android || is_desktop_linux) - - # Turn this on to have the compiler output extra timing information. - compiler_timing = false - - # Set to true to pass --no-rosegment to lld. This is a workaround - # for a KI issue in Valgrind, - # https://bugs.kde.org/show_bug.cgi?id=384727 - ro_segment_workaround_for_valgrind = false - - # Turn this on to use ghash feature of lld for faster debug link on Windows. - # http://blog.llvm.org/2018/01/improving-link-time-on-windows-with.html - use_ghash = false -} - -declare_args() { - # C++11 may not be an option if Android test infrastructure is used. - use_cxx11_on_android = use_cxx11 -} - -declare_args() { - # Set to true to use icf, Identical Code Folding. - # - # icf=all is broken in older golds, see - # https://sourceware.org/bugzilla/show_bug.cgi?id=17704 - # See also https://crbug.com/663886 - # `linux_use_bundled_binutils` is to avoid breaking Linux distros which may - # still have a buggy gold. - # chromeos binutils has been patched with the fix, so always use icf there. - # The bug only affects x86 and x64, so we can still use ICF when targeting - # other architectures. - # - # lld doesn't have the bug. - use_icf = (is_posix || is_fuchsia) && !using_sanitizer && - !(is_android && use_order_profiling) && - (use_lld || - (use_gold && - ((!is_android && linux_use_bundled_binutils) || is_chromeos || - !(current_cpu == "x86" || current_cpu == "x64")))) -} - -# Apply the default logic for these values if they were not set explicitly. -if (gold_path == false) { - if (use_gold) { - gold_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", - root_build_dir) - } else { - gold_path = "" - } -} - -if (use_debug_fission == "default") { - use_debug_fission = is_debug && !is_android && !is_win && - (use_gold || use_lld) && cc_wrapper == "" -} - -# default_include_dirs --------------------------------------------------------- -# -# This is a separate config so that third_party code (which would not use the -# source root and might have conflicting versions of some headers) can remove -# this and specify their own include paths. -config("default_include_dirs") { - include_dirs = [ - "//", - root_gen_dir, - ] -} - -# compiler --------------------------------------------------------------------- -# -# Base compiler configuration. -# -# See also "runtime_library" below for related stuff and a discussion about -# where stuff should go. Put warning related stuff in the "warnings" config. - -config("compiler") { - asmflags = [] - cflags = [] - cflags_c = [] - cflags_cc = [] - cflags_objc = [] - cflags_objcc = [] - ldflags = [] - defines = [] - configs = [] - inputs = [] - - # System-specific flags. If your compiler flags apply to one of the - # categories here, add it to the associated file to keep this shared config - # smaller. - if (is_win) { - configs += [ "//build/config/win:compiler" ] - } else if (is_android) { - configs += [ "//build/config/android:compiler" ] - } else if (is_linux) { - configs += [ "//build/config/linux:compiler" ] - } else if (is_nacl) { - configs += [ "//build/config/nacl:compiler" ] - } else if (is_mac) { - configs += [ "//build/config/mac:compiler" ] - } else if (is_ios) { - configs += [ "//build/config/ios:compiler" ] - } else if (is_fuchsia) { - configs += [ "//build/config/fuchsia:compiler" ] - } else if (current_os == "aix") { - configs += [ "//build/config/aix:compiler" ] - } - - configs += [ - # See the definitions below. - ":clang_revision", - ":compiler_cpu_abi", - ":compiler_codegen", - ] - - # In general, Windows is totally different, but all the other builds share - # some common GCC configuration. - if (!is_win) { - # Common POSIX compiler flags setup. - # -------------------------------- - cflags += [ "-fno-strict-aliasing" ] # See http://crbug.com/32204 - - # Stack protection. - if (is_mac) { - # The strong variant of the stack protector significantly increases - # binary size, so only enable it in debug mode. - if (is_debug) { - cflags += [ "-fstack-protector-strong" ] - } else { - cflags += [ "-fstack-protector" ] - } - } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) { - # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc supports it. - # See also https://crbug.com/533294 - cflags += [ "--param=ssp-buffer-size=4" ] - - # The x86 toolchain currently has problems with stack-protector. - if (is_android && current_cpu == "x86") { - cflags += [ "-fno-stack-protector" ] - } else if (current_os != "aix") { - # Not available on aix. - cflags += [ "-fstack-protector" ] - } - } - - # Linker warnings. - if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") && - !(is_android && use_order_profiling) && !is_mac && !is_ios && - current_os != "aix") { - # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 - # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1 - # crbug.com/485542 - ldflags += [ "-Wl,--fatal-warnings" ] - } - } else { - cflags += [ - # Assume UTF-8 by default to avoid code page dependencies. - "/utf-8", - ] - if (is_clang) { - # Don't look for includes in %INCLUDE%. - cflags += [ "/X" ] - } - } - - # Eliminate build metadata (__DATE__, __TIME__ and __TIMESTAMP__) for - # deterministic build. See https://crbug.com/314403 - if (!is_official_build) { - if (is_win && !is_clang) { - cflags += [ - "/wd4117", # Trying to define or undefine a predefined macro. - "/D__DATE__=", - "/D__TIME__=", - "/D__TIMESTAMP__=", - ] - } else { - cflags += [ - "-Wno-builtin-macro-redefined", - "-D__DATE__=", - "-D__TIME__=", - "-D__TIMESTAMP__=", - ] - } - } - - if (is_clang && is_debug) { - # Allow comparing the address of references and 'this' against 0 - # in debug builds. Technically, these can never be null in - # well-defined C/C++ and Clang can optimize such checks away in - # release builds, but they may be used in asserts in debug builds. - cflags_cc += [ - "-Wno-undefined-bool-conversion", - "-Wno-tautological-undefined-compare", - ] - } - - # Non-Mac Posix and Fuchsia compiler flags setup. - # ----------------------------------- - if ((is_posix && !(is_mac || is_ios)) || is_fuchsia) { - if (enable_profiling) { - if (!is_debug) { - cflags += [ "-g" ] - - if (enable_full_stack_frames_for_profiling) { - cflags += [ - "-fno-inline", - "-fno-optimize-sibling-calls", - ] - } - } - } - - if (is_official_build) { - # Explicitly pass --build-id to ld. Compilers used to always pass this - # implicitly but don't any more (in particular clang when built without - # ENABLE_LINKER_BUILD_ID=ON). The crash infrastructure does need a build - # id, so explicitly enable it in official builds. It's not needed in - # unofficial builds and computing it does slow down the link, so go with - # faster links in unofficial builds. - ldflags += [ "-Wl,--build-id=sha1" ] - } - - if (!is_android) { - defines += [ - # _FILE_OFFSET_BITS=64 should not be set on Android in order to maintain - # the behavior of the Android NDK from earlier versions. - # See https://android-developers.googleblog.com/2017/09/introducing-android-native-development.html - "_FILE_OFFSET_BITS=64", - "_LARGEFILE_SOURCE", - "_LARGEFILE64_SOURCE", - ] - } - - if (!is_nacl) { - if (exclude_unwind_tables) { - cflags += [ - "-fno-unwind-tables", - "-fno-asynchronous-unwind-tables", - ] - defines += [ "NO_UNWIND_TABLES" ] - } else { - cflags += [ "-funwind-tables" ] - } - } - } - - # Linux/Android/Fuchsia common flags setup. - # --------------------------------- - if (is_linux || is_android || is_fuchsia) { - if (use_pic) { - cflags += [ "-fPIC" ] - ldflags += [ "-fPIC" ] - } - - # Use pipes for communicating between sub-processes. Faster. - cflags += [ "-pipe" ] - - ldflags += [ - "-Wl,-z,noexecstack", - "-Wl,-z,now", - "-Wl,-z,relro", - ] - if (!using_sanitizer) { - ldflags += [ - "-Wl,-z,defs", - "-Wl,--as-needed", - ] - } - } - - # Linux-specific compiler flags setup. - # ------------------------------------ - if (is_android && is_clang) { - _rebased_android_toolchain_root = - rebase_path(android_toolchain_root, root_build_dir) - - # Let clang find the linker in the NDK. - ldflags += [ "--gcc-toolchain=$_rebased_android_toolchain_root" ] - } - - if (((is_posix || is_fuchsia) && use_lld) || - (target_os == "chromeos" && is_android)) { - # NOTE: Some Chrome OS builds globally disable LLD, but they also build some - # targets against Android toolchains which should use LLD. Therefore we - # explicitly select LLD in these cases. - # - # TODO(https://crbug.com/837095): This should be cleaned up if/when LLD can - # work properly for Chrome OS builds. - ldflags += [ "-fuse-ld=lld" ] - if (current_cpu == "arm64") { - # Reduce the page size from 65536 in order to reduce binary size slightly - # by shrinking the alignment gap between segments. This also causes all - # segments to be mapped adjacently, which breakpad relies on. - ldflags += [ "-Wl,-z,max-page-size=4096" ] - } - } else if (use_gold) { - ldflags += [ "-fuse-ld=gold" ] - if (!is_android) { - # On Android, this isn't needed. gcc in the NDK knows to look next to - # it with -fuse-ld=gold, and clang gets a --gcc-toolchain flag passed - # above. - ldflags += [ "-B$gold_path" ] - - if (linux_use_bundled_binutils) { - ldflags += [ - # Experimentation found that using four linking threads - # saved ~20% of link time. - # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/281527606915bb36 - # Only apply this to the target linker, since the host - # linker might not be gold, but isn't used much anyway. - "-Wl,--threads", - "-Wl,--thread-count=4", - ] - } - } - - # TODO(thestig): Make this flag work with GN. - #if (!is_official_build && !is_chromeos && !(is_asan || is_lsan || is_tsan || is_msan)) { - # ldflags += [ - # "-Wl,--detect-odr-violations", - # ] - #} - } else if (linux_use_bundled_binutils) { - # Gold is the default linker for the bundled binutils so we explicitly - # enable the bfd linker when use_gold is not set. - ldflags += [ "-fuse-ld=bfd" ] - } - - if (use_icf) { - ldflags += [ "-Wl,--icf=all" ] - } - - if (linux_use_bundled_binutils) { - cflags += [ "-B$binutils_path" ] - } - - if (is_linux) { - cflags += [ "-pthread" ] - # Do not use the -pthread ldflag here since it becomes a no-op - # when using -nodefaultlibs, which would cause an unused argument - # error. "-lpthread" is added in //build/config:default_libs. - } - - # Clang-specific compiler flags setup. - # ------------------------------------ - if (is_clang) { - cflags += [ "-fcolor-diagnostics" ] - - # Enable -fmerge-all-constants. This used to be the default in clang - # for over a decade. It makes clang non-conforming, but is fairly safe - # in practice and saves some binary size. We might want to consider - # disabling this (https://bugs.llvm.org/show_bug.cgi?id=18538#c13), - # but for now it looks like our build might rely on it - # (https://crbug.com/829795). - cflags += [ "-fmerge-all-constants" ] - } - - if (use_lld) { - # TODO(thakis): Make the driver pass --color-diagnostics to the linker - # if -fcolor-diagnostics is passed to it, and pass -fcolor-diagnostics - # in ldflags instead. - if (is_win) { - # On Windows, we call the linker directly, instead of calling it through - # the driver. - ldflags += [ "--color-diagnostics" ] - } else { - ldflags += [ "-Wl,--color-diagnostics" ] - } - } - - if (is_clang && !is_nacl && current_toolchain == host_toolchain && - target_os != "chromeos") { - cflags += [ - # TODO(hans): Remove this once Clang generates better optimized debug info - # by default. https://crbug.com/765793 - "-Xclang", - "-mllvm", - "-Xclang", - "-instcombine-lower-dbg-declare=0", - ] - } - - # Print absolute paths in diagnostics. There is no precedent for doing this - # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and - # Windows developers rely on it (crbug.com/636109) so only do this on Windows. - if (msvc_use_absolute_paths && is_clang && is_win) { - cflags += [ "-fdiagnostics-absolute-paths" ] - } - - # Makes builds independent of absolute file path. - # clang-cl (used if is_win) doesn't expose this flag. - # Currently disabled for nacl since its toolchain lacks this flag (too old). - # TODO(zforman): Once nacl's toolchain is updated, remove check. - if (is_clang && !is_nacl && !is_win && !is_mac && !is_ios && - strip_absolute_paths_from_debug_symbols) { - # This is resolved to path like "$HOME/chromium/src/out/Release". - # If debug option is given, clang includes $cwd in debug info. - # In such build, this flag generates reproducible obj files - # even we use build directory like "out/feature_a" and "out/feature_b" if - # we build same files with same compile flag other than this. - # Other paths are already givne in relative, no need to normalize it by - # using -fdebug-prefix-map. - absolute_path = rebase_path(root_out_dir) - - cflags += [ "-fdebug-prefix-map=$absolute_path=." ] - } - - # Tells the compiler not to use absolute paths when passing the default - # paths to the tools it invokes. We don't want this because we don't - # really need it and it can mess up the goma cache entries. It would - # be nice if it was on by default in clang, but it isn't. - # - # TODO(thakis): Figure out if this should be the default, and expose in - # clang-cl if not. - if (is_clang && !is_win && !is_nacl) { - cflags += [ "-no-canonical-prefixes" ] - } - - # C11/C++11 compiler flags setup. - # --------------------------- - if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { - if (target_os == "android") { - cxx11_override = use_cxx11_on_android - } else { - cxx11_override = use_cxx11 - } - - # gnu11/gnu++11 instead of c11/c++11 is needed because some code uses typeof() - # (a GNU extension). - # TODO(thakis): Eventually switch this to c++11 instead, - # http://crbug.com/427584 - cflags_c += [ "-std=gnu11" ] - if (cxx11_override) { - # Override Chromium's default for projects that wish to stay on C++11. - cflags_cc += [ "-std=gnu++11" ] - } else { - cflags_cc += [ "-std=gnu++14" ] - } - } else if (!is_win && !is_nacl) { - if (target_os == "android") { - cxx11_override = use_cxx11_on_android - } else { - cxx11_override = use_cxx11 - } - - # TODO(mcgrathr) - the NaCl GCC toolchain doesn't support either gnu11/gnu++11 - # or c11/c++11; we technically don't need this toolchain any more, but there - # are still a few buildbots using it, so until those are turned off - # we need the !is_nacl clause and the (is_nacl && is_clang) clause, above. - cflags_c += [ "-std=c11" ] - if (cxx11_override) { - cflags_cc += [ "-std=c++11" ] - } else { - cflags_cc += [ "-std=c++14" ] - } - } - - if (is_mac) { - # The system libc++ on Mac doesn't have aligned allocation in C++17. - defines += [ "_LIBCPP_HAS_NO_ALIGNED_ALLOCATION" ] - cflags_cc += [ "-stdlib=libc++" ] - ldflags += [ "-stdlib=libc++" ] - } - - # Add flags for link-time optimization. These flags enable - # optimizations/transformations that require whole-program visibility at link - # time, so they need to be applied to all translation units, and we may end up - # with miscompiles if only part of the program is compiled with LTO flags. For - # that reason, we cannot allow targets to enable or disable these flags, for - # example by disabling the optimize configuration. - # TODO(pcc): Make this conditional on is_official_build rather than on gn - # flags for specific features. - if (!is_debug && use_thin_lto && current_toolchain == default_toolchain) { - assert(use_lld || target_os == "chromeos", - "gold plugin only supported with ChromeOS") - - cflags += [ "-flto=thin" ] - - # Limit the size of the ThinLTO cache to the lesser of 10% of available disk - # space, 10GB and 100000 files. - if (use_lld) { - cache_policy = - "cache_size=10%:cache_size_bytes=10g:cache_size_files=100000" - } - if (is_win) { - # This is a straight translation of the non-Windows flags below. - ldflags += [ - "/opt:lldlto=0", - "/opt:lldltojobs=8", - "/lldltocache:" + - rebase_path("$root_out_dir/thinlto-cache", root_build_dir), - "/lldltocachepolicy:$cache_policy", - ] - } else { - ldflags += [ "-flto=thin" ] - - # Limit the parallelism to avoid too aggressive competition between - # linker jobs. This is still suboptimal to a potential dynamic - # resource allocation scheme, but should be good enough. - if (use_lld) { - ldflags += [ - "-Wl,--thinlto-jobs=8", - "-Wl,--thinlto-cache-dir=" + - rebase_path("$root_out_dir/thinlto-cache", root_build_dir), - "-Wl,--thinlto-cache-policy,$cache_policy", - ] - } else { - ldflags += [ "-Wl,-plugin-opt,jobs=8" ] - not_needed([ "cache_policy" ]) - } - } - - # Disable optimization for now because they increase binary size by too - # much. - if (use_lld && (is_android || (is_linux && !is_chromeos))) { - ldflags += [ "-Wl,--lto-O0" ] - } - - cflags += [ "-fwhole-program-vtables" ] - if (!is_win) { - ldflags += [ "-fwhole-program-vtables" ] - } - - # Work-around for http://openradar.appspot.com/20356002 - if (is_mac) { - ldflags += [ "-Wl,-all_load" ] - } - - # This flag causes LTO to create an .ARM.attributes section with the correct - # architecture. This is necessary because LLD will refuse to link a program - # unless the architecture revision in .ARM.attributes is sufficiently new. - # TODO(pcc): The contents of .ARM.attributes should be based on the - # -march flag passed at compile time (see llvm.org/pr36291). - if (current_cpu == "arm") { - ldflags += [ "-march=$arm_arch" ] - } - } - - if (compiler_timing) { - if (is_clang) { - if (is_win) { - cflags += [ "-Xclang" ] - } - cflags += [ "-ftime-report" ] - } else if (is_win) { - cflags += [ - # "Documented" here: - # http://aras-p.info/blog/2017/10/23/Best-unknown-MSVC-flag-d2cgsummary/ - "/d2cgsummary", - ] - } - } - - # Pass flag to LLD to work around issue in Valgrind related to - # location of debug symbols. - if (use_lld && ro_segment_workaround_for_valgrind) { - ldflags += [ "-Wl,--no-rosegment" ] - } - - # Pass the same C/C++ flags to the objective C/C++ compiler. - cflags_objc += cflags_c - cflags_objcc += cflags_cc - - # Assign any flags set for the C compiler to asmflags so that they are sent - # to the assembler. The Windows assembler takes different types of flags - # so only do so for posix platforms. - if (is_posix || is_fuchsia) { - asmflags += cflags - asmflags += cflags_c - } -} - -# This provides the basic options to select the target CPU and ABI. -# It is factored out of "compiler" so that special cases can use this -# without using everything that "compiler" brings in. Options that -# tweak code generation for a particular CPU do not belong here! -# See "compiler_codegen", below. -config("compiler_cpu_abi") { - cflags = [] - ldflags = [] - defines = [] - - if ((is_posix && !(is_mac || is_ios)) || is_fuchsia) { - # CPU architecture. We may or may not be doing a cross compile now, so for - # simplicity we always explicitly set the architecture. - if (current_cpu == "x64") { - cflags += [ - "-m64", - "-march=x86-64", - ] - ldflags += [ "-m64" ] - } else if (current_cpu == "x86") { - cflags += [ "-m32" ] - ldflags += [ "-m32" ] - if (!is_nacl) { - cflags += [ - "-msse2", - "-mfpmath=sse", - "-mmmx", - ] - } - } else if (current_cpu == "arm") { - if (is_clang && !is_android && !is_nacl) { - cflags += [ "--target=arm-linux-gnueabihf" ] - ldflags += [ "--target=arm-linux-gnueabihf" ] - } - if (!is_nacl) { - cflags += [ - "-march=$arm_arch", - "-mfloat-abi=$arm_float_abi", - ] - } - if (arm_tune != "") { - cflags += [ "-mtune=$arm_tune" ] - } - } else if (current_cpu == "arm64") { - if (is_clang && !is_android && !is_nacl && !is_fuchsia) { - cflags += [ "--target=aarch64-linux-gnu" ] - ldflags += [ "--target=aarch64-linux-gnu" ] - } - } else if (current_cpu == "mipsel" && !is_nacl) { - if (custom_toolchain == "") { - if (is_clang) { - if (is_android) { - cflags += [ "--target=mipsel-linux-android" ] - ldflags += [ "--target=mipsel-linux-android" ] - } else { - cflags += [ "--target=mipsel-linux-gnu" ] - ldflags += [ "--target=mipsel-linux-gnu" ] - } - } else { - cflags += [ "-EL" ] - ldflags += [ "-EL" ] - } - } - - if (mips_arch_variant == "r6") { - cflags += [ "-mno-odd-spreg" ] - ldflags += [ "-mips32r6" ] - if (is_clang) { - cflags += [ - "-march=mipsel", - "-mcpu=mips32r6", - ] - } else { - cflags += [ - "-mips32r6", - "-Wa,-mips32r6", - ] - if (is_android) { - ldflags += [ "-Wl,-melf32ltsmip" ] - } - } - if (mips_use_msa == true) { - cflags += [ - "-mmsa", - "-mfp64", - ] - } - } else if (mips_arch_variant == "r2") { - ldflags += [ "-mips32r2" ] - if (is_clang) { - cflags += [ - "-march=mipsel", - "-mcpu=mips32r2", - ] - } else { - cflags += [ - "-mips32r2", - "-Wa,-mips32r2", - ] - if (mips_float_abi == "hard" && mips_fpu_mode != "") { - cflags += [ "-m$mips_fpu_mode" ] - } - } - } else if (mips_arch_variant == "r1") { - ldflags += [ "-mips32" ] - if (is_clang) { - cflags += [ - "-march=mipsel", - "-mcpu=mips32", - ] - } else { - cflags += [ - "-mips32", - "-Wa,-mips32", - ] - } - } else if (mips_arch_variant == "loongson3") { - defines += [ "_MIPS_ARCH_LOONGSON" ] - cflags += [ - "-march=loongson3a", - "-mno-branch-likely", - "-Wa,-march=loongson3a", - ] - } - - if (mips_dsp_rev == 1) { - cflags += [ "-mdsp" ] - } else if (mips_dsp_rev == 2) { - cflags += [ "-mdspr2" ] - } - - cflags += [ "-m${mips_float_abi}-float" ] - } else if (current_cpu == "mips" && !is_nacl) { - if (custom_toolchain == "") { - if (is_clang) { - cflags += [ "--target=mips-linux-gnu" ] - ldflags += [ "--target=mips-linux-gnu" ] - } else { - cflags += [ "-EB" ] - ldflags += [ "-EB" ] - } - } - - if (mips_arch_variant == "r6") { - cflags += [ - "-mips32r6", - "-Wa,-mips32r6", - ] - if (mips_use_msa == true) { - cflags += [ - "-mmsa", - "-mfp64", - ] - } - } else if (mips_arch_variant == "r2") { - cflags += [ - "-mips32r2", - "-Wa,-mips32r2", - ] - if (mips_float_abi == "hard" && mips_fpu_mode != "") { - cflags += [ "-m$mips_fpu_mode" ] - } - } else if (mips_arch_variant == "r1") { - cflags += [ - "-mips32", - "-Wa,-mips32", - ] - } - - if (mips_dsp_rev == 1) { - cflags += [ "-mdsp" ] - } else if (mips_dsp_rev == 2) { - cflags += [ "-mdspr2" ] - } - - cflags += [ "-m${mips_float_abi}-float" ] - } else if (current_cpu == "mips64el") { - if (custom_toolchain == "") { - if (is_clang) { - if (is_android) { - cflags += [ "--target=mips64el-linux-android" ] - ldflags += [ "--target=mips64el-linux-android" ] - } else { - cflags += [ "--target=mips64el-linux-gnuabi64" ] - ldflags += [ "--target=mips64el-linux-gnuabi64" ] - } - } else { - cflags += [ - "-EL", - "-mabi=64", - ] - ldflags += [ - "-EL", - "-mabi=64", - ] - } - } - - if (mips_arch_variant == "r6") { - if (is_clang) { - cflags += [ - "-march=mips64el", - "-mcpu=mips64r6", - ] - } else { - cflags += [ - "-mips64r6", - "-Wa,-mips64r6", - ] - ldflags += [ "-mips64r6" ] - } - if (mips_use_msa == true) { - cflags += [ - "-mmsa", - "-mfp64", - ] - } - } else if (mips_arch_variant == "r2") { - ldflags += [ "-mips64r2" ] - if (is_clang) { - cflags += [ - "-march=mips64el", - "-mcpu=mips64r2", - ] - } else { - cflags += [ - "-mips64r2", - "-Wa,-mips64r2", - ] - } - } else if (mips_arch_variant == "loongson3") { - defines += [ "_MIPS_ARCH_LOONGSON" ] - cflags += [ - "-march=loongson3a", - "-mno-branch-likely", - "-Wa,-march=loongson3a", - ] - } - } else if (current_cpu == "mips64") { - if (custom_toolchain == "") { - if (is_clang) { - cflags += [ "--target=mips64-linux-gnuabi64" ] - ldflags += [ "--target=mips64-linux-gnuabi64" ] - } else { - cflags += [ - "-EB", - "-mabi=64", - ] - ldflags += [ - "-EB", - "-mabi=64", - ] - } - } - - if (mips_arch_variant == "r6") { - cflags += [ - "-mips64r6", - "-Wa,-mips64r6", - ] - ldflags += [ "-mips64r6" ] - - if (mips_use_msa == true) { - cflags += [ - "-mmsa", - "-mfp64", - ] - } - } else if (mips_arch_variant == "r2") { - cflags += [ - "-mips64r2", - "-Wa,-mips64r2", - ] - ldflags += [ "-mips64r2" ] - } - } else if (current_cpu == "pnacl" && is_nacl_nonsfi) { - if (target_cpu == "x86" || target_cpu == "x64") { - cflags += [ - "-arch", - "x86-32-nonsfi", - "--pnacl-bias=x86-32-nonsfi", - "--target=i686-unknown-nacl", - ] - ldflags += [ - "-arch", - "x86-32-nonsfi", - "--target=i686-unknown-nacl", - ] - } else if (target_cpu == "arm") { - cflags += [ - "-arch", - "arm-nonsfi", - "-mfloat-abi=hard", - "--pnacl-bias=arm-nonsfi", - "--target=armv7-unknown-nacl-gnueabihf", - ] - ldflags += [ - "-arch", - "arm-nonsfi", - "--target=armv7-unknown-nacl-gnueabihf", - ] - } - } else if (current_cpu == "ppc64") { - if (v8_current_cpu == "ppc") { - cflags += [ "-m32" ] - ldflags += [ "-m32" ] - } else if (v8_current_cpu == "ppc64") { - if (current_os == "aix") { - cflags += [ "-maix64" ] - ldflags += [ "-maix64" ] - } else { - cflags += [ "-m64" ] - ldflags += [ "-m64" ] - } - } - } else if (current_cpu == "s390x") { - if (v8_current_cpu == "s390" && host_byteorder == "little") { - cflags += [ "-m32" ] - ldflags += [ "-m32" ] - } else if (v8_current_cpu == "s390") { - cflags += [ "-m31" ] - ldflags += [ "-m31" ] - } else if (v8_current_cpu == "s390x") { - cflags += [ "-m64" ] - ldflags += [ "-m64" ] - } - } - } - - asmflags = cflags -} - -# This provides options to tweak code generation that are necessary -# for particular Chromium code or for working around particular -# compiler bugs (or the combination of the two). -config("compiler_codegen") { - configs = [] - cflags = [] - - if (is_nacl) { - configs += [ "//build/config/nacl:compiler_codegen" ] - } else if (is_posix && !is_mac && !is_ios) { - if (current_cpu == "x86") { - if (is_clang) { - cflags += [ - # Else building libyuv gives clang's register allocator issues, - # see llvm.org/PR15798 / crbug.com/233709 - "-momit-leaf-frame-pointer", - ] - } - } else if (current_cpu == "arm") { - if (is_android && !is_clang) { - # Clang doesn't support these flags. - cflags += [ - # The tree-sra optimization (scalar replacement for - # aggregates enabling subsequent optimizations) leads to - # invalid code generation when using the Android NDK's - # compiler (r5-r7). This can be verified using - # webkit_unit_tests' WTF.Checked_int8_t test. - "-fno-tree-sra", - - # The following option is disabled to improve binary - # size and performance in gcc 4.9. - "-fno-caller-saves", - ] - } - } - } - - asmflags = cflags -} - -# This is separate from :compiler_codegen (and not even a sub-config there) -# so that some targets can remove it from the list with: -# configs -= [ "//build/config/compiler:clang_stackrealign" ] -# See https://crbug.com/556393 for details of where it must be avoided. -config("clang_stackrealign") { - if (is_clang && current_cpu == "x86" && is_linux) { - cflags = [ - # Align the stack on 16-byte boundaries, http://crbug.com/418554. - "-mstack-alignment=16", - "-mstackrealign", - ] - } -} - -config("clang_revision") { - if (is_clang && clang_base_path == default_clang_base_path) { - update_args = [ - "--print-revision", - "--verify-version=$clang_version", - ] - if (llvm_force_head_revision) { - update_args += [ "--llvm-force-head-revision" ] - } - clang_revision = exec_script("//tools/clang/scripts/update.py", - update_args, - "trim string") - - # This is here so that all files get recompiled after a clang roll and - # when turning clang on or off. (defines are passed via the command line, - # and build system rebuild things when their commandline changes). Nothing - # should ever read this define. - defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ] - } -} - -config("compiler_arm_fpu") { - if (current_cpu == "arm" && !is_ios && !is_nacl) { - cflags = [ "-mfpu=$arm_fpu" ] - asmflags = cflags - } -} - -config("compiler_arm_thumb") { - if (current_cpu == "arm" && arm_use_thumb && is_posix && - !(is_mac || is_ios || is_nacl)) { - cflags = [ "-mthumb" ] - if (is_android && !is_clang) { - # Clang doesn't support this option. - cflags += [ "-mthumb-interwork" ] - } - } -} - -config("compiler_arm") { - if (current_cpu == "arm" && is_chromeos) { - # arm is normally the default mode for clang, but on chromeos a wrapper - # is used to pass -mthumb, and therefor change the default. - cflags = [ "-marm" ] - } -} - -# runtime_library ------------------------------------------------------------- -# -# Sets the runtime library and associated options. -# -# How do you determine what should go in here vs. "compiler" above? Consider if -# a target might choose to use a different runtime library (ignore for a moment -# if this is possible or reasonable on your system). If such a target would want -# to change or remove your option, put it in the runtime_library config. If a -# target wants the option regardless, put it in the compiler config. - -config("runtime_library") { - defines = [] - configs = [] - - # TODO(crbug.com/830987): Come up with a better name for is POSIX + Fuchsia - # configuration. - # - # The order of this config is important: it must appear before - # android:runtime_library. This is to ensure libc++ appears before - # libandroid_support in the -isystem include order. Otherwise, there will be - # build errors related to symbols declared in math.h. - if (is_posix || is_fuchsia) { - configs += [ "//build/config/posix:runtime_library" ] - } - - # System-specific flags. If your compiler flags apply to one of the - # categories here, add it to the associated file to keep this shared config - # smaller. - if (is_win) { - configs += [ "//build/config/win:runtime_library" ] - } else if (is_linux) { - configs += [ "//build/config/linux:runtime_library" ] - } else if (is_ios) { - configs += [ "//build/config/ios:runtime_library" ] - } else if (is_mac) { - configs += [ "//build/config/mac:runtime_library" ] - } else if (is_android) { - configs += [ "//build/config/android:runtime_library" ] - } - - if (is_component_build) { - defines += [ "COMPONENT_BUILD" ] - } -} - -# default_warnings ------------------------------------------------------------ -# -# Collects all warning flags that are used by default. This is used as a -# subconfig of both chromium_code and no_chromium_code. This way these -# flags are guaranteed to appear on the compile command line after -Wall. -config("default_warnings") { - cflags = [] - cflags_cc = [] - ldflags = [] - - if (is_win) { - if (treat_warnings_as_errors) { - cflags += [ "/WX" ] - } - if (fatal_linker_warnings) { - ldflags += [ "/WX" ] - } - - cflags += [ - # Warnings permanently disabled: - - # C4091: 'typedef ': ignored on left of 'X' when no variable is - # declared. - # This happens in a number of Windows headers. Dumb. - "/wd4091", - - # C4127: conditional expression is constant - # This warning can in theory catch dead code and other problems, but - # triggers in far too many desirable cases where the conditional - # expression is either set by macros or corresponds some legitimate - # compile-time constant expression (due to constant template args, - # conditionals comparing the sizes of different types, etc.). Some of - # these can be worked around, but it's not worth it. - "/wd4127", - - # C4251: 'identifier' : class 'type' needs to have dll-interface to be - # used by clients of class 'type2' - # This is necessary for the shared library build. - "/wd4251", - - # C4275: non dll-interface class used as base for dll-interface class - # This points out a potential (but rare) problem with referencing static - # fields of a non-exported base, through the base's non-exported inline - # functions, or directly. The warning is subtle enough that people just - # suppressed it when they saw it, so it's not worth it. - "/wd4275", - - # C4312 is a VS 2015 64-bit warning for integer to larger pointer. - # TODO(brucedawson): fix warnings, crbug.com/554200 - "/wd4312", - - # C4324 warns when padding is added to fulfill alignas requirements, - # but can trigger in benign cases that are difficult to individually - # suppress. - "/wd4324", - - # C4351: new behavior: elements of array 'array' will be default - # initialized - # This is a silly "warning" that basically just alerts you that the - # compiler is going to actually follow the language spec like it's - # supposed to, instead of not following it like old buggy versions did. - # There's absolutely no reason to turn this on. - "/wd4351", - - # C4355: 'this': used in base member initializer list - # It's commonly useful to pass |this| to objects in a class' initializer - # list. While this warning can catch real bugs, most of the time the - # constructors in question don't attempt to call methods on the passed-in - # pointer (until later), and annotating every legit usage of this is - # simply more hassle than the warning is worth. - "/wd4355", - - # C4503: 'identifier': decorated name length exceeded, name was - # truncated - # This only means that some long error messages might have truncated - # identifiers in the presence of lots of templates. It has no effect on - # program correctness and there's no real reason to waste time trying to - # prevent it. - "/wd4503", - - # Warning C4589 says: "Constructor of abstract class ignores - # initializer for virtual base class." Disable this warning because it - # is flaky in VS 2015 RTM. It triggers on compiler generated - # copy-constructors in some cases. - "/wd4589", - - # C4611: interaction between 'function' and C++ object destruction is - # non-portable - # This warning is unavoidable when using e.g. setjmp/longjmp. MSDN - # suggests using exceptions instead of setjmp/longjmp for C++, but - # Chromium code compiles without exception support. We therefore have to - # use setjmp/longjmp for e.g. JPEG decode error handling, which means we - # have to turn off this warning (and be careful about how object - # destruction happens in such cases). - "/wd4611", - - # Warnings to evaluate and possibly fix/reenable later: - - "/wd4100", # Unreferenced formal function parameter. - "/wd4121", # Alignment of a member was sensitive to packing. - "/wd4244", # Conversion: possible loss of data. - "/wd4505", # Unreferenced local function has been removed. - "/wd4510", # Default constructor could not be generated. - "/wd4512", # Assignment operator could not be generated. - "/wd4610", # Class can never be instantiated, constructor required. - "/wd4838", # Narrowing conversion. Doesn't seem to be very useful. - "/wd4995", # 'X': name was marked as #pragma deprecated - "/wd4996", # Deprecated function warning. - - # These are variable shadowing warnings that are new in VS2015. We - # should work through these at some point -- they may be removed from - # the RTM release in the /W4 set. - "/wd4456", - "/wd4457", - "/wd4458", - "/wd4459", - ] - - cflags_cc += [ - # Allow "noexcept" annotations even though we compile with exceptions - # disabled. - "/wd4577", - ] - - if (current_cpu == "x86") { - cflags += [ - # VC++ 2015 changes 32-bit size_t truncation warnings from 4244 to - # 4267. Example: short TruncTest(size_t x) { return x; } - # Since we disable 4244 we need to disable 4267 during migration. - # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. - "/wd4267", - ] - } - - # VS xtree header file needs to be patched or 4702 (unreachable code - # warning) is reported if _HAS_EXCEPTIONS=0. Disable the warning if xtree is - # not patched. - if (!msvs_xtree_patched && - exec_script("../../win_is_xtree_patched.py", [], "value") == 0) { - cflags += [ "/wd4702" ] # Unreachable code. - } - } else { - if ((is_mac || is_ios) && !is_nacl) { - # When compiling Objective-C, warns if a method is used whose - # availability is newer than the deployment target. - cflags += [ "-Wunguarded-availability" ] - } - - if (is_ios) { - # When compiling Objective-C, warns if a selector named via @selector has - # not been defined in any visible interface. - cflags += [ "-Wundeclared-selector" ] - } - - # Suppress warnings about ABI changes on ARM (Clang doesn't give this - # warning). - if (current_cpu == "arm" && !is_clang) { - cflags += [ "-Wno-psabi" ] - } - - if (!is_clang) { - cflags_cc += [ - # See comment for -Wno-c++11-narrowing. - "-Wno-narrowing", - ] - - # -Wunused-local-typedefs is broken in gcc, - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872 - cflags += [ "-Wno-unused-local-typedefs" ] - - # Don't warn about "maybe" uninitialized. Clang doesn't include this - # in -Wall but gcc does, and it gives false positives. - cflags += [ "-Wno-maybe-uninitialized" ] - cflags += [ "-Wno-deprecated-declarations" ] - - # GCC assumes 'this' is never nullptr and optimizes away code - # like "if (this == nullptr) ...": [1]. However, some Chromium - # code relies on these types of null pointer checks [2], so - # disable this optimization. - # [1] https://gcc.gnu.org/gcc-6/porting_to.html#this-cannot-be-null - # [2] https://crbug.com/784492#c13 - cflags += [ "-fno-delete-null-pointer-checks" ] - - # -Wcomment gives too many false positives in the case a - # backslash ended comment line is followed by a new line of - # comments - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61638 - cflags += [ "-Wno-comments" ] - } - } - - # Common Clang and GCC warning setup. - if (!is_win || is_clang) { - cflags += [ - # Disables. - "-Wno-missing-field-initializers", # "struct foo f = {0};" - "-Wno-unused-parameter", # Unused function parameters. - ] - } - - if (is_clang) { - cflags += [ - # TODO(thakis): Consider -Wloop-analysis (turns on - # -Wrange-loop-analysis too). - - # This warns on using ints as initializers for floats in - # initializer lists (e.g. |int a = f(); CGSize s = { a, a };|), - # which happens in several places in chrome code. Not sure if - # this is worth fixing. - "-Wno-c++11-narrowing", - - # Warns on switches on enums that cover all enum values but - # also contain a default: branch. Chrome is full of that. - "-Wno-covered-switch-default", - - # TODO(thakis): This used to be implied by -Wno-unused-function, - # which we no longer use. Check if it makes sense to remove - # this as well. http://crbug.com/316352 - "-Wno-unneeded-internal-declaration", - ] - - # use_xcode_clang only refers to the iOS toolchain, host binaries use - # chromium's clang always. - if (!is_nacl && (!use_xcode_clang || current_toolchain == host_toolchain)) { - # Flags NaCl (Clang 3.7) and Xcode 7.3 (Clang clang-703.0.31) do not - # recognize. - cflags += [ - # TODO(thakis): https://crbug.com/604888 - "-Wno-undefined-var-template", - - # TODO(thakis): https://crbug.com/617318 - "-Wno-nonportable-include-path", - - # TODO(hans): https://crbug.com/637306 - "-Wno-address-of-packed-member", - - # TODO(hans): https://crbug.com/681136 - "-Wno-unused-lambda-capture", - - # TODO(thakis ): https://crbug.com/683349 - "-Wno-user-defined-warnings", - - # TODO(thakis): https://crbug.com/753973 - "-Wno-enum-compare-switch", - - # TODO(hans): https://crbug.com/766891 - "-Wno-null-pointer-arithmetic", - - # Ignore warnings about MSVC optimization pragmas. - # TODO(thakis): Only for no_chromium_code? http://crbug.com/505314 - "-Wno-ignored-pragma-optimize", - ] - } else if (use_xcode_clang) { - cflags += [ - # TODO(thakis): https://crbug.com/604888 - "-Wno-undefined-var-template", - - # TODO(hans): https://crbug.com/637306 - "-Wno-address-of-packed-member", - ] - } - } -} - -# chromium_code --------------------------------------------------------------- -# -# Toggles between higher and lower warnings for code that is (or isn't) -# part of Chromium. - -config("chromium_code") { - if (is_win) { - cflags = [ "/W4" ] # Warning level 4. - } else { - cflags = [ "-Wall" ] - if (treat_warnings_as_errors) { - cflags += [ "-Werror" ] - - # The compiler driver can sometimes (rarely) emit warnings before calling - # the actual linker. Make sure these warnings are treated as errors as - # well. - ldflags = [ "-Werror" ] - } - if (is_clang) { - # Enable extra warnings for chromium_code when we control the compiler. - cflags += [ "-Wextra" ] - } - - # In Chromium code, we define __STDC_foo_MACROS in order to get the - # C99 macros on Mac and Linux. - defines = [ - "__STDC_CONSTANT_MACROS", - "__STDC_FORMAT_MACROS", - ] - - if (!is_debug && !using_sanitizer && - (!is_linux || !is_clang || is_official_build) && - current_cpu != "s390x" && current_cpu != "s390" && - current_cpu != "ppc64" && current_cpu != "ppc64" && - current_cpu != "mips" && current_cpu != "mips64") { - # _FORTIFY_SOURCE isn't really supported by Clang now, see - # http://llvm.org/bugs/show_bug.cgi?id=16821. - # It seems to work fine with Ubuntu 12 headers though, so use it in - # official builds. - # - # Non-chromium code is not guaranteed to compile cleanly with - # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are - # disabled, so only do that for Release build. - defines += [ "_FORTIFY_SOURCE=2" ] - } - - if (is_mac || is_ios) { - cflags_objc = [ "-Wobjc-missing-property-synthesis" ] - cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] - } - } - - if (is_clang) { - cflags += [ - # Warn on missing break statements at the end of switch cases. - # For intentional fallthrough, use FALLTHROUGH; from - # base/compiler_specific.h - "-Wimplicit-fallthrough", - - # Thread safety analysis. See base/thread_annotations.h and - # https://clang.llvm.org/docs/ThreadSafetyAnalysis.html - "-Wthread-safety", - ] - } - - configs = [ ":default_warnings" ] -} - -config("no_chromium_code") { - cflags = [] - cflags_cc = [] - defines = [] - - if (is_win) { - cflags += [ - "/W3", # Warning level 3. - "/wd4800", # Disable warning when forcing value to bool. - "/wd4267", # TODO(jschuh): size_t to int. - "/wd4996", # Deprecated function warning. - ] - defines += [ - "_CRT_NONSTDC_NO_WARNINGS", - "_CRT_NONSTDC_NO_DEPRECATE", - ] - } else { - # GCC may emit unsuppressible warnings so don't add -Werror for no chromium - # code. crbug.com/589724 - if (treat_warnings_as_errors && is_clang) { - cflags += [ "-Werror" ] - ldflags = [ "-Werror" ] - } - if (is_clang && !is_nacl) { - # TODO(thakis): Remove !is_nacl once - # https://codereview.webrtc.org/1552863002/ made its way into chromium. - cflags += [ "-Wall" ] - } - } - - if (is_clang) { - cflags += [ - # Lots of third-party libraries have unused variables. Instead of - # suppressing them individually, we just blanket suppress them here. - "-Wno-unused-variable", - ] - } - - configs = [ ":default_warnings" ] -} - -# noshadowing ----------------------------------------------------------------- -# -# Allows turning -Wshadow on. - -config("noshadowing") { - # This flag has to be disabled for nacl because the nacl compiler is too - # strict about shadowing. - if (is_clang && !is_nacl) { - cflags = [ "-Wshadow" ] - } -} - -# rtti ------------------------------------------------------------------------ -# -# Allows turning Run-Time Type Identification on or off. - -config("rtti") { - if (is_win) { - cflags_cc = [ "/GR" ] - } else { - cflags_cc = [ "-frtti" ] - } -} - -config("no_rtti") { - # Some sanitizer configs may require RTTI to be left enabled globally - if (!use_rtti) { - if (is_win) { - cflags_cc = [ "/GR-" ] - } else { - cflags_cc = [ "-fno-rtti" ] - cflags_objcc = cflags_cc - } - } -} - -# thin_archive ----------------------------------------------------------------- -# -# Enables thin archives on posix. Regular archives directly include the object -# files used to generate it. Thin archives merely reference the object files. -# This makes building them faster since it requires less disk IO, but is -# inappropriate if you wish to redistribute your static library. -# This config is added to the global config, so thin archives should already be -# enabled. If you want to make a distributable static library, you need to do 2 -# things: -# 1. Set complete_static_lib so that all dependencies of the library make it -# into the library. See `gn help complete_static_lib` for details. -# 2. Remove the thin_archive config, so that the .a file actually contains all -# .o files, instead of just references to .o files in the build directoy -config("thin_archive") { - # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't - # have a "thin archive" mode (it does accept -T, but it means truncating - # archive names to 16 characters, which is not what we want). - if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) { - arflags = [ "-T" ] - } -} - -# exceptions ------------------------------------------------------------------- -# -# Allows turning Exceptions on or off. -# Note: exceptions are disallowed in Google code. - -config("exceptions") { - if (is_win) { - # Enables exceptions in the STL. - if (!use_custom_libcxx) { - defines = [ "_HAS_EXCEPTIONS=1" ] - } - cflags_cc = [ "/EHsc" ] - } else { - cflags_cc = [ "-fexceptions" ] - cflags_objcc = cflags_cc - } -} - -config("no_exceptions") { - if (is_win) { - # Disables exceptions in the STL. - # libc++ uses the __has_feature macro to control whether to use exceptions, - # so defining this macro is unnecessary. Defining _HAS_EXCEPTIONS to 0 also - # breaks libc++ because it depends on MSVC headers that only provide certain - # declarations if _HAS_EXCEPTIONS is 1. Those MSVC headers do not use - # exceptions, despite being conditional on _HAS_EXCEPTIONS. - if (!use_custom_libcxx) { - defines = [ "_HAS_EXCEPTIONS=0" ] - } - } else { - cflags_cc = [ "-fno-exceptions" ] - cflags_objcc = cflags_cc - } -} - -# Warnings --------------------------------------------------------------------- - -# This will generate warnings when using Clang if code generates exit-time -# destructors, which will slow down closing the program. -# TODO(thakis): Make this a blacklist instead, http://crbug.com/101600 -config("wexit_time_destructors") { - # TODO: Enable on Windows too, http://crbug.com/404525 - if (is_clang && !is_win) { - cflags = [ "-Wexit-time-destructors" ] - } -} - -# On Windows compiling on x64, VC will issue a warning when converting -# size_t to int because it will truncate the value. Our code should not have -# these warnings and one should use a static_cast or a checked_cast for the -# conversion depending on the case. However, a lot of code still needs to be -# fixed. Apply this config to such targets to disable the warning. -# -# Note that this can be applied regardless of platform and architecture to -# clean up the call sites. This will only apply the flag when necessary. -# -# TODO(jschuh): crbug.com/167187 fix this and delete this config. -config("no_size_t_to_int_warning") { - if (is_win && current_cpu == "x64") { - cflags = [ "/wd4267" ] - } -} - -# Some code presumes that pointers to structures/objects are compatible -# regardless of whether what they point to is already known to be valid. -# gcc 4.9 and earlier had no way of suppressing this warning without -# suppressing the rest of them. Here we centralize the identification of -# the gcc 4.9 toolchains. -config("no_incompatible_pointer_warnings") { - cflags = [] - if (is_clang) { - cflags += [ "-Wno-incompatible-pointer-types" ] - } else if (current_cpu == "mipsel" || current_cpu == "mips64el") { - cflags += [ "-w" ] - } else if (is_chromeos && current_cpu == "arm") { - cflags += [ "-w" ] - } -} - -# Optimization ----------------------------------------------------------------- -# -# The BUILDCONFIG file sets the "default_optimization" config on targets by -# default. It will be equivalent to either "optimize" (release) or -# "no_optimize" (debug) optimization configs. -# -# You can override the optimization level on a per-target basis by removing the -# default config and then adding the named one you want: -# -# configs -= [ "//build/config/compiler:default_optimization" ] -# configs += [ "//build/config/compiler:optimize_max" ] - -# Shared settings for both "optimize" and "optimize_max" configs. -# IMPORTANT: On Windows "/O1" and "/O2" must go before the common flags. -if (is_win) { - common_optimize_on_cflags = [ - "/Ob2", # Both explicit and auto inlining. - "/Oy-", # Disable omitting frame pointers, must be after /O2. - "/Zc:inline", # Remove unreferenced COMDAT (faster links). - ] - if (!is_asan) { - common_optimize_on_cflags += [ - # Put data in separate COMDATs. This allows the linker - # to put bit-identical constants at the same address even if - # they're unrelated constants, which saves binary size. - # This optimization can't be used when ASan is enabled because - # it is not compatible with the ASan ODR checker. - "/Gw", - ] - } - common_optimize_on_ldflags = [] - - # /OPT:ICF is not desirable in Debug builds, since code-folding can result in - # misleading symbols in stack traces. It is also incompatible with - # incremental linking, which we enable for both Debug and component builds. - if (!is_debug && !is_component_build) { - common_optimize_on_ldflags += [ "/OPT:ICF" ] # Redundant COMDAT folding. - } - - if (is_official_build) { - common_optimize_on_ldflags += [ "/OPT:REF" ] # Remove unreferenced data. - - # TODO(thakis): Remove is_clang here, https://crbug.com/598772 - if (!use_lld && !is_clang) { - common_optimize_on_ldflags += [ - # Set the number of LTCG code-gen threads to eight. The default is four. - # This gives a 5-10% link speedup. - "/cgthreads:8", - ] - if (use_incremental_wpo) { - # Incremental Link-time code generation. - common_optimize_on_ldflags += [ "/LTCG:INCREMENTAL" ] - } else { - common_optimize_on_ldflags += [ "/LTCG" ] # Link-time code generation. - } - if (full_wpo_on_official) { - if (use_incremental_wpo) { - arflags = [ "/LTCG:INCREMENTAL" ] - } else { - arflags = [ "/LTCG" ] - } - } - } - } -} else { - common_optimize_on_cflags = [] - common_optimize_on_ldflags = [] - - if (is_android) { - # TODO(jdduke) Re-enable on mips after resolving linking - # issues with libc++ (crbug.com/456380). - if (current_cpu != "mipsel" && current_cpu != "mips64el") { - common_optimize_on_ldflags += [ - # Warn in case of text relocations. - "-Wl,--warn-shared-textrel", - ] - } - } - - if (is_mac || is_ios) { - if (symbol_level == 2) { - # Mac dead code stripping requires symbols. - common_optimize_on_ldflags += [ "-Wl,-dead_strip" ] - } - } else if (current_os != "aix") { - # Non-Mac Posix flags. - # Aix does not support these. - - common_optimize_on_cflags += [ - # Don't emit the GCC version ident directives, they just end up in the - # .comment section taking up binary size. - "-fno-ident", - - # Put data and code in their own sections, so that unused symbols - # can be removed at link time with --gc-sections. - "-fdata-sections", - "-ffunction-sections", - ] - - common_optimize_on_ldflags += [ - # Specifically tell the linker to perform optimizations. - # See http://lwn.net/Articles/192624/ . - # -O2 enables string tail merge optimization in gold and lld. - "-Wl,-O2", - "-Wl,--gc-sections", - ] - } -} - -config("default_stack_frames") { - if (is_posix || is_fuchsia) { - if (enable_frame_pointers) { - cflags = [ "-fno-omit-frame-pointer" ] - } else { - cflags = [ "-fomit-frame-pointer" ] - } - } - # On Windows, the flag to enable framepointers "/Oy-" must always come after - # the optimization flag [e.g. "/O2"]. The optimization flag is set by one of - # the "optimize" configs, see rest of this file. The ordering that cflags are - # applied is well-defined by the GN spec, and there is no way to ensure that - # cflags set by "default_stack_frames" is applied after those set by an - # "optimize" config. Similarly, there is no way to propagate state from this - # config into the "optimize" config. We always apply the "/Oy-" config in the - # definition for common_optimize_on_cflags definition, even though this may - # not be correct. -} - -# Default "optimization on" config. -config("optimize") { - if (is_win) { - # TODO(thakis): Remove is_clang here, https://crbug.com/598772 - if (is_official_build && full_wpo_on_official && !is_clang) { - common_optimize_on_cflags += [ - "/GL", # Whole program optimization. - - # Disable Warning 4702 ("Unreachable code") for the WPO/PGO builds. - # Probably anything that this would catch that wouldn't be caught in a - # normal build isn't going to actually be a bug, so the incremental - # value of C4702 for PGO builds is likely very small. - "/wd4702", - ] - } - - # Favor size over speed, /O1 must be before the common flags. The GYP - # build also specifies /Os and /GF but these are implied by /O1. - cflags = [ "/O1" ] + common_optimize_on_cflags + [ "/Oi" ] - } else if (optimize_for_size && !is_nacl) { - # Favor size over speed. - # TODO(crbug.com/718650): Fix -Os in PNaCl compiler and remove the is_nacl - # guard above. - if (is_clang) { - cflags = [ "-Oz" ] + common_optimize_on_cflags - } else { - cflags = [ "-Os" ] + common_optimize_on_cflags - } - } else { - cflags = [ "-O2" ] + common_optimize_on_cflags - } - ldflags = common_optimize_on_ldflags -} - -# Same config as 'optimize' but without the WPO flag. -config("optimize_no_wpo") { - if (is_win) { - # Favor size over speed, /O1 must be before the common flags. The GYP - # build also specifies /Os and /GF but these are implied by /O1. - cflags = [ "/O1" ] + common_optimize_on_cflags + [ "/Oi" ] - } else if (optimize_for_size && !is_nacl) { - # Favor size over speed. - # TODO(crbug.com/718650): Fix -Os in PNaCl compiler and remove the is_nacl - # guard above. - if (is_clang) { - cflags = [ "-Oz" ] + common_optimize_on_cflags - } else { - cflags = [ "-Os" ] + common_optimize_on_cflags - } - } else if (optimize_for_fuzzing) { - cflags = [ "-O1" ] + common_optimize_on_cflags - } else { - cflags = [ "-O2" ] + common_optimize_on_cflags - } - ldflags = common_optimize_on_ldflags -} - -# Turn off optimizations. -config("no_optimize") { - if (is_win) { - cflags = [ - "/Od", # Disable optimization. - "/Ob0", # Disable all inlining (on by default). - "/GF", # Enable string pooling (off by default). - ] - } else if (is_android && !android_full_debug) { - # On Android we kind of optimize some things that don't affect debugging - # much even when optimization is disabled to get the binary size down. - if (is_clang) { - cflags = [ "-Oz" ] + common_optimize_on_cflags - } else { - cflags = [ "-Os" ] + common_optimize_on_cflags - } - } else { - cflags = [ "-O0" ] - ldflags = [] - } -} - -# Turns up the optimization level. On Windows, this implies whole program -# optimization and link-time code generation which is very expensive and should -# be used sparingly. -config("optimize_max") { - if (is_nacl && is_nacl_irt) { - # The NaCl IRT is a special case and always wants its own config. - # Various components do: - # if (!is_debug) { - # configs -= [ "//build/config/compiler:default_optimization" ] - # configs += [ "//build/config/compiler:optimize_max" ] - # } - # So this config has to have the selection logic just like - # "default_optimization", below. - configs = [ "//build/config/nacl:irt_optimize" ] - } else { - ldflags = common_optimize_on_ldflags - if (is_win) { - # Favor speed over size, /O2 must be before the common flags. The GYP - # build also specifies /Ot, /Oi, and /GF, but these are implied by /O2. - cflags = [ "/O2" ] + common_optimize_on_cflags - - if (is_official_build) { - if (!is_clang) { - cflags += [ - "/GL", # Whole program optimization. - - # Disable Warning 4702 ("Unreachable code") for the WPO/PGO builds. - # Probably anything that this would catch that wouldn't be caught - # in a normal build isn't going to actually be a bug, so the - # incremental value of C4702 for PGO builds is likely very small. - "/wd4702", - ] - } - # TODO(crbug.com/598772): Enable -flto for Clang. - } - } else if (optimize_for_fuzzing) { - cflags = [ "-O1" ] + common_optimize_on_cflags - } else { - cflags = [ "-O2" ] + common_optimize_on_cflags - } - } -} - -# This config can be used to override the default settings for per-component -# and whole-program optimization, optimizing the particular target for speed -# instead of code size. This config is exactly the same as "optimize_max" -# except that we use -O3 instead of -O2 on non-win, non-IRT platforms. -# -# TODO(crbug.com/621335) - rework how all of these configs are related -# so that we don't need this disclaimer. -config("optimize_speed") { - if (is_nacl && is_nacl_irt) { - # The NaCl IRT is a special case and always wants its own config. - # Various components do: - # if (!is_debug) { - # configs -= [ "//build/config/compiler:default_optimization" ] - # configs += [ "//build/config/compiler:optimize_max" ] - # } - # So this config has to have the selection logic just like - # "default_optimization", below. - configs = [ "//build/config/nacl:irt_optimize" ] - } else { - ldflags = common_optimize_on_ldflags - if (is_win) { - # Favor speed over size, /O2 must be before the common flags. The GYP - # build also specifies /Ot, /Oi, and /GF, but these are implied by /O2. - cflags = [ "/O2" ] + common_optimize_on_cflags - - # TODO(thakis): Remove is_clang here, https://crbug.com/598772 - if (is_official_build && !is_clang) { - cflags += [ - "/GL", # Whole program optimization. - - # Disable Warning 4702 ("Unreachable code") for the WPO/PGO builds. - # Probably anything that this would catch that wouldn't be caught in a - # normal build isn't going to actually be a bug, so the incremental - # value of C4702 for PGO builds is likely very small. - "/wd4702", - ] - } - } else if (optimize_for_fuzzing) { - cflags = [ "-O1" ] + common_optimize_on_cflags - } else { - cflags = [ "-O3" ] + common_optimize_on_cflags - } - } -} - -config("optimize_fuzzing") { - cflags = [ "-O1" ] + common_optimize_on_cflags - ldflags = common_optimize_on_ldflags - visibility = [ ":default_optimization" ] -} - -# The default optimization applied to all targets. This will be equivalent to -# either "optimize" or "no_optimize", depending on the build flags. -config("default_optimization") { - if (is_nacl && is_nacl_irt) { - # The NaCl IRT is a special case and always wants its own config. - # It gets optimized the same way regardless of the type of build. - configs = [ "//build/config/nacl:irt_optimize" ] - } else if (is_debug) { - configs = [ ":no_optimize" ] - } else if (optimize_for_fuzzing) { - assert(!is_win, "Fuzzing optimize level not supported on Windows") - - # Coverage build is quite slow. Using "optimize_for_fuzzing" makes it even - # slower as it uses "-O1" instead of "-O3". Prevent that from happening. - assert(!use_clang_coverage, - "optimize_for_fuzzing=true should not be used with " + - "use_clang_coverage=true.") - configs = [ ":optimize_fuzzing" ] - } else { - configs = [ ":optimize" ] - } -} - -_clang_sample_profile = "" -if (is_clang && current_toolchain == default_toolchain) { - if (clang_sample_profile_path != "") { - _clang_sample_profile = clang_sample_profile_path - } else if (clang_use_default_sample_profile) { - assert(build_with_chromium, - "Our default profiles currently only apply to Chromium") - assert(is_android || is_desktop_linux, - "The current platform has no default profile") - _clang_sample_profile = rebase_path("//chrome/android/profiles/afdo.prof") - } -} - -# Clang offers a way to assert that AFDO profiles are accurate, which causes it -# to optimize functions not represented in a profile more aggressively for size. -# This config can be toggled in cases where shaving off binary size hurts -# performance too much. -config("afdo_optimize_size") { - if (_clang_sample_profile != "" && sample_profile_is_accurate) { - cflags = [ "-fprofile-sample-accurate" ] - } -} - -# GCC and clang support a form of profile-guided optimization called AFDO. -# There are some targeted places that AFDO regresses (and an icky interaction -# between //base/allocator:tcmalloc and AFDO on GCC), so we provide a separate -# config to allow AFDO to be disabled per-target. -config("afdo") { - if (is_clang) { - if (_clang_sample_profile != "") { - cflags = [ "-fprofile-sample-use=${_clang_sample_profile}" ] - inputs = [ - _clang_sample_profile, - ] - } - } else if (auto_profile_path != "" && current_toolchain == default_toolchain) { - cflags = [ "-fauto-profile=${auto_profile_path}" ] - inputs = [ - auto_profile_path, - ] - } -} - -# Symbols ---------------------------------------------------------------------- - -# The BUILDCONFIG file sets the "default_symbols" config on targets by -# default. It will be equivalent to one the three specific symbol levels. -# -# You can override the symbol level on a per-target basis by removing the -# default config and then adding the named one you want: -# -# configs -= [ "//build/config/compiler:default_symbols" ] -# configs += [ "//build/config/compiler:symbols" ] - -# Full symbols. -config("symbols") { - if (is_win) { - if (use_goma || is_clang) { - # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. - cflags = [ "/Z7" ] # Debug information in the .obj files. - } else { - cflags = [ "/Zi" ] # Produce PDB file, no edit and continue. - } - - if (is_win_fastlink && !use_lld) { - # TODO(hans): is_win_fastlink=true is incompatible with use_lld. However, - # some developers might have enabled it manually, so to ease the - # transition to lld, just ignore it rather than asserting. Eventually we - # want to assert instead. - - # Tell VS 2015+ to create a PDB that references debug - # information in .obj and .lib files instead of copying - # it all. This flag is incompatible with /PROFILE - ldflags = [ "/DEBUG:FASTLINK" ] - } else if (is_clang && use_lld && use_ghash) { - cflags += [ - "-mllvm", - "-emit-codeview-ghash-section", - ] - ldflags = [ "/DEBUG:GHASH" ] - } else { - ldflags = [ "/DEBUG" ] - } - - if (is_clang) { - # /DEBUG:FASTLINK requires every object file to have standalone debug - # information. - if (is_win_fastlink && !use_lld) { - cflags += [ "-fstandalone-debug" ] - } else { - cflags += [ "-fno-standalone-debug" ] - } - } - } else { - if (is_mac || is_ios) { - cflags = [ "-gdwarf-2" ] - if (is_mac && enable_dsyms) { - # If generating dSYMs, specify -fno-standalone-debug. This was - # originally specified for https://crbug.com/479841 because dsymutil - # could not handle a 4GB dSYM file. But dsymutil from Xcodes prior to - # version 7 also produces debug data that is incompatible with Breakpad - # dump_syms, so this is still required (https://crbug.com/622406). - cflags += [ "-fno-standalone-debug" ] - } - } else { - cflags = [] - if (!use_debug_fission && target_cpu == "arm") { - # dump_syms has issues with dwarf4 on arm, https://crbug.com/744956 - # TODO(thakis): Remove this again once dump_syms is fixed. - # - # debug fission needs DWARF DIEs to be emitted at version 4. - # Chrome OS emits Debug Frame in DWARF1 to make breakpad happy. [1] - # Unless Android needs debug fission, DWARF3 is the simplest solution. - # - # [1] crrev.com/a81d5ade0b043208e06ad71a38bcf9c348a1a52f - cflags += [ "-gdwarf-3" ] - } - cflags += [ "-g2" ] - } - if (use_debug_fission && !is_nacl && !is_android) { - # NOTE: Some Chrome OS builds globally set |use_debug_fission| to true, - # but they also build some targets against Android toolchains which aren't - # compatible with it. - # - # TODO(https://crbug.com/837032): See if we can clean this up by e.g. not - # setting use_debug_fission globally. - cflags += [ "-gsplit-dwarf" ] - } - asmflags = cflags - ldflags = [] - - # TODO(thakis): Figure out if there's a way to make this go for 32-bit, - # currently we get "warning: - # obj/native_client/src/trusted/service_runtime/sel_asm/nacl_switch_32.o: - # DWARF info may be corrupt; offsets in a range list entry are in different - # sections" there. Maybe just a bug in nacl_switch_32.S. - if (!is_mac && !is_ios && !is_nacl && target_cpu != "x86" && - (use_gold || use_lld)) { - if (is_clang) { - # This flag enables the GNU-format pubnames and pubtypes sections, - # which lld needs in order to generate a correct GDB index. - # TODO(pcc): Try to make lld understand non-GNU-format pubnames - # sections (llvm.org/PR34820). - cflags += [ "-ggnu-pubnames" ] - } - ldflags += [ "-Wl,--gdb-index" ] - } - } -} - -# Minimal symbols. -# This config guarantees to hold symbol for stack trace which are shown to user -# when crash happens in unittests running on buildbot. -config("minimal_symbols") { - if (is_win) { - # Linker symbols for backtraces only. - cflags = [] - ldflags = [ "/DEBUG" ] - } else { - cflags = [] - if (target_cpu == "arm") { - # dump_syms has issues with dwarf4 on arm, https://crbug.com/744956 - # TODO(thakis): Remove this again once dump_syms is fixed. - cflags += [ "-gdwarf-3" ] - } - cflags += [ "-g1" ] - ldflags = [] - if (is_android && is_clang) { - # Android defaults to symbol_level=1 builds in production builds - # (https://crbug.com/648948), but clang, unlike gcc, doesn't emit - # DW_AT_linkage_name in -g1 builds. -fdebug-info-for-profiling enables - # that (and a bunch of other things we don't need), so that we get - # qualified names in stacks. - # TODO(thakis): Consider making clang emit DW_AT_linkage_name in -g1 mode; - # failing that consider doing this on non-Android too. - cflags += [ "-fdebug-info-for-profiling" ] - } - - # Note: -gsplit-dwarf implicitly turns on -g2 with clang, so don't pass it. - asmflags = cflags - } -} - -# No symbols. -config("no_symbols") { - if (!is_win) { - cflags = [ "-g0" ] - asmflags = cflags - } -} - -# Default symbols. -config("default_symbols") { - if (symbol_level == 0) { - configs = [ ":no_symbols" ] - } else if (symbol_level == 1) { - configs = [ ":minimal_symbols" ] - } else if (symbol_level == 2) { - configs = [ ":symbols" ] - } else { - assert(false) - } - - # This config is removed by base unittests apk. - if (is_android && is_clang && strip_debug_info) { - configs += [ ":strip_debug" ] - } -} - -config("strip_debug") { - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += [ "-Wl,--strip-debug" ] -} - -if (is_ios || is_mac) { - # On Mac and iOS, this enables support for ARC (automatic ref-counting). - # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html. - config("enable_arc") { - common_flags = [ "-fobjc-arc" ] - cflags_objc = common_flags - cflags_objcc = common_flags - } -}
diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni deleted file mode 100644 index 0b13302..0000000 --- a/build/config/compiler/compiler.gni +++ /dev/null
@@ -1,235 +0,0 @@ -# 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. - -if (is_android) { - import("//build/config/android/abi.gni") -} -import("//build/config/arm.gni") -import("//build/config/chrome_build.gni") -import("//build/config/chromecast_build.gni") -import("//build/config/compiler/pgo/pgo.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/toolchain/goma.gni") -import("//build/toolchain/toolchain.gni") -import("//build_overrides/build.gni") - -declare_args() { - # How many symbols to include in the build. This affects the performance of - # the build since the symbols are large and dealing with them is slow. - # 2 means regular build with symbols. - # 1 means minimal symbols, usually enough for backtraces only. Symbols with - # internal linkage (static functions or those in anonymous namespaces) may not - # appear when using this level. - # 0 means no symbols. - # -1 means auto-set according to debug/release and platform. - symbol_level = -1 - - # Compile in such a way as to enable profiling of the generated code. For - # example, don't omit the frame pointer and leave in symbols. - enable_profiling = false - - # use_debug_fission: whether to use split DWARF debug info - # files. This can reduce link time significantly, but is incompatible - # with some utilities such as icecc and ccache. Requires gold and - # gcc >= 4.8 or clang. - # http://gcc.gnu.org/wiki/DebugFission - # - # This is a placeholder value indicating that the code below should set - # the default. This is necessary to delay the evaluation of the default - # value expression until after its input values such as use_gold have - # been set, e.g. by a toolchain_args() block. - use_debug_fission = "default" - - # Enables support for ThinLTO, which links 3x-10x faster than full LTO. See - # also http://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html - use_thin_lto = is_cfi - - # Tell VS to create a PDB that references information in .obj files rather - # than copying it all. This should improve linker performance. mspdbcmf.exe - # can be used to convert a fastlink pdb to a normal one. - is_win_fastlink = false - - # Whether or not we should turn on incremental WPO. Only affects the VS - # Windows build. - use_incremental_wpo = false - - # Whether or not we should use position independent code. - use_pic = true - - # Whether we're using a sample profile collected on an architecture different - # than the one we're compiling for. - # - # It's currently not possible to collect AFDO profiles on anything but - # x86{,_64}. - using_mismatched_sample_profile = current_cpu != "x64" && current_cpu != "x86" -} - -assert(!is_cfi || use_thin_lto, "CFI requires ThinLTO") - -# Exclude unwind tables for official builds as unwinding can be done from stack -# dumps produced by Crashpad at a later time "offline" in the crash server. -# For unofficial (e.g. development) builds and non-Chrome branded (e.g. Cronet -# which doesn't use Crashpad, crbug.com/479283) builds it's useful to be able -# to unwind at runtime. -exclude_unwind_tables = - (is_chrome_branded && is_official_build) || - (is_chromecast && !is_cast_desktop_build && !is_debug && !is_fuchsia) - -# If true, optimize for size. Does not affect windows builds. -# Linux & Mac favor speed over size. -# TODO(brettw) it's weird that Mac and desktop Linux are different. We should -# explore favoring size over speed in this case as well. -optimize_for_size = is_android || is_ios - -declare_args() { - # Whether we should consider the profile we're using to be accurate. Accurate - # profiles have the benefit of (potentially substantial) binary size - # reductions, by instructing the compiler to optimize cold and uncovered - # functions heavily for size. This often comes at the cost of performance. - sample_profile_is_accurate = optimize_for_size -} - -# Determine whether to enable or disable frame pointers, based on the platform -# and build arguments. -if (is_mac || is_ios || is_linux) { - enable_frame_pointers = true -} else if (is_win) { - # 64-bit Windows ABI doesn't support frame pointers. - if (current_cpu == "x64") { - enable_frame_pointers = false - } else { - enable_frame_pointers = true - } -} else if (is_chromeos) { - # ChromeOS generally prefers frame pointers, to support CWP. - # However, Clang does not currently generate usable frame pointers in ARM - # 32-bit builds (https://bugs.llvm.org/show_bug.cgi?id=18505) so disable them - # there to avoid the unnecessary overhead. - enable_frame_pointers = current_cpu != "arm" -} else if (is_android) { - enable_frame_pointers = - enable_profiling || - # Ensure that stacks from arm64 crash dumps are usable (crbug.com/391706). - current_cpu == "arm64" || - # For x86 Android, unwind tables are huge without frame pointers - # (crbug.com/762629). Enabling frame pointers grows the code size slightly - # but overall shrinks binaries considerably by avoiding huge unwind - # tables. - (current_cpu == "x86" && !exclude_unwind_tables && optimize_for_size) || - using_sanitizer -} else { - # Explicitly ask for frame pointers, otherwise: - # * Stacks may be missing for sanitizer and profiling builds. - # * Debug tcmalloc can crash (crbug.com/636489). - enable_frame_pointers = using_sanitizer || enable_profiling || is_debug -} - -# In general assume that if we have frame pointers then we can use them to -# unwind the stack. However, this requires that they are enabled by default for -# most translation units, that they are emitted correctly, and that the -# compiler or platform provides a way to access them. -can_unwind_with_frame_pointers = enable_frame_pointers -if (current_cpu == "arm" && arm_use_thumb) { - # We cannot currently unwind ARM Thumb frame pointers correctly. - # See https://bugs.llvm.org/show_bug.cgi?id=18505 - can_unwind_with_frame_pointers = false -} else if (is_win) { - # Windows 32-bit does provide frame pointers, but the compiler does not - # provide intrinsics to access them, so we don't use them. - can_unwind_with_frame_pointers = false -} - -assert(!can_unwind_with_frame_pointers || enable_frame_pointers) - -# Unwinding with CFI table is only possible on static library builds and -# requried only when frame pointers are not enabled. -can_unwind_with_cfi_table = is_android && !is_component_build && - !enable_frame_pointers && current_cpu == "arm" - -declare_args() { - # Whether or not the official builds should be built with full WPO. Enabled by - # default for the PGO and the x64 builds. - if (chrome_pgo_phase > 0) { - full_wpo_on_official = true - } else { - full_wpo_on_official = false - } -} - -declare_args() { - # Set to true to use lld, the LLVM linker. This flag may be used on Windows, - # Linux or Fuchsia. - # TODO(pcc): Enable lld on more architectures on Linux. E.g. we probably need - # to fix some of crbug.com/742655 to enable it on ARM. - use_lld = - is_clang && - (is_win || is_fuchsia || (use_thin_lto && target_os != "chromeos") || - (is_linux && current_cpu == "x64" && target_os != "chromeos") || - (is_android && (current_cpu != "arm" || arm_version >= 7) && - current_cpu != "mipsel" && current_cpu != "mips64el")) -} - -declare_args() { - # Whether to use the gold linker from binutils instead of lld or bfd. - use_gold = !use_lld && !(is_chromecast && is_linux && - (current_cpu == "arm" || current_cpu == "mipsel")) && - ((is_linux && (current_cpu == "x64" || current_cpu == "x86" || - current_cpu == "arm" || current_cpu == "mipsel" || - current_cpu == "mips64el")) || - (is_android && (current_cpu == "x86" || current_cpu == "x64" || - current_cpu == "arm" || current_cpu == "arm64"))) -} - -# If it wasn't manually set, set to an appropriate default. -assert(symbol_level >= -1 && symbol_level <= 2, "Invalid symbol_level") -if (symbol_level == -1) { - if (is_android && use_order_profiling) { - # With instrumentation enabled, debug info puts libchrome.so over 4gb, which - # causes the linker to produce an invalid ELF. http://crbug.com/574476 - symbol_level = 0 - } else if (is_android && !is_component_build && - !(android_64bit_target_cpu && !build_apk_secondary_abi)) { - # Reduce symbol level when it will cause invalid elf files to be created - # (due to file size). https://crbug.com/648948. - symbol_level = 1 - } else if (is_win && use_goma && !is_clang) { - # goma doesn't support PDB files, so we disable symbols during goma - # compilation because otherwise the redundant debug information generated - # by visual studio (repeated in every .obj file) makes linker - # memory consumption and link times unsustainable (crbug.com/630074). - # Clang on windows does not have this issue. - # If you use is_win_fastlink = true or lld or clang then you can set - # symbol_level = 2 when using goma. - symbol_level = 1 - } else if ((!is_nacl && !is_linux && !is_fuchsia) || is_debug || - is_official_build || is_chromecast) { - # Linux builds slower by having symbols as part of the target binary, - # whereas Mac and Windows have them separate, so in Release Linux, default - # them off, but keep them on for Official builds and Chromecast builds. - symbol_level = 2 - } else if (using_sanitizer) { - # Sanitizers require symbols for filename suppressions to work. - symbol_level = 1 - } else { - symbol_level = 0 - } -} else if (symbol_level == 2) { - if (is_win) { - # See crbug.com/630074 - assert(is_win_fastlink || use_lld || !use_goma || is_clang, - "VC++ goma builds that use symbol_level 2 must use " + - "is_win_fastlink or use_lld.") - } -} - -# Assert that the configuration isn't going to hit https://crbug.com/648948. -# An exception is made when target_os == "chromeos" as we only use the Android -# toolchain there to build relatively small binaries. -assert(ignore_elf32_limitations || !is_android || target_os == "chromeos" || - (android_64bit_target_cpu && !build_apk_secondary_abi) || - is_component_build || symbol_level < 2, - "Android 32-bit non-component builds cannot have symbol_level=2 " + - "due to 4GiB file size limit, see https://crbug.com/648948. " + - "If you really want to try this out, " + - "set ignore_elf32_limitations=true.")
diff --git a/build/config/compiler/pgo/BUILD.gn b/build/config/compiler/pgo/BUILD.gn deleted file mode 100644 index bb147a6..0000000 --- a/build/config/compiler/pgo/BUILD.gn +++ /dev/null
@@ -1,101 +0,0 @@ -# Copyright 2016 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/config/clang/clang.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/compiler/pgo/pgo.gni") - -# Configuration that enables PGO instrumentation. -config("pgo_instrumentation_flags") { - visibility = [ ":default_pgo_flags" ] - cflags = [] - ldflags = [] - - # Only add flags when chrome_pgo_phase == 1, so that variables we would use - # are not required to be defined when we're not actually using PGO. - if (chrome_pgo_phase == 1) { - if (is_clang) { - cflags = [ "-fprofile-instr-generate" ] - if (is_win) { - # Normally, we pass -fprofile-instr-generate to the compiler and it - # automatically passes the right flags to the linker. - # However, on Windows, we call the linker directly, without going - # through the compiler driver. This means we need to pass the right - # flags ourselves. - _clang_rt_base_path = - "$clang_base_path/lib/clang/$clang_version/lib/windows" - if (target_cpu == "x86") { - _clang_rt_suffix = "-i386.lib" - } else if (target_cpu == "x64") { - _clang_rt_suffix = "-x86_64.lib" - } - assert(_clang_rt_suffix != "", "target CPU $target_cpu not supported") - ldflags += [ "$_clang_rt_base_path/clang_rt.profile$_clang_rt_suffix" ] - } else { - ldflags += [ "-fprofile-instr-generate" ] - } - } else if (is_win) { - ldflags = [ - # In MSVC, we must use /LTCG when using PGO. - "/LTCG", - - # Make sure that enough memory gets allocated for the PGO profiling - # buffers and also cap this memory. Usually a PGI instrumented build - # of chrome_child.dll requires ~55MB of memory for storing its counter - # etc, normally the linker should automatically choose an appropriate - # amount of memory but it doesn't always do a good estimate and - # sometime allocates too little or too much (and so the instrumented - # image fails to start). Making sure that the buffer has a size in the - # [128 MB, 512 MB] range should prevent this from happening. - "/GENPROFILE:MEMMIN=134217728", - "/GENPROFILE:MEMMAX=536870912", - "/PogoSafeMode", - ] - } - } -} - -# Configuration that enables optimization using profile data. -config("pgo_optimization_flags") { - visibility = [ ":default_pgo_flags" ] - cflags = [] - ldflags = [] - - # Only add flags when chrome_pgo_phase == 2, so that variables we would use - # are not required to be defined when we're not actually using PGO. - if (chrome_pgo_phase == 2) { - if (is_clang) { - assert(pgo_data_path != "", - "Please set pgo_data_path to point at the profile data") - cflags += [ - "-fprofile-instr-use=$pgo_data_path", - - # It's possible to have some profile data legitimately missing, - # and at least some profile data always ends up being considered - # out of date, so make sure we don't error for those cases. - "-Wno-profile-instr-unprofiled", - "-Wno-error=profile-instr-out-of-date", - ] - } else if (is_win) { - ldflags += [ - # In MSVC, we must use /LTCG when using PGO. - "/LTCG", - "/USEPROFILE", - ] - } - } -} - -# Applies flags necessary when profile-guided optimization is used. -# Flags are only added if PGO is enabled, so that this config is safe to -# include by default. -config("default_pgo_flags") { - if (chrome_pgo_phase == 0) { - # Nothing. This config should be a no-op when chrome_pgo_phase == 0. - } else if (chrome_pgo_phase == 1) { - configs = [ ":pgo_instrumentation_flags" ] - } else if (chrome_pgo_phase == 2) { - configs = [ ":pgo_optimization_flags" ] - } -}
diff --git a/build/config/compiler/pgo/pgo.gni b/build/config/compiler/pgo/pgo.gni deleted file mode 100644 index 5da004d..0000000 --- a/build/config/compiler/pgo/pgo.gni +++ /dev/null
@@ -1,17 +0,0 @@ -# Copyright 2016 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. - -declare_args() { - # Specify the current PGO phase. - # Here's the different values that can be used: - # 0 : Means that PGO is turned off. - # 1 : Used during the PGI (instrumentation) phase. - # 2 : Used during the PGO (optimization) phase. - # - # TODO(sebmarchand): Add support for the PGU (update) phase. - chrome_pgo_phase = 0 - - # When using chrome_pgo_phase = 2, read profile data from this path. - pgo_data_path = "" -}
diff --git a/build/config/coverage/BUILD.gn b/build/config/coverage/BUILD.gn deleted file mode 100644 index 6a6ec88..0000000 --- a/build/config/coverage/BUILD.gn +++ /dev/null
@@ -1,23 +0,0 @@ -# Copyright 2017 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/config/coverage/coverage.gni") - -config("default_coverage") { - if (use_clang_coverage) { - cflags = [ - "-fprofile-instr-generate", - "-fcoverage-mapping", - "-fno-use-cxa-atexit", - - # Following experimental flags removes unused header functions from the - # coverage mapping data embedded in the test binaries, and the reduction - # of binary size enables building Chrome's large unit test targets on - # MacOS. Please refer to crbug.com/796290 for more details. - "-mllvm", - "-limited-coverage-experimental=true", - ] - ldflags = [ "-fprofile-instr-generate" ] - } -}
diff --git a/build/config/coverage/OWNERS b/build/config/coverage/OWNERS deleted file mode 100644 index 70d27b6..0000000 --- a/build/config/coverage/OWNERS +++ /dev/null
@@ -1,3 +0,0 @@ -inferno@chromium.org -mmoroz@chromium.org -ochang@chromium.org
diff --git a/build/config/coverage/coverage.gni b/build/config/coverage/coverage.gni deleted file mode 100644 index 61716dd..0000000 --- a/build/config/coverage/coverage.gni +++ /dev/null
@@ -1,13 +0,0 @@ -# Copyright 2017 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") - -declare_args() { - # Enable Clang's Source-based Code Coverage. - use_clang_coverage = false -} - -assert(!use_clang_coverage || is_clang, - "Clang Source-based Code Coverage requires clang.")
diff --git a/build/config/crypto.gni b/build/config/crypto.gni deleted file mode 100644 index a3d52de..0000000 --- a/build/config/crypto.gni +++ /dev/null
@@ -1,15 +0,0 @@ -# Copyright (c) 2013 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. - -# This file declares build flags for the SSL library configuration. -# -# TODO(brettw) this should probably be moved to src/crypto or somewhere, and -# the global build dependency on it should be removed. -# -# PLEASE TRY TO AVOID ADDING FLAGS TO THIS FILE in cases where grit isn't -# required. See the declare_args block of BUILDCONFIG.gn for advice on how -# to set up feature flags. - -# True if NSS is used for certificate handling. -use_nss_certs = is_linux
diff --git a/build/config/dcheck_always_on.gni b/build/config/dcheck_always_on.gni deleted file mode 100644 index e58cfce..0000000 --- a/build/config/dcheck_always_on.gni +++ /dev/null
@@ -1,15 +0,0 @@ -# Copyright (c) 2016 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. - -declare_args() { - # Enables DCHECKs to be built-in, but to default to being non-fatal/log-only. - # DCHECKS can then be set as fatal/non-fatal via the DCheckIsFatal feature. - # See crbug.com/596231 for details on how this is used. - dcheck_is_configurable = false -} - -declare_args() { - # Set to true to enable dcheck in Release builds. - dcheck_always_on = dcheck_is_configurable -}
diff --git a/build/config/features.gni b/build/config/features.gni deleted file mode 100644 index 09cddfd..0000000 --- a/build/config/features.gni +++ /dev/null
@@ -1,60 +0,0 @@ -# Copyright 2014 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. - -# ============================================= -# PLEASE DO NOT ADD MORE FLAGS TO THIS FILE -# ============================================= -# -# These flags are effectively global. Your feature flag should go near the -# code it controls. Most of these items are here now because they control -# legacy global #defines passed to the compiler (now replaced with generated -# buildflag headers -- see //build/buildflag_header.gni). -# -# There is more advice on where to put build flags in the "Build flag" section -# of //build/config/BUILDCONFIG.gn. - -import("//build/config/chrome_build.gni") -import("//build/config/chromecast_build.gni") -if (is_android) { - import("//build/config/android/config.gni") -} - -declare_args() { - # Enables proprietary codecs and demuxers; e.g. H264, AAC, MP3, and MP4. - # We always build Google Chrome and Chromecast with proprietary codecs. - # - # Note: this flag is used by WebRTC which is DEPSed into Chrome. Moving it - # out of //build will require using the build_overrides directory. - proprietary_codecs = is_chrome_branded || is_chromecast - - # Variable safe_browsing is used to control the build time configuration for - # safe browsing feature. Safe browsing can be compiled in 3 different levels: - # 0 disables it, 1 enables it fully, and 2 enables mobile protection via an - # external API. - if (is_ios || is_chromecast) { - safe_browsing_mode = 0 - } else if (is_android) { - safe_browsing_mode = 2 - } else { - safe_browsing_mode = 1 - } - - # Set to true make a build that disables activation of field trial tests - # specified in testing/variations/fieldtrial_testing_config_*.json. - # Note: this setting is ignored if is_chrome_branded. - fieldtrial_testing_like_official_build = is_chrome_branded - - # libudev usage. This currently only affects the content layer. - use_udev = is_linux && !is_chromecast - - use_dbus = is_linux && !is_chromecast - - use_gio = is_linux && !is_chromeos && !is_chromecast -} -# -# ============================================= -# PLEASE DO NOT ADD MORE FLAGS TO THIS FILE -# ============================================= -# -# See comment at the top.
diff --git a/build/config/freetype/BUILD.gn b/build/config/freetype/BUILD.gn deleted file mode 100644 index 0ba9027..0000000 --- a/build/config/freetype/BUILD.gn +++ /dev/null
@@ -1,16 +0,0 @@ -# Copyright 2017 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/config/features.gni") -import("//build/config/freetype/freetype.gni") - -group("freetype") { - if (use_system_freetype) { - public_configs = [ "//build/linux:freetype_from_pkgconfig" ] - } else { - public_deps = [ - "//third_party:freetype_harfbuzz", - ] - } -}
diff --git a/build/config/freetype/OWNERS b/build/config/freetype/OWNERS deleted file mode 100644 index 3277f87..0000000 --- a/build/config/freetype/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -bungeman@chromium.org -drott@chromium.org
diff --git a/build/config/freetype/freetype.gni b/build/config/freetype/freetype.gni deleted file mode 100644 index b4eced2..0000000 --- a/build/config/freetype/freetype.gni +++ /dev/null
@@ -1,14 +0,0 @@ -# Copyright 2017 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. - -declare_args() { - # Blink needs a recent and properly build-configured FreeType version to - # support OpenType variations, color emoji and avoid security bugs. By default - # we ship and link such a version as part of Chrome. For distributions that - # prefer to keep linking to the version the system, FreeType must be newer - # than version 2.7.1 and have color bitmap support compiled in. WARNING: - # System FreeType configurations other than as described WILL INTRODUCE TEXT - # RENDERING AND SECURITY REGRESSIONS. - use_system_freetype = false -}
diff --git a/build/config/fuchsia/BUILD.gn b/build/config/fuchsia/BUILD.gn deleted file mode 100644 index a861ea8..0000000 --- a/build/config/fuchsia/BUILD.gn +++ /dev/null
@@ -1,139 +0,0 @@ -# Copyright 2017 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/config/fuchsia/config.gni") -import("//build/config/fuchsia/rules.gni") -import("//build/config/sysroot.gni") - -assert(is_fuchsia) -assert(!is_posix) - -config("compiler") { - sdk_version_file = rebase_path("$fuchsia_sdk/.hash") - sdk_version = read_file(sdk_version_file, "trim string") - defines = [ - # To force full builds after SDK updates in case of ABI changes. - "FUCHSIA_SDK_VERSION=$sdk_version", - ] - cflags = [] - ldflags = [] - if (current_cpu == "arm64") { - cflags += [ "--target=aarch64-fuchsia" ] - ldflags += [ "--target=aarch64-fuchsia" ] - } else if (current_cpu == "x64") { - cflags += [ "--target=x86_64-fuchsia" ] - ldflags += [ "--target=x86_64-fuchsia" ] - } else { - assert(false, "Unsupported architecture") - } - asmflags = cflags - - ldflags += [ - # TODO(thakis): Once Fuchsia's libclang_rt.builtin no longer has upstream - # patches, we might want to make tools/clang/scripts/update.py build it - # and bundle it with the clang package instead of using the library from - # the SDK, https://crbug.com/724204 - # Note: Intentionally 7.0.0 instead of $clang_version because the clang - # version of the toolchain_libs directory in the Fuchsia SDK can be - # different from the version of Chromium's clang. - "-resource-dir", - rebase_path(fuchsia_sdk, root_build_dir) + "/toolchain_libs/clang/7.0.0", - - # The stack defaults to 256k on Fuchsia (see - # https://fuchsia.googlesource.com/zircon/+/master/system/private/zircon/stack.h#9), - # but on other platforms it's much higher, so a variety of code assumes more - # will be available. Raise to 8M which matches e.g. macOS. - "-Wl,-z,stack-size=0x800000", - - # We always want fdio or else e.g. stdio wouldn't be initialized if fdio - # happens to not be directly referenced. The common POSIX-y compiler setup - # uses -Wl,--as-needed which drops it if it's simply "-lfdio" from a libs - # setting. Disable --as-needed, add fdio, and then set back to --as-needed. - # https://crbug.com/731217. - "-Wl,--no-as-needed", - "-lfdio", - "-Wl,--as-needed", - ] - - # Add SDK lib dir for -lfdio above. - lib_dirs = [ rebase_path("${fuchsia_sdk}/arch/${current_cpu}/lib") ] - - # TODO(crbug.com/821951): Clang enables SafeStack by default when targeting - # Fuchsia, but it breaks some tests, notably in V8. - cflags += [ "-fno-sanitize=safe-stack" ] - - libs = [ "zircon" ] -} - -# Writes an extended version of fvm.blk to fvm.extended.blk. -blobstore_extended_path = "$root_out_dir/fvm.extended.blk" -action("blobstore_extended_fvm") { - # The file is grown by 1GB, which should be large enough to hold packaged - # binaries and assets. The value should be increased if the size becomes a - # limitation in the future. - _extend_size = "1073741824" # 1GB - - if (current_cpu == "arm64") { - _target_dir = "//third_party/fuchsia-sdk/sdk/target/aarch64" - } else if (current_cpu == "x64") { - _target_dir = "//third_party/fuchsia-sdk/sdk/target/x86_64" - } - - script = "//build/config/fuchsia/extend_fvm.py" - - inputs = [ - "${_target_dir}/fvm.blk", - "${_target_dir}/bootdata-blob.bin", - "${_target_dir}/zircon.bin", - ] - outputs = [ - blobstore_extended_path, - ] - - args = [ - rebase_path("${fuchsia_sdk}/tools/fvm"), - rebase_path("${_target_dir}/fvm.blk"), - rebase_path(blobstore_extended_path), - _extend_size, - ] -} - -# _________________________________________ -# / Create a compressed copy-on-write (COW) \ -# \ image based on fvm.blk. / -# ----------------------------------------- -# \ ^__^ -# \ (oo)\_______ -# (__)\ )\/\ -# ||----w | -# || || -action("blobstore_extended_qcow2") { - script = "//build/gn_run_binary.py" - - deps = [ - ":blobstore_extended_fvm", - ] - inputs = [ - blobstore_extended_path, - ] - outputs = [ - blobstore_qcow_path, - ] - data = [ - blobstore_qcow_path, - ] - - args = [ - rebase_path("//third_party/fuchsia-sdk/sdk/qemu/bin/qemu-img", - root_build_dir), - "convert", - "-f", - "raw", - "-O", - "qcow2", - "-c", - rebase_path(blobstore_extended_path), - rebase_path(blobstore_qcow_path), - ] -}
diff --git a/build/config/fuchsia/OWNERS b/build/config/fuchsia/OWNERS deleted file mode 100644 index e7034ea..0000000 --- a/build/config/fuchsia/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://build/fuchsia/OWNERS
diff --git a/build/config/fuchsia/build_manifest.py b/build/config/fuchsia/build_manifest.py deleted file mode 100644 index 0fc8b74..0000000 --- a/build/config/fuchsia/build_manifest.py +++ /dev/null
@@ -1,228 +0,0 @@ -# Copyright 2018 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. - -"""Creates a archive manifest used for Fuchsia package generation. - -Arguments: - root_dir: The absolute path to the Chromium source tree root. - - out_dir: The absolute path to the Chromium build directory. - - app_name: The filename of the package's executable target. - - runtime_deps: The path to the GN runtime deps file. - - output_path: The path of the manifest file which will be written. -""" - -import json -import os -import re -import subprocess -import sys -import tempfile - - -def ReadDynamicLibDeps(paths): - """Returns a list of NEEDED libraries read from a binary's ELF header.""" - - LIBRARY_RE = re.compile(r'.*\(NEEDED\)\s+Shared library: \[(?P<lib>.*)\]') - elfinfo = subprocess.check_output(['readelf', '-d'] + paths, - stderr=open(os.devnull, 'w')) - libs = [] - for line in elfinfo.split('\n'): - match = LIBRARY_RE.match(line.rstrip()) - if match: - lib = match.group('lib') - - # Skip libzircon.so, as it is supplied by the OS loader. - if lib != 'libzircon.so': - libs.append(match.group('lib')) - - return libs - - -def ComputeTransitiveLibDeps(executable_path, available_libs): - """Returns a set representing the library dependencies of |executable_path|, - the dependencies of its dependencies, and so on. - - A list of candidate library filesystem paths is passed using |available_libs| - to help with resolving full paths from the short ELF header filenames.""" - - # Stack of binaries (libraries, executables) awaiting traversal. - to_visit = [executable_path] - - # The computed set of visited transitive dependencies. - deps = set() - - while to_visit: - deps = deps.union(to_visit) - - # Resolve the full paths for all of |cur_path|'s NEEDED libraries. - dep_paths = {available_libs[dep] - for dep in ReadDynamicLibDeps(list(to_visit))} - - # Add newly discovered dependencies to the pending traversal stack. - to_visit = dep_paths.difference(deps) - - return deps - - -def EnumerateDirectoryFiles(path): - """Returns a flattened list of all files contained under |path|.""" - - output = set() - for dirname, _, files in os.walk(path): - output = output.union({os.path.join(dirname, f) for f in files}) - return output - - -def MakePackagePath(file_path, roots): - """Computes a path for |file_path| that is relative to one of the directory - paths in |roots|. - - file_path: The absolute file path to relativize. - roots: A list of absolute directory paths which may serve as a relative root - for |file_path|. At least one path must contain |file_path|. - Overlapping roots are permitted; the deepest matching root will be - chosen. - - Examples: - - >>> MakePackagePath('/foo/bar.txt', ['/foo/']) - 'bar.txt' - - >>> MakePackagePath('/foo/dir/bar.txt', ['/foo/']) - 'dir/bar.txt' - - >>> MakePackagePath('/foo/out/Debug/bar.exe', ['/foo/', '/foo/out/Debug/']) - 'bar.exe' - """ - - # Prevents greedily matching against a shallow path when a deeper, better - # matching path exists. - roots.sort(key=len, reverse=True) - - for next_root in roots: - if not next_root.endswith(os.sep): - next_root += os.sep - - if file_path.startswith(next_root): - relative_path = file_path[len(next_root):] - - # Move all dynamic libraries (ending in .so or .so.<number>) to lib/. - if re.search('.*\.so(\.\d+)?$', file_path): - relative_path = 'lib/' + os.path.basename(relative_path) - - return relative_path - - raise Exception('Error: no matching root paths found for \'%s\'.' % file_path) - - -def _GetStrippedPath(bin_path): - """Finds the stripped version of the binary |bin_path| in the build - output directory.""" - - # Skip the resolution step for binaries that don't have stripped counterparts, - # like system libraries or other libraries built outside the Chromium build. - if not '.unstripped' in bin_path: - return bin_path - - return os.path.normpath(os.path.join(bin_path, - os.path.pardir, - os.path.pardir, - os.path.basename(bin_path))) - - -def _IsBinary(path): - """Checks if the file at |path| is an ELF executable by inspecting its FourCC - header.""" - - with open(path, 'rb') as f: - file_tag = f.read(4) - return file_tag == '\x7fELF' - - -def BuildManifest(root_dir, out_dir, app_name, app_filename, - sandbox_policy_path, runtime_deps_file, depfile_path, - dynlib_paths, output_path): - with open(output_path, 'w') as manifest, open(depfile_path, 'w') as depfile: - # Process the runtime deps file for file paths, recursively walking - # directories as needed. File paths are stored in absolute form, - # so that MakePackagePath() may relativize to either the source root or - # output directory. - # runtime_deps may contain duplicate paths, so use a set for - # de-duplication. - expanded_files = set() - for next_path in open(runtime_deps_file, 'r'): - next_path = next_path.strip() - if os.path.isdir(next_path): - for root, _, files in os.walk(next_path): - for current_file in files: - if current_file.startswith('.'): - continue - expanded_files.add(os.path.abspath( - os.path.join(root, current_file))) - else: - expanded_files.add(os.path.abspath(next_path)) - - # Get set of dist libraries available for dynamic linking. - dist_libs = set() - for next_dir in dynlib_paths.split(','): - dist_libs = dist_libs.union(EnumerateDirectoryFiles(next_dir)) - - # Compute the set of dynamic libraries used by the application or its - # transitive dependencies (dist libs and components), and merge the result - # with |expanded_files| so that they are included in the manifest. - expanded_files = expanded_files.union( - ComputeTransitiveLibDeps( - app_filename, - {os.path.basename(f): f for f in expanded_files.union(dist_libs)})) - - # Format and write out the manifest contents. - app_found = False - for current_file in expanded_files: - if _IsBinary(current_file): - current_file = _GetStrippedPath(current_file) - - in_package_path = MakePackagePath(os.path.join(out_dir, current_file), - [root_dir, out_dir]) - if in_package_path == app_filename: - in_package_path = 'bin/app' - app_found = True - - # The source path is relativized so that it can be used on multiple - # environments with differing parent directory structures, - # e.g. builder bots and swarming clients. - manifest.write('%s=%s\n' % (in_package_path, - os.path.relpath(current_file, out_dir))) - - # Use libc.so's dynamic linker by aliasing libc.so to ld.so.1. - # Fuchsia always looks for the linker implementation in ld.so.1. - if os.path.basename(in_package_path) == 'libc.so': - manifest.write( - '%s=%s\n' % (os.path.dirname(in_package_path) + '/ld.so.1', - os.path.relpath(current_file, out_dir))) - - if not app_found: - raise Exception('Could not locate executable inside runtime_deps.') - - with open(os.path.join(os.path.dirname(output_path), 'package'), 'w') \ - as package_json: - json.dump({'version': '0', 'name': app_name}, package_json) - manifest.write('meta/package=%s\n' % - os.path.relpath(package_json.name, out_dir)) - - manifest.write('meta/sandbox=%s\n' % - os.path.relpath(os.path.join(root_dir, sandbox_policy_path), - out_dir)) - depfile.write( - "%s: %s" % (os.path.relpath(output_path, out_dir), - " ".join([os.path.relpath(f, out_dir) - for f in expanded_files]))) - return 0 - - -if __name__ == '__main__': - sys.exit(BuildManifest(*sys.argv[1:]))
diff --git a/build/config/fuchsia/config.gni b/build/config/fuchsia/config.gni deleted file mode 100644 index 52ca5e0..0000000 --- a/build/config/fuchsia/config.gni +++ /dev/null
@@ -1,19 +0,0 @@ -# Copyright 2017 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. - -assert(current_os == "fuchsia") - -declare_args() { - # Path to Fuchsia SDK. - fuchsia_sdk = "//third_party/fuchsia-sdk/sdk" -} - -# Compute the arch-specific path to packages' dynamic library dependencies. -if (current_cpu == "arm64") { - dist_libroot = fuchsia_sdk + "/arch/arm64/dist/" -} else if (current_cpu == "x64") { - dist_libroot = fuchsia_sdk + "/arch/x64/dist/" -} else { - assert(false, "No libraries available for architecture: $current_cpu") -}
diff --git a/build/config/fuchsia/extend_fvm.py b/build/config/fuchsia/extend_fvm.py deleted file mode 100644 index 44e5ee3..0000000 --- a/build/config/fuchsia/extend_fvm.py +++ /dev/null
@@ -1,26 +0,0 @@ -# Copyright 2018 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. - -"""Copies a FVM file and extends it by a specified amount. - -Arg #1: path to 'fvm'. - #2: the path to the source fvm.blk. - #3: the path that the extended FVM file will be written to. - #4: the additional number of bytes to grow fvm.blk by.""" - -import os -import shutil -import subprocess -import sys - -def ExtendFVM(fvm_tool_path, src_path, dest_path, delta): - old_size = os.path.getsize(src_path) - new_size = old_size + int(delta) - shutil.copyfile(src_path, dest_path) - subprocess.check_call([fvm_tool_path, dest_path, 'extend', '--length', - str(new_size)]) - return 0 - -if __name__ == '__main__': - sys.exit(ExtendFVM(*sys.argv[1:]))
diff --git a/build/config/fuchsia/package.gni b/build/config/fuchsia/package.gni deleted file mode 100644 index 8afd31a..0000000 --- a/build/config/fuchsia/package.gni +++ /dev/null
@@ -1,182 +0,0 @@ -# Copyright 2018 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/config/fuchsia/config.gni") -import("//build/config/sysroot.gni") - -# Creates a Fuchsia .far package file. -# -# Parameters are: -# package_name: The name of the package to build. -# binary: The name of the executable which should be launched by the package. -# Will be renamed as "bin/app" in the package contents. -# sandbox_policy: A path to the sandbox_policy applied to this package. -# deps: A list of targets whose output will be included in the package. -template("package") { - pkg = { - package_name = target_name - forward_variables_from(invoker, "*") - } - assert(defined(pkg.binary)) - - _pm_tool_path = "${fuchsia_sdk}/tools/pm" - - _pkg_out_dir = "$root_out_dir/gen/" + get_label_info(pkg.package_name, "dir") - _runtime_deps_file = "$_pkg_out_dir/${pkg.package_name}.runtime_deps" - _manifest_file = "$_pkg_out_dir/${pkg.package_name}.archive_manifest" - _key_file = "$_pkg_out_dir/signing-key" - _meta_far_file = "$_pkg_out_dir/meta.far" - _combined_far_file = "$_pkg_out_dir/${pkg.package_name}-0.far" - _final_far_file = "$_pkg_out_dir/${pkg.package_name}.far" - - _write_manifest_target = "${pkg.package_name}__write_manifest" - _generate_key_target = "${pkg.package_name}__genkey" - _package_target = "${pkg.package_name}__pkg" - _bundle_target = "${pkg.package_name}__bundle" - - # Generates a manifest file based on the GN runtime deps - # suitable for "pm" tool consumption. - action(_write_manifest_target) { - _depfile = "${target_gen_dir}/${target_name}_stamp.d" - - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - ]) - - script = "//build/config/fuchsia/build_manifest.py" - - inputs = [ - _runtime_deps_file, - "//build/config/fuchsia/sandbox_policy", - ] - - outputs = [ - _manifest_file, - ] - - data_deps = pkg.deps - - # Use a depfile to trigger package rebuilds if any of the files (static - # assets, shared libraries, etc.) included by the package have changed. - depfile = _depfile - - args = [ - rebase_path("//"), - rebase_path(root_out_dir), - pkg.package_name, - pkg.binary, - rebase_path(pkg.sandbox_policy), - rebase_path(_runtime_deps_file), - rebase_path(_depfile), - rebase_path(dist_libroot) + "," + rebase_path("${sysroot}/dist"), - rebase_path(_manifest_file), - ] - - write_runtime_deps = _runtime_deps_file - } - - # Generates a signing key to use for building the package. - action(_generate_key_target) { - forward_variables_from(invoker, [ "testonly" ]) - - script = "//build/gn_run_binary.py" - - outputs = [ - _key_file, - ] - - args = [ - rebase_path(_pm_tool_path, root_build_dir), - "-k", - rebase_path(_key_file), - "genkey", - ] - } - - # Creates a signed Fuchsia metadata package. - action(_package_target) { - forward_variables_from(invoker, [ "testonly" ]) - - script = "//build/gn_run_binary.py" - - deps = [ - ":$_generate_key_target", - ":$_write_manifest_target", - ] - - inputs = [ - _key_file, - ] - - outputs = [ - _meta_far_file, - ] - - args = [ - rebase_path(_pm_tool_path, root_build_dir), - "-o", - rebase_path(_pkg_out_dir), - "-k", - rebase_path(_key_file), - "-m", - rebase_path(_manifest_file), - "build", - ] - } - - # Creates a package containing the metadata archive and blob data. - action(_bundle_target) { - forward_variables_from(invoker, [ "testonly" ]) - - script = "//build/gn_run_binary.py" - - deps = [ - ":$_package_target", - ":$_write_manifest_target", - ] - - inputs = [ - _meta_far_file, - _manifest_file, - ] - - outputs = [ - _combined_far_file, - ] - - args = [ - rebase_path(_pm_tool_path, root_build_dir), - "-o", - rebase_path(_pkg_out_dir), - "-m", - rebase_path(_manifest_file), - "archive", - ] - } - - # Copies the archive to a well-known path. - # TODO(kmarshall): Use a 'pm' output flag to write directly to the desired - # file path instead. - copy(target_name) { - forward_variables_from(invoker, [ "testonly" ]) - - deps = [ - ":$_bundle_target", - ] - - data = [ - _final_far_file, - ] - - sources = [ - _combined_far_file, - ] - outputs = [ - _final_far_file, - ] - } -}
diff --git a/build/config/fuchsia/rules.gni b/build/config/fuchsia/rules.gni deleted file mode 100644 index d307195..0000000 --- a/build/config/fuchsia/rules.gni +++ /dev/null
@@ -1,143 +0,0 @@ -# Copyright 2018 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. - -assert(is_fuchsia) - -import("//build/config/chromecast_build.gni") -import("//build/config/fuchsia/config.gni") -import("//build/config/fuchsia/package.gni") -import("//build/config/sysroot.gni") - -blobstore_qcow_path = "$root_out_dir/fvm.blk.qcow2" - -template("generate_runner_script") { - _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package_name, "dir") - _manifest_path = "$_pkg_dir/${invoker.package_name}.archive_manifest" - _package_path = "$_pkg_dir/${invoker.package_name}.far" - - action(target_name) { - forward_variables_from(invoker, - [ - "runner_script", - "target", - "testonly", - ]) - - deps = [ - "//build/config/fuchsia:blobstore_extended_qcow2", - "//testing/buildbot/filters:fuchsia_filters", - ] - - _generated_script = "${invoker.generated_script}" - - script = "//build/fuchsia/create_runner_script.py" - - outputs = [ - _generated_script, - ] - - data = [ - _generated_script, - _manifest_path, - "//build/fuchsia/", - "//build/util/lib/", - "${fuchsia_sdk}/", - ] - - # Arguments used at build time by the runner script generator. - args = [ - "--script-output-path", - rebase_path(_generated_script, root_build_dir, root_out_dir), - ] - - if (defined(invoker.use_test_server) && invoker.use_test_server) { - args += [ "--enable-test-server" ] - } - - # Arguments used at runtime by the test runner. - args += [ - "--runner-script", - runner_script, - "--output-directory", - rebase_path(root_build_dir, root_build_dir), - "--target-cpu", - target_cpu, - "--package", - rebase_path(_package_path, root_out_dir, root_build_dir), - "--package-name", - invoker.package_name, - "--package-manifest", - rebase_path(_manifest_path), - ] - } -} - -# This template is used to generate a runner script for test binaries into the -# build dir for Fuchsia. It's generally used from the "test" template. -template("test_runner_script") { - generate_runner_script(target_name) { - testonly = true - runner_script = "test_runner.py" - generated_script = - "$root_build_dir/bin/run_" + get_label_info(invoker.test_name, "name") - forward_variables_from(invoker, "*") - } -} - -# This template is used to generate a runner script for arbitrary executables -# into the build dir for Fuchsia. The executable is specified as a target -# pass to the "exe_target" attribute. -template("fuchsia_executable_runner") { - forward_variables_from(invoker, [ "exe_target" ]) - - _pkg_target = "${target_name}_pkg" - _gen_runner_target = "${target_name}_runner" - _archive_target = "${target_name}_archive" - _exe_name = get_label_info(exe_target, "name") - - # Define the target dependencies as the union of the executable target - # and the invoker's deps. - if (defined(invoker.deps)) { - _combined_deps = invoker.deps + [ exe_target ] - } else { - _combined_deps = [ exe_target ] - } - - package(_pkg_target) { - forward_variables_from(invoker, [ "testonly" ]) - package_name = _exe_name - sandbox_policy = "//build/config/fuchsia/sandbox_policy" - binary = _exe_name - deps = _combined_deps - } - - generate_runner_script(_gen_runner_target) { - forward_variables_from(invoker, [ "testonly" ]) - runner_script = "exe_runner.py" - generated_script = "$root_build_dir/bin/run_${_exe_name}" - package_name = _exe_name - } - - group(target_name) { - forward_variables_from(invoker, [ "testonly" ]) - deps = [ - ":${_archive_target}", - ":${_gen_runner_target}", - ":${_pkg_target}", - ] - - # Disable packaging for Chromecast builds. (https://crbug.com/810069) - if (is_chromecast) { - deps -= [ ":${_pkg_target}" ] - } - } - - generate_runner_script(_archive_target) { - forward_variables_from(invoker, [ "testonly" ]) - runner_script = "archive_builder.py" - generated_script = - "$root_build_dir/bin/archive_" + get_label_info(exe_target, "name") - package_name = _exe_name - } -}
diff --git a/build/config/fuchsia/sandbox_policy b/build/config/fuchsia/sandbox_policy deleted file mode 100644 index 9419bdd..0000000 --- a/build/config/fuchsia/sandbox_policy +++ /dev/null
@@ -1,4 +0,0 @@ -{ - "features": [ "persistent-storage", "root-ssl-certificates", "system-temp" ] -} -
diff --git a/build/config/fuchsia/testing_sandbox_policy b/build/config/fuchsia/testing_sandbox_policy deleted file mode 100644 index 9d4db8f..0000000 --- a/build/config/fuchsia/testing_sandbox_policy +++ /dev/null
@@ -1,5 +0,0 @@ -{ - "features": [ "persistent-storage", "root-ssl-certificates", "system-temp"], - "dev": ["null", "zero"] -} -
diff --git a/build/config/gcc/BUILD.gn b/build/config/gcc/BUILD.gn deleted file mode 100644 index b6f4f5f..0000000 --- a/build/config/gcc/BUILD.gn +++ /dev/null
@@ -1,140 +0,0 @@ -# Copyright 2014 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/config/c++/c++.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/config/sysroot.gni") -import("//build/toolchain/toolchain.gni") - -declare_args() { - # When non empty, overrides the target rpath value. This allows a user to - # make a Chromium build where binaries and shared libraries are meant to be - # installed into separate directories, like /usr/bin/chromium and - # /usr/lib/chromium for instance. It is useful when a build system that - # generates a whole target root filesystem (like Yocto) is used on top of gn, - # especially when cross-compiling. - # Note: this gn arg is similar to gyp target_rpath generator flag. - gcc_target_rpath = "" - ldso_path = "" -} - -# This config causes functions not to be automatically exported from shared -# libraries. By default, all symbols are exported but this means there are -# lots of exports that slow everything down. In general we explicitly mark -# which functiosn we want to export from components. -# -# Some third_party code assumes all functions are exported so this is separated -# into its own config so such libraries can remove this config to make symbols -# public again. -# -# See http://gcc.gnu.org/wiki/Visibility -config("symbol_visibility_hidden") { - cflags = [ "-fvisibility=hidden" ] - - # Visibility attribute is not supported on AIX. - if (current_os != "aix") { - cflags_cc = [ "-fvisibility-inlines-hidden" ] - cflags_objcc = cflags_cc - } -} - -# This config is usually set when :symbol_visibility_hidden is removed. -# It's often a good idea to set visibility explicitly, as there're flags -# which would error out otherwise (e.g. -fsanitize=cfi-unrelated-cast) -config("symbol_visibility_default") { - cflags = [ "-fvisibility=default" ] -} - -# The rpath is the dynamic library search path. Setting this config on a link -# step will put the directory where the build generates shared libraries into -# the rpath. -# -# It's important that this *not* be used for release builds we push out. -# Chrome uses some setuid binaries, and hard links preserve setuid bits. An -# unprivileged user could gain root privileges by hardlinking a setuid -# executable and then adding in whatever binaries they want to run into the lib -# directory. -# -# Example bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520126 -# -# This is required for component builds since the build generates many shared -# libraries in the build directory that we expect to be automatically loaded. -# It will be automatically applied in this case by :executable_ldconfig. -# -# In non-component builds, certain test binaries may expect to load dynamic -# libraries from the current directory. As long as these aren't distributed, -# this is OK. For these cases use something like this: -# -# if (is_linux && !is_component_build) { -# configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] -# } -config("rpath_for_built_shared_libraries") { - if (!is_android) { - # Note: Android doesn't support rpath. - if (shlib_subdir != ".") { - rpath_link = "${shlib_subdir}/" - } else { - rpath_link = "." - } - if (current_toolchain != default_toolchain || gcc_target_rpath == "") { - ldflags = [ - # Want to pass "\$". GN will re-escape as required for ninja. - "-Wl,-rpath=\$ORIGIN/${rpath_link}", - "-Wl,-rpath-link=${rpath_link}", - ] - } else { - ldflags = [ - "-Wl,-rpath=${gcc_target_rpath}", - "-Wl,-rpath-link=${rpath_link}", - ] - } - if (current_toolchain == default_toolchain && ldso_path != "") { - ldflags += [ "-Wl,--dynamic-linker=${ldso_path}" ] - } - } -} - -# Settings for executables. -config("executable_ldconfig") { - # WARNING! //sandbox/linux:chrome_sandbox will not pick up this - # config, because it is a setuid binary that needs special flags. - # If you add things to this config, make sure you check to see - # if they should be added to that target as well. - ldflags = [] - if (is_android) { - ldflags += [ - "-Bdynamic", - "-Wl,-z,nocopyreloc", - ] - } else { - # See the rpath_for... config above for why this is necessary for component - # builds. Sanitizers use a custom libc++ where this is also necessary. - if (is_component_build || using_sanitizer || !libcpp_is_static) { - configs = [ ":rpath_for_built_shared_libraries" ] - } - if (current_cpu == "mipsel" || current_cpu == "mips64el") { - ldflags += [ "-pie" ] - } - } - - if (!is_android && current_os != "aix") { - # Find the path containing shared libraries for this toolchain - # relative to the build directory. ${root_out_dir} will be a - # subdirectory of ${root_build_dir} when cross compiling. - _rpath_link = rebase_path(root_out_dir, root_build_dir) - if (shlib_subdir != ".") { - _rpath_link += "/$shlib_subdir" - } - ldflags += [ - "-Wl,-rpath-link=$_rpath_link", - - # TODO(GYP): Do we need a check on the binutils version here? - # - # Newer binutils don't set DT_RPATH unless you disable "new" dtags - # and the new DT_RUNPATH doesn't work without --no-as-needed flag. - "-Wl,--disable-new-dtags", - ] - } -}
diff --git a/build/config/gclient_args.gni b/build/config/gclient_args.gni deleted file mode 100644 index 1fbac17..0000000 --- a/build/config/gclient_args.gni +++ /dev/null
@@ -1,7 +0,0 @@ -# Generated from '.DEPS.git' -build_with_chromium = true -checkout_android = true -checkout_android_native_support = true -checkout_libaom = true -checkout_nacl = true -checkout_oculus_sdk = false \ No newline at end of file
diff --git a/build/config/get_host_byteorder.py b/build/config/get_host_byteorder.py deleted file mode 100755 index c8fcf1f..0000000 --- a/build/config/get_host_byteorder.py +++ /dev/null
@@ -1,11 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""Get Byteorder of host architecture""" - - -import sys - -print sys.byteorder
diff --git a/build/config/host_byteorder.gni b/build/config/host_byteorder.gni deleted file mode 100644 index 48a1a7f..0000000 --- a/build/config/host_byteorder.gni +++ /dev/null
@@ -1,27 +0,0 @@ -# Copyright (c) 2017 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. - -# This header file defines the "host_byteorder" variable. -# Not that this is currently used only for building v8. -# The chromium code generally assumes little-endianness. -declare_args() { - host_byteorder = "undefined" -} - -# Detect host byteorder -# ppc64 can be either BE or LE -if (host_cpu == "ppc64") { - if (current_os == "aix") { - host_byteorder = "big" - } else { - # Only use the script when absolutely necessary - host_byteorder = - exec_script("//build/config/get_host_byteorder.py", [], "trim string") - } -} else if (host_cpu == "ppc" || host_cpu == "s390" || host_cpu == "s390x" || - host_cpu == "mips" || host_cpu == "mips64") { - host_byteorder = "big" -} else { - host_byteorder = "little" -}
diff --git a/build/config/ios/BUILD.gn b/build/config/ios/BUILD.gn deleted file mode 100644 index 47d36fc..0000000 --- a/build/config/ios/BUILD.gn +++ /dev/null
@@ -1,130 +0,0 @@ -# Copyright 2014 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/config/coverage/coverage.gni") -import("//build/config/ios/ios_sdk.gni") -import("//build/config/sysroot.gni") -import("//build/toolchain/toolchain.gni") - -declare_args() { - # Enabling this option makes clang compile to an intermediate - # representation ("bitcode"), and not to native code. This is preferred - # when including WebRTC in the apps that will be sent to Apple's App Store - # and mandatory for the apps that run on watchOS or tvOS. - # The option only works when building with Xcode (use_xcode_clang = true). - # Mimicking how Xcode handles it, the production builds (is_debug = false) - # get real bitcode sections added, while the debug builds (is_debug = true) - # only get bitcode-section "markers" added in them. - # NOTE: This option is ignored when building versions for the iOS simulator, - # where a part of libvpx is compiled from the assembly code written using - # Intel assembly syntax; Yasm / Nasm do not support emitting bitcode parts. - # That is not a limitation for now as Xcode mandates the presence of bitcode - # only when building bitcode-enabled projects for real devices (ARM CPUs). - enable_ios_bitcode = false -} - -# This is included by reference in the //build/config/compiler config that -# is applied to all targets. It is here to separate out the logic. -config("compiler") { - # These flags are shared between the C compiler and linker. - common_ios_flags = [] - - # CPU architecture. - if (current_cpu == "x64") { - common_ios_flags += [ - "-arch", - "x86_64", - ] - } else if (current_cpu == "x86") { - common_ios_flags += [ - "-arch", - "i386", - ] - } else if (current_cpu == "armv7" || current_cpu == "arm") { - common_ios_flags += [ - "-arch", - "armv7", - ] - } else if (current_cpu == "arm64") { - common_ios_flags += [ - "-arch", - "arm64", - ] - } - - # This is here so that all files get recompiled after an Xcode update. - # (defines are passed via the command line, and build system rebuild things - # when their commandline changes). Nothing should ever read this define. - defines = [ "CR_XCODE_VERSION=$xcode_version" ] - - asmflags = common_ios_flags - cflags = common_ios_flags - - # Without this, the constructors and destructors of a C++ object inside - # an Objective C struct won't be called, which is very bad. - cflags_objcc = [ "-fobjc-call-cxx-cdtors" ] - - ldflags = common_ios_flags -} - -# This is included by reference in the //build/config/compiler:runtime_library -# config that is applied to all targets. It is here to separate out the logic -# that is iOS-only. Please see that target for advice on what should go in -# :runtime_library vs. :compiler. -config("runtime_library") { - common_flags = [ - "-isysroot", - sysroot, - - "-stdlib=libc++", - ] - - if (use_ios_simulator) { - common_flags += [ "-mios-simulator-version-min=$ios_deployment_target" ] - } else { - common_flags += [ "-miphoneos-version-min=$ios_deployment_target" ] - } - - if (use_xcode_clang && enable_ios_bitcode && !use_ios_simulator) { - if (is_debug) { - common_flags += [ "-fembed-bitcode-marker" ] - } else { - common_flags += [ "-fembed-bitcode" ] - } - } - - asmflags = common_flags - cflags = common_flags - ldflags = common_flags - - if (use_clang_coverage) { - configs = [ "//build/config/coverage:default_coverage" ] - } -} - -config("ios_executable_flags") { -} - -config("ios_dynamic_flags") { - ldflags = [ "-Wl,-ObjC" ] # Always load Objective-C categories and class. -} - -config("xctest_config") { - common_flags = [ - "-F", - "$ios_sdk_platform_path/Developer/Library/Frameworks", - ] - - cflags = common_flags - ldflags = common_flags - - libs = [ - "Foundation.framework", - "XCTest.framework", - ] -} - -group("xctest") { - public_configs = [ ":xctest_config" ] -}
diff --git a/build/config/ios/BuildInfo.plist b/build/config/ios/BuildInfo.plist deleted file mode 100644 index 3595e5a..0000000 --- a/build/config/ios/BuildInfo.plist +++ /dev/null
@@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>BuildMachineOSBuild</key> - <string>${BUILD_MACHINE_OS_BUILD}</string> - <key>CFBundleSupportedPlatforms</key> - <array> - <string>${IOS_SUPPORTED_PLATFORM}</string> - </array> - <key>DTCompiler</key> - <string>${GCC_VERSION}</string> - <key>DTPlatformName</key> - <string>${IOS_PLATFORM_NAME}</string> - <key>DTPlatformVersion</key> - <string>${IOS_PLATFORM_VERSION}</string> - <key>DTPlatformBuild</key> - <string>${IOS_PLATFORM_BUILD}</string> - <key>DTSDKBuild</key> - <string>${IOS_SDK_BUILD}</string> - <key>DTSDKName</key> - <string>${IOS_SDK_NAME}</string> - <key>MinimumOSVersion</key> - <string>${IOS_DEPLOYMENT_TARGET}</string> - <key>DTXcode</key> - <string>${XCODE_VERSION}</string> - <key>DTXcodeBuild</key> - <string>${XCODE_BUILD}</string> - <key>UIDeviceFamily</key> - <array> - <integer>1</integer> - <integer>2</integer> - </array> -</dict> -</plist>
diff --git a/build/config/ios/Host-Info.plist b/build/config/ios/Host-Info.plist deleted file mode 100644 index 9f6f5de..0000000 --- a/build/config/ios/Host-Info.plist +++ /dev/null
@@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleDisplayName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${IOS_BUNDLE_ID_PREFIX}.test.${EXECUTABLE_NAME:rfc1034identifier}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1.0</string> - <key>LSRequiresIPhoneOS</key> - <true/> - <key>NSAppTransportSecurity</key> - <dict> - <key>NSAllowsArbitraryLoads</key> - <true/> - </dict> - <key>UIRequiredDeviceCapabilities</key> - <array> - <string>armv7</string> - </array> - <key>UILaunchImages</key> - <array> - <dict> - <key>UILaunchImageMinimumOSVersion</key> - <string>7.0</string> - <key>UILaunchImageName</key> - <string>Default</string> - <key>UILaunchImageOrientation</key> - <string>Portrait</string> - <key>UILaunchImageSize</key> - <string>{320, 480}</string> - </dict> - <dict> - <key>UILaunchImageMinimumOSVersion</key> - <string>7.0</string> - <key>UILaunchImageName</key> - <string>Default</string> - <key>UILaunchImageOrientation</key> - <string>Portrait</string> - <key>UILaunchImageSize</key> - <string>{320, 568}</string> - </dict> - <dict> - <key>UILaunchImageMinimumOSVersion</key> - <string>8.0</string> - <key>UILaunchImageName</key> - <string>Default</string> - <key>UILaunchImageOrientation</key> - <string>Portrait</string> - <key>UILaunchImageSize</key> - <string>{375, 667}</string> - </dict> - <dict> - <key>UILaunchImageMinimumOSVersion</key> - <string>8.0</string> - <key>UILaunchImageName</key> - <string>Default</string> - <key>UILaunchImageOrientation</key> - <string>Portrait</string> - <key>UILaunchImageSize</key> - <string>{414, 736}</string> - </dict> - <dict> - <key>UILaunchImageMinimumOSVersion</key> - <string>8.0</string> - <key>UILaunchImageName</key> - <string>Default</string> - <key>UILaunchImageOrientation</key> - <string>Landscape</string> - <key>UILaunchImageSize</key> - <string>{414, 736}</string> - </dict> - </array> - <key>UILaunchImages~ipad</key> - <array> - <dict> - <key>UILaunchImageMinimumOSVersion</key> - <string>7.0</string> - <key>UILaunchImageName</key> - <string>Default</string> - <key>UILaunchImageOrientation</key> - <string>Portrait</string> - <key>UILaunchImageSize</key> - <string>{768, 1024}</string> - </dict> - <dict> - <key>UILaunchImageMinimumOSVersion</key> - <string>7.0</string> - <key>UILaunchImageName</key> - <string>Default</string> - <key>UILaunchImageOrientation</key> - <string>Landscape</string> - <key>UILaunchImageSize</key> - <string>{768, 1024}</string> - </dict> - </array> - <key>UISupportedInterfaceOrientations</key> - <array> - <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationLandscapeLeft</string> - <string>UIInterfaceOrientationLandscapeRight</string> - </array> - <key>UISupportedInterfaceOrientations~ipad</key> - <array> - <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationPortraitUpsideDown</string> - <string>UIInterfaceOrientationLandscapeLeft</string> - <string>UIInterfaceOrientationLandscapeRight</string> - </array> -</dict> -</plist>
diff --git a/build/config/ios/Module-Info.plist b/build/config/ios/Module-Info.plist deleted file mode 100644 index 13b67c4..0000000 --- a/build/config/ios/Module-Info.plist +++ /dev/null
@@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${IOS_BUNDLE_ID_PREFIX}.${MODULE_BUNDLE_ID:rfc1034identifier}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>BNDL</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1</string> -</dict> -</plist>
diff --git a/build/config/ios/OWNERS b/build/config/ios/OWNERS deleted file mode 100644 index 0e726c6..0000000 --- a/build/config/ios/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://build/config/mac/OWNERS
diff --git a/build/config/ios/asset_catalog.gni b/build/config/ios/asset_catalog.gni deleted file mode 100644 index 460cd96..0000000 --- a/build/config/ios/asset_catalog.gni +++ /dev/null
@@ -1,148 +0,0 @@ -# Copyright 2017 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. - -# This template declares a bundle_data target that references an asset -# catalog so that it is compiled to the asset catalog of the generated -# bundle. -# -# The create_bundle target requires that all asset catalogs are part of an -# .xcasset bundle. This requirement comes from actool that only receives -# the path to the .xcasset bundle directory and not to the individual -# .imageset directories. -# -# The requirement is a bit problematic as it prevents compiling only a -# subset of the asset catakig that are contained in a .xcasset. This template -# fixes that by instead copying the content of the asset catalog to temporary -# .xcasset directory (below $root_out_dir) and defining a bundle_data -# target that refers to those copies (this is efficient as the "copy" is -# implemented by hardlinking if possible on macOS). -# -# Since the create_data target will only refer to the .xcasset directory -# and additional "action" target that runs a dummy script is defined. It -# does nothing but pretends to generate the .xcassets directory (while -# it is really created as a side-effect of the "copy" step). This allows -# to workaround the check in "gn" that all inputs below $root_out_dir have -# to be outputs of another target with a public dependency path. -# -# This template also ensures that the file are only copied once when the -# build targets multiple architectures at the same time (aka "fat build"). -# -# Arguments -# -# sources: -# required, list of strings, paths to the file contained in the -# asset catalog directory; this must contain the Contents.json file -# and all the image referenced by it (not enforced by the template). -# -# asset_type: -# required, string, type of the asset catalog, that is the extension -# of the directory containing the images and the Contents.json file. -# -template("asset_catalog") { - assert(defined(invoker.sources) && invoker.sources != [], - "sources must be defined and not empty for $target_name") - - assert(defined(invoker.asset_type) && invoker.asset_type != "", - "asset_type must be defined and not empty for $target_name") - - if (current_toolchain != default_toolchain) { - group(target_name) { - public_deps = [ - ":$target_name($default_toolchain)", - ] - } - } else { - _copy_target_name = target_name + "__copy" - _data_target_name = target_name - - _sources = invoker.sources - _outputs = [] - - # The compilation of resources into Assets.car is enabled automatically - # by the "create_bundle" target if any of the "bundle_data" sources's - # path is in a .xcassets directory and matches one of the know asset - # catalog type. - _xcassets_dir = "$target_gen_dir/${target_name}.xcassets" - _output_dir = "$_xcassets_dir/" + - get_path_info(get_path_info(_sources[0], "dir"), "file") - - foreach(_source, invoker.sources) { - _dir = get_path_info(_source, "dir") - _outputs += [ "$_output_dir/" + get_path_info(_source, "file") ] - - assert(get_path_info(_dir, "extension") == invoker.asset_type, - "$_source dirname must have .${invoker.asset_type} extension") - } - - action(_copy_target_name) { - # Forward "deps", "public_deps" and "testonly" in case some of the - # source files are generated. - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - ]) - - script = "//build/config/ios/hardlink.py" - - visibility = [ ":$_data_target_name" ] - sources = _sources - outputs = _outputs + [ _xcassets_dir ] - - args = [ - rebase_path(get_path_info(_sources[0], "dir"), root_out_dir), - rebase_path(_output_dir, root_out_dir), - ] - } - - bundle_data(_data_target_name) { - forward_variables_from(invoker, - "*", - [ - "deps", - "outputs", - "public_deps", - "sources", - ]) - - sources = _outputs - outputs = [ - "{{bundle_resources_dir}}/{{source_file_part}}", - ] - public_deps = [ - ":$_copy_target_name", - ] - } - } -} - -# Those templates are specialisation of the asset_catalog template for known -# types of asset catalog types (imageset, launchimage, appiconset). -# -# Arguments -# -# sources: -# required, list of strings, paths to the file contained in the -# asset catalog directory; this must contain the Contents.json file -# and all the image referenced by it (not enforced by the template). -# -template("appiconset") { - asset_catalog(target_name) { - forward_variables_from(invoker, "*", [ "asset_type" ]) - asset_type = "appiconset" - } -} -template("imageset") { - asset_catalog(target_name) { - forward_variables_from(invoker, "*", [ "asset_type" ]) - asset_type = "imageset" - } -} -template("launchimage") { - asset_catalog(target_name) { - forward_variables_from(invoker, "*", [ "asset_type" ]) - asset_type = "launchimage" - } -}
diff --git a/build/config/ios/codesign.py b/build/config/ios/codesign.py deleted file mode 100644 index fba34f6..0000000 --- a/build/config/ios/codesign.py +++ /dev/null
@@ -1,531 +0,0 @@ -# Copyright 2016 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 argparse -import datetime -import fnmatch -import glob -import os -import plistlib -import shutil -import subprocess -import sys -import tempfile - - -def GetProvisioningProfilesDir(): - """Returns the location of the installed mobile provisioning profiles. - - Returns: - The path to the directory containing the installed mobile provisioning - profiles as a string. - """ - return os.path.join( - os.environ['HOME'], 'Library', 'MobileDevice', 'Provisioning Profiles') - - -def LoadPlistFile(plist_path): - """Loads property list file at |plist_path|. - - Args: - plist_path: path to the property list file to load. - - Returns: - The content of the property list file as a python object. - """ - return plistlib.readPlistFromString(subprocess.check_output([ - 'xcrun', 'plutil', '-convert', 'xml1', '-o', '-', plist_path])) - - -class Bundle(object): - """Wraps a bundle.""" - - def __init__(self, bundle_path): - """Initializes the Bundle object with data from bundle Info.plist file.""" - self._path = bundle_path - self._data = LoadPlistFile(os.path.join(self._path, 'Info.plist')) - - @property - def path(self): - return self._path - - @property - def identifier(self): - return self._data['CFBundleIdentifier'] - - @property - def binary_path(self): - return os.path.join(self._path, self._data['CFBundleExecutable']) - - def Validate(self, expected_mappings): - """Checks that keys in the bundle have the expected value. - - Args: - expected_mappings: a dictionary of string to object, each mapping will - be looked up in the bundle data to check it has the same value (missing - values will be ignored) - - Returns: - A dictionary of the key with a different value between expected_mappings - and the content of the bundle (i.e. errors) so that caller can format the - error message. The dictionary will be empty if there are no errors. - """ - errors = {} - for key, expected_value in expected_mappings.iteritems(): - if key in self._data: - value = self._data[key] - if value != expected_value: - errors[key] = (value, expected_value) - return errors - - -class ProvisioningProfile(object): - """Wraps a mobile provisioning profile file.""" - - def __init__(self, provisioning_profile_path): - """Initializes the ProvisioningProfile with data from profile file.""" - self._path = provisioning_profile_path - self._data = plistlib.readPlistFromString(subprocess.check_output([ - 'xcrun', 'security', 'cms', '-D', '-u', 'certUsageAnyCA', - '-i', provisioning_profile_path])) - - @property - def path(self): - return self._path - - @property - def application_identifier_pattern(self): - return self._data.get('Entitlements', {}).get('application-identifier', '') - - @property - def team_identifier(self): - return self._data.get('TeamIdentifier', [''])[0] - - @property - def entitlements(self): - return self._data.get('Entitlements', {}) - - @property - def expiration_date(self): - return self._data.get('ExpirationDate', datetime.datetime.now()) - - def ValidToSignBundle(self, bundle_identifier): - """Checks whether the provisioning profile can sign bundle_identifier. - - Args: - bundle_identifier: the identifier of the bundle that needs to be signed. - - Returns: - True if the mobile provisioning profile can be used to sign a bundle - with the corresponding bundle_identifier, False otherwise. - """ - return fnmatch.fnmatch( - '%s.%s' % (self.team_identifier, bundle_identifier), - self.application_identifier_pattern) - - def Install(self, installation_path): - """Copies mobile provisioning profile info to |installation_path|.""" - shutil.copy2(self.path, installation_path) - - -class Entitlements(object): - """Wraps an Entitlement plist file.""" - - def __init__(self, entitlements_path): - """Initializes Entitlements object from entitlement file.""" - self._path = entitlements_path - self._data = LoadPlistFile(self._path) - - @property - def path(self): - return self._path - - def ExpandVariables(self, substitutions): - self._data = self._ExpandVariables(self._data, substitutions) - - def _ExpandVariables(self, data, substitutions): - if isinstance(data, str): - for key, substitution in substitutions.iteritems(): - data = data.replace('$(%s)' % (key,), substitution) - return data - - if isinstance(data, dict): - for key, value in data.iteritems(): - data[key] = self._ExpandVariables(value, substitutions) - return data - - if isinstance(data, list): - for i, value in enumerate(data): - data[i] = self._ExpandVariables(value, substitutions) - - return data - - def LoadDefaults(self, defaults): - for key, value in defaults.iteritems(): - if key not in self._data: - self._data[key] = value - - def WriteTo(self, target_path): - plistlib.writePlist(self._data, target_path) - - -def FindProvisioningProfile(bundle_identifier, required): - """Finds mobile provisioning profile to use to sign bundle. - - Args: - bundle_identifier: the identifier of the bundle to sign. - - Returns: - The ProvisioningProfile object that can be used to sign the Bundle - object or None if no matching provisioning profile was found. - """ - provisioning_profile_paths = glob.glob( - os.path.join(GetProvisioningProfilesDir(), '*.mobileprovision')) - - # Iterate over all installed mobile provisioning profiles and filter those - # that can be used to sign the bundle, ignoring expired ones. - now = datetime.datetime.now() - valid_provisioning_profiles = [] - one_hour = datetime.timedelta(0, 3600) - for provisioning_profile_path in provisioning_profile_paths: - provisioning_profile = ProvisioningProfile(provisioning_profile_path) - if provisioning_profile.expiration_date - now < one_hour: - sys.stderr.write( - 'Warning: ignoring expired provisioning profile: %s.\n' % - provisioning_profile_path) - continue - if provisioning_profile.ValidToSignBundle(bundle_identifier): - valid_provisioning_profiles.append(provisioning_profile) - - if not valid_provisioning_profiles: - if required: - sys.stderr.write( - 'Error: no mobile provisioning profile found for "%s".\n' % - bundle_identifier) - sys.exit(1) - return None - - # Select the most specific mobile provisioning profile, i.e. the one with - # the longest application identifier pattern (prefer the one with the latest - # expiration date as a secondary criteria). - selected_provisioning_profile = max( - valid_provisioning_profiles, - key=lambda p: (len(p.application_identifier_pattern), p.expiration_date)) - - one_week = datetime.timedelta(7) - if selected_provisioning_profile.expiration_date - now < 2 * one_week: - sys.stderr.write( - 'Warning: selected provisioning profile will expire soon: %s' % - selected_provisioning_profile.path) - return selected_provisioning_profile - - -def CodeSignBundle(bundle_path, identity, extra_args): - process = subprocess.Popen(['xcrun', 'codesign', '--force', '--sign', - identity, '--timestamp=none'] + list(extra_args) + [bundle_path], - stderr=subprocess.PIPE) - _, stderr = process.communicate() - if process.returncode: - sys.stderr.write(stderr) - sys.exit(process.returncode) - for line in stderr.splitlines(): - if line.endswith(': replacing existing signature'): - # Ignore warning about replacing existing signature as this should only - # happen when re-signing system frameworks (and then it is expected). - continue - sys.stderr.write(line) - sys.stderr.write('\n') - - -def InstallSystemFramework(framework_path, bundle_path, args): - """Install framework from |framework_path| to |bundle| and code-re-sign it.""" - installed_framework_path = os.path.join( - bundle_path, 'Frameworks', os.path.basename(framework_path)) - - if os.path.exists(installed_framework_path): - shutil.rmtree(installed_framework_path) - - shutil.copytree(framework_path, installed_framework_path) - CodeSignBundle(installed_framework_path, args.identity, - ['--deep', '--preserve-metadata=identifier,entitlements']) - - -def GenerateEntitlements(path, provisioning_profile, bundle_identifier): - """Generates an entitlements file. - - Args: - path: path to the entitlements template file - provisioning_profile: ProvisioningProfile object to use, may be None - bundle_identifier: identifier of the bundle to sign. - """ - entitlements = Entitlements(path) - if provisioning_profile: - entitlements.LoadDefaults(provisioning_profile.entitlements) - app_identifier_prefix = provisioning_profile.team_identifier + '.' - else: - app_identifier_prefix = '*.' - entitlements.ExpandVariables({ - 'CFBundleIdentifier': bundle_identifier, - 'AppIdentifierPrefix': app_identifier_prefix, - }) - return entitlements - - -def GenerateBundleInfoPlist(bundle_path, plist_compiler, partial_plist): - """Generates the bundle Info.plist for a list of partial .plist files. - - Args: - bundle_path: path to the bundle - plist_compiler: string, path to the Info.plist compiler - partial_plist: list of path to partial .plist files to merge - """ - - # Filter empty partial .plist files (this happens if an application - # does not include need to compile any asset catalog, in which case - # the partial .plist file from the asset catalog compilation step is - # just a stamp file). - filtered_partial_plist = [] - for plist in partial_plist: - plist_size = os.stat(plist).st_size - if plist_size: - filtered_partial_plist.append(plist) - - # Invoke the plist_compiler script. It needs to be a python script. - subprocess.check_call([ - 'python', plist_compiler, 'merge', '-f', 'binary1', - '-o', os.path.join(bundle_path, 'Info.plist'), - ] + filtered_partial_plist) - - -class Action(object): - """Class implementing one action supported by the script.""" - - @classmethod - def Register(cls, subparsers): - parser = subparsers.add_parser(cls.name, help=cls.help) - parser.set_defaults(func=cls._Execute) - cls._Register(parser) - - -class CodeSignBundleAction(Action): - """Class implementing the code-sign-bundle action.""" - - name = 'code-sign-bundle' - help = 'perform code signature for a bundle' - - @staticmethod - def _Register(parser): - parser.add_argument( - '--entitlements', '-e', dest='entitlements_path', - help='path to the entitlements file to use') - parser.add_argument( - 'path', help='path to the iOS bundle to codesign') - parser.add_argument( - '--identity', '-i', required=True, - help='identity to use to codesign') - parser.add_argument( - '--binary', '-b', required=True, - help='path to the iOS bundle binary') - parser.add_argument( - '--framework', '-F', action='append', default=[], dest='frameworks', - help='install and resign system framework') - parser.add_argument( - '--disable-code-signature', action='store_true', dest='no_signature', - help='disable code signature') - parser.add_argument( - '--disable-embedded-mobileprovision', action='store_false', - default=True, dest='embedded_mobileprovision', - help='disable finding and embedding mobileprovision') - parser.add_argument( - '--platform', '-t', required=True, - help='platform the signed bundle is targeting') - parser.add_argument( - '--partial-info-plist', '-p', action='append', default=[], - help='path to partial Info.plist to merge to create bundle Info.plist') - parser.add_argument( - '--plist-compiler-path', '-P', action='store', - help='path to the plist compiler script (for --partial-info-plist)') - parser.set_defaults(no_signature=False) - - @staticmethod - def _Execute(args): - if not args.identity: - args.identity = '-' - - if args.partial_info_plist: - GenerateBundleInfoPlist( - args.path, - args.plist_compiler_path, - args.partial_info_plist) - - bundle = Bundle(args.path) - - # According to Apple documentation, the application binary must be the same - # as the bundle name without the .app suffix. See crbug.com/740476 for more - # information on what problem this can cause. - # - # To prevent this class of error, fail with an error if the binary name is - # incorrect in the Info.plist as it is not possible to update the value in - # Info.plist at this point (the file has been copied by a different target - # and ninja would consider the build dirty if it was updated). - # - # Also checks that the name of the bundle is correct too (does not cause the - # build to be considered dirty, but still terminate the script in case of an - # incorrect bundle name). - # - # Apple documentation is available at: - # https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html - bundle_name = os.path.splitext(os.path.basename(bundle.path))[0] - errors = bundle.Validate({ - 'CFBundleName': bundle_name, - 'CFBundleExecutable': bundle_name, - }) - if errors: - for key in sorted(errors): - value, expected_value = errors[key] - sys.stderr.write('%s: error: %s value incorrect: %s != %s\n' % ( - bundle.path, key, value, expected_value)) - sys.stderr.flush() - sys.exit(1) - - # Delete existing embedded mobile provisioning. - embedded_provisioning_profile = os.path.join( - bundle.path, 'embedded.mobileprovision') - if os.path.isfile(embedded_provisioning_profile): - os.unlink(embedded_provisioning_profile) - - # Delete existing code signature. - signature_file = os.path.join(args.path, '_CodeSignature', 'CodeResources') - if os.path.isfile(signature_file): - shutil.rmtree(os.path.dirname(signature_file)) - - # Install system frameworks if requested. - for framework_path in args.frameworks: - InstallSystemFramework(framework_path, args.path, args) - - # Copy main binary into bundle. - if os.path.isfile(bundle.binary_path): - os.unlink(bundle.binary_path) - shutil.copy(args.binary, bundle.binary_path) - - if args.no_signature: - return - - codesign_extra_args = [] - - if args.embedded_mobileprovision: - # Find mobile provisioning profile and embeds it into the bundle (if a - # code signing identify has been provided, fails if no valid mobile - # provisioning is found). - provisioning_profile_required = args.identity != '-' - provisioning_profile = FindProvisioningProfile( - bundle.identifier, provisioning_profile_required) - if provisioning_profile and args.platform != 'iphonesimulator': - provisioning_profile.Install(embedded_provisioning_profile) - - if args.entitlements_path is not None: - temporary_entitlements_file = \ - tempfile.NamedTemporaryFile(suffix='.xcent') - codesign_extra_args.extend( - ['--entitlements', temporary_entitlements_file.name]) - - entitlements = GenerateEntitlements( - args.entitlements_path, provisioning_profile, bundle.identifier) - entitlements.WriteTo(temporary_entitlements_file.name) - - CodeSignBundle(bundle.path, args.identity, codesign_extra_args) - - -class CodeSignFileAction(Action): - """Class implementing code signature for a single file.""" - - name = 'code-sign-file' - help = 'code-sign a single file' - - @staticmethod - def _Register(parser): - parser.add_argument( - 'path', help='path to the file to codesign') - parser.add_argument( - '--identity', '-i', required=True, - help='identity to use to codesign') - parser.add_argument( - '--output', '-o', - help='if specified copy the file to that location before signing it') - parser.set_defaults(sign=True) - - @staticmethod - def _Execute(args): - if not args.identity: - args.identity = '-' - - install_path = args.path - if args.output: - - if os.path.isfile(args.output): - os.unlink(args.output) - elif os.path.isdir(args.output): - shutil.rmtree(args.output) - - if os.path.isfile(args.path): - shutil.copy(args.path, args.output) - elif os.path.isdir(args.path): - shutil.copytree(args.path, args.output) - - install_path = args.output - - CodeSignBundle(install_path, args.identity, - ['--deep', '--preserve-metadata=identifier,entitlements']) - - -class GenerateEntitlementsAction(Action): - """Class implementing the generate-entitlements action.""" - - name = 'generate-entitlements' - help = 'generate entitlements file' - - @staticmethod - def _Register(parser): - parser.add_argument( - '--entitlements', '-e', dest='entitlements_path', - help='path to the entitlements file to use') - parser.add_argument( - 'path', help='path to the entitlements file to generate') - parser.add_argument( - '--info-plist', '-p', required=True, - help='path to the bundle Info.plist') - - @staticmethod - def _Execute(args): - info_plist = LoadPlistFile(args.info_plist) - bundle_identifier = info_plist['CFBundleIdentifier'] - provisioning_profile = FindProvisioningProfile(bundle_identifier, False) - entitlements = GenerateEntitlements( - args.entitlements_path, provisioning_profile, bundle_identifier) - entitlements.WriteTo(args.path) - - -def Main(): - parser = argparse.ArgumentParser('codesign iOS bundles') - parser.add_argument('--developer_dir', required=False, - help='Path to Xcode.') - subparsers = parser.add_subparsers() - - actions = [ - CodeSignBundleAction, - CodeSignFileAction, - GenerateEntitlementsAction, - ] - - for action in actions: - action.Register(subparsers) - - args = parser.parse_args() - if args.developer_dir: - os.environ['DEVELOPER_DIR'] = args.developer_dir - args.func(args) - - -if __name__ == '__main__': - sys.exit(Main())
diff --git a/build/config/ios/dummy.py b/build/config/ios/dummy.py deleted file mode 100644 index b23b7da..0000000 --- a/build/config/ios/dummy.py +++ /dev/null
@@ -1,15 +0,0 @@ -# Copyright 2017 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. - -"""Empty script that does nothing and return success error code. - -This script is used by some gn targets that pretend creating some output -but instead depend on another target creating the output indirectly (in -general this output is a directory that is used as input by a bundle_data -target). - -It ignores all parameters and terminate with a success error code. It -does the same thing as the unix command "true", but gn can only invoke -python scripts. -"""
diff --git a/build/config/ios/entitlements.plist b/build/config/ios/entitlements.plist deleted file mode 100644 index 429762e..0000000 --- a/build/config/ios/entitlements.plist +++ /dev/null
@@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>application-identifier</key> - <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> - <key>keychain-access-groups</key> - <array> - <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> - </array> -</dict> -</plist>
diff --git a/build/config/ios/find_signing_identity.py b/build/config/ios/find_signing_identity.py deleted file mode 100644 index 7add474..0000000 --- a/build/config/ios/find_signing_identity.py +++ /dev/null
@@ -1,47 +0,0 @@ -# Copyright (c) 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 argparse -import os -import subprocess -import sys -import re - -def ListIdentities(): - return subprocess.check_output([ - 'xcrun', - 'security', - 'find-identity', - '-v', - '-p', - 'codesigning', - ]) - - -def FindValidIdentity(identity_description): - lines = list(map(str.strip, ListIdentities().splitlines())) - # Look for something like "2) XYZ "iPhone Developer: Name (ABC)"" - exp = re.compile('[0-9]+\) ([A-F0-9]+) "([^"]*)"') - for line in lines: - res = exp.match(line) - if res is None: - continue - if identity_description in res.group(2): - yield res.group(1) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser('codesign iOS bundles') - parser.add_argument( - '--developer_dir', required=False, - help='Path to Xcode.') - parser.add_argument( - '--identity-description', required=True, - help='Text description used to select the code signing identity.') - args = parser.parse_args() - if args.developer_dir: - os.environ['DEVELOPER_DIR'] = args.developer_dir - - for identity in FindValidIdentity(args.identity_description): - print identity
diff --git a/build/config/ios/generate_umbrella_header.py b/build/config/ios/generate_umbrella_header.py deleted file mode 100644 index 8547e18..0000000 --- a/build/config/ios/generate_umbrella_header.py +++ /dev/null
@@ -1,75 +0,0 @@ -# Copyright 2018 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. - -"""Generates an umbrella header for an iOS framework.""" - -import argparse -import datetime -import os -import re -import string - - -HEADER_TEMPLATE = string.Template('''\ -// Copyright $year 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. -// -// This file is auto-generated by //build/ios/config/generate_umbrella_header.py - -#ifndef $header_guard -#define $header_guard - -$imports - -#endif // $header_guard -''') - - -def ComputeHeaderGuard(file_path): - """Computes the header guard for a file path. - - Args: - file_path: The path to convert into an header guard. - Returns: - The header guard string for the file_path. - """ - return re.sub(r'[.+/\\]', r'_', file_path.upper()) + '_' - - -def WriteUmbrellaHeader(output_path, imported_headers): - """Writes the umbrella header. - - Args: - output_path: The path to the umbrella header. - imported_headers: A list of headers to #import in the umbrella header. - """ - year = datetime.date.today().year - header_guard = ComputeHeaderGuard(output_path) - imports = '\n'.join([ - '#import "%s"' % os.path.basename(header) - for header in sorted(imported_headers) - ]) - with open(output_path, 'w') as output_file: - output_file.write( - HEADER_TEMPLATE.safe_substitute({ - 'year': year, - 'header_guard': header_guard, - 'imports': imports, - })) - - -def Main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--output-path', required=True, type=str, - help='Path to the generated umbrella header.') - parser.add_argument('imported_headers', type=str, nargs='+', - help='Headers to #import in the umbrella header.') - options = parser.parse_args() - - return WriteUmbrellaHeader(options.output_path, options.imported_headers) - - -if __name__ == '__main__': - Main()
diff --git a/build/config/ios/hardlink.py b/build/config/ios/hardlink.py deleted file mode 100644 index 91dbf62..0000000 --- a/build/config/ios/hardlink.py +++ /dev/null
@@ -1,69 +0,0 @@ -# Copyright 2017 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. - -"""Recursively create hardlink to target named output.""" - - -import argparse -import os -import shutil - - -def CreateHardlinkHelper(target, output): - """Recursively create a hardlink named output pointing to target. - - Args: - target: path to an existing file or directory - output: path to the newly created hardlink - - This function assumes that output does not exists but that the parent - directory containing output does. If those conditions are false, then - the function will fails with an exception corresponding to an OS error. - """ - if os.path.islink(target): - os.symlink(os.readlink(target), output) - elif not os.path.isdir(target): - try: - os.link(target, output) - except: - shutil.copy(target, output) - else: - os.mkdir(output) - for name in os.listdir(target): - CreateHardlinkHelper( - os.path.join(target, name), - os.path.join(output, name)) - - -def CreateHardlink(target, output): - """Recursively create a hardlink named output pointing to target. - - Args: - target: path to an existing file or directory - output: path to the newly created hardlink - - If output already exists, it is first removed. In all cases, the - parent directory containing output is created. - """ - if os.path.exists(output): - shutil.rmtree(output) - - parent_dir = os.path.dirname(os.path.abspath(output)) - if not os.path.isdir(parent_dir): - os.makedirs(parent_dir) - - CreateHardlinkHelper(target, output) - - -def Main(): - parser = argparse.ArgumentParser() - parser.add_argument('target', help='path to the file or directory to link to') - parser.add_argument('output', help='name of the hardlink to create') - args = parser.parse_args() - - CreateHardlink(args.target, args.output) - - -if __name__ == '__main__': - Main()
diff --git a/build/config/ios/ios_sdk.gni b/build/config/ios/ios_sdk.gni deleted file mode 100644 index 35de13b..0000000 --- a/build/config/ios/ios_sdk.gni +++ /dev/null
@@ -1,166 +0,0 @@ -# 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/config/ios/ios_sdk_overrides.gni") -import("//build/toolchain/toolchain.gni") - -declare_args() { - # SDK path to use. When empty this will use the default SDK based on the - # value of use_ios_simulator. - ios_sdk_path = "" - ios_sdk_name = "" - ios_sdk_version = "" - ios_sdk_platform = "" - ios_sdk_platform_path = "" - xcode_version = "" - xcode_version_int = 0 - xcode_build = "" - machine_os_build = "" - - # The iOS Code signing identity to use - # TODO(GYP), TODO(sdfresne): Consider having a separate - # ios_enable_code_signing_flag=<bool> flag to make the invocation clearer. - ios_enable_code_signing = true - ios_code_signing_identity = "" - ios_code_signing_identity_description = "iPhone Developer" - - # Prefix for CFBundleIdentifier property of iOS bundles (correspond to the - # "Organization Identifier" in Xcode). Code signing will fail if no mobile - # provisioning for the selected code signing identify support that prefix. - ios_app_bundle_id_prefix = "org.chromium" - - # If true, then allow using Xcode to automatically manage certificates. This - # requires loading a separate Xcode project and enable automatically managed - # certificates. When true, all test application will use the same bundle id - # to avoid running out of certificates if using a free account. - ios_automatically_manage_certs = true - - # If non-empty, this list must contain valid cpu architecture, and the final - # build will be a multi-architecture build (aka fat build) supporting the - # main $target_cpu architecture and all of $additional_target_cpus. - # - # For example to build an application that will run on both arm64 and armv7 - # devices, you would use the following in args.gn file when running "gn args": - # - # target_os = "ios" - # target_cpu = "arm64" - # additional_target_cpus = [ "arm" ] - # - # You can also pass the value via "--args" parameter for "gn gen" command by - # using the syntax --args='additional_target_cpus=["arm"] target_cpu="arm64"'. - additional_target_cpus = [] -} - -assert(custom_toolchain == "" || additional_target_cpus == [], - "cannot define both custom_toolchain and additional_target_cpus") - -use_ios_simulator = current_cpu == "x86" || current_cpu == "x64" - -ios_generic_test_bundle_id_suffix = "generic-unit-test" - -# Initialize additional_toolchains from additional_target_cpus. Assert here -# that the list does not contains $target_cpu nor duplicates as this would -# cause weird errors during the build. -additional_toolchains = [] -if (additional_target_cpus != []) { - foreach(_additional_target_cpu, additional_target_cpus) { - assert(_additional_target_cpu != target_cpu, - "target_cpu must not be listed in additional_target_cpus") - - _toolchain = "//build/toolchain/mac:ios_clang_$_additional_target_cpu" - foreach(_additional_toolchain, additional_toolchains) { - assert(_toolchain != _additional_toolchain, - "additional_target_cpus must not contains duplicate values") - } - - additional_toolchains += [ _toolchain ] - } -} - -if (ios_sdk_path == "") { - # Compute default target. - if (use_ios_simulator) { - ios_sdk_name = "iphonesimulator" - ios_sdk_platform = "iPhoneSimulator" - } else { - ios_sdk_name = "iphoneos" - ios_sdk_platform = "iPhoneOS" - } - - ios_sdk_info_args = [] - if (!use_system_xcode) { - ios_sdk_info_args += [ - "--developer_dir", - hermetic_xcode_path, - ] - } - ios_sdk_info_args += [ ios_sdk_name ] - script_name = "//build/config/mac/sdk_info.py" - _ios_sdk_result = exec_script(script_name, ios_sdk_info_args, "scope") - ios_sdk_path = _ios_sdk_result.sdk_path - ios_sdk_version = _ios_sdk_result.sdk_version - ios_sdk_platform_path = _ios_sdk_result.sdk_platform_path - ios_sdk_build = _ios_sdk_result.sdk_build - xcode_version = _ios_sdk_result.xcode_version - xcode_version_int = _ios_sdk_result.xcode_version_int - xcode_build = _ios_sdk_result.xcode_build - machine_os_build = _ios_sdk_result.machine_os_build - if (use_ios_simulator) { - # This is weird, but Xcode sets DTPlatformBuild to an empty field for - # simulator builds. - ios_platform_build = "" - } else { - ios_platform_build = ios_sdk_build - } -} - -if (ios_enable_code_signing && !use_ios_simulator) { - find_signing_identity_args = [ - "--identity-description", - ios_code_signing_identity_description, - ] - if (!use_system_xcode) { - find_signing_identity_args += [ - "--developer_dir", - hermetic_xcode_path, - ] - } - - # If an identity is not provided, look for one on the host - if (ios_code_signing_identity == "") { - _ios_identities = exec_script("find_signing_identity.py", - find_signing_identity_args, - "list lines") - if (_ios_identities == []) { - print("Tried to prepare a device build without specifying a code signing") - print("identity and could not detect one automatically either.") - print("TIP: Simulator builds don't require code signing...") - assert(false) - } else { - _ios_identities_len = 0 - foreach(_, _ios_identities) { - _ios_identities_len += 1 - } - - ios_code_signing_identity = _ios_identities[0] - if (_ios_identities_len != 1) { - print("Warning: Multiple codesigning identities match " + - "\"$ios_code_signing_identity_description\"") - foreach(_ios_identity, _ios_identities) { - _selected = "" - if (ios_code_signing_identity == _ios_identity) { - _selected = " (selected)" - } - print("Warning: - $_ios_identity$_selected") - } - print("Warning: Please use either ios_code_signing_identity or ") - print("Warning: ios_code_signing_identity_description variable to ") - print("Warning: control which identity is selected.") - print() - } - } - } -} - -assert(xcode_version_int >= 900, "Xcode 9 is required.")
diff --git a/build/config/ios/ios_sdk_overrides.gni b/build/config/ios/ios_sdk_overrides.gni deleted file mode 100644 index 00105af..0000000 --- a/build/config/ios/ios_sdk_overrides.gni +++ /dev/null
@@ -1,17 +0,0 @@ -# Copyright 2017 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. - -# This file contains arguments that subprojects may choose to override. It -# asserts that those overrides are used, to prevent unused args warnings. - -declare_args() { - # Version of iOS that we're targeting. - ios_deployment_target = "10.0" -} - -# Always assert that ios_deployment_target is used on non-iOS platforms to -# prevent unused args warnings. -if (!is_ios) { - assert(ios_deployment_target == "10.0" || true) -}
diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni deleted file mode 100644 index df6033b..0000000 --- a/build/config/ios/rules.gni +++ /dev/null
@@ -1,2021 +0,0 @@ -# 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/config/ios/ios_sdk.gni") -import("//build/config/mac/base_rules.gni") -import("//build/config/mac/symbols.gni") -import("//build/toolchain/toolchain.gni") - -# Invokes lipo on multiple arch-specific binaries to create a fat binary. -# -# Arguments -# -# arch_binary_target -# name of the target generating the arch-specific binaries, they must -# be named $target_out_dir/$toolchain_cpu/$arch_binary_output. -# -# arch_binary_output -# (optional, defaults to the name of $arch_binary_target) base name of -# the arch-specific binary generated by arch_binary_target. -# -# output_name -# (optional, defaults to $target_name) base name of the target output, -# the full path will be $target_out_dir/$output_name. -# -# configs -# (optional) a list of configurations, this is used to check whether -# the binary should be stripped, when "enable_stripping" is true. -# -template("lipo_binary") { - assert(defined(invoker.arch_binary_target), - "arch_binary_target must be defined for $target_name") - - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _all_target_cpu = [ current_cpu ] + additional_target_cpus - _all_toolchains = [ current_toolchain ] + additional_toolchains - - _arch_binary_target = invoker.arch_binary_target - _arch_binary_output = get_label_info(_arch_binary_target, "name") - if (defined(invoker.arch_binary_output)) { - _arch_binary_output = invoker.arch_binary_output - } - - action(_target_name) { - forward_variables_from(invoker, - "*", - [ - "arch_binary_output", - "arch_binary_target", - "configs", - "output_name", - ]) - - script = "//build/toolchain/mac/linker_driver.py" - - # http://crbug.com/762840. Fix for bots running out of memory. - pool = "//build/toolchain:link_pool($default_toolchain)" - - outputs = [ - "$target_out_dir/$_output_name", - ] - - deps = [] - _index = 0 - inputs = [] - foreach(_cpu, _all_target_cpu) { - _toolchain = _all_toolchains[_index] - _index = _index + 1 - - inputs += - [ get_label_info("$_arch_binary_target($_toolchain)", - "target_out_dir") + "/$_cpu/$_arch_binary_output" ] - - deps += [ "$_arch_binary_target($_toolchain)" ] - } - - args = [] - if (!use_system_xcode) { - args += [ - "--developer_dir", - hermetic_xcode_path, - ] - } - args += [ - "xcrun", - "lipo", - "-create", - "-output", - rebase_path("$target_out_dir/$_output_name", root_build_dir), - ] + rebase_path(inputs, root_build_dir) - - if (enable_dsyms) { - _dsyms_output_dir = "$root_out_dir/$_output_name.dSYM" - outputs += [ - "$_dsyms_output_dir/", - "$_dsyms_output_dir/Contents/Info.plist", - "$_dsyms_output_dir/Contents/Resources/DWARF/$_output_name", - ] - args += [ "-Wcrl,dsym," + rebase_path("$root_out_dir/.", root_build_dir) ] - } - - if (enable_stripping) { - args += [ "-Wcrl,strip,-x,-S" ] - if (save_unstripped_output) { - outputs += [ "$root_out_dir/$_output_name.unstripped" ] - args += [ "-Wcrl,unstripped," + - rebase_path("$root_out_dir/.", root_build_dir) ] - } - } - } -} - -# Wrapper around create_bundle taking care of code signature settings. -# -# Arguments -# -# product_type -# string, product type for the generated Xcode project. -# -# bundle_gen_dir -# (optional) directory where the bundle is generated; must be below -# root_out_dir and defaults to root_out_dir if omitted. -# -# bundle_deps -# (optional) list of additional dependencies. -# -# bundle_deps_filter -# (optional) list of dependencies to filter (for more information -# see "gn help bundle_deps_filter"). -# -# bundle_extension -# string, extension of the bundle, used to generate bundle name. -# -# bundle_binary_target -# (optional) string, label of the target generating the bundle main -# binary. This target and bundle_binary_path are mutually exclusive. -# -# bundle_binary_output -# (optional) string, base name of the binary generated by the -# bundle_binary_target target, defaults to the target name. -# -# bundle_binary_path -# (optional) string, path to the bundle main binary. This target and -# bundle_binary_target are mutually exclusive. -# -# output_name: -# (optional) string, name of the generated application, if omitted, -# defaults to the target_name. -# -# extra_system_frameworks -# (optional) list of system framework to copy to the bundle. -# -# enable_code_signing -# (optional) boolean, control whether code signing is enabled or not, -# default to ios_enable_code_signing if not defined. -# -# entitlements_path: -# (optional) path to the template to use to generate the application -# entitlements by performing variable substitutions, defaults to -# //build/config/ios/entitlements.plist. -# -# entitlements_target: -# (optional) label of the target generating the application -# entitlements (must generate a single file as output); cannot be -# defined if entitlements_path is set. -# -# disable_entitlements -# (optional, defaults to false) boolean, control whether entitlements willi -# be embedded in the application during signature. If false and no -# entitlements are provided, default empty entitlements will be used. -# -# disable_embedded_mobileprovision -# (optional, default to false) boolean, control whether mobile provisions -# will be embedded in the bundle. If true, the existing -# embedded.mobileprovision will be deleted. -# -# xcode_extra_attributes -# (optional) scope, extra attributes for Xcode projects. -# -# xcode_test_application_name: -# (optional) string, name of the test application for Xcode unit or ui -# test target. -# -# primary_info_plist: -# (optional) path to Info.plist to merge with the $partial_info_plist -# generated by the compilation of the asset catalog. -# -# partial_info_plist: -# (optional) path to the partial Info.plist generated by the asset -# catalog compiler; if defined $primary_info_plist must also be defined. -# -template("create_signed_bundle") { - assert(defined(invoker.product_type), - "product_type must be defined for $target_name") - assert(defined(invoker.bundle_extension), - "bundle_extension must be defined for $target_name") - assert(defined(invoker.bundle_binary_target) != - defined(invoker.bundle_binary_path), - "Only one of bundle_binary_target or bundle_binary_path may be " + - "specified for $target_name") - assert(!defined(invoker.partial_info_plist) || - defined(invoker.primary_info_plist), - "primary_info_plist must be defined when partial_info_plist is " + - "defined for $target_name") - - if (defined(invoker.xcode_test_application_name)) { - assert( - invoker.product_type == "com.apple.product-type.bundle.unit-test" || - invoker.product_type == "com.apple.product-type.bundle.ui-testing", - "xcode_test_application_name can be only defined for Xcode unit or ui test target.") - } - - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - if (defined(invoker.bundle_binary_path)) { - _bundle_binary_path = invoker.bundle_binary_path - } else { - _bundle_binary_target = invoker.bundle_binary_target - _bundle_binary_output = get_label_info(_bundle_binary_target, "name") - if (defined(invoker.bundle_binary_output)) { - _bundle_binary_output = invoker.bundle_binary_output - } - _bundle_binary_path = - get_label_info(_bundle_binary_target, "target_out_dir") + - "/$_bundle_binary_output" - } - - _bundle_gen_dir = root_out_dir - if (defined(invoker.bundle_gen_dir)) { - _bundle_gen_dir = invoker.bundle_gen_dir - } - - _bundle_extension = invoker.bundle_extension - - _enable_embedded_mobileprovision = true - if (defined(invoker.disable_embedded_mobileprovision)) { - _enable_embedded_mobileprovision = !invoker.disable_embedded_mobileprovision - } - - _enable_entitlements = true - if (defined(invoker.disable_entitlements)) { - _enable_entitlements = !invoker.disable_entitlements - } - - if (_enable_entitlements) { - if (!defined(invoker.entitlements_target)) { - _entitlements_path = "//build/config/ios/entitlements.plist" - if (defined(invoker.entitlements_path)) { - _entitlements_path = invoker.entitlements_path - } - } else { - assert(!defined(invoker.entitlements_path), - "Cannot define both entitlements_path and entitlements_target " + - "for $target_name") - - _entitlements_target_outputs = - get_target_outputs(invoker.entitlements_target) - _entitlements_path = _entitlements_target_outputs[0] - } - } - - _enable_code_signing = ios_enable_code_signing - if (defined(invoker.enable_code_signing)) { - _enable_code_signing = invoker.enable_code_signing - } - - create_bundle(_target_name) { - forward_variables_from(invoker, - [ - "bundle_deps_filter", - "data_deps", - "deps", - "partial_info_plist", - "product_type", - "public_configs", - "public_deps", - "testonly", - "visibility", - "xcode_extra_attributes", - "xcode_test_application_name", - ]) - - bundle_root_dir = "$_bundle_gen_dir/$_output_name$_bundle_extension" - bundle_contents_dir = bundle_root_dir - bundle_resources_dir = bundle_contents_dir - bundle_executable_dir = bundle_contents_dir - bundle_plugins_dir = "$bundle_contents_dir/PlugIns" - - if (!defined(public_deps)) { - public_deps = [] - } - - if (defined(invoker.bundle_binary_target)) { - public_deps += [ invoker.bundle_binary_target ] - } - - if (defined(invoker.bundle_deps)) { - if (!defined(deps)) { - deps = [] - } - deps += invoker.bundle_deps - } - if (!defined(deps)) { - deps = [] - } - - code_signing_script = "//build/config/ios/codesign.py" - code_signing_sources = [ _bundle_binary_path ] - if (_enable_entitlements) { - if (defined(invoker.entitlements_target)) { - deps += [ invoker.entitlements_target ] - } - code_signing_sources += [ _entitlements_path ] - } - code_signing_outputs = [ "$bundle_contents_dir/$_output_name" ] - if (_enable_code_signing) { - code_signing_outputs += - [ "$bundle_contents_dir/_CodeSignature/CodeResources" ] - } - if (ios_code_signing_identity != "" && !use_ios_simulator && - _enable_embedded_mobileprovision) { - code_signing_outputs += - [ "$bundle_contents_dir/embedded.mobileprovision" ] - } - - if (defined(invoker.extra_system_frameworks)) { - foreach(_framework, invoker.extra_system_frameworks) { - code_signing_outputs += [ "$bundle_contents_dir/Frameworks/" + - get_path_info(_framework, "file") ] - } - } - - code_signing_args = [] - if (!use_system_xcode) { - code_signing_args += [ - "--developer_dir", - hermetic_xcode_path, - ] - } - code_signing_args += [ - "code-sign-bundle", - "-t=" + ios_sdk_name, - "-i=" + ios_code_signing_identity, - "-b=" + rebase_path(_bundle_binary_path, root_build_dir), - ] - if (_enable_entitlements) { - code_signing_args += - [ "-e=" + rebase_path(_entitlements_path, root_build_dir) ] - } - if (!_enable_embedded_mobileprovision) { - code_signing_args += [ "--disable-embedded-mobileprovision" ] - } - code_signing_args += [ rebase_path(bundle_root_dir, root_build_dir) ] - if (!_enable_code_signing) { - code_signing_args += [ "--disable-code-signature" ] - } - if (defined(invoker.extra_system_frameworks)) { - # All framework in extra_system_frameworks are expected to be - # system framework and the path to be already system absolute - # so do not use rebase_path here. - foreach(_framework, invoker.extra_system_frameworks) { - code_signing_args += [ "-F=" + _framework ] - } - } - if (defined(invoker.partial_info_plist)) { - _partial_info_plists = [ - invoker.primary_info_plist, - invoker.partial_info_plist, - ] - - _plist_compiler_path = "//build/config/mac/plist_util.py" - - code_signing_sources += _partial_info_plists - code_signing_sources += [ _plist_compiler_path ] - code_signing_outputs += [ "$bundle_contents_dir/Info.plist" ] - - code_signing_args += - [ "-P=" + rebase_path(_plist_compiler_path, root_build_dir) ] - foreach(_partial_info_plist, _partial_info_plists) { - code_signing_args += - [ "-p=" + rebase_path(_partial_info_plist, root_build_dir) ] - } - } - } -} - -# Generates Info.plist files for Mac apps and frameworks. -# -# Arguments -# -# info_plist: -# (optional) string, path to the Info.plist file that will be used for -# the bundle. -# -# info_plist_target: -# (optional) string, if the info_plist is generated from an action, -# rather than a regular source file, specify the target name in lieu -# of info_plist. The two arguments are mutually exclusive. -# -# executable_name: -# string, name of the generated target used for the product -# and executable name as specified in the output Info.plist. -# -# extra_substitutions: -# (optional) string array, 'key=value' pairs for extra fields which are -# specified in a source Info.plist template. -template("ios_info_plist") { - assert(defined(invoker.info_plist) != defined(invoker.info_plist_target), - "Only one of info_plist or info_plist_target may be specified in " + - target_name) - - if (defined(invoker.info_plist)) { - _info_plist = invoker.info_plist - } else { - _info_plist_target_output = get_target_outputs(invoker.info_plist_target) - _info_plist = _info_plist_target_output[0] - } - - info_plist(target_name) { - format = "binary1" - extra_substitutions = [] - if (defined(invoker.extra_substitutions)) { - extra_substitutions = invoker.extra_substitutions - } - extra_substitutions += [ - "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix", - "IOS_PLATFORM_BUILD=$ios_platform_build", - "IOS_PLATFORM_NAME=$ios_sdk_name", - "IOS_PLATFORM_VERSION=$ios_sdk_version", - "IOS_SDK_BUILD=$ios_sdk_build", - "IOS_SDK_NAME=$ios_sdk_name$ios_sdk_version", - "IOS_SUPPORTED_PLATFORM=$ios_sdk_platform", - ] - plist_templates = [ - "//build/config/ios/BuildInfo.plist", - _info_plist, - ] - if (defined(invoker.info_plist_target)) { - deps = [ - invoker.info_plist_target, - ] - } - forward_variables_from(invoker, - [ - "executable_name", - "output_name", - "visibility", - "testonly", - ]) - } -} - -# Template to build an application bundle for iOS. -# -# This should be used instead of "executable" built-in target type on iOS. -# As the template forward the generation of the application executable to -# an "executable" target, all arguments supported by "executable" targets -# are also supported by this template. -# -# Arguments -# -# output_name: -# (optional) string, name of the generated application, if omitted, -# defaults to the target_name. -# -# extra_substitutions: -# (optional) list of string in "key=value" format, each value will -# be used as an additional variable substitution rule when generating -# the application Info.plist -# -# info_plist: -# (optional) string, path to the Info.plist file that will be used for -# the bundle. -# -# info_plist_target: -# (optional) string, if the info_plist is generated from an action, -# rather than a regular source file, specify the target name in lieu -# of info_plist. The two arguments are mutually exclusive. -# -# entitlements_path: -# (optional) path to the template to use to generate the application -# entitlements by performing variable substitutions, defaults to -# //build/config/ios/entitlements.plist. -# -# entitlements_target: -# (optional) label of the target generating the application -# entitlements (must generate a single file as output); cannot be -# defined if entitlements_path is set. -# -# bundle_extension: -# (optional) bundle extension including the dot, default to ".app". -# -# product_type -# (optional) string, product type for the generated Xcode project, -# default to "com.apple.product-type.application". Should generally -# not be overridden. -# -# enable_code_signing -# (optional) boolean, control whether code signing is enabled or not, -# default to ios_enable_code_signing if not defined. -# -# variants -# (optional) list of scopes, each scope needs to define the attributes -# "name" and "bundle_deps"; if defined and non-empty, then one bundle -# named $target_out_dir/$variant/$output_name will be created for each -# variant with the same binary but the correct bundle_deps, the bundle -# at $target_out_dir/$output_name will be a copy of the first variant. -# -# For more information, see "gn help executable". -template("ios_app_bundle") { - _output_name = target_name - _target_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _arch_executable_source = _target_name + "_arch_executable_sources" - _arch_executable_target = _target_name + "_arch_executable" - _lipo_executable_target = _target_name + "_executable" - - if (defined(invoker.variants) && invoker.variants != []) { - _variants = [] - - foreach(_variant, invoker.variants) { - assert(defined(_variant.name) && _variant.name != "", - "name must be defined for all $target_name variants") - - assert(defined(_variant.bundle_deps), - "bundle_deps must be defined for all $target_name variants") - - _variants += [ - { - name = _variant.name - bundle_deps = _variant.bundle_deps - target_name = "${_target_name}_variants_${_variant.name}" - bundle_gen_dir = "$root_out_dir/variants/${_variant.name}" - }, - ] - } - } else { - # If no variants are passed to the template, use a fake variant with - # no name to avoid duplicating code. As no variant can have an empty - # name except this fake variant, it is possible to know if a variant - # is fake or not. - _variants = [ - { - name = "" - bundle_deps = [] - target_name = _target_name - bundle_gen_dir = root_out_dir - }, - ] - } - - _default_variant = _variants[0] - - if (current_toolchain != default_toolchain) { - # For use of _variants and _default_variant for secondary toolchain to - # avoid the "Assignment had no effect" error from gn. - assert(_variants != []) - assert(_default_variant.target_name != "") - } - - source_set(_arch_executable_source) { - forward_variables_from(invoker, - "*", - [ - "bundle_deps", - "bundle_deps_filter", - "bundle_extension", - "enable_code_signing", - "entitlements_path", - "entitlements_target", - "extra_substitutions", - "extra_system_frameworks", - "info_plist", - "info_plist_target", - "output_name", - "product_type", - "visibility", - ]) - - visibility = [ ":$_arch_executable_target" ] - } - - if (current_toolchain == default_toolchain || use_ios_simulator) { - _generate_entitlements_target = _target_name + "_gen_entitlements" - _generate_entitlements_output = - get_label_info(":$_generate_entitlements_target($default_toolchain)", - "target_out_dir") + "/$_output_name.xcent" - } - - executable(_arch_executable_target) { - forward_variables_from(invoker, - "*", - [ - "bundle_deps", - "bundle_deps_filter", - "bundle_extension", - "enable_code_signing", - "entitlements_path", - "entitlements_target", - "extra_substitutions", - "extra_system_frameworks", - "info_plist", - "info_plist_target", - "output_name", - "product_type", - "sources", - "visibility", - ]) - - visibility = [ ":$_lipo_executable_target($default_toolchain)" ] - if (current_toolchain != default_toolchain) { - visibility += [ ":$_target_name" ] - } - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_arch_executable_source" ] - - if (!defined(libs)) { - libs = [] - } - libs += [ "UIKit.framework" ] - - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += [ - "-Xlinker", - "-rpath", - "-Xlinker", - "@executable_path/Frameworks", - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - ] - - if (use_ios_simulator) { - deps += [ ":$_generate_entitlements_target($default_toolchain)" ] - - if (!defined(inputs)) { - inputs = [] - } - inputs += [ _generate_entitlements_output ] - - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += [ - "-Xlinker", - "-sectcreate", - "-Xlinker", - "__TEXT", - "-Xlinker", - "__entitlements", - "-Xlinker", - rebase_path(_generate_entitlements_output, root_build_dir), - ] - } - - output_name = _output_name - output_prefix_override = true - output_dir = "$target_out_dir/$current_cpu" - } - - if (current_toolchain != default_toolchain) { - # For fat builds, only the default toolchain will generate an application - # bundle. For the other toolchains, the template is only used for building - # the arch-specific binary, thus the default target is just a group(). - - group(_target_name) { - forward_variables_from(invoker, - [ - "visibility", - "testonly", - ]) - public_deps = [ - ":$_arch_executable_target", - ] - } - } else { - lipo_binary(_lipo_executable_target) { - forward_variables_from(invoker, - [ - "configs", - "testonly", - ]) - - visibility = [] - foreach(_variant, _variants) { - visibility += [ ":${_variant.target_name}" ] - } - - output_name = _output_name - arch_binary_target = ":$_arch_executable_target" - arch_binary_output = _output_name - } - - _generate_info_plist = target_name + "_generate_info_plist" - ios_info_plist(_generate_info_plist) { - forward_variables_from(invoker, - [ - "extra_substitutions", - "info_plist", - "info_plist_target", - ]) - - executable_name = _output_name - } - - if (current_toolchain == default_toolchain) { - if (!defined(invoker.entitlements_target)) { - _entitlements_path = "//build/config/ios/entitlements.plist" - if (defined(invoker.entitlements_path)) { - _entitlements_path = invoker.entitlements_path - } - } else { - assert(!defined(invoker.entitlements_path), - "Cannot define both entitlements_path and entitlements_target" + - "for $_target_name") - - _entitlements_target_outputs = - get_target_outputs(invoker.entitlements_target) - _entitlements_path = _entitlements_target_outputs[0] - } - - action(_generate_entitlements_target) { - _gen_info_plist_outputs = get_target_outputs(":$_generate_info_plist") - _info_plist_path = _gen_info_plist_outputs[0] - - script = "//build/config/ios/codesign.py" - deps = [ - ":$_generate_info_plist", - ] - if (defined(invoker.entitlements_target)) { - deps += [ invoker.entitlements_target ] - } - sources = [ - _entitlements_path, - _info_plist_path, - ] - outputs = [ - _generate_entitlements_output, - ] - - args = [] - if (!use_system_xcode) { - args += [ - "--developer_dir", - hermetic_xcode_path, - ] - } - args += [ - "generate-entitlements", - "-e=" + rebase_path(_entitlements_path, root_build_dir), - "-p=" + rebase_path(_info_plist_path, root_build_dir), - ] + rebase_path(outputs, root_build_dir) - } - } - - _app_product_type = "com.apple.product-type.application" - _product_type = _app_product_type - if (defined(invoker.product_type)) { - _product_type = invoker.product_type - } - - _app_bundle_extension = ".app" - _bundle_extension = _app_bundle_extension - if (defined(invoker.bundle_extension)) { - _bundle_extension = invoker.bundle_extension - } - - # Only write PkgInfo for real application, not application extension (they - # have the same product type but a different extension). - _write_pkg_info = _product_type == _app_product_type && - _bundle_extension == _app_bundle_extension - - if (_write_pkg_info) { - _create_pkg_info = target_name + "_pkg_info" - action(_create_pkg_info) { - forward_variables_from(invoker, [ "testonly" ]) - script = "//build/config/mac/write_pkg_info.py" - sources = get_target_outputs(":$_generate_info_plist") - outputs = [ - # Cannot name the output PkgInfo as the name will not be unique if - # multiple ios_app_bundle are defined in the same BUILD.gn file. The - # file is renamed in the bundle_data outputs to the correct name. - "$target_gen_dir/$target_name", - ] - args = [ "--plist" ] + rebase_path(sources, root_build_dir) + - [ "--output" ] + rebase_path(outputs, root_build_dir) - deps = [ - ":$_generate_info_plist", - ] - } - - _bundle_data_pkg_info = target_name + "_bundle_data_pkg_info" - bundle_data(_bundle_data_pkg_info) { - forward_variables_from(invoker, [ "testonly" ]) - sources = get_target_outputs(":$_create_pkg_info") - outputs = [ - "{{bundle_resources_dir}}/PkgInfo", - ] - public_deps = [ - ":$_create_pkg_info", - ] - } - } - - foreach(_variant, _variants) { - create_signed_bundle(_variant.target_name) { - forward_variables_from(invoker, - [ - "bundle_deps", - "bundle_deps_filter", - "data_deps", - "deps", - "enable_code_signing", - "entitlements_path", - "entitlements_target", - "extra_system_frameworks", - "public_configs", - "public_deps", - "testonly", - "visibility", - ]) - - output_name = _output_name - bundle_gen_dir = _variant.bundle_gen_dir - bundle_binary_target = ":$_lipo_executable_target" - bundle_binary_output = _output_name - bundle_extension = _bundle_extension - product_type = _product_type - - _generate_info_plist_outputs = - get_target_outputs(":$_generate_info_plist") - primary_info_plist = _generate_info_plist_outputs[0] - partial_info_plist = - "$target_gen_dir/${_variant.target_name}_partial_info.plist" - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_generate_info_plist" ] - - if (!defined(bundle_deps)) { - bundle_deps = [] - } - if (_write_pkg_info) { - bundle_deps += [ ":$_bundle_data_pkg_info" ] - } - bundle_deps += _variant.bundle_deps - - if (use_ios_simulator) { - if (!defined(data_deps)) { - data_deps = [] - } - data_deps += [ "//testing/iossim" ] - } - } - } - - if (_default_variant.name != "") { - _bundle_short_name = "$_output_name$_bundle_extension" - action(_target_name) { - forward_variables_from(invoker, [ "testonly" ]) - - script = "//build/config/ios/hardlink.py" - public_deps = [] - foreach(_variant, _variants) { - public_deps += [ ":${_variant.target_name}" ] - } - - sources = [ - "${_default_variant.bundle_gen_dir}/$_bundle_short_name", - ] - outputs = [ - "$root_out_dir/$_bundle_short_name", - ] - - args = rebase_path(sources, root_out_dir) + - rebase_path(outputs, root_out_dir) - } - } - } -} - -set_defaults("ios_app_bundle") { - configs = default_executable_configs -} - -# Template to build an application extension bundle for iOS. -# -# This should be used instead of "executable" built-in target type on iOS. -# As the template forward the generation of the application executable to -# an "executable" target, all arguments supported by "executable" targets -# are also supported by this template. -# -# Arguments -# -# output_name: -# (optional) string, name of the generated application, if omitted, -# defaults to the target_name. -# -# extra_substitutions: -# (optional) list of string in "key=value" format, each value will -# be used as an additional variable substitution rule when generating -# the application Info.plist -# -# info_plist: -# (optional) string, path to the Info.plist file that will be used for -# the bundle. -# -# info_plist_target: -# (optional) string, if the info_plist is generated from an action, -# rather than a regular source file, specify the target name in lieu -# of info_plist. The two arguments are mutually exclusive. -# -# For more information, see "gn help executable". -template("ios_appex_bundle") { - ios_app_bundle(target_name) { - forward_variables_from(invoker, - "*", - [ - "bundle_extension", - "product_type", - ]) - bundle_extension = ".appex" - product_type = "com.apple.product-type.app-extension" - - # Add linker flags required for an application extension (determined by - # inspecting the link command-line when using Xcode 9.0+). - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += [ - "-e", - "_NSExtensionMain", - "-fapplication-extension", - ] - } -} - -set_defaults("ios_appex_bundle") { - configs = default_executable_configs -} - -# Compile a xib or storyboard file and add it to a bundle_data so that it is -# available at runtime in the bundle. -# -# Arguments -# -# source: -# string, path of the xib or storyboard to compile. -# -# Forwards all variables to the bundle_data target. -template("bundle_data_ib_file") { - assert(defined(invoker.source), "source needs to be defined for $target_name") - - _source_extension = get_path_info(invoker.source, "extension") - assert(_source_extension == "xib" || _source_extension == "storyboard", - "source must be a .xib or .storyboard for $target_name") - - _target_name = target_name - if (_source_extension == "xib") { - _compile_ib_file = target_name + "_compile_xib" - _output_extension = "nib" - } else { - _compile_ib_file = target_name + "_compile_storyboard" - _output_extension = "storyboardc" - } - - compile_ib_files(_compile_ib_file) { - sources = [ - invoker.source, - ] - output_extension = _output_extension - visibility = [ ":$_target_name" ] - ibtool_flags = [ - "--minimum-deployment-target", - ios_deployment_target, - "--auto-activate-custom-fonts", - "--target-device", - "iphone", - "--target-device", - "ipad", - ] - } - - bundle_data(_target_name) { - forward_variables_from(invoker, "*", [ "source" ]) - - if (!defined(public_deps)) { - public_deps = [] - } - public_deps += [ ":$_compile_ib_file" ] - - sources = get_target_outputs(":$_compile_ib_file") - - outputs = [ - "{{bundle_resources_dir}}/{{source_file_part}}", - ] - } -} - -# Compile a strings file and add it to a bundle_data so that it is available -# at runtime in the bundle. -# -# Arguments -# -# source: -# string, path of the strings file to compile. -# -# output: -# string, path of the compiled file in the final bundle. -# -# Forwards all variables to the bundle_data target. -template("bundle_data_strings") { - assert(defined(invoker.source), "source needs to be defined for $target_name") - assert(defined(invoker.output), "output needs to be defined for $target_name") - - _source_extension = get_path_info(invoker.source, "extension") - assert(_source_extension == "strings", - "source must be a .strings for $target_name") - - _target_name = target_name - _convert_target = target_name + "_compile_strings" - - convert_plist(_convert_target) { - visibility = [ ":$_target_name" ] - source = invoker.source - output = - "$target_gen_dir/$_target_name/" + get_path_info(invoker.source, "file") - format = "binary1" - } - - bundle_data(_target_name) { - forward_variables_from(invoker, - "*", - [ - "source", - "output", - ]) - - if (!defined(public_deps)) { - public_deps = [] - } - public_deps += [ ":$_convert_target" ] - - sources = get_target_outputs(":$_convert_target") - - outputs = [ - invoker.output, - ] - } -} - -# Template to package a shared library into an iOS framework bundle. -# -# By default, the bundle target this template generates does not link the -# resulting framework into anything that depends on it. If a dependency wants -# a link-time (as well as build-time) dependency on the framework bundle, -# depend against "$target_name+link". If only the build-time dependency is -# required (e.g., for copying into another bundle), then use "$target_name". -# -# Arguments -# -# output_name: -# (optional) string, name of the generated framework without the -# .framework suffix. If omitted, defaults to target_name. -# -# public_headers: -# (optional) list of paths to header file that needs to be copied -# into the framework bundle Headers subdirectory. If omitted or -# empty then the Headers subdirectory is not created. -# -# sources -# (optional) list of files. Needs to be defined and non-empty if -# public_headers is defined and non-empty. -# -# enable_code_signing -# (optional) boolean, control whether code signing is enabled or not, -# default to ios_enable_code_signing if not defined. -# -# This template provides two targets for the resulting framework bundle. The -# link-time behavior varies depending on which of the two targets below is -# added as a dependency: -# - $target_name only adds a build-time dependency. Targets that depend on -# it will not link against the framework. -# - $target_name+link adds a build-time and link-time dependency. Targets -# that depend on it will link against the framework. -# -# The build-time-only dependency is used for when a target needs to use the -# framework either only for resources, or because the target loads it at run- -# time, via dlopen() or NSBundle. The link-time dependency will cause the -# dependee to have the framework loaded by dyld at launch. -# -# Example of build-time only dependency: -# -# framework_bundle("CoreTeleportation") { -# sources = [ ... ] -# } -# -# bundle_data("core_teleportation_bundle_data") { -# deps = [ ":CoreTeleportation" ] -# sources = [ "$root_out_dir/CoreTeleportation.framework" ] -# outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}" ] -# } -# -# app_bundle("GoatTeleporter") { -# sources = [ ... ] -# deps = [ -# ":core_teleportation_bundle_data", -# ] -# } -# -# The GoatTeleporter.app will not directly link against -# CoreTeleportation.framework, but it will be included in the bundle's -# Frameworks directory. -# -# Example of link-time dependency: -# -# framework_bundle("CoreTeleportation") { -# sources = [ ... ] -# ldflags = [ -# "-install_name", -# "@executable_path/../Frameworks/$target_name.framework" -# ] -# } -# -# bundle_data("core_teleportation_bundle_data") { -# deps = [ ":CoreTeleportation+link" ] -# sources = [ "$root_out_dir/CoreTeleportation.framework" ] -# outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}" ] -# } -# -# app_bundle("GoatTeleporter") { -# sources = [ ... ] -# deps = [ -# ":core_teleportation_bundle_data", -# ] -# } -# -# Note that the framework is still copied to the app's bundle, but dyld will -# load this library when the app is launched because it uses the "+link" -# target as a dependency. This also requires that the framework set its -# install_name so that dyld can locate it. -# -# See "gn help shared_library" for more information on arguments supported -# by shared library target. -template("ios_framework_bundle") { - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _has_public_headers = - defined(invoker.public_headers) && invoker.public_headers != [] - - # Public configs are not propagated across toolchain (see crbug.com/675224) - # so some configs have to be defined for both default_toolchain and all others - # toolchains when performing a fat build. Use "get_label_info" to construct - # the path since they need to be relative to the default_toolchain. - - _default_toolchain_root_out_dir = - get_label_info("$_target_name($default_toolchain)", "root_out_dir") - _default_toolchain_target_gen_dir = - get_label_info("$_target_name($default_toolchain)", "target_gen_dir") - - if (_has_public_headers) { - _framework_headers_target = _target_name + "_framework_headers" - _framework_headers_config = _target_name + "_framework_headers_config" - config(_framework_headers_config) { - # The link settings are inherited from the framework_bundle config. - cflags = [ - "-F", - rebase_path("$_default_toolchain_root_out_dir/.", root_build_dir), - ] - } - - _headers_map_config = _target_name + "_headers_map" - _header_map_filename = - "$_default_toolchain_target_gen_dir/$_output_name.headers.hmap" - config(_headers_map_config) { - visibility = [ ":$_target_name" ] - include_dirs = [ _header_map_filename ] - } - } - - _arch_shared_library_source = _target_name + "_arch_shared_library_sources" - _arch_shared_library_target = _target_name + "_arch_shared_library" - _lipo_shared_library_target = _target_name + "_shared_library" - _link_target_name = _target_name + "+link" - - _framework_public_config = _target_name + "_public_config" - config(_framework_public_config) { - # TODO(sdefresne): should we have a framework_dirs similar to lib_dirs - # and include_dirs to avoid duplicate values on the command-line. - visibility = [ ":$_target_name" ] - ldflags = [ - "-F", - rebase_path("$_default_toolchain_root_out_dir/.", root_build_dir), - ] - lib_dirs = [ root_out_dir ] - libs = [ "$_output_name.framework" ] - } - - source_set(_arch_shared_library_source) { - forward_variables_from(invoker, - "*", - [ - "bundle_deps", - "bundle_deps_filter", - "data_deps", - "enable_code_signing", - "extra_substitutions", - "info_plist", - "info_plist_target", - "output_name", - "visibility", - ]) - - visibility = [ ":$_arch_shared_library_target" ] - - if (_has_public_headers) { - configs += [ - ":$_framework_headers_config", - ":$_headers_map_config", - ] - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_framework_headers_target($default_toolchain)" ] - } - } - - shared_library(_arch_shared_library_target) { - forward_variables_from(invoker, - "*", - [ - "bundle_deps", - "bundle_deps_filter", - "data_deps", - "enable_code_signing", - "extra_substitutions", - "info_plist", - "info_plist_target", - "output_name", - "sources", - "visibility", - ]) - - visibility = [ ":$_lipo_shared_library_target($default_toolchain)" ] - if (current_toolchain != default_toolchain) { - visibility += [ ":$_target_name" ] - } - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_arch_shared_library_source" ] - if (_has_public_headers) { - deps += [ ":$_framework_headers_target($default_toolchain)" ] - } - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += [ - "-Xlinker", - "-install_name", - "-Xlinker", - "@rpath/$_output_name.framework/$_output_name", - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - ] - - output_extension = "" - output_name = _output_name - output_prefix_override = true - output_dir = "$target_out_dir/$current_cpu" - } - - if (current_toolchain != default_toolchain) { - # For fat builds, only the default toolchain will generate a framework - # bundle. For the other toolchains, the template is only used for building - # the arch-specific binary, thus the default target is just a group(). - - group(_target_name) { - forward_variables_from(invoker, - [ - "visibility", - "testonly", - ]) - public_deps = [ - ":$_arch_shared_library_target", - ] - } - - group(_link_target_name) { - forward_variables_from(invoker, - [ - "public_configs", - "visibility", - "testonly", - ]) - public_deps = [ - ":$_link_target_name($default_toolchain)", - ] - - if (_has_public_headers) { - if (!defined(public_configs)) { - public_configs = [] - } - public_configs += [ ":$_framework_headers_config" ] - } - if (!defined(all_dependent_configs)) { - all_dependent_configs = [] - } - all_dependent_configs += [ ":$_framework_public_config" ] - } - - if (defined(invoker.bundle_deps)) { - assert(invoker.bundle_deps != [], "mark bundle_deps as used") - } - } else { - if (_has_public_headers) { - _public_headers = invoker.public_headers - _framework_root = "$root_out_dir/$_output_name.framework" - - _compile_headers_map_target = _target_name + "_compile_headers_map" - action(_compile_headers_map_target) { - visibility = [ ":$_framework_headers_target" ] - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - ]) - script = "//build/config/ios/write_framework_hmap.py" - outputs = [ - _header_map_filename, - ] - - # The header map generation only wants the list of headers, not all of - # sources, so filter any non-header source files from "sources". It is - # less error prone that having the developer duplicate the list of all - # headers in addition to "sources". - set_sources_assignment_filter([ - "*.c", - "*.cc", - "*.cpp", - "*.m", - "*.mm", - ]) - sources = invoker.sources - set_sources_assignment_filter([]) - - args = [ - rebase_path(_header_map_filename), - rebase_path(_framework_root, root_build_dir), - ] + rebase_path(sources, root_build_dir) - } - - _create_module_map_target = _target_name + "_module_map" - action(_create_module_map_target) { - visibility = [ ":$_framework_headers_target" ] - script = "//build/config/ios/write_framework_modulemap.py" - outputs = [ - "$_framework_root/Modules/module.modulemap", - ] - args = [ rebase_path("$_framework_root", root_build_dir) ] - } - - _copy_public_headers_target = _target_name + "_copy_public_headers" - copy(_copy_public_headers_target) { - forward_variables_from(invoker, - [ - "testonly", - "deps", - ]) - visibility = [ ":$_framework_headers_target" ] - sources = _public_headers - outputs = [ - "$_framework_root/Headers/{{source_file_part}}", - ] - - # Do not use forward_variables_from for "public_deps" as - # we do not want to forward those dependencies. - if (defined(invoker.public_deps)) { - if (!defined(deps)) { - deps = [] - } - deps += invoker.public_deps - } - } - - group(_framework_headers_target) { - forward_variables_from(invoker, [ "testonly" ]) - deps = [ - ":$_compile_headers_map_target", - ":$_create_module_map_target", - ] - public_deps = [ - ":$_copy_public_headers_target", - ] - } - } - - lipo_binary(_lipo_shared_library_target) { - forward_variables_from(invoker, - [ - "configs", - "testonly", - ]) - - visibility = [ ":$_target_name" ] - output_name = _output_name - arch_binary_target = ":$_arch_shared_library_target" - arch_binary_output = _output_name - } - - _info_plist_target = _target_name + "_info_plist" - _info_plist_bundle = _target_name + "_info_plist_bundle" - ios_info_plist(_info_plist_target) { - visibility = [ ":$_info_plist_bundle" ] - executable_name = _output_name - forward_variables_from(invoker, - [ - "extra_substitutions", - "info_plist", - "info_plist_target", - ]) - } - - bundle_data(_info_plist_bundle) { - visibility = [ ":$_target_name" ] - forward_variables_from(invoker, [ "testonly" ]) - sources = get_target_outputs(":$_info_plist_target") - outputs = [ - "{{bundle_contents_dir}}/Info.plist", - ] - public_deps = [ - ":$_info_plist_target", - ] - } - - create_signed_bundle(_target_name) { - forward_variables_from(invoker, - [ - "bundle_deps", - "bundle_deps_filter", - "data_deps", - "deps", - "enable_code_signing", - "public_configs", - "public_deps", - "testonly", - "visibility", - ]) - - product_type = "com.apple.product-type.framework" - bundle_extension = ".framework" - - output_name = _output_name - bundle_binary_target = ":$_lipo_shared_library_target" - bundle_binary_output = _output_name - - # Framework do not have entitlements nor mobileprovision because they use - # the one from the bundle using them (.app or .appex) as they are just - # dynamic library with shared code. - disable_entitlements = true - disable_embedded_mobileprovision = true - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_info_plist_bundle" ] - } - - group(_link_target_name) { - forward_variables_from(invoker, - [ - "public_configs", - "public_deps", - "testonly", - "visibility", - ]) - if (!defined(public_deps)) { - public_deps = [] - } - public_deps += [ ":$_target_name" ] - - if (_has_public_headers) { - if (!defined(public_configs)) { - public_configs = [] - } - public_configs += [ ":$_framework_headers_config" ] - } - if (!defined(all_dependent_configs)) { - all_dependent_configs = [] - } - all_dependent_configs += [ ":$_framework_public_config" ] - } - - bundle_data(_target_name + "+bundle") { - forward_variables_from(invoker, - [ - "testonly", - "visibility", - ]) - public_deps = [ - ":$_target_name", - ] - sources = [ - "$root_out_dir/$_output_name.framework", - ] - outputs = [ - "{{bundle_resources_dir}}/Frameworks/$_output_name.framework", - ] - } - } -} - -set_defaults("ios_framework_bundle") { - configs = default_shared_library_configs -} - -# Template to build a xctest bundle that contains a loadable module for iOS. -# -# Arguments -# -# deps: -# list of labels to depends on, these values are used to create the -# loadable module. -# -# product_type -# string, product type for the generated Xcode project, use -# "com.apple.product-type.bundle.unit-test" for unit test and -# "com.apple.product-type.bundle.ui-testing" for UI testing. -# -# host_target: -# string, name of the target that depends on the generated bundle, this -# value is used to restrict visibilities. -# -# xcode_test_application_name: -# string, name of the test application for Xcode unit or ui test target. -# -# output_name -# (optional) string, name of the generated application, if omitted, -# defaults to the target_name. -# -# This template defines two targets, one named "${target_name}" is the xctest -# bundle, and the other named "${target_name}_bundle" is a bundle_data that -# wraps the xctest bundle and that only the "${host_target}" can depend on. -# -template("ios_xctest_bundle") { - assert(defined(invoker.deps), "deps must be defined for $target_name") - assert(defined(invoker.product_type), - "product_type must be defined for $target_name") - assert(invoker.product_type == "com.apple.product-type.bundle.unit-test" || - invoker.product_type == "com.apple.product-type.bundle.ui-testing", - "product_type defined for $target_name is invalid.") - assert(defined(invoker.host_target), - "host_target must be defined for $target_name") - assert(defined(invoker.xcode_test_application_name), - "xcode_test_application_name must be defined for $target_name") - - # Silence "assignment had no effect" error for non-default toolchains as - # following variables are only used in the expansion of the template for the - # default toolchain. - assert(invoker.configs != []) - assert(invoker.host_target != target_name) - assert(invoker.xcode_test_application_name != target_name) - - _target_name = target_name - _output_name = target_name - - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _arch_loadable_module_source = _target_name + "_arch_loadable_module_source" - _arch_loadable_module_target = _target_name + "_arch_loadable_module" - _lipo_loadable_module_target = _target_name + "_loadable_module" - - source_set(_arch_loadable_module_source) { - forward_variables_from(invoker, [ "deps" ]) - - testonly = true - visibility = [ ":$_arch_loadable_module_target" ] - } - - loadable_module(_arch_loadable_module_target) { - testonly = true - visibility = [ ":$_lipo_loadable_module_target($default_toolchain)" ] - if (current_toolchain != default_toolchain) { - visibility += [ ":$_target_name" ] - } - - deps = [ - ":$_arch_loadable_module_source", - ] - configs += [ "//build/config/ios:xctest_config" ] - - output_dir = "$target_out_dir/$current_cpu" - output_name = _output_name - output_prefix_override = true - output_extension = "" - } - - if (current_toolchain != default_toolchain) { - # For fat builds, only the default toolchain will generate a test bundle. - # For the other toolchains, the template is only used for building the - # arch-specific binary, thus the default target is just a group(). - group(_target_name) { - forward_variables_from(invoker, [ "visibility" ]) - testonly = true - - public_deps = [ - ":$_arch_loadable_module_target", - ] - } - } else { - _info_plist_target = _target_name + "_info_plist" - _info_plist_bundle = _target_name + "_info_plist_bundle" - - ios_info_plist(_info_plist_target) { - testonly = true - visibility = [ ":$_info_plist_bundle" ] - - info_plist = "//build/config/ios/Module-Info.plist" - executable_name = _output_name - - if (ios_automatically_manage_certs) { - # Use a fixed bundle identifier for EarlGrey tests when using Xcode to - # manage the certificates as the number of free certs is limited. - extra_substitutions = [ - "MODULE_BUNDLE_ID=gtest.${ios_generic_test_bundle_id_suffix}-module", - ] - } else { - extra_substitutions = [ "MODULE_BUNDLE_ID=gtest.$_output_name" ] - } - } - - bundle_data(_info_plist_bundle) { - testonly = true - visibility = [ ":$_target_name" ] - - public_deps = [ - ":$_info_plist_target", - ] - - sources = get_target_outputs(":$_info_plist_target") - outputs = [ - "{{bundle_contents_dir}}/Info.plist", - ] - } - - lipo_binary(_lipo_loadable_module_target) { - forward_variables_from(invoker, [ "configs" ]) - - testonly = true - visibility = [ ":$_target_name" ] - - output_name = _output_name - arch_binary_target = ":$_arch_loadable_module_target" - arch_binary_output = _output_name - } - - _xctest_bundle = _target_name + "_bundle" - create_signed_bundle(_target_name) { - forward_variables_from(invoker, - [ - "enable_code_signing", - "product_type", - "xcode_test_application_name", - ]) - - testonly = true - visibility = [ ":$_xctest_bundle" ] - - bundle_extension = ".xctest" - - output_name = _output_name - bundle_binary_target = ":$_lipo_loadable_module_target" - bundle_binary_output = _output_name - - # Test files need to be known to Xcode for proper indexing and discovery - # of tests function for XCTest, but the compilation is done via ninja and - # thus must prevent Xcode from linking object files via this hack. - xcode_extra_attributes = { - OTHER_LDFLAGS = "-help" - ONLY_ACTIVE_ARCH = "YES" - DEBUG_INFORMATION_FORMAT = "dwarf" - - # For XCUITest, Xcode requires specifying the host application name via - # the TEST_TARGET_NAME attribute. - if (invoker.product_type == "com.apple.product-type.bundle.ui-testing") { - TEST_TARGET_NAME = invoker.xcode_test_application_name - } - } - - deps = [ - ":$_info_plist_bundle", - ] - } - - bundle_data(_xctest_bundle) { - forward_variables_from(invoker, [ "host_target" ]) - - testonly = true - visibility = [ ":$host_target" ] - - public_deps = [ - ":$_target_name", - ] - sources = [ - "$root_out_dir/$_output_name.xctest", - ] - outputs = [ - "{{bundle_plugins_dir}}/$_output_name.xctest", - ] - } - } -} - -set_defaults("ios_xctest_bundle") { - configs = default_shared_library_configs -} - -# For Chrome on iOS we want to run XCTests for all our build configurations -# (Debug, Release, ...). In addition, the symbols visibility is configured to -# private by default. To simplify testing with those constraints, our tests are -# compiled in the TEST_HOST target instead of the .xctest bundle. -template("ios_xctest_test") { - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _xctest_target = _target_name + "_module" - _xctest_output = _output_name + "_module" - - _host_target = _target_name - _host_output = _output_name - - _xctest_shell_source_target = _xctest_target + "shell_source" - source_set(_xctest_shell_source_target) { - sources = [ - "//build/config/ios/xctest_shell.mm", - ] - - configs += [ "//build/config/ios:xctest_config" ] - } - - ios_xctest_bundle(_xctest_target) { - output_name = _xctest_output - product_type = "com.apple.product-type.bundle.unit-test" - host_target = _host_target - xcode_test_application_name = _host_output - - deps = [ - ":$_xctest_shell_source_target", - ] - } - - ios_app_bundle(_host_target) { - forward_variables_from(invoker, "*", [ "testonly" ]) - - testonly = true - output_name = _host_output - configs += [ "//build/config/ios:xctest_config" ] - - if (!defined(invoker.info_plist) && !defined(invoker.info_plist_target)) { - info_plist = "//build/config/ios/Host-Info.plist" - if (ios_automatically_manage_certs) { - # Use the same bundle identifier for EarlGrey tests as for unit tests - # when managing certificates as the number of free certs is limited. - if (!defined(extra_substitutions)) { - extra_substitutions = [] - } - extra_substitutions += - [ "EXECUTABLE_NAME=gtest.${ios_generic_test_bundle_id_suffix}" ] - } - } - - # Xcode needs those two framework installed in the application (and signed) - # for the XCTest to run, so install them using extra_system_frameworks. - _ios_platform_library = "$ios_sdk_platform_path/Developer/Library" - extra_system_frameworks = [ - "$_ios_platform_library/Frameworks/XCTest.framework", - "$_ios_platform_library/PrivateFrameworks/IDEBundleInjection.framework", - ] - - _xctest_bundle = _xctest_target + "_bundle" - if (current_toolchain == default_toolchain) { - if (!defined(bundle_deps)) { - bundle_deps = [] - } - bundle_deps += [ ":$_xctest_bundle" ] - } - - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += [ - "-Xlinker", - "-rpath", - "-Xlinker", - "@executable_path/Frameworks", - "-Xlinker", - "-rpath", - "-Xlinker", - "@loader_path/Frameworks", - ] - } -} - -set_defaults("ios_xctest_test") { - configs = default_executable_configs -} - -# Template to build a xcuitest test runner bundle. -# -# Xcode requires a test runner application with a copy of the XCTest dynamic -# library bundle in it for the XCUITest to run. The test runner bundle is created -# by copying the system bundle XCTRunner.app from Xcode SDK with the plist file -# being properly tweaked, and a xctest and it needs to be code signed in order -# to run on devices. -# -# Arguments -# -# xctest_bundle -# string, name of the dependent xctest bundle target. -# -# output_name -# (optional) string, name of the generated application, if omitted, -# defaults to the target_name. -# -template("ios_xcuitest_test_runner_bundle") { - assert(defined(invoker.xctest_bundle), - "xctest_bundle must be defined for $target_name") - - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _xctrunner_path = - "$ios_sdk_platform_path/Developer/Library/Xcode/Agents/XCTRunner.app" - - _info_plist_merge_plist = _target_name + "_info_plist_merge_plist" - _info_plist_target = _target_name + "_info_plist" - _info_plist_bundle = _target_name + "_info_plist_bundle" - - action(_info_plist_merge_plist) { - testonly = true - script = "//build/config/mac/plist_util.py" - - sources = [ - "$_xctrunner_path/Info.plist", - - # NOTE: The XCTRunnerAddition+Info.plist must come after the Info.plist - # because it overrides the values under "CFBundleIdentifier" and - # "CFBundleName". - "//ios/chrome/app/resources/XCTRunnerAddition+Info.plist", - ] - - _output_name = "$target_gen_dir/${_target_name}_merged.plist" - outputs = [ - _output_name, - ] - args = [ - "merge", - "-f=xml1", - "-o=" + rebase_path(_output_name, root_build_dir), - ] + rebase_path(sources, root_build_dir) - } - - ios_info_plist(_info_plist_target) { - testonly = true - visibility = [ ":$_info_plist_bundle" ] - - executable_name = _output_name - info_plist_target = ":$_info_plist_merge_plist" - - if (ios_automatically_manage_certs) { - # Use the same bundle identifier for XCUITest tests as for unit tests - # when managing certificates as the number of free certs is limited. - extra_substitutions = - [ "EXECUTABLE_NAME=gtest.${ios_generic_test_bundle_id_suffix}" ] - } - } - - bundle_data(_info_plist_bundle) { - testonly = true - visibility = [ ":$_target_name" ] - - public_deps = [ - ":$_info_plist_target", - ] - - sources = get_target_outputs(":$_info_plist_target") - outputs = [ - "{{bundle_contents_dir}}/Info.plist", - ] - } - - _pkginfo_bundle = _target_name + "_pkginfo_bundle" - bundle_data(_pkginfo_bundle) { - testonly = true - visibility = [ ":$_target_name" ] - - sources = [ - "$_xctrunner_path/PkgInfo", - ] - - outputs = [ - "{{bundle_contents_dir}}/PkgInfo", - ] - } - - _xctest_bundle = invoker.xctest_bundle - create_signed_bundle(_target_name) { - testonly = true - - bundle_binary_path = "$_xctrunner_path/XCTRunner" - bundle_extension = ".app" - product_type = "com.apple.product-type.application" - - output_name = _output_name - - # Xcode needs the following frameworks installed in the application - # (and signed) for the XCUITest to run, so install them using - # extra_system_frameworks. - extra_system_frameworks = [ - "$ios_sdk_platform_path/Developer/Library/Frameworks/XCTest.framework", - "$ios_sdk_platform_path/Developer/Library/PrivateFrameworks/XCTAutomationSupport.framework", - ] - - bundle_deps = [ - ":$_info_plist_bundle", - ":$_pkginfo_bundle", - ":$_xctest_bundle", - ] - } -} - -# Template to build a XCUITest that consists of two parts: the test runner -# application bundle and the xctest dynamic library. -# -# Arguments -# -# deps: -# list of labels to depends on, these values are used to create the -# xctest dynamic library. -# -# xcode_test_application_name: -# string, name of the test application for the ui test target. -# -# This template defines two targets, one named "${target_name}_module" is the -# xctest dynamic library, and the other named "${target_name}_runner" is the -# test runner application bundle. -# -template("ios_xcuitest_test") { - assert(defined(invoker.deps), "deps must be defined for $target_name") - assert(defined(invoker.xcode_test_application_name), - "xcode_test_application_name must be defined for $target_name") - - _xcuitest_target = target_name - _xcuitest_runner_target = _xcuitest_target + "_runner" - _xcuitest_module_target = _xcuitest_target + "_module" - - group(_xcuitest_target) { - testonly = true - - deps = [ - ":$_xcuitest_runner_target", - ] - } - - _xcuitest_module_output = _xcuitest_target - ios_xctest_bundle(_xcuitest_module_target) { - forward_variables_from(invoker, [ "xcode_test_application_name" ]) - - product_type = "com.apple.product-type.bundle.ui-testing" - host_target = _xcuitest_runner_target - output_name = _xcuitest_module_output - - deps = invoker.deps - } - - _xcuitest_runner_output = _xcuitest_target + "-Runner" - ios_xcuitest_test_runner_bundle(_xcuitest_runner_target) { - output_name = _xcuitest_runner_output - xctest_bundle = _xcuitest_module_target + "_bundle" - } -} - -set_defaults("ios_xcuitest_test") { - configs = default_executable_configs -}
diff --git a/build/config/ios/write_framework_hmap.py b/build/config/ios/write_framework_hmap.py deleted file mode 100644 index 8f6b143..0000000 --- a/build/config/ios/write_framework_hmap.py +++ /dev/null
@@ -1,97 +0,0 @@ -# Copyright 2016 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 os -import struct -import sys - -def Main(args): - if len(args) < 4: - print >> sys.stderr, "Usage: %s output.hmap Foo.framework header1.h..." %\ - (args[0]) - return 1 - - (out, framework, all_headers) = args[1], args[2], args[3:] - - framework_name = os.path.basename(framework).split('.')[0] - all_headers = map(os.path.abspath, all_headers) - filelist = {} - for header in all_headers: - filename = os.path.basename(header) - filelist[filename] = header - filelist[os.path.join(framework_name, filename)] = header - WriteHmap(out, filelist) - return 0 - - -def NextGreaterPowerOf2(x): - return 2**(x).bit_length() - - -def WriteHmap(output_name, filelist): - """Generates a header map based on |filelist|. - - Per Mark Mentovai: - A header map is structured essentially as a hash table, keyed by names used - in #includes, and providing pathnames to the actual files. - - The implementation below and the comment above comes from inspecting: - http://www.opensource.apple.com/source/distcc/distcc-2503/distcc_dist/include_server/headermap.py?txt - while also looking at the implementation in clang in: - https://llvm.org/svn/llvm-project/cfe/trunk/lib/Lex/HeaderMap.cpp - """ - magic = 1751998832 - version = 1 - _reserved = 0 - count = len(filelist) - capacity = NextGreaterPowerOf2(count) - strings_offset = 24 + (12 * capacity) - max_value_length = len(max(filelist.items(), key=lambda (k,v):len(v))[1]) - - out = open(output_name, 'wb') - out.write(struct.pack('<LHHLLLL', magic, version, _reserved, strings_offset, - count, capacity, max_value_length)) - - # Create empty hashmap buckets. - buckets = [None] * capacity - for file, path in filelist.items(): - key = 0 - for c in file: - key += ord(c.lower()) * 13 - - # Fill next empty bucket. - while buckets[key & capacity - 1] is not None: - key = key + 1 - buckets[key & capacity - 1] = (file, path) - - next_offset = 1 - for bucket in buckets: - if bucket is None: - out.write(struct.pack('<LLL', 0, 0, 0)) - else: - (file, path) = bucket - key_offset = next_offset - prefix_offset = key_offset + len(file) + 1 - suffix_offset = prefix_offset + len(os.path.dirname(path) + os.sep) + 1 - next_offset = suffix_offset + len(os.path.basename(path)) + 1 - out.write(struct.pack('<LLL', key_offset, prefix_offset, suffix_offset)) - - # Pad byte since next offset starts at 1. - out.write(struct.pack('<x')) - - for bucket in buckets: - if bucket is not None: - (file, path) = bucket - out.write(struct.pack('<%ds' % len(file), file)) - out.write(struct.pack('<s', '\0')) - base = os.path.dirname(path) + os.sep - out.write(struct.pack('<%ds' % len(base), base)) - out.write(struct.pack('<s', '\0')) - path = os.path.basename(path) - out.write(struct.pack('<%ds' % len(path), path)) - out.write(struct.pack('<s', '\0')) - - -if __name__ == '__main__': - sys.exit(Main(sys.argv))
diff --git a/build/config/ios/write_framework_modulemap.py b/build/config/ios/write_framework_modulemap.py deleted file mode 100644 index b6da571..0000000 --- a/build/config/ios/write_framework_modulemap.py +++ /dev/null
@@ -1,26 +0,0 @@ -# Copyright 2016 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 os -import sys - -def Main(framework): - # Find the name of the binary based on the part before the ".framework". - binary = os.path.basename(framework).split('.')[0] - module_path = os.path.join(framework, 'Modules'); - if not os.path.exists(module_path): - os.mkdir(module_path) - module_template = 'framework module %s {\n' \ - ' umbrella header "%s.h"\n' \ - '\n' \ - ' export *\n' \ - ' module * { export * }\n' \ - '}\n' % (binary, binary) - - module_file = open(os.path.join(module_path, 'module.modulemap'), 'w') - module_file.write(module_template) - module_file.close() - -if __name__ == '__main__': - Main(sys.argv[1])
diff --git a/build/config/ios/xctest_shell.mm b/build/config/ios/xctest_shell.mm deleted file mode 100644 index dcf5bad..0000000 --- a/build/config/ios/xctest_shell.mm +++ /dev/null
@@ -1,19 +0,0 @@ -// Copyright 2016 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 <UIKit/UIKit.h> -#import <XCTest/XCTest.h> - -// For Chrome on iOS we want to run EarlGrey tests (that are XCTests) for all -// our build configurations (Debug, Release, ...). In addition, the symbols -// visibility is configured to private by default. To simplify testing with -// those constraints, our tests are compiled in the TEST_HOST target instead -// of the .xctest bundle that all link against this single test (just there to -// ensure that the bundle is not empty). - -@interface XCTestShellEmptyClass : NSObject -@end - -@implementation XCTestShellEmptyClass -@end
diff --git a/build/config/jumbo.gni b/build/config/jumbo.gni deleted file mode 100644 index 6b146d9..0000000 --- a/build/config/jumbo.gni +++ /dev/null
@@ -1,281 +0,0 @@ -# Copyright 2017 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/split_static_library.gni") # When someone uses that target_type -import("//build/toolchain/goma.gni") - -declare_args() { - # If true, use a jumbo build (files compiled together) to speed up - # compilation. - use_jumbo_build = false - - # A list of targets to exclude from jumbo builds, for optimal round trip time - # when frequently changing a set of cpp files. - jumbo_build_excluded = [] - - # How many files to group at most. Smaller numbers give more - # parallellism, higher numbers give less total CPU usage. Higher - # numbers also give longer single-file recompilation times. - # - # Recommendations: - # Higher numbers than 100 does not reduce wall clock compile times - # even for 4 cores or less so no reason to go higher than 100. - # Going from 50 to 100 with a 4 core CPU saves about 3% CPU time and - # 3% wall clock time in a tree with blink, v8 and content - # jumbofied. At the same time it increases the compile time for the - # largest jumbo chunks by 10-20% and reduces the chance to use all - # available CPU cores. So set the default to 50 to balance between - # high and low-core build performance. -1 means do the default which - # varies depending on whether goma is enabled. - jumbo_file_merge_limit = -1 -} - -# Normal builds benefit from lots of jumbification -jumbo_file_merge_default = 50 - -# Goma builds benefit from more parallelism -jumbo_file_merge_goma = 8 - -# Use one of the targets jumbo_source_set, jumbo_static_library, -# jumbo_split_static_library or jumbo_component to generate a target -# which merges sources if possible to compile much faster. -# -# Special values. -# -# target_type -# The kind of target to build. For example the string -# "static_library". -# -# always_build_jumbo -# If set and set to true, then use jumbo compile even when it is -# globally disabled. Otherwise it has no effect. -# -# never_build_jumbo -# If set and set to true, then do not jumbo compile even if it is -# globally enabled. Otherwise it has no effect. -# -# jumbo_excluded_sources -# If set to a list of files, those files will not be merged with -# the rest. This can be necessary if merging the files causes -# compilation issues and fixing the issues is impractical. -template("internal_jumbo_target") { - use_jumbo_build_for_target = use_jumbo_build - if (defined(invoker.always_build_jumbo) && invoker.always_build_jumbo) { - use_jumbo_build_for_target = true - } - if (defined(invoker.never_build_jumbo) && invoker.never_build_jumbo) { - use_jumbo_build_for_target = false - } - foreach(excluded_target, jumbo_build_excluded) { - if (target_name == excluded_target) { - use_jumbo_build_for_target = false - } - } - - excluded_sources = [] - if (defined(invoker.jumbo_excluded_sources)) { - excluded_sources += invoker.jumbo_excluded_sources - } - - if (defined(invoker.sources)) { - invoker_sources = invoker.sources - } else { - invoker_sources = [] - } - - gen_target_dir = invoker.target_gen_dir - - assert(gen_target_dir != "") # Prevent "unused variable". - - if (use_jumbo_build_for_target) { - jumbo_files = [] - - # Split the sources list into chunks that are not excessively large - current_file_index = 0 - next_chunk_start = 0 - next_chunk_number = 1 - merge_limit = jumbo_file_merge_limit - if (merge_limit == -1) { - if (use_goma) { - merge_limit = jumbo_file_merge_goma - } else { - merge_limit = jumbo_file_merge_default - } - } - has_c_file = false - has_objective_c_file = false - has_S_file = false - assert(merge_limit > 0) - foreach(source_file, invoker_sources) { - source_ext = get_path_info(source_file, "extension") - if (source_ext == "c") { - has_c_file = true - } else if (source_ext == "mm") { - has_objective_c_file = true - } else if (source_ext == "S") { - has_S_file = true - } else if (source_ext == "cc" || source_ext == "cpp") { - if (current_file_index == next_chunk_start) { - jumbo_files += [ "$gen_target_dir/" + target_name + "_jumbo_" + - next_chunk_number + ".cc" ] - next_chunk_number += 1 - next_chunk_start += merge_limit - } - current_file_index += 1 - } - } - - if (jumbo_files == [] || current_file_index == 1) { - # Empty sources list or a sources list with only header files or - # at most one non-header file. - use_jumbo_build_for_target = false - assert(current_file_index <= 1) # Prevent "unused variable" - assert(next_chunk_start >= 0) # Prevent "unused variable" - assert(next_chunk_number <= 2) # Prevent "unused variable" - } - - if (has_c_file) { - jumbo_files += [ "$gen_target_dir/" + target_name + "_jumbo_c.c" ] - } - if (has_objective_c_file) { - jumbo_files += [ "$gen_target_dir/" + target_name + "_jumbo_mm.mm" ] - } - if (has_S_file) { - jumbo_files += [ "$gen_target_dir/" + target_name + "_jumbo_S.S" ] - } - } - - if (use_jumbo_build_for_target) { - merge_action_name = target_name + "__jumbo_merge" - - # Create an action that calls a script that merges all the source files. - action(merge_action_name) { - script = "//build/config/merge_for_jumbo.py" - response_file_contents = - rebase_path(invoker_sources - excluded_sources, root_build_dir) - outputs = jumbo_files - args = [ "--outputs" ] + rebase_path(outputs, root_build_dir) + - [ "--file-list={{response_file_name}}" ] - } - } else { - # If the list subtraction triggers a gn error, - # jumbo_excluded_sources lists a file that is not in sources. - sources_after_exclusion = invoker_sources - excluded_sources - assert(sources_after_exclusion != [] || true) # Prevent "unused variable". - } - - target_type = invoker.target_type - if (use_jumbo_build_for_target && target_type == "split_static_library") { - # Meaningless and also impossible if split_count > len(jumbo_files) - target_type = "static_library" - - # Prevent "unused variable" warning. - assert(!defined(invoker.split_count) || invoker.split_count > 0) - } - - # Perform the actual operation, either on the original sources or - # the sources post-jumbo merging. - target(target_type, target_name) { - deps = [] - if (defined(invoker.deps)) { - deps += invoker.deps - } - - # Take everything else not handled above from the invoker. - variables_to_not_forward = [ "deps" ] - if (use_jumbo_build_for_target) { - deps += [ ":" + merge_action_name ] - variables_to_not_forward += [ "sources" ] - assert(jumbo_files != []) - set_sources_assignment_filter([]) # Prefiltered. - sources = jumbo_files + excluded_sources - - # Need to keep the headers in sources so that dependency checks - # work. - foreach(source_file, invoker_sources) { - if (get_path_info(source_file, "extension") == "h") { - sources += [ source_file ] - } - } - - # Change include_dirs to make sure that the jumbo file can find its - # #included files. - variables_to_not_forward += [ "include_dirs" ] - include_dirs = [] - if (defined(invoker.include_dirs)) { - include_dirs = invoker.include_dirs - } - include_dirs += [ root_build_dir ] - } - forward_variables_from(invoker, "*", variables_to_not_forward) - } -} - -# See documentation above by "internal_jumbo_target". -template("jumbo_source_set") { - internal_jumbo_target(target_name) { - target_type = "source_set" - forward_variables_from(invoker, "*") - } -} - -set_defaults("jumbo_source_set") { - # This sets the default list of configs when the jumbo_source_set target - # is defined. The default_compiler_configs comes from BUILDCONFIG.gn and - # is the list normally applied to static libraries and source sets. - configs = default_compiler_configs -} - -# See documentation above by "internal_jumbo_target". -template("jumbo_static_library") { - internal_jumbo_target(target_name) { - target_type = "static_library" - forward_variables_from(invoker, "*") - } -} - -set_defaults("jumbo_static_library") { - # This sets the default list of configs when the jumbo_static_library target - # is defined. The default_compiler_configs comes from BUILDCONFIG.gn and - # is the list normally applied to static libraries and source sets. - configs = default_compiler_configs -} - -# See documentation above by "internal_jumbo_target". -template("jumbo_split_static_library") { - internal_jumbo_target(target_name) { - target_type = "split_static_library" - forward_variables_from(invoker, "*") - } -} - -set_defaults("jumbo_split_static_library") { - # This sets the default list of configs when the - # jumbo_split_static_library target is defined. The - # default_compiler_configs comes from BUILDCONFIG.gn and is the list - # normally applied to static libraries and source sets. - configs = default_compiler_configs -} - -# See documentation above by "internal_jumbo_target". -template("jumbo_component") { - internal_jumbo_target(target_name) { - target_type = "component" - forward_variables_from(invoker, "*") - } -} - -set_defaults("jumbo_component") { - # This sets the default list of configs when the jumbo_component - # target is defined. This code is a clone of set_defaults for the - # ordinary "component" template. - if (is_component_build) { - configs = default_shared_library_configs - if (is_android) { - configs -= [ "//build/config/android:hide_all_but_jni_onload" ] - } - } else { - configs = default_compiler_configs - } -}
diff --git a/build/config/linux/BUILD.gn b/build/config/linux/BUILD.gn deleted file mode 100644 index e3488ab..0000000 --- a/build/config/linux/BUILD.gn +++ /dev/null
@@ -1,101 +0,0 @@ -# Copyright (c) 2013 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/config/c++/c++.gni") -import("//build/config/linux/pkg_config.gni") -import("//build/config/ui.gni") - -group("linux") { - visibility = [ "//:optimize_gn_gen" ] -} - -# This is included by reference in the //build/config/compiler config that -# is applied to all targets. It is here to separate out the logic that is -# Linux-only. This is not applied to Android, but is applied to ChromeOS. -config("compiler") { -} - -# This is included by reference in the //build/config/compiler:runtime_library -# config that is applied to all targets. It is here to separate out the logic -# that is Linux-only. Please see that target for advice on what should go in -# :runtime_library vs. :compiler. -config("runtime_library") { - # Set here because OS_CHROMEOS cannot be autodetected in build_config.h like - # OS_LINUX and the like. - if (is_chromeos) { - defines = [ "OS_CHROMEOS" ] - } - - if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") && - (!use_custom_libcxx || current_cpu == "mipsel")) { - libs = [ "atomic" ] - } -} - -config("x11") { - libs = [ - "X11", - "X11-xcb", - "xcb", - "Xcomposite", - "Xcursor", - "Xdamage", - "Xext", - "Xfixes", - "Xi", - "Xrender", - "Xtst", - ] -} - -config("xcomposite") { - libs = [ "Xcomposite" ] -} - -config("xext") { - libs = [ "Xext" ] -} - -config("xrandr") { - libs = [ "Xrandr" ] -} - -config("xscrnsaver") { - libs = [ "Xss" ] -} - -config("xfixes") { - libs = [ "Xfixes" ] -} - -config("libcap") { - libs = [ "cap" ] -} - -config("xi") { - libs = [ "Xi" ] -} - -config("xtst") { - libs = [ "Xtst" ] -} - -config("libresolv") { - libs = [ "resolv" ] -} - -if (use_glib) { - pkg_config("glib") { - packages = [ - "glib-2.0", - "gmodule-2.0", - "gobject-2.0", - "gthread-2.0", - ] - defines = [ - "GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32", - "GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26", - ] - } -}
diff --git a/build/config/linux/OWNERS b/build/config/linux/OWNERS deleted file mode 100644 index 280ba47..0000000 --- a/build/config/linux/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -thomasanderson@chromium.org
diff --git a/build/config/linux/atk/BUILD.gn b/build/config/linux/atk/BUILD.gn deleted file mode 100644 index 89eedff..0000000 --- a/build/config/linux/atk/BUILD.gn +++ /dev/null
@@ -1,52 +0,0 @@ -# Copyright 2016 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/config/features.gni") -import("//build/config/linux/gtk/gtk.gni") -import("//build/config/linux/pkg_config.gni") -import("//build/config/ui.gni") - -# CrOS doesn't install GTK or any gnome packages. -assert(!is_chromeos) - -# These packages should _only_ be expected when building for a target. -assert(current_toolchain == default_toolchain) - -if (use_atk) { - assert(use_glib, "use_atk=true requires that use_glib=true") -} - -pkg_config("atk_base") { - packages = [ "atk" ] - atk_lib_dir = exec_script(pkg_config_script, - pkg_config_args + [ - "--libdir", - "atk", - ], - "string") - defines = [ "ATK_LIB_DIR=\"$atk_lib_dir\"" ] - if (use_gtk3) { - packages += [ "atk-bridge-2.0" ] - defines += [ "USE_ATK_BRIDGE" ] - } -} - -# gn orders flags on a target before flags from configs. The default config -# adds -Wall, and these flags have to be after -Wall -- so they need to -# come from a config and can't be on the target directly. -config("atk") { - configs = [ ":atk_base" ] - - cflags = [ - # G_DEFINE_TYPE automatically generates a *get_instance_private - # inline function after glib 2.37. That's unused. Prevent to - # complain about it. - "-Wno-unused-function", - ] - - if (is_clang) { - # glib uses the pre-c++11 typedef-as-static_assert hack. - cflags += [ "-Wno-unused-local-typedef" ] - } -}
diff --git a/build/config/linux/dbus/BUILD.gn b/build/config/linux/dbus/BUILD.gn deleted file mode 100644 index f11cf71..0000000 --- a/build/config/linux/dbus/BUILD.gn +++ /dev/null
@@ -1,14 +0,0 @@ -# Copyright 2016 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/config/features.gni") -import("//build/config/linux/pkg_config.gni") - -assert(use_dbus) - -# Note: if your target also depends on //dbus, you don't need to add this -# config (it will get added automatically if you depend on //dbus). -pkg_config("dbus") { - packages = [ "dbus-1" ] -}
diff --git a/build/config/linux/dri/BUILD.gn b/build/config/linux/dri/BUILD.gn deleted file mode 100644 index cad883b..0000000 --- a/build/config/linux/dri/BUILD.gn +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2017 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/config/linux/pkg_config.gni") - -assert(is_linux, "This file should only be referenced on Linux") - -pkg_config("dri") { - packages = [ "dri" ] - dri_driver_dir = exec_script(pkg_config_script, - pkg_config_args + [ - "--dridriverdir", - "dri", - ], - "string") - defines = [ "DRI_DRIVER_DIR=\"$dri_driver_dir\"" ] -}
diff --git a/build/config/linux/gtk/BUILD.gn b/build/config/linux/gtk/BUILD.gn deleted file mode 100644 index eb75461..0000000 --- a/build/config/linux/gtk/BUILD.gn +++ /dev/null
@@ -1,40 +0,0 @@ -# Copyright 2016 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/config/linux/gtk/gtk.gni") -import("//build/config/linux/pkg_config.gni") - -assert(is_linux, "This file should only be referenced on Linux") - -# The target in this file will automatically reference GTK2 or GTK3 depending -# on the state of the build flag. Some builds reference both 2 and 3, and some -# builds reference neither, so both need to be available but in different -# directories so pkg-config is only run when necessary. - -# Basically no parts of Chrome should depend on GTK. To prevent accidents, the -# parts that explicitly need GTK are whitelisted on this target. -group("gtk") { - visibility = [ - "//chrome/test:interactive_ui_tests", - "//examples:peerconnection_client", - "//gpu/gles2_conform_support:gles2_conform_test_windowless", - "//remoting/host", - "//remoting/host/linux", - "//remoting/host/it2me:common", - "//remoting/host/it2me:remote_assistance_host", - "//remoting/host:remoting_me2me_host_static", - "//remoting/test:it2me_standalone_host_main", - "//webrtc/examples:peerconnection_client", - ] - - if (use_gtk3) { - public_deps = [ - "//build/config/linux/gtk3", - ] - } else { - public_deps = [ - "//build/config/linux/gtk2", - ] - } -}
diff --git a/build/config/linux/gtk/gtk.gni b/build/config/linux/gtk/gtk.gni deleted file mode 100644 index 53e943e..0000000 --- a/build/config/linux/gtk/gtk.gni +++ /dev/null
@@ -1,12 +0,0 @@ -# Copyright 2016 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. - -# Include this file if you need to know at build time whether we're compiling -# against GTK 2 or 3. But in most cases you can just depend on -# //build/config/linux/gtk and it will switch for you. - -declare_args() { - # Whether to compile against GTKv3 instead of GTKv2. - use_gtk3 = true -}
diff --git a/build/config/linux/gtk2/BUILD.gn b/build/config/linux/gtk2/BUILD.gn deleted file mode 100644 index 010d592..0000000 --- a/build/config/linux/gtk2/BUILD.gn +++ /dev/null
@@ -1,43 +0,0 @@ -# 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/config/linux/pkg_config.gni") - -assert(is_linux, "This file should only be referenced on Linux") - -# Depend on //build/config/linux/gtk2 to use GTKv2. Depend on -# //build/config/linux/gtk to get GTK 2 or 3 depending on the build flags. -# -# GN doesn't check visibility for configs so we give this an obviously internal -# name to discourage random targets from accidentally depending on this and -# bypassing the GTK target's visibility. -pkg_config("gtk2_internal_config") { - # Gtk requires gmodule, but it does not list it as a dependency in some - # misconfigured systems. - packages = [ - "gmodule-2.0", - "gtk+-2.0", - "gthread-2.0", - ] -} - -# Basically no parts of Chrome should depend on GTK. To prevent accidents, the -# parts that explicitly need GTK2 are whitelisted on this target. -group("gtk2") { - visibility = [ - "//build/config/linux/gtk", - "//chrome/browser/ui/libgtkui:*", - ] - public_configs = [ ":gtk2_internal_config" ] -} - -# Depend on "gtkprint" to get this. -pkg_config("gtkprint2_internal_config") { - packages = [ "gtk+-unix-print-2.0" ] -} - -group("gtkprint2") { - visibility = [ "//chrome/browser/ui/libgtkui:libgtk2ui" ] - public_configs = [ ":gtkprint2_internal_config" ] -}
diff --git a/build/config/linux/gtk3/BUILD.gn b/build/config/linux/gtk3/BUILD.gn deleted file mode 100644 index 0cfd05f..0000000 --- a/build/config/linux/gtk3/BUILD.gn +++ /dev/null
@@ -1,43 +0,0 @@ -# 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/config/linux/pkg_config.gni") - -assert(is_linux, "This file should only be referenced on Linux") - -# Depend on //build/config/linux/gtk3 to use GTKv3. Depend on -# //build/config/linux/gtk to get GTK 2 or 3 depending on the build flags. -# -# GN doesn't check visibility for configs so we give this an obviously internal -# name to discourage random targets from accidentally depending on this and -# bypassing the GTK target's visibility. -pkg_config("gtk3_internal_config") { - # Gtk requires gmodule, but it does not list it as a dependency in some - # misconfigured systems. - packages = [ - "gmodule-2.0", - "gtk+-3.0", - "gthread-2.0", - ] -} - -# Basically no parts of Chrome should depend on GTK. To prevent accidents, the -# parts that explicitly need GTK3 are whitelisted on this target. -group("gtk3") { - visibility = [ - "//build/config/linux/gtk", - "//chrome/browser/ui/libgtkui:*", - ] - public_configs = [ ":gtk3_internal_config" ] -} - -# Depend on "gtkprint3" to get this. -pkg_config("gtkprint3_internal_config") { - packages = [ "gtk+-unix-print-3.0" ] -} - -group("gtkprint3") { - visibility = [ "//chrome/browser/ui/libgtkui:libgtk3ui" ] - public_configs = [ ":gtkprint3_internal_config" ] -}
diff --git a/build/config/linux/libffi/BUILD.gn b/build/config/linux/libffi/BUILD.gn deleted file mode 100644 index a404172..0000000 --- a/build/config/linux/libffi/BUILD.gn +++ /dev/null
@@ -1,9 +0,0 @@ -# Copyright 2016 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/config/linux/pkg_config.gni") - -pkg_config("libffi") { - packages = [ "libffi" ] -}
diff --git a/build/config/linux/pangocairo/BUILD.gn b/build/config/linux/pangocairo/BUILD.gn deleted file mode 100644 index ddcc754..0000000 --- a/build/config/linux/pangocairo/BUILD.gn +++ /dev/null
@@ -1,19 +0,0 @@ -# Copyright 2016 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/config/linux/pangocairo/pangocairo.gni") -import("//build/config/linux/pkg_config.gni") - -if (use_pangocairo) { - pkg_config("pangocairo") { - packages = [ "pangocairo" ] - - # We don't want pkgconfig for pangocairo to explicitly request FreeType to get - # linked, because we control which FreeType to link to. - extra_args = [ - "-v", - "freetype", - ] - } -}
diff --git a/build/config/linux/pangocairo/pangocairo.gni b/build/config/linux/pangocairo/pangocairo.gni deleted file mode 100644 index ca99445..0000000 --- a/build/config/linux/pangocairo/pangocairo.gni +++ /dev/null
@@ -1,7 +0,0 @@ -# Copyright 2017 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/config/ui.gni") - -use_pangocairo = is_linux && !use_ozone
diff --git a/build/config/linux/pkg-config.py b/build/config/linux/pkg-config.py deleted file mode 100755 index 5ef7322..0000000 --- a/build/config/linux/pkg-config.py +++ /dev/null
@@ -1,232 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2013 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 json -import os -import subprocess -import sys -import re -from optparse import OptionParser - -# This script runs pkg-config, optionally filtering out some results, and -# returns the result. -# -# The result will be [ <includes>, <cflags>, <libs>, <lib_dirs>, <ldflags> ] -# where each member is itself a list of strings. -# -# You can filter out matches using "-v <regexp>" where all results from -# pkgconfig matching the given regular expression will be ignored. You can -# specify more than one regular expression my specifying "-v" more than once. -# -# You can specify a sysroot using "-s <sysroot>" where sysroot is the absolute -# system path to the sysroot used for compiling. This script will attempt to -# generate correct paths for the sysroot. -# -# When using a sysroot, you must also specify the architecture via -# "-a <arch>" where arch is either "x86" or "x64". -# -# CrOS systemroots place pkgconfig files at <systemroot>/usr/share/pkgconfig -# and one of <systemroot>/usr/lib/pkgconfig or <systemroot>/usr/lib64/pkgconfig -# depending on whether the systemroot is for a 32 or 64 bit architecture. They -# specify the 'lib' or 'lib64' of the pkgconfig path by defining the -# 'system_libdir' variable in the args.gn file. pkg_config.gni communicates this -# variable to this script with the "--system_libdir <system_libdir>" flag. If no -# flag is provided, then pkgconfig files are assumed to come from -# <systemroot>/usr/lib/pkgconfig. -# -# Additionally, you can specify the option --atleast-version. This will skip -# the normal outputting of a dictionary and instead print true or false, -# depending on the return value of pkg-config for the given package. - - -def SetConfigPath(options): - """Set the PKG_CONFIG_LIBDIR environment variable. - - This takes into account any sysroot and architecture specification from the - options on the given command line. - """ - - sysroot = options.sysroot - assert sysroot - - # Compute the library path name based on the architecture. - arch = options.arch - if sysroot and not arch: - print "You must specify an architecture via -a if using a sysroot." - sys.exit(1) - - libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig' - libdir += ':' + sysroot + '/usr/share/pkgconfig' - os.environ['PKG_CONFIG_LIBDIR'] = libdir - return libdir - - -def GetPkgConfigPrefixToStrip(options, args): - """Returns the prefix from pkg-config where packages are installed. - - This returned prefix is the one that should be stripped from the beginning of - directory names to take into account sysroots. - """ - # Some sysroots, like the Chromium OS ones, may generate paths that are not - # relative to the sysroot. For example, - # /path/to/chroot/build/x86-generic/usr/lib/pkgconfig/pkg.pc may have all - # paths relative to /path/to/chroot (i.e. prefix=/build/x86-generic/usr) - # instead of relative to /path/to/chroot/build/x86-generic (i.e prefix=/usr). - # To support this correctly, it's necessary to extract the prefix to strip - # from pkg-config's |prefix| variable. - prefix = subprocess.check_output([options.pkg_config, - "--variable=prefix"] + args, env=os.environ) - if prefix[-4] == '/usr': - return prefix[4:] - return prefix - - -def MatchesAnyRegexp(flag, list_of_regexps): - """Returns true if the first argument matches any regular expression in the - given list.""" - for regexp in list_of_regexps: - if regexp.search(flag) != None: - return True - return False - - -def RewritePath(path, strip_prefix, sysroot): - """Rewrites a path by stripping the prefix and prepending the sysroot.""" - if os.path.isabs(path) and not path.startswith(sysroot): - if path.startswith(strip_prefix): - path = path[len(strip_prefix):] - path = path.lstrip('/') - return os.path.join(sysroot, path) - else: - return path - - -def main(): - # If this is run on non-Linux platforms, just return nothing and indicate - # success. This allows us to "kind of emulate" a Linux build from other - # platforms. - if "linux" not in sys.platform: - print "[[],[],[],[],[]]" - return 0 - - parser = OptionParser() - parser.add_option('-d', '--debug', action='store_true') - parser.add_option('-p', action='store', dest='pkg_config', type='string', - default='pkg-config') - parser.add_option('-v', action='append', dest='strip_out', type='string') - parser.add_option('-s', action='store', dest='sysroot', type='string') - parser.add_option('-a', action='store', dest='arch', type='string') - parser.add_option('--system_libdir', action='store', dest='system_libdir', - type='string', default='lib') - parser.add_option('--atleast-version', action='store', - dest='atleast_version', type='string') - parser.add_option('--libdir', action='store_true', dest='libdir') - parser.add_option('--dridriverdir', action='store_true', dest='dridriverdir') - (options, args) = parser.parse_args() - - # Make a list of regular expressions to strip out. - strip_out = [] - if options.strip_out != None: - for regexp in options.strip_out: - strip_out.append(re.compile(regexp)) - - if options.sysroot: - libdir = SetConfigPath(options) - if options.debug: - sys.stderr.write('PKG_CONFIG_LIBDIR=%s\n' % libdir) - prefix = GetPkgConfigPrefixToStrip(options, args) - else: - prefix = '' - - if options.atleast_version: - # When asking for the return value, just run pkg-config and print the return - # value, no need to do other work. - if not subprocess.call([options.pkg_config, - "--atleast-version=" + options.atleast_version] + - args): - print "true" - else: - print "false" - return 0 - - if options.libdir: - cmd = [options.pkg_config, "--variable=libdir"] + args - if options.debug: - sys.stderr.write('Running: %s\n' % cmd) - try: - libdir = subprocess.check_output(cmd) - except: - print "Error from pkg-config." - return 1 - sys.stdout.write(libdir.strip()) - return 0 - - if options.dridriverdir: - cmd = [options.pkg_config, "--variable=dridriverdir"] + args - if options.debug: - sys.stderr.write('Running: %s\n' % cmd) - try: - dridriverdir = subprocess.check_output(cmd) - except: - print "Error from pkg-config." - return 1 - sys.stdout.write(dridriverdir.strip()) - return - - cmd = [options.pkg_config, "--cflags", "--libs"] + args - if options.debug: - sys.stderr.write('Running: %s\n' % ' '.join(cmd)) - - try: - flag_string = subprocess.check_output(cmd) - except: - sys.stderr.write('Could not run pkg-config.\n') - return 1 - - # For now just split on spaces to get the args out. This will break if - # pkgconfig returns quoted things with spaces in them, but that doesn't seem - # to happen in practice. - all_flags = flag_string.strip().split(' ') - - - sysroot = options.sysroot - if not sysroot: - sysroot = '' - - includes = [] - cflags = [] - libs = [] - lib_dirs = [] - ldflags = [] - - for flag in all_flags[:]: - if len(flag) == 0 or MatchesAnyRegexp(flag, strip_out): - continue; - - if flag[:2] == '-l': - libs.append(RewritePath(flag[2:], prefix, sysroot)) - elif flag[:2] == '-L': - lib_dirs.append(RewritePath(flag[2:], prefix, sysroot)) - elif flag[:2] == '-I': - includes.append(RewritePath(flag[2:], prefix, sysroot)) - elif flag[:3] == '-Wl': - ldflags.append(flag) - elif flag == '-pthread': - # Many libs specify "-pthread" which we don't need since we always include - # this anyway. Removing it here prevents a bunch of duplicate inclusions - # on the command line. - pass - else: - cflags.append(flag) - - # Output a GN array, the first one is the cflags, the second are the libs. The - # JSON formatter prints GN compatible lists when everything is a list of - # strings. - print json.dumps([includes, cflags, libs, lib_dirs, ldflags]) - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/config/linux/pkg_config.gni b/build/config/linux/pkg_config.gni deleted file mode 100644 index edf0752..0000000 --- a/build/config/linux/pkg_config.gni +++ /dev/null
@@ -1,125 +0,0 @@ -# Copyright (c) 2013 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/config/sysroot.gni") - -# Defines a config specifying the result of running pkg-config for the given -# packages. Put the package names you want to query in the "packages" variable -# inside the template invocation. -# -# You can also add defines via the "defines" variable. This can be useful to -# add this to the config to pass defines that the library expects to get by -# users of its headers. -# -# Example: -# pkg_config("mything") { -# packages = [ "mything1", "mything2" ] -# defines = [ "ENABLE_AWESOME" ] -# } -# -# You can also use "extra args" to filter out results (see pkg-config.py): -# extra_args = [ "-v, "foo" ] -# To ignore libs and ldflags (only cflags/defines will be set, which is useful -# when doing manual dynamic linking), set: -# ignore_libs = true - -declare_args() { - # A pkg-config wrapper to call instead of trying to find and call the right - # pkg-config directly. Wrappers like this are common in cross-compilation - # environments. - # Leaving it blank defaults to searching PATH for 'pkg-config' and relying on - # the sysroot mechanism to find the right .pc files. - pkg_config = "" - - # A optional pkg-config wrapper to use for tools built on the host. - host_pkg_config = "" - - # CrOS systemroots place pkgconfig files at <systemroot>/usr/share/pkgconfig - # and one of <systemroot>/usr/lib/pkgconfig or <systemroot>/usr/lib64/pkgconfig - # depending on whether the systemroot is for a 32 or 64 bit architecture. - # - # When build under GYP, CrOS board builds specify the 'system_libdir' variable - # as part of the GYP_DEFINES provided by the CrOS emerge build or simple - # chrome build scheme. This variable permits controlling this for GN builds - # in similar fashion by setting the `system_libdir` variable in the build's - # args.gn file to 'lib' or 'lib64' as appropriate for the target architecture. - system_libdir = "lib" -} - -pkg_config_script = "//build/config/linux/pkg-config.py" - -# Define the args we pass to the pkg-config script for other build files that -# need to invoke it manually. -pkg_config_args = [] - -if (sysroot != "") { - # Pass the sysroot if we're using one (it requires the CPU arch also). - pkg_config_args += [ - "-s", - rebase_path(sysroot), - "-a", - current_cpu, - ] -} - -if (pkg_config != "") { - pkg_config_args += [ - "-p", - pkg_config, - ] -} - -# Only use the custom libdir when building with the target sysroot. -if (target_sysroot != "" && sysroot == target_sysroot) { - pkg_config_args += [ - "--system_libdir", - system_libdir, - ] -} - -if (host_pkg_config != "") { - host_pkg_config_args = [ - "-p", - host_pkg_config, - ] -} else { - host_pkg_config_args = pkg_config_args -} - -template("pkg_config") { - assert(defined(invoker.packages), - "Variable |packages| must be defined to be a list in pkg_config.") - config(target_name) { - if (host_toolchain == current_toolchain) { - args = host_pkg_config_args + invoker.packages - } else { - args = pkg_config_args + invoker.packages - } - if (defined(invoker.extra_args)) { - args += invoker.extra_args - } - - pkgresult = exec_script(pkg_config_script, args, "value") - cflags = pkgresult[1] - - # We want the system include paths to use -isystem instead of -I to suppress - # warnings in those headers. - foreach(include, pkgresult[0]) { - include_relativized = rebase_path(include, root_build_dir) - cflags += [ "-isystem$include_relativized" ] - } - - if (!defined(invoker.ignore_libs) || !invoker.ignore_libs) { - libs = pkgresult[2] - lib_dirs = pkgresult[3] - ldflags = pkgresult[4] - } - - forward_variables_from(invoker, - [ - "defines", - "visibility", - ]) - } -}
diff --git a/build/config/locales.gni b/build/config/locales.gni deleted file mode 100644 index 2b608b7..0000000 --- a/build/config/locales.gni +++ /dev/null
@@ -1,187 +0,0 @@ -# Copyright 2014 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. - -# Android doesn't ship all locales in order to save space (but webview does). -# http://crbug.com/369218 -if (is_android) { - android_chrome_omitted_locales = [ - "bn", - "et", - "gu", - "kn", - "ml", - "mr", - "ms", - "ta", - "te", - ] -} - -# Chrome on iOS only ships with a subset of the locales supported by other -# version of Chrome as the corresponding locales are not supported by the -# operating system (but for simplicity, the corresponding .pak files are -# still generated). -if (is_ios) { - ios_unsupported_locales = [ - "am", - "bn", - "et", - "fil", - "gu", - "kn", - "lv", - "ml", - "mr", - "sl", - "sw", - "ta", - "te", - ] -} - -# Note: keep in sync with below. -locales = [ - "am", - "ar", - "bg", - "bn", - "ca", - "cs", - "da", - "de", - "el", - "en-GB", - "en-US", - "es", - "et", - "fa", - "fi", - "fil", - "fr", - "gu", - "he", - "hi", - "hr", - "hu", - "id", - "it", - "ja", - "kn", - "ko", - "lt", - "lv", - "ml", - "mr", - "ms", - "nb", - "nl", - "pl", - "pt-PT", - "ro", - "ru", - "sk", - "sl", - "sr", - "sv", - "sw", - "ta", - "te", - "th", - "tr", - "uk", - "vi", - "zh-CN", - "zh-TW", -] - -# Chrome on iOS uses different names for "es-419" and "pt-BR" (called -# respectively "es-MX" and "pt" on iOS). -if (!is_ios) { - locales += [ - "es-419", - "pt-BR", - ] -} else { - locales += [ - "es-MX", - "pt", - ] - - ios_packed_locales = locales - ios_unsupported_locales -} - -locales_with_fake_bidi = locales + [ "fake-bidi" ] - -# Same as the locales list but in the format Mac expects for output files: -# it uses underscores instead of hyphens, and "en" instead of "en-US". -locales_as_mac_outputs = [ - "am", - "ar", - "bg", - "bn", - "ca", - "cs", - "da", - "de", - "el", - "en_GB", - "en", - "es", - "et", - "fa", - "fi", - "fil", - "fr", - "gu", - "he", - "hi", - "hr", - "hu", - "id", - "it", - "ja", - "kn", - "ko", - "lt", - "lv", - "ml", - "mr", - "ms", - "nb", - "nl", - "pl", - "pt_PT", - "ro", - "ru", - "sk", - "sl", - "sr", - "sv", - "sw", - "ta", - "te", - "th", - "tr", - "uk", - "vi", - "zh_CN", - "zh_TW", -] - -# Chrome on iOS uses different names for "es-419" and "pt-BR" (called -# respectively "es-MX" and "pt" on iOS). -if (!is_ios) { - locales_as_mac_outputs += [ - "es_419", - "pt_BR", - ] -} else { - locales_as_mac_outputs += [ - "es_MX", - "pt", - ] - - ios_packed_locales_as_mac_outputs = - locales_as_mac_outputs - ios_unsupported_locales -}
diff --git a/build/config/mac/BUILD.gn b/build/config/mac/BUILD.gn deleted file mode 100644 index 60e3f05..0000000 --- a/build/config/mac/BUILD.gn +++ /dev/null
@@ -1,99 +0,0 @@ -# Copyright (c) 2013 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/config/sysroot.gni") -import("//build/config/mac/mac_sdk.gni") -import("//build/config/mac/symbols.gni") - -# This is included by reference in the //build/config/compiler config that -# is applied to all targets. It is here to separate out the logic. -config("compiler") { - # These flags are shared between the C compiler and linker. - common_mac_flags = [] - - # CPU architecture. - if (current_cpu == "x64") { - common_mac_flags += [ - "-arch", - "x86_64", - ] - } else if (current_cpu == "x86") { - common_mac_flags += [ - "-arch", - "i386", - ] - } - - # This is here so that all files get recompiled after an Xcode update. - # (defines are passed via the command line, and build system rebuild things - # when their commandline changes). Nothing should ever read this define. - defines = [ "CR_XCODE_VERSION=$xcode_version" ] - - asmflags = common_mac_flags - cflags = common_mac_flags - - # Without this, the constructors and destructors of a C++ object inside - # an Objective C struct won't be called, which is very bad. - cflags_objcc = [ "-fobjc-call-cxx-cdtors" ] - - ldflags = common_mac_flags - - # Create a new read-only segment for protected memory. The default segments - # (__TEXT and __DATA) are mapped read-execute and read-write by default. - ldflags += [ "-segprot", "PROTECTED_MEMORY", "rw", "r" ] - - if (save_unstripped_output) { - ldflags += [ "-Wcrl,unstripped," + rebase_path(root_out_dir) ] - } -} - -# This is included by reference in the //build/config/compiler:runtime_library -# config that is applied to all targets. It is here to separate out the logic -# that is Mac-only. Please see that target for advice on what should go in -# :runtime_library vs. :compiler. -config("runtime_library") { - common_flags = [ - "-isysroot", - rebase_path(sysroot, root_build_dir), - "-mmacosx-version-min=$mac_deployment_target", - ] - - asmflags = common_flags - cflags = common_flags - ldflags = common_flags - - # Prevent Mac OS X AssertMacros.h (included by system header) from defining - # macros that collide with common names, like 'check', 'require', and - # 'verify'. - # http://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/AssertMacros.h - defines = [ "__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0" ] -} - -# On Mac, this is used for everything except static libraries. -config("mac_dynamic_flags") { - ldflags = [ "-Wl,-ObjC" ] # Always load Objective-C categories and classes. - - if (is_component_build) { - ldflags += [ - # Path for loading shared libraries for unbundled binaries. - "-Wl,-rpath,@loader_path/.", - - # Path for loading shared libraries for bundled binaries. Get back from - # Binary.app/Contents/MacOS. - "-Wl,-rpath,@loader_path/../../..", - ] - } -} - -# The ldflags referenced below are handled by -# //build/toolchain/mac/linker_driver.py. -# Remove this config if a target wishes to change the arguments passed to the -# strip command during linking. This config by default strips all symbols -# from a binary, but some targets may wish to specify an exports file to -# preserve specific symbols. -config("strip_all") { - if (enable_stripping) { - ldflags = [ "-Wcrl,strip,-x,-S" ] - } -}
diff --git a/build/config/mac/BuildInfo.plist b/build/config/mac/BuildInfo.plist deleted file mode 100644 index d32bf2e..0000000 --- a/build/config/mac/BuildInfo.plist +++ /dev/null
@@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>BuildMachineOSBuild</key> - <string>${BUILD_MACHINE_OS_BUILD}</string> - <key>DTCompiler</key> - <string>${GCC_VERSION}</string> - <key>DTSDKBuild</key> - <string>${MAC_SDK_BUILD}</string> - <key>DTSDKName</key> - <string>${MAC_SDK_NAME}</string> - <key>DTXcode</key> - <string>${XCODE_VERSION}</string> - <key>DTXcodeBuild</key> - <string>${XCODE_BUILD}</string> -</dict> -</plist>
diff --git a/build/config/mac/OWNERS b/build/config/mac/OWNERS deleted file mode 100644 index 14747a0..0000000 --- a/build/config/mac/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -rsesek@chromium.org -sdefresne@chromium.org - -# COMPONENT: Build
diff --git a/build/config/mac/base_rules.gni b/build/config/mac/base_rules.gni deleted file mode 100644 index 6934833..0000000 --- a/build/config/mac/base_rules.gni +++ /dev/null
@@ -1,305 +0,0 @@ -# Copyright 2016 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. - -# This file contains rules that are shared between Mac and iOS. - -import("//build/toolchain/toolchain.gni") -import("//build/config/mac/symbols.gni") - -if (is_mac) { - import("//build/config/mac/mac_sdk.gni") -} else if (is_ios) { - import("//build/config/ios/ios_sdk.gni") -} - -# Convert plist file to given format. -# -# Arguments -# -# source: -# string, path to the plist file to convert -# -# output: -# string, path to the converted plist, must be under $root_build_dir -# -# format: -# string, the format to `plutil -convert` the plist to. -template("convert_plist") { - assert(defined(invoker.source), "source must be defined for $target_name") - assert(defined(invoker.output), "output must be defined for $target_name") - assert(defined(invoker.format), "format must be defined for $target_name") - - action(target_name) { - forward_variables_from(invoker, - [ - "visibility", - "testonly", - "deps", - ]) - - script = "//build/config/mac/xcrun.py" - sources = [ - invoker.source, - ] - outputs = [ - invoker.output, - ] - args = [] - if (!use_system_xcode) { - args += [ - "--developer_dir", - hermetic_xcode_path, - ] - } - args += [ - "plutil", - "-convert", - invoker.format, - "-o", - rebase_path(invoker.output, root_build_dir), - rebase_path(invoker.source, root_build_dir), - ] - } -} - -# Template to merge multiple plist files and perform variable substitutions. -# -# Arguments -# -# plist_templates: -# string array, paths to plist files which will be used for the bundle. -# -# format: -# string, the format to `plutil -convert` the plist to when -# generating the output. -# -# substitutions: -# string array, 'key=value' pairs used to replace ${key} by value -# when generating the output plist file. -# -# output_name: -# string, name of the generated plist file. -template("compile_plist") { - assert(defined(invoker.plist_templates), - "A list of template plist files must be specified for $target_name") - assert(defined(invoker.format), - "The plist format must be specified for $target_name") - assert(defined(invoker.substitutions), - "A list of key=value pairs must be specified for $target_name") - assert(defined(invoker.output_name), - "The name of the output file must be specified for $target_name") - - _output_name = invoker.output_name - _merged_name = get_path_info(_output_name, "dir") + "/" + - get_path_info(_output_name, "name") + "_merged." + - get_path_info(_output_name, "extension") - - _merge_target = target_name + "_merge" - - action(_merge_target) { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - - script = "//build/config/mac/plist_util.py" - sources = invoker.plist_templates - outputs = [ - _merged_name, - ] - args = [ - "merge", - "-f=" + invoker.format, - "-o=" + rebase_path(_merged_name, root_build_dir), - ] + rebase_path(invoker.plist_templates, root_build_dir) - } - - action(target_name) { - forward_variables_from(invoker, - [ - "testonly", - "visibility", - ]) - script = "//build/config/mac/plist_util.py" - sources = [ - _merged_name, - ] - outputs = [ - _output_name, - ] - args = [ - "substitute", - "-f=" + invoker.format, - "-o=" + rebase_path(_output_name, root_build_dir), - "-t=" + rebase_path(_merged_name, root_build_dir), - ] - foreach(_substitution, invoker.substitutions) { - args += [ "-s=$_substitution" ] - } - deps = [ - ":$_merge_target", - ] - } -} - -# Template to merge multiple .entitlements files performing variable -# substitutions. -# -# Arguments -# -# entitlements_templates: -# string array, paths to entitlements files which will be used for the -# bundle. -# -# substitutions: -# string array, 'key=value' pairs used to replace ${key} by value -# when generating the output plist file. -# -# output_name: -# string, name of the generated entitlements file. -template("compile_entitlements") { - assert(defined(invoker.entitlements_templates), - "A list of template plist files must be specified for $target_name") - - compile_plist(target_name) { - forward_variables_from(invoker, - "*", - [ - "entitlements_templates", - "format", - "plist_templates", - ]) - - plist_templates = invoker.entitlements_templates - - # Entitlements files are always encoded in xml1. - format = "xml1" - - # Entitlements files use unsubstitued variables, so define substitutions - # to leave those variables untouched. - if (!defined(substitutions)) { - substitutions = [] - } - - substitutions += [ - "AppIdentifierPrefix=\$(AppIdentifierPrefix)", - "CFBundleIdentifier=\$(CFBundleIdentifier)", - ] - } -} - -# The base template used to generate Info.plist files for iOS and Mac apps and -# frameworks. -# -# Arguments -# -# plist_templates: -# string array, paths to plist files which will be used for the bundle. -# -# executable_name: -# string, name of the generated target used for the product -# and executable name as specified in the output Info.plist. -# -# format: -# string, the format to `plutil -convert` the plist to when -# generating the output. -# -# extra_substitutions: -# (optional) string array, 'key=value' pairs for extra fields which are -# specified in a source Info.plist template. -# -# output_name: -# (optional) string, name of the generated plist file, default to -# "$target_gen_dir/$target_name.plist". -template("info_plist") { - assert(defined(invoker.executable_name), - "The executable_name must be specified for $target_name") - executable_name = invoker.executable_name - - compile_plist(target_name) { - forward_variables_from(invoker, - [ - "plist_templates", - "testonly", - "deps", - "visibility", - "format", - ]) - - if (defined(invoker.output_name)) { - output_name = invoker.output_name - } else { - output_name = "$target_gen_dir/$target_name.plist" - } - - substitutions = [ - "BUILD_MACHINE_OS_BUILD=$machine_os_build", - "EXECUTABLE_NAME=$executable_name", - "GCC_VERSION=com.apple.compilers.llvm.clang.1_0", - "PRODUCT_NAME=$executable_name", - "XCODE_BUILD=$xcode_build", - "XCODE_VERSION=$xcode_version", - ] - if (is_mac) { - substitutions += [ "MACOSX_DEPLOYMENT_TARGET=$mac_deployment_target" ] - } else if (is_ios) { - substitutions += [ "IOS_DEPLOYMENT_TARGET=$ios_deployment_target" ] - } - if (defined(invoker.extra_substitutions)) { - substitutions += invoker.extra_substitutions - } - } -} - -# Template to compile .xib and .storyboard files. -# -# Arguments -# -# sources: -# list of string, sources to compile -# -# ibtool_flags: -# (optional) list of string, additional flags to pass to the ibtool -template("compile_ib_files") { - action_foreach(target_name) { - forward_variables_from(invoker, - [ - "testonly", - "visibility", - ]) - assert(defined(invoker.sources), - "sources must be specified for $target_name") - assert(defined(invoker.output_extension), - "output_extension must be specified for $target_name") - - ibtool_flags = [] - if (defined(invoker.ibtool_flags)) { - ibtool_flags = invoker.ibtool_flags - } - - _output_extension = invoker.output_extension - - script = "//build/config/mac/compile_ib_files.py" - sources = invoker.sources - outputs = [ - "$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension", - ] - args = [ - "--input", - "{{source}}", - "--output", - rebase_path( - "$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension", - root_build_dir), - ] - if (!use_system_xcode) { - args += [ - "--developer_dir", - hermetic_xcode_path, - ] - } - args += ibtool_flags - } -}
diff --git a/build/config/mac/compile_ib_files.py b/build/config/mac/compile_ib_files.py deleted file mode 100644 index 281e554..0000000 --- a/build/config/mac/compile_ib_files.py +++ /dev/null
@@ -1,61 +0,0 @@ -# Copyright 2016 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 argparse -import logging -import os -import re -import subprocess -import sys - - -def main(): - parser = argparse.ArgumentParser( - description='A script to compile xib and storyboard.', - fromfile_prefix_chars='@') - parser.add_argument('-o', '--output', required=True, - help='Path to output bundle.') - parser.add_argument('-i', '--input', required=True, - help='Path to input xib or storyboard.') - parser.add_argument('--developer_dir', required=False, - help='Path to Xcode.') - args, unknown_args = parser.parse_known_args() - - if args.developer_dir: - os.environ['DEVELOPER_DIR'] = args.developer_dir - - ibtool_args = [ - 'xcrun', 'ibtool', - '--errors', '--warnings', '--notices', - '--output-format', 'human-readable-text' - ] - ibtool_args += unknown_args - ibtool_args += [ - '--compile', - os.path.abspath(args.output), - os.path.abspath(args.input) - ] - - ibtool_section_re = re.compile(r'/\*.*\*/') - ibtool_re = re.compile(r'.*note:.*is clipping its content') - try: - stdout = subprocess.check_output(ibtool_args) - except subprocess.CalledProcessError as e: - print(e.output) - raise - current_section_header = None - for line in stdout.splitlines(): - if ibtool_section_re.match(line): - current_section_header = line - elif not ibtool_re.match(line): - if current_section_header: - print(current_section_header) - current_section_header = None - print(line) - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/config/mac/mac_sdk.gni b/build/config/mac/mac_sdk.gni deleted file mode 100644 index 5aa4ef1..0000000 --- a/build/config/mac/mac_sdk.gni +++ /dev/null
@@ -1,99 +0,0 @@ -# Copyright 2014 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/config/chrome_build.gni") -import("//build/config/mac/mac_sdk_overrides.gni") -import("//build/toolchain/toolchain.gni") - -declare_args() { - # Minimum supported version of macOS. Must be of the form x.x.x for - # Info.plist files. - mac_deployment_target = "10.9.0" - - # Path to a specific version of the Mac SDK, not including a slash at the end. - # If empty, the path to the lowest version greater than or equal to - # mac_sdk_min is used. - mac_sdk_path = "" - - # The SDK name as accepted by xcodebuild. - mac_sdk_name = "macosx" -} - -# Check that the version of macOS SDK used is the one requested when building -# a version of Chrome shipped to the users. Disable the check if building for -# iOS as the version macOS SDK used is not relevant for the tool build for the -# host (they are not shipped) --- this is required as Chrome on iOS is usually -# build with the latest version of Xcode that may not ship with the version of -# the macOS SDK used to build Chrome on mac. -# TODO(crbug.com/635745): the check for target_os should be replaced by a -# check that current_toolchain is default_toolchain, and the file should -# assert that current_os is "mac" once this file is no longer included by -# iOS toolchains. -_verify_sdk = is_chrome_branded && is_official_build && target_os != "ios" - -find_sdk_args = [ "--print_sdk_path" ] -if (!use_system_xcode) { - find_sdk_args += [ - "--developer_dir", - hermetic_xcode_path, - ] -} -if (_verify_sdk) { - find_sdk_args += [ - "--verify", - mac_sdk_min, - "--sdk_path=" + mac_sdk_path, - ] -} else { - find_sdk_args += [ mac_sdk_min ] -} - -# The tool will print the SDK path on the first line, and the version on the -# second line. -find_sdk_lines = - exec_script("//build/mac/find_sdk.py", find_sdk_args, "list lines") -mac_sdk_version = find_sdk_lines[1] -if (mac_sdk_path == "") { - mac_sdk_path = find_sdk_lines[0] -} - -script_name = "//build/config/mac/sdk_info.py" -sdk_info_args = [] -if (!use_system_xcode) { - sdk_info_args += [ - "--developer_dir", - hermetic_xcode_path, - ] -} -sdk_info_args += [ mac_sdk_name ] - -_mac_sdk_result = exec_script(script_name, sdk_info_args, "scope") -xcode_version = _mac_sdk_result.xcode_version -xcode_build = _mac_sdk_result.xcode_build -machine_os_build = _mac_sdk_result.machine_os_build - -if (mac_sdk_version != mac_sdk_min && - exec_script("//build/check_return_value.py", - [ - "test", - xcode_version, - "-ge", - "0730", - ], - "value") != 1) { - print( - "********************************************************************************") - print( - " WARNING: The Mac OS X SDK is incompatible with the version of Xcode. To fix,") - print( - " either upgrade Xcode to the latest version or install the Mac OS X") - print( - " $mac_sdk_min SDK. For more information, see https://crbug.com/620127.") - print() - print(" Current SDK Version: $mac_sdk_version") - print(" Current Xcode Version: $xcode_version ($xcode_build)") - print( - "********************************************************************************") - assert(false, "SDK is incompatible with Xcode") -}
diff --git a/build/config/mac/mac_sdk_overrides.gni b/build/config/mac/mac_sdk_overrides.gni deleted file mode 100644 index 3632678..0000000 --- a/build/config/mac/mac_sdk_overrides.gni +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2017 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. - -# This file contains arguments that subprojects may choose to override. It -# asserts that those overrides are used, to prevent unused args warnings. - -_sdk_min_from_env = getenv("FORCE_MAC_SDK_MIN") -declare_args() { - # Minimum supported version of the Mac SDK. - if (_sdk_min_from_env == "") { - mac_sdk_min = "10.12" - } else { - mac_sdk_min = _sdk_min_from_env - } -} - -# Always assert that mac_sdk_min is used on non-macOS platforms to prevent -# unused args warnings. -if (!is_mac) { - assert(mac_sdk_min == "10.12" || true) -}
diff --git a/build/config/mac/package_framework.py b/build/config/mac/package_framework.py deleted file mode 100644 index f669528..0000000 --- a/build/config/mac/package_framework.py +++ /dev/null
@@ -1,60 +0,0 @@ -# Copyright 2016 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 argparse -import errno -import os -import shutil -import sys - -def Main(): - parser = argparse.ArgumentParser(description='Create Mac Framework symlinks') - parser.add_argument('--framework', action='store', type=str, required=True) - parser.add_argument('--version', action='store', type=str) - parser.add_argument('--contents', action='store', type=str, nargs='+') - parser.add_argument('--stamp', action='store', type=str, required=True) - args = parser.parse_args() - - VERSIONS = 'Versions' - CURRENT = 'Current' - - # Ensure the Foo.framework/Versions/A/ directory exists and create the - # Foo.framework/Versions/Current symlink to it. - if args.version: - try: - os.makedirs(os.path.join(args.framework, VERSIONS, args.version), 0744) - except OSError as e: - if e.errno != errno.EEXIST: - raise e - _Relink(os.path.join(args.version), - os.path.join(args.framework, VERSIONS, CURRENT)) - - # Establish the top-level symlinks in the framework bundle. The dest of - # the symlinks may not exist yet. - if args.contents: - for item in args.contents: - _Relink(os.path.join(VERSIONS, CURRENT, item), - os.path.join(args.framework, item)) - - # Write out a stamp file. - if args.stamp: - with open(args.stamp, 'w') as f: - f.write(str(args)) - - return 0 - - -def _Relink(dest, link): - """Creates a symlink to |dest| named |link|. If |link| already exists, - it is overwritten.""" - try: - os.remove(link) - except OSError as e: - if e.errno != errno.ENOENT: - shutil.rmtree(link) - os.symlink(dest, link) - - -if __name__ == '__main__': - sys.exit(Main())
diff --git a/build/config/mac/plist_util.py b/build/config/mac/plist_util.py deleted file mode 100644 index bba0208..0000000 --- a/build/config/mac/plist_util.py +++ /dev/null
@@ -1,226 +0,0 @@ -# Copyright 2016 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 argparse -import plistlib -import os -import re -import subprocess -import sys -import tempfile -import shlex - - -# Xcode substitutes variables like ${PRODUCT_NAME} or $(PRODUCT_NAME) when -# compiling Info.plist. It also supports supports modifiers like :identifier -# or :rfc1034identifier. SUBSTITUTION_REGEXP_LIST is a list of regular -# expressions matching a variable substitution pattern with an optional -# modifier, while INVALID_CHARACTER_REGEXP matches all characters that are -# not valid in an "identifier" value (used when applying the modifier). -INVALID_CHARACTER_REGEXP = re.compile(r'[_/\s]') -SUBSTITUTION_REGEXP_LIST = ( - re.compile(r'\$\{(?P<id>[^}]*?)(?P<modifier>:[^}]*)?\}'), - re.compile(r'\$\((?P<id>[^}]*?)(?P<modifier>:[^}]*)?\)'), -) - - -class SubstitutionError(Exception): - def __init__(self, key): - super(SubstitutionError, self).__init__() - self.key = key - - def __str__(self): - return "SubstitutionError: {}".format(self.key) - - -def InterpolateString(value, substitutions): - """Interpolates variable references into |value| using |substitutions|. - - Inputs: - value: a string - substitutions: a mapping of variable names to values - - Returns: - A new string with all variables references ${VARIABLES} replaced by their - value in |substitutions|. Raises SubstitutionError if a variable has no - substitution. - """ - def repl(match): - variable = match.group('id') - if variable not in substitutions: - raise SubstitutionError(variable) - # Some values need to be identifier and thus the variables references may - # contains :modifier attributes to indicate how they should be converted - # to identifiers ("identifier" replaces all invalid characters by '_' and - # "rfc1034identifier" replaces them by "-" to make valid URI too). - modifier = match.group('modifier') - if modifier == ':identifier': - return INVALID_CHARACTER_REGEXP.sub('_', substitutions[variable]) - elif modifier == ':rfc1034identifier': - return INVALID_CHARACTER_REGEXP.sub('-', substitutions[variable]) - else: - return substitutions[variable] - for substitution_regexp in SUBSTITUTION_REGEXP_LIST: - value = substitution_regexp.sub(repl, value) - return value - - -def Interpolate(value, substitutions): - """Interpolates variable references into |value| using |substitutions|. - - Inputs: - value: a value, can be a dictionary, list, string or other - substitutions: a mapping of variable names to values - - Returns: - A new value with all variables references ${VARIABLES} replaced by their - value in |substitutions|. Raises SubstitutionError if a variable has no - substitution. - """ - if isinstance(value, dict): - return {k: Interpolate(v, substitutions) for k, v in value.iteritems()} - if isinstance(value, list): - return [Interpolate(v, substitutions) for v in value] - if isinstance(value, str): - return InterpolateString(value, substitutions) - return value - - -def LoadPList(path): - """Loads Plist at |path| and returns it as a dictionary.""" - fd, name = tempfile.mkstemp() - try: - subprocess.check_call(['plutil', '-convert', 'xml1', '-o', name, path]) - with os.fdopen(fd, 'r') as f: - return plistlib.readPlist(f) - finally: - os.unlink(name) - - -def SavePList(path, format, data): - """Saves |data| as a Plist to |path| in the specified |format|.""" - fd, name = tempfile.mkstemp() - try: - # "plutil" does not replace the destination file but update it in place, - # so if more than one hardlink points to destination all of them will be - # modified. This is not what is expected, so delete destination file if - # it does exist. - if os.path.exists(path): - os.unlink(path) - with os.fdopen(fd, 'w') as f: - plistlib.writePlist(data, f) - subprocess.check_call(['plutil', '-convert', format, '-o', path, name]) - finally: - os.unlink(name) - - -def MergePList(plist1, plist2): - """Merges |plist1| with |plist2| recursively. - - Creates a new dictionary representing a Property List (.plist) files by - merging the two dictionary |plist1| and |plist2| recursively (only for - dictionary values). List value will be concatenated. - - Args: - plist1: a dictionary representing a Property List (.plist) file - plist2: a dictionary representing a Property List (.plist) file - - Returns: - A new dictionary representing a Property List (.plist) file by merging - |plist1| with |plist2|. If any value is a dictionary, they are merged - recursively, otherwise |plist2| value is used. If values are list, they - are concatenated. - """ - result = plist1.copy() - for key, value in plist2.iteritems(): - if isinstance(value, dict): - old_value = result.get(key) - if isinstance(old_value, dict): - value = MergePList(old_value, value) - if isinstance(value, list): - value = plist1.get(key, []) + plist2.get(key, []) - result[key] = value - return result - - -class Action(object): - """Class implementing one action supported by the script.""" - - @classmethod - def Register(cls, subparsers): - parser = subparsers.add_parser(cls.name, help=cls.help) - parser.set_defaults(func=cls._Execute) - cls._Register(parser) - - -class MergeAction(Action): - """Class to merge multiple plist files.""" - - name = 'merge' - help = 'merge multiple plist files' - - @staticmethod - def _Register(parser): - parser.add_argument( - '-o', '--output', required=True, - help='path to the output plist file') - parser.add_argument( - '-f', '--format', required=True, choices=('xml1', 'binary1', 'json'), - help='format of the plist file to generate') - parser.add_argument( - 'path', nargs="+", - help='path to plist files to merge') - - @staticmethod - def _Execute(args): - data = {} - for filename in args.path: - data = MergePList(data, LoadPList(filename)) - SavePList(args.output, args.format, data) - - -class SubstituteAction(Action): - """Class implementing the variable substitution in a plist file.""" - - name = 'substitute' - help = 'perform pattern substitution in a plist file' - - @staticmethod - def _Register(parser): - parser.add_argument( - '-o', '--output', required=True, - help='path to the output plist file') - parser.add_argument( - '-t', '--template', required=True, - help='path to the template file') - parser.add_argument( - '-s', '--substitution', action='append', default=[], - help='substitution rule in the format key=value') - parser.add_argument( - '-f', '--format', required=True, choices=('xml1', 'binary1', 'json'), - help='format of the plist file to generate') - - @staticmethod - def _Execute(args): - substitutions = {} - for substitution in args.substitution: - key, value = substitution.split('=', 1) - substitutions[key] = value - data = Interpolate(LoadPList(args.template), substitutions) - SavePList(args.output, args.format, data) - - -def Main(): - parser = argparse.ArgumentParser(description='manipulate plist files') - subparsers = parser.add_subparsers() - - for action in [MergeAction, SubstituteAction]: - action.Register(subparsers) - - args = parser.parse_args() - args.func(args) - - -if __name__ == '__main__': - sys.exit(Main())
diff --git a/build/config/mac/prepare_framework_version.py b/build/config/mac/prepare_framework_version.py deleted file mode 100644 index 5e8a53f..0000000 --- a/build/config/mac/prepare_framework_version.py +++ /dev/null
@@ -1,42 +0,0 @@ -# Copyright 2016 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 os -import shutil -import sys - -# Ensures that the current version matches the last-produced version, which is -# stored in the version_file. If it does not, then the framework_root_dir is -# obliterated. -# Usage: python prepare_framework_version.py out/obj/version_file \ -# out/Framework.framework \ -# 'A' - -def PrepareFrameworkVersion(version_file, framework_root_dir, version): - # Test what the current framework version is. Stop if it is up-to-date. - try: - with open(version_file, 'r') as f: - current_version = f.read() - if current_version == version: - return - except IOError: - pass - - # The framework version has changed, so clobber the framework. - if os.path.exists(framework_root_dir): - shutil.rmtree(framework_root_dir) - - # Write out the new framework version file, making sure its containing - # directory exists. - dirname = os.path.dirname(version_file) - if not os.path.isdir(dirname): - os.makedirs(dirname, 0700) - - with open(version_file, 'w+') as f: - f.write(version) - - -if __name__ == '__main__': - PrepareFrameworkVersion(sys.argv[1], sys.argv[2], sys.argv[3]) - sys.exit(0)
diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni deleted file mode 100644 index 9872661..0000000 --- a/build/config/mac/rules.gni +++ /dev/null
@@ -1,672 +0,0 @@ -# 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/config/mac/base_rules.gni") - -# Generates Info.plist files for Mac apps and frameworks. -# -# Arguments -# -# info_plist: -# (optional) string, path to the Info.plist file that will be used for -# the bundle. -# -# info_plist_target: -# (optional) string, if the info_plist is generated from an action, -# rather than a regular source file, specify the target name in lieu -# of info_plist. The two arguments are mutually exclusive. -# -# executable_name: -# string, name of the generated target used for the product -# and executable name as specified in the output Info.plist. -# -# extra_substitutions: -# (optional) string array, 'key=value' pairs for extra fields which are -# specified in a source Info.plist template. -template("mac_info_plist") { - assert(defined(invoker.info_plist) != defined(invoker.info_plist_target), - "Only one of info_plist or info_plist_target may be specified in " + - target_name) - - if (defined(invoker.info_plist)) { - _info_plist = invoker.info_plist - } else { - _info_plist_target_output = get_target_outputs(invoker.info_plist_target) - _info_plist = _info_plist_target_output[0] - } - - info_plist(target_name) { - format = "xml1" - extra_substitutions = [] - if (defined(invoker.extra_substitutions)) { - extra_substitutions = invoker.extra_substitutions - } - extra_substitutions += [ - "MAC_SDK_BUILD=$mac_sdk_version", - "MAC_SDK_NAME=$mac_sdk_name$mac_sdk_version", - ] - plist_templates = [ - "//build/config/mac/BuildInfo.plist", - _info_plist, - ] - if (defined(invoker.info_plist_target)) { - deps = [ - invoker.info_plist_target, - ] - } - forward_variables_from(invoker, - [ - "testonly", - "executable_name", - ]) - } -} - -# Template to compile and package Mac XIB files as bundle data. -# -# Arguments -# -# sources: -# list of string, sources to comiple -# -# output_path: -# (optional) string, the path to use for the outputs list in the -# bundle_data step. If unspecified, defaults to bundle_resources_dir. -template("mac_xib_bundle_data") { - _target_name = target_name - _compile_target_name = _target_name + "_compile_ibtool" - - compile_ib_files(_compile_target_name) { - forward_variables_from(invoker, [ "testonly" ]) - visibility = [ ":$_target_name" ] - sources = invoker.sources - output_extension = "nib" - ibtool_flags = [ - "--minimum-deployment-target", - mac_deployment_target, - - # TODO(rsesek): Enable this once all the bots are on Xcode 7+. - # "--target-device", - # "mac", - ] - } - - bundle_data(_target_name) { - forward_variables_from(invoker, - [ - "testonly", - "visibility", - ]) - - public_deps = [ - ":$_compile_target_name", - ] - sources = get_target_outputs(":$_compile_target_name") - - _output_path = "{{bundle_resources_dir}}" - if (defined(invoker.output_path)) { - _output_path = invoker.output_path - } - - outputs = [ - "$_output_path/{{source_file_part}}", - ] - } -} - -# Template to package a shared library into a Mac framework bundle. -# -# By default, the bundle target this template generates does not link the -# resulting framework into anything that depends on it. If a dependency wants -# a link-time (as well as build-time) dependency on the framework bundle, -# depend against "$target_name+link". If only the build-time dependency is -# required (e.g., for copying into another bundle), then use "$target_name". -# -# Arguments -# -# framework_version: -# string, version of the framework. Typically this is a -# single letter, like "A". -# -# framework_contents: -# list of string, top-level items in the framework. This is -# the list of symlinks to create in the .framework directory that link -# into Versions/Current/. -# -# info_plist: -# (optional) string, path to the Info.plist file that will be used for -# the bundle. -# -# info_plist_target: -# (optional) string, if the info_plist is generated from an action, -# rather than a regular source file, specify the target name in lieu -# of info_plist. The two arguments are mutually exclusive. -# -# output_name: -# (optional) string, name of the generated framework without the -# .framework suffix. If omitted, defaults to target_name. -# -# extra_substitutions: -# (optional) string array, 'key=value' pairs for extra fields which are -# specified in a source Info.plist template. -# -# This template provides two targets for the resulting framework bundle. The -# link-time behavior varies depending on which of the two targets below is -# added as a dependency: -# - $target_name only adds a build-time dependency. Targets that depend on -# it will not link against the framework. -# - $target_name+link adds a build-time and link-time dependency. Targets -# that depend on it will link against the framework. -# -# The build-time-only dependency is used for when a target needs to use the -# framework either only for resources, or because the target loads it at run- -# time, via dlopen() or NSBundle. The link-time dependency will cause the -# dependee to have the framework loaded by dyld at launch. -# -# Example of build-time only dependency: -# -# mac_framework_bundle("CoreTeleportation") { -# sources = [ ... ] -# } -# -# bundle_data("core_teleportation_bundle_data") { -# deps = [ ":CoreTeleportation" ] -# sources = [ "$root_out_dir/CoreTeleportation.framework" ] -# outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}" ] -# } -# -# app_bundle("GoatTeleporter") { -# sources = [ ... ] -# deps = [ -# ":core_teleportation_bundle_data", -# ] -# } -# -# The GoatTeleporter.app will not directly link against -# CoreTeleportation.framework, but it will be included in the bundle's -# Frameworks directory. -# -# Example of link-time dependency: -# -# mac_framework_bundle("CoreTeleportation") { -# sources = [ ... ] -# ldflags = [ -# "-install_name", -# "@executable_path/../Frameworks/$target_name.framework" -# ] -# } -# -# bundle_data("core_teleportation_bundle_data") { -# deps = [ ":CoreTeleportation+link" ] -# sources = [ "$root_out_dir/CoreTeleportation.framework" ] -# outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}" ] -# } -# -# app_bundle("GoatTeleporter") { -# sources = [ ... ] -# deps = [ -# ":core_teleportation_bundle_data", -# ] -# } -# -# Note that the framework is still copied to the app's bundle, but dyld will -# load this library when the app is launched because it uses the "+link" -# target as a dependency. This also requires that the framework set its -# install_name so that dyld can locate it. -# -# See "gn help shared_library" for more information on arguments supported -# by shared library target. -template("mac_framework_bundle") { - assert(defined(invoker.deps), - "Dependencies must be specified for $target_name") - assert(invoker.framework_version != "", "framework_version is required") - assert(defined(invoker.framework_contents), "framework_contents is required") - - _info_plist_target = target_name + "_info_plist" - - mac_info_plist(_info_plist_target) { - executable_name = target_name - if (defined(invoker.output_name)) { - executable_name = invoker.output_name - } - forward_variables_from(invoker, - [ - "extra_substitutions", - "info_plist", - "info_plist_target", - "testonly", - ]) - } - - _info_plist_bundle_data = _info_plist_target + "_bundle_data" - - bundle_data(_info_plist_bundle_data) { - forward_variables_from(invoker, [ "testonly" ]) - sources = get_target_outputs(":$_info_plist_target") - outputs = [ - "{{bundle_resources_dir}}/Info.plist", - ] - public_deps = [ - ":$_info_plist_target", - ] - } - - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - # Create a file to track the build dependency on the framework_version and - # framework_contents variables. - _framework_toc = [ - "Version=" + invoker.framework_version, - _output_name, - ] + invoker.framework_contents - _framework_contents = [ _output_name ] + invoker.framework_contents - _framework_toc_file = "$target_out_dir/${target_name}.toc" - write_file(_framework_toc_file, _framework_toc) - - # Create local variables for referencing different parts of the bundle. - _framework_target = _target_name - _framework_name = _output_name + ".framework" - _framework_base_dir = "$root_out_dir/$_framework_name" - _framework_root_dir = - _framework_base_dir + "/Versions/${invoker.framework_version}" - - # Clean the entire framework if the framework_version changes. - _version_file = "$target_out_dir/${target_name}_version" - exec_script("//build/config/mac/prepare_framework_version.py", - [ - rebase_path(_version_file), - rebase_path(_framework_base_dir), - invoker.framework_version, - ]) - - # Create the symlinks. - _framework_package_target = target_name + "_package" - action(_framework_package_target) { - script = "//build/config/mac/package_framework.py" - - # The TOC file never needs to be read, since its contents are the values - # of GN variables. It is only used to trigger this rule when the values - # change. - inputs = [ - _framework_toc_file, - ] - - _stamp_file = "$target_out_dir/run_${_framework_package_target}.stamp" - outputs = [ - _stamp_file, - ] - - visibility = [ ":$_framework_target" ] - - args = [ - "--framework", - rebase_path(_framework_base_dir, root_build_dir), - "--stamp", - rebase_path(_stamp_file, root_build_dir), - "--version", - invoker.framework_version, - "--contents", - ] + _framework_contents - - # It is not possible to list _framework_contents as outputs, since - # ninja does not properly stat symbolic links. - # https://github.com/ninja-build/ninja/issues/1186 - } - - _link_shared_library_target = target_name + "_shared_library" - _shared_library_bundle_data = target_name + "_shared_library_bundle_data" - - shared_library(_link_shared_library_target) { - forward_variables_from(invoker, - "*", - [ - "assert_no_deps", - "bundle_deps", - "code_signing_enabled", - "data_deps", - "info_plist", - "info_plist_target", - "output_name", - "visibility", - ]) - visibility = [ ":$_shared_library_bundle_data" ] - output_name = _output_name - output_prefix_override = true - output_extension = "" - output_dir = "$target_out_dir/$_link_shared_library_target" - } - - bundle_data(_shared_library_bundle_data) { - visibility = [ ":$_framework_target" ] - forward_variables_from(invoker, [ "testonly" ]) - sources = [ - "$target_out_dir/$_link_shared_library_target/$_output_name", - ] - outputs = [ - "{{bundle_executable_dir}}/$_output_name", - ] - public_deps = [ - ":$_link_shared_library_target", - ] - } - - _framework_public_config = _target_name + "_public_config" - config(_framework_public_config) { - # TODO(sdefresne): should we have a framework_dirs similar to lib_dirs - # and include_dirs to avoid duplicate values on the command-line. - visibility = [ ":$_framework_target" ] - ldflags = [ - "-F", - rebase_path("$root_out_dir/.", root_build_dir), - ] - lib_dirs = [ root_out_dir ] - libs = [ _framework_name ] - } - - create_bundle(_framework_target) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - "public_deps", - "testonly", - ]) - - if (defined(invoker.visibility)) { - visibility = invoker.visibility - visibility += [ ":$_target_name+link" ] - } - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_info_plist_bundle_data" ] - - if (defined(invoker.bundle_deps)) { - deps += invoker.bundle_deps - } - - if (!defined(public_deps)) { - public_deps = [] - } - public_deps += [ - ":$_framework_package_target", - ":$_shared_library_bundle_data", - ] - - bundle_root_dir = _framework_base_dir - bundle_contents_dir = _framework_root_dir - bundle_resources_dir = "$bundle_contents_dir/Resources" - bundle_executable_dir = bundle_contents_dir - } - - group(_target_name + "+link") { - forward_variables_from(invoker, - [ - "public_configs", - "testonly", - "visibility", - ]) - public_deps = [ - ":$_target_name", - ] - if (!defined(public_configs)) { - public_configs = [] - } - public_configs += [ ":$_framework_public_config" ] - } -} - -set_defaults("mac_framework_bundle") { - configs = default_shared_library_configs -} - -# Template to create a Mac executable application bundle. -# -# Arguments -# -# package_type: -# (optional) string, the product package type to create. Options are: -# "app" to create a .app bundle (default) -# "xpc" to create an .xpc service bundle -# -# info_plist: -# (optional) string, path to the Info.plist file that will be used for -# the bundle. -# -# info_plist_target: -# (optional) string, if the info_plist is generated from an action, -# rather than a regular source file, specify the target name in lieu -# of info_plist. The two arguments are mutually exclusive. -# -# output_name: -# (optional) string, name of the generated app without the -# .app suffix. If omitted, defaults to target_name. -# -# extra_configs: -# (optional) list of label, additional configs to apply to the -# executable target. -# -# remove_configs: -# (optional) list of label, default configs to remove from the target. -# -# extra_substitutions: -# (optional) string array, 'key=value' pairs for extra fields which are -# specified in a source Info.plist template. -template("mac_app_bundle") { - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _package_type = "app" - if (defined(invoker.package_type)) { - _package_type = invoker.package_type - } - - if (_package_type == "app") { - _output_extension = "app" - _product_type = "com.apple.product-type.application" - _write_pkg_info = true - } else if (_package_type == "xpc") { - _output_extension = "xpc" - _product_type = "com.apple.product-type.xpc-service" - _write_pkg_info = false - } else { - assert(false, "Unsupported packge_type: " + packge_type) - } - - _executable_target = target_name + "_executable" - _executable_bundle_data = _executable_target + "_bundle_data" - - _info_plist_target = target_name + "_info_plist" - - mac_info_plist(_info_plist_target) { - executable_name = _output_name - forward_variables_from(invoker, - [ - "extra_substitutions", - "info_plist", - "info_plist_target", - "testonly", - ]) - } - - if (_write_pkg_info) { - _pkg_info_target = target_name + "_pkg_info" - - action(_pkg_info_target) { - forward_variables_from(invoker, [ "testonly" ]) - script = "//build/config/mac/write_pkg_info.py" - sources = get_target_outputs(":$_info_plist_target") - outputs = [ - "$target_gen_dir/$_pkg_info_target", - ] - args = [ "--plist" ] + rebase_path(sources, root_build_dir) + - [ "--output" ] + rebase_path(outputs, root_build_dir) - deps = [ - ":$_info_plist_target", - ] - } - } - - executable(_executable_target) { - visibility = [ ":$_executable_bundle_data" ] - forward_variables_from(invoker, - "*", - [ - "assert_no_deps", - "data_deps", - "info_plist", - "output_name", - "visibility", - ]) - if (defined(extra_configs)) { - configs += extra_configs - } - if (defined(remove_configs)) { - configs -= remove_configs - } - output_name = _output_name - output_dir = "$target_out_dir/$_executable_target" - } - - bundle_data(_executable_bundle_data) { - visibility = [ ":$_target_name" ] - forward_variables_from(invoker, [ "testonly" ]) - sources = [ - "$target_out_dir/$_executable_target/$_output_name", - ] - outputs = [ - "{{bundle_executable_dir}}/$_output_name", - ] - public_deps = [ - ":$_executable_target", - ] - } - - _info_plist_bundle_data = _info_plist_target + "_bundle_data" - - bundle_data(_info_plist_bundle_data) { - forward_variables_from(invoker, [ "testonly" ]) - visibility = [ ":$_target_name" ] - sources = get_target_outputs(":$_info_plist_target") - outputs = [ - "{{bundle_contents_dir}}/Info.plist", - ] - public_deps = [ - ":$_info_plist_target", - ] - } - - if (_write_pkg_info) { - _pkg_info_bundle_data = _pkg_info_target + "_bundle_data" - - bundle_data(_pkg_info_bundle_data) { - forward_variables_from(invoker, [ "testonly" ]) - visibility = [ ":$_target_name" ] - sources = get_target_outputs(":$_pkg_info_target") - outputs = [ - "{{bundle_contents_dir}}/PkgInfo", - ] - public_deps = [ - ":$_pkg_info_target", - ] - } - } - - create_bundle(_target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - "public_deps", - "testonly", - ]) - if (!defined(deps)) { - deps = [] - } - deps += [ - ":$_executable_bundle_data", - ":$_info_plist_bundle_data", - ] - if (_write_pkg_info) { - deps += [ ":$_pkg_info_bundle_data" ] - } - product_type = _product_type - bundle_root_dir = "$root_out_dir/${_output_name}.${_output_extension}" - bundle_contents_dir = "$bundle_root_dir/Contents" - bundle_resources_dir = "$bundle_contents_dir/Resources" - bundle_executable_dir = "$bundle_contents_dir/MacOS" - } -} - -# Template to package a loadable_module into a .plugin bundle. -# -# This takes no extra arguments that differ from a loadable_module. -template("mac_plugin_bundle") { - assert(defined(invoker.deps), - "Dependencies must be specified for $target_name") - - _target_name = target_name - _loadable_module_target = _target_name + "_loadable_module" - _loadable_module_bundle_data = _loadable_module_target + "_bundle_data" - - _output_name = _target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - loadable_module(_loadable_module_target) { - visibility = [ ":$_loadable_module_bundle_data" ] - forward_variables_from(invoker, - "*", - [ - "assert_no_deps", - "data_deps", - "output_name", - "visibility", - ]) - output_dir = "$target_out_dir" - output_name = _output_name - } - - bundle_data(_loadable_module_bundle_data) { - forward_variables_from(invoker, [ "testonly" ]) - visibility = [ ":$_target_name" ] - sources = [ - "$target_out_dir/${_output_name}.so", - ] - outputs = [ - "{{bundle_executable_dir}}/$_output_name", - ] - public_deps = [ - ":$_loadable_module_target", - ] - } - - create_bundle(_target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - "public_deps", - "testonly", - "visibility", - ]) - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_loadable_module_bundle_data" ] - - bundle_root_dir = "$root_out_dir/$_output_name.plugin" - bundle_contents_dir = "$bundle_root_dir/Contents" - bundle_executable_dir = "$bundle_contents_dir/MacOS" - } -}
diff --git a/build/config/mac/sdk_info.py b/build/config/mac/sdk_info.py deleted file mode 100644 index 8a9edc1..0000000 --- a/build/config/mac/sdk_info.py +++ /dev/null
@@ -1,77 +0,0 @@ -# Copyright 2014 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 argparse -import os -import subprocess -import sys - -# This script prints information about the build system, the operating -# system and the iOS or Mac SDK (depending on the platform "iphonesimulator", -# "iphoneos" or "macosx" generally). -# -# In the GYP build, this is done inside GYP itself based on the SDKROOT -# variable. - -def FormatVersion(version): - """Converts Xcode version to a format required for Info.plist.""" - version = version.replace('.', '') - version = version + '0' * (3 - len(version)) - return version.zfill(4) - - -def FillXcodeVersion(settings): - """Fills the Xcode version and build number into |settings|.""" - lines = subprocess.check_output(['xcodebuild', '-version']).splitlines() - settings['xcode_version'] = FormatVersion(lines[0].split()[-1]) - settings['xcode_version_int'] = int(settings['xcode_version'], 10) - settings['xcode_build'] = lines[-1].split()[-1] - - -def FillMachineOSBuild(settings): - """Fills OS build number into |settings|.""" - settings['machine_os_build'] = subprocess.check_output( - ['sw_vers', '-buildVersion']).strip() - - -def FillSDKPathAndVersion(settings, platform, xcode_version): - """Fills the SDK path and version for |platform| into |settings|.""" - settings['sdk_path'] = subprocess.check_output([ - 'xcrun', '-sdk', platform, '--show-sdk-path']).strip() - settings['sdk_version'] = subprocess.check_output([ - 'xcrun', '-sdk', platform, '--show-sdk-version']).strip() - settings['sdk_platform_path'] = subprocess.check_output([ - 'xcrun', '-sdk', platform, '--show-sdk-platform-path']).strip() - # TODO: unconditionally use --show-sdk-build-version once Xcode 7.2 or - # higher is required to build Chrome for iOS or OS X. - if xcode_version >= '0720': - settings['sdk_build'] = subprocess.check_output([ - 'xcrun', '-sdk', platform, '--show-sdk-build-version']).strip() - else: - settings['sdk_build'] = settings['sdk_version'] - - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument("--developer_dir", required=False) - args, unknownargs = parser.parse_known_args() - if args.developer_dir: - os.environ['DEVELOPER_DIR'] = args.developer_dir - - if len(unknownargs) != 1: - sys.stderr.write( - 'usage: %s [iphoneos|iphonesimulator|macosx]\n' % - os.path.basename(sys.argv[0])) - sys.exit(1) - - settings = {} - FillMachineOSBuild(settings) - FillXcodeVersion(settings) - FillSDKPathAndVersion(settings, unknownargs[0], settings['xcode_version']) - - for key in sorted(settings): - value = settings[key] - if isinstance(value, str): - value = '"%s"' % value - print '%s=%s' % (key, value)
diff --git a/build/config/mac/symbols.gni b/build/config/mac/symbols.gni deleted file mode 100644 index 6166b12..0000000 --- a/build/config/mac/symbols.gni +++ /dev/null
@@ -1,30 +0,0 @@ -# Copyright 2016 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/config/chrome_build.gni") -import("//build/config/sanitizers/sanitizers.gni") - -# This file declares arguments and configs that control whether dSYM debug -# info is produced and whether build products are stripped. - -declare_args() { - # Produce dSYM files for targets that are configured to do so. dSYM - # generation is controlled globally as it is a linker output (produced via - # the //build/toolchain/mac/linker_driver.py. Enabling this will result in - # all shared library, loadable module, and executable targets having a dSYM - # generated. - enable_dsyms = is_official_build || using_sanitizer - - # Strip symbols from linked targets by default. If this is enabled, the - # //build/config/mac:strip_all config will be applied to all linked targets. - # If custom stripping parameters are required, remove that config from a - # linked target and apply custom -Wcrl,strip flags. See - # //build/toolchain/mac/linker_driver.py for more information. - enable_stripping = is_official_build -} - -# Save unstripped copies of targets with a ".unstripped" suffix. This is -# useful to preserve the original output when enable_stripping=true but -# we're not actually generating real dSYMs. -save_unstripped_output = enable_stripping && !enable_dsyms
diff --git a/build/config/mac/write_pkg_info.py b/build/config/mac/write_pkg_info.py deleted file mode 100644 index 3e2c3c9..0000000 --- a/build/config/mac/write_pkg_info.py +++ /dev/null
@@ -1,47 +0,0 @@ -# Copyright 2016 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 argparse -import os -import plist_util -import sys - -# This script creates a PkgInfo file for an OS X .app bundle's plist. -# Usage: python write_pkg_info.py --plist Foo.app/Contents/Info.plist \ -# --output Foo.app/Contents/PkgInfo - -def Main(): - parser = argparse.ArgumentParser( - description='A script to write PkgInfo files for .app bundles.') - parser.add_argument('--plist', required=True, - help='Path to the Info.plist for the .app.') - parser.add_argument('--output', required=True, - help='Path to the desired output file.') - args = parser.parse_args() - - # Remove the output if it exists already. - if os.path.exists(args.output): - os.unlink(args.output) - - plist = plist_util.LoadPList(args.plist) - package_type = plist['CFBundlePackageType'] - if package_type != 'APPL': - raise ValueError('Expected CFBundlePackageType to be %s, got %s' % \ - ('AAPL', package_type)) - - # The format of PkgInfo is eight characters, representing the bundle type - # and bundle signature, each four characters. If that is missing, four - # '?' characters are used instead. - signature_code = plist.get('CFBundleSignature', '????') - if len(signature_code) != 4: - raise ValueError('CFBundleSignature should be exactly four characters, ' + - 'got %s' % signature_code) - - with open(args.output, 'w') as fp: - fp.write('%s%s' % (package_type, signature_code)) - return 0 - - -if __name__ == '__main__': - sys.exit(Main())
diff --git a/build/config/mac/xcrun.py b/build/config/mac/xcrun.py deleted file mode 100644 index 1f8dc20..0000000 --- a/build/config/mac/xcrun.py +++ /dev/null
@@ -1,28 +0,0 @@ -# Copyright 2016 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 argparse -import os -import subprocess -import sys - -if __name__ == '__main__': - parser = argparse.ArgumentParser( - description='A script to execute a command via xcrun.') - parser.add_argument('--stamp', action='store', type=str, - help='Write a stamp file to this path on success.') - parser.add_argument('--developer_dir', required=False, - help='Path to Xcode.') - args, unknown_args = parser.parse_known_args() - - if args.developer_dir: - os.environ['DEVELOPER_DIR'] = args.developer_dir - - rv = subprocess.check_call(['xcrun'] + unknown_args) - if rv == 0 and args.stamp: - if os.path.exists(args.stamp): - os.unlink(args.stamp) - open(args.stamp, 'w+').close() - - sys.exit(rv)
diff --git a/build/config/merge_for_jumbo.py b/build/config/merge_for_jumbo.py deleted file mode 100755 index 573b747..0000000 --- a/build/config/merge_for_jumbo.py +++ /dev/null
@@ -1,88 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2016 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. - -"""This script creates a "jumbo" file which merges all incoming files -for compiling. - -""" - -from __future__ import print_function - -import argparse -import cStringIO -import os - -def write_jumbo_files(inputs, outputs, written_input_set, written_output_set): - output_count = len(outputs) - input_count = len(inputs) - - written_inputs = 0 - for output_index, output_file in enumerate(outputs): - written_output_set.add(output_file) - if os.path.isfile(output_file): - with open(output_file, "r") as current: - current_jumbo_file = current.read() - else: - current_jumbo_file = None - - out = cStringIO.StringIO() - out.write("/* This is a Jumbo file. Don't edit. */\n\n") - out.write("/* Generated with merge_for_jumbo.py. */\n\n") - input_limit = (output_index + 1) * input_count / output_count - while written_inputs < input_limit: - filename = inputs[written_inputs] - written_inputs += 1 - out.write("#include \"%s\"\n" % filename) - written_input_set.add(filename) - new_jumbo_file = out.getvalue() - out.close() - - if new_jumbo_file != current_jumbo_file: - with open(output_file, "w") as out: - out.write(new_jumbo_file) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("--outputs", nargs="+", required=True, - help='List of output files to split input into') - parser.add_argument("--file-list", required=True) - parser.add_argument("--verbose", action="store_true") - args = parser.parse_args() - - lines = [] - # If written with gn |write_file| each file is on its own line. - with open(args.file_list) as file_list_file: - lines = [line.strip() for line in file_list_file if line.strip()] - # If written with gn |response_file_contents| the files are space separated. - all_inputs = [] - for line in lines: - all_inputs.extend(line.split()) - - written_output_set = set() # Just for double checking - written_input_set = set() # Just for double checking - for language_ext in (".cc", ".c", ".mm", ".S"): - if language_ext == ".cc": - ext_pattern = (".cc", ".cpp") - else: - ext_pattern = tuple([language_ext]) - - outputs = [x for x in args.outputs if x.endswith(ext_pattern)] - inputs = [x for x in all_inputs if x.endswith(ext_pattern)] - - if not outputs: - assert not inputs - continue - - write_jumbo_files(inputs, outputs, written_input_set, written_output_set) - - assert set(args.outputs) == written_output_set, "Did not fill all outputs" - if args.verbose: - print("Generated %s (%d files) based on %s" % ( - str(args.outputs), len(written_input_set), args.file_list)) - -if __name__ == "__main__": - main()
diff --git a/build/config/mips.gni b/build/config/mips.gni deleted file mode 100644 index 28194a4..0000000 --- a/build/config/mips.gni +++ /dev/null
@@ -1,62 +0,0 @@ -# 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/config/v8_target_cpu.gni") - -# These are primarily relevant in current_cpu == "mips*" contexts, where -# MIPS code is being compiled. But they can also be relevant in the -# other contexts when the code will change its behavior based on the -# cpu it wants to generate code for. -if (current_cpu == "mipsel" || v8_current_cpu == "mipsel" || - current_cpu == "mips" || v8_current_cpu == "mips") { - declare_args() { - # MIPS arch variant. Possible values are: - # "r1" - # "r2" - # "r6" - # "loongson3" - mips_arch_variant = "r1" - - # MIPS DSP ASE revision. Possible values are: - # 0: unavailable - # 1: revision 1 - # 2: revision 2 - mips_dsp_rev = 0 - - # MIPS SIMD Arch compilation flag. - mips_use_msa = false - - # MIPS floating-point ABI. Possible values are: - # "hard": sets the GCC -mhard-float option. - # "soft": sets the GCC -msoft-float option. - mips_float_abi = "hard" - - # MIPS32 floating-point register width. Possible values are: - # "fp32": sets the GCC -mfp32 option. - # "fp64": sets the GCC -mfp64 option. - # "fpxx": sets the GCC -mfpxx option. - mips_fpu_mode = "fp32" - } -} else if (current_cpu == "mips64el" || v8_current_cpu == "mips64el" || - current_cpu == "mips64" || v8_current_cpu == "mips64") { - # MIPS arch variant. Possible values are: - # "r2" - # "r6" - # "loongson3" - if (current_os == "android" || target_os == "android") { - declare_args() { - mips_arch_variant = "r6" - - # MIPS SIMD Arch compilation flag. - mips_use_msa = true - } - } else { - declare_args() { - mips_arch_variant = "r2" - - # MIPS SIMD Arch compilation flag. - mips_use_msa = false - } - } -}
diff --git a/build/config/nacl/BUILD.gn b/build/config/nacl/BUILD.gn deleted file mode 100644 index d7b22ec..0000000 --- a/build/config/nacl/BUILD.gn +++ /dev/null
@@ -1,143 +0,0 @@ -# Copyright (c) 2014 The Native Client 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/config/nacl/config.gni") - -# Native Client Definitions -config("nacl_defines") { - if (is_linux || is_android || is_nacl) { - defines = [ - "_POSIX_C_SOURCE=199506", - "_XOPEN_SOURCE=600", - "_GNU_SOURCE=1", - "__STDC_LIMIT_MACROS=1", - ] - } else if (is_win) { - defines = [ "__STDC_LIMIT_MACROS=1" ] - } - - if (current_cpu == "pnacl" && !is_nacl_nonsfi) { - # TODO: Remove the following definition once NACL_BUILD_ARCH and - # NACL_BUILD_SUBARCH are defined by the PNaCl toolchain. - defines += [ "NACL_BUILD_ARCH=pnacl" ] - } -} - -config("nexe_defines") { - defines = [ - "DYNAMIC_ANNOTATIONS_ENABLED=1", - "DYNAMIC_ANNOTATIONS_PREFIX=NACL_", - ] -} - -config("nacl_warnings") { - if (is_win) { - # Some NaCl code uses forward declarations of static const variables, - # with initialized definitions later on. (The alternative would be - # many, many more forward declarations of everything used in that - # const variable's initializer before the definition.) The Windows - # compiler is too stupid to notice that there is an initializer later - # in the file, and warns about the forward declaration. - cflags = [ "/wd4132" ] - } -} - -# The base target that all targets in the NaCl build should depend on. -# This allows configs to be modified for everything in the NaCl build, even when -# the NaCl build is composed into the Chrome build. (GN has no functionality to -# add flags to everything in //native_client, having a base target works around -# that limitation.) -source_set("nacl_base") { - public_configs = [ - ":nacl_defines", - ":nacl_warnings", - ] - if (current_os == "nacl") { - public_configs += [ ":nexe_defines" ] - } -} - -config("compiler") { - configs = [] - cflags = [] - ldflags = [] - libs = [] - - if (is_clang && current_cpu != "pnacl") { - # -no-integrated-as is the default in nacl-clang for historical - # compatibility with inline assembly code and so forth. But there - # are no such cases in Chromium code, and -integrated-as is nicer in - # general. Moreover, the IRT must be built using LLVM's assembler - # on x86-64 to preserve sandbox base address hiding. Use it - # everywhere for consistency (and possibly quicker builds). - cflags += [ "-integrated-as" ] - } - if (is_nacl_nonsfi) { - cflags += [ "--pnacl-allow-translate" ] - ldflags += [ - "--pnacl-allow-translate", - "--pnacl-allow-native", - "-Wl,--noirt", - "-Wt,--noirt", - "-Wt,--noirtshim", - - # The clang driver automatically injects -lpthread when using libc++, but - # the toolchain doesn't have it yet. To get around this, use - # -nodefaultlibs and make each executable target depend on - # "//native_client/src/nonsfi/irt:nacl_sys_private". - "-nodefaultlibs", - ] - libs += [ - "c++", - "m", - "c", - "pnaclmm", - ] - include_dirs = [ "//native_client/src/public/linux_syscalls" ] - } - - asmflags = cflags -} - -config("compiler_codegen") { - cflags = [] - - if (is_nacl_irt) { - cflags += [ - # A debugger should be able to unwind IRT call frames. This is - # the default behavior on x86-64 and when compiling C++ with - # exceptions enabled; the change is for the benefit of x86-32 C. - # The frame pointer is unnecessary when unwind tables are used. - "-fasynchronous-unwind-tables", - "-fomit-frame-pointer", - ] - - if (current_cpu == "x86") { - # The x86-32 IRT needs to be callable with an under-aligned - # stack; so we disable SSE instructions, which can fault on - # misaligned addresses. See - # https://code.google.com/p/nativeclient/issues/detail?id=3935 - cflags += [ - "-mstackrealign", - "-mno-sse", - ] - } - } - - asmflags = cflags -} - -config("irt_optimize") { - cflags = [ - # Optimize for space, keep the IRT nexe small. - "-Os", - - # These are omitted from non-IRT libraries to keep the libraries - # themselves small. - "-ffunction-sections", - "-fdata-sections", - ] - - ldflags = [ "-Wl,--gc-sections" ] -}
diff --git a/build/config/nacl/config.gni b/build/config/nacl/config.gni deleted file mode 100644 index 77e15fc..0000000 --- a/build/config/nacl/config.gni +++ /dev/null
@@ -1,55 +0,0 @@ -# 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. - -declare_args() { - # Native Client supports both Newlib and Glibc C libraries where Newlib - # is assumed to be the default one; use this to determine whether Glibc - # is being used instead. - is_nacl_glibc = false -} - -is_nacl_irt = false -is_nacl_nonsfi = false - -nacl_toolchain_dir = "//native_client/toolchain/${host_os}_x86" - -if (is_nacl_glibc) { - if (current_cpu == "x86" || current_cpu == "x64") { - nacl_toolchain_package = "nacl_x86_glibc" - } else if (current_cpu == "arm") { - nacl_toolchain_package = "nacl_arm_glibc" - } -} else { - nacl_toolchain_package = "pnacl_newlib" -} - -if (current_cpu == "pnacl") { - _nacl_tuple = "pnacl" -} else if (current_cpu == "x86" || current_cpu == "x64") { - _nacl_tuple = "x86_64-nacl" -} else if (current_cpu == "arm") { - _nacl_tuple = "arm-nacl" -} else if (current_cpu == "mipsel") { - _nacl_tuple = "mipsel-nacl" -} else { - # In order to allow this file to be included unconditionally - # from build files that can't depend on //components/nacl/features.gni - # we provide a dummy value that should be harmless if nacl isn't needed. - # If nacl *is* needed this will result in a real error, indicating that - # people need to set the toolchain path correctly. - _nacl_tuple = "unknown" -} - -nacl_toolchain_bindir = "${nacl_toolchain_dir}/${nacl_toolchain_package}/bin" -nacl_toolchain_tooldir = - "${nacl_toolchain_dir}/${nacl_toolchain_package}/${_nacl_tuple}" -nacl_toolprefix = "${nacl_toolchain_bindir}/${_nacl_tuple}-" - -nacl_irt_toolchain = "//build/toolchain/nacl:irt_" + target_cpu -is_nacl_irt = current_toolchain == nacl_irt_toolchain - -# Non-SFI mode is a lightweight sandbox used by Chrome OS for running ARC -# applications. -nacl_nonsfi_toolchain = "//build/toolchain/nacl:newlib_pnacl_nonsfi" -is_nacl_nonsfi = current_toolchain == nacl_nonsfi_toolchain
diff --git a/build/config/nacl/rules.gni b/build/config/nacl/rules.gni deleted file mode 100644 index 9bb4ede..0000000 --- a/build/config/nacl/rules.gni +++ /dev/null
@@ -1,188 +0,0 @@ -# Copyright 2015 The Native Client 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/config/nacl/config.gni") - -# Generate a nmf file -# -# Native Client Manifest (nmf) is a JSON file that tells the browser where to -# download and load Native Client application files and libraries. -# -# Variables: -# executables: .nexe/.pexe/.bc executables to generate nmf for -# lib_prefix: path to prepend to shared libraries in the nmf -# nmf: the name and the path of the output file -# nmfflags: additional flags for the nmf generator -# stage_dependencies: directory for staging libraries -template("generate_nmf") { - assert(defined(invoker.executables), "Must define executables") - assert(defined(invoker.nmf), "Must define nmf") - - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "data_deps", - "executables", - "lib_prefix", - "nmf", - "nmfflags", - "public_deps", - "stage_dependencies", - "testonly", - "visibility", - ]) - if (!defined(nmfflags)) { - nmfflags = [] - } - - # TODO(phosek): Remove this conditional once - # https://bugs.chromium.org/p/nativeclient/issues/detail?id=4339 is - # resolved. - if (current_cpu == "pnacl") { - objdump = rebase_path("${nacl_toolchain_bindir}/x86_64-nacl-objdump") - } else { - objdump = rebase_path("${nacl_toolprefix}objdump") - } - if (host_os == "win") { - objdump += ".exe" - } - - script = "//native_client_sdk/src/tools/create_nmf.py" - inputs = [ - objdump, - ] - sources = executables - outputs = [ - nmf, - ] - if (is_nacl_glibc) { - if (defined(stage_dependencies)) { - nmfflags += [ "--stage-dependencies=" + - rebase_path(stage_dependencies, root_build_dir) ] - lib_path = stage_dependencies - } else { - lib_path = root_build_dir - } - if (defined(lib_prefix)) { - nmfflags += [ "--lib-prefix=" + lib_prefix ] - lib_path += "/${lib_prefix}" - } - - # Starts empty so the code below can use += everywhere. - data = [] - - nmfflags += - [ "--library-path=" + rebase_path(root_out_dir, root_build_dir) ] - - # NOTE: There is no explicit dependency for the lib directory - # (lib32 and lib64 for x86/x64) created in the product directory. - # They are created as a side-effect of nmf creation. - if (current_cpu != "x86" && current_cpu != "x64") { - nmfflags += - [ "--library-path=" + - rebase_path("${nacl_toolchain_tooldir}/lib", root_build_dir) ] - if (current_cpu == "arm") { - data += [ "${lib_path}/libarm/" ] - } else { - data += [ "${lib_path}/lib/" ] - } - } else { - # For x86-32, the lib/ directory is called lib32/ instead. - if (current_cpu == "x86") { - nmfflags += - [ "--library-path=" + - rebase_path("${nacl_toolchain_tooldir}/lib32", root_build_dir) ] - data += [ "${lib_path}/lib32/" ] - } - - # x86-32 Windows needs to build both x86-32 and x86-64 NaCl - # binaries into the same nmf covering both architectures. That - # gets handled at a higher level (see the nacl_test_data template), - # so a single generate_nmf invocation gets both x86-32 and x86-64 - # nexes listed in executables. - if (current_cpu == "x64" || target_os == "win") { - # For x86-64, the lib/ directory is called lib64/ instead - # when copied by create_nmf.py. - glibc_tc = "//build/toolchain/nacl:glibc" - assert(current_toolchain == "${glibc_tc}_${current_cpu}") - if (current_cpu == "x64") { - x64_out_dir = root_out_dir - } else { - x64_out_dir = get_label_info(":${target_name}(${glibc_tc}_x64)", - "root_out_dir") - } - nmfflags += [ - "--library-path=" + rebase_path(x64_out_dir, root_build_dir), - "--library-path=" + - rebase_path("${nacl_toolchain_tooldir}/lib", root_build_dir), - ] - data += [ "${lib_path}/lib64/" ] - } - } - } - args = [ - "--no-default-libpath", - "--objdump=" + rebase_path(objdump, root_build_dir), - "--output=" + rebase_path(nmf, root_build_dir), - ] + nmfflags + rebase_path(sources, root_build_dir) - if (is_nacl_glibc && current_cpu == "arm") { - deps += [ "//native_client/src/untrusted/elf_loader:elf_loader" ] - } - } -} - -# Generate a nmf file for Non-SFI tests -# -# Non-SFI tests use a different manifest format from regular Native Client and -# as such requires a different generator. -# -# Variables: -# executable: Non-SFI .nexe executable to generate nmf for -# nmf: the name and the path of the output file -# nmfflags: additional flags for the nmf generator -template("generate_nonsfi_test_nmf") { - assert(defined(invoker.executable), "Must define executable") - assert(defined(invoker.nmf), "Must define nmf") - - action(target_name) { - forward_variables_from(invoker, - [ - "deps", - "data_deps", - "executable", - "nmf", - "testonly", - "public_deps", - "visibility", - ]) - - script = "//ppapi/tests/create_nonsfi_test_nmf.py" - sources = [ - executable, - ] - outputs = [ - nmf, - ] - - # NOTE: We use target_cpu rather than current_cpu on purpose because - # current_cpu is always going to be pnacl for Non-SFI, but the Non-SFI - # .nexe executable is always translated to run on the target machine. - if (target_cpu == "x86") { - arch = "x86-32" - } else if (target_cpu == "x64") { - arch = "x86-64" - } else { - arch = target_cpu - } - args = [ - "--program=" + rebase_path(executable, root_build_dir), - "--arch=${arch}", - "--output=" + rebase_path(nmf, root_build_dir), - ] - if (defined(invoker.nmfflags)) { - args += invoker.nmfflags - } - } -}
diff --git a/build/config/pch.gni b/build/config/pch.gni deleted file mode 100644 index 93bd2fe..0000000 --- a/build/config/pch.gni +++ /dev/null
@@ -1,12 +0,0 @@ -# Copyright 2016 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/goma.gni") - -declare_args() { - # Precompiled header file support is by default available, - # but for distributed build system uses (like goma) or when - # doing official builds. - enable_precompiled_headers = !is_official_build && !use_goma -}
diff --git a/build/config/posix/BUILD.gn b/build/config/posix/BUILD.gn deleted file mode 100644 index 91405fd..0000000 --- a/build/config/posix/BUILD.gn +++ /dev/null
@@ -1,135 +0,0 @@ -# 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("//buildtools/deps_revisions.gni") -import("//build/config/c++/c++.gni") -import("//build/config/clang/clang.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/config/sysroot.gni") -import("//build/toolchain/toolchain.gni") - -# TODO(crbug.com/830987): Come up with a better name for is POSIX + Fuchsia -# configuration. -assert(is_posix || is_fuchsia) - -group("posix") { - visibility = [ "//:optimize_gn_gen" ] -} - -# This is included by reference in the //build/config/compiler:runtime_library -# config that is applied to all targets. It is here to separate out the logic -# that is Posix-only. Please see that target for advice on what should go in -# :runtime_library vs. :compiler. -config("runtime_library") { - asmflags = [] - cflags = [] - cflags_c = [] - cflags_cc = [] - cflags_objc = [] - cflags_objcc = [] - defines = [] - ldflags = [] - lib_dirs = [] - libs = [] - - if (use_custom_libcxx) { - if (libcpp_is_static) { - # Don't leak any symbols on a static build. - defines += [ - "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS", - "_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS", - ] - } - if (!is_clang) { - # Gcc has a built-in abs() definition with default visibility. - # If it was not disabled, it would conflict with libc++'s abs() - # with hidden visibility. - cflags += [ "-fno-builtin-abs" ] - } - cflags_cc += [ - "-nostdinc++", - "-isystem" + rebase_path("$libcxx_prefix/include", root_build_dir), - "-isystem" + rebase_path("$libcxxabi_prefix/include", root_build_dir), - ] - defines += [ - "CR_LIBCXX_REVISION=$libcxx_svn_revision", - "CR_LIBCXXABI_REVISION=$libcxxabi_svn_revision", - ] - - # Make sure we don't link against libc++ or libstdc++. - if (is_clang) { - # //build/config/android:runtime_library adds -nostdlib, which suppresses - # linking against all system libraries. -nostdlib++ would be redundant, - # and would generate an unused warning in this case. - if (!is_android) { - ldflags += [ "-nostdlib++" ] - } - } else { - ldflags += [ "-nodefaultlibs" ] - - # Unfortunately, there's no way to disable linking against just libc++ - # (gcc doesn't have -notstdlib++: - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83931); -nodefaultlibs - # removes all of the default libraries, so add back the ones that we need. - libs += [ - "c", - "gcc_s", - "m", - "rt", - ] - } - } - - if (!is_mac && !is_ios && sysroot != "") { - # Pass the sysroot to all C compiler variants, the assembler, and linker. - sysroot_flags = [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ] - if (is_linux) { - # This is here so that all files get recompiled after a sysroot roll and - # when turning the sysroot on or off. (defines are passed via the command - # line, and build system rebuilds things when their commandline - # changes). Nothing should ever read this define. - sysroot_hash = - exec_script("//build/linux/sysroot_scripts/install-sysroot.py", - [ "--print-hash=$current_cpu" ], - "trim string", - [ "//build/linux/sysroot_scripts/sysroots.json" ]) - defines += [ "CR_SYSROOT_HASH=$sysroot_hash" ] - } - asmflags += sysroot_flags - - link_sysroot_flags = - [ "--sysroot=" + rebase_path(link_sysroot, root_build_dir) ] - ldflags += link_sysroot_flags - - # When use_custom_libcxx=true, some -isystem flags get passed to - # cflags_cc to set up libc++ include paths. We want to make sure - # the sysroot includes take lower precendence than the libc++ - # ones, so they must appear later in the command line. However, - # the gn reference states "These variant-specific versions of - # cflags* will be appended on the compiler command line after - # 'cflags'." Because of this, we must set the sysroot flags for - # all cflags variants instead of using 'cflags' directly. - cflags_c += sysroot_flags - cflags_cc += sysroot_flags - cflags_objc += sysroot_flags - cflags_objcc += sysroot_flags - - # Need to get some linker flags out of the sysroot. - ld_paths = exec_script("sysroot_ld_path.py", - [ - rebase_path("//build/linux/sysroot_ld_path.sh", - root_build_dir), - rebase_path(link_sysroot), - ], - "list lines") - foreach(ld_path, ld_paths) { - ld_path = rebase_path(ld_path, root_build_dir) - ldflags += [ - "-L" + ld_path, - "-Wl,-rpath-link=" + ld_path, - ] - } - } -}
diff --git a/build/config/posix/sysroot_ld_path.py b/build/config/posix/sysroot_ld_path.py deleted file mode 100644 index 7056207..0000000 --- a/build/config/posix/sysroot_ld_path.py +++ /dev/null
@@ -1,21 +0,0 @@ -# Copyright (c) 2013 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. - -# This file takes two arguments, the relative location of the shell script that -# does the checking, and the name of the sysroot. - -# TODO(brettw) the build/linux/sysroot_ld_path.sh script should be rewritten in -# Python in this file. - -import subprocess -import sys - -if len(sys.argv) != 3: - print "Need two arguments" - sys.exit(1) - -result = subprocess.check_output([sys.argv[1], sys.argv[2]]).strip() -result = result.replace(" ", "\n") -if result != "": - print result
diff --git a/build/config/python.gni b/build/config/python.gni deleted file mode 100644 index e24025f..0000000 --- a/build/config/python.gni +++ /dev/null
@@ -1,61 +0,0 @@ -# Copyright 2018 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. - -# Creates a group() that lists Python sources as |data|. -# Having such targets serves two purposes: -# 1) Causes files to be included in runtime_deps, so that they are uploaded to -# swarming when running tests remotely. -# 2) Causes "gn analyze" to know about all Python inputs so that tests will be -# re-run when relevant Python files change. -# -# All non-trivial Python scripts should use a "pydeps" file to track their -# sources. To create a .pydep file for a target in //example: -# -# build/print_python_deps.py \ -# --root example \ -# --output example/$target_name.pydeps \ -# path/to/your/script.py -# -# Keep the .pydep file up-to-date by adding to //PRESUBMIT.py under one of: -# _ANDROID_SPECIFIC_PYDEPS_FILES, _GENERIC_PYDEPS_FILES -# -# Variables -# pydeps_file: Path to .pydeps file to read sources from (optional). -# data: Additional files to include in data. E.g. non-.py files needed by the -# library, or .py files that are conditionally / lazily imported. -# -# Example -# python_library("my_library_py") { -# pydeps_file = "my_library.pydeps" -# data = [ "foo.dat" ] -# } -template("python_library") { - group(target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - "testonly", - "visibility", - ]) - - if (defined(invoker.pydeps_file)) { - _py_files = read_file(invoker.pydeps_file, "list lines") - - # Filter out comments. - set_sources_assignment_filter([ "#*" ]) - sources = _py_files - - # Even though the .pydep file is not used at runtime, it must be added - # so that "gn analyze" will mark the target as changed when .py files - # are removed but none are added or modified. - data = sources + [ invoker.pydeps_file ] - } else { - data = [] - } - if (defined(invoker.data)) { - data += invoker.data - } - } -}
diff --git a/build/config/sanitizers/BUILD.gn b/build/config/sanitizers/BUILD.gn deleted file mode 100644 index ebad6b0..0000000 --- a/build/config/sanitizers/BUILD.gn +++ /dev/null
@@ -1,614 +0,0 @@ -# Copyright 2014 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_overrides/build.gni") -import("//build/config/chrome_build.gni") -import("//build/config/chromecast_build.gni") -import("//build/config/clang/clang.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/toolchain/toolchain.gni") - -if (is_ios) { - import("//build/config/ios/ios_sdk.gni") -} - -# Contains the dependencies needed for sanitizers to link into -# executables and shared_libraries. Unconditionally depend upon -# "//build/config:exe_and_shlib_deps" to pull in this target. -group("deps") { - visibility = [ "//build/config:exe_and_shlib_deps" ] - if (using_sanitizer) { - public_configs = [ - ":sanitizer_options_link_helper", - - # Even when a target removes default_sanitizer_flags, it may be depending - # on a library that did not remove default_sanitizer_flags. Thus, we need - # to add the ldflags here as well as in default_sanitizer_flags. - ":default_sanitizer_ldflags", - ] - deps = [ - ":options_sources", - ] - if (is_win) { - exe = ".exe" - } else { - exe = "" - } - data = [ - "//tools/valgrind/asan/", - "$clang_base_path/bin/llvm-symbolizer${exe}", - ] - if (use_prebuilt_instrumented_libraries || - use_locally_built_instrumented_libraries) { - deps += [ "//third_party/instrumented_libraries:deps" ] - } - - # ASAN is supported on iOS but the runtime library depends on the compiler - # used (Chromium version of clang versus Xcode version of clang). Only copy - # the ASAN runtime on iOS if building with Chromium clang. - if (is_win || is_mac || (is_ios && !use_xcode_clang)) { - data_deps = [ - ":copy_asan_runtime", - ] - } - if (is_mac || (is_ios && !use_xcode_clang)) { - public_deps = [ - ":asan_runtime_bundle_data", - ] - } - } -} - -if ((is_mac || is_win || (is_ios && !use_xcode_clang)) && using_sanitizer) { - if (is_mac) { - _clang_rt_dso_path = "darwin/libclang_rt.asan_osx_dynamic.dylib" - } else if (is_ios) { - _clang_rt_dso_path = "darwin/libclang_rt.asan_iossim_dynamic.dylib" - } else if (is_win && target_cpu == "x86") { - _clang_rt_dso_path = "windows/clang_rt.asan_dynamic-i386.dll" - } else if (is_win && target_cpu == "x64") { - _clang_rt_dso_path = "windows/clang_rt.asan_dynamic-x86_64.dll" - } - - _clang_rt_dso_full_path = - "$clang_base_path/lib/clang/$clang_version/lib/$_clang_rt_dso_path" - - if (!is_ios) { - copy("copy_asan_runtime") { - sources = [ - _clang_rt_dso_full_path, - ] - outputs = [ - "$root_out_dir/{{source_file_part}}", - ] - } - } else { - # On iOS, the runtime library need to be code signed (adhoc signature) - # starting with Xcode 8, so use an action instead of a copy on iOS. - action("copy_asan_runtime") { - script = "//build/config/ios/codesign.py" - sources = [ - _clang_rt_dso_full_path, - ] - outputs = [ - "$root_out_dir/" + get_path_info(sources[0], "file"), - ] - args = [ - "code-sign-file", - "--identity=" + ios_code_signing_identity, - "--output=" + rebase_path(outputs[0], root_build_dir), - rebase_path(sources[0], root_build_dir), - ] - } - } - - if (is_mac || is_ios) { - bundle_data("asan_runtime_bundle_data") { - sources = get_target_outputs(":copy_asan_runtime") - outputs = [ - "{{bundle_executable_dir}}/{{source_file_part}}", - ] - public_deps = [ - ":copy_asan_runtime", - ] - } - } -} - -config("sanitizer_options_link_helper") { - if (is_mac || is_ios) { - ldflags = [ "-Wl,-U,_sanitizer_options_link_helper" ] - } else if (!is_win) { - ldflags = [ "-Wl,-u_sanitizer_options_link_helper" ] - } -} - -static_library("options_sources") { - # This is a static_library instead of a source_set, as it shouldn't be - # unconditionally linked into targets. - visibility = [ - ":deps", - "//:gn_visibility", - ] - sources = [ - "//build/sanitizers/sanitizer_options.cc", - ] - - # Don't compile this target with any sanitizer code. It can be called from - # the sanitizer runtimes, so instrumenting these functions could cause - # recursive calls into the runtime if there is an error. - configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ] - - if (is_asan) { - if (!defined(asan_suppressions_file)) { - asan_suppressions_file = "//build/sanitizers/asan_suppressions.cc" - } - sources += [ asan_suppressions_file ] - } - - if (is_lsan) { - if (!defined(lsan_suppressions_file)) { - lsan_suppressions_file = "//build/sanitizers/lsan_suppressions.cc" - } - sources += [ lsan_suppressions_file ] - } - - if (is_tsan) { - if (!defined(tsan_suppressions_file)) { - tsan_suppressions_file = "//build/sanitizers/tsan_suppressions.cc" - } - sources += [ tsan_suppressions_file ] - } -} - -# Applies linker flags necessary when either :deps or :default_sanitizer_flags -# are used. -config("default_sanitizer_ldflags") { - visibility = [ - ":default_sanitizer_flags", - ":deps", - ] - - if (is_posix || is_fuchsia) { - ldflags = [] - if (is_asan) { - ldflags += [ "-fsanitize=address" ] - if (is_mac) { - # https://crbug.com/708707 - ldflags += [ "-fno-sanitize-address-use-after-scope" ] - } else { - ldflags += [ "-fsanitize-address-use-after-scope" ] - } - } - if (is_lsan) { - ldflags += [ "-fsanitize=leak" ] - } - if (is_tsan) { - ldflags += [ "-fsanitize=thread" ] - } - if (is_msan) { - ldflags += [ "-fsanitize=memory" ] - } - if (is_ubsan || is_ubsan_security) { - ldflags += [ "-fsanitize=undefined" ] - } - if (is_ubsan_null) { - ldflags += [ "-fsanitize=null" ] - } - if (is_ubsan_vptr) { - ldflags += [ "-fsanitize=vptr" ] - } - - if (use_sanitizer_coverage) { - ldflags += [ "-fsanitize-coverage=$sanitizer_coverage_flags" ] - } - - if (is_cfi && current_toolchain == default_toolchain) { - ldflags += [ "-fsanitize=cfi-vcall" ] - if (use_cfi_cast) { - ldflags += [ - "-fsanitize=cfi-derived-cast", - "-fsanitize=cfi-unrelated-cast", - ] - } - if (use_cfi_icall) { - ldflags += [ "-fsanitize=cfi-icall" ] - } - if (use_cfi_diag) { - ldflags += [ "-fno-sanitize-trap=cfi" ] - if (use_cfi_recover) { - ldflags += [ "-fsanitize-recover=cfi" ] - } - } - } - } else if (is_win && is_asan) { - # Windows directly calls link.exe instead of the compiler driver when - # linking. Hence, pass the runtime libraries instead of -fsanitize=address. - # In the static-library build, libraries are different for executables - # and dlls, see link_executable and link_shared_library below. - # This here handles only the component build. - if (target_cpu == "x64") { - # Windows 64-bit. - if (is_component_build) { - libs = [ - "clang_rt.asan_dynamic-x86_64.lib", - "clang_rt.asan_dynamic_runtime_thunk-x86_64.lib", - ] - } - } else { - assert(target_cpu == "x86", "WinASan unsupported architecture") - if (is_component_build) { - libs = [ - "clang_rt.asan_dynamic-i386.lib", - "clang_rt.asan_dynamic_runtime_thunk-i386.lib", - ] - } - } - } -} - -config("common_sanitizer_flags") { - cflags = [] - - # Sanitizers need line table info for stack traces. They don't need type info - # or variable info, so we can leave that out to speed up the build (unless - # it's explicitly asked for by setting |sanitizer_keep_symbols| to true). - if (using_sanitizer) { - assert(is_clang, "sanitizers only supported with clang") - assert(!is_official_build, "sanitizers not supported in official builds") - - if (!sanitizer_no_symbols) { - if (!sanitizer_keep_symbols) { - cflags += [ "-gline-tables-only" ] - } - - cflags += [ - # Column info in debug data confuses Visual Studio's debugger, so don't - # use this by default. However, clusterfuzz needs it for good - # attribution of reports to CLs, so turn it on there. - "-gcolumn-info", - ] - } - - # Frame pointers are controlled in //build/config/compiler:default_stack_frames - } -} - -config("asan_flags") { - cflags = [] - if (is_asan) { - cflags += [ "-fsanitize=address" ] - if (!is_mac) { - cflags += [ "-fsanitize-address-use-after-scope" ] - } else { - # https://crbug.com/708707 - cflags += [ "-fno-sanitize-address-use-after-scope" ] - } - if (!asan_globals) { - cflags += [ - "-mllvm", - "-asan-globals=0", - ] - } - if (is_win) { - if (!defined(asan_win_blacklist_path)) { - asan_win_blacklist_path = - rebase_path("//tools/memory/asan/blacklist_win.txt", root_build_dir) - } - cflags += [ "-fsanitize-blacklist=$asan_win_blacklist_path" ] - } else { - # TODO(rnk): Remove this as discussed in http://crbug.com/427202. - if (!defined(asan_blacklist_path)) { - asan_blacklist_path = - rebase_path("//tools/memory/asan/blacklist.txt", root_build_dir) - } - cflags += [ "-fsanitize-blacklist=$asan_blacklist_path" ] - } - } -} - -config("link_executable") { - if (is_asan && is_win && !is_component_build) { - if (target_cpu == "x64") { - libs = [ "clang_rt.asan-x86_64.lib" ] - ldflags = [ - "-wholearchive:clang_rt.asan-x86_64.lib", - "-include:__asan_get_free_stack", - ] - } else { - assert(target_cpu == "x86", "WinASan unsupported architecture") - libs = [ "clang_rt.asan-i386.lib" ] - ldflags = [ - "-wholearchive:clang_rt.asan-i386.lib", - - # TODO(crbug.com/777087): The linker in VS 15.4 does not respect - # /wholearchive. This manually includes a symbol to work around that. - # We can remove it when the linker is fixed. - "-include:___asan_get_free_stack", - ] - } - } -} - -config("link_shared_library") { - if (is_asan && is_win && !is_component_build) { - if (target_cpu == "x64") { - libs = [ "clang_rt.asan_dll_thunk-x86_64.lib" ] - } else { - assert(target_cpu == "x86", "WinASan unsupported architecture") - libs = [ "clang_rt.asan_dll_thunk-i386.lib" ] - } - } -} - -config("cfi_flags") { - cflags = [] - if (is_cfi && current_toolchain == default_toolchain) { - if (!defined(cfi_blacklist_path)) { - cfi_blacklist_path = - rebase_path("//tools/cfi/blacklist.txt", root_build_dir) - } - cflags += [ - "-fsanitize=cfi-vcall", - "-fsanitize-blacklist=$cfi_blacklist_path", - ] - - if (use_cfi_cast) { - cflags += [ - "-fsanitize=cfi-derived-cast", - "-fsanitize=cfi-unrelated-cast", - ] - } - - if (use_cfi_icall) { - cflags += [ "-fsanitize=cfi-icall" ] - } - - if (use_cfi_diag) { - cflags += [ "-fno-sanitize-trap=cfi" ] - if (is_win) { - cflags += [ - "/Oy-", - "/Ob0", - ] - } else { - cflags += [ - "-fno-inline-functions", - "-fno-inline", - "-fno-omit-frame-pointer", - "-O1", - ] - } - if (use_cfi_recover) { - cflags += [ "-fsanitize-recover=cfi" ] - } - } - } -} - -# crbug.com/785442: Fix cfi-icall failures for code that casts pointer argument -# types in function pointer type signatures. -config("cfi_icall_generalize_pointers") { - if (is_clang && is_cfi && use_cfi_icall) { - cflags = [ "-fsanitize-cfi-icall-generalize-pointers" ] - } -} - -config("coverage_flags") { - cflags = [] - if (use_sanitizer_coverage) { - cflags += [ - "-fsanitize-coverage=$sanitizer_coverage_flags", - "-mllvm", - "-sanitizer-coverage-prune-blocks=1", - ] - if (current_cpu == "arm") { - # http://crbug.com/517105 - cflags += [ - "-mllvm", - "-sanitizer-coverage-block-threshold=0", - ] - } - defines = [ "SANITIZER_COVERAGE" ] - } -} - -config("lsan_flags") { - if (is_lsan) { - cflags = [ "-fsanitize=leak" ] - } -} - -config("msan_flags") { - if (is_msan) { - assert(is_linux, "msan only supported on linux x86_64") - if (!defined(msan_blacklist_path)) { - msan_blacklist_path = - rebase_path("//tools/msan/blacklist.txt", root_build_dir) - } - cflags = [ - "-fsanitize=memory", - "-fsanitize-memory-track-origins=$msan_track_origins", - "-fsanitize-blacklist=$msan_blacklist_path", - ] - } -} - -config("tsan_flags") { - if (is_tsan) { - assert(is_linux, "tsan only supported on linux x86_64") - if (!defined(tsan_blacklist_path)) { - tsan_blacklist_path = - rebase_path("//tools/memory/tsan_v2/ignores.txt", root_build_dir) - } - cflags = [ - "-fsanitize=thread", - "-fsanitize-blacklist=$tsan_blacklist_path", - ] - } -} - -config("ubsan_flags") { - cflags = [] - if (is_ubsan) { - if (!defined(ubsan_blacklist_path)) { - ubsan_blacklist_path = - rebase_path("//tools/ubsan/blacklist.txt", root_build_dir) - } - cflags += [ - # Yasm dies with an "Illegal instruction" error when bounds checking is - # enabled. See http://crbug.com/489901 - # "-fsanitize=bounds", - "-fsanitize=float-divide-by-zero", - "-fsanitize=integer-divide-by-zero", - "-fsanitize=null", - "-fsanitize=object-size", - "-fsanitize=pointer-overflow", - "-fsanitize=return", - "-fsanitize=returns-nonnull-attribute", - "-fsanitize=shift-exponent", - "-fsanitize=signed-integer-overflow", - "-fsanitize=unreachable", - "-fsanitize=vla-bound", - "-fsanitize-blacklist=$ubsan_blacklist_path", - ] - - # Chromecast ubsan builds fail to compile with these - # experimental flags, so only add them to non-chromecast ubsan builds. - if (!is_chromecast) { - cflags += [ - # Employ the experimental PBQP register allocator to avoid slow - # compilation on files with too many basic blocks. - # See http://crbug.com/426271. - "-mllvm", - "-regalloc=pbqp", - - # Speculatively use coalescing to slightly improve the code generated - # by PBQP regallocator. May increase compile time. - "-mllvm", - "-pbqp-coalescing", - ] - } - } -} - -config("ubsan_no_recover") { - if (is_ubsan_no_recover) { - cflags = [ "-fno-sanitize-recover=undefined" ] - } -} - -config("ubsan_security_flags") { - if (is_ubsan_security) { - if (!defined(ubsan_security_blacklist_path)) { - ubsan_security_blacklist_path = - rebase_path("//tools/ubsan/security_blacklist.txt", root_build_dir) - } - cflags = [ - "-fsanitize=function", - "-fsanitize=pointer-overflow", - "-fsanitize=shift", - "-fsanitize=signed-integer-overflow", - "-fsanitize=vla-bound", - "-fsanitize=vptr", - "-fsanitize-blacklist=$ubsan_security_blacklist_path", - ] - } -} - -config("ubsan_null_flags") { - if (is_ubsan_null) { - cflags = [ "-fsanitize=null" ] - } -} - -config("ubsan_vptr_flags") { - if (is_ubsan_vptr) { - if (!defined(ubsan_vptr_blacklist_path)) { - ubsan_vptr_blacklist_path = - rebase_path("//tools/ubsan/vptr_blacklist.txt", root_build_dir) - } - cflags = [ - "-fsanitize=vptr", - "-fsanitize-blacklist=$ubsan_vptr_blacklist_path", - ] - } -} - -config("fuzzing_build_mode") { - if (use_fuzzing_engine) { - defines = [ "FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" ] - } -} - -all_sanitizer_configs = [ - ":common_sanitizer_flags", - ":coverage_flags", - ":default_sanitizer_ldflags", - ":asan_flags", - ":cfi_flags", - ":lsan_flags", - ":msan_flags", - ":tsan_flags", - ":ubsan_flags", - ":ubsan_no_recover", - ":ubsan_null_flags", - ":ubsan_security_flags", - ":ubsan_vptr_flags", - ":fuzzing_build_mode", -] - -# This config is applied by default to all targets. It sets the compiler flags -# for sanitizer usage, or, if no sanitizer is set, does nothing. -# -# This needs to be in a separate config so that targets can opt out of -# sanitizers (by removing the config) if they desire. Even if a target -# removes this config, executables & shared libraries should still depend on -# :deps if any of their dependencies have not opted out of sanitizers. -# Keep this list in sync with default_sanitizer_flags_but_ubsan_vptr. -config("default_sanitizer_flags") { - configs = all_sanitizer_configs -} - -# This config is equivalent to default_sanitizer_flags, but excludes ubsan_vptr. -# This allows to selectively disable ubsan_vptr, when needed. In particular, -# if some third_party code is required to be compiled without rtti, which -# is a requirement for ubsan_vptr. -config("default_sanitizer_flags_but_ubsan_vptr") { - configs = all_sanitizer_configs - [ ":ubsan_vptr_flags" ] -} - -config("default_sanitizer_flags_but_coverage") { - configs = all_sanitizer_configs - [ ":coverage_flags" ] -} - -# This config is used by parts of code that aren't targeted in fuzzers and -# therefore don't need coverage instrumentation and possibly wont need -# sanitizer instrumentation either. The config also tells the compiler to -# perform additional optimizations on the configured code and ensures that -# linking it to the rest of the binary which is instrumented with sanitizers -# works. The config only does anything if the build is a fuzzing build. -config("not_fuzzed") { - if (use_fuzzing_engine) { - # Since we aren't instrumenting with coverage, code size is less of a - # concern, so use a more aggressive optimization level than - # optimize_for_fuzzing (-O1). When given multiple optimization flags, clang - # obeys the last one, so as long as this flag comes after -O1, it should work. - # Since this config will always be depended on after - # "//build/config/compiler:default_optimization" (which adds -O1 when - # optimize_for_fuzzing is true), -O2 should always be the second flag. Even - # though this sounds fragile, it isn't a big deal if it breaks, since proto - # fuzzers will still work, they will just be slightly slower. - cflags = [ "-O2" ] - - # We need to include this config when we remove default_sanitizer_flags or - # else there will be linking errors. We would remove default_sanitizer_flags - # here as well, but gn doesn't permit this. - if (!is_msan) { - # We don't actually remove sanitization when MSan is being used so there - # is no need to add default_sanitizer_ldflags in that case - configs = [ ":default_sanitizer_ldflags" ] - } - } -}
diff --git a/build/config/sanitizers/OWNERS b/build/config/sanitizers/OWNERS deleted file mode 100644 index 7ab46b1..0000000 --- a/build/config/sanitizers/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -mmoroz@chromium.org -ochang@chromium.org
diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni deleted file mode 100644 index 049a1f1..0000000 --- a/build/config/sanitizers/sanitizers.gni +++ /dev/null
@@ -1,258 +0,0 @@ -# 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/config/chrome_build.gni") -import("//build/config/chromecast_build.gni") -import("//build/toolchain/toolchain.gni") - -declare_args() { - # Compile for Address Sanitizer to find memory bugs. - is_asan = false - - # Compile for Leak Sanitizer to find leaks. - is_lsan = false - - # Compile for Memory Sanitizer to find uninitialized reads. - is_msan = false - - # Compile for Thread Sanitizer to find threading bugs. - is_tsan = false - - # Compile for Undefined Behaviour Sanitizer to find various types of - # undefined behaviour (excludes vptr checks). - is_ubsan = false - - # Halt the program if a problem is detected. - is_ubsan_no_recover = false - - # Compile for Undefined Behaviour Sanitizer's null pointer checks. - is_ubsan_null = false - - # Compile for Undefined Behaviour Sanitizer's vptr checks. - is_ubsan_vptr = false - - # Track where uninitialized memory originates from. From fastest to slowest: - # 0 - no tracking, 1 - track only the initial allocation site, 2 - track the - # chain of stores leading from allocation site to use site. - msan_track_origins = 2 - - # Use dynamic libraries instrumented by one of the sanitizers instead of the - # standard system libraries. Set this flag to download prebuilt binaries from - # GCS. - use_prebuilt_instrumented_libraries = false - - # Use dynamic libraries instrumented by one of the sanitizers instead of the - # standard system libraries. Set this flag to build the libraries from source. - use_locally_built_instrumented_libraries = false - - # Compile with Control Flow Integrity to protect virtual calls and casts. - # See http://clang.llvm.org/docs/ControlFlowIntegrity.html - # - # TODO(pcc): Remove this flag if/when CFI is enabled in all official builds. - is_cfi = target_os == "linux" && !is_chromeos && target_cpu == "x64" && - is_official_build - - # Enable checks for bad casts: derived cast and unrelated cast. - # TODO(krasin): remove this, when we're ready to add these checks by default. - # https://crbug.com/626794 - use_cfi_cast = false - - # Enable checks for indirect function calls via a function pointer. - # TODO(pcc): remove this when we're ready to add these checks by default. - # https://crbug.com/701919 - use_cfi_icall = target_os == "linux" && !is_chromeos && target_cpu == "x64" && - is_official_build - - # Print detailed diagnostics when Control Flow Integrity detects a violation. - use_cfi_diag = false - - # Let Control Flow Integrity continue execution instead of crashing when - # printing diagnostics (use_cfi_diag = true). - use_cfi_recover = false - - # Compile for fuzzing with LLVM LibFuzzer. - # See http://www.chromium.org/developers/testing/libfuzzer - use_libfuzzer = false - - # Compile for fuzzing with AFL. - use_afl = false - - # Enables core ubsan security features. Will later be removed once it matches - # is_ubsan. - is_ubsan_security = false - - # Compile for fuzzing with Dr. Fuzz - # See http://www.chromium.org/developers/testing/dr-fuzz - use_drfuzz = false - - # Helper variable for testing builds with disabled libfuzzer. - # Not for client use. - disable_libfuzzer = false - - # Value for -fsanitize-coverage flag. Setting this causes - # use_sanitizer_coverage to be enabled. - # Default value when unset and use_fuzzing_engine=true: - # trace-pc-guard - # Default value when unset and use_sanitizer_coverage=true: - # trace-pc-guard,indirect-calls - sanitizer_coverage_flags = "" - - # Keep symbol level when building with sanitizers. When sanitizers are - # enabled, the default is to compile with the minimum debug info level - # necessary, overriding any other symbol level arguments that may be set. - # Setting this to true prevents this. - sanitizer_keep_symbols = false - - # Builds fuzzer/sanitizers without symbols. Use with symbol_level=0. - # Useful for reducing binary size when building with use_clang_coverage=true. - sanitizer_no_symbols = false -} - -# Disable sanitizers for non-default toolchains. -if (current_toolchain != default_toolchain) { - is_asan = false - is_cfi = false - is_lsan = false - is_msan = false - is_tsan = false - is_ubsan = false - is_ubsan_null = false - is_ubsan_no_recover = false - is_ubsan_security = false - is_ubsan_vptr = false - msan_track_origins = 0 - sanitizer_coverage_flags = "" - use_afl = false - use_cfi_diag = false - use_cfi_recover = false - use_drfuzz = false - use_libfuzzer = false - use_prebuilt_instrumented_libraries = false - use_locally_built_instrumented_libraries = false - use_sanitizer_coverage = false -} - -# Whether we are doing a fuzzer build. Normally this should be checked instead -# of checking "use_libfuzzer || use_afl" because often developers forget to -# check for "use_afl". -use_fuzzing_engine = use_libfuzzer || use_afl - -# Args that are in turn dependent on other args must be in a separate -# declare_args block. User overrides are only applied at the end of a -# declare_args block. -declare_args() { - use_sanitizer_coverage = use_fuzzing_engine || sanitizer_coverage_flags != "" - - # Detect overflow/underflow for global objects. - # - # Mac: http://crbug.com/352073 - asan_globals = !is_mac -} - -if (use_fuzzing_engine && sanitizer_coverage_flags == "") { - sanitizer_coverage_flags = "trace-pc-guard" -} else if (use_sanitizer_coverage && sanitizer_coverage_flags == "") { - sanitizer_coverage_flags = "trace-pc-guard,indirect-calls" -} - -# Whether we are linking against a sanitizer runtime library. Among other -# things, this changes the default symbol level and other settings in order to -# prepare to create stack traces "live" using the sanitizer runtime. -using_sanitizer = - is_asan || is_lsan || is_tsan || is_msan || is_ubsan || is_ubsan_null || - is_ubsan_vptr || is_ubsan_security || use_sanitizer_coverage || use_cfi_diag - -assert(!using_sanitizer || is_clang, - "Sanitizers (is_*san) require setting is_clang = true in 'gn args'") - -assert(!is_cfi || is_clang, - "is_cfi requires setting is_clang = true in 'gn args'") - -prebuilt_instrumented_libraries_available = - is_msan && (msan_track_origins == 0 || msan_track_origins == 2) - -if (use_libfuzzer && is_linux) { - if (is_asan) { - # We do leak checking with libFuzzer on Linux. Set is_lsan for code that - # relies on LEAK_SANITIZER define to avoid false positives. - is_lsan = true - } - if (is_msan) { - use_prebuilt_instrumented_libraries = true - } -} - -# MSan only links Chrome properly in release builds (brettw -- 9/1/2015). The -# same is possibly true for the other non-ASan sanitizers. But regardless of -# whether it links, one would normally never run a sanitizer in debug mode. -# Running in debug mode probably indicates you forgot to set the "is_debug = -# false" flag in the build args. ASan seems to run fine in debug mode. -# -# If you find a use-case where you want to compile a sanitizer in debug mode -# and have verified it works, ask brettw and we can consider removing it from -# this condition. We may also be able to find another way to enable your case -# without having people accidentally get broken builds by compiling an -# unsupported or unadvisable configurations. -# -# For one-off testing, just comment this assertion out. -assert(!is_debug || !(is_msan || is_ubsan || is_ubsan_null || is_ubsan_vptr), - "Sanitizers should generally be used in release (set is_debug=false).") - -assert(!is_msan || (is_linux && current_cpu == "x64"), - "MSan currently only works on 64-bit Linux and ChromeOS builds.") - -assert(!is_lsan || is_asan, "is_lsan = true requires is_asan = true also.") - -# ASAN build on Windows is not working in debug mode. Intercepting memory -# allocation functions is hard on Windows and not yet implemented in LLVM. -assert(!is_win || !is_debug || !is_asan, - "ASan on Windows doesn't work in debug (set is_debug=false).") - -# Make sure that if we recover on detection (i.e. not crash), diagnostics are -# printed. -assert(!use_cfi_recover || use_cfi_diag, - "Only use CFI recovery together with diagnostics.") - -# TODO(crbug.com/753445): the use_sanitizer_coverage arg is currently -# not supported by the Chromium mac_clang_x64 toolchain on iOS distribution. -# The coverage works with iOS toolchain but it is broken when the mac -# toolchain is used as a secondary one on iOS distribution. E.g., it should be -# possible to build the "net" target for iOS with the sanitizer coverage -# enabled. -assert( - !(use_sanitizer_coverage && is_mac && target_os == "ios"), - "crbug.com/753445: use_sanitizer_coverage=true is not supported by the " + - "Chromium mac_clang_x64 toolchain on iOS distribution. Please set " + - "the argument value to false.") - -# Use these lists of configs to disable instrumenting code that is part of a -# fuzzer, but which isn't being targeted (such as libprotobuf-mutator, *.pb.cc -# and libprotobuf when they are built as part of a proto fuzzer). Adding or -# removing these lists does not have any effect if use_libfuzzer or use_afl are -# not passed as arguments to gn. -not_fuzzed_remove_configs = [] -not_fuzzed_remove_nonasan_configs = [] - -if (use_fuzzing_engine) { - # Removing coverage should always just work. - not_fuzzed_remove_configs += [ "//build/config/coverage:default_coverage" ] - not_fuzzed_remove_nonasan_configs += - [ "//build/config/coverage:default_coverage" ] - - if (!is_msan) { - # Allow sanitizer instrumentation to be removed if we are not using MSan - # since binaries cannot be partially instrumented with MSan. - not_fuzzed_remove_configs += - [ "//build/config/sanitizers:default_sanitizer_flags" ] - - # Certain parts of binaries must be instrumented with ASan if the rest of - # the binary is. For these, only remove non-ASan sanitizer instrumentation. - if (!is_asan) { - not_fuzzed_remove_nonasan_configs += - [ "//build/config/sanitizers:default_sanitizer_flags" ] - - assert(not_fuzzed_remove_nonasan_configs == not_fuzzed_remove_configs) - } - } -}
diff --git a/build/config/sysroot.gni b/build/config/sysroot.gni deleted file mode 100644 index d5daf2d..0000000 --- a/build/config/sysroot.gni +++ /dev/null
@@ -1,103 +0,0 @@ -# Copyright (c) 2013 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. - -# This header file defines the "sysroot" variable which is the absolute path -# of the sysroot. If no sysroot applies, the variable will be an empty string. - -import("//build/config/chrome_build.gni") - -declare_args() { - # The absolute path of the sysroot that is applied when compiling using - # the target toolchain. - target_sysroot = "" - - # The absolute path to directory containing linux sysroot images - target_sysroot_dir = "//build/linux" - - use_sysroot = current_cpu == "x86" || current_cpu == "x64" || - current_cpu == "arm" || current_cpu == "arm64" || - current_cpu == "mipsel" || current_cpu == "mips64el" -} - -if (current_os == target_os && current_cpu == target_cpu && - target_sysroot != "") { - sysroot = target_sysroot -} else if (is_android) { - import("//build/config/android/config.gni") - - # Android uses unified headers, and thus a single compile time sysroot - sysroot = "$android_ndk_root/sysroot" -} else if (is_linux && use_sysroot) { - # By default build against a sysroot image downloaded from Cloud Storage - # during gclient runhooks. - if (current_cpu == "x64") { - sysroot = "$target_sysroot_dir/debian_sid_amd64-sysroot" - } else if (current_cpu == "x86") { - sysroot = "$target_sysroot_dir/debian_sid_i386-sysroot" - } else if (current_cpu == "mipsel") { - sysroot = "$target_sysroot_dir/debian_sid_mips-sysroot" - } else if (current_cpu == "mips64el") { - sysroot = "$target_sysroot_dir/debian_sid_mips64el-sysroot" - } else if (current_cpu == "arm") { - sysroot = "$target_sysroot_dir/debian_sid_arm-sysroot" - } else if (current_cpu == "arm64") { - sysroot = "$target_sysroot_dir/debian_sid_arm64-sysroot" - } else { - assert(false, "No linux sysroot for cpu: $target_cpu") - } - - if (sysroot != "") { - _script_arch = current_cpu - if (_script_arch == "x86") { - _script_arch = "i386" - } else if (_script_arch == "x64") { - _script_arch = "amd64" - } - assert( - exec_script("//build/dir_exists.py", - [ rebase_path(sysroot) ], - "string") == "True", - "Missing sysroot ($sysroot). To fix, run: build/linux/sysroot_scripts/install-sysroot.py --arch=$_script_arch") - } -} else if (is_mac) { - import("//build/config/mac/mac_sdk.gni") - sysroot = mac_sdk_path -} else if (is_ios) { - import("//build/config/ios/ios_sdk.gni") - sysroot = ios_sdk_path -} else if (is_fuchsia) { - import("//build/config/fuchsia/config.gni") - if (current_cpu == "arm64") { - sysroot = fuchsia_sdk + "/sysroot/aarch64-fuchsia" - } else if (current_cpu == "x64") { - sysroot = fuchsia_sdk + "/sysroot/x86_64-fuchsia" - } else { - sysroot = "" - } -} else { - sysroot = "" -} - -if (is_android) { - # Android uses unified headers in NDK r16 and later, meaning that the - # compile time sysroot and link time sysroot are different - link_sysroot = sysroot - if (current_cpu == "arm") { - link_sysroot = "$android_ndk_root/$arm_android_sysroot_subdir" - } else if (current_cpu == "arm64") { - link_sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir" - } else if (current_cpu == "x86") { - link_sysroot = "$android_ndk_root/$x86_android_sysroot_subdir" - } else if (current_cpu == "x64") { - link_sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir" - } else if (current_cpu == "mipsel") { - link_sysroot = "$android_ndk_root/$mips_android_sysroot_subdir" - } else if (current_cpu == "mips64el") { - link_sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir" - } else { - assert(false, "No android link sysroot for cpu: $target_cpu") - } -} else { - link_sysroot = sysroot -}
diff --git a/build/config/ui.gni b/build/config/ui.gni deleted file mode 100644 index 547b42f..0000000 --- a/build/config/ui.gni +++ /dev/null
@@ -1,60 +0,0 @@ -# Copyright 2014 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. - -# ============================================= -# PLEASE DO NOT ADD MORE FLAGS TO THIS FILE -# ============================================= -# -# These flags are effectively global. Your feature flag should go near the -# code it controls. Most of these items are here now because they control -# legacy global #defines passed to the compiler (now replaced with generated -# buildflag headers -- see //build/buildflag_header.gni). -# -# These flags are ui-related so should eventually be moved to various places -# in //ui/*. -# -# There is more advice on where to put build flags in the "Build flag" section -# of //build/config/BUILDCONFIG.gn. - -import("//build/config/chromecast_build.gni") - -declare_args() { - # Indicates if Ozone is enabled. Ozone is a low-level library layer for Linux - # that does not require X11. Enabling this feature disables use of glib, x11, - # Pango, and Cairo. - use_ozone = is_chromeos || (is_chromecast && !is_android) || is_fuchsia - - # Indicates if Aura is enabled. Aura is a low-level windowing library, sort - # of a replacement for GDI or GTK. - use_aura = is_win || is_linux || is_fuchsia - - # Whether we should use glib, a low level C utility library. - use_glib = is_linux -} - -declare_args() { - # True means the UI is built using the "views" framework. - toolkit_views = (is_mac || is_win || is_chromeos || use_aura) && - !is_chromecast && !is_fuchsia -} - -# Additional dependent variables ----------------------------------------------- -# -# These variables depend on other variables and can't be set externally. - -# Indicates if the UI toolkit depends on X11. -use_x11 = is_linux && !use_ozone - -# Turn off glib if Ozone is enabled. -if (use_ozone) { - use_glib = false -} - -# Whether to use atk, the Accessibility ToolKit library -use_atk = is_desktop_linux && use_x11 -# ============================================= -# PLEASE DO NOT ADD MORE FLAGS TO THIS FILE -# ============================================= -# -# See comment at the top.
diff --git a/build/config/v8_target_cpu.gni b/build/config/v8_target_cpu.gni deleted file mode 100644 index 305981f..0000000 --- a/build/config/v8_target_cpu.gni +++ /dev/null
@@ -1,61 +0,0 @@ -# Copyright 2016 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/config/sanitizers/sanitizers.gni") - -declare_args() { - # This arg is used when we want to tell the JIT-generating v8 code - # that we want to have it generate for an architecture that is different - # than the architecture that v8 will actually run on; we then run the - # code under an emulator. For example, we might run v8 on x86, but - # generate arm code and run that under emulation. - # - # This arg is defined here rather than in the v8 project because we want - # some of the common architecture-specific args (like arm_float_abi or - # mips_arch_variant) to be set to their defaults either if the current_cpu - # applies *or* if the v8_current_cpu applies. - # - # As described below, you can also specify the v8_target_cpu to use - # indirectly by specifying a `custom_toolchain` that contains v8_$cpu in the - # name after the normal toolchain. - # - # For example, `gn gen --args="custom_toolchain=...:clang_x64_v8_arm64"` - # is equivalent to setting --args=`v8_target_cpu="arm64"`. Setting - # `custom_toolchain` is more verbose but makes the toolchain that is - # (effectively) being used explicit. - # - # v8_target_cpu can only be used to target one architecture in a build, - # so if you wish to build multiple copies of v8 that are targeting - # different architectures, you will need to do something more - # complicated involving multiple toolchains along the lines of - # custom_toolchain, above. - v8_target_cpu = "" -} - -if (v8_target_cpu == "") { - if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") { - v8_target_cpu = "arm64" - } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") { - v8_target_cpu = "arm" - } else if (current_toolchain == - "//build/toolchain/linux:clang_x86_v8_mips64el") { - v8_target_cpu = "mips64el" - } else if (current_toolchain == - "//build/toolchain/linux:clang_x86_v8_mipsel") { - v8_target_cpu = "mipsel" - } else if (is_msan) { - # If we're running under a sanitizer, if we configure v8 to generate - # code that will be run under a simulator, then the generated code - # also gets the benefits of the sanitizer. - v8_target_cpu = "arm64" - } else { - v8_target_cpu = target_cpu - } -} - -declare_args() { - # This argument is declared here so that it can be overridden in toolchains. - # It should never be explicitly set by the user. - v8_current_cpu = v8_target_cpu -}
diff --git a/build/config/win/BUILD.gn b/build/config/win/BUILD.gn deleted file mode 100644 index ce8128b..0000000 --- a/build/config/win/BUILD.gn +++ /dev/null
@@ -1,538 +0,0 @@ -# Copyright (c) 2013 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/config/chrome_build.gni") -import("//build/config/c++/c++.gni") -import("//build/config/clang/clang.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/config/win/visual_studio_version.gni") -import("//build/toolchain/goma.gni") -import("//build/toolchain/toolchain.gni") - -assert(is_win) - -declare_args() { - # Set this to true to enable static analysis through Visual Studio's - # /analyze. This dramatically slows compiles and reports thousands of - # warnings, so normally this is done on a build machine and only the new - # warnings are examined. - use_vs_code_analysis = false - - # Turn this on to have the linker output extra timing information. - win_linker_timing = false - - # possible values for target_winuwp_version: - # "10" - Windows UWP 10 - # "8.1" - Windows RT 8.1 - # "8.0" - Windows RT 8.0 - target_winuwp_version = "10" - - # possible values: - # "app" - Windows Store Applications - # "phone" - Windows Phone Applications - # "system" - Windows Drivers and Tools - # "server" - Windows Server Applications - # "desktop" - Windows Desktop Applications - target_winuwp_family = "app" -} - -# This is included by reference in the //build/config/compiler config that -# is applied to all targets. It is here to separate out the logic that is -# Windows-only. -config("compiler") { - if (current_cpu == "x86") { - asmflags = [ - # When /safeseh is specified, the linker will only produce an image if it - # can also produce a table of the image's safe exception handlers. This - # table specifies for the operating system which exception handlers are - # valid for the image. Note that /SAFESEH isn't accepted on the command - # line, only /safeseh. This is only accepted by ml.exe, not ml64.exe. - "/safeseh", - ] - } - - cflags = [ - "/Gy", # Enable function-level linking. - "/FS", # Preserve previous PDB behavior. - "/bigobj", # Some of our files are bigger than the regular limits. - ] - - # Force C/C++ mode for the given GN detected file type. This is necessary - # for precompiled headers where the same source file is compiled in both - # modes. - cflags_c = [ "/TC" ] - cflags_cc = [ "/TP" ] - - cflags += [ - # Tell the compiler to crash on failures. This is undocumented - # and unsupported but very handy. - "/d2FastFail", - - # Work around crbug.com/526851, bug in VS 2015 RTM compiler. - "/Zc:sizedDealloc-", - ] - - if (is_clang) { - cflags += [ "-fmsc-version=1911" ] - - if (current_cpu == "x86") { - cflags += [ "-m32" ] - } else { - cflags += [ "-m64" ] - } - - if (exec_script("//build/win/use_ansi_codes.py", [], "trim string") == - "True") { - cflags += [ - # cmd.exe doesn't understand ANSI escape codes by default, - # so only enable them if something emulating them is around. - "-fansi-escape-codes", - ] - } - - # Clang runtime libraries, such as the sanitizer runtimes, live here. - lib_dirs = [ "$clang_base_path/lib/clang/$clang_version/lib/windows" ] - } - - if (use_lld && !use_thin_lto && (is_clang || !use_goma)) { - # /Brepro lets the compiler not write the mtime field in the .obj output. - # link.exe /incremental relies on this field to work correctly, but lld - # never looks at this timestamp, so it's safe to pass this flag with - # lld and get more deterministic compiler output in return. - # In LTO builds, the compiler doesn't write .obj files containing mtimes, - # so /Brepro is ignored there. - cflags += [ "/Brepro" ] - } - - if (!is_debug && !is_component_build) { - # Enable standard linker optimizations like GC (/OPT:REF) and ICF in static - # release builds. These are implied by /PROFILE below, but /PROFILE is - # incompatible with /debug:fastlink and LLD ignores it as of this writing. - # Release builds always want these optimizations, so enable them explicitly. - ldflags = [ - "/OPT:REF", - "/OPT:ICF", - "/INCREMENTAL:NO", - "/FIXED:NO", - ] - - if (use_lld) { - # String tail merging leads to smaller binaries, but they don't compress - # as well, leading to increased mini_installer size (crbug.com/838449). - ldflags += [ "/OPT:NOLLDTAILMERGE" ] - } - - # TODO(siggi): Is this of any use anymore? - # /PROFILE ensures that the PDB file contains FIXUP information (growing the - # PDB file by about 5%) but does not otherwise alter the output binary. It - # is enabled opportunistically for builds where it is not prohibited (not - # supported when incrementally linking, or using /debug:fastlink). - if (!is_win_fastlink) { - ldflags += [ "/PROFILE" ] - } - } - - # arflags apply only to static_libraries. The normal linker configs are only - # set for executable and shared library targets so arflags must be set - # elsewhere. Since this is relatively contained, we just apply them in this - # more general config and they will only have an effect on static libraries. - arflags = [ - # "No public symbols found; archive member will be inaccessible." This - # means that one or more object files in the library can never be - # pulled in to targets that link to this library. It's just a warning that - # the source file is a no-op. - "/ignore:4221", - ] -} - -config("vs_code_analysis") { - if (use_vs_code_analysis && !is_clang) { - # When use_vs_code_analysis is specified add the /analyze switch to enable - # static analysis. Specifying /analyze:WX- says that /analyze warnings - # should not be treated as errors. - cflags = [ "/analyze:WX-" ] - - # Also, disable various noisy warnings that have low value. - cflags += [ - "/wd6011", # Dereferencing NULL pointer - - # C6285 is ~16% of raw warnings and has low value - "/wd6285", # non-zero constant || non-zero constant - "/wd6308", # realloc might return null pointer - - # Possible infinite loop: use of the constant - # EXCEPTION_CONTINUE_EXECUTION in the exception-filter - "/wd6312", - - "/wd6322", # Empty _except block - "/wd6330", # 'char' used instead of 'unsigned char' for istype() call - - # C6334 is ~80% of raw warnings and has low value - "/wd6334", # sizeof applied to an expression with an operator - "/wd6326", # Potential comparison of constant with constant - "/wd6340", # Sign mismatch in function parameter - "/wd28159", # Consider using 'GetTickCount64' - "/wd28196", # The precondition is not satisfied - "/wd28204", # Inconsistent SAL annotations - "/wd28251", # Inconsistent SAL annotations - "/wd28252", # Inconsistent SAL annotations - "/wd28253", # Inconsistent SAL annotations - "/wd28278", # Function appears with no prototype in scope - "/wd28285", # syntax error in SAL annotation (in algorithm) - "/wd28301", # Inconsistent SAL annotations - "/wd28182", # Dereferencing NULL pointer - ] - } -} - -# This is included by reference in the //build/config/compiler:runtime_library -# config that is applied to all targets. It is here to separate out the logic -# that is Windows-only. Please see that target for advice on what should go in -# :runtime_library vs. :compiler. -config("runtime_library") { - cflags = [] - cflags_cc = [] - - # Defines that set up the CRT. - defines = [ - "__STD_C", - "_CRT_RAND_S", - "_CRT_SECURE_NO_DEPRECATE", - "_SCL_SECURE_NO_DEPRECATE", - ] - - if (is_clang) { - # Work around Fall Creators Update SDK bug - crbug.com/773476 has details. - # https://developercommunity.visualstudio.com/content/problem/131391/154-fails-to-define-deprecatedenumerator-2.html - defines += [ "DEPRECATEDENUMERATOR(x)=[[deprecated(x)]]" ] - } - - # Defines that set up the Windows SDK. - defines += [ - "_ATL_NO_OPENGL", - "_WINDOWS", - "CERT_CHAIN_PARA_HAS_EXTRA_FIELDS", - "PSAPI_VERSION=1", - "WIN32", - "_SECURE_ATL", - ] - - if (!use_vs_code_analysis) { - # This is required for ATL to use XP-safe versions of its functions. - # However it is prohibited when using /analyze - defines += [ "_USING_V110_SDK71_" ] - } - - if (use_custom_libcxx) { - cflags_cc += - [ "-I" + rebase_path("$libcxx_prefix/include", root_build_dir) ] - if (libcpp_is_static) { - defines += [ "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS" ] - } - - # Prevent libc++ from embedding linker flags to try to automatically link - # against its runtime library. This is unnecessary with our build system, - # and can also result in build failures if libc++'s name for a library does - # not match ours. - defines += [ "_LIBCPP_NO_AUTO_LINK" ] - } - - if (current_os == "winuwp") { - # When targeting Windows Runtime, certain compiler/linker flags are - # necessary. - defines += [ - "WINUWP", - "__WRL_NO_DEFAULT_LIB__", - ] - if (target_winuwp_family == "app") { - defines += [ "WINAPI_FAMILY=WINAPI_FAMILY_PC_APP" ] - } else if (target_winuwp_family == "phone") { - defines += [ "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" ] - } else if (target_winuwp_family == "system") { - defines += [ "WINAPI_FAMILY=WINAPI_FAMILY_SYSTEM" ] - } else if (target_winuwp_family == "server") { - defines += [ "WINAPI_FAMILY=WINAPI_FAMILY_SERVER" ] - } else { - defines += [ "WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP" ] - } - cflags_cc += [ - "/ZW", - "/EHsc", - ] - - # This warning is given because the linker cannot tell the difference - # between consuming WinRT APIs versus authoring WinRT within static - # libraries as such this warning is always given by the linker. Since - # consuming WinRT APIs within a library is legitimate but authoring - # WinRT APis is not allowed, this warning is disabled to ignore the - # legitimate consumption of WinRT APIs within static library builds. - arflags = [ "/IGNORE:4264" ] - - if (target_winuwp_version == "10") { - defines += [ "WIN10=_WIN32_WINNT_WIN10" ] - } else if (target_winuwp_version == "8.1") { - defines += [ "WIN8_1=_WIN32_WINNT_WINBLUE" ] - } else if (target_winuwp_version == "8.0") { - defines += [ "WIN8=_WIN32_WINNT_WIN8" ] - } - } else { - # When not targeting Windows Runtime, make sure the WINAPI family is set - # to desktop. - defines += [ "WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP" ] - } -} - -# Sets the default Windows build version. This is separated because some -# targets need to manually override it for their compiles. -config("winver") { - defines = [ - "NTDDI_VERSION=0x0A000002", - "_WIN32_WINNT=0x0A00", - "WINVER=0x0A00", - ] -} - -# Linker flags for Windows SDK setup, this is applied only to EXEs and DLLs. -config("sdk_link") { - assert(current_cpu == "x64" || current_cpu == "x86" || current_cpu == "arm" || - current_cpu == "arm64", - "Only supports x64, x86, arm and arm64 CPUs") - if (current_cpu == "x64") { - ldflags = [ "/MACHINE:X64" ] - } else if (current_cpu == "x86") { - ldflags = [ - "/MACHINE:X86", - "/SAFESEH", # Not compatible with x64 so use only for x86. - "/largeaddressaware", - ] - } else if (current_cpu == "arm") { - ldflags = [ "/MACHINE:ARM" ] - } else if (current_cpu == "arm64") { - ldflags = [ "/MACHINE:ARM64" ] - } - - vcvars_toolchain_data = exec_script("../../toolchain/win/setup_toolchain.py", - [ - visual_studio_path, - windows_sdk_path, - visual_studio_runtime_dirs, - current_os, - current_cpu, - "none", - ], - "scope") - - vc_lib_path = vcvars_toolchain_data.vc_lib_path - if (defined(vcvars_toolchain_data.vc_lib_atlmfc_path)) { - vc_lib_atlmfc_path = vcvars_toolchain_data.vc_lib_atlmfc_path - } - vc_lib_um_path = vcvars_toolchain_data.vc_lib_um_path - - lib_dirs = [ - "$vc_lib_um_path", - "$vc_lib_path", - ] - if (defined(vc_lib_atlmfc_path)) { - lib_dirs += [ "$vc_lib_atlmfc_path" ] - } -} - -# This default linker setup is provided separately from the SDK setup so -# targets who want different library configurations can remove this and specify -# their own. -config("common_linker_setup") { - ldflags = [ - "/fastfail", - "/FIXED:NO", - "/ignore:4199", - "/ignore:4221", - "/NXCOMPAT", - "/DYNAMICBASE", - ] - - if (win_linker_timing) { - ldflags += [ - "/time", - "/verbose:incr", - ] - } -} - -config("cfi_linker") { - # Control Flow Guard (CFG) - # https://msdn.microsoft.com/en-us/library/windows/desktop/mt637065.aspx - # /DYNAMICBASE (ASLR) is turned off in debug builds, therefore CFG can’t be - # turned on either. - # CFG seems to lead to random corruption with incremental linking so turn off - # CFG in component builds. https://crbug.com/812421 - if (!is_debug && !is_component_build) { - # Turn on CFG in msvc linker, regardless of compiler used. Turn off CFG for - # longjmp (new in VS 2017) because it relies on compiler support which we do - # not have enabled. - ldflags = [ "/guard:cf,nolongjmp" ] - } -} - -# CRT -------------------------------------------------------------------------- - -# Configures how the runtime library (CRT) is going to be used. -# See https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx for a reference of -# what each value does. -config("default_crt") { - if (is_component_build) { - # Component mode: dynamic CRT. Since the library is shared, it requires - # exceptions or will give errors about things not matching, so keep - # exceptions on. - configs = [ ":dynamic_crt" ] - } else { - if (current_os == "winuwp") { - # https://blogs.msdn.microsoft.com/vcblog/2014/06/10/the-great-c-runtime-crt-refactoring/ - # contains a details explanation of what is happening with the Windows - # CRT in Visual Studio releases related to Windows store applications. - configs = [ ":dynamic_crt" ] - } else { - # Desktop Windows: static CRT. - configs = [ ":static_crt" ] - } - } -} - -# Use this to force the debug CRT for when building perf-critical build tools -# that need to be fully optimized even in debug builds, for those times when the -# debug CRT is part of the bottleneck. This also avoids *implicitly* defining -# _DEBUG. -config("release_crt") { - if (is_component_build) { - cflags = [ "/MD" ] - } else { - cflags = [ "/MT" ] - } -} - -config("dynamic_crt") { - if (is_debug) { - # This pulls in the DLL debug CRT and defines _DEBUG - cflags = [ "/MDd" ] - } else { - cflags = [ "/MD" ] - } -} - -config("static_crt") { - if (is_debug) { - # This pulls in the static debug CRT and defines _DEBUG - cflags = [ "/MTd" ] - } else { - cflags = [ "/MT" ] - } -} - -# Subsystem -------------------------------------------------------------------- - -# This is appended to the subsystem to specify a minimum version. -if (current_cpu == "x64") { - # The number after the comma is the minimum required OS version. - # 5.02 = Windows Server 2003. - subsystem_version_suffix = ",5.02" -} else { - # 5.01 = Windows XP. - subsystem_version_suffix = ",5.01" -} - -config("console") { - ldflags = [ "/SUBSYSTEM:CONSOLE$subsystem_version_suffix" ] -} -config("windowed") { - ldflags = [ "/SUBSYSTEM:WINDOWS$subsystem_version_suffix" ] -} - -# Incremental linking ---------------------------------------------------------- - -incremental_linking_on_switch = [ "/INCREMENTAL" ] -incremental_linking_off_switch = [ "/INCREMENTAL:NO" ] -if (use_lld) { - incremental_linking_on_switch += [ "/OPT:NOREF" ] -} - -# Enable incremental linking for debug builds and all component builds - any -# builds where performance is not job one. -if (is_debug || is_component_build) { - default_incremental_linking_switch = incremental_linking_on_switch -} else { - default_incremental_linking_switch = incremental_linking_off_switch -} - -# Applies incremental linking or not depending on the current configuration. -config("default_incremental_linking") { - ldflags = default_incremental_linking_switch -} - -# Explicitly on or off incremental linking -config("incremental_linking") { - ldflags = incremental_linking_on_switch -} -config("no_incremental_linking") { - ldflags = incremental_linking_off_switch -} - -# Some large modules can't handle incremental linking in some situations. This -# config should be applied to large modules to turn off incremental linking -# when it won't work. -config("default_large_module_incremental_linking") { - if (symbol_level == 0 || (current_cpu == "x86" && is_component_build)) { - # In these configurations, ilk file sizes stay low enough that we can - # link incrementally. - ldflags = default_incremental_linking_switch - } else { - ldflags = incremental_linking_off_switch - } -} - -# Character set ---------------------------------------------------------------- - -# Not including this config means "ansi" (8-bit system codepage). -config("unicode") { - defines = [ - "_UNICODE", - "UNICODE", - ] -} - -# Lean and mean ---------------------------------------------------------------- - -# Some third party code might not compile with WIN32_LEAN_AND_MEAN so we have -# to have a separate config for it. Remove this config from your target to -# get the "bloaty and accommodating" version of windows.h. -config("lean_and_mean") { - defines = [ "WIN32_LEAN_AND_MEAN" ] -} - -# Nominmax -------------------------------------------------------------------- - -# Some third party code defines NOMINMAX before including windows.h, which -# then causes warnings when it's been previously defined on the command line. -# For such targets, this config can be removed. - -config("nominmax") { - defines = [ "NOMINMAX" ] -} - -# Generating order files ------------------------------------------------------- - -config("default_cygprofile_instrumentation") { - if (generate_order_files) { - assert(is_clang, "cygprofile instrumentation only works with clang") - assert(is_official_build, "order files should be made w/ official builds") - assert(!is_chrome_branded, "order files could leak internal symbol names") - configs = [ ":cygprofile_instrumentation" ] - } -} - -config("cygprofile_instrumentation") { - cflags = [ - "-Xclang", - "-finstrument-functions-after-inlining", - ] -}
diff --git a/build/config/win/console_app.gni b/build/config/win/console_app.gni deleted file mode 100644 index cac2ef5..0000000 --- a/build/config/win/console_app.gni +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2016 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/config/sanitizers/sanitizers.gni") - -declare_args() { - # If true, builds as a console app (rather than a windowed app), which allows - # logging to be printed to the user. This will cause a terminal window to pop - # up when the executable is not run from the command line, so should only be - # used for development. Only has an effect on Windows builds. - win_console_app = false -} - -if (is_win && is_asan) { - # AddressSanitizer build should be a console app since it writes to stderr. - win_console_app = true -}
diff --git a/build/config/win/manifest.gni b/build/config/win/manifest.gni deleted file mode 100644 index b18a4a1..0000000 --- a/build/config/win/manifest.gni +++ /dev/null
@@ -1,112 +0,0 @@ -# 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. - -# HOW MANIFESTS WORK IN THE GN BUILD -# -# Use the windows_manifest template to declare a manifest generation step. -# This will combine all listed .manifest files. To link this manifest, just -# depend on the manifest target from your executable or shared library. -# -# This will define an empty placeholder target on non-Windows platforms so -# the manifest declarations and dependencies do not need to be inside of OS -# conditionals. -# -# A binary can depend on only one manifest target, but the manifest target -# can depend on many individual .manifest files which will be merged. As a -# result, only executables and shared libraries should depend on manifest -# targets. If you want to add a manifest to a component, put the dependency -# behind a "if (is_component_build)" conditional. -# -# Generally you will just want the defaults for the Chrome build. In this case -# the binary should just depend on one of the targets in //build/win/. There -# are also individual manifest files in that directory you can reference via -# the *_manifest variables defined below to pick and choose only some defaults. -# You might combine these with a custom manifest file to get specific behavior. - -# Reference this manifest as a source from windows_manifest targets to get -# the default Chrome OS compatibility list. -default_compatibility_manifest = "//build/win/compatibility.manifest" - -# Reference this manifest as a source from windows_manifest targets to get -# the default Chrome common constrols compatibility. -common_controls_manifest = "//build/win/common_controls.manifest" - -# Reference this manifest to request that Windows not perform any elevation -# when running your program. Otherwise, it might do some autodetection and -# request elevated privileges from the user. This is normally what you want. -as_invoker_manifest = "//build/win/as_invoker.manifest" - -# An alternative to as_invoker_manifest when you want the application to always -# elevate. -require_administrator_manifest = "//build/win/require_administrator.manifest" - -# Construct a target to combine the given manifest files into a .rc file. -# -# Variables for the windows_manifest template: -# -# sources: (required) -# List of source .manifest files to add. -# -# deps: (optional) -# visibility: (optional) -# Normal meaning. -# -# Example: -# -# windows_manifest("doom_melon_manifest") { -# sources = [ -# "doom_melon.manifest", # Custom values in here. -# default_compatibility_manifest, # Want the normal OS compat list. -# ] -# } -# -# executable("doom_melon") { -# deps = [ ":doom_melon_manifest" ] -# ... -# } - -if (is_win) { - template("windows_manifest") { - config_name = "${target_name}__config" - source_set_name = target_name - - config(config_name) { - visibility = [ ":$source_set_name" ] - assert(defined(invoker.sources), - "\"sources\" must be defined for a windows_manifest target") - manifests = [] - foreach(i, rebase_path(invoker.sources, root_build_dir)) { - manifests += [ "/manifestinput:" + i ] - } - ldflags = [ - "/manifest:embed", - - # We handle UAC by adding explicit .manifest files instead. - "/manifestuac:no", - ] + manifests - } - - # This source set only exists to add a dep on the invoker's deps and to - # add a public_config that sets ldflags on dependents. - source_set(source_set_name) { - forward_variables_from(invoker, [ "visibility" ]) - public_configs = [ ":$config_name" ] - - # Apply any dependencies from the invoker to this target, since those - # dependencies may have created the input manifest files. - forward_variables_from(invoker, [ "deps" ]) - } - } -} else { - # Make a no-op group on non-Windows platforms so windows_manifest - # instantiations don't need to be inside windows blocks. - template("windows_manifest") { - group(target_name) { - # Prevent unused variable warnings on non-Windows platforms. - assert(invoker.sources != "") - assert(!defined(invoker.deps) || invoker.deps != "") - assert(!defined(invoker.visibility) || invoker.visibility != "") - } - } -}
diff --git a/build/config/win/visual_studio_version.gni b/build/config/win/visual_studio_version.gni deleted file mode 100644 index 982fbe8..0000000 --- a/build/config/win/visual_studio_version.gni +++ /dev/null
@@ -1,39 +0,0 @@ -# Copyright 2014 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. - -declare_args() { - # Path to Visual Studio. If empty, the default is used which is to use the - # automatic toolchain in depot_tools. If set, you must also set the - # visual_studio_version and wdk_path. - visual_studio_path = "" - - # Version of Visual Studio pointed to by the visual_studio_path. - # Currently always "2015". - visual_studio_version = "" - - # Directory of the Windows driver kit. If visual_studio_path is empty, this - # will be auto-filled. - wdk_path = "" - - # Full path to the Windows SDK, not including a backslash at the end. - # This value is the default location, override if you have a different - # installation location. - windows_sdk_path = "C:\Program Files (x86)\Windows Kits\10" -} - -if (visual_studio_path == "") { - toolchain_data = - exec_script("../../vs_toolchain.py", [ "get_toolchain_dir" ], "scope") - visual_studio_path = toolchain_data.vs_path - windows_sdk_path = toolchain_data.sdk_path - visual_studio_version = toolchain_data.vs_version - wdk_path = toolchain_data.wdk_dir - visual_studio_runtime_dirs = toolchain_data.runtime_dirs -} else { - assert(visual_studio_version != "", - "You must set the visual_studio_version if you set the path") - assert(wdk_path != "", - "You must set the wdk_path if you set the visual studio path") - visual_studio_runtime_dirs = [] -}
diff --git a/build/config/zip.gni b/build/config/zip.gni deleted file mode 100644 index 8265e1d..0000000 --- a/build/config/zip.gni +++ /dev/null
@@ -1,55 +0,0 @@ -# Copyright 2014 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. - -# Creates a zip archive of the inputs. -# -# inputs (required) -# List of input files relative to the current directory. -# -# output (required) -# File name to write. -# -# base_dir (optional) -# If provided, the archive paths will be relative to this directory. -# -# deps, public_deps, data_deps, testonly, visibility (optional) -# Normal meaning. -template("zip") { - action(target_name) { - script = "//build/android/gn/zip.py" - depfile = "$target_gen_dir/$target_name.d" - inputs = invoker.inputs - outputs = [ - invoker.output, - ] - - assert(defined(invoker.inputs)) - rebase_inputs = rebase_path(invoker.inputs, root_build_dir) - - assert(defined(invoker.output)) - rebase_output = rebase_path(invoker.output, root_build_dir) - - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--inputs=$rebase_inputs", - "--output=$rebase_output", - ] - if (defined(invoker.base_dir)) { - args += [ - "--base-dir", - rebase_path(invoker.base_dir, root_build_dir), - ] - } - - forward_variables_from(invoker, - [ - "testonly", - "deps", - "public_deps", - "data_deps", - "visibility", - ]) - } -}
diff --git a/build/copy_test_data_ios.py b/build/copy_test_data_ios.py deleted file mode 100755 index 6f0302f..0000000 --- a/build/copy_test_data_ios.py +++ /dev/null
@@ -1,105 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -"""Copies test data files or directories into a given output directory.""" - -import optparse -import os -import shutil -import sys - -class WrongNumberOfArgumentsException(Exception): - pass - -def EscapePath(path): - """Returns a path with spaces escaped.""" - return path.replace(" ", "\\ ") - -def ListFilesForPath(path): - """Returns a list of all the files under a given path.""" - output = [] - # Ignore revision control metadata directories. - if (os.path.basename(path).startswith('.git') or - os.path.basename(path).startswith('.svn')): - return output - - # Files get returned without modification. - if not os.path.isdir(path): - output.append(path) - return output - - # Directories get recursively expanded. - contents = os.listdir(path) - for item in contents: - full_path = os.path.join(path, item) - output.extend(ListFilesForPath(full_path)) - return output - -def CalcInputs(inputs): - """Computes the full list of input files for a set of command-line arguments. - """ - # |inputs| is a list of paths, which may be directories. - output = [] - for input in inputs: - output.extend(ListFilesForPath(input)) - return output - -def CopyFiles(relative_filenames, output_basedir): - """Copies files to the given output directory.""" - for file in relative_filenames: - relative_dirname = os.path.dirname(file) - output_dir = os.path.join(output_basedir, relative_dirname) - output_filename = os.path.join(output_basedir, file) - - # In cases where a directory has turned into a file or vice versa, delete it - # before copying it below. - if os.path.exists(output_dir) and not os.path.isdir(output_dir): - os.remove(output_dir) - if os.path.exists(output_filename) and os.path.isdir(output_filename): - shutil.rmtree(output_filename) - - if not os.path.exists(output_dir): - os.makedirs(output_dir) - shutil.copy(file, output_filename) - -def DoMain(argv): - parser = optparse.OptionParser() - usage = 'Usage: %prog -o <output_dir> [--inputs] [--outputs] <input_files>' - parser.set_usage(usage) - parser.add_option('-o', dest='output_dir') - parser.add_option('--inputs', action='store_true', dest='list_inputs') - parser.add_option('--outputs', action='store_true', dest='list_outputs') - options, arglist = parser.parse_args(argv) - - if len(arglist) == 0: - raise WrongNumberOfArgumentsException('<input_files> required.') - - files_to_copy = CalcInputs(arglist) - escaped_files = [EscapePath(x) for x in CalcInputs(arglist)] - if options.list_inputs: - return '\n'.join(escaped_files) - - if not options.output_dir: - raise WrongNumberOfArgumentsException('-o required.') - - if options.list_outputs: - outputs = [os.path.join(options.output_dir, x) for x in escaped_files] - return '\n'.join(outputs) - - CopyFiles(files_to_copy, options.output_dir) - return - -def main(argv): - try: - result = DoMain(argv[1:]) - except WrongNumberOfArgumentsException, e: - print >>sys.stderr, e - return 1 - if result: - print result - return 0 - -if __name__ == '__main__': - sys.exit(main(sys.argv))
diff --git a/build/cp.py b/build/cp.py deleted file mode 100755 index 0f32536..0000000 --- a/build/cp.py +++ /dev/null
@@ -1,23 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -"""Copy a file. - -This module works much like the cp posix command - it takes 2 arguments: -(src, dst) and copies the file with path |src| to |dst|. -""" - -import os -import shutil -import sys - - -def Main(src, dst): - # Use copy instead of copyfile to ensure the executable bit is copied. - return shutil.copy(src, os.path.normpath(dst)) - - -if __name__ == '__main__': - sys.exit(Main(sys.argv[1], sys.argv[2]))
diff --git a/build/detect_host_arch.py b/build/detect_host_arch.py deleted file mode 100755 index 0e491bc..0000000 --- a/build/detect_host_arch.py +++ /dev/null
@@ -1,51 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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. - -"""Outputs host CPU architecture in format recognized by gyp.""" - -import platform -import re -import sys - - -def HostArch(): - """Returns the host architecture with a predictable string.""" - host_arch = platform.machine() - - # Convert machine type to format recognized by gyp. - if re.match(r'i.86', host_arch) or host_arch == 'i86pc': - host_arch = 'ia32' - elif host_arch in ['x86_64', 'amd64']: - host_arch = 'x64' - elif host_arch.startswith('arm'): - host_arch = 'arm' - elif host_arch.startswith('aarch64'): - host_arch = 'arm64' - elif host_arch.startswith('mips'): - host_arch = 'mips' - elif host_arch.startswith('ppc'): - host_arch = 'ppc' - elif host_arch.startswith('s390'): - host_arch = 's390' - - - # platform.machine is based on running kernel. It's possible to use 64-bit - # kernel with 32-bit userland, e.g. to give linker slightly more memory. - # Distinguish between different userland bitness by querying - # the python binary. - if host_arch == 'x64' and platform.architecture()[0] == '32bit': - host_arch = 'ia32' - if host_arch == 'arm64' and platform.architecture()[0] == '32bit': - host_arch = 'arm' - - return host_arch - -def DoMain(_): - """Hook to be called from gyp without starting a separate python - interpreter.""" - return HostArch() - -if __name__ == '__main__': - print DoMain([])
diff --git a/build/dir_exists.py b/build/dir_exists.py deleted file mode 100755 index 70d367e..0000000 --- a/build/dir_exists.py +++ /dev/null
@@ -1,23 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2011 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. -"""Writes True if the argument is a directory.""" - -import os.path -import sys - -def main(): - sys.stdout.write(_is_dir(sys.argv[1])) - return 0 - -def _is_dir(dir_name): - return str(os.path.isdir(dir_name)) - -def DoMain(args): - """Hook to be called from gyp without starting a separate python - interpreter.""" - return _is_dir(args[0]) - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/docs/mac_hermetic_toolchain.md b/build/docs/mac_hermetic_toolchain.md deleted file mode 100644 index b1ee13e..0000000 --- a/build/docs/mac_hermetic_toolchain.md +++ /dev/null
@@ -1,44 +0,0 @@ -# Mac and iOS hermetic toolchain instructions - -The following is a short explanation of why we use a the hermetic toolchain -and instructions on how to roll a new toolchain. - -## How to roll a new hermetic toolchain. - -1. Download a new version of Xcode, and confirm either mac or ios builds - properly with this new version. - -2. Run the following command: - - ``` - src/build/package_mac_toolchain.py /path/to/Xcode.app/ [ios|mac] - ``` - - The script will create a subset of the toolchain necessary for a build, and - upload them to be used by hermetic builds. - - If for some reason this toolchain version has already been uploaded, the - script will ask if we should create sub revision. This can be necessary when - the package script has been updated to compress additional files. - -2. Create a CL with updated [MAC|IOS]_TOOLCHAIN_VERSION and _SUB_REVISION in - src/build/mac_toolchain.py with the version created by the previous command. - -3. Run the CL through the trybots to confirm the roll works. - -## Why we use a hermetic toolchain. - -Building Chrome Mac currently requires many binaries that come bundled with -Xcode, as well the macOS and iphoneOS SDK [also bundled with Xcode]. Note that -Chrome ships its own version of clang [compiler], but is dependent on Xcode -for these other binaries. - -Chrome should be built against the latest SDK available, but historically, -updating the SDK has been nontrivially difficult. Additionally, bot system -installs can range from Xcode 5 on some bots, to the latest and -greatest. Using a hermetic toolchain has two main benefits: - -1. Build Chrome with a well-defined toolchain [rather than whatever happens to -be installed on the machine]. - -2. Easily roll/update the toolchain.
diff --git a/build/dotfile_settings.gni b/build/dotfile_settings.gni deleted file mode 100644 index 8382c75..0000000 --- a/build/dotfile_settings.gni +++ /dev/null
@@ -1,36 +0,0 @@ -# Copyright (c) 2016 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. - -# This file contains variables that can be imported into a repo's dotfile (.gn) -# to make it easier to roll new versions of //build in. - -build_dotfile_settings = { - exec_script_whitelist = [ - "//build/config/android/config.gni", - "//build/config/android/internal_rules.gni", - "//build/config/android/rules.gni", - "//build/config/compiler/BUILD.gn", - "//build/config/gcc/gcc_version.gni", - "//build/config/host_byteorder.gni", - "//build/config/ios/ios_sdk.gni", - "//build/config/linux/BUILD.gn", - "//build/config/linux/pkg_config.gni", - "//build/config/linux/atk/BUILD.gn", - "//build/config/linux/dri/BUILD.gn", - "//build/config/mac/mac_sdk.gni", - "//build/config/mac/rules.gni", - "//build/config/posix/BUILD.gn", - "//build/config/sysroot.gni", - "//build/config/win/BUILD.gn", - "//build/config/win/visual_studio_version.gni", - "//build/toolchain/BUILD.gn", - "//build/toolchain/concurrent_links.gni", - "//build/toolchain/mac/BUILD.gn", - "//build/toolchain/nacl/BUILD.gn", - "//build/toolchain/toolchain.gni", - "//build/toolchain/win/BUILD.gn", - "//build/util/branding.gni", - "//build/util/version.gni", - ] -}
diff --git a/build/download_nacl_toolchains.py b/build/download_nacl_toolchains.py deleted file mode 100755 index ea9e0cd..0000000 --- a/build/download_nacl_toolchains.py +++ /dev/null
@@ -1,59 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -"""Shim to run nacl toolchain download script only if there is a nacl dir.""" - -import os -import shutil -import sys - - -def Main(args): - # Exit early if disable_nacl=1. - if 'disable_nacl=1' in os.environ.get('GYP_DEFINES', ''): - return 0 - if 'OS=android' in os.environ.get('GYP_DEFINES', ''): - return 0 - script_dir = os.path.dirname(os.path.abspath(__file__)) - src_dir = os.path.dirname(script_dir) - nacl_dir = os.path.join(src_dir, 'native_client') - nacl_build_dir = os.path.join(nacl_dir, 'build') - package_version_dir = os.path.join(nacl_build_dir, 'package_version') - package_version = os.path.join(package_version_dir, 'package_version.py') - if not os.path.exists(package_version): - print "Can't find '%s'" % package_version - print 'Presumably you are intentionally building without NativeClient.' - print 'Skipping NativeClient toolchain download.' - sys.exit(0) - sys.path.insert(0, package_version_dir) - import package_version - - # BUG: - # We remove this --optional-pnacl argument, and instead replace it with - # --no-pnacl for most cases. However, if the bot name is an sdk - # bot then we will go ahead and download it. This prevents increasing the - # gclient sync time for developers, or standard Chrome bots. - if '--optional-pnacl' in args: - args.remove('--optional-pnacl') - use_pnacl = False - buildbot_name = os.environ.get('BUILDBOT_BUILDERNAME', '') - if 'pnacl' in buildbot_name and 'sdk' in buildbot_name: - use_pnacl = True - if use_pnacl: - print '\n*** DOWNLOADING PNACL TOOLCHAIN ***\n' - else: - args = ['--exclude', 'pnacl_newlib'] + args - - # Only download the ARM gcc toolchain if we are building for ARM - # TODO(olonho): we need to invent more reliable way to get build - # configuration info, to know if we're building for ARM. - if 'target_arch=arm' not in os.environ.get('GYP_DEFINES', ''): - args = ['--exclude', 'nacl_arm_newlib'] + args - - return package_version.main(args) - - -if __name__ == '__main__': - sys.exit(Main(sys.argv[1:]))
diff --git a/build/download_translation_unit_tool.py b/build/download_translation_unit_tool.py deleted file mode 100755 index b60d33a..0000000 --- a/build/download_translation_unit_tool.py +++ /dev/null
@@ -1,54 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""Script to download Clang translation_unit tool from google storage.""" - -import find_depot_tools -import json -import os -import shutil -import subprocess -import sys -import tarfile - -SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) -CHROME_SRC = os.path.abspath(os.path.join(SCRIPT_DIR, os.pardir)) - - -DEPOT_PATH = find_depot_tools.add_depot_tools_to_path() -GSUTIL_PATH = os.path.join(DEPOT_PATH, 'gsutil.py') - -LLVM_BUILD_PATH = os.path.join(CHROME_SRC, 'third_party', 'llvm-build', - 'Release+Asserts') -CLANG_UPDATE_PY = os.path.join(CHROME_SRC, 'tools', 'clang', 'scripts', - 'update.py') - -CLANG_BUCKET = 'gs://chromium-browser-clang' - - -def main(): - clang_revision = subprocess.check_output([sys.executable, CLANG_UPDATE_PY, - '--print-revision']).rstrip() - targz_name = 'translation_unit-%s.tgz' % clang_revision - - if sys.platform == 'win32' or sys.platform == 'cygwin': - cds_full_url = CLANG_BUCKET + '/Win/' + targz_name - elif sys.platform == 'darwin': - cds_full_url = CLANG_BUCKET + '/Mac/' + targz_name - else: - assert sys.platform.startswith('linux') - cds_full_url = CLANG_BUCKET + '/Linux_x64/' + targz_name - - os.chdir(LLVM_BUILD_PATH) - - subprocess.check_call([sys.executable, GSUTIL_PATH, - 'cp', cds_full_url, targz_name]) - tarfile.open(name=targz_name, mode='r:gz').extractall(path=LLVM_BUILD_PATH) - - os.remove(targz_name) - return 0 - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/env_dump.py b/build/env_dump.py deleted file mode 100755 index 3f82173..0000000 --- a/build/env_dump.py +++ /dev/null
@@ -1,56 +0,0 @@ -#!/usr/bin/env python -# Copyright 2013 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. - -# This script can either source a file and dump the enironment changes done by -# it, or just simply dump the current environment as JSON into a file. - -import json -import optparse -import os -import pipes -import subprocess -import sys - - -def main(): - parser = optparse.OptionParser() - parser.add_option('-f', '--output-json', - help='File to dump the environment as JSON into.') - parser.add_option( - '-d', '--dump-mode', action='store_true', - help='Dump the environment to sys.stdout and exit immediately.') - - parser.disable_interspersed_args() - options, args = parser.parse_args() - if options.dump_mode: - if args or options.output_json: - parser.error('Cannot specify args or --output-json with --dump-mode.') - json.dump(dict(os.environ), sys.stdout) - else: - if not options.output_json: - parser.error('Requires --output-json option.') - - envsetup_cmd = ' '.join(map(pipes.quote, args)) - full_cmd = [ - 'bash', '-c', - '. %s > /dev/null; %s -d' % (envsetup_cmd, os.path.abspath(__file__)) - ] - try: - output = subprocess.check_output(full_cmd) - except Exception as e: - sys.exit('Error running %s and dumping environment.' % envsetup_cmd) - - env_diff = {} - new_env = json.loads(output) - for k, val in new_env.items(): - if k == '_' or (k in os.environ and os.environ[k] == val): - continue - env_diff[k] = val - with open(options.output_json, 'w') as f: - json.dump(env_diff, f) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/experimental/install-build-deps.py b/build/experimental/install-build-deps.py deleted file mode 100755 index a286a4e..0000000 --- a/build/experimental/install-build-deps.py +++ /dev/null
@@ -1,432 +0,0 @@ -#!/usr/bin/env python -# 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 argparse -import operator -import os -import platform -import re -import subprocess -import sys - - -SUPPORTED_UBUNTU_VERSIONS = ( - {'number': '14.04', 'codename': 'trusty'}, - {'number': '14.10', 'codename': 'utopic'}, - {'number': '15.04', 'codename': 'vivid'}, - {'number': '15.10', 'codename': 'wily'}, -) - - -# Packages needed for chromeos only. -_packages_chromeos_dev = ( - 'libbluetooth-dev', - 'libxkbcommon-dev', - 'realpath', -) - - -# Packages needed for development. -_packages_dev = ( - 'bison', - 'cdbs', - 'curl', - 'devscripts', - 'dpkg-dev', - 'elfutils', - 'fakeroot', - 'flex', - 'fonts-ipafont', - 'fonts-thai-tlwg', - 'g++', - 'git-core', - 'git-svn', - 'gperf', - 'language-pack-da', - 'language-pack-fr', - 'language-pack-he', - 'language-pack-zh-hant', - 'libapache2-mod-php5', - 'libasound2-dev', - 'libav-tools', - 'libbrlapi-dev', - 'libbz2-dev', - 'libcairo2-dev', - 'libcap-dev', - 'libcups2-dev', - 'libcurl4-gnutls-dev', - 'libdrm-dev', - 'libelf-dev', - 'libgconf2-dev', - 'libglib2.0-dev', - 'libglu1-mesa-dev', - 'libgnome-keyring-dev', - 'libgtk2.0-dev', - 'libkrb5-dev', - 'libnspr4-dev', - 'libnss3-dev', - 'libpam0g-dev', - 'libpci-dev', - 'libpulse-dev', - 'libsctp-dev', - 'libspeechd-dev', - 'libsqlite3-dev', - 'libssl-dev', - 'libudev-dev', - 'libwww-perl', - 'libxslt1-dev', - 'libxss-dev', - 'libxt-dev', - 'libxtst-dev', - 'openbox', - 'patch', - 'perl', - 'php5-cgi', - 'pkg-config', - 'python', - 'python-cherrypy3', - 'python-crypto', - 'python-dev', - 'python-numpy', - 'python-opencv', - 'python-openssl', - 'python-psutil', - 'python-yaml', - 'rpm', - 'ruby', - 'subversion', - 'ttf-dejavu-core', - 'ttf-indic-fonts', - 'wdiff', - 'zip', -) - - -# Run-time libraries required by chromeos only. -_packages_chromeos_lib = ( - 'libbz2-1.0', - 'libpulse0', -) - - -# Full list of required run-time libraries. -_packages_lib = ( - 'libasound2', - 'libatk1.0-0', - 'libc6', - 'libcairo2', - 'libcap2', - 'libcups2', - 'libexpat1', - 'libfontconfig1', - 'libfreetype6', - 'libglib2.0-0', - 'libgnome-keyring0', - 'libgtk2.0-0', - 'libpam0g', - 'libpango1.0-0', - 'libpci3', - 'libpcre3', - 'libpixman-1-0', - 'libpng12-0', - 'libspeechd2', - 'libsqlite3-0', - 'libstdc++6', - 'libx11-6', - 'libx11-xcb1', - 'libxau6', - 'libxcb1', - 'libxcomposite1', - 'libxcursor1', - 'libxdamage1', - 'libxdmcp6', - 'libxext6', - 'libxfixes3', - 'libxi6', - 'libxinerama1', - 'libxrandr2', - 'libxrender1', - 'libxtst6', - 'zlib1g', -) - - -# Debugging symbols for all of the run-time libraries. -_packages_dbg = ( - 'libatk1.0-dbg', - 'libc6-dbg', - 'libcairo2-dbg', - 'libfontconfig1-dbg', - 'libglib2.0-0-dbg', - 'libgtk2.0-0-dbg', - 'libpango1.0-0-dbg', - 'libpcre3-dbg', - 'libpixman-1-0-dbg', - 'libsqlite3-0-dbg', - 'libx11-6-dbg', - 'libx11-xcb1-dbg', - 'libxau6-dbg', - 'libxcb1-dbg', - 'libxcomposite1-dbg', - 'libxcursor1-dbg', - 'libxdamage1-dbg', - 'libxdmcp6-dbg', - 'libxext6-dbg', - 'libxfixes3-dbg', - 'libxi6-dbg', - 'libxinerama1-dbg', - 'libxrandr2-dbg', - 'libxrender1-dbg', - 'libxtst6-dbg', - 'zlib1g-dbg', -) - - -# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf. -_packages_lib32 = ( - 'linux-libc-dev:i386', -) - - -# arm cross toolchain packages needed to build chrome on armhf. -_packages_arm = ( - 'g++-arm-linux-gnueabihf', - 'libc6-dev-armhf-cross', - 'linux-libc-dev-armhf-cross', -) - - -# Packages to build NaCl, its toolchains, and its ports. -_packages_naclports = ( - 'ant', - 'autoconf', - 'bison', - 'cmake', - 'gawk', - 'intltool', - 'xsltproc', - 'xutils-dev', -) -_packages_nacl = ( - 'g++-mingw-w64-i686', - 'lib32ncurses5-dev', - 'lib32z1-dev', - 'libasound2:i386', - 'libcap2:i386', - 'libelf-dev:i386', - 'libfontconfig1:i386', - 'libgconf-2-4:i386', - 'libglib2.0-0:i386', - 'libgpm2:i386', - 'libgtk2.0-0:i386', - 'libncurses5:i386', - 'libnss3:i386', - 'libpango1.0-0:i386', - 'libssl1.0.0:i386', - 'libtinfo-dev', - 'libtinfo-dev:i386', - 'libtool', - 'libxcomposite1:i386', - 'libxcursor1:i386', - 'libxdamage1:i386', - 'libxi6:i386', - 'libxrandr2:i386', - 'libxss1:i386', - 'libxtst6:i386', - 'texinfo', - 'xvfb', -) - - -def is_userland_64_bit(): - return platform.architecture()[0] == '64bit' - - -def package_exists(pkg): - return pkg in subprocess.check_output(['apt-cache', 'pkgnames']).splitlines() - - -def lsb_release_short_codename(): - return subprocess.check_output( - ['lsb_release', '--codename', '--short']).strip() - - -def write_error(message): - sys.stderr.write('ERROR: %s\n' % message) - sys.stderr.flush() - - -def nonfatal_get_output(*popenargs, **kwargs): - process = subprocess.Popen( - stdout=subprocess.PIPE, stderr=subprocess.PIPE, *popenargs, **kwargs) - stdout, stderr = process.communicate() - retcode = process.poll() - return retcode, stdout, stderr - - -def compute_dynamic_package_lists(): - global _packages_arm - global _packages_dbg - global _packages_dev - global _packages_lib - global _packages_lib32 - global _packages_nacl - - if is_userland_64_bit(): - # 64-bit systems need a minimum set of 32-bit compat packages - # for the pre-built NaCl binaries. - _packages_dev += ( - 'lib32gcc1', - 'lib32stdc++6', - 'libc6-i386', - ) - - # When cross building for arm/Android on 64-bit systems the host binaries - # that are part of v8 need to be compiled with -m32 which means - # that basic multilib support is needed. - # gcc-multilib conflicts with the arm cross compiler (at least in trusty) - # but g++-X.Y-multilib gives us the 32-bit support that we need. Find out - # the appropriate value of X and Y by seeing what version the current - # distribution's g++-multilib package depends on. - output = subprocess.check_output(['apt-cache', 'depends', 'g++-multilib']) - multilib_package = re.search(r'g\+\+-[0-9.]+-multilib', output).group() - _packages_lib32 += (multilib_package,) - - lsb_codename = lsb_release_short_codename() - - # Find the proper version of libstdc++6-4.x-dbg. - if lsb_codename == 'trusty': - _packages_dbg += ('libstdc++6-4.8-dbg',) - else: - _packages_dbg += ('libstdc++6-4.9-dbg',) - - # Work around for dependency issue Ubuntu/Trusty: http://crbug.com/435056 . - if lsb_codename == 'trusty': - _packages_arm += ( - 'g++-4.8-multilib-arm-linux-gnueabihf', - 'gcc-4.8-multilib-arm-linux-gnueabihf', - ) - - # Find the proper version of libgbm-dev. We can't just install libgbm-dev as - # it depends on mesa, and only one version of mesa can exists on the system. - # Hence we must match the same version or this entire script will fail. - mesa_variant = '' - for variant in ('-lts-trusty', '-lts-utopic'): - rc, stdout, stderr = nonfatal_get_output( - ['dpkg-query', '-Wf\'{Status}\'', 'libgl1-mesa-glx' + variant]) - if 'ok installed' in output: - mesa_variant = variant - _packages_dev += ( - 'libgbm-dev' + mesa_variant, - 'libgl1-mesa-dev' + mesa_variant, - 'libgles2-mesa-dev' + mesa_variant, - 'mesa-common-dev' + mesa_variant, - ) - - if package_exists('ttf-mscorefonts-installer'): - _packages_dev += ('ttf-mscorefonts-installer',) - else: - _packages_dev += ('msttcorefonts',) - - if package_exists('libnspr4-dbg'): - _packages_dbg += ('libnspr4-dbg', 'libnss3-dbg') - _packages_lib += ('libnspr4', 'libnss3') - else: - _packages_dbg += ('libnspr4-0d-dbg', 'libnss3-1d-dbg') - _packages_lib += ('libnspr4-0d', 'libnss3-1d') - - if package_exists('libjpeg-dev'): - _packages_dev += ('libjpeg-dev',) - else: - _packages_dev += ('libjpeg62-dev',) - - if package_exists('libudev1'): - _packages_dev += ('libudev1',) - _packages_nacl += ('libudev1:i386',) - else: - _packages_dev += ('libudev0',) - _packages_nacl += ('libudev0:i386',) - - if package_exists('libbrlapi0.6'): - _packages_dev += ('libbrlapi0.6',) - else: - _packages_dev += ('libbrlapi0.5',) - - if package_exists('apache2-bin'): - _packages_dev += ('apache2-bin',) - else: - _packages_dev += ('apache2.2-bin',) - - if package_exists('xfonts-mathml'): - _packages_dev += ('xfonts-mathml',) - - # Some packages are only needed if the distribution actually supports - # installing them. - if package_exists('appmenu-gtk'): - _packages_lib += ('appmenu-gtk',) - - _packages_dev += _packages_chromeos_dev - _packages_lib += _packages_chromeos_lib - _packages_nacl += _packages_naclports - - -def quick_check(packages): - rc, stdout, stderr = nonfatal_get_output([ - 'dpkg-query', '-W', '-f', '${PackageSpec}:${Status}\n'] + list(packages)) - if rc == 0 and not stderr: - return 0 - print stderr - return 1 - - -def main(argv): - parser = argparse.ArgumentParser() - parser.add_argument('--quick-check', action='store_true', - help='quickly try to determine if dependencies are ' - 'installed (this avoids interactive prompts and ' - 'sudo commands so might not be 100% accurate)') - parser.add_argument('--unsupported', action='store_true', - help='attempt installation even on unsupported systems') - args = parser.parse_args(argv) - - lsb_codename = lsb_release_short_codename() - if not args.unsupported and not args.quick_check: - if lsb_codename not in map( - operator.itemgetter('codename'), SUPPORTED_UBUNTU_VERSIONS): - supported_ubuntus = ['%(number)s (%(codename)s)' % v - for v in SUPPORTED_UBUNTU_VERSIONS] - write_error('Only Ubuntu %s are currently supported.' % - ', '.join(supported_ubuntus)) - return 1 - - if platform.machine() not in ('i686', 'x86_64'): - write_error('Only x86 architectures are currently supported.') - return 1 - - if os.geteuid() != 0 and not args.quick_check: - print 'Running as non-root user.' - print 'You might have to enter your password one or more times' - print 'for \'sudo\'.' - print - - compute_dynamic_package_lists() - - packages = (_packages_dev + _packages_lib + _packages_dbg + _packages_lib32 + - _packages_arm + _packages_nacl) - def packages_key(pkg): - s = pkg.rsplit(':', 1) - if len(s) == 1: - return (s, '') - return s - packages = sorted(set(packages), key=packages_key) - - if args.quick_check: - return quick_check(packages) - - return 0 - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:]))
diff --git a/build/extract_from_cab.py b/build/extract_from_cab.py deleted file mode 100755 index 080370c..0000000 --- a/build/extract_from_cab.py +++ /dev/null
@@ -1,63 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -"""Extracts a single file from a CAB archive.""" - -import os -import shutil -import subprocess -import sys -import tempfile - -def run_quiet(*args): - """Run 'expand' suppressing noisy output. Returns returncode from process.""" - popen = subprocess.Popen(args, stdout=subprocess.PIPE) - out, _ = popen.communicate() - if popen.returncode: - # expand emits errors to stdout, so if we fail, then print that out. - print out - return popen.returncode - -def main(): - if len(sys.argv) != 4: - print 'Usage: extract_from_cab.py cab_path archived_file output_dir' - return 1 - - [cab_path, archived_file, output_dir] = sys.argv[1:] - - # Expand.exe does its work in a fixed-named temporary directory created within - # the given output directory. This is a problem for concurrent extractions, so - # create a unique temp dir within the desired output directory to work around - # this limitation. - temp_dir = tempfile.mkdtemp(dir=output_dir) - - try: - # Invoke the Windows expand utility to extract the file. - level = run_quiet('expand', cab_path, '-F:' + archived_file, temp_dir) - if level == 0: - # Move the output file into place, preserving expand.exe's behavior of - # paving over any preexisting file. - output_file = os.path.join(output_dir, archived_file) - try: - os.remove(output_file) - except OSError: - pass - os.rename(os.path.join(temp_dir, archived_file), output_file) - finally: - shutil.rmtree(temp_dir, True) - - if level != 0: - return level - - # The expand utility preserves the modification date and time of the archived - # file. Touch the extracted file. This helps build systems that compare the - # modification times of input and output files to determine whether to do an - # action. - os.utime(os.path.join(output_dir, archived_file), None) - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/find_depot_tools.py b/build/find_depot_tools.py deleted file mode 100755 index 5c496e7..0000000 --- a/build/find_depot_tools.py +++ /dev/null
@@ -1,73 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2011 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. -"""Small utility function to find depot_tools and add it to the python path. - -Will throw an ImportError exception if depot_tools can't be found since it -imports breakpad. - -This can also be used as a standalone script to print out the depot_tools -directory location. -""" - -import os -import sys - - -# Path to //src -SRC = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) - - -def IsRealDepotTools(path): - expanded_path = os.path.expanduser(path) - return os.path.isfile(os.path.join(expanded_path, 'gclient.py')) - - -def add_depot_tools_to_path(): - """Search for depot_tools and add it to sys.path.""" - # First, check if we have a DEPS'd in "depot_tools". - deps_depot_tools = os.path.join(SRC, 'third_party', 'depot_tools') - if IsRealDepotTools(deps_depot_tools): - # Put the pinned version at the start of the sys.path, in case there - # are other non-pinned versions already on the sys.path. - sys.path.insert(0, deps_depot_tools) - return deps_depot_tools - - # Then look if depot_tools is already in PYTHONPATH. - for i in sys.path: - if i.rstrip(os.sep).endswith('depot_tools') and IsRealDepotTools(i): - return i - # Then look if depot_tools is in PATH, common case. - for i in os.environ['PATH'].split(os.pathsep): - if IsRealDepotTools(i): - sys.path.append(i.rstrip(os.sep)) - return i - # Rare case, it's not even in PATH, look upward up to root. - root_dir = os.path.dirname(os.path.abspath(__file__)) - previous_dir = os.path.abspath(__file__) - while root_dir and root_dir != previous_dir: - i = os.path.join(root_dir, 'depot_tools') - if IsRealDepotTools(i): - sys.path.append(i) - return i - previous_dir = root_dir - root_dir = os.path.dirname(root_dir) - print >> sys.stderr, 'Failed to find depot_tools' - return None - -DEPOT_TOOLS_PATH = add_depot_tools_to_path() - -# pylint: disable=W0611 -import breakpad - - -def main(): - if DEPOT_TOOLS_PATH is None: - return 1 - print DEPOT_TOOLS_PATH - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/find_isolated_tests.py b/build/find_isolated_tests.py deleted file mode 100755 index c5b3ab7..0000000 --- a/build/find_isolated_tests.py +++ /dev/null
@@ -1,78 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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. - -"""Scans build output directory for .isolated files, calculates their SHA1 -hashes, stores final list in JSON document and then removes *.isolated files -found (to ensure no stale *.isolated stay around on the next build). - -Used to figure out what tests were build in isolated mode to trigger these -tests to run on swarming. - -For more info see: -https://sites.google.com/a/chromium.org/dev/developers/testing/isolated-testing -""" - -import glob -import hashlib -import json -import optparse -import os -import re -import sys - - -def hash_file(filepath): - """Calculates the hash of a file without reading it all in memory at once.""" - digest = hashlib.sha1() - with open(filepath, 'rb') as f: - while True: - chunk = f.read(1024*1024) - if not chunk: - break - digest.update(chunk) - return digest.hexdigest() - - -def main(): - parser = optparse.OptionParser( - usage='%prog --build-dir <path> --output-json <path>', - description=sys.modules[__name__].__doc__) - parser.add_option( - '--build-dir', - help='Path to a directory to search for *.isolated files.') - parser.add_option( - '--output-json', - help='File to dump JSON results into.') - - options, _ = parser.parse_args() - if not options.build_dir: - parser.error('--build-dir option is required') - if not options.output_json: - parser.error('--output-json option is required') - - result = {} - - # Get the file hash values and output the pair. - pattern = os.path.join(options.build_dir, '*.isolated') - for filepath in sorted(glob.glob(pattern)): - test_name = os.path.splitext(os.path.basename(filepath))[0] - if re.match(r'^.+?\.\d$', test_name): - # It's a split .isolated file, e.g. foo.0.isolated. Ignore these. - continue - - # TODO(csharp): Remove deletion once the isolate tracked dependencies are - # inputs for the isolated files. - sha1_hash = hash_file(filepath) - os.remove(filepath) - result[test_name] = sha1_hash - - with open(options.output_json, 'wb') as f: - json.dump(result, f) - - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/fix_gn_headers.py b/build/fix_gn_headers.py deleted file mode 100755 index 01ff764..0000000 --- a/build/fix_gn_headers.py +++ /dev/null
@@ -1,218 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""Fix header files missing in GN. - -This script takes the missing header files from check_gn_headers.py, and -try to fix them by adding them to the GN files. -Manual cleaning up is likely required afterwards. -""" - -import argparse -import os -import re -import subprocess -import sys - - -def GitGrep(pattern): - p = subprocess.Popen( - ['git', 'grep', '-En', pattern, '--', '*.gn', '*.gni'], - stdout=subprocess.PIPE) - out, _ = p.communicate() - return out, p.returncode - - -def ValidMatches(basename, cc, grep_lines): - """Filter out 'git grep' matches with header files already.""" - matches = [] - for line in grep_lines: - gnfile, linenr, contents = line.split(':') - linenr = int(linenr) - new = re.sub(cc, basename, contents) - lines = open(gnfile).read().splitlines() - assert contents in lines[linenr - 1] - # Skip if it's already there. It could be before or after the match. - if lines[linenr] == new: - continue - if lines[linenr - 2] == new: - continue - print ' ', gnfile, linenr, new - matches.append((gnfile, linenr, new)) - return matches - - -def AddHeadersNextToCC(headers, skip_ambiguous=True): - """Add header files next to the corresponding .cc files in GN files. - - When skip_ambiguous is True, skip if multiple .cc files are found. - Returns unhandled headers. - - Manual cleaning up is likely required, especially if not skip_ambiguous. - """ - edits = {} - unhandled = [] - for filename in headers: - filename = filename.strip() - if not (filename.endswith('.h') or filename.endswith('.hh')): - continue - basename = os.path.basename(filename) - print filename - cc = r'\b' + os.path.splitext(basename)[0] + r'\.(cc|cpp|mm)\b' - out, returncode = GitGrep('(/|")' + cc + '"') - if returncode != 0 or not out: - unhandled.append(filename) - continue - - matches = ValidMatches(basename, cc, out.splitlines()) - - if len(matches) == 0: - continue - if len(matches) > 1: - print '\n[WARNING] Ambiguous matching for', filename - for i in enumerate(matches, 1): - print '%d: %s' % (i[0], i[1]) - print - if skip_ambiguous: - continue - - picked = raw_input('Pick the matches ("2,3" for multiple): ') - try: - matches = [matches[int(i) - 1] for i in picked.split(',')] - except (ValueError, IndexError): - continue - - for match in matches: - gnfile, linenr, new = match - print ' ', gnfile, linenr, new - edits.setdefault(gnfile, {})[linenr] = new - - for gnfile in edits: - lines = open(gnfile).read().splitlines() - for l in sorted(edits[gnfile].keys(), reverse=True): - lines.insert(l, edits[gnfile][l]) - open(gnfile, 'w').write('\n'.join(lines) + '\n') - - return unhandled - - -def AddHeadersToSources(headers, skip_ambiguous=True): - """Add header files to the sources list in the first GN file. - - The target GN file is the first one up the parent directories. - This usually does the wrong thing for _test files if the test and the main - target are in the same .gn file. - When skip_ambiguous is True, skip if multiple sources arrays are found. - - "git cl format" afterwards is required. Manually cleaning up duplicated items - is likely required. - """ - for filename in headers: - filename = filename.strip() - print filename - dirname = os.path.dirname(filename) - while not os.path.exists(os.path.join(dirname, 'BUILD.gn')): - dirname = os.path.dirname(dirname) - rel = filename[len(dirname) + 1:] - gnfile = os.path.join(dirname, 'BUILD.gn') - - lines = open(gnfile).read().splitlines() - matched = [i for i, l in enumerate(lines) if ' sources = [' in l] - if skip_ambiguous and len(matched) > 1: - print '[WARNING] Multiple sources in', gnfile - continue - - if len(matched) < 1: - continue - print ' ', gnfile, rel - index = matched[0] - lines.insert(index + 1, '"%s",' % rel) - open(gnfile, 'w').write('\n'.join(lines) + '\n') - - -def RemoveHeader(headers, skip_ambiguous=True): - """Remove non-existing headers in GN files. - - When skip_ambiguous is True, skip if multiple matches are found. - """ - edits = {} - unhandled = [] - for filename in headers: - filename = filename.strip() - if not (filename.endswith('.h') or filename.endswith('.hh')): - continue - basename = os.path.basename(filename) - print filename - out, returncode = GitGrep('(/|")' + basename + '"') - if returncode != 0 or not out: - unhandled.append(filename) - print ' Not found' - continue - - grep_lines = out.splitlines() - matches = [] - for line in grep_lines: - gnfile, linenr, contents = line.split(':') - print ' ', gnfile, linenr, contents - linenr = int(linenr) - lines = open(gnfile).read().splitlines() - assert contents in lines[linenr - 1] - matches.append((gnfile, linenr, contents)) - - if len(matches) == 0: - continue - if len(matches) > 1: - print '\n[WARNING] Ambiguous matching for', filename - for i in enumerate(matches, 1): - print '%d: %s' % (i[0], i[1]) - print - if skip_ambiguous: - continue - - picked = raw_input('Pick the matches ("2,3" for multiple): ') - try: - matches = [matches[int(i) - 1] for i in picked.split(',')] - except (ValueError, IndexError): - continue - - for match in matches: - gnfile, linenr, contents = match - print ' ', gnfile, linenr, contents - edits.setdefault(gnfile, set()).add(linenr) - - for gnfile in edits: - lines = open(gnfile).read().splitlines() - for l in sorted(edits[gnfile], reverse=True): - lines.pop(l - 1) - open(gnfile, 'w').write('\n'.join(lines) + '\n') - - return unhandled - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('input_file', help="missing or non-existing headers, " - "output of check_gn_headers.py") - parser.add_argument('--prefix', - help="only handle path name with this prefix") - parser.add_argument('--remove', action='store_true', - help="treat input_file as non-existing headers") - - args, _extras = parser.parse_known_args() - - headers = open(args.input_file).readlines() - - if args.prefix: - headers = [i for i in headers if i.startswith(args.prefix)] - - if args.remove: - RemoveHeader(headers, False) - else: - unhandled = AddHeadersNextToCC(headers) - AddHeadersToSources(unhandled) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/fuchsia/OWNERS b/build/fuchsia/OWNERS deleted file mode 100644 index 22e1b69..0000000 --- a/build/fuchsia/OWNERS +++ /dev/null
@@ -1,9 +0,0 @@ -jamesr@chromium.org -kmarshall@chromium.org -scottmg@chromium.org -sergeyu@chromium.org -thakis@chromium.org -wez@chromium.org - -# TEAM: cr-fuchsia@chromium.org -# COMPONENT: Internals>PlatformIntegration
diff --git a/build/fuchsia/__init__.py b/build/fuchsia/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/build/fuchsia/__init__.py +++ /dev/null
diff --git a/build/fuchsia/boot_data.py b/build/fuchsia/boot_data.py deleted file mode 100644 index 50275b0..0000000 --- a/build/fuchsia/boot_data.py +++ /dev/null
@@ -1,172 +0,0 @@ -# Copyright 2018 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. - -"""Functions used to provision Fuchsia boot images.""" - -import common -import logging -import os -import subprocess -import tempfile -import time -import uuid - -_SSH_CONFIG_TEMPLATE = """ -Host * - CheckHostIP no - StrictHostKeyChecking no - ForwardAgent no - ForwardX11 no - UserKnownHostsFile {known_hosts} - User fuchsia - IdentitiesOnly yes - IdentityFile {identity} - ServerAliveInterval 1 - ServerAliveCountMax 1 - ControlMaster auto - ControlPersist 1m - ControlPath /tmp/ssh-%r@%h:%p""" - -FVM_TYPE_QCOW = 'qcow' -FVM_TYPE_SPARSE = 'sparse' - - -def _TargetCpuToSdkBinPath(target_arch): - """Returns the path to the SDK 'target' file directory for |target_cpu|.""" - - return os.path.join(common.SDK_ROOT, 'target', target_arch) - - -def _ProvisionSSH(output_dir): - """Provisions the key files used by the SSH daemon, and generates a - configuration file used by clients for connecting to SSH. - - Returns a tuple with: - #0: the client configuration file - #1: a list of file path pairs: (<path in image>, <path on build filesystem>). - """ - - host_key_path = output_dir + '/ssh_key' - host_pubkey_path = host_key_path + '.pub' - id_key_path = output_dir + '/id_ed25519' - id_pubkey_path = id_key_path + '.pub' - known_hosts_path = output_dir + '/known_hosts' - ssh_config_path = GetSSHConfigPath(output_dir) - - logging.debug('Generating SSH credentials.') - if not os.path.isfile(host_key_path): - subprocess.check_call(['ssh-keygen', '-t', 'ed25519', '-h', '-f', - host_key_path, '-P', '', '-N', ''], - stdout=open(os.devnull)) - if not os.path.isfile(id_key_path): - subprocess.check_call(['ssh-keygen', '-t', 'ed25519', '-f', id_key_path, - '-P', '', '-N', ''], stdout=open(os.devnull)) - - with open(ssh_config_path, "w") as ssh_config: - ssh_config.write( - _SSH_CONFIG_TEMPLATE.format(identity=id_key_path, - known_hosts=known_hosts_path)) - - if os.path.exists(known_hosts_path): - os.remove(known_hosts_path) - - return ( - ssh_config_path, - (('ssh/ssh_host_ed25519_key', host_key_path), - ('ssh/ssh_host_ed25519_key.pub', host_pubkey_path), - ('ssh/authorized_keys', id_pubkey_path)) - ) - - -def _MakeQcowDisk(output_dir, disk_path): - """Creates a QEMU copy-on-write version of |disk_path| in the output - directory.""" - - qimg_path = os.path.join(common.SDK_ROOT, 'qemu', 'bin', 'qemu-img') - output_path = os.path.join(output_dir, - os.path.basename(disk_path) + '.qcow2') - subprocess.check_call([qimg_path, 'create', '-q', '-f', 'qcow2', - '-b', disk_path, output_path]) - return output_path - - -def GetTargetFile(target_arch, filename): - """Computes a path to |filename| in the Fuchsia target directory specific to - |target_arch|.""" - - return os.path.join(_TargetCpuToSdkBinPath(target_arch), filename) - - -def GetSSHConfigPath(output_dir): - return output_dir + '/ssh_config' - - -def ConfigureDataFVM(output_dir, output_type): - """Builds the FVM image for the /data volume and prepopulates it - with SSH keys. - - output_dir: Path to the output directory which will contain the FVM file. - output_type: If FVM_TYPE_QCOW, then returns a path to the qcow2 FVM file, - used for QEMU. - - If FVM_TYPE_SPARSE, then returns a path to the - sparse/compressed FVM file.""" - - logging.debug('Building /data partition FVM file.') - with tempfile.NamedTemporaryFile() as data_file: - # Build up the minfs partition data and install keys into it. - ssh_config, ssh_data = _ProvisionSSH(output_dir) - with tempfile.NamedTemporaryFile() as manifest: - for dest, src in ssh_data: - manifest.write('%s=%s\n' % (dest, src)) - manifest.flush() - minfs_path = os.path.join(common.SDK_ROOT, 'tools', 'minfs') - subprocess.check_call([minfs_path, '%s@1G' % data_file.name, 'create']) - subprocess.check_call([minfs_path, data_file.name, 'manifest', - manifest.name]) - - # Wrap the minfs partition in a FVM container. - fvm_path = os.path.join(common.SDK_ROOT, 'tools', 'fvm') - fvm_output_path = os.path.join(output_dir, 'fvm.data.blk') - if os.path.exists(fvm_output_path): - os.remove(fvm_output_path) - - if output_type == FVM_TYPE_SPARSE: - cmd = [fvm_path, fvm_output_path, 'sparse', '--compress', 'lz4', - '--data', data_file.name] - else: - cmd = [fvm_path, fvm_output_path, 'create', '--data', data_file.name] - - logging.debug(' '.join(cmd)) - subprocess.check_call(cmd) - - if output_type == FVM_TYPE_SPARSE: - return fvm_output_path - elif output_type == FVM_TYPE_QCOW: - return _MakeQcowDisk(output_dir, fvm_output_path) - else: - raise Exception('Unknown output_type: %r' % output_type) - - -def GetNodeName(output_dir): - """Returns the cached Zircon node name, or generates one if it doesn't - already exist. The node name is used by Discover to find the prior - deployment on the LAN.""" - - nodename_file = os.path.join(output_dir, 'nodename') - if not os.path.exists(nodename_file): - nodename = uuid.uuid4() - f = open(nodename_file, 'w') - f.write(str(nodename)) - f.flush() - f.close() - return str(nodename) - else: - f = open(nodename_file, 'r') - return f.readline() - - -def GetKernelArgs(output_dir): - return ['devmgr.epoch=%d' % time.time(), - 'zircon.nodename=' + GetNodeName(output_dir)]
diff --git a/build/fuchsia/common.py b/build/fuchsia/common.py deleted file mode 100644 index 51a6841..0000000 --- a/build/fuchsia/common.py +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2018 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 os - -DIR_SOURCE_ROOT = os.path.abspath( - os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) -SDK_ROOT = os.path.join(DIR_SOURCE_ROOT, 'third_party', 'fuchsia-sdk', 'sdk') - -def EnsurePathExists(path): - """Checks that the file |path| exists on the filesystem and returns the path - if it does, raising an exception otherwise.""" - - if not os.path.exists(path): - raise IOError('Missing file: ' + path) - - return path
diff --git a/build/fuchsia/common_args.py b/build/fuchsia/common_args.py deleted file mode 100644 index 689634b..0000000 --- a/build/fuchsia/common_args.py +++ /dev/null
@@ -1,75 +0,0 @@ -# Copyright 2018 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 logging -import os -import sys - -from device_target import DeviceTarget -from qemu_target import QemuTarget - - -def AddCommonArgs(arg_parser): - """Adds command line arguments to |arg_parser| for options which are shared - across test and executable target types.""" - - common_args = arg_parser.add_argument_group('common', 'Common arguments') - common_args.add_argument('--package', - type=os.path.realpath, required=True, - help='Path to the package to execute.') - common_args.add_argument('--package-name', required=True, - help='Name of the package to execute, defined in ' + - 'package metadata.') - common_args.add_argument('--package-manifest', - type=os.path.realpath, required=True, - help='Path to the Fuchsia package manifest file.') - common_args.add_argument('--output-directory', - type=os.path.realpath, required=True, - help=('Path to the directory in which build files ' - 'are located (must include build type).')) - common_args.add_argument('--target-cpu', required=True, - help='GN target_cpu setting for the build.') - common_args.add_argument('--device', '-d', action='store_true', default=False, - help='Run on hardware device instead of QEMU.') - common_args.add_argument('--host', help='The IP of the target device. ' + - 'Optional.') - common_args.add_argument('--port', '-p', type=int, default=22, - help='The port of the SSH service running on the ' + - 'device. Optional.') - common_args.add_argument('--ssh-config', '-F', - help='The path to the SSH configuration used for ' - 'connecting to the target device.') - common_args.add_argument('--include-system-logs', default=True, type=bool, - help='Do not show system log data.') - common_args.add_argument('--verbose', '-v', default=False, - action='store_true', - help='Enable debug-level logging.') - - -def ConfigureLogging(args): - """Configures the logging level based on command line |args|.""" - - logging.basicConfig(level=(logging.DEBUG if args.verbose else logging.INFO), - format='%(asctime)s:%(levelname)s:%(name)s:%(message)s') - - # The test server spawner is too noisy with INFO level logging, so tweak - # its verbosity a bit by adjusting its logging level. - logging.getLogger('chrome_test_server_spawner').setLevel( - logging.DEBUG if args.verbose else logging.WARN) - - # Verbose SCP output can be useful at times but oftentimes is just too noisy. - # Only enable it if -vv is passed. - logging.getLogger('ssh').setLevel( - logging.DEBUG if args.verbose else logging.WARN) - - -def GetDeploymentTargetForArgs(args): - """Constructs a deployment target object using parameters taken from - command line arguments.""" - - if not args.device: - return QemuTarget(args.output_directory, args.target_cpu) - else: - return DeviceTarget(args.output_directory, args.target_cpu, - args.host, args.port, args.ssh_config)
diff --git a/build/fuchsia/create_runner_script.py b/build/fuchsia/create_runner_script.py deleted file mode 100755 index d96c2cb..0000000 --- a/build/fuchsia/create_runner_script.py +++ /dev/null
@@ -1,89 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2018 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. - -"""Creates a script to run a Fushsia executable by delegating to -build/fuchsia/(exe|test)_runner.py. -""" - -import argparse -import os -import re -import sys - - -SCRIPT_TEMPLATE = """\ -#!/usr/bin/env python -# -# This file was generated by build/fuchsia/create_runner_script.py - -import os -import sys - -def main(): - script_directory = os.path.dirname(__file__) - - def ResolvePath(path): - \"\"\"Returns an absolute filepath given a path relative to this script. - \"\"\" - return os.path.abspath(os.path.join(script_directory, path)) - - runner_path = ResolvePath('{runner_path}') - runner_args = {runner_args} - runner_path_args = {runner_path_args} - for arg, path in runner_path_args: - runner_args.extend([arg, ResolvePath(path)]) - - os.execv(runner_path, - [runner_path] + runner_args + sys.argv[1:]) - -if __name__ == '__main__': - sys.exit(main()) -""" - - -def main(args): - parser = argparse.ArgumentParser() - parser.add_argument('--runner-script', - help='Name of the runner script to use.') - parser.add_argument('--script-output-path', - help='Output path for executable script.') - parser.add_argument('--test-runner-path', - help='Path to test_runner.py (optional).') - group = parser.add_argument_group('Test runner path arguments.') - group.add_argument('--output-directory') - group.add_argument('--package') - group.add_argument('--package-manifest') - args, runner_args = parser.parse_known_args(args) - - def RelativizePathToScript(path): - """Returns the path relative to the output script directory.""" - return os.path.relpath(path, os.path.dirname(args.script_output_path)) - - runner_path = args.test_runner_path or os.path.join( - os.path.dirname(__file__), args.runner_script) - runner_path = RelativizePathToScript(runner_path) - - runner_path_args = [] - runner_path_args.append( - ('--output-directory', RelativizePathToScript(args.output_directory))) - runner_path_args.append( - ('--package', RelativizePathToScript(args.package))) - runner_path_args.append( - ('--package-manifest', RelativizePathToScript(args.package_manifest))) - - with open(args.script_output_path, 'w') as script: - script.write(SCRIPT_TEMPLATE.format( - runner_path=str(runner_path), - runner_args=repr(runner_args), - runner_path_args=repr(runner_path_args))) - - # Sets the mode of the generated script so that it is executable by the - # current user. - os.chmod(args.script_output_path, 0750) - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:]))
diff --git a/build/fuchsia/device_target.py b/build/fuchsia/device_target.py deleted file mode 100644 index 34bc99f..0000000 --- a/build/fuchsia/device_target.py +++ /dev/null
@@ -1,116 +0,0 @@ -# Copyright 2018 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. - -"""Implements commands for running and interacting with Fuchsia on devices.""" - -import boot_data -import logging -import os -import subprocess -import target -import time -import uuid - -from common import SDK_ROOT, EnsurePathExists - -CONNECT_RETRY_COUNT = 20 -CONNECT_RETRY_WAIT_SECS = 1 - -class DeviceTarget(target.Target): - def __init__(self, output_dir, target_cpu, host=None, port=None, - ssh_config=None): - """output_dir: The directory which will contain the files that are - generated to support the deployment. - target_cpu: The CPU architecture of the deployment target. Can be - "x64" or "arm64". - host: The address of the deployment target device. - port: The port of the SSH service on the deployment target device. - ssh_config: The path to SSH configuration data.""" - - super(DeviceTarget, self).__init__(output_dir, target_cpu) - - self._port = 22 - self._auto = not host or not ssh_config - self._new_instance = True - - if self._auto: - self._ssh_config_path = EnsurePathExists( - boot_data.GetSSHConfigPath(output_dir)) - else: - self._ssh_config_path = os.path.expanduser(ssh_config) - self._host = host - if port: - self._port = port - self._new_instance = False - - def __Discover(self, node_name): - """Returns the IP address and port of a Fuchsia instance discovered on - the local area network.""" - - netaddr_path = os.path.join(SDK_ROOT, 'tools', 'netaddr') - command = [netaddr_path, '--fuchsia', '--nowait', node_name] - logging.debug(' '.join(command)) - proc = subprocess.Popen(command, - stdout=subprocess.PIPE, - stderr=open(os.devnull, 'w')) - proc.wait() - if proc.returncode == 0: - return proc.stdout.readlines()[0].strip() - return None - - def Start(self): - if self._auto: - logging.debug('Starting automatic device deployment.') - node_name = boot_data.GetNodeName(self._output_dir) - self._host = self.__Discover(node_name) - if self._host and self._WaitUntilReady(retries=0): - logging.info('Connected to an already booted device.') - self._new_instance = False - return - - logging.info('Netbooting Fuchsia. ' + - 'Please ensure that your device is in bootloader mode.') - bootserver_path = os.path.join(SDK_ROOT, 'tools', 'bootserver') - bootserver_command = [ - bootserver_path, - '-1', - '--efi', - EnsurePathExists(boot_data.GetTargetFile(self._GetTargetSdkArch(), - 'local.esp.blk')), - '--fvm', - EnsurePathExists(boot_data.GetTargetFile(self._GetTargetSdkArch(), - 'fvm.sparse.blk')), - '--fvm', - EnsurePathExists( - boot_data.ConfigureDataFVM(self._output_dir, - boot_data.FVM_TYPE_SPARSE)), - EnsurePathExists(boot_data.GetTargetFile(self._GetTargetSdkArch(), - 'zircon.bin')), - EnsurePathExists(boot_data.GetTargetFile(self._GetTargetSdkArch(), - 'bootdata-blob.bin')), - '--'] + boot_data.GetKernelArgs(self._output_dir) - logging.debug(' '.join(bootserver_command)) - subprocess.check_call(bootserver_command) - - logging.debug('Waiting for device to join network.') - for _ in xrange(CONNECT_RETRY_COUNT): - self._host = self.__Discover(node_name) - if self._host: - break - time.sleep(CONNECT_RETRY_WAIT_SECS) - if not self._host: - raise Exception('Couldn\'t connect to device.') - - logging.debug('host=%s, port=%d' % (self._host, self._port)) - - self._WaitUntilReady(); - - def IsNewInstance(self): - return self._new_instance - - def _GetEndpoint(self): - return (self._host, self._port) - - def _GetSshConfigPath(self): - return self._ssh_config_path
diff --git a/build/fuchsia/exe_runner.py b/build/fuchsia/exe_runner.py deleted file mode 100755 index 14c0c70..0000000 --- a/build/fuchsia/exe_runner.py +++ /dev/null
@@ -1,34 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2018 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. - -"""Deploys and executes a packaged Fuchsia executable on a target.""" - -import argparse -import logging -import sys - -from common_args import AddCommonArgs, ConfigureLogging, \ - GetDeploymentTargetForArgs -from run_package import RunPackage - - -def main(): - parser = argparse.ArgumentParser() - AddCommonArgs(parser) - parser.add_argument('child_args', nargs='*', - help='Arguments for the test process.') - args = parser.parse_args() - ConfigureLogging(args) - - with GetDeploymentTargetForArgs(args) as target: - target.Start() - return RunPackage( - args.output_directory, target, args.package, args.package_name, - args.child_args, args.include_system_logs, args.package_manifest) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/fuchsia/layout_test_proxy/BUILD.gn b/build/fuchsia/layout_test_proxy/BUILD.gn deleted file mode 100644 index 43ed152..0000000 --- a/build/fuchsia/layout_test_proxy/BUILD.gn +++ /dev/null
@@ -1,27 +0,0 @@ -# Copyright 2018 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. - -assert(is_fuchsia) - -import("//testing/test.gni") - -# Binary used to proxy TCP connections from a Fuchsia process. Potentially SSH -# can be used to forward TCP, but this feature is currently broken on Fuchsia, -# see ZX-1555. layout_test_proxy can be removed once that issue with sshd is -# fixed and layout tests are updated to use SSH. -executable("layout_test_proxy") { - testonly = true - sources = [ - "layout_test_proxy.cc", - ] - deps = [ - "//net", - "//net:test_support", - ] -} - -fuchsia_executable_runner("layout_test_proxy_runner") { - testonly = true - exe_target = ":layout_test_proxy" -}
diff --git a/build/fuchsia/layout_test_proxy/DEPS b/build/fuchsia/layout_test_proxy/DEPS deleted file mode 100644 index b2f6f8e..0000000 --- a/build/fuchsia/layout_test_proxy/DEPS +++ /dev/null
@@ -1,3 +0,0 @@ -include_rules = [ - "+net", -] \ No newline at end of file
diff --git a/build/fuchsia/layout_test_proxy/layout_test_proxy.cc b/build/fuchsia/layout_test_proxy/layout_test_proxy.cc deleted file mode 100644 index 1d14df9..0000000 --- a/build/fuchsia/layout_test_proxy/layout_test_proxy.cc +++ /dev/null
@@ -1,78 +0,0 @@ -// Copyright 2018 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. - -#include "base/command_line.h" -#include "base/message_loop/message_loop.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_split.h" -#include "net/base/ip_endpoint.h" -#include "net/test/tcp_socket_proxy.h" - -const char kPortsSwitch[] = "ports"; -const char kRemoteAddressSwitch[] = "remote-address"; - -int main(int argc, char** argv) { - base::CommandLine::Init(argc, argv); - - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - - if (!command_line->HasSwitch(kPortsSwitch)) { - LOG(ERROR) << "--" << kPortsSwitch << " was not specified."; - return 1; - } - - std::vector<std::string> ports_strings = - base::SplitString(command_line->GetSwitchValueASCII(kPortsSwitch), ",", - base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); - if (ports_strings.empty()) { - LOG(ERROR) << "At least one port must be specified with --" << kPortsSwitch; - return 1; - } - - std::vector<int> ports; - for (auto& port_string : ports_strings) { - int port; - if (!base::StringToInt(port_string, &port) || port <= 0 || port > 65535) { - LOG(ERROR) << "Invalid value specified for --" << kPortsSwitch << ": " - << port_string; - return 1; - } - ports.push_back(port); - } - - if (!command_line->HasSwitch(kRemoteAddressSwitch)) { - LOG(ERROR) << "--" << kRemoteAddressSwitch << " was not specified."; - return 1; - } - - std::string remote_address_str = - command_line->GetSwitchValueASCII(kRemoteAddressSwitch); - net::IPAddress remote_address; - if (!remote_address.AssignFromIPLiteral(remote_address_str)) { - LOG(ERROR) << "Invalid value specified for --" << kRemoteAddressSwitch - << ": " << remote_address_str; - return 1; - } - - base::MessageLoopForIO message_loop; - - std::vector<std::unique_ptr<net::TcpSocketProxy>> proxies; - - for (int port : ports) { - auto test_server_proxy = - std::make_unique<net::TcpSocketProxy>(message_loop.task_runner()); - if (!test_server_proxy->Initialize(port)) { - LOG(ERROR) << "Can't bind proxy to port " << port; - return 1; - } - LOG(INFO) << "Listening on port " << test_server_proxy->local_port(); - test_server_proxy->Start(net::IPEndPoint(remote_address, port)); - proxies.push_back(std::move(test_server_proxy)); - } - - // Run the message loop indefinitely. - base::RunLoop().Run(); - - return 0; -} \ No newline at end of file
diff --git a/build/fuchsia/net_test_server.py b/build/fuchsia/net_test_server.py deleted file mode 100644 index 2849c44..0000000 --- a/build/fuchsia/net_test_server.py +++ /dev/null
@@ -1,135 +0,0 @@ -# Copyright 2018 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 json -import logging -import os -import re -import select -import socket -import sys -import subprocess -import tempfile -import time - -DIR_SOURCE_ROOT = os.path.abspath( - os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) -sys.path.append(os.path.join(DIR_SOURCE_ROOT, 'build', 'util', 'lib', 'common')) -import chrome_test_server_spawner - -PORT_MAP_RE = re.compile('Allocated port (?P<port>\d+) for remote') -GET_PORT_NUM_TIMEOUT_SECS = 5 - - -def _ConnectPortForwardingTask(target, local_port): - """Establishes a port forwarding SSH task to a localhost TCP endpoint hosted - at port |local_port|. Blocks until port forwarding is established. - - Returns the remote port number.""" - - forwarding_flags = ['-O', 'forward', # Send SSH mux control signal. - '-R', '0:localhost:%d' % local_port, - '-v', # Get forwarded port info from stderr. - '-NT'] # Don't execute command; don't allocate terminal. - task = target.RunCommandPiped([], - ssh_args=forwarding_flags, - stderr=subprocess.PIPE) - - # SSH reports the remote dynamic port number over stderr. - # Unfortunately, the output is incompatible with Python's line buffered - # input (or vice versa), so we have to build our own buffered input system to - # pull bytes over the pipe. - poll_obj = select.poll() - poll_obj.register(task.stderr, select.POLLIN) - line = '' - timeout = time.time() + GET_PORT_NUM_TIMEOUT_SECS - while time.time() < timeout: - poll_result = poll_obj.poll(max(0, timeout - time.time())) - if poll_result: - next_char = task.stderr.read(1) - if not next_char: - break - line += next_char - if line.endswith('\n'): - line = line[:-1] - logging.debug('ssh: ' + line) - matched = PORT_MAP_RE.match(line) - if matched: - device_port = int(matched.group('port')) - logging.debug('Port forwarding established (local=%d, device=%d)' % - (local_port, device_port)) - task.wait() - return device_port - line = '' - - raise Exception('Could not establish a port forwarding connection.') - - -# Implementation of chrome_test_server_spawner.PortForwarder that uses SSH's -# remote port forwarding feature to forward ports. -class SSHPortForwarder(chrome_test_server_spawner.PortForwarder): - def __init__(self, target): - self._target = target - - # Maps the host (server) port to the device port number. - self._port_mapping = {} - - def Map(self, port_pairs): - for p in port_pairs: - _, host_port = p - self._port_mapping[host_port] = \ - _ConnectPortForwardingTask(self._target, host_port) - - def GetDevicePortForHostPort(self, host_port): - return self._port_mapping[host_port] - - def Unmap(self, device_port): - for host_port, entry in self._port_mapping.iteritems(): - if entry == device_port: - forwarding_args = [ - '-NT', '-O', 'cancel', '-R', - '%d:localhost:%d' % (self._port_mapping[host_port], host_port)] - task = self._target.RunCommandPiped([], - ssh_args=forwarding_args, - stderr=subprocess.PIPE) - task.wait() - if task.returncode != 0: - raise Exception( - 'Error %d when unmapping port %d' % (task.returncode, - device_port)) - del self._port_mapping[host_port] - return - - raise Exception('Unmap called for unknown port: %d' % device_port) - - -def SetupTestServer(target, test_concurrency): - """Provisions a forwarding test server and configures |target| to use it. - - Returns a Popen object for the test server process.""" - - logging.debug('Starting test server.') - spawning_server = chrome_test_server_spawner.SpawningServer( - 0, SSHPortForwarder(target), test_concurrency) - forwarded_port = _ConnectPortForwardingTask( - target, spawning_server.server_port) - spawning_server.Start() - - logging.debug('Test server listening for connections (port=%d)' % - spawning_server.server_port) - logging.debug('Forwarded port is %d' % forwarded_port) - - config_file = tempfile.NamedTemporaryFile(delete=True) - - # Clean up the config JSON to only pass ports. See https://crbug.com/810209 . - config_file.write(json.dumps({ - 'name': 'testserver', - 'address': '127.0.0.1', - 'spawner_url_base': 'http://localhost:%d' % forwarded_port - })) - - config_file.flush() - target.PutFile(config_file.name, '/data/net-test-server-config') - - return spawning_server
diff --git a/build/fuchsia/qemu_target.py b/build/fuchsia/qemu_target.py deleted file mode 100644 index aa356d3..0000000 --- a/build/fuchsia/qemu_target.py +++ /dev/null
@@ -1,154 +0,0 @@ -# Copyright 2018 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. - -"""Implements commands for running and interacting with Fuchsia on QEMU.""" - -import boot_data -import logging -import target -import os -import platform -import socket -import subprocess -import time - -from common import SDK_ROOT, EnsurePathExists - - -# Virtual networking configuration data for QEMU. -GUEST_NET = '192.168.3.0/24' -GUEST_IP_ADDRESS = '192.168.3.9' -HOST_IP_ADDRESS = '192.168.3.2' -GUEST_MAC_ADDRESS = '52:54:00:63:5e:7b' - - -def _GetAvailableTcpPort(): - """Finds a (probably) open port by opening and closing a listen socket.""" - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.bind(("", 0)) - port = sock.getsockname()[1] - sock.close() - return port - - -class QemuTarget(target.Target): - def __init__(self, output_dir, target_cpu, - ram_size_mb=2048): - """output_dir: The directory which will contain the files that are - generated to support the QEMU deployment. - target_cpu: The emulated target CPU architecture. - Can be 'x64' or 'arm64'.""" - super(QemuTarget, self).__init__(output_dir, target_cpu) - self._qemu_process = None - self._ram_size_mb = ram_size_mb - - def __enter__(self): - return self - - # Used by the context manager to ensure that QEMU is killed when the Python - # process exits. - def __exit__(self, exc_type, exc_val, exc_tb): - if self.IsStarted(): - self.Shutdown() - - def Start(self): - qemu_path = os.path.join(SDK_ROOT, 'qemu', 'bin', - 'qemu-system-' + self._GetTargetSdkArch()) - kernel_args = boot_data.GetKernelArgs(self._output_dir) - - # TERM=dumb tells the guest OS to not emit ANSI commands that trigger - # noisy ANSI spew from the user's terminal emulator. - kernel_args.append('TERM=dumb') - - qemu_command = [qemu_path, - '-m', str(self._ram_size_mb), - '-nographic', - '-kernel', EnsurePathExists( - boot_data.GetTargetFile(self._GetTargetSdkArch(), - 'zircon.bin')), - '-initrd', EnsurePathExists( - boot_data.GetTargetFile(self._GetTargetSdkArch(), - 'bootdata-blob.bin')), - '-smp', '4', - - # Attach the blobstore and data volumes. Use snapshot mode to discard - # any changes. - '-snapshot', - '-drive', 'file=%s,format=qcow2,if=none,id=data,snapshot=on' % - EnsurePathExists(os.path.join(self._output_dir, - 'fvm.blk.qcow2')), - '-drive', 'file=%s,format=qcow2,if=none,id=blobstore,snapshot=on' % - EnsurePathExists( - boot_data.ConfigureDataFVM(self._output_dir, - boot_data.FVM_TYPE_QCOW)), - '-device', 'virtio-blk-pci,drive=data', - '-device', 'virtio-blk-pci,drive=blobstore', - - # Use stdio for the guest OS only; don't attach the QEMU interactive - # monitor. - '-serial', 'stdio', - '-monitor', 'none', - - '-append', ' '.join(kernel_args) - ] - - # Configure the machine & CPU to emulate, based on the target architecture. - # Enable lightweight virtualization (KVM) if the host and guest OS run on - # the same architecture. - if self._target_cpu == 'arm64': - qemu_command.extend([ - '-machine','virt', - '-cpu', 'cortex-a53', - ]) - netdev_type = 'virtio-net-pci' - if platform.machine() == 'aarch64': - qemu_command.append('-enable-kvm') - else: - qemu_command.extend([ - '-machine', 'q35', - '-cpu', 'host,migratable=no', - ]) - netdev_type = 'e1000' - if platform.machine() == 'x86_64': - qemu_command.append('-enable-kvm') - - # Configure virtual network. It is used in the tests to connect to - # testserver running on the host. - netdev_config = 'user,id=net0,net=%s,dhcpstart=%s,host=%s' % \ - (GUEST_NET, GUEST_IP_ADDRESS, HOST_IP_ADDRESS) - - self._host_ssh_port = _GetAvailableTcpPort() - netdev_config += ",hostfwd=tcp::%s-:22" % self._host_ssh_port - qemu_command.extend([ - '-netdev', netdev_config, - '-device', '%s,netdev=net0,mac=%s' % (netdev_type, GUEST_MAC_ADDRESS), - ]) - - # We pass a separate stdin stream to qemu. Sharing stdin across processes - # leads to flakiness due to the OS prematurely killing the stream and the - # Python script panicking and aborting. - # The precise root cause is still nebulous, but this fix works. - # See crbug.com/741194. - logging.debug('Launching QEMU.') - logging.debug(' '.join(qemu_command)) - - stdio_flags = {'stdin': open(os.devnull), - 'stdout': open(os.devnull), - 'stderr': open(os.devnull)} - self._qemu_process = subprocess.Popen(qemu_command, **stdio_flags) - self._WaitUntilReady(); - - def Shutdown(self): - logging.info('Shutting down QEMU.') - self._qemu_process.kill() - - def GetQemuStdout(self): - return self._qemu_process.stdout - - def _GetEndpoint(self): - return ('localhost', self._host_ssh_port) - - def _GetSshConfigPath(self): - return boot_data.GetSSHConfigPath(self._output_dir) -
diff --git a/build/fuchsia/qemu_target_test.py b/build/fuchsia/qemu_target_test.py deleted file mode 100755 index cefd8f1..0000000 --- a/build/fuchsia/qemu_target_test.py +++ /dev/null
@@ -1,60 +0,0 @@ -#!/usr/bin/python -# Copyright 2018 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 qemu_target -import shutil -import subprocess -import tempfile -import time -import unittest - -TEST_PAYLOAD = "Let's get this payload across the finish line!" - -tmpdir = tempfile.mkdtemp() - -# Register the target with the context manager so that it always gets -# torn down on process exit. Otherwise there might be lingering QEMU instances -# if Python crashes or is interrupted. -with qemu_target.QemuTarget(tmpdir, 'x64') as target: - class TestQemuTarget(unittest.TestCase): - @classmethod - def setUpClass(cls): - target.Start() - - @classmethod - def tearDownClass(cls): - target.Shutdown() - shutil.rmtree(tmpdir) - - def testCopyBidirectional(self): - tmp_path = tmpdir + "/payload" - with open(tmp_path, "w") as tmpfile: - tmpfile.write(TEST_PAYLOAD) - target.PutFile(tmp_path, '/tmp/payload') - - tmp_path_roundtrip = tmp_path + ".roundtrip" - target.GetFile('/tmp/payload', tmp_path_roundtrip) - with open(tmp_path_roundtrip) as roundtrip: - self.assertEqual(TEST_PAYLOAD, roundtrip.read()) - - def testRunCommand(self): - self.assertEqual(0, target.RunCommand(['true'])) - - # This is a known bug: https://fuchsia.atlassian.net/browse/NET-349 - self.assertEqual(1, target.RunCommand(['false'])) - - def testRunCommandPiped(self): - proc = target.RunCommandPiped(['cat'], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE) - proc.stdin.write(TEST_PAYLOAD) - proc.stdin.flush() - proc.stdin.close() - self.assertEqual(TEST_PAYLOAD, proc.stdout.readline()) - proc.kill() - - - if __name__ == '__main__': - unittest.main()
diff --git a/build/fuchsia/remote_cmd.py b/build/fuchsia/remote_cmd.py deleted file mode 100644 index 67d107f..0000000 --- a/build/fuchsia/remote_cmd.py +++ /dev/null
@@ -1,109 +0,0 @@ -# Copyright 2018 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. - -"""Helper functions for remotely executing and copying files over a SSH -connection.""" - -import logging -import os -import subprocess -import sys - -_SSH = ['ssh'] -_SCP = ['scp', '-C'] # Use gzip compression. -_SSH_LOGGER = logging.getLogger('ssh') - -COPY_TO_TARGET = 0 -COPY_FROM_TARGET = 1 - - -def _IsLinkLocalIPv6(hostname): - return hostname.startswith('fe80::') - - -def RunSsh(config_path, host, port, command, silent): - """Executes an SSH command on the remote host and blocks until completion. - - config_path: Full path to SSH configuration. - host: The hostname or IP address of the remote host. - port: The port to connect to. - command: A list of strings containing the command and its arguments. - silent: If true, suppresses all output from 'ssh'. - - Returns the exit code from the remote command.""" - - ssh_command = _SSH + ['-F', config_path, - host, - '-p', str(port)] + command - _SSH_LOGGER.debug('ssh exec: ' + ' '.join(ssh_command)) - if silent: - devnull = open(os.devnull, 'w') - return subprocess.call(ssh_command, stderr=devnull, stdout=devnull) - else: - return subprocess.call(ssh_command) - - -def RunPipedSsh(config_path, host, port, command = None, ssh_args = None, - **kwargs): - """Executes an SSH command on the remote host and returns a process object - with access to the command's stdio streams. Does not block. - - config_path: Full path to SSH configuration. - host: The hostname or IP address of the remote host. - port: The port to connect to. - command: A list of strings containing the command and its arguments. - ssh_args: Arguments that will be passed to SSH. - kwargs: A dictionary of parameters to be passed to subprocess.Popen(). - The parameters can be used to override stdin and stdout, for example. - - Returns a Popen object for the command.""" - - if not command: - command = [] - if not ssh_args: - ssh_args = [] - - ssh_command = _SSH + ['-F', config_path, - host, - '-p', str(port)] + ssh_args + ['--'] + command - _SSH_LOGGER.debug(' '.join(ssh_command)) - return subprocess.Popen(ssh_command, **kwargs) - - -def RunScp(config_path, host, port, sources, dest, direction, recursive=False): - """Copies a file to or from a remote host using SCP and blocks until - completion. - - config_path: Full path to SSH configuration. - host: The hostname or IP address of the remote host. - port: The port to connect to. - sources: Paths of the files to be copied. - dest: The path that |source| will be copied to. - direction: Indicates whether the file should be copied to - or from the remote side. - Valid values are COPY_TO_TARGET or COPY_FROM_TARGET. - recursive: If true, performs a recursive copy. - - Function will raise an assertion if a failure occurred.""" - - scp_command = _SCP[:] - if ':' in host: - scp_command.append('-6') - host = '[' + host + ']' - if _SSH_LOGGER.getEffectiveLevel() == logging.DEBUG: - scp_command.append('-v') - if recursive: - scp_command.append('-r') - - if direction == COPY_TO_TARGET: - dest = "%s:%s" % (host, dest) - else: - sources = ["%s:%s" % (host, source) for source in sources] - - scp_command += ['-F', config_path, '-P', str(port)] - scp_command += sources - scp_command += [dest] - - _SSH_LOGGER.debug(' '.join(scp_command)) - subprocess.check_call(scp_command, stdout=open(os.devnull, 'w'))
diff --git a/build/fuchsia/run_package.py b/build/fuchsia/run_package.py deleted file mode 100644 index 940bb1c..0000000 --- a/build/fuchsia/run_package.py +++ /dev/null
@@ -1,181 +0,0 @@ -# Copyright 2018 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. - -"""Contains a helper function for deploying and executing a packaged -executable on a Target.""" - -import common -import json -import logging -import multiprocessing -import os -import shutil -import subprocess -import tempfile -import threading -import uuid -import select - -from symbolizer import FilterStream - -FAR = os.path.join(common.SDK_ROOT, 'tools', 'far') -PM = os.path.join(common.SDK_ROOT, 'tools', 'pm') - -# Amount of time to wait for the termination of the system log output thread. -_JOIN_TIMEOUT_SECS = 5 - - -def _AttachKernelLogReader(target): - """Attaches a kernel log reader as a long-running SSH task.""" - - logging.info('Attaching kernel logger.') - return target.RunCommandPiped(['dlog', '-f'], stdin=open(os.devnull, 'r'), - stdout=subprocess.PIPE) - - -def _ReadMergedLines(streams): - """Creates a generator which merges the buffered line output from |streams|. - The generator is terminated when the primary (first in sequence) stream - signals EOF. Absolute output ordering is not guaranteed.""" - - assert len(streams) > 0 - poll = select.poll() - streams_by_fd = {} - primary_fd = streams[0].fileno() - for s in streams: - poll.register(s.fileno(), select.POLLIN) - streams_by_fd[s.fileno()] = s - - try: - while primary_fd != None: - events = poll.poll(1) - for fileno, event in events: - if event & select.POLLIN: - yield streams_by_fd[fileno].readline() - - elif event & select.POLLHUP: - poll.unregister(fileno) - del streams_by_fd[fileno] - - if fileno == primary_fd: - primary_fd = None - finally: - for fd_to_cleanup, _ in streams_by_fd.iteritems(): - poll.unregister(fd_to_cleanup) - - -def DrainStreamToStdout(stream, quit_event): - """Outputs the contents of |stream| until |quit_event| is set.""" - - poll = select.poll() - poll.register(stream.fileno(), select.POLLIN) - try: - while not quit_event.is_set(): - events = poll.poll(1) - for fileno, event in events: - if event & select.POLLIN: - print stream.readline().rstrip() - elif event & select.POLLHUP: - break - - finally: - poll.unregister(stream.fileno()) - - -def RunPackage(output_dir, target, package_path, package_name, run_args, - system_logging, symbolizer_config=None): - """Copies the Fuchsia package at |package_path| to the target, - executes it with |run_args|, and symbolizes its output. - - output_dir: The path containing the build output files. - target: The deployment Target object that will run the package. - package_path: The path to the .far package file. - package_name: The name of app specified by package metadata. - run_args: The arguments which will be passed to the Fuchsia process. - system_logging: If true, connects a system log reader to the target. - symbolizer_config: A newline delimited list of source files contained - in the package. Omitting this parameter will disable - symbolization. - - Returns the exit code of the remote package process.""" - - - system_logger = _AttachKernelLogReader(target) if system_logging else None - package_copied = False - try: - if system_logger: - # Spin up a thread to asynchronously dump the system log to stdout - # for easier diagnoses of early, pre-execution failures. - log_output_quit_event = multiprocessing.Event() - log_output_thread = threading.Thread( - target=lambda: DrainStreamToStdout(system_logger.stdout, - log_output_quit_event)) - log_output_thread.daemon = True - log_output_thread.start() - - logging.info('Copying package to target.') - install_path = os.path.join('/data', os.path.basename(package_path)) - target.PutFile(package_path, install_path) - package_copied = True - - logging.info('Installing package.') - p = target.RunCommandPiped(['pm', 'install', install_path], - stderr=subprocess.PIPE) - output = p.stderr.readlines() - p.wait() - - if p.returncode != 0: - # Don't error out if the package already exists on the device. - if len(output) != 1 or 'ErrAlreadyExists' not in output[0]: - raise Exception('Error while installing: %s' % '\n'.join(output)) - - if system_logger: - log_output_quit_event.set() - log_output_thread.join(timeout=_JOIN_TIMEOUT_SECS) - - logging.info('Running application.') - command = ['run', package_name] + run_args - process = target.RunCommandPiped(command, - stdin=open(os.devnull, 'r'), - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - - if system_logger: - task_output = _ReadMergedLines([process.stdout, system_logger.stdout]) - else: - task_output = process.stdout - - if symbolizer_config: - # Decorate the process output stream with the symbolizer. - output = FilterStream(task_output, package_name, symbolizer_config, - output_dir) - else: - logging.warn('Symbolization is DISABLED.') - output = process.stdout - - for next_line in output: - print next_line.rstrip() - - process.wait() - if process.returncode == 0: - logging.info('Process exited normally with status code 0.') - else: - # The test runner returns an error status code if *any* tests fail, - # so we should proceed anyway. - logging.warning('Process exited with status code %d.' % - process.returncode) - - finally: - if system_logger: - logging.info('Terminating kernel log reader.') - log_output_quit_event.set() - log_output_thread.join() - system_logger.kill() - - if package_copied: - logging.info('Removing package source from device.') - target.RunCommand(['rm', install_path]) - - - return process.returncode
diff --git a/build/fuchsia/sdk.sha1 b/build/fuchsia/sdk.sha1 deleted file mode 100644 index 5a25936..0000000 --- a/build/fuchsia/sdk.sha1 +++ /dev/null
@@ -1 +0,0 @@ -6eec9421e1d7d76b0fdf4d43c2f87d5ad9f75428 \ No newline at end of file
diff --git a/build/fuchsia/symbolizer.py b/build/fuchsia/symbolizer.py deleted file mode 100644 index 67c487d..0000000 --- a/build/fuchsia/symbolizer.py +++ /dev/null
@@ -1,230 +0,0 @@ -# Copyright 2018 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 logging -import os -import re -import subprocess - -# Matches the coarse syntax of a backtrace entry. -_BACKTRACE_PREFIX_RE = re.compile(r'(\[[0-9.]+\] )?bt#(?P<frame_id>\d+): ') - -# Matches the specific fields of a backtrace entry. -# Back-trace line matcher/parser assumes that 'pc' is always present, and -# expects that 'sp' and ('binary','pc_offset') may also be provided. -_BACKTRACE_ENTRY_RE = re.compile( - r'pc 0(?:x[0-9a-f]+)?' + - r'(?: sp 0x[0-9a-f]+)?' + - r'(?: \((?P<binary>\S+),(?P<pc_offset>0x[0-9a-f]+)\))?$') - - -def _GetUnstrippedPath(path): - """If there is a binary located at |path|, returns a path to its unstripped - source. - - Returns None if |path| isn't a binary or doesn't exist in the lib.unstripped - or exe.unstripped directories.""" - - if path.endswith('.so'): - maybe_unstripped_path = os.path.normpath( - os.path.join(path, os.path.pardir, 'lib.unstripped', - os.path.basename(path))) - else: - maybe_unstripped_path = os.path.normpath( - os.path.join(path, os.path.pardir, 'exe.unstripped', - os.path.basename(path))) - - if not os.path.exists(maybe_unstripped_path): - return None - - with open(maybe_unstripped_path, 'rb') as f: - file_tag = f.read(4) - if file_tag != '\x7fELF': - logging.warn('Expected an ELF binary: ' + maybe_unstripped_path) - return None - - return maybe_unstripped_path - - -def FilterStream(stream, package_name, manifest_path, output_dir): - """Looks for backtrace lines from an iterable |stream| and symbolizes them. - Yields a stream of strings with symbolized entries replaced.""" - - return _SymbolizerFilter(package_name, - manifest_path, - output_dir).SymbolizeStream(stream) - - -class _SymbolizerFilter(object): - """Adds backtrace symbolization capabilities to a process output stream.""" - - def __init__(self, package_name, manifest_path, output_dir): - self._symbols_mapping = {} - self._output_dir = output_dir - self._package_name = package_name - - # Compute remote/local path mappings using the manifest data. - for next_line in open(manifest_path): - target, source = next_line.strip().split('=') - stripped_binary_path = _GetUnstrippedPath(os.path.join(output_dir, - source)) - if not stripped_binary_path: - continue - - self._symbols_mapping[os.path.basename(target)] = stripped_binary_path - self._symbols_mapping[target] = stripped_binary_path - if target == 'bin/app': - self._symbols_mapping[package_name] = stripped_binary_path - logging.debug('Symbols: %s -> %s' % (source, target)) - - def _SymbolizeEntries(self, entries): - """Symbolizes the parsed backtrace |entries| by calling addr2line. - - Returns a set of (frame_id, result) pairs.""" - - filename_re = re.compile(r'at ([-._a-zA-Z0-9/+]+):(\d+)') - - # Use addr2line to symbolize all the |pc_offset|s in |entries| in one go. - # Entries with no |debug_binary| are also processed here, so that we get - # consistent output in that case, with the cannot-symbolize case. - addr2line_output = None - if entries[0].has_key('debug_binary'): - addr2line_args = (['addr2line', '-Cipf', '-p', - '--exe=' + entries[0]['debug_binary']] + - map(lambda entry: entry['pc_offset'], entries)) - addr2line_output = subprocess.check_output(addr2line_args).splitlines() - assert addr2line_output - - results = {} - for entry in entries: - raw, frame_id = entry['raw'], entry['frame_id'] - prefix = '#%s: ' % frame_id - - if not addr2line_output: - # Either there was no addr2line output, or too little of it. - filtered_line = raw - else: - output_line = addr2line_output.pop(0) - - # Relativize path to the current working (output) directory if we see - # a filename. - def RelativizePath(m): - relpath = os.path.relpath(os.path.normpath(m.group(1))) - return 'at ' + relpath + ':' + m.group(2) - filtered_line = filename_re.sub(RelativizePath, output_line) - - if '??' in filtered_line.split(): - # If symbolization fails just output the raw backtrace. - filtered_line = raw - else: - # Release builds may inline things, resulting in "(inlined by)" lines. - inlined_by_prefix = " (inlined by)" - while (addr2line_output and - addr2line_output[0].startswith(inlined_by_prefix)): - inlined_by_line = \ - '\n' + (' ' * len(prefix)) + addr2line_output.pop(0) - filtered_line += filename_re.sub(RelativizePath, inlined_by_line) - - results[entry['frame_id']] = prefix + filtered_line - - return results - - def _LookupDebugBinary(self, entry): - """Looks up the binary listed in |entry| in the |_symbols_mapping|. - Returns the corresponding host-side binary's filename, or None.""" - - binary = entry['binary'] - if not binary: - return None - - app_prefix = 'app:' - if binary.startswith(app_prefix): - binary = binary[len(app_prefix):] - - # We change directory into /system/ before running the target executable, so - # all paths are relative to "/system/", and will typically start with "./". - # Some crashes still uses the full filesystem path, so cope with that, too. - pkg_prefix = '/pkg/' - cwd_prefix = './' - if binary.startswith(cwd_prefix): - binary = binary[len(cwd_prefix):] - elif binary.startswith(pkg_prefix): - binary = binary[len(pkg_prefix):] - # Allow other paths to pass-through; sometimes neither prefix is present. - - if binary in self._symbols_mapping: - return self._symbols_mapping[binary] - - # |binary| may be truncated by the crashlogger, so if there is a unique - # match for the truncated name in |symbols_mapping|, use that instead. - matches = filter(lambda x: x.startswith(binary), - self._symbols_mapping.keys()) - if len(matches) == 1: - return self._symbols_mapping[matches[0]] - - return None - - def _SymbolizeBacktrace(self, backtrace): - """Group |backtrace| entries according to the associated binary, and locate - the path to the debug symbols for that binary, if any.""" - - batches = {} - - for entry in backtrace: - debug_binary = self._LookupDebugBinary(entry) - if debug_binary: - entry['debug_binary'] = debug_binary - batches.setdefault(debug_binary, []).append(entry) - - # Run _SymbolizeEntries on each batch and collate the results. - symbolized = {} - for batch in batches.itervalues(): - symbolized.update(self._SymbolizeEntries(batch)) - - # Map each entry to its symbolized form, by frame-id, and return the list. - return map(lambda entry: symbolized[entry['frame_id']], backtrace) - - def SymbolizeStream(self, stream): - """Creates a symbolized logging stream object using the output from - |stream|.""" - - # A buffer of backtrace entries awaiting symbolization, stored as dicts: - # raw: The original back-trace line that followed the prefix. - # frame_id: backtrace frame number (starting at 0). - # binary: path to executable code corresponding to the current frame. - # pc_offset: memory offset within the executable. - backtrace_entries = [] - - # Read from the stream until we hit EOF. - for line in stream: - line = line.rstrip() - - # Look for the back-trace prefix, otherwise just emit the line. - matched = _BACKTRACE_PREFIX_RE.match(line) - if not matched: - yield line - continue - backtrace_line = line[matched.end():] - - # If this was the end of a back-trace then symbolize and emit it. - frame_id = matched.group('frame_id') - if backtrace_line == 'end': - if backtrace_entries: - for processed in self._SymbolizeBacktrace(backtrace_entries): - yield processed - backtrace_entries = [] - continue - - # Parse the program-counter offset, etc into |backtrace_entries|. - matched = _BACKTRACE_ENTRY_RE.match(backtrace_line) - if matched: - # |binary| and |pc_offset| will be None if not present. - backtrace_entries.append( - {'raw': backtrace_line, 'frame_id': frame_id, - 'binary': matched.group('binary'), - 'pc_offset': matched.group('pc_offset')}) - else: - backtrace_entries.append( - {'raw': backtrace_line, 'frame_id': frame_id, - 'binary': None, 'pc_offset': None})
diff --git a/build/fuchsia/target.py b/build/fuchsia/target.py deleted file mode 100644 index 8eb5fcf..0000000 --- a/build/fuchsia/target.py +++ /dev/null
@@ -1,168 +0,0 @@ -# Copyright 2018 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 logging -import os -import remote_cmd -import subprocess -import sys -import tempfile -import time - -_SHUTDOWN_CMD = ['dm', 'poweroff'] -_ATTACH_MAX_RETRIES = 10 -_ATTACH_RETRY_INTERVAL = 1 - - -class FuchsiaTargetException(Exception): - def __init__(self, message): - super(FuchsiaTargetException, self).__init__(message) - - -class Target(object): - """Base class representing a Fuchsia deployment target.""" - - def __init__(self, output_dir, target_cpu): - self._output_dir = output_dir - self._started = False - self._dry_run = False - self._target_cpu = target_cpu - - # Functions used by the Python context manager for teardown. - def __enter__(self): - return self - def __exit__(self, exc_type, exc_val, exc_tb): - return self - - def Start(self): - """Handles the instantiation and connection process for the Fuchsia - target instance.""" - - pass - - def IsStarted(self): - """Returns True if the Fuchsia target instance is ready to accept - commands.""" - - return self._started - - def IsNewInstance(self): - """Returns True if the connected target instance is newly provisioned.""" - - return True - - def RunCommandPiped(self, command, **kwargs): - """Starts a remote command and immediately returns a Popen object for the - command. The caller may interact with the streams, inspect the status code, - wait on command termination, etc. - - command: A list of strings representing the command and arguments. - kwargs: A dictionary of parameters to be passed to subprocess.Popen(). - The parameters can be used to override stdin and stdout, for - example. - - Returns: a Popen object. - - Note: method does not block.""" - - self._AssertIsStarted() - logging.debug('running (non-blocking) \'%s\'.' % ' '.join(command)) - host, port = self._GetEndpoint() - return remote_cmd.RunPipedSsh(self._GetSshConfigPath(), host, port, command, - **kwargs) - - def RunCommand(self, command, silent=False): - """Executes a remote command and waits for it to finish executing. - - Returns the exit code of the command.""" - - self._AssertIsStarted() - logging.debug('running \'%s\'.' % ' '.join(command)) - host, port = self._GetEndpoint() - return remote_cmd.RunSsh(self._GetSshConfigPath(), host, port, command, - silent) - - def PutFile(self, source, dest, recursive=False): - """Copies a file from the local filesystem to the target filesystem. - - source: The path of the file being copied. - dest: The path on the remote filesystem which will be copied to. - recursive: If true, performs a recursive copy.""" - - assert type(source) is str - self.PutFiles([source], dest, recursive) - - def PutFiles(self, sources, dest, recursive=False): - """Copies files from the local filesystem to the target filesystem. - - sources: List of local file paths to copy from, or a single path. - dest: The path on the remote filesystem which will be copied to. - recursive: If true, performs a recursive copy.""" - - assert type(sources) is tuple or type(sources) is list - self._AssertIsStarted() - host, port = self._GetEndpoint() - logging.debug('copy local:%s => remote:%s' % (sources, dest)) - command = remote_cmd.RunScp(self._GetSshConfigPath(), host, port, - sources, dest, remote_cmd.COPY_TO_TARGET, - recursive) - - def GetFile(self, source, dest): - """Copies a file from the target filesystem to the local filesystem. - - source: The path of the file being copied. - dest: The path on the local filesystem which will be copied to.""" - assert type(source) is str - self.GetFiles([source], dest) - - def GetFiles(self, sources, dest): - """Copies files from the target filesystem to the local filesystem. - - sources: List of remote file paths to copy. - dest: The path on the local filesystem which will be copied to.""" - assert type(sources) is tuple or type(sources) is list - self._AssertIsStarted() - host, port = self._GetEndpoint() - logging.debug('copy remote:%s => local:%s' % (sources, dest)) - return remote_cmd.RunScp(self._GetSshConfigPath(), host, port, - sources, dest, remote_cmd.COPY_FROM_TARGET) - - def _GetEndpoint(self): - """Returns a (host, port) tuple for the SSH connection to the target.""" - raise NotImplementedError - - def _GetTargetSdkArch(self): - """Returns the Fuchsia SDK architecture name for the target CPU.""" - if self._target_cpu == 'arm64': - return 'aarch64' - elif self._target_cpu == 'x64': - return 'x86_64' - raise FuchsiaTargetException('Unknown target_cpu:' + self._target_cpu) - - def _AssertIsStarted(self): - assert self.IsStarted() - - def _WaitUntilReady(self, retries=_ATTACH_MAX_RETRIES): - logging.info('Connecting to Fuchsia using SSH.') - for _ in xrange(retries+1): - host, port = self._GetEndpoint() - if remote_cmd.RunSsh(self._GetSshConfigPath(), host, port, ['true'], - True) == 0: - logging.info('Connected!') - self._started = True - return True - time.sleep(_ATTACH_RETRY_INTERVAL) - logging.error('Timeout limit reached.') - raise FuchsiaTargetException('Couldn\'t connect using SSH.') - - def _GetSshConfigPath(self, path): - raise NotImplementedError - - def _GetTargetSdkArch(self): - """Returns the Fuchsia SDK architecture name for the target CPU.""" - if self._target_cpu == 'arm64': - return 'aarch64' - elif self._target_cpu == 'x64': - return 'x86_64' - raise Exception('Unknown target_cpu %s:' % self._target_cpu)
diff --git a/build/fuchsia/test_runner.py b/build/fuchsia/test_runner.py deleted file mode 100755 index e3b21a3..0000000 --- a/build/fuchsia/test_runner.py +++ /dev/null
@@ -1,116 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2018 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. - -"""Deploys and runs a test package on a Fuchsia target.""" - -import argparse -import json -import logging -import os -import socket -import subprocess -import sys -import tempfile -import time - -from common_args import AddCommonArgs, ConfigureLogging, GetDeploymentTargetForArgs -from net_test_server import SetupTestServer -from run_package import RunPackage - -DEFAULT_TEST_CONCURRENCY = 4 -TEST_RESULT_PATH = '/data/test_summary.json' -TEST_FILTER_PATH = '/data/test_filter.txt' - -def main(): - parser = argparse.ArgumentParser() - AddCommonArgs(parser) - parser.add_argument('--gtest_filter', - help='GTest filter to use in place of any default.') - parser.add_argument('--gtest_repeat', - help='GTest repeat value to use. This also disables the ' - 'test launcher timeout.') - parser.add_argument('--gtest_break_on_failure', action='store_true', - default=False, - help='Should GTest break on failure; useful with ' - '--gtest_repeat.') - parser.add_argument('--single-process-tests', action='store_true', - default=False, - help='Runs the tests and the launcher in the same ' - 'process. Useful for debugging.') - parser.add_argument('--test-launcher-batch-limit', - type=int, - help='Sets the limit of test batch to run in a single ' - 'process.') - # --test-launcher-filter-file is specified relative to --output-directory, - # so specifying type=os.path.* will break it. - parser.add_argument('--test-launcher-filter-file', - default=None, - help='Override default filter file passed to target test ' - 'process. Set an empty path to disable filtering.') - parser.add_argument('--test-launcher-jobs', - type=int, - help='Sets the number of parallel test jobs.') - parser.add_argument('--test-launcher-summary-output', - help='Where the test launcher will output its json.') - parser.add_argument('--enable-test-server', action='store_true', - default=False, - help='Enable Chrome test server spawner.') - parser.add_argument('child_args', nargs='*', - help='Arguments for the test process.') - args = parser.parse_args() - ConfigureLogging(args) - - child_args = ['--test-launcher-retry-limit=0'] - if args.single_process_tests: - child_args.append('--single-process-tests') - if args.test_launcher_batch_limit: - child_args.append('--test-launcher-batch-limit=%d' % - args.test_launcher_batch_limit) - - test_concurrency = args.test_launcher_jobs \ - if args.test_launcher_jobs else DEFAULT_TEST_CONCURRENCY - child_args.append('--test-launcher-jobs=%d' % test_concurrency) - - if args.gtest_filter: - child_args.append('--gtest_filter=' + args.gtest_filter) - if args.gtest_repeat: - child_args.append('--gtest_repeat=' + args.gtest_repeat) - child_args.append('--test-launcher-timeout=-1') - if args.gtest_break_on_failure: - child_args.append('--gtest_break_on_failure') - if args.child_args: - child_args.extend(args.child_args) - - if args.test_launcher_summary_output: - child_args.append('--test-launcher-summary-output=' + TEST_RESULT_PATH) - - with GetDeploymentTargetForArgs(args) as target: - target.Start() - - if args.test_launcher_filter_file: - target.PutFile(args.test_launcher_filter_file, TEST_FILTER_PATH) - child_args.append('--test-launcher-filter-file=' + TEST_FILTER_PATH) - - forwarder = None - if args.enable_test_server: - test_server = SetupTestServer(target, test_concurrency) - - returncode = RunPackage( - args.output_directory, target, args.package, args.package_name, - child_args, args.include_system_logs, args.package_manifest) - - if forwarder: - forwarder.terminate() - forwarder.wait() - - if args.test_launcher_summary_output: - target.GetFile(TEST_RESULT_PATH, args.test_launcher_summary_output) - - return returncode - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/fuchsia/update_sdk.py b/build/fuchsia/update_sdk.py deleted file mode 100755 index e325352..0000000 --- a/build/fuchsia/update_sdk.py +++ /dev/null
@@ -1,111 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""Updates the Fuchsia SDK to the given revision. Should be used in a 'hooks_os' -entry so that it only runs when .gclient's target_os includes 'fuchsia'.""" - -import os -import shutil -import subprocess -import sys -import tarfile -import tempfile - -SDK_HASH_FILE = os.path.join(os.path.dirname(__file__), 'sdk.sha1') - -REPOSITORY_ROOT = os.path.abspath(os.path.join( - os.path.dirname(__file__), '..', '..')) -sys.path.append(os.path.join(REPOSITORY_ROOT, 'build')) - -import find_depot_tools - -SDK_SUBDIRS = ["arch", "pkg", "qemu", "sysroot", "target", - "toolchain_libs", "tools"] - - -def EnsureDirExists(path): - if not os.path.exists(path): - print 'Creating directory %s' % path - os.makedirs(path) - - -# Removes previous SDK from the specified path if it's detected there. -def Cleanup(path): - hash_file = os.path.join(path, '.hash') - if os.path.exists(hash_file): - print 'Removing old SDK from %s.' % path - for d in SDK_SUBDIRS: - to_remove = os.path.join(path, d) - if os.path.isdir(to_remove): - shutil.rmtree(to_remove) - os.remove(hash_file) - - -# Updates the modification timestamps of |path| and its contents to the -# current time. -def UpdateTimestampsRecursive(path): - for root, dirs, files in os.walk(path): - for f in files: - os.utime(os.path.join(root, f), None) - for d in dirs: - os.utime(os.path.join(root, d), None) - - -def main(): - if len(sys.argv) != 1: - print >>sys.stderr, 'usage: %s' % sys.argv[0] - return 1 - - # Previously SDK was unpacked in //third_party/fuchsia-sdk instead of - # //third_party/fuchsia-sdk/sdk . Remove the old files if they are still - # there. - Cleanup(os.path.join(REPOSITORY_ROOT, 'third_party', 'fuchsia-sdk')) - - with open(SDK_HASH_FILE, 'r') as f: - sdk_hash = f.read().strip() - - if not sdk_hash: - print >>sys.stderr, 'No SHA1 found in %s' % SDK_HASH_FILE - return 1 - - output_dir = os.path.join(REPOSITORY_ROOT, 'third_party', 'fuchsia-sdk', - 'sdk') - - hash_filename = os.path.join(output_dir, '.hash') - if os.path.exists(hash_filename): - with open(hash_filename, 'r') as f: - if f.read().strip() == sdk_hash: - # Nothing to do. - return 0 - - print 'Downloading SDK %s...' % sdk_hash - - if os.path.isdir(output_dir): - shutil.rmtree(output_dir) - - fd, tmp = tempfile.mkstemp() - os.close(fd) - - try: - bucket = 'gs://fuchsia/sdk/linux-amd64/' - cmd = [os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, 'gsutil.py'), - 'cp', bucket + sdk_hash, tmp] - subprocess.check_call(cmd) - with open(tmp, 'rb') as f: - EnsureDirExists(output_dir) - tarfile.open(mode='r:gz', fileobj=f).extractall(path=output_dir) - finally: - os.remove(tmp) - - with open(hash_filename, 'w') as f: - f.write(sdk_hash) - - UpdateTimestampsRecursive(output_dir) - - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/gdb-add-index b/build/gdb-add-index deleted file mode 100755 index 73367c8..0000000 --- a/build/gdb-add-index +++ /dev/null
@@ -1,184 +0,0 @@ -#!/bin/bash -# Copyright (c) 2012 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. -# -# Saves the gdb index for a given binary and its shared library dependencies. -# -# This will run gdb index in parallel on a number of binaries using SIGUSR1 -# as the communication mechanism to simulate a semaphore. Because of the -# nature of this technique, using "set -e" is very difficult. The SIGUSR1 -# terminates a "wait" with an error which we need to interpret. -# -# When modifying this code, most of the real logic is in the index_one_file -# function. The rest is cleanup + sempahore plumbing. - -function usage_exit { - echo "Usage: $0 [-f] [-r] [-n] <paths-to-binaries>..." - echo " -f forces replacement of an existing index." - echo " -r removes the index section." - echo " -n don't extract the dependencies of each binary with lld." - echo " e.g., $0 -n out/Debug/lib.unstripped/lib*" - echo - echo " Set TOOLCHAIN_PREFIX to use a non-default set of binutils." - exit 1 -} - -# Cleanup temp directory and ensure all child jobs are dead-dead. -function on_exit { - trap "" EXIT USR1 # Avoid reentrancy. - - local jobs=$(jobs -p) - if [ -n "$jobs" ]; then - echo -n "Killing outstanding index jobs..." - kill -KILL $(jobs -p) - wait - echo "done" - fi - - if [ -d "$directory" ]; then - echo -n "Removing temp directory $directory..." - rm -rf "$directory" - echo done - fi -} - -# Add index to one binary. -function index_one_file { - local file=$1 - local basename=$(basename "$file") - local should_index_this_file="${should_index}" - - local readelf_out=$(${TOOLCHAIN_PREFIX}readelf -S "$file") - if [[ $readelf_out =~ "gdb_index" ]]; then - if $remove_index; then - ${TOOLCHAIN_PREFIX}objcopy --remove-section .gdb_index "$file" - echo "Removed index from $basename." - else - echo "Skipped $basename -- already contains index." - should_index_this_file=false - fi - fi - - if $should_index_this_file; then - local start=$(date +"%s%N") - echo "Adding index to $basename..." - - ${TOOLCHAIN_PREFIX}gdb -batch "$file" -ex "save gdb-index $directory" \ - -ex "quit" - local index_file="$directory/$basename.gdb-index" - if [ -f "$index_file" ]; then - ${TOOLCHAIN_PREFIX}objcopy --add-section .gdb_index="$index_file" \ - --set-section-flags .gdb_index=readonly "$file" "$file" - local finish=$(date +"%s%N") - local elapsed=$(((finish - start) / 1000000)) - echo " ...$basename indexed. [${elapsed}ms]" - else - echo " ...$basename unindexable." - fi - fi -} - -# Functions that when combined, concurrently index all files in FILES_TO_INDEX -# array. The global FILES_TO_INDEX is declared in the main body of the script. -function async_index { - # Start a background subshell to run the index command. - { - index_one_file $1 - kill -SIGUSR1 $$ # $$ resolves to the parent script. - exit 129 # See comment above wait loop at bottom. - } & -} - -cur_file_num=0 -function index_next { - if ((cur_file_num >= ${#files_to_index[@]})); then - return - fi - - async_index "${files_to_index[cur_file_num]}" - ((cur_file_num += 1)) || true -} - -######## -### Main body of the script. - -remove_index=false -should_index=true -should_index_deps=true -files_to_index=() -while (($# > 0)); do - case "$1" in - -h) - usage_exit - ;; - -f) - remove_index=true - ;; - -r) - remove_index=true - should_index=false - ;; - -n) - should_index_deps=false - ;; - -*) - echo "Invalid option: $1" >&2 - usage_exit - ;; - *) - if [[ ! -f "$1" ]]; then - echo "Path $1 does not exist." - exit 1 - fi - files_to_index+=("$1") - ;; - esac - shift -done - -if ((${#files_to_index[@]} == 0)); then - usage_exit -fi - -dependencies=() -if $should_index_deps; then - for file in "${files_to_index[@]}"; do - # Append the shared library dependencies of this file that - # have the same dirname. The dirname is a signal that these - # shared libraries were part of the same build as the binary. - dependencies+=( \ - $(ldd "$file" 2>/dev/null \ - | grep $(dirname "$file") \ - | sed "s/.*[ \t]\(.*\) (.*/\1/") \ - ) - done -fi -files_to_index+=("${dependencies[@]}") - -# Ensure we cleanup on on exit. -trap on_exit EXIT INT - -# We're good to go! Create temp directory for index files. -directory=$(mktemp -d) -echo "Made temp directory $directory." - -# Start concurrent indexing. -trap index_next USR1 - -# 4 is an arbitrary default. When changing, remember we are likely IO bound -# so basing this off the number of cores is not sensible. -index_tasks=${INDEX_TASKS:-4} -for ((i = 0; i < index_tasks; i++)); do - index_next -done - -# Do a wait loop. Bash waits that terminate due a trap have an exit -# code > 128. We also ensure that our subshell's "normal" exit occurs with -# an exit code > 128. This allows us to do consider a > 128 exit code as -# an indication that the loop should continue. Unfortunately, it also means -# we cannot use set -e since technically the "wait" is failing. -wait -while (($? > 128)); do - wait -done
diff --git a/build/gen.py b/build/gen.py new file mode 100755 index 0000000..cdb1d44 --- /dev/null +++ b/build/gen.py
@@ -0,0 +1,748 @@ +#!/usr/bin/env python +# Copyright 2014 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. + +"""Generates build.ninja that will build GN.""" + +import contextlib +import errno +import logging +import optparse +import os +import platform +import shutil +import subprocess +import sys +import tempfile + +BOOTSTRAP_DIR = os.path.dirname(os.path.abspath(__file__)) +REPO_ROOT = os.path.dirname(BOOTSTRAP_DIR) +GN_ROOT = os.path.join(REPO_ROOT, 'tools', 'gn') + +is_win = sys.platform.startswith('win') +is_linux = sys.platform.startswith('linux') +is_mac = sys.platform.startswith('darwin') +is_aix = sys.platform.startswith('aix') +is_posix = is_linux or is_mac or is_aix + + +def main(argv): + parser = optparse.OptionParser(description=sys.modules[__name__].__doc__) + parser.add_option('-d', '--debug', action='store_true', + help='Do a debug build. Defaults to release build.') + parser.add_option('-v', '--verbose', action='store_true', + help='Log more details') + options, args = parser.parse_args(argv) + + if args: + parser.error('Unrecognized command line arguments: %s.' % ', '.join(args)) + + logging.basicConfig(level=logging.DEBUG if options.verbose else logging.ERROR) + + out_dir = os.path.join(REPO_ROOT, 'out') + if not os.path.isdir(out_dir): + os.makedirs(out_dir) + write_gn_ninja(os.path.join(out_dir, 'build.ninja'), options) + return 0 + + +def write_generic_ninja(path, static_libraries, executables, + cc, cxx, ar, ld, + cflags=[], cflags_cc=[], ldflags=[], + include_dirs=[], solibs=[]): + ninja_header_lines = [ + 'cc = ' + cc, + 'cxx = ' + cxx, + 'ar = ' + ar, + 'ld = ' + ld, + '', + ] + + if is_win: + template_filename = 'build_vs.ninja.template' + elif is_mac: + template_filename = 'build_mac.ninja.template' + elif is_aix: + template_filename = 'build_aix.ninja.template' + else: + template_filename = 'build.ninja.template' + + with open(os.path.join(BOOTSTRAP_DIR, template_filename)) as f: + ninja_template = f.read() + + if is_win: + executable_ext = '.exe' + library_ext = '.lib' + object_ext = '.obj' + else: + executable_ext = '' + library_ext = '.a' + object_ext = '.o' + + def escape_path_ninja(path): + return path.replace('$ ', '$$ ').replace(' ', '$ ').replace(':', '$:') + + def src_to_obj(path): + return escape_path_ninja('%s' % os.path.splitext(path)[0] + object_ext) + + def library_to_a(library): + return '%s%s' % (library, library_ext) + + ninja_lines = [] + def build_source(src_file, settings): + ninja_lines.extend([ + 'build %s: %s %s' % (src_to_obj(src_file), + settings['tool'], + escape_path_ninja( + os.path.join(REPO_ROOT, src_file))), + ' includes = %s' % ' '.join( + ['-I' + escape_path_ninja(dirname) for dirname in + include_dirs + settings.get('include_dirs', [])]), + ' cflags = %s' % ' '.join(cflags + settings.get('cflags', [])), + ' cflags_cc = %s' % + ' '.join(cflags_cc + settings.get('cflags_cc', [])), + ]) + + for library, settings in static_libraries.iteritems(): + for src_file in settings['sources']: + build_source(src_file, settings) + + ninja_lines.append('build %s: alink_thin %s' % ( + library_to_a(library), + ' '.join([src_to_obj(src_file) for src_file in settings['sources']]))) + + for executable, settings in executables.iteritems(): + for src_file in settings['sources']: + build_source(src_file, settings) + + ninja_lines.extend([ + 'build %s%s: link %s | %s' % ( + executable, executable_ext, + ' '.join([src_to_obj(src_file) for src_file in settings['sources']]), + ' '.join([library_to_a(library) for library in settings['libs']])), + ' ldflags = %s' % ' '.join(ldflags), + ' solibs = %s' % ' '.join(solibs), + ' libs = %s' % ' '.join( + [library_to_a(library) for library in settings['libs']]), + ]) + + ninja_lines.append('') # Make sure the file ends with a newline. + + with open(path, 'w') as f: + f.write('\n'.join(ninja_header_lines)) + f.write(ninja_template) + f.write('\n'.join(ninja_lines)) + +def write_gn_ninja(path, options): + if is_win: + cc = os.environ.get('CC', 'cl.exe') + cxx = os.environ.get('CXX', 'cl.exe') + ld = os.environ.get('LD', 'link.exe') + ar = os.environ.get('AR', 'lib.exe') + elif is_aix: + cc = os.environ.get('CC', 'gcc') + cxx = os.environ.get('CXX', 'c++') + ld = os.environ.get('LD', cxx) + ar = os.environ.get('AR', 'ar -X64') + else: + cc = os.environ.get('CC', 'cc') + cxx = os.environ.get('CXX', 'c++') + ld = cxx + ar = os.environ.get('AR', 'ar') + + cflags = os.environ.get('CFLAGS', '').split() + cflags_cc = os.environ.get('CXXFLAGS', '').split() + ldflags = os.environ.get('LDFLAGS', '').split() + include_dirs = [REPO_ROOT, os.path.join(REPO_ROOT, 'src')] + libs = [] + + # //base/allocator/allocator_extension.cc needs this macro defined, + # otherwise there would be link errors. + cflags.extend(['-DNO_TCMALLOC', '-D__STDC_FORMAT_MACROS']) + + if is_posix: + if options.debug: + cflags.extend(['-O0', '-g']) + else: + # The linux::ppc64 BE binary doesn't "work" when + # optimization level is set to 2 (0 works fine). + # Note that the current bootstrap script has no way to detect host_cpu. + # This can be easily fixed once we start building using a GN binary, + # as the optimization flag can then just be set using the + # logic inside //build/toolchain. + cflags.extend(['-O2', '-g0']) + + cflags.extend([ + '-D_FILE_OFFSET_BITS=64', + '-D__STDC_CONSTANT_MACROS', '-D__STDC_FORMAT_MACROS', + '-pthread', + '-pipe', + '-fno-exceptions' + ]) + cflags_cc.extend(['-std=c++14', '-Wno-c++11-narrowing']) + if is_aix: + cflags.extend(['-maix64']) + ldflags.extend([ '-maix64 -Wl,-bbigtoc' ]) + elif is_win: + if not options.debug: + cflags.extend(['/Ox', '/DNDEBUG', '/GL']) + ldflags.extend(['/LTCG', '/OPT:REF', '/OPT:ICF']) + + cflags.extend([ + '/FS', + '/Gy', + '/W3', '/wd4244', + '/Zi', + '/DWIN32_LEAN_AND_MEAN', '/DNOMINMAX', + '/D_CRT_SECURE_NO_DEPRECATE', '/D_SCL_SECURE_NO_DEPRECATE', + '/D_WIN32_WINNT=0x0A00', '/DWINVER=0x0A00', + '/DUNICODE', '/D_UNICODE', + ]) + cflags_cc.extend([ + '/GR-', + '/D_HAS_EXCEPTIONS=0', + ]) + + ldflags.extend(['/MACHINE:x64']) + + static_libraries = { + 'base': {'sources': [], 'tool': 'cxx', 'include_dirs': []}, + 'dynamic_annotations': {'sources': [], 'tool': 'cc', 'include_dirs': []}, + 'gn_lib': {'sources': [], 'tool': 'cxx', 'include_dirs': []}, + } + + executables = { + 'gn': {'sources': ['tools/gn/gn_main.cc'], + 'tool': 'cxx', 'include_dirs': [], 'libs': []}, + } + + for name in os.listdir(GN_ROOT): + if not name.endswith('.cc'): + continue + if name.endswith('_unittest.cc'): + continue + if name == 'run_all_unittests.cc': + continue + if name == 'test_with_scheduler.cc': + continue + if name == 'gn_main.cc': + continue + full_path = os.path.join(GN_ROOT, name) + static_libraries['gn_lib']['sources'].append( + os.path.relpath(full_path, REPO_ROOT)) + + static_libraries['dynamic_annotations']['sources'].extend([ + 'base/third_party/dynamic_annotations/dynamic_annotations.c', + 'base/third_party/superfasthash/superfasthash.c', + ]) + static_libraries['base']['sources'].extend([ + 'base/allocator/allocator_check.cc', + 'base/allocator/allocator_extension.cc', + 'base/at_exit.cc', + 'base/base_paths.cc', + 'base/base_switches.cc', + 'base/callback_helpers.cc', + 'base/callback_internal.cc', + 'base/command_line.cc', + 'base/debug/activity_tracker.cc', + 'base/debug/alias.cc', + 'base/debug/crash_logging.cc', + 'base/debug/dump_without_crashing.cc', + 'base/debug/stack_trace.cc', + 'base/debug/task_annotator.cc', + 'base/debug/thread_heap_usage_tracker.cc', + 'base/environment.cc', + 'base/feature_list.cc', + 'base/files/file.cc', + 'base/files/file_enumerator.cc', + 'base/files/file_path.cc', + 'base/files/file_path_constants.cc', + 'base/files/file_tracing.cc', + 'base/files/file_util.cc', + 'base/files/important_file_writer.cc', + 'base/files/memory_mapped_file.cc', + 'base/files/scoped_file.cc', + 'base/hash.cc', + 'base/json/json_parser.cc', + 'base/json/json_reader.cc', + 'base/json/json_string_value_serializer.cc', + 'base/json/json_writer.cc', + 'base/json/string_escape.cc', + 'base/lazy_instance_helpers.cc', + 'base/location.cc', + 'base/logging.cc', + 'base/md5.cc', + 'base/memory/platform_shared_memory_region.cc', + 'base/memory/read_only_shared_memory_region.cc', + 'base/memory/ref_counted.cc', + 'base/memory/ref_counted_memory.cc', + 'base/memory/shared_memory_mapping.cc', + 'base/memory/shared_memory_handle.cc', + 'base/memory/shared_memory_tracker.cc', + 'base/memory/weak_ptr.cc', + 'base/message_loop/incoming_task_queue.cc', + 'base/message_loop/message_loop.cc', + 'base/message_loop/message_loop_current.cc', + 'base/message_loop/message_loop_task_runner.cc', + 'base/message_loop/message_pump.cc', + 'base/message_loop/message_pump_default.cc', + 'base/message_loop/watchable_io_message_pump_posix.cc', + 'base/metrics/bucket_ranges.cc', + 'base/metrics/dummy_histogram.cc', + 'base/metrics/field_trial.cc', + 'base/metrics/field_trial_param_associator.cc', + 'base/metrics/field_trial_params.cc', + 'base/metrics/histogram.cc', + 'base/metrics/histogram_base.cc', + 'base/metrics/histogram_functions.cc', + 'base/metrics/histogram_samples.cc', + 'base/metrics/histogram_snapshot_manager.cc', + 'base/metrics/metrics_hashes.cc', + 'base/metrics/persistent_histogram_allocator.cc', + 'base/metrics/persistent_memory_allocator.cc', + 'base/metrics/persistent_sample_map.cc', + 'base/metrics/sample_map.cc', + 'base/metrics/sample_vector.cc', + 'base/metrics/sparse_histogram.cc', + 'base/metrics/statistics_recorder.cc', + 'base/observer_list_threadsafe.cc', + 'base/path_service.cc', + 'base/pending_task.cc', + 'base/pickle.cc', + 'base/process/kill.cc', + 'base/process/memory.cc', + 'base/process/process_handle.cc', + 'base/process/process_iterator.cc', + 'base/process/process_metrics.cc', + 'base/rand_util.cc', + 'base/run_loop.cc', + 'base/sequence_token.cc', + 'base/sequence_checker_impl.cc', + 'base/sequenced_task_runner.cc', + 'base/sha1.cc', + 'base/strings/pattern.cc', + 'base/strings/string_number_conversions.cc', + 'base/strings/string_piece.cc', + 'base/strings/string_split.cc', + 'base/strings/string_util.cc', + 'base/strings/string_util_constants.cc', + 'base/strings/stringprintf.cc', + 'base/strings/utf_string_conversion_utils.cc', + 'base/strings/utf_string_conversions.cc', + 'base/synchronization/atomic_flag.cc', + 'base/synchronization/lock.cc', + 'base/sys_info.cc', + 'base/task_runner.cc', + 'base/task_scheduler/delayed_task_manager.cc', + 'base/task_scheduler/environment_config.cc', + 'base/task_scheduler/post_task.cc', + 'base/task_scheduler/priority_queue.cc', + 'base/task_scheduler/scheduler_lock_impl.cc', + 'base/task_scheduler/scheduler_single_thread_task_runner_manager.cc', + 'base/task_scheduler/scheduler_worker.cc', + 'base/task_scheduler/scheduler_worker_pool.cc', + 'base/task_scheduler/scheduler_worker_pool_impl.cc', + 'base/task_scheduler/scheduler_worker_pool_params.cc', + 'base/task_scheduler/scheduler_worker_stack.cc', + 'base/task_scheduler/scoped_set_task_priority_for_current_thread.cc', + 'base/task_scheduler/sequence.cc', + 'base/task_scheduler/sequence_sort_key.cc', + 'base/task_scheduler/service_thread.cc', + 'base/task_scheduler/task.cc', + 'base/task_scheduler/task_scheduler.cc', + 'base/task_scheduler/task_scheduler_impl.cc', + 'base/task_scheduler/task_tracker.cc', + 'base/task_scheduler/task_traits.cc', + 'base/third_party/dmg_fp/dtoa_wrapper.cc', + 'base/third_party/dmg_fp/g_fmt.cc', + 'base/third_party/icu/icu_utf.cc', + 'base/third_party/nspr/prtime.cc', + 'base/threading/post_task_and_reply_impl.cc', + 'base/threading/scoped_blocking_call.cc', + 'base/threading/sequence_local_storage_map.cc', + 'base/threading/sequenced_task_runner_handle.cc', + 'base/threading/simple_thread.cc', + 'base/threading/thread.cc', + 'base/threading/thread_checker_impl.cc', + 'base/threading/thread_collision_warner.cc', + 'base/threading/thread_id_name_manager.cc', + 'base/threading/thread_local_storage.cc', + 'base/threading/thread_restrictions.cc', + 'base/threading/thread_task_runner_handle.cc', + 'base/time/clock.cc', + 'base/time/default_clock.cc', + 'base/time/default_tick_clock.cc', + 'base/time/tick_clock.cc', + 'base/time/time.cc', + 'base/timer/elapsed_timer.cc', + 'base/timer/timer.cc', + 'base/trace_event/category_registry.cc', + 'base/trace_event/event_name_filter.cc', + 'base/trace_event/heap_profiler_allocation_context.cc', + 'base/trace_event/heap_profiler_allocation_context_tracker.cc', + 'base/trace_event/heap_profiler_event_filter.cc', + 'base/trace_event/heap_profiler_heap_dump_writer.cc', + 'base/trace_event/heap_profiler_serialization_state.cc', + 'base/trace_event/heap_profiler_stack_frame_deduplicator.cc', + 'base/trace_event/heap_profiler_type_name_deduplicator.cc', + 'base/trace_event/malloc_dump_provider.cc', + 'base/trace_event/memory_allocator_dump.cc', + 'base/trace_event/memory_allocator_dump_guid.cc', + 'base/trace_event/memory_dump_manager.cc', + 'base/trace_event/memory_dump_provider_info.cc', + 'base/trace_event/memory_dump_request_args.cc', + 'base/trace_event/memory_dump_scheduler.cc', + 'base/trace_event/memory_infra_background_whitelist.cc', + 'base/trace_event/memory_peak_detector.cc', + 'base/trace_event/memory_usage_estimator.cc', + 'base/trace_event/process_memory_dump.cc', + 'base/trace_event/trace_buffer.cc', + 'base/trace_event/trace_config.cc', + 'base/trace_event/trace_config_category_filter.cc', + 'base/trace_event/trace_event_argument.cc', + 'base/trace_event/trace_event_filter.cc', + 'base/trace_event/trace_event_impl.cc', + 'base/trace_event/trace_event_memory_overhead.cc', + 'base/trace_event/trace_log.cc', + 'base/trace_event/trace_log_constants.cc', + 'base/trace_event/tracing_agent.cc', + 'base/unguessable_token.cc', + 'base/value_iterators.cc', + 'base/values.cc', + 'base/vlog.cc', + ]) + + if is_win: + static_libraries['base']['sources'].extend([ + 'base/memory/platform_shared_memory_region_win.cc' + ]) + elif is_mac: + static_libraries['base']['sources'].extend([ + 'base/memory/platform_shared_memory_region_mac.cc' + ]) + elif is_posix: + static_libraries['base']['sources'].extend([ + 'base/memory/platform_shared_memory_region_posix.cc' + ]) + + if is_posix: + static_libraries['base']['sources'].extend([ + 'base/base_paths_posix.cc', + 'base/debug/debugger_posix.cc', + 'base/debug/stack_trace_posix.cc', + 'base/files/file_enumerator_posix.cc', + 'base/files/file_descriptor_watcher_posix.cc', + 'base/files/file_posix.cc', + 'base/files/file_util_posix.cc', + 'base/files/memory_mapped_file_posix.cc', + 'base/memory/shared_memory_helper.cc', + 'base/message_loop/message_pump_libevent.cc', + 'base/posix/file_descriptor_shuffle.cc', + 'base/posix/global_descriptors.cc', + 'base/posix/safe_strerror.cc', + 'base/process/kill_posix.cc', + 'base/process/process_handle_posix.cc', + 'base/process/process_metrics_posix.cc', + 'base/process/process_posix.cc', + 'base/rand_util_posix.cc', + 'base/strings/string16.cc', + 'base/synchronization/condition_variable_posix.cc', + 'base/synchronization/lock_impl_posix.cc', + 'base/sys_info_posix.cc', + 'base/task_scheduler/task_tracker_posix.cc', + 'base/threading/platform_thread_internal_posix.cc', + 'base/threading/platform_thread_posix.cc', + 'base/threading/thread_local_storage_posix.cc', + 'base/time/time_conversion_posix.cc', + ]) + static_libraries['libevent'] = { + 'sources': [ + 'base/third_party/libevent/buffer.c', + 'base/third_party/libevent/evbuffer.c', + 'base/third_party/libevent/evdns.c', + 'base/third_party/libevent/event.c', + 'base/third_party/libevent/event_tagging.c', + 'base/third_party/libevent/evrpc.c', + 'base/third_party/libevent/evutil.c', + 'base/third_party/libevent/http.c', + 'base/third_party/libevent/log.c', + 'base/third_party/libevent/poll.c', + 'base/third_party/libevent/select.c', + 'base/third_party/libevent/signal.c', + 'base/third_party/libevent/strlcpy.c', + ], + 'tool': 'cc', + 'include_dirs': [], + 'cflags': cflags + ['-DHAVE_CONFIG_H'], + } + + if is_linux or is_aix: + static_libraries['xdg_user_dirs'] = { + 'sources': [ + 'base/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc', + ], + 'tool': 'cxx', + } + static_libraries['base']['sources'].extend([ + 'base/memory/shared_memory_handle_posix.cc', + 'base/memory/shared_memory_posix.cc', + 'base/nix/xdg_util.cc', + 'base/process/internal_linux.cc', + 'base/process/memory_linux.cc', + 'base/process/process_handle_linux.cc', + 'base/process/process_info_linux.cc', + 'base/process/process_iterator_linux.cc', + 'base/process/process_linux.cc', + 'base/process/process_metrics_linux.cc', + 'base/strings/sys_string_conversions_posix.cc', + 'base/synchronization/waitable_event_posix.cc', + 'base/sys_info_linux.cc', + 'base/time/time_exploded_posix.cc', + 'base/time/time_now_posix.cc', + 'base/threading/platform_thread_linux.cc', + ]) + if is_linux: + libcxx_root = REPO_ROOT + '/buildtools/third_party/libc++/trunk' + libcxxabi_root = REPO_ROOT + '/buildtools/third_party/libc++abi/trunk' + cflags_cc.extend([ + '-nostdinc++', + '-isystem' + libcxx_root + '/include', + '-isystem' + libcxxabi_root + '/include', + ]) + ldflags.extend(['-nodefaultlibs']) + libs.extend([ + '-lc', + '-lgcc_s', + '-lm', + '-lpthread', + ]) + static_libraries['libc++'] = { + 'sources': [ + libcxx_root + '/src/algorithm.cpp', + libcxx_root + '/src/any.cpp', + libcxx_root + '/src/bind.cpp', + libcxx_root + '/src/chrono.cpp', + libcxx_root + '/src/condition_variable.cpp', + libcxx_root + '/src/debug.cpp', + libcxx_root + '/src/exception.cpp', + libcxx_root + '/src/functional.cpp', + libcxx_root + '/src/future.cpp', + libcxx_root + '/src/hash.cpp', + libcxx_root + '/src/ios.cpp', + libcxx_root + '/src/iostream.cpp', + libcxx_root + '/src/locale.cpp', + libcxx_root + '/src/memory.cpp', + libcxx_root + '/src/mutex.cpp', + libcxx_root + '/src/new.cpp', + libcxx_root + '/src/optional.cpp', + libcxx_root + '/src/random.cpp', + libcxx_root + '/src/regex.cpp', + libcxx_root + '/src/shared_mutex.cpp', + libcxx_root + '/src/stdexcept.cpp', + libcxx_root + '/src/string.cpp', + libcxx_root + '/src/strstream.cpp', + libcxx_root + '/src/system_error.cpp', + libcxx_root + '/src/thread.cpp', + libcxx_root + '/src/typeinfo.cpp', + libcxx_root + '/src/utility.cpp', + libcxx_root + '/src/valarray.cpp', + libcxx_root + '/src/variant.cpp', + libcxx_root + '/src/vector.cpp', + ], + 'tool': 'cxx', + 'cflags': cflags + [ + '-D_LIBCPP_NO_EXCEPTIONS', + '-D_LIBCPP_BUILDING_LIBRARY', + '-DLIBCXX_BUILDING_LIBCXXABI', + ] + } + static_libraries['libc++abi'] = { + 'sources': [ + libcxxabi_root + '/src/abort_message.cpp', + libcxxabi_root + '/src/cxa_aux_runtime.cpp', + libcxxabi_root + '/src/cxa_default_handlers.cpp', + libcxxabi_root + '/src/cxa_demangle.cpp', + libcxxabi_root + '/src/cxa_exception_storage.cpp', + libcxxabi_root + '/src/cxa_guard.cpp', + libcxxabi_root + '/src/cxa_handlers.cpp', + libcxxabi_root + '/src/cxa_noexception.cpp', + libcxxabi_root + '/src/cxa_unexpected.cpp', + libcxxabi_root + '/src/cxa_vector.cpp', + libcxxabi_root + '/src/cxa_virtual.cpp', + libcxxabi_root + '/src/fallback_malloc.cpp', + libcxxabi_root + '/src/private_typeinfo.cpp', + libcxxabi_root + '/src/stdlib_exception.cpp', + libcxxabi_root + '/src/stdlib_stdexcept.cpp', + libcxxabi_root + '/src/stdlib_typeinfo.cpp', + ], + 'tool': 'cxx', + 'cflags': cflags + [ + '-DLIBCXXABI_SILENT_TERMINATE', + '-D_LIBCXXABI_NO_EXCEPTIONS', + ] + } + static_libraries['base']['sources'].extend([ + 'base/allocator/allocator_shim.cc', + 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc', + ]) + libs.extend(['-lrt', '-latomic']) + static_libraries['libevent']['include_dirs'].extend([ + os.path.join(REPO_ROOT, 'base', 'third_party', 'libevent', 'linux') + ]) + static_libraries['libevent']['sources'].extend([ + 'base/third_party/libevent/epoll.c', + ]) + else: + ldflags.extend(['-pthread']) + libs.extend(['-lrt']) + static_libraries['base']['sources'].extend([ + 'base/process/internal_aix.cc' + ]) + static_libraries['libevent']['include_dirs'].extend([ + os.path.join(REPO_ROOT, 'base', 'third_party', 'libevent', 'aix') + ]) + static_libraries['libevent']['include_dirs'].extend([ + os.path.join(REPO_ROOT, 'base', 'third_party', 'libevent', 'compat') + ]) + + if is_mac: + static_libraries['base']['sources'].extend([ + 'base/base_paths_mac.mm', + 'base/files/file_util_mac.mm', + 'base/mac/bundle_locations.mm', + 'base/mac/call_with_eh_frame.cc', + 'base/mac/call_with_eh_frame_asm.S', + 'base/mac/foundation_util.mm', + 'base/mac/mach_logging.cc', + 'base/mac/scoped_mach_port.cc', + 'base/mac/scoped_mach_vm.cc', + 'base/mac/scoped_nsautorelease_pool.mm', + 'base/memory/shared_memory_handle_mac.cc', + 'base/memory/shared_memory_mac.cc', + 'base/message_loop/message_pump_mac.mm', + 'base/process/process_handle_mac.cc', + 'base/process/process_info_mac.cc', + 'base/process/process_iterator_mac.cc', + 'base/process/process_metrics_mac.cc', + 'base/strings/sys_string_conversions_mac.mm', + 'base/synchronization/waitable_event_mac.cc', + 'base/sys_info_mac.mm', + 'base/time/time_exploded_posix.cc', + 'base/time/time_mac.cc', + 'base/threading/platform_thread_mac.mm', + ]) + static_libraries['libevent']['include_dirs'].extend([ + os.path.join(REPO_ROOT, 'base', 'third_party', 'libevent', 'mac') + ]) + static_libraries['libevent']['sources'].extend([ + 'base/third_party/libevent/kqueue.c', + ]) + + libs.extend([ + '-framework', 'AppKit', + '-framework', 'CoreFoundation', + '-framework', 'Foundation', + '-framework', 'Security', + ]) + + if is_win: + static_libraries['base']['sources'].extend([ + "base/allocator/partition_allocator/address_space_randomization.cc", + 'base/allocator/partition_allocator/page_allocator.cc', + "base/allocator/partition_allocator/spin_lock.cc", + 'base/base_paths_win.cc', + 'base/cpu.cc', + 'base/debug/close_handle_hook_win.cc', + 'base/debug/debugger.cc', + 'base/debug/debugger_win.cc', + 'base/debug/profiler.cc', + 'base/debug/stack_trace_win.cc', + 'base/file_version_info_win.cc', + 'base/files/file_enumerator_win.cc', + 'base/files/file_path_watcher_win.cc', + 'base/files/file_util_win.cc', + 'base/files/file_win.cc', + 'base/files/memory_mapped_file_win.cc', + 'base/guid.cc', + 'base/logging_win.cc', + 'base/memory/memory_pressure_monitor_win.cc', + 'base/memory/shared_memory_handle_win.cc', + 'base/memory/shared_memory_win.cc', + 'base/message_loop/message_pump_win.cc', + 'base/native_library_win.cc', + 'base/power_monitor/power_monitor_device_source_win.cc', + 'base/process/kill_win.cc', + 'base/process/launch_win.cc', + 'base/process/memory_win.cc', + 'base/process/process_handle_win.cc', + 'base/process/process_info_win.cc', + 'base/process/process_iterator_win.cc', + 'base/process/process_metrics_win.cc', + 'base/process/process_win.cc', + 'base/profiler/native_stack_sampler_win.cc', + 'base/profiler/win32_stack_frame_unwinder.cc', + 'base/rand_util_win.cc', + 'base/strings/sys_string_conversions_win.cc', + 'base/sync_socket_win.cc', + 'base/synchronization/condition_variable_win.cc', + 'base/synchronization/lock_impl_win.cc', + 'base/synchronization/waitable_event_watcher_win.cc', + 'base/synchronization/waitable_event_win.cc', + 'base/sys_info_win.cc', + 'base/threading/platform_thread_win.cc', + 'base/threading/thread_local_storage_win.cc', + 'base/time/time_win.cc', + 'base/timer/hi_res_timer_manager_win.cc', + 'base/trace_event/trace_event_etw_export_win.cc', + 'base/win/core_winrt_util.cc', + 'base/win/enum_variant.cc', + 'base/win/event_trace_controller.cc', + 'base/win/event_trace_provider.cc', + 'base/win/i18n.cc', + 'base/win/iat_patch_function.cc', + 'base/win/iunknown_impl.cc', + 'base/win/message_window.cc', + 'base/win/object_watcher.cc', + 'base/win/pe_image.cc', + 'base/win/process_startup_helper.cc', + 'base/win/registry.cc', + 'base/win/resource_util.cc', + 'base/win/scoped_bstr.cc', + 'base/win/scoped_com_initializer.cc', + 'base/win/scoped_handle.cc', + 'base/win/scoped_handle_verifier.cc', + 'base/win/scoped_process_information.cc', + 'base/win/scoped_variant.cc', + 'base/win/scoped_winrt_initializer.cc', + 'base/win/shortcut.cc', + 'base/win/startup_information.cc', + 'base/win/wait_chain.cc', + 'base/win/win_util.cc', + 'base/win/windows_version.cc', + 'base/win/wrapped_window_proc.cc', + ]) + + libs.extend([ + 'advapi32.lib', + 'dbghelp.lib', + 'kernel32.lib', + 'ole32.lib', + 'shell32.lib', + 'user32.lib', + 'userenv.lib', + 'version.lib', + 'winmm.lib', + 'ws2_32.lib', + 'Shlwapi.lib', + ]) + + # we just build static libraries that GN needs + executables['gn']['libs'].extend(static_libraries.keys()) + + write_generic_ninja(path, static_libraries, executables, cc, cxx, ar, ld, + cflags, cflags_cc, ldflags, include_dirs, libs) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:]))
diff --git a/build/get_landmines.py b/build/get_landmines.py deleted file mode 100755 index 8a655e3..0000000 --- a/build/get_landmines.py +++ /dev/null
@@ -1,82 +0,0 @@ -#!/usr/bin/env python -# Copyright 2013 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. - -""" -This file emits the list of reasons why a particular build needs to be clobbered -(or a list of 'landmines'). -""" - -import sys - -import landmine_utils - - -host_os = landmine_utils.host_os - - -def print_landmines(): - """ - ALL LANDMINES ARE EMITTED FROM HERE. - """ - # DO NOT add landmines as part of a regular CL. Landmines are a last-effort - # bandaid fix if a CL that got landed has a build dependency bug and all bots - # need to be cleaned up. If you're writing a new CL that causes build - # dependency problems, fix the dependency problems instead of adding a - # landmine. - # - # Before adding or changing a landmine consider the consequences of doing so. - # Doing so will wipe out every output directory on every Chrome developer's - # machine. This can be particularly problematic on Windows where the directory - # deletion may well fail (locked files, command prompt in the directory, - # etc.), and generated .sln and .vcxproj files will be deleted. - # - # This output directory deletion will be repeated when going back and forth - # across the change that added the landmine, adding to the cost. There are - # usually less troublesome alternatives. - - if host_os() == 'win': - print 'Compile on cc_unittests fails due to symbols removed in r185063.' - if host_os() == 'linux': - print 'Builders switching from make to ninja will clobber on this.' - if host_os() == 'mac': - print 'Switching from bundle to unbundled dylib (issue 14743002).' - if host_os() in ('win', 'mac'): - print ('Improper dependency for create_nmf.py broke in r240802, ' - 'fixed in r240860.') - if host_os() == 'win': - print 'Switch to VS2015 Update 3, 14393 SDK' - print 'Need to clobber everything due to an IDL change in r154579 (blink)' - print 'Need to clobber everything due to gen file moves in r175513 (Blink)' - print 'Clobber to get rid of obselete test plugin after r248358' - print 'Clobber to rebuild GN files for V8' - print 'Clobber to get rid of stale generated mojom.h files' - print 'Need to clobber everything due to build_nexe change in nacl r13424' - print '[chromium-dev] PSA: clobber build needed for IDR_INSPECTOR_* compil...' - print 'blink_resources.grd changed: crbug.com/400860' - print 'ninja dependency cycle: crbug.com/408192' - print 'Clobber to fix missing NaCl gyp dependencies (crbug.com/427427).' - print 'Another clobber for missing NaCl gyp deps (crbug.com/427427).' - print 'Clobber to fix GN not picking up increased ID range (crbug.com/444902)' - print 'Remove NaCl toolchains from the output dir (crbug.com/456902)' - if host_os() == 'win': - print 'Clobber to delete stale generated files (crbug.com/510086)' - if host_os() == 'mac': - print 'Clobber to get rid of evil libsqlite3.dylib (crbug.com/526208)' - if host_os() == 'mac': - print 'Clobber to remove libsystem.dylib. See crbug.com/620075' - if host_os() == 'mac': - print 'Clobber to get past mojo gen build error (crbug.com/679607)' - if host_os() == 'win': - print 'Clobber Windows to fix strange PCH-not-rebuilt errors.' - print 'CLobber all to fix GN breakage (crbug.com/736215)' - print 'The Great Blink mv for source files (crbug.com/768828)' - -def main(): - print_landmines() - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/get_syzygy_binaries.py b/build/get_syzygy_binaries.py deleted file mode 100755 index 09b1199..0000000 --- a/build/get_syzygy_binaries.py +++ /dev/null
@@ -1,529 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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. - -"""A utility script for downloading versioned Syzygy binaries.""" - -import hashlib -import errno -import json -import logging -import optparse -import os -import re -import shutil -import stat -import sys -import subprocess -import tempfile -import time -import zipfile - - -_LOGGER = logging.getLogger(os.path.basename(__file__)) - -# The relative path where official builds are archived in their GS bucket. -_SYZYGY_ARCHIVE_PATH = ('/builds/official/%(revision)s') - -# A JSON file containing the state of the download directory. If this file and -# directory state do not agree, then the binaries will be downloaded and -# installed again. -_STATE = '.state' - -# This matches an integer (an SVN revision number) or a SHA1 value (a GIT hash). -# The archive exclusively uses lowercase GIT hashes. -_REVISION_RE = re.compile('^(?:\d+|[a-f0-9]{40})$') - -# This matches an MD5 hash. -_MD5_RE = re.compile('^[a-f0-9]{32}$') - -# List of reources to be downloaded and installed. These are tuples with the -# following format: -# (basename, logging name, relative installation path, extraction filter) -_RESOURCES = [ - ('benchmark.zip', 'benchmark', '', None), - ('binaries.zip', 'binaries', 'exe', None), - ('symbols.zip', 'symbols', 'exe', - lambda x: x.filename.endswith('.dll.pdb'))] - - -# Name of the MS DIA dll that we need to copy to the binaries directory. -_DIA_DLL_NAME = "msdia140.dll" - - -def _LoadState(output_dir): - """Loads the contents of the state file for a given |output_dir|, returning - None if it doesn't exist. - """ - path = os.path.join(output_dir, _STATE) - if not os.path.exists(path): - _LOGGER.debug('No state file found.') - return None - with open(path, 'rb') as f: - _LOGGER.debug('Reading state file: %s', path) - try: - return json.load(f) - except ValueError: - _LOGGER.debug('Invalid state file.') - return None - - -def _SaveState(output_dir, state, dry_run=False): - """Saves the |state| dictionary to the given |output_dir| as a JSON file.""" - path = os.path.join(output_dir, _STATE) - _LOGGER.debug('Writing state file: %s', path) - if dry_run: - return - with open(path, 'wb') as f: - f.write(json.dumps(state, sort_keys=True, indent=2)) - - -def _Md5(path): - """Returns the MD5 hash of the file at |path|, which must exist.""" - return hashlib.md5(open(path, 'rb').read()).hexdigest() - - -def _StateIsValid(state): - """Returns true if the given state structure is valid.""" - if not isinstance(state, dict): - _LOGGER.debug('State must be a dict.') - return False - r = state.get('revision', None) - if not isinstance(r, basestring) or not _REVISION_RE.match(r): - _LOGGER.debug('State contains an invalid revision.') - return False - c = state.get('contents', None) - if not isinstance(c, dict): - _LOGGER.debug('State must contain a contents dict.') - return False - for (relpath, md5) in c.iteritems(): - if not isinstance(relpath, basestring) or len(relpath) == 0: - _LOGGER.debug('State contents dict contains an invalid path.') - return False - if not isinstance(md5, basestring) or not _MD5_RE.match(md5): - _LOGGER.debug('State contents dict contains an invalid MD5 digest.') - return False - return True - - -def _BuildActualState(stored, revision, output_dir): - """Builds the actual state using the provided |stored| state as a template. - Only examines files listed in the stored state, causing the script to ignore - files that have been added to the directories locally. |stored| must be a - valid state dictionary. - """ - contents = {} - state = { 'revision': revision, 'contents': contents } - for relpath, md5 in stored['contents'].iteritems(): - abspath = os.path.abspath(os.path.join(output_dir, relpath)) - if os.path.isfile(abspath): - m = _Md5(abspath) - contents[relpath] = m - - return state - - -def _StatesAreConsistent(stored, actual): - """Validates whether two state dictionaries are consistent. Both must be valid - state dictionaries. Additional entries in |actual| are ignored. - """ - if stored['revision'] != actual['revision']: - _LOGGER.debug('Mismatched revision number.') - return False - cont_stored = stored['contents'] - cont_actual = actual['contents'] - for relpath, md5 in cont_stored.iteritems(): - if relpath not in cont_actual: - _LOGGER.debug('Missing content: %s', relpath) - return False - if md5 != cont_actual[relpath]: - _LOGGER.debug('Modified content: %s', relpath) - return False - return True - - -def _GetCurrentState(revision, output_dir): - """Loads the current state and checks to see if it is consistent. Returns - a tuple (state, bool). The returned state will always be valid, even if an - invalid state is present on disk. - """ - stored = _LoadState(output_dir) - if not _StateIsValid(stored): - _LOGGER.debug('State is invalid.') - # Return a valid but empty state. - return ({'revision': '0', 'contents': {}}, False) - actual = _BuildActualState(stored, revision, output_dir) - # If the script has been modified consider the state invalid. - path = os.path.join(output_dir, _STATE) - if os.path.getmtime(__file__) > os.path.getmtime(path): - return (stored, False) - # Otherwise, explicitly validate the state. - if not _StatesAreConsistent(stored, actual): - return (stored, False) - return (stored, True) - - -def _DirIsEmpty(path): - """Returns true if the given directory is empty, false otherwise.""" - for root, dirs, files in os.walk(path): - return not dirs and not files - - -def _RmTreeHandleReadOnly(func, path, exc): - """An error handling function for use with shutil.rmtree. This will - detect failures to remove read-only files, and will change their properties - prior to removing them. This is necessary on Windows as os.remove will return - an access error for read-only files, and git repos contain read-only - pack/index files. - """ - excvalue = exc[1] - if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES: - _LOGGER.debug('Removing read-only path: %s', path) - os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) - func(path) - else: - raise - - -def _RmTree(path): - """A wrapper of shutil.rmtree that handles read-only files.""" - shutil.rmtree(path, ignore_errors=False, onerror=_RmTreeHandleReadOnly) - - -def _CleanState(output_dir, state, dry_run=False): - """Cleans up files/directories in |output_dir| that are referenced by - the given |state|. Raises an error if there are local changes. Returns a - dictionary of files that were deleted. - """ - _LOGGER.debug('Deleting files from previous installation.') - deleted = {} - - # Generate a list of files to delete, relative to |output_dir|. - contents = state['contents'] - files = sorted(contents.keys()) - - # Try to delete the files. Keep track of directories to delete as well. - dirs = {} - for relpath in files: - fullpath = os.path.join(output_dir, relpath) - fulldir = os.path.dirname(fullpath) - dirs[fulldir] = True - if os.path.exists(fullpath): - # If somehow the file has become a directory complain about it. - if os.path.isdir(fullpath): - raise Exception('Directory exists where file expected: %s' % fullpath) - - # Double check that the file doesn't have local changes. If it does - # then refuse to delete it. - if relpath in contents: - stored_md5 = contents[relpath] - actual_md5 = _Md5(fullpath) - if actual_md5 != stored_md5: - raise Exception('File has local changes: %s' % fullpath) - - # The file is unchanged so it can safely be deleted. - _LOGGER.debug('Deleting file "%s".', fullpath) - deleted[relpath] = True - if not dry_run: - os.unlink(fullpath) - - # Sort directories from longest name to shortest. This lets us remove empty - # directories from the most nested paths first. - dirs = sorted(dirs.keys(), key=lambda x: len(x), reverse=True) - for p in dirs: - if os.path.exists(p) and _DirIsEmpty(p): - _LOGGER.debug('Deleting empty directory "%s".', p) - if not dry_run: - _RmTree(p) - - return deleted - - -def _FindGsUtil(): - """Looks for depot_tools and returns the absolute path to gsutil.py.""" - for path in os.environ['PATH'].split(os.pathsep): - path = os.path.abspath(path) - git_cl = os.path.join(path, 'git_cl.py') - gs_util = os.path.join(path, 'gsutil.py') - if os.path.exists(git_cl) and os.path.exists(gs_util): - return gs_util - return None - - -def _GsUtil(*cmd): - """Runs the given command in gsutil with exponential backoff and retries.""" - gs_util = _FindGsUtil() - cmd = [sys.executable, gs_util] + list(cmd) - - retries = 3 - timeout = 4 # Seconds. - while True: - _LOGGER.debug('Running %s', cmd) - prog = subprocess.Popen(cmd, shell=False) - prog.communicate() - - # Stop retrying on success. - if prog.returncode == 0: - return - - # Raise a permanent failure if retries have been exhausted. - if retries == 0: - raise RuntimeError('Command "%s" returned %d.' % (cmd, prog.returncode)) - - _LOGGER.debug('Sleeping %d seconds and trying again.', timeout) - time.sleep(timeout) - retries -= 1 - timeout *= 2 - - -def _Download(resource): - """Downloads the given GS resource to a temporary file, returning its path.""" - tmp = tempfile.mkstemp(suffix='syzygy_archive') - os.close(tmp[0]) - tmp_file = tmp[1] - url = 'gs://syzygy-archive' + resource - if sys.platform == 'cygwin': - # Change temporary path to Windows path for gsutil - def winpath(path): - return subprocess.check_output(['cygpath', '-w', path]).strip() - tmp_file = winpath(tmp_file) - _GsUtil('cp', url, tmp_file) - return tmp[1] - - -def _MaybeCopyDIABinaries(options, contents): - """Try to copy the DIA DLL to the binaries exe directory.""" - toolchain_data_file = os.path.join(os.path.dirname(__file__), - 'win_toolchain.json') - if not os.path.exists(toolchain_data_file): - _LOGGER.debug('Toolchain JSON data file doesn\'t exist, skipping.') - return - with open(toolchain_data_file) as temp_f: - toolchain_data = json.load(temp_f) - if not os.path.isdir(toolchain_data['path']): - _LOGGER.error('The toolchain JSON file is invalid.') - return - dia_sdk_binaries_dir = os.path.join(toolchain_data['path'], 'DIA SDK', 'bin') - dia_dll = os.path.join(dia_sdk_binaries_dir, _DIA_DLL_NAME) - if not os.path.exists(dia_dll): - _LOGGER.debug('%s is missing, skipping.') - return - dia_dll_dest = os.path.join(options.output_dir, 'exe', _DIA_DLL_NAME) - _LOGGER.debug('Copying %s to %s.' % (dia_dll, dia_dll_dest)) - if not options.dry_run: - shutil.copy(dia_dll, dia_dll_dest) - contents[os.path.relpath(dia_dll_dest, options.output_dir)] = ( - _Md5(dia_dll_dest)) - - -def _InstallBinaries(options, deleted={}): - """Installs Syzygy binaries. This assumes that the output directory has - already been cleaned, as it will refuse to overwrite existing files.""" - contents = {} - state = { 'revision': options.revision, 'contents': contents } - archive_path = _SYZYGY_ARCHIVE_PATH % { 'revision': options.revision } - if options.resources: - resources = [(resource, resource, '', None) - for resource in options.resources] - else: - resources = _RESOURCES - for (base, name, subdir, filt) in resources: - # Create the output directory if it doesn't exist. - fulldir = os.path.join(options.output_dir, subdir) - if os.path.isfile(fulldir): - raise Exception('File exists where a directory needs to be created: %s' % - fulldir) - if not os.path.exists(fulldir): - _LOGGER.debug('Creating directory: %s', fulldir) - if not options.dry_run: - os.makedirs(fulldir) - - # Download and read the archive. - resource = archive_path + '/' + base - _LOGGER.debug('Retrieving %s archive at "%s".', name, resource) - path = _Download(resource) - - _LOGGER.debug('Unzipping %s archive.', name) - with open(path, 'rb') as data: - archive = zipfile.ZipFile(data) - for entry in archive.infolist(): - if not filt or filt(entry): - fullpath = os.path.normpath(os.path.join(fulldir, entry.filename)) - relpath = os.path.relpath(fullpath, options.output_dir) - if os.path.exists(fullpath): - # If in a dry-run take into account the fact that the file *would* - # have been deleted. - if options.dry_run and relpath in deleted: - pass - else: - raise Exception('Path already exists: %s' % fullpath) - - # Extract the file and update the state dictionary. - _LOGGER.debug('Extracting "%s".', fullpath) - if not options.dry_run: - archive.extract(entry.filename, fulldir) - md5 = _Md5(fullpath) - contents[relpath] = md5 - if sys.platform == 'cygwin': - os.chmod(fullpath, os.stat(fullpath).st_mode | stat.S_IXUSR) - - _LOGGER.debug('Removing temporary file "%s".', path) - os.remove(path) - - if options.copy_dia_binaries: - # Try to copy the DIA binaries to the binaries directory. - _MaybeCopyDIABinaries(options, contents) - - return state - - -def _ParseCommandLine(): - """Parses the command-line and returns an options structure.""" - option_parser = optparse.OptionParser() - option_parser.add_option('--dry-run', action='store_true', default=False, - help='If true then will simply list actions that would be performed.') - option_parser.add_option('--force', action='store_true', default=False, - help='Force an installation even if the binaries are up to date.') - option_parser.add_option('--no-cleanup', action='store_true', default=False, - help='Allow installation on non-Windows platforms, and skip the forced ' - 'cleanup step.') - option_parser.add_option('--output-dir', type='string', - help='The path where the binaries will be replaced. Existing binaries ' - 'will only be overwritten if not up to date.') - option_parser.add_option('--overwrite', action='store_true', default=False, - help='If specified then the installation will happily delete and rewrite ' - 'the entire output directory, blasting any local changes.') - option_parser.add_option('--revision', type='string', - help='The SVN revision or GIT hash associated with the required version.') - option_parser.add_option('--revision-file', type='string', - help='A text file containing an SVN revision or GIT hash.') - option_parser.add_option('--resource', type='string', action='append', - dest='resources', help='A resource to be downloaded.') - option_parser.add_option('--verbose', dest='log_level', action='store_const', - default=logging.INFO, const=logging.DEBUG, - help='Enables verbose logging.') - option_parser.add_option('--quiet', dest='log_level', action='store_const', - default=logging.INFO, const=logging.ERROR, - help='Disables all output except for errors.') - option_parser.add_option('--copy-dia-binaries', action='store_true', - default=False, help='If true then the DIA dll will get copied into the ' - 'binaries directory if it\'s available.') - options, args = option_parser.parse_args() - if args: - option_parser.error('Unexpected arguments: %s' % args) - if not options.output_dir: - option_parser.error('Must specify --output-dir.') - if not options.revision and not options.revision_file: - option_parser.error('Must specify one of --revision or --revision-file.') - if options.revision and options.revision_file: - option_parser.error('Must not specify both --revision and --revision-file.') - - # Configure logging. - logging.basicConfig(level=options.log_level) - - # If a revision file has been specified then read it. - if options.revision_file: - options.revision = open(options.revision_file, 'rb').read().strip() - _LOGGER.debug('Parsed revision "%s" from file "%s".', - options.revision, options.revision_file) - - # Ensure that the specified SVN revision or GIT hash is valid. - if not _REVISION_RE.match(options.revision): - option_parser.error('Must specify a valid SVN or GIT revision.') - - # This just makes output prettier to read. - options.output_dir = os.path.normpath(options.output_dir) - - return options - - -def _RemoveOrphanedFiles(options): - """This is run on non-Windows systems to remove orphaned files that may have - been downloaded by a previous version of this script. - """ - # Reconfigure logging to output info messages. This will allow inspection of - # cleanup status on non-Windows buildbots. - _LOGGER.setLevel(logging.INFO) - - output_dir = os.path.abspath(options.output_dir) - - # We only want to clean up the folder in 'src/third_party/syzygy', and we - # expect to be called with that as an output directory. This is an attempt to - # not start deleting random things if the script is run from an alternate - # location, or not called from the gclient hooks. - expected_syzygy_dir = os.path.abspath(os.path.join( - os.path.dirname(__file__), '..', 'third_party', 'syzygy')) - expected_output_dir = os.path.join(expected_syzygy_dir, 'binaries') - if expected_output_dir != output_dir: - _LOGGER.info('Unexpected output directory, skipping cleanup.') - return - - if not os.path.isdir(expected_syzygy_dir): - _LOGGER.info('Output directory does not exist, skipping cleanup.') - return - - def OnError(function, path, excinfo): - """Logs error encountered by shutil.rmtree.""" - _LOGGER.error('Error when running %s(%s)', function, path, exc_info=excinfo) - - _LOGGER.info('Removing orphaned files from %s', expected_syzygy_dir) - if not options.dry_run: - shutil.rmtree(expected_syzygy_dir, True, OnError) - - -def main(): - options = _ParseCommandLine() - - if options.dry_run: - _LOGGER.debug('Performing a dry-run.') - - # We only care about Windows platforms, as the Syzygy binaries aren't used - # elsewhere. However, there was a short period of time where this script - # wasn't gated on OS types, and those OSes downloaded and installed binaries. - # This will cleanup orphaned files on those operating systems. - if sys.platform not in ('win32', 'cygwin'): - if options.no_cleanup: - _LOGGER.debug('Skipping usual cleanup for non-Windows platforms.') - else: - return _RemoveOrphanedFiles(options) - - # Load the current installation state, and validate it against the - # requested installation. - state, is_consistent = _GetCurrentState(options.revision, options.output_dir) - - # Decide whether or not an install is necessary. - if options.force: - _LOGGER.debug('Forcing reinstall of binaries.') - elif is_consistent: - # Avoid doing any work if the contents of the directory are consistent. - _LOGGER.debug('State unchanged, no reinstall necessary.') - return - - # Under normal logging this is the only only message that will be reported. - _LOGGER.info('Installing revision %s Syzygy binaries.', - options.revision[0:12]) - - # Clean up the old state to begin with. - deleted = [] - if options.overwrite: - if os.path.exists(options.output_dir): - # If overwrite was specified then take a heavy-handed approach. - _LOGGER.debug('Deleting entire installation directory.') - if not options.dry_run: - _RmTree(options.output_dir) - else: - # Otherwise only delete things that the previous installation put in place, - # and take care to preserve any local changes. - deleted = _CleanState(options.output_dir, state, options.dry_run) - - # Install the new binaries. In a dry-run this will actually download the - # archives, but it won't write anything to disk. - state = _InstallBinaries(options, deleted) - - # Build and save the state for the directory. - _SaveState(options.output_dir, state, options.dry_run) - - -if __name__ == '__main__': - main()
diff --git a/build/git-hooks/OWNERS b/build/git-hooks/OWNERS deleted file mode 100644 index 3e327dc..0000000 --- a/build/git-hooks/OWNERS +++ /dev/null
@@ -1,3 +0,0 @@ -set noparent -szager@chromium.org -cmp@chromium.org
diff --git a/build/git-hooks/pre-commit b/build/git-hooks/pre-commit deleted file mode 100755 index 41b5963..0000000 --- a/build/git-hooks/pre-commit +++ /dev/null
@@ -1,60 +0,0 @@ -#!/bin/sh - -submodule_diff() { - if test -n "$2"; then - git diff-tree -r --ignore-submodules=dirty "$1" "$2" | grep -e '^:160000' -e '^:...... 160000' | xargs - else - git diff-index --cached --ignore-submodules=dirty "$1" | grep -e '^:160000' -e '^:...... 160000' | xargs - fi -} - -if git rev-parse --verify --quiet --no-revs MERGE_HEAD; then - merge_base=$(git merge-base HEAD MERGE_HEAD) - if test -z "$(submodule_diff $merge_base HEAD)"; then - # Most up-to-date submodules are in MERGE_HEAD. - head_ref=MERGE_HEAD - else - # Most up-to-date submodules are in HEAD. - head_ref=HEAD - fi -else - # No merge in progress. Submodules must match HEAD. - head_ref=HEAD -fi - -submods=$(submodule_diff $head_ref) -if test "$submods"; then - echo "You are trying to commit changes to the following submodules:" 1>&2 - echo 1>&2 - echo $submods | cut -d ' ' -f 6 | sed 's/^/ /g' 1>&2 - cat <<EOF 1>&2 - -Submodule commits are not allowed. Please run: - - git status --ignore-submodules=dirty - -and/or: - - git diff-index --cached --ignore-submodules=dirty HEAD - -... to see what's in your index. - -If you're really and truly trying to roll the version of a submodule, you should -commit the new version to DEPS, instead. -EOF - exit 1 -fi - -gitmodules_diff() { - git diff-index --cached "$1" .gitmodules -} - -if [ "$(git ls-files .gitmodules)" ] && [ "$(gitmodules_diff $head_ref)" ]; then - cat <<EOF 1>&2 -You are trying to commit a change to .gitmodules. That is not allowed. -To make changes to submodule names/paths, edit DEPS. -EOF - exit 1 -fi - -exit 0
diff --git a/build/gn_helpers.py b/build/gn_helpers.py deleted file mode 100644 index a9d1e2e..0000000 --- a/build/gn_helpers.py +++ /dev/null
@@ -1,351 +0,0 @@ -# Copyright 2014 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. - -"""Helper functions useful when writing scripts that integrate with GN. - -The main functions are ToGNString and FromGNString which convert between -serialized GN veriables and Python variables. - -To use in a random python file in the build: - - import os - import sys - - sys.path.append(os.path.join(os.path.dirname(__file__), - os.pardir, os.pardir, "build")) - import gn_helpers - -Where the sequence of parameters to join is the relative path from your source -file to the build directory.""" - -class GNException(Exception): - pass - - -def ToGNString(value, allow_dicts = True): - """Returns a stringified GN equivalent of the Python value. - - allow_dicts indicates if this function will allow converting dictionaries - to GN scopes. This is only possible at the top level, you can't nest a - GN scope in a list, so this should be set to False for recursive calls.""" - if isinstance(value, basestring): - if value.find('\n') >= 0: - raise GNException("Trying to print a string with a newline in it.") - return '"' + \ - value.replace('\\', '\\\\').replace('"', '\\"').replace('$', '\\$') + \ - '"' - - if isinstance(value, unicode): - return ToGNString(value.encode('utf-8')) - - if isinstance(value, bool): - if value: - return "true" - return "false" - - if isinstance(value, list): - return '[ %s ]' % ', '.join(ToGNString(v) for v in value) - - if isinstance(value, dict): - if not allow_dicts: - raise GNException("Attempting to recursively print a dictionary.") - result = "" - for key in sorted(value): - if not isinstance(key, basestring): - raise GNException("Dictionary key is not a string.") - result += "%s = %s\n" % (key, ToGNString(value[key], False)) - return result - - if isinstance(value, int): - return str(value) - - raise GNException("Unsupported type when printing to GN.") - - -def FromGNString(input_string): - """Converts the input string from a GN serialized value to Python values. - - For details on supported types see GNValueParser.Parse() below. - - If your GN script did: - something = [ "file1", "file2" ] - args = [ "--values=$something" ] - The command line would look something like: - --values="[ \"file1\", \"file2\" ]" - Which when interpreted as a command line gives the value: - [ "file1", "file2" ] - - You can parse this into a Python list using GN rules with: - input_values = FromGNValues(options.values) - Although the Python 'ast' module will parse many forms of such input, it - will not handle GN escaping properly, nor GN booleans. You should use this - function instead. - - - A NOTE ON STRING HANDLING: - - If you just pass a string on the command line to your Python script, or use - string interpolation on a string variable, the strings will not be quoted: - str = "asdf" - args = [ str, "--value=$str" ] - Will yield the command line: - asdf --value=asdf - The unquoted asdf string will not be valid input to this function, which - accepts only quoted strings like GN scripts. In such cases, you can just use - the Python string literal directly. - - The main use cases for this is for other types, in particular lists. When - using string interpolation on a list (as in the top example) the embedded - strings will be quoted and escaped according to GN rules so the list can be - re-parsed to get the same result.""" - parser = GNValueParser(input_string) - return parser.Parse() - - -def FromGNArgs(input_string): - """Converts a string with a bunch of gn arg assignments into a Python dict. - - Given a whitespace-separated list of - - <ident> = (integer | string | boolean | <list of the former>) - - gn assignments, this returns a Python dict, i.e.: - - FromGNArgs("foo=true\nbar=1\n") -> { 'foo': True, 'bar': 1 }. - - Only simple types and lists supported; variables, structs, calls - and other, more complicated things are not. - - This routine is meant to handle only the simple sorts of values that - arise in parsing --args. - """ - parser = GNValueParser(input_string) - return parser.ParseArgs() - - -def UnescapeGNString(value): - """Given a string with GN escaping, returns the unescaped string. - - Be careful not to feed with input from a Python parsing function like - 'ast' because it will do Python unescaping, which will be incorrect when - fed into the GN unescaper.""" - result = '' - i = 0 - while i < len(value): - if value[i] == '\\': - if i < len(value) - 1: - next_char = value[i + 1] - if next_char in ('$', '"', '\\'): - # These are the escaped characters GN supports. - result += next_char - i += 1 - else: - # Any other backslash is a literal. - result += '\\' - else: - result += value[i] - i += 1 - return result - - -def _IsDigitOrMinus(char): - return char in "-0123456789" - - -class GNValueParser(object): - """Duplicates GN parsing of values and converts to Python types. - - Normally you would use the wrapper function FromGNValue() below. - - If you expect input as a specific type, you can also call one of the Parse* - functions directly. All functions throw GNException on invalid input. """ - def __init__(self, string): - self.input = string - self.cur = 0 - - def IsDone(self): - return self.cur == len(self.input) - - def ConsumeWhitespace(self): - while not self.IsDone() and self.input[self.cur] in ' \t\n': - self.cur += 1 - - def Parse(self): - """Converts a string representing a printed GN value to the Python type. - - See additional usage notes on FromGNString above. - - - GN booleans ('true', 'false') will be converted to Python booleans. - - - GN numbers ('123') will be converted to Python numbers. - - - GN strings (double-quoted as in '"asdf"') will be converted to Python - strings with GN escaping rules. GN string interpolation (embedded - variables preceded by $) are not supported and will be returned as - literals. - - - GN lists ('[1, "asdf", 3]') will be converted to Python lists. - - - GN scopes ('{ ... }') are not supported.""" - result = self._ParseAllowTrailing() - self.ConsumeWhitespace() - if not self.IsDone(): - raise GNException("Trailing input after parsing:\n " + - self.input[self.cur:]) - return result - - def ParseArgs(self): - """Converts a whitespace-separated list of ident=literals to a dict. - - See additional usage notes on FromGNArgs, above. - """ - d = {} - - self.ConsumeWhitespace() - while not self.IsDone(): - ident = self._ParseIdent() - self.ConsumeWhitespace() - if self.input[self.cur] != '=': - raise GNException("Unexpected token: " + self.input[self.cur:]) - self.cur += 1 - self.ConsumeWhitespace() - val = self._ParseAllowTrailing() - self.ConsumeWhitespace() - d[ident] = val - - return d - - def _ParseAllowTrailing(self): - """Internal version of Parse that doesn't check for trailing stuff.""" - self.ConsumeWhitespace() - if self.IsDone(): - raise GNException("Expected input to parse.") - - next_char = self.input[self.cur] - if next_char == '[': - return self.ParseList() - elif _IsDigitOrMinus(next_char): - return self.ParseNumber() - elif next_char == '"': - return self.ParseString() - elif self._ConstantFollows('true'): - return True - elif self._ConstantFollows('false'): - return False - else: - raise GNException("Unexpected token: " + self.input[self.cur:]) - - def _ParseIdent(self): - ident = '' - - next_char = self.input[self.cur] - if not next_char.isalpha() and not next_char=='_': - raise GNException("Expected an identifier: " + self.input[self.cur:]) - - ident += next_char - self.cur += 1 - - next_char = self.input[self.cur] - while next_char.isalpha() or next_char.isdigit() or next_char=='_': - ident += next_char - self.cur += 1 - next_char = self.input[self.cur] - - return ident - - def ParseNumber(self): - self.ConsumeWhitespace() - if self.IsDone(): - raise GNException('Expected number but got nothing.') - - begin = self.cur - - # The first character can include a negative sign. - if not self.IsDone() and _IsDigitOrMinus(self.input[self.cur]): - self.cur += 1 - while not self.IsDone() and self.input[self.cur].isdigit(): - self.cur += 1 - - number_string = self.input[begin:self.cur] - if not len(number_string) or number_string == '-': - raise GNException("Not a valid number.") - return int(number_string) - - def ParseString(self): - self.ConsumeWhitespace() - if self.IsDone(): - raise GNException('Expected string but got nothing.') - - if self.input[self.cur] != '"': - raise GNException('Expected string beginning in a " but got:\n ' + - self.input[self.cur:]) - self.cur += 1 # Skip over quote. - - begin = self.cur - while not self.IsDone() and self.input[self.cur] != '"': - if self.input[self.cur] == '\\': - self.cur += 1 # Skip over the backslash. - if self.IsDone(): - raise GNException("String ends in a backslash in:\n " + - self.input) - self.cur += 1 - - if self.IsDone(): - raise GNException('Unterminated string:\n ' + self.input[begin:]) - - end = self.cur - self.cur += 1 # Consume trailing ". - - return UnescapeGNString(self.input[begin:end]) - - def ParseList(self): - self.ConsumeWhitespace() - if self.IsDone(): - raise GNException('Expected list but got nothing.') - - # Skip over opening '['. - if self.input[self.cur] != '[': - raise GNException("Expected [ for list but got:\n " + - self.input[self.cur:]) - self.cur += 1 - self.ConsumeWhitespace() - if self.IsDone(): - raise GNException("Unterminated list:\n " + self.input) - - list_result = [] - previous_had_trailing_comma = True - while not self.IsDone(): - if self.input[self.cur] == ']': - self.cur += 1 # Skip over ']'. - return list_result - - if not previous_had_trailing_comma: - raise GNException("List items not separated by comma.") - - list_result += [ self._ParseAllowTrailing() ] - self.ConsumeWhitespace() - if self.IsDone(): - break - - # Consume comma if there is one. - previous_had_trailing_comma = self.input[self.cur] == ',' - if previous_had_trailing_comma: - # Consume comma. - self.cur += 1 - self.ConsumeWhitespace() - - raise GNException("Unterminated list:\n " + self.input) - - def _ConstantFollows(self, constant): - """Returns true if the given constant follows immediately at the current - location in the input. If it does, the text is consumed and the function - returns true. Otherwise, returns false and the current position is - unchanged.""" - end = self.cur + len(constant) - if end > len(self.input): - return False # Not enough room. - if self.input[self.cur:end] == constant: - self.cur = end - return True - return False
diff --git a/build/gn_helpers_unittest.py b/build/gn_helpers_unittest.py deleted file mode 100644 index cc6018a..0000000 --- a/build/gn_helpers_unittest.py +++ /dev/null
@@ -1,117 +0,0 @@ -# Copyright 2016 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 gn_helpers -import unittest - -class UnitTest(unittest.TestCase): - def test_ToGNString(self): - self.assertEqual( - gn_helpers.ToGNString([1, 'two', [ '"thr$\\', True, False, [] ]]), - '[ 1, "two", [ "\\"thr\\$\\\\", true, false, [ ] ] ]') - - def test_UnescapeGNString(self): - # Backslash followed by a \, $, or " means the folling character without - # the special meaning. Backslash followed by everything else is a literal. - self.assertEqual( - gn_helpers.UnescapeGNString('\\as\\$\\\\asd\\"'), - '\\as$\\asd"') - - def test_FromGNString(self): - self.assertEqual( - gn_helpers.FromGNString('[1, -20, true, false,["as\\"", []]]'), - [ 1, -20, True, False, [ 'as"', [] ] ]) - - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('123 456') - parser.Parse() - - def test_ParseBool(self): - parser = gn_helpers.GNValueParser('true') - self.assertEqual(parser.Parse(), True) - - parser = gn_helpers.GNValueParser('false') - self.assertEqual(parser.Parse(), False) - - def test_ParseNumber(self): - parser = gn_helpers.GNValueParser('123') - self.assertEqual(parser.ParseNumber(), 123) - - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('') - parser.ParseNumber() - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('a123') - parser.ParseNumber() - - def test_ParseString(self): - parser = gn_helpers.GNValueParser('"asdf"') - self.assertEqual(parser.ParseString(), 'asdf') - - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('') # Empty. - parser.ParseString() - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('asdf') # Unquoted. - parser.ParseString() - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('"trailing') # Unterminated. - parser.ParseString() - - def test_ParseList(self): - parser = gn_helpers.GNValueParser('[1,]') # Optional end comma OK. - self.assertEqual(parser.ParseList(), [ 1 ]) - - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('') # Empty. - parser.ParseList() - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('asdf') # No []. - parser.ParseList() - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('[1, 2') # Unterminated - parser.ParseList() - with self.assertRaises(gn_helpers.GNException): - parser = gn_helpers.GNValueParser('[1 2]') # No separating comma. - parser.ParseList() - - def test_FromGNArgs(self): - # Booleans and numbers should work; whitespace is allowed works. - self.assertEqual(gn_helpers.FromGNArgs('foo = true\nbar = 1\n'), - {'foo': True, 'bar': 1}) - - # Whitespace is not required; strings should also work. - self.assertEqual(gn_helpers.FromGNArgs('foo="bar baz"'), - {'foo': 'bar baz'}) - - # Lists should work. - self.assertEqual(gn_helpers.FromGNArgs('foo=[1, 2, 3]'), - {'foo': [1, 2, 3]}) - - # Empty strings should return an empty dict. - self.assertEqual(gn_helpers.FromGNArgs(''), {}) - self.assertEqual(gn_helpers.FromGNArgs(' \n '), {}) - - # Non-identifiers should raise an exception. - with self.assertRaises(gn_helpers.GNException): - gn_helpers.FromGNArgs('123 = true') - - # References to other variables should raise an exception. - with self.assertRaises(gn_helpers.GNException): - gn_helpers.FromGNArgs('foo = bar') - - # References to functions should raise an exception. - with self.assertRaises(gn_helpers.GNException): - gn_helpers.FromGNArgs('foo = exec_script("//build/baz.py")') - - # Underscores in identifiers should work. - self.assertEqual(gn_helpers.FromGNArgs('_foo = true'), - {'_foo': True}) - self.assertEqual(gn_helpers.FromGNArgs('foo_bar = true'), - {'foo_bar': True}) - self.assertEqual(gn_helpers.FromGNArgs('foo_=true'), - {'foo_': True}) - -if __name__ == '__main__': - unittest.main()
diff --git a/build/gn_run_binary.py b/build/gn_run_binary.py deleted file mode 100644 index d7f7165..0000000 --- a/build/gn_run_binary.py +++ /dev/null
@@ -1,31 +0,0 @@ -# Copyright 2014 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. - -"""Helper script for GN to run an arbitrary binary. See compiled_action.gni. - -Run with: - python gn_run_binary.py <binary_name> [args ...] -""" - -import subprocess -import sys - -# This script is designed to run binaries produced by the current build. We -# always prefix it with "./" to avoid picking up system versions that might -# also be on the path. -path = './' + sys.argv[1] - -# The rest of the arguments are passed directly to the executable. -args = [path] + sys.argv[2:] - -ret = subprocess.call(args) -if ret != 0: - if ret <= -100: - # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to - # recognize and differentiate in hex. In order to print them as unsigned - # hex we need to add 4 Gig to them. - print '%s failed with exit code 0x%08X' % (sys.argv[1], ret + (1 << 32)) - else: - print '%s failed with exit code %d' % (sys.argv[1], ret) -sys.exit(ret)
diff --git a/build/gyp_chromium b/build/gyp_chromium deleted file mode 100755 index 4fc62ba..0000000 --- a/build/gyp_chromium +++ /dev/null
@@ -1,12 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -# Simple launcher script for gyp_chromium.py. -# TODO(sbc): This should probably be shell script but for historical -# reasons (all the python code used to live in this script without a -# .py extension, and was often run as 'python gyp_chromium') it is -# currently still python. - -execfile(__file__ + '.py')
diff --git a/build/gyp_chromium.py b/build/gyp_chromium.py deleted file mode 100644 index ab2e470..0000000 --- a/build/gyp_chromium.py +++ /dev/null
@@ -1,68 +0,0 @@ -# Copyright (c) 2012 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. - -"""This script is now only used by the closure_compilation builders.""" - -import argparse -import glob -import gyp_environment -import os -import shlex -import sys - -script_dir = os.path.dirname(os.path.realpath(__file__)) -chrome_src = os.path.abspath(os.path.join(script_dir, os.pardir)) - -sys.path.insert(0, os.path.join(chrome_src, 'tools', 'gyp', 'pylib')) -import gyp - - -def ProcessGypDefinesItems(items): - """Converts a list of strings to a list of key-value pairs.""" - result = [] - for item in items: - tokens = item.split('=', 1) - # Some GYP variables have hyphens, which we don't support. - if len(tokens) == 2: - result += [(tokens[0], tokens[1])] - else: - # No value supplied, treat it as a boolean and set it. Note that we - # use the string '1' here so we have a consistent definition whether - # you do 'foo=1' or 'foo'. - result += [(tokens[0], '1')] - return result - - -def GetSupplementalFiles(): - return [] - - -def GetGypVars(_): - """Returns a dictionary of all GYP vars.""" - # GYP defines from the environment. - env_items = ProcessGypDefinesItems( - shlex.split(os.environ.get('GYP_DEFINES', ''))) - - # GYP defines from the command line. - parser = argparse.ArgumentParser() - parser.add_argument('-D', dest='defines', action='append', default=[]) - cmdline_input_items = parser.parse_known_args()[0].defines - cmdline_items = ProcessGypDefinesItems(cmdline_input_items) - - return dict(env_items + cmdline_items) - - -def main(): - gyp_environment.SetEnvironment() - - print 'Updating projects from gyp files...' - sys.stdout.flush() - sys.exit(gyp.main(sys.argv[1:] + [ - '--check', - '--no-circular-check', - '-I', os.path.join(script_dir, 'common.gypi'), - '-D', 'gyp_output_dir=out'])) - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/gyp_environment.py b/build/gyp_environment.py deleted file mode 100644 index 51b9136..0000000 --- a/build/gyp_environment.py +++ /dev/null
@@ -1,30 +0,0 @@ -# Copyright 2014 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. - -""" -Sets up various automatic gyp environment variables. These are used by -gyp_chromium and landmines.py which run at different stages of runhooks. To -make sure settings are consistent between them, all setup should happen here. -""" - -import gyp_helper -import os -import sys -import vs_toolchain - -def SetEnvironment(): - """Sets defaults for GYP_* variables.""" - gyp_helper.apply_chromium_gyp_env() - - # Default to ninja on linux and windows, but only if no generator has - # explicitly been set. - # Also default to ninja on mac, but only when not building chrome/ios. - # . -f / --format has precedence over the env var, no need to check for it - # . set the env var only if it hasn't been set yet - # . chromium.gyp_env has been applied to os.environ at this point already - if sys.platform.startswith(('linux', 'win', 'freebsd', 'darwin')) and \ - not os.environ.get('GYP_GENERATORS'): - os.environ['GYP_GENERATORS'] = 'ninja' - - vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs()
diff --git a/build/gyp_helper.py b/build/gyp_helper.py deleted file mode 100644 index c840f2d..0000000 --- a/build/gyp_helper.py +++ /dev/null
@@ -1,68 +0,0 @@ -# Copyright (c) 2012 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. - -# This file helps gyp_chromium and landmines correctly set up the gyp -# environment from chromium.gyp_env on disk - -import os - -SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) -CHROME_SRC = os.path.dirname(SCRIPT_DIR) - - -def apply_gyp_environment_from_file(file_path): - """Reads in a *.gyp_env file and applies the valid keys to os.environ.""" - if not os.path.exists(file_path): - return - with open(file_path, 'rU') as f: - file_contents = f.read() - try: - file_data = eval(file_contents, {'__builtins__': None}, None) - except SyntaxError, e: - e.filename = os.path.abspath(file_path) - raise - supported_vars = ( - 'CC', - 'CC_wrapper', - 'CC.host_wrapper', - 'CHROMIUM_GYP_FILE', - 'CHROMIUM_GYP_SYNTAX_CHECK', - 'CXX', - 'CXX_wrapper', - 'CXX.host_wrapper', - 'GYP_DEFINES', - 'GYP_GENERATOR_FLAGS', - 'GYP_CROSSCOMPILE', - 'GYP_GENERATOR_OUTPUT', - 'GYP_GENERATORS', - 'GYP_INCLUDE_FIRST', - 'GYP_INCLUDE_LAST', - 'GYP_MSVS_VERSION', - ) - for var in supported_vars: - file_val = file_data.get(var) - if file_val: - if var in os.environ: - behavior = 'replaces' - if var == 'GYP_DEFINES': - result = file_val + ' ' + os.environ[var] - behavior = 'merges with, and individual components override,' - else: - result = os.environ[var] - print 'INFO: Environment value for "%s" %s value in %s' % ( - var, behavior, os.path.abspath(file_path) - ) - string_padding = max(len(var), len(file_path), len('result')) - print ' %s: %s' % (var.rjust(string_padding), os.environ[var]) - print ' %s: %s' % (file_path.rjust(string_padding), file_val) - os.environ[var] = result - else: - os.environ[var] = file_val - - -def apply_chromium_gyp_env(): - if 'SKIP_CHROMIUM_GYP_ENV' not in os.environ: - # Update the environment based on chromium.gyp_env - path = os.path.join(os.path.dirname(CHROME_SRC), 'chromium.gyp_env') - apply_gyp_environment_from_file(path)
diff --git a/build/gypi_to_gn.py b/build/gypi_to_gn.py deleted file mode 100644 index 2a3a72a..0000000 --- a/build/gypi_to_gn.py +++ /dev/null
@@ -1,192 +0,0 @@ -# Copyright 2014 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. - -"""Converts a given gypi file to a python scope and writes the result to stdout. - -USING THIS SCRIPT IN CHROMIUM - -Forking Python to run this script in the middle of GN is slow, especially on -Windows, and it makes both the GYP and GN files harder to follow. You can't -use "git grep" to find files in the GN build any more, and tracking everything -in GYP down requires a level of indirection. Any calls will have to be removed -and cleaned up once the GYP-to-GN transition is complete. - -As a result, we only use this script when the list of files is large and -frequently-changing. In these cases, having one canonical list outweights the -downsides. - -As of this writing, the GN build is basically complete. It's likely that all -large and frequently changing targets where this is appropriate use this -mechanism already. And since we hope to turn down the GYP build soon, the time -horizon is also relatively short. As a result, it is likely that no additional -uses of this script should every be added to the build. During this later part -of the transition period, we should be focusing more and more on the absolute -readability of the GN build. - - -HOW TO USE - -It is assumed that the file contains a toplevel dictionary, and this script -will return that dictionary as a GN "scope" (see example below). This script -does not know anything about GYP and it will not expand variables or execute -conditions. - -It will strip conditions blocks. - -A variables block at the top level will be flattened so that the variables -appear in the root dictionary. This way they can be returned to the GN code. - -Say your_file.gypi looked like this: - { - 'sources': [ 'a.cc', 'b.cc' ], - 'defines': [ 'ENABLE_DOOM_MELON' ], - } - -You would call it like this: - gypi_values = exec_script("//build/gypi_to_gn.py", - [ rebase_path("your_file.gypi") ], - "scope", - [ "your_file.gypi" ]) - -Notes: - - The rebase_path call converts the gypi file from being relative to the - current build file to being system absolute for calling the script, which - will have a different current directory than this file. - - - The "scope" parameter tells GN to interpret the result as a series of GN - variable assignments. - - - The last file argument to exec_script tells GN that the given file is a - dependency of the build so Ninja can automatically re-run GN if the file - changes. - -Read the values into a target like this: - component("mycomponent") { - sources = gypi_values.sources - defines = gypi_values.defines - } - -Sometimes your .gypi file will include paths relative to a different -directory than the current .gn file. In this case, you can rebase them to -be relative to the current directory. - sources = rebase_path(gypi_values.sources, ".", - "//path/gypi/input/values/are/relative/to") - -This script will tolerate a 'variables' in the toplevel dictionary or not. If -the toplevel dictionary just contains one item called 'variables', it will be -collapsed away and the result will be the contents of that dictinoary. Some -.gypi files are written with or without this, depending on how they expect to -be embedded into a .gyp file. - -This script also has the ability to replace certain substrings in the input. -Generally this is used to emulate GYP variable expansion. If you passed the -argument "--replace=<(foo)=bar" then all instances of "<(foo)" in strings in -the input will be replaced with "bar": - - gypi_values = exec_script("//build/gypi_to_gn.py", - [ rebase_path("your_file.gypi"), - "--replace=<(foo)=bar"], - "scope", - [ "your_file.gypi" ]) - -""" - -import gn_helpers -from optparse import OptionParser -import sys - -def LoadPythonDictionary(path): - file_string = open(path).read() - try: - file_data = eval(file_string, {'__builtins__': None}, None) - except SyntaxError, e: - e.filename = path - raise - except Exception, e: - raise Exception("Unexpected error while reading %s: %s" % (path, str(e))) - - assert isinstance(file_data, dict), "%s does not eval to a dictionary" % path - - # Flatten any variables to the top level. - if 'variables' in file_data: - file_data.update(file_data['variables']) - del file_data['variables'] - - # Strip all elements that this script can't process. - elements_to_strip = [ - 'conditions', - 'target_conditions', - 'target_defaults', - 'targets', - 'includes', - 'actions', - ] - for element in elements_to_strip: - if element in file_data: - del file_data[element] - - return file_data - - -def ReplaceSubstrings(values, search_for, replace_with): - """Recursively replaces substrings in a value. - - Replaces all substrings of the "search_for" with "repace_with" for all - strings occurring in "values". This is done by recursively iterating into - lists as well as the keys and values of dictionaries.""" - if isinstance(values, str): - return values.replace(search_for, replace_with) - - if isinstance(values, list): - return [ReplaceSubstrings(v, search_for, replace_with) for v in values] - - if isinstance(values, dict): - # For dictionaries, do the search for both the key and values. - result = {} - for key, value in values.items(): - new_key = ReplaceSubstrings(key, search_for, replace_with) - new_value = ReplaceSubstrings(value, search_for, replace_with) - result[new_key] = new_value - return result - - # Assume everything else is unchanged. - return values - -def main(): - parser = OptionParser() - parser.add_option("-r", "--replace", action="append", - help="Replaces substrings. If passed a=b, replaces all substrs a with b.") - (options, args) = parser.parse_args() - - if len(args) != 1: - raise Exception("Need one argument which is the .gypi file to read.") - - data = LoadPythonDictionary(args[0]) - if options.replace: - # Do replacements for all specified patterns. - for replace in options.replace: - split = replace.split('=') - # Allow "foo=" to replace with nothing. - if len(split) == 1: - split.append('') - assert len(split) == 2, "Replacement must be of the form 'key=value'." - data = ReplaceSubstrings(data, split[0], split[1]) - - # Sometimes .gypi files use the GYP syntax with percents at the end of the - # variable name (to indicate not to overwrite a previously-defined value): - # 'foo%': 'bar', - # Convert these to regular variables. - for key in data: - if len(key) > 1 and key[len(key) - 1] == '%': - data[key[:-1]] = data[key] - del data[key] - - print gn_helpers.ToGNString(data) - -if __name__ == '__main__': - try: - main() - except Exception, e: - print str(e) - sys.exit(1)
diff --git a/build/install-build-deps-android.sh b/build/install-build-deps-android.sh deleted file mode 100755 index 15fea85..0000000 --- a/build/install-build-deps-android.sh +++ /dev/null
@@ -1,74 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2012 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. - -# Script to install everything needed to build chromium on android, including -# items requiring sudo privileges. -# See https://www.chromium.org/developers/how-tos/android-build-instructions - -args="$@" - -if ! uname -m | egrep -q "i686|x86_64"; then - echo "Only x86 architectures are currently supported" >&2 - exit -fi - -# Exit if any commands fail. -set -e - -lsb_release=$(lsb_release --codename --short) - -# Install first the default Linux build deps. -"$(dirname "${BASH_SOURCE[0]}")/install-build-deps.sh" \ - --no-syms --lib32 --no-arm --no-chromeos-fonts --no-nacl --no-prompt "${args}" - -# Fix deps -sudo apt-get -f install - -# common -sudo apt-get -y install lib32z1 lighttpd python-pexpect xvfb x11-utils - -# Some binaries in the Android SDK require 32-bit libraries on the host. -# See https://developer.android.com/sdk/installing/index.html?pkg=tools -sudo apt-get -y install libncurses5:i386 libstdc++6:i386 zlib1g:i386 - -# Required for apk-patch-size-estimator -sudo apt-get -y install bsdiff - -# Do our own error handling for java. -set +e - -function IsJava8() { - # Arg is either "java" or "javac" - $1 -version 2>&1 | grep -q '1\.8' -} - -if ! (IsJava8 java && IsJava8 javac); then - sudo apt-get -y install openjdk-8-jre openjdk-8-jdk -fi - -# There can be several reasons why java8 is not default despite being installed. -# Just show an error and exit. -if ! (IsJava8 java && IsJava8 javac); then - echo - echo "Automatic java installation failed." - echo '`java -version` reports:' - java -version - echo - echo '`javac -version` reports:' - javac -version - echo - echo "Please ensure that JDK 8 is installed and resolves first in your PATH." - echo -n '`which java` reports: ' - which java - echo -n '`which javac` reports: ' - which javac - echo - echo "You might also try running:" - echo " sudo update-java-alternatives -s java-1.8.0-openjdk-amd64" - exit 1 -fi - -echo "install-build-deps-android.sh complete."
diff --git a/build/install-build-deps.sh b/build/install-build-deps.sh deleted file mode 100755 index b110558..0000000 --- a/build/install-build-deps.sh +++ /dev/null
@@ -1,722 +0,0 @@ -#!/bin/bash -e - -# Copyright (c) 2012 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. - -# Script to install everything needed to build chromium (well, ideally, anyway) -# See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md - -usage() { - echo "Usage: $0 [--options]" - echo "Options:" - echo "--[no-]syms: enable or disable installation of debugging symbols" - echo "--lib32: enable installation of 32-bit libraries, e.g. for V8 snapshot" - echo "--[no-]arm: enable or disable installation of arm cross toolchain" - echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\ - "fonts" - echo "--[no-]nacl: enable or disable installation of prerequisites for"\ - "building standalone NaCl and all its toolchains" - echo "--no-prompt: silently select standard options/defaults" - echo "--quick-check: quickly try to determine if dependencies are installed" - echo " (this avoids interactive prompts and sudo commands," - echo " so might not be 100% accurate)" - echo "--unsupported: attempt installation even on unsupported systems" - echo "Script will prompt interactively if options not given." - exit 1 -} - -# Waits for the user to press 'Y' or 'N'. Either uppercase of lowercase is -# accepted. Returns 0 for 'Y' and 1 for 'N'. If an optional parameter has -# been provided to yes_no(), the function also accepts RETURN as a user input. -# The parameter specifies the exit code that should be returned in that case. -# The function will echo the user's selection followed by a newline character. -# Users can abort the function by pressing CTRL-C. This will call "exit 1". -yes_no() { - if [ 0 -ne "${do_default-0}" ] ; then - [ $1 -eq 0 ] && echo "Y" || echo "N" - return $1 - fi - local c - while :; do - c="$(trap 'stty echo -iuclc icanon 2>/dev/null' EXIT INT TERM QUIT - stty -echo iuclc -icanon 2>/dev/null - dd count=1 bs=1 2>/dev/null | od -An -tx1)" - case "$c" in - " 0a") if [ -n "$1" ]; then - [ $1 -eq 0 ] && echo "Y" || echo "N" - return $1 - fi - ;; - " 79") echo "Y" - return 0 - ;; - " 6e") echo "N" - return 1 - ;; - "") echo "Aborted" >&2 - exit 1 - ;; - *) # The user pressed an unrecognized key. As we are not echoing - # any incorrect user input, alert the user by ringing the bell. - (tput bel) 2>/dev/null - ;; - esac - done -} - -# Checks whether a particular package is available in the repos. -# USAGE: $ package_exists <package name> -package_exists() { - # 'apt-cache search' takes a regex string, so eg. the +'s in packages like - # "libstdc++" need to be escaped. - local escaped="$(echo $1 | sed 's/[\~\+\.\:-]/\\&/g')" - [ ! -z "$(apt-cache search --names-only "${escaped}" | \ - awk '$1 == "'$1'" { print $1; }')" ] -} - -# These default to on because (some) bots need them and it keeps things -# simple for the bot setup if all bots just run the script in its default -# mode. Developers who don't want stuff they don't need installed on their -# own workstations can pass --no-arm --no-nacl when running the script. -do_inst_arm=1 -do_inst_nacl=1 - -while test "$1" != "" -do - case "$1" in - --syms) do_inst_syms=1;; - --no-syms) do_inst_syms=0;; - --lib32) do_inst_lib32=1;; - --arm) do_inst_arm=1;; - --no-arm) do_inst_arm=0;; - --chromeos-fonts) do_inst_chromeos_fonts=1;; - --no-chromeos-fonts) do_inst_chromeos_fonts=0;; - --nacl) do_inst_nacl=1;; - --no-nacl) do_inst_nacl=0;; - --no-prompt) do_default=1 - do_quietly="-qq --assume-yes" - ;; - --quick-check) do_quick_check=1;; - --unsupported) do_unsupported=1;; - *) usage;; - esac - shift -done - -if test "$do_inst_arm" = "1"; then - do_inst_lib32=1 -fi - -# Check for lsb_release command in $PATH -if ! which lsb_release > /dev/null; then - echo "ERROR: lsb_release not found in \$PATH" >&2 - exit 1; -fi - -distro_codename=$(lsb_release --codename --short) -distro_id=$(lsb_release --id --short) -supported_codenames="(trusty|xenial|artful|bionic)" -supported_ids="(Debian)" -if [ 0 -eq "${do_unsupported-0}" ] && [ 0 -eq "${do_quick_check-0}" ] ; then - if [[ ! $distro_codename =~ $supported_codenames && - ! $distro_id =~ $supported_ids ]]; then - echo -e "ERROR: The only supported distros are\n" \ - "\tUbuntu 14.04 LTS (trusty)\n" \ - "\tUbuntu 16.04 LTS (xenial)\n" \ - "\tUbuntu 17.10 (artful)\n" \ - "\tUbuntu 18.04 LTS (bionic)\n" \ - "\tDebian 8 (jessie) or later" >&2 - exit 1 - fi - - if ! uname -m | egrep -q "i686|x86_64"; then - echo "Only x86 architectures are currently supported" >&2 - exit - fi -fi - -if [ "x$(id -u)" != x0 ] && [ 0 -eq "${do_quick_check-0}" ]; then - echo "Running as non-root user." - echo "You might have to enter your password one or more times for 'sudo'." - echo -fi - -# Packages needed for chromeos only -chromeos_dev_list="libbluetooth-dev libxkbcommon-dev" - -if package_exists realpath; then - chromeos_dev_list="${chromeos_dev_list} realpath" -fi - -# Packages needed for development -dev_list="\ - bison - bzip2 - cdbs - curl - dbus-x11 - dpkg-dev - elfutils - devscripts - fakeroot - flex - g++ - git-core - git-svn - gperf - libappindicator-dev - libappindicator3-dev - libasound2-dev - libbrlapi-dev - libbz2-dev - libcairo2-dev - libcap-dev - libcups2-dev - libcurl4-gnutls-dev - libdrm-dev - libelf-dev - libffi-dev - libgbm-dev - libglib2.0-dev - libglu1-mesa-dev - libgnome-keyring-dev - libgtk2.0-dev - libgtk-3-dev - libkrb5-dev - libnspr4-dev - libnss3-dev - libpam0g-dev - libpci-dev - libpulse-dev - libsctp-dev - libspeechd-dev - libsqlite3-dev - libssl-dev - libudev-dev - libwww-perl - libxslt1-dev - libxss-dev - libxt-dev - libxtst-dev - locales - openbox - p7zip - patch - perl - pkg-config - python - python-cherrypy3 - python-crypto - python-dev - python-numpy - python-opencv - python-openssl - python-psutil - python-yaml - rpm - ruby - subversion - wdiff - x11-utils - xcompmgr - xz-utils - zip - $chromeos_dev_list -" - -# 64-bit systems need a minimum set of 32-bit compat packages for the pre-built -# NaCl binaries. -if file -L /sbin/init | grep -q 'ELF 64-bit'; then - dev_list="${dev_list} libc6-i386 lib32gcc1 lib32stdc++6" -fi - -# Run-time libraries required by chromeos only -chromeos_lib_list="libpulse0 libbz2-1.0" - -# Full list of required run-time libraries -lib_list="\ - libappindicator1 - libappindicator3-1 - libasound2 - libatk1.0-0 - libc6 - libcairo2 - libcap2 - libcups2 - libexpat1 - libffi6 - libfontconfig1 - libfreetype6 - libglib2.0-0 - libgnome-keyring0 - libgtk2.0-0 - libgtk-3-0 - libpam0g - libpango1.0-0 - libpci3 - libpcre3 - libpixman-1-0 - libspeechd2 - libstdc++6 - libsqlite3-0 - libwayland-egl1-mesa - libx11-6 - libx11-xcb1 - libxau6 - libxcb1 - libxcomposite1 - libxcursor1 - libxdamage1 - libxdmcp6 - libxext6 - libxfixes3 - libxi6 - libxinerama1 - libxrandr2 - libxrender1 - libxtst6 - zlib1g - $chromeos_lib_list -" - -# Debugging symbols for all of the run-time libraries -dbg_list="\ - libc6-dbg - libffi6-dbg - libgtk2.0-0-dbg - libpcre3-dbg - libxau6-dbg - libxcb1-dbg - libxcomposite1-dbg - libxdmcp6-dbg - libxext6-dbg - libxinerama1-dbg - zlib1g-dbg -" - -if package_exists libstdc++6-6-dbg; then - dbg_list="${dbg_list} libstdc++6-6-dbg" -elif package_exists libstdc++6-4.9-dbg; then - dbg_list="${dbg_list} libstdc++6-4.9-dbg" -else - dbg_list="${dbg_list} libstdc++6-4.8-dbg" -fi -if package_exists libgtk-3-0-dbgsym; then - dbg_list="${dbg_list} libgtk-3-0-dbgsym" -elif package_exists libgtk-3-0-dbg; then - dbg_list="${dbg_list} libgtk-3-0-dbg" -fi -if package_exists libatk1.0-0-dbgsym; then - dbg_list="${dbg_list} libatk1.0-0-dbgsym" -elif package_exists libatk1.0-dbg; then - dbg_list="${dbg_list} libatk1.0-dbg" -fi -if package_exists libcairo2-dbgsym; then - dbg_list="${dbg_list} libcairo2-dbgsym" -elif package_exists libcairo2-dbg; then - dbg_list="${dbg_list} libcairo2-dbg" -fi -if package_exists libfontconfig1-dbgsym; then - dbg_list="${dbg_list} libfontconfig1-dbgsym" -else - dbg_list="${dbg_list} libfontconfig1-dbg" -fi -if package_exists libxdamage1-dbgsym; then - dbg_list="${dbg_list} libxdamage1-dbgsym" -elif package_exists libxdamage1-dbg; then - dbg_list="${dbg_list} libxdamage1-dbg" -fi -if package_exists libpango1.0-dev-dbgsym; then - dbg_list="${dbg_list} libpango1.0-dev-dbgsym" -elif package_exists libpango1.0-0-dbg; then - dbg_list="${dbg_list} libpango1.0-0-dbg" -fi -if package_exists libx11-6-dbg; then - dbg_list="${dbg_list} libx11-6-dbg" -fi -if package_exists libx11-xcb1-dbg; then - dbg_list="${dbg_list} libx11-xcb1-dbg" -fi -if package_exists libxfixes3-dbg; then - dbg_list="${dbg_list} libxfixes3-dbg" -fi -if package_exists libxi6-dbg; then - dbg_list="${dbg_list} libxi6-dbg" -fi -if package_exists libxrandr2-dbg; then - dbg_list="${dbg_list} libxrandr2-dbg" -fi -if package_exists libxrender1-dbg; then - dbg_list="${dbg_list} libxrender1-dbg" -fi -if package_exists libxtst6-dbg; then - dbg_list="${dbg_list} libxtst6-dbg" -fi -if package_exists libglib2.0-0-dbgsym; then - dbg_list="${dbg_list} libglib2.0-0-dbgsym" -elif package_exists libglib2.0-0-dbg; then - dbg_list="${dbg_list} libglib2.0-0-dbg" -fi -if package_exists libxcursor1-dbgsym; then - dbg_list="${dbg_list} libxcursor1-dbgsym" -elif package_exists libxcursor1-dbg; then - dbg_list="${dbg_list} libxcursor1-dbg" -fi -if package_exists libsqlite3-0-dbgsym; then - dbg_list="${dbg_list} libsqlite3-0-dbgsym" -else - dbg_list="${dbg_list} libsqlite3-0-dbg" -fi -if package_exists libpixman-1-0-dbgsym; then - dbg_list="${dbg_list} libpixman-1-0-dbgsym" -else - dbg_list="${dbg_list} libpixman-1-0-dbg" -fi - -# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf -lib32_list="linux-libc-dev:i386 libpci3:i386" - -# 32-bit libraries needed for a 32-bit build -lib32_list="$lib32_list libx11-xcb1:i386" - -# arm cross toolchain packages needed to build chrome on armhf -EM_REPO="deb http://emdebian.org/tools/debian/ jessie main" -EM_SOURCE=$(cat <<EOF -# Repo added by Chromium $0 -${EM_REPO} -# deb-src http://emdebian.org/tools/debian/ jessie main -EOF -) -EM_ARCHIVE_KEY_FINGER="084C6C6F39159EDB67969AA87DE089671804772E" -GPP_ARM_PACKAGE="g++-arm-linux-gnueabihf" -case $distro_codename in - jessie) - eval $(apt-config shell APT_SOURCESDIR 'Dir::Etc::sourceparts/d') - CROSSTOOLS_LIST="${APT_SOURCESDIR}/crosstools.list" - arm_list="libc6-dev:armhf - linux-libc-dev:armhf" - if test "$do_inst_arm" = "1"; then - if $(dpkg-query -W ${GPP_ARM_PACKAGE} &>/dev/null); then - arm_list+=" ${GPP_ARM_PACKAGE}" - else - echo "The Debian Cross-toolchains repository is necessary to" - echo "cross-compile Chromium for arm." - echo -n "Do you want me to add it for you (y/N) " - if yes_no 1; then - gpg --keyserver pgp.mit.edu --recv-keys ${EM_ARCHIVE_KEY_FINGER} - gpg -a --export ${EM_ARCHIVE_KEY_FINGER} | sudo apt-key add - - if ! grep "^${EM_REPO}" "${CROSSTOOLS_LIST}" &>/dev/null; then - echo "${EM_SOURCE}" | sudo tee -a "${CROSSTOOLS_LIST}" >/dev/null - fi - arm_list+=" ${GPP_ARM_PACKAGE}" - fi - fi - fi - ;; - # All necessary ARM packages are available on the default repos on - # Debian 9 and later. - *) - arm_list="libc6-dev-armhf-cross - linux-libc-dev-armhf-cross - ${GPP_ARM_PACKAGE}" - ;; -esac - -# Work around for dependency issue Ubuntu/Trusty: http://crbug.com/435056 -case $distro_codename in - trusty) - arm_list+=" g++-4.8-multilib-arm-linux-gnueabihf - gcc-4.8-multilib-arm-linux-gnueabihf" - ;; - xenial|artful|bionic) - arm_list+=" g++-5-multilib-arm-linux-gnueabihf - gcc-5-multilib-arm-linux-gnueabihf - gcc-arm-linux-gnueabihf" - ;; -esac - -# Packages to build NaCl, its toolchains, and its ports. -naclports_list="ant autoconf bison cmake gawk intltool xutils-dev xsltproc" -nacl_list="\ - g++-mingw-w64-i686 - lib32z1-dev - libasound2:i386 - libcap2:i386 - libelf-dev:i386 - libfontconfig1:i386 - libglib2.0-0:i386 - libgpm2:i386 - libgtk2.0-0:i386 - libgtk-3-0:i386 - libncurses5:i386 - lib32ncurses5-dev - libnss3:i386 - libpango1.0-0:i386 - libssl-dev:i386 - libtinfo-dev - libtinfo-dev:i386 - libtool - libxcomposite1:i386 - libxcursor1:i386 - libxdamage1:i386 - libxi6:i386 - libxrandr2:i386 - libxss1:i386 - libxtst6:i386 - texinfo - xvfb - ${naclports_list} -" - -if package_exists libssl1.1; then - nacl_list="${nacl_list} libssl1.1:i386" -elif package_exists libssl1.0.2; then - nacl_list="${nacl_list} libssl1.0.2:i386" -else - nacl_list="${nacl_list} libssl1.0.0:i386" -fi - -# Some package names have changed over time -if package_exists libpng16-16; then - lib_list="${lib_list} libpng16-16" -else - lib_list="${lib_list} libpng12-0" -fi -if package_exists libnspr4-dbg; then - dbg_list="${dbg_list} libnspr4-dbg libnss3-dbg" - lib_list="${lib_list} libnspr4 libnss3" -else - dbg_list="${dbg_list} libnspr4-0d-dbg libnss3-1d-dbg" - lib_list="${lib_list} libnspr4-0d libnss3-1d" -fi -if package_exists libjpeg-dev; then - dev_list="${dev_list} libjpeg-dev" -else - dev_list="${dev_list} libjpeg62-dev" -fi -if package_exists libudev1; then - dev_list="${dev_list} libudev1" - nacl_list="${nacl_list} libudev1:i386" -else - dev_list="${dev_list} libudev0" - nacl_list="${nacl_list} libudev0:i386" -fi -if package_exists libbrlapi0.6; then - dev_list="${dev_list} libbrlapi0.6" -else - dev_list="${dev_list} libbrlapi0.5" -fi -if package_exists apache2.2-bin; then - dev_list="${dev_list} apache2.2-bin" -else - dev_list="${dev_list} apache2-bin" -fi -if package_exists libav-tools; then - dev_list="${dev_list} libav-tools" -fi -if package_exists php7.2-cgi; then - dev_list="${dev_list} php7.2-cgi libapache2-mod-php7.2" -elif package_exists php7.1-cgi; then - dev_list="${dev_list} php7.1-cgi libapache2-mod-php7.1" -elif package_exists php7.0-cgi; then - dev_list="${dev_list} php7.0-cgi libapache2-mod-php7.0" -else - dev_list="${dev_list} php5-cgi libapache2-mod-php5" -fi - -# Some packages are only needed if the distribution actually supports -# installing them. -if package_exists appmenu-gtk; then - lib_list="$lib_list appmenu-gtk" -fi - -# Cross-toolchain strip is needed for building the sysroots. -if package_exists binutils-arm-linux-gnueabihf; then - dev_list="${dev_list} binutils-arm-linux-gnueabihf" -fi -if package_exists binutils-aarch64-linux-gnu; then - dev_list="${dev_list} binutils-aarch64-linux-gnu" -fi -if package_exists binutils-mipsel-linux-gnu; then - dev_list="${dev_list} binutils-mipsel-linux-gnu" -fi -if package_exists binutils-mips64el-linux-gnuabi64; then - dev_list="${dev_list} binutils-mips64el-linux-gnuabi64" -fi - -# When cross building for arm/Android on 64-bit systems the host binaries -# that are part of v8 need to be compiled with -m32 which means -# that basic multilib support is needed. -if file -L /sbin/init | grep -q 'ELF 64-bit'; then - # gcc-multilib conflicts with the arm cross compiler (at least in trusty) but - # g++-X.Y-multilib gives us the 32-bit support that we need. Find out the - # appropriate value of X and Y by seeing what version the current - # distribution's g++-multilib package depends on. - multilib_package=$(apt-cache depends g++-multilib --important | \ - grep -E --color=never --only-matching '\bg\+\+-[0-9.]+-multilib\b') - lib32_list="$lib32_list $multilib_package" -fi - -if test "$do_inst_syms" = "" && test 0 -eq ${do_quick_check-0} -then - echo "This script installs all tools and libraries needed to build Chromium." - echo "" - echo "For most of the libraries, it can also install debugging symbols, which" - echo "will allow you to debug code in the system libraries. Most developers" - echo "won't need these symbols." - echo -n "Do you want me to install them for you (y/N) " - if yes_no 1; then - do_inst_syms=1 - fi -fi -if test "$do_inst_syms" = "1"; then - echo "Including debugging symbols." -else - echo "Skipping debugging symbols." - dbg_list= -fi - -if test "$do_inst_lib32" = "1" ; then - echo "Including 32-bit libraries." -else - echo "Skipping 32-bit libraries." - lib32_list= -fi - -if test "$do_inst_arm" = "1" ; then - echo "Including ARM cross toolchain." -else - echo "Skipping ARM cross toolchain." - arm_list= -fi - -if test "$do_inst_nacl" = "1"; then - echo "Including NaCl, NaCl toolchain, NaCl ports dependencies." -else - echo "Skipping NaCl, NaCl toolchain, NaCl ports dependencies." - nacl_list= -fi - -# The `sort -r -s -t: -k2` sorts all the :i386 packages to the front, to avoid -# confusing dpkg-query (crbug.com/446172). -packages="$( - echo "${dev_list} ${lib_list} ${dbg_list} ${lib32_list} ${arm_list}"\ - "${nacl_list}" | tr " " "\n" | sort -u | sort -r -s -t: -k2 | tr "\n" " " -)" - -if [ 1 -eq "${do_quick_check-0}" ] ; then - if ! missing_packages="$(dpkg-query -W -f ' ' ${packages} 2>&1)"; then - # Distinguish between packages that actually aren't available to the - # system (i.e. not in any repo) and packages that just aren't known to - # dpkg (i.e. managed by apt). - missing_packages="$(echo "${missing_packages}" | awk '{print $NF}')" - not_installed="" - unknown="" - for p in ${missing_packages}; do - if apt-cache show ${p} > /dev/null 2>&1; then - not_installed="${p}\n${not_installed}" - else - unknown="${p}\n${unknown}" - fi - done - if [ -n "${not_installed}" ]; then - echo "WARNING: The following packages are not installed:" - echo -e "${not_installed}" | sed -e "s/^/ /" - fi - if [ -n "${unknown}" ]; then - echo "WARNING: The following packages are unknown to your system" - echo "(maybe missing a repo or need to 'sudo apt-get update'):" - echo -e "${unknown}" | sed -e "s/^/ /" - fi - exit 1 - fi - exit 0 -fi - -if test "$do_inst_lib32" = "1" || test "$do_inst_nacl" = "1"; then - sudo dpkg --add-architecture i386 -fi -sudo apt-get update - -# We initially run "apt-get" with the --reinstall option and parse its output. -# This way, we can find all the packages that need to be newly installed -# without accidentally promoting any packages from "auto" to "manual". -# We then re-run "apt-get" with just the list of missing packages. -echo "Finding missing packages..." -# Intentionally leaving $packages unquoted so it's more readable. -echo "Packages required: " $packages -echo -new_list_cmd="sudo apt-get install --reinstall $(echo $packages)" -if new_list="$(yes n | LANGUAGE=en LANG=C $new_list_cmd)"; then - # We probably never hit this following line. - echo "No missing packages, and the packages are up to date." -elif [ $? -eq 1 ]; then - # We expect apt-get to have exit status of 1. - # This indicates that we cancelled the install with "yes n|". - new_list=$(echo "$new_list" | - sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d') - new_list=$(echo "$new_list" | sed 's/ *$//') - if [ -z "$new_list" ] ; then - echo "No missing packages, and the packages are up to date." - else - echo "Installing missing packages: $new_list." - sudo apt-get install ${do_quietly-} ${new_list} - fi - echo -else - # An apt-get exit status of 100 indicates that a real error has occurred. - - # I am intentionally leaving out the '"'s around new_list_cmd, - # as this makes it easier to cut and paste the output - echo "The following command failed: " ${new_list_cmd} - echo - echo "It produces the following output:" - yes n | $new_list_cmd || true - echo - echo "You will have to install the above packages yourself." - echo - exit 100 -fi - -# Install the Chrome OS default fonts. This must go after running -# apt-get, since install-chromeos-fonts depends on curl. -if test "$do_inst_chromeos_fonts" != "0"; then - echo - echo "Installing Chrome OS fonts." - dir=`echo $0 | sed -r -e 's/\/[^/]+$//'` - if ! sudo $dir/linux/install-chromeos-fonts.py; then - echo "ERROR: The installation of the Chrome OS default fonts failed." - if [ `stat -f -c %T $dir` == "nfs" ]; then - echo "The reason is that your repo is installed on a remote file system." - else - echo "This is expected if your repo is installed on a remote file system." - fi - echo "It is recommended to install your repo on a local file system." - echo "You can skip the installation of the Chrome OS default founts with" - echo "the command line option: --no-chromeos-fonts." - exit 1 - fi -else - echo "Skipping installation of Chrome OS fonts." -fi - -echo "Installing locales." -CHROMIUM_LOCALES="da_DK.UTF-8 fr_FR.UTF-8 he_IL.UTF-8 zh_TW.UTF-8" -LOCALE_GEN=/etc/locale.gen -if [ -e ${LOCALE_GEN} ]; then - OLD_LOCALE_GEN="$(cat /etc/locale.gen)" - for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do - sudo sed -i "s/^# ${CHROMIUM_LOCALE}/${CHROMIUM_LOCALE}/" ${LOCALE_GEN} - done - # Regenerating locales can take a while, so only do it if we need to. - if (echo "${OLD_LOCALE_GEN}" | cmp -s ${LOCALE_GEN}); then - echo "Locales already up-to-date." - else - sudo locale-gen - fi -else - for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do - sudo locale-gen ${CHROMIUM_LOCALE} - done -fi
diff --git a/build/install-chroot.sh b/build/install-chroot.sh deleted file mode 100755 index d76d535..0000000 --- a/build/install-chroot.sh +++ /dev/null
@@ -1,888 +0,0 @@ -#!/bin/bash -e - -# Copyright (c) 2012 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. - -# This script installs Debian-derived distributions in a chroot environment. -# It can for example be used to have an accurate 32bit build and test -# environment when otherwise working on a 64bit machine. -# N. B. it is unlikely that this script will ever work on anything other than a -# Debian-derived system. - -# Older Debian based systems had both "admin" and "adm" groups, with "admin" -# apparently being used in more places. Newer distributions have standardized -# on just the "adm" group. Check /etc/group for the preferred name of the -# administrator group. -admin=$(grep '^admin:' /etc/group >&/dev/null && echo admin || echo adm) - -usage() { - echo "usage: ${0##*/} [-m mirror] [-g group,...] [-s] [-c]" - echo "-b dir additional directories that should be bind mounted," - echo ' or "NONE".' - echo " Default: if local filesystems present, ask user for help" - echo "-g group,... groups that can use the chroot unauthenticated" - echo " Default: '${admin}' and current user's group ('$(id -gn)')" - echo "-l List all installed chroot environments" - echo "-m mirror an alternate repository mirror for package downloads" - echo "-s configure default deb-srcs" - echo "-c always copy 64bit helper binaries to 32bit chroot" - echo "-h this help message" -} - -process_opts() { - local OPTNAME OPTIND OPTERR OPTARG - while getopts ":b:g:lm:sch" OPTNAME; do - case "$OPTNAME" in - b) - if [ "${OPTARG}" = "NONE" -a -z "${bind_mounts}" ]; then - bind_mounts="${OPTARG}" - else - if [ "${bind_mounts}" = "NONE" -o "${OPTARG}" = "${OPTARG#/}" -o \ - ! -d "${OPTARG}" ]; then - echo "Invalid -b option(s)" - usage - exit 1 - fi - bind_mounts="${bind_mounts} -${OPTARG} ${OPTARG} none rw,bind 0 0" - fi - ;; - g) - [ -n "${OPTARG}" ] && - chroot_groups="${chroot_groups}${chroot_groups:+,}${OPTARG}" - ;; - l) - list_all_chroots - exit - ;; - m) - if [ -n "${mirror}" ]; then - echo "You can only specify exactly one mirror location" - usage - exit 1 - fi - mirror="$OPTARG" - ;; - s) - add_srcs="y" - ;; - c) - copy_64="y" - ;; - h) - usage - exit 0 - ;; - \:) - echo "'-$OPTARG' needs an argument." - usage - exit 1 - ;; - *) - echo "invalid command-line option: $OPTARG" - usage - exit 1 - ;; - esac - done - - if [ $# -ge ${OPTIND} ]; then - eval echo "Unexpected command line argument: \${${OPTIND}}" - usage - exit 1 - fi -} - -list_all_chroots() { - for i in /var/lib/chroot/*; do - i="${i##*/}" - [ "${i}" = "*" ] && continue - [ -x "/usr/local/bin/${i%bit}" ] || continue - grep -qs "^\[${i%bit}\]\$" /etc/schroot/schroot.conf || continue - [ -r "/etc/schroot/script-${i}" -a \ - -r "/etc/schroot/mount-${i}" ] || continue - echo "${i%bit}" - done -} - -getkey() { - ( - trap 'stty echo -iuclc icanon 2>/dev/null' EXIT INT TERM QUIT HUP - stty -echo iuclc -icanon 2>/dev/null - dd count=1 bs=1 2>/dev/null - ) -} - -chr() { - printf "\\$(printf '%03o' "$1")" -} - -ord() { - printf '%d' $(printf '%c' "$1" | od -tu1 -An) -} - -is_network_drive() { - stat -c %T -f "$1/" 2>/dev/null | - egrep -qs '^nfs|cifs|smbfs' -} - -# Check that we are running as a regular user -[ "$(id -nu)" = root ] && { - echo "Run this script as a regular user and provide your \"sudo\"" \ - "password if requested" >&2 - exit 1 -} - -process_opts "$@" - -echo "This script will help you through the process of installing a" -echo "Debian or Ubuntu distribution in a chroot environment. You will" -echo "have to provide your \"sudo\" password when requested." -echo - -# Error handler -trap 'exit 1' INT TERM QUIT HUP -trap 'sudo apt-get clean; tput bel; echo; echo Failed' EXIT - -# Install any missing applications that this script relies on. If these packages -# are already installed, don't force another "apt-get install". That would -# prevent them from being auto-removed, if they ever become eligible for that. -# And as this script only needs the packages once, there is no good reason to -# introduce a hard dependency on things such as dchroot and debootstrap. -dep= -for i in dchroot debootstrap libwww-perl; do - [ -d /usr/share/doc/"$i" ] || dep="$dep $i" -done -[ -n "$dep" ] && sudo apt-get -y install $dep -sudo apt-get -y install schroot - -# Create directory for chroot -sudo mkdir -p /var/lib/chroot - -# Find chroot environments that can be installed with debootstrap -targets="$(cd /usr/share/debootstrap/scripts - ls | grep '^[a-z]*$')" - -# Ask user to pick one of the available targets -echo "The following targets are available to be installed in a chroot:" -j=1; for i in $targets; do - printf '%4d: %s\n' "$j" "$i" - j=$(($j+1)) -done -while :; do - printf "Which target would you like to install: " - read n - [ "$n" -gt 0 -a "$n" -lt "$j" ] >&/dev/null && break -done -j=1; for i in $targets; do - [ "$j" -eq "$n" ] && { distname="$i"; break; } - j=$(($j+1)) -done -echo - -# On x86-64, ask whether the user wants to install x86-32 or x86-64 -archflag= -arch= -if [ "$(uname -m)" = x86_64 ]; then - while :; do - echo "You are running a 64bit kernel. This allows you to install either a" - printf "32bit or a 64bit chroot environment. %s" \ - "Which one do you want (32, 64) " - read arch - [ "${arch}" == 32 -o "${arch}" == 64 ] && break - done - [ "${arch}" == 32 ] && archflag="--arch i386" || archflag="--arch amd64" - arch="${arch}bit" - echo -fi -target="${distname}${arch}" - -# Don't accidentally overwrite an existing installation -[ -d /var/lib/chroot/"${target}" ] && { - while :; do - echo "This chroot already exists on your machine." - if schroot -l --all-sessions 2>&1 | - sed 's/^session://' | - grep -qs "^${target%bit}-"; then - echo "And it appears to be in active use. Terminate all programs that" - echo "are currently using the chroot environment and then re-run this" - echo "script." - echo "If you still get an error message, you might have stale mounts" - echo "that you forgot to delete. You can always clean up mounts by" - echo "executing \"${target%bit} -c\"." - exit 1 - fi - echo "I can abort installation, I can overwrite the existing chroot," - echo "or I can delete the old one and then exit. What would you like to" - printf "do (a/o/d)? " - read choice - case "${choice}" in - a|A) exit 1;; - o|O) sudo rm -rf "/var/lib/chroot/${target}"; break;; - d|D) sudo rm -rf "/var/lib/chroot/${target}" \ - "/usr/local/bin/${target%bit}" \ - "/etc/schroot/mount-${target}" \ - "/etc/schroot/script-${target}" \ - "/etc/schroot/${target}" - sudo sed -ni '/^[[]'"${target%bit}"']$/,${ - :1;n;/^[[]/b2;b1;:2;p;n;b2};p' \ - "/etc/schroot/schroot.conf" - trap '' INT TERM QUIT HUP - trap '' EXIT - echo "Deleted!" - exit 0;; - esac - done - echo -} -sudo mkdir -p /var/lib/chroot/"${target}" - -# Offer to include additional standard repositories for Ubuntu-based chroots. -alt_repos= -grep -qs ubuntu.com /usr/share/debootstrap/scripts/"${distname}" && { - while :; do - echo "Would you like to add ${distname}-updates and ${distname}-security " - printf "to the chroot's sources.list (y/n)? " - read alt_repos - case "${alt_repos}" in - y|Y) - alt_repos="y" - break - ;; - n|N) - break - ;; - esac - done - echo -} - -# Check for non-standard file system mount points and ask the user whether -# they should be imported into the chroot environment -# We limit to the first 26 mount points that much some basic heuristics, -# because a) that allows us to enumerate choices with a single character, -# and b) if we find more than 26 mount points, then these are probably -# false-positives and something is very unusual about the system's -# configuration. No need to spam the user with even more information that -# is likely completely irrelevant. -if [ -z "${bind_mounts}" ]; then - mounts="$(awk '$2 != "/" && $2 !~ "^/boot" && $2 !~ "^/home" && - $2 !~ "^/media" && $2 !~ "^/run" && - ($3 ~ "ext[2-4]" || $3 == "reiserfs" || $3 == "btrfs" || - $3 == "xfs" || $3 == "jfs" || $3 == "u?msdos" || - $3 == "v?fat" || $3 == "hfs" || $3 == "ntfs" || - $3 ~ "nfs[4-9]?" || $3 == "smbfs" || $3 == "cifs") { - print $2 - }' /proc/mounts | - head -n26)" - if [ -n "${mounts}" ]; then - echo "You appear to have non-standard mount points that you" - echo "might want to import into the chroot environment:" - echo - sel= - while :; do - # Print a menu, listing all non-default mounts of local or network - # file systems. - j=1; for m in ${mounts}; do - c="$(printf $(printf '\\%03o' $((64+$j))))" - echo "$sel" | grep -qs $c && - state="mounted in chroot" || state="$(tput el)" - printf " $c) %-40s${state}\n" "$m" - j=$(($j+1)) - done - # Allow user to interactively (de-)select any of the entries - echo - printf "Select mount points that you want to be included or press %s" \ - "SPACE to continue" - c="$(getkey | tr a-z A-Z)" - [ "$c" == " " ] && { echo; echo; break; } - if [ -z "$c" ] || - [ "$c" '<' 'A' -o $(ord "$c") -gt $((64 + $(ord "$j"))) ]; then - # Invalid input, ring the console bell - tput bel - else - # Toggle the selection for the given entry - if echo "$sel" | grep -qs $c; then - sel="$(printf "$sel" | sed "s/$c//")" - else - sel="$sel$c" - fi - fi - # Reposition cursor to the top of the list of entries - tput cuu $(($j + 1)) - echo - done - fi - j=1; for m in ${mounts}; do - c="$(chr $(($j + 64)))" - if echo "$sel" | grep -qs $c; then - bind_mounts="${bind_mounts}$m $m none rw,bind 0 0 -" - fi - j=$(($j+1)) - done -fi - -# Remove stale entry from /etc/schroot/schroot.conf. Entries start -# with the target name in square brackets, followed by an arbitrary -# number of lines. The entry stops when either the end of file has -# been reached, or when the beginning of a new target is encountered. -# This means, we cannot easily match for a range of lines in -# "sed". Instead, we actually have to iterate over each line and check -# whether it is the beginning of a new entry. -sudo sed -ni '/^[[]'"${target%bit}"']$/,${:1;n;/^[[]/b2;b1;:2;p;n;b2};p' \ - /etc/schroot/schroot.conf - -# Download base system. This takes some time -if [ -z "${mirror}" ]; then - grep -qs ubuntu.com /usr/share/debootstrap/scripts/"${distname}" && - mirror="http://archive.ubuntu.com/ubuntu" || - mirror="http://ftp.us.debian.org/debian" -fi - -sudo ${http_proxy:+http_proxy="${http_proxy}"} debootstrap ${archflag} \ - "${distname}" "/var/lib/chroot/${target}" "$mirror" - -# Add new entry to /etc/schroot/schroot.conf -grep -qs ubuntu.com /usr/share/debootstrap/scripts/"${distname}" && - brand="Ubuntu" || brand="Debian" -if [ -z "${chroot_groups}" ]; then - chroot_groups="${admin},$(id -gn)" -fi - -if [ -d '/etc/schroot/default' ]; then - new_version=1 - fstab="/etc/schroot/${target}/fstab" -else - new_version=0 - fstab="/etc/schroot/mount-${target}" -fi - -if [ "$new_version" = "1" ]; then - sudo cp -ar /etc/schroot/default /etc/schroot/${target} - - sudo sh -c 'cat >>/etc/schroot/schroot.conf' <<EOF -[${target%bit}] -description=${brand} ${distname} ${arch} -type=directory -directory=/var/lib/chroot/${target} -users=root -groups=${chroot_groups} -root-groups=${chroot_groups} -personality=linux$([ "${arch}" != 64bit ] && echo 32) -profile=${target} - -EOF - [ -n "${bind_mounts}" -a "${bind_mounts}" != "NONE" ] && - printf "${bind_mounts}" | - sudo sh -c "cat >>${fstab}" -else - # Older versions of schroot wanted a "priority=" line, whereas recent - # versions deprecate "priority=" and warn if they see it. We don't have - # a good feature test, but scanning for the string "priority=" in the - # existing "schroot.conf" file is a good indication of what to do. - priority=$(grep -qs 'priority=' /etc/schroot/schroot.conf && - echo 'priority=3' || :) - sudo sh -c 'cat >>/etc/schroot/schroot.conf' <<EOF -[${target%bit}] -description=${brand} ${distname} ${arch} -type=directory -directory=/var/lib/chroot/${target} -users=root -groups=${chroot_groups} -root-groups=${chroot_groups} -personality=linux$([ "${arch}" != 64bit ] && echo 32) -script-config=script-${target} -${priority} - -EOF - - # Set up a list of mount points that is specific to this - # chroot environment. - sed '/^FSTAB=/s,"[^"]*","'"${fstab}"'",' \ - /etc/schroot/script-defaults | - sudo sh -c 'cat >/etc/schroot/script-'"${target}" - sed '\,^/home[/[:space:]],s/\([,[:space:]]\)bind[[:space:]]/\1rbind /' \ - /etc/schroot/mount-defaults | - sudo sh -c "cat > ${fstab}" -fi - -# Add the extra mount points that the user told us about -[ -n "${bind_mounts}" -a "${bind_mounts}" != "NONE" ] && - printf "${bind_mounts}" | - sudo sh -c 'cat >>'"${fstab}" - -# If this system has a "/media" mountpoint, import it into the chroot -# environment. Most modern distributions use this mount point to -# automatically mount devices such as CDROMs, USB sticks, etc... -if [ -d /media ] && - ! grep -qs '^/media' "${fstab}"; then - echo '/media /media none rw,rbind 0 0' | - sudo sh -c 'cat >>'"${fstab}" -fi - -# Share /dev/shm, /run and /run/shm. -grep -qs '^/dev/shm' "${fstab}" || - echo '/dev/shm /dev/shm none rw,bind 0 0' | - sudo sh -c 'cat >>'"${fstab}" -if [ ! -d "/var/lib/chroot/${target}/run" ] && - ! grep -qs '^/run' "${fstab}"; then - echo '/run /run none rw,bind 0 0' | - sudo sh -c 'cat >>'"${fstab}" -fi -if ! grep -qs '^/run/shm' "${fstab}"; then - { [ -d /run ] && echo '/run/shm /run/shm none rw,bind 0 0' || - echo '/dev/shm /run/shm none rw,bind 0 0'; } | - sudo sh -c 'cat >>'"${fstab}" -fi - -# Set up a special directory that changes contents depending on the target -# that is executing. -d="$(readlink -f "${HOME}/chroot" 2>/dev/null || echo "${HOME}/chroot")" -s="${d}/.${target}" -echo "${s} ${d} none rw,bind 0 0" | - sudo sh -c 'cat >>'"${target}" -mkdir -p "${s}" - -# Install a helper script to launch commands in the chroot -sudo sh -c 'cat >/usr/local/bin/'"${target%bit}" <<'EOF' -#!/bin/bash - -chroot="${0##*/}" - -wrap() { - # Word-wrap the text passed-in on stdin. Optionally, on continuation lines - # insert the same number of spaces as the number of characters in the - # parameter(s) passed to this function. - # If the "fold" program cannot be found, or if the actual width of the - # terminal cannot be determined, this function doesn't attempt to do any - # wrapping. - local f="$(type -P fold)" - [ -z "${f}" ] && { cat; return; } - local c="$(stty -a </dev/tty 2>/dev/null | - sed 's/.*columns[[:space:]]*\([0-9]*\).*/\1/;t;d')" - [ -z "${c}" ] && { cat; return; } - local i="$(echo "$*"|sed 's/./ /g')" - local j="$(printf %s "${i}"|wc -c)" - if [ "${c}" -gt "${j}" ]; then - dd bs=1 count="${j}" 2>/dev/null - "${f}" -sw "$((${c}-${j}))" | sed '2,$s/^/'"${i}"'/' - else - "${f}" -sw "${c}" - fi -} - -help() { - echo "Usage ${0##*/} [-h|--help] [-c|--clean] [-C|--clean-all] [-l|--list] [--] args" | wrap "Usage ${0##*/} " - echo " help: print this message" | wrap " " - echo " list: list all known chroot environments" | wrap " " - echo " clean: remove all old chroot sessions for \"${chroot}\"" | wrap " " - echo " clean-all: remove all old chroot sessions for all environments" | wrap " " - exit 0 -} - -clean() { - local s t rc - rc=0 - for s in $(schroot -l --all-sessions); do - if [ -n "$1" ]; then - t="${s#session:}" - [ "${t#${chroot}-}" == "${t}" ] && continue - fi - if ls -l /proc/*/{cwd,fd} 2>/dev/null | - fgrep -qs "/var/lib/schroot/mount/${t}"; then - echo "Session \"${t}\" still has active users, not cleaning up" | wrap - rc=1 - continue - fi - sudo schroot -c "${s}" -e || rc=1 - done - exit ${rc} -} - -list() { - for e in $(schroot -l); do - e="${e#chroot:}" - [ -x "/usr/local/bin/${e}" ] || continue - if schroot -l --all-sessions 2>/dev/null | - sed 's/^session://' | - grep -qs "^${e}-"; then - echo "${e} is currently active" - else - echo "${e}" - fi - done - exit 0 -} - -while [ "$#" -ne 0 ]; do - case "$1" in - --) shift; break;; - -h|--help) shift; help;; - -l|--list) shift; list;; - -c|--clean) shift; clean "${chroot}";; - -C|--clean-all) shift; clean;; - *) break;; - esac -done - -# Start a new chroot session and keep track of the session id. We inject this -# id into all processes that run inside the chroot. Unless they go out of their -# way to clear their environment, we can then later identify our child and -# grand-child processes by scanning their environment. -session="$(schroot -c "${chroot}" -b)" -export CHROOT_SESSION_ID="${session}" - -# Set GOMA_TMP_DIR for better handling of goma inside chroot. -export GOMA_TMP_DIR="/tmp/goma_tmp_$CHROOT_SESSION_ID" -mkdir -p "$GOMA_TMP_DIR" - -if [ $# -eq 0 ]; then - # Run an interactive shell session - schroot -c "${session}" -r -p -else - # Run a command inside of the chroot environment - p="$1"; shift - schroot -c "${session}" -r -p "$p" -- "$@" -fi -rc=$? - -# Compute the inode of the root directory inside of the chroot environment. -i=$(schroot -c "${session}" -r -p ls -- -id /proc/self/root/. | - awk '{ print $1 }') 2>/dev/null -other_pids= -while [ -n "$i" ]; do - # Identify processes by the inode number of their root directory. Then - # remove all processes that we know belong to other sessions. We use - # "sort | uniq -u" to do what amounts to a "set subtraction operation". - pids=$({ ls -id1 /proc/*/root/. 2>/dev/null | - sed -e 's,^[^0-9]*'$i'.*/\([1-9][0-9]*\)/.*$,\1, - t - d'; - echo "${other_pids}"; - echo "${other_pids}"; } | sort | uniq -u) >/dev/null 2>&1 - # Kill all processes that are still left running in the session. This is - # typically an assortment of daemon processes that were started - # automatically. They result in us being unable to tear down the session - # cleanly. - [ -z "${pids}" ] && break - for j in $pids; do - # Unfortunately, the way that schroot sets up sessions has the - # side-effect of being unable to tell one session apart from another. - # This can result in us attempting to kill processes in other sessions. - # We make a best-effort to avoid doing so. - k="$( ( xargs -0 -n1 </proc/$j/environ ) 2>/dev/null | - sed 's/^CHROOT_SESSION_ID=/x/;t1;d;:1;q')" - if [ -n "${k}" -a "${k#x}" != "${session}" ]; then - other_pids="${other_pids} -${j}" - continue - fi - kill -9 $pids - done -done -# End the chroot session. This should clean up all temporary files. But if we -# earlier failed to terminate all (daemon) processes inside of the session, -# deleting the session could fail. When that happens, the user has to manually -# clean up the stale files by invoking us with "--clean" after having killed -# all running processes. -schroot -c "${session}" -e -# Since no goma processes are running, we can remove goma directory. -rm -rf "$GOMA_TMP_DIR" -exit $rc -EOF -sudo chown root:root /usr/local/bin/"${target%bit}" -sudo chmod 755 /usr/local/bin/"${target%bit}" - -# Add the standard Ubuntu update repositories if requested. -[ "${alt_repos}" = "y" -a \ - -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] && -sudo sed -i '/^deb .* [^ -]\+ main$/p - s/^\(deb .* [^ -]\+\) main/\1-security main/ - p - t1 - d - :1;s/-security main/-updates main/ - t - d' "/var/lib/chroot/${target}/etc/apt/sources.list" - -# Add a few more repositories to the chroot -[ -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] && -sudo sed -i 's/ main$/ main restricted universe multiverse/' \ - "/var/lib/chroot/${target}/etc/apt/sources.list" - -# Add the Ubuntu "partner" repository, if available -if [ -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] && - HEAD "http://archive.canonical.com/ubuntu/dists/${distname}/partner" \ - >&/dev/null; then - sudo sh -c ' - echo "deb http://archive.canonical.com/ubuntu" \ - "'"${distname}"' partner" \ - >>"/var/lib/chroot/'"${target}"'/etc/apt/sources.list"' -fi - -# Add source repositories, if the user requested we do so -[ "${add_srcs}" = "y" -a \ - -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] && -sudo sed -i '/^deb[^-]/p - s/^deb\([^-]\)/deb-src\1/' \ - "/var/lib/chroot/${target}/etc/apt/sources.list" - -# Set apt proxy if host has set http_proxy -if [ -n "${http_proxy}" ]; then - sudo sh -c ' - echo "Acquire::http::proxy \"'"${http_proxy}"'\";" \ - >>"/var/lib/chroot/'"${target}"'/etc/apt/apt.conf"' -fi - -# Update packages -sudo "/usr/local/bin/${target%bit}" /bin/sh -c ' - apt-get update; apt-get -y dist-upgrade' || : - -# Install a couple of missing packages -for i in debian-keyring ubuntu-keyring locales sudo; do - [ -d "/var/lib/chroot/${target}/usr/share/doc/$i" ] || - sudo "/usr/local/bin/${target%bit}" apt-get -y install "$i" || : -done - -# Configure locales -sudo "/usr/local/bin/${target%bit}" /bin/sh -c ' - l='"${LANG:-en_US}"'; l="${l%%.*}" - [ -r /etc/locale.gen ] && - sed -i "s/^# \($l\)/\1/" /etc/locale.gen - locale-gen $LANG en_US en_US.UTF-8' || : - -# Enable multi-arch support, if available -sudo "/usr/local/bin/${target%bit}" dpkg --assert-multi-arch >&/dev/null && - [ -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] && { - sudo sed -i 's/ / [arch=amd64,i386] /' \ - "/var/lib/chroot/${target}/etc/apt/sources.list" - [ -d /var/lib/chroot/${target}/etc/dpkg/dpkg.cfg.d/ ] && - sudo "/usr/local/bin/${target%bit}" dpkg --add-architecture \ - $([ "${arch}" = "32bit" ] && echo amd64 || echo i386) >&/dev/null || - echo foreign-architecture \ - $([ "${arch}" = "32bit" ] && echo amd64 || echo i386) | - sudo sh -c \ - "cat >'/var/lib/chroot/${target}/etc/dpkg/dpkg.cfg.d/multiarch'" -} - -# Configure "sudo" package -sudo "/usr/local/bin/${target%bit}" /bin/sh -c ' - egrep -qs '"'^$(id -nu) '"' /etc/sudoers || - echo '"'$(id -nu) ALL=(ALL) ALL'"' >>/etc/sudoers' - -# Install a few more commonly used packages -sudo "/usr/local/bin/${target%bit}" apt-get -y install \ - autoconf automake1.9 dpkg-dev g++-multilib gcc-multilib gdb less libtool \ - lsof strace - -# If running a 32bit environment on a 64bit machine, install a few binaries -# as 64bit. This is only done automatically if the chroot distro is the same as -# the host, otherwise there might be incompatibilities in build settings or -# runtime dependencies. The user can force it with the '-c' flag. -host_distro=$(grep -s DISTRIB_CODENAME /etc/lsb-release | \ - cut -d "=" -f 2) -if [ "${copy_64}" = "y" -o \ - "${host_distro}" = "${distname}" -a "${arch}" = 32bit ] && \ - file /bin/bash 2>/dev/null | grep -q x86-64; then - readlinepkg=$(sudo "/usr/local/bin/${target%bit}" sh -c \ - 'apt-cache search "lib64readline.\$" | sort | tail -n 1 | cut -d " " -f 1') - sudo "/usr/local/bin/${target%bit}" apt-get -y install \ - lib64expat1 lib64ncurses5 ${readlinepkg} lib64z1 lib64stdc++6 - dep= - for i in binutils gdb; do - [ -d /usr/share/doc/"$i" ] || dep="$dep $i" - done - [ -n "$dep" ] && sudo apt-get -y install $dep - sudo mkdir -p "/var/lib/chroot/${target}/usr/local/lib/amd64" - for i in libbfd libpython; do - lib="$({ ldd /usr/bin/ld; ldd /usr/bin/gdb; } | - grep -s "$i" | awk '{ print $3 }')" - if [ -n "$lib" -a -r "$lib" ]; then - sudo cp "$lib" "/var/lib/chroot/${target}/usr/local/lib/amd64" - fi - done - for lib in libssl libcrypt; do - for path in /usr/lib /usr/lib/x86_64-linux-gnu; do - sudo cp $path/$lib* \ - "/var/lib/chroot/${target}/usr/local/lib/amd64/" >&/dev/null || : - done - done - for i in gdb ld; do - sudo cp /usr/bin/$i "/var/lib/chroot/${target}/usr/local/lib/amd64/" - sudo sh -c "cat >'/var/lib/chroot/${target}/usr/local/bin/$i'" <<EOF -#!/bin/sh -exec /lib64/ld-linux-x86-64.so.2 --library-path /usr/local/lib/amd64 \ - /usr/local/lib/amd64/$i "\$@" -EOF - sudo chmod 755 "/var/lib/chroot/${target}/usr/local/bin/$i" - done -fi - - -# If the install-build-deps.sh script can be found, offer to run it now -script="$(dirname $(readlink -f "$0"))/install-build-deps.sh" -if [ -x "${script}" ]; then - while :; do - echo - echo "If you plan on building Chrome inside of the new chroot environment," - echo "you now have to install the build dependencies. Do you want me to" - printf "start the script that does this for you (y/n)? " - read install_deps - case "${install_deps}" in - y|Y) - echo - # We prefer running the script in-place, but this might not be - # possible, if it lives on a network filesystem that denies - # access to root. - tmp_script= - if ! sudo /usr/local/bin/"${target%bit}" \ - sh -c "[ -x '${script}' ]" >&/dev/null; then - tmp_script="/tmp/${script##*/}" - cp "${script}" "${tmp_script}" - fi - # Some distributions automatically start an instance of the system- - # wide dbus daemon, cron daemon or of the logging daemon, when - # installing the Chrome build depencies. This prevents the chroot - # session from being closed. So, we always try to shut down any running - # instance of dbus and rsyslog. - sudo /usr/local/bin/"${target%bit}" sh -c "${script}; - rc=$?; - /etc/init.d/cron stop >/dev/null 2>&1 || :; - /etc/init.d/rsyslog stop >/dev/null 2>&1 || :; - /etc/init.d/dbus stop >/dev/null 2>&1 || :; - exit $rc" - rc=$? - [ -n "${tmp_script}" ] && rm -f "${tmp_script}" - [ $rc -ne 0 ] && exit $rc - break - ;; - n|N) - break - ;; - esac - done - echo -fi - -# Check whether ~/chroot is on a (slow) network file system and offer to -# relocate it. Also offer relocation, if the user appears to have multiple -# spindles (as indicated by "${bind_mount}" being non-empty). -# We only offer this option, if it doesn't look as if a chroot environment -# is currently active. Otherwise, relocation is unlikely to work and it -# can be difficult for the user to recover from the failed attempt to relocate -# the ~/chroot directory. -# We don't aim to solve this problem for every configuration, -# but try to help with the common cases. For more advanced configuration -# options, the user can always manually adjust things. -mkdir -p "${HOME}/chroot/" -if [ ! -h "${HOME}/chroot" ] && - ! egrep -qs '^[^[:space:]]*/chroot' /etc/fstab && - { [ -n "${bind_mounts}" -a "${bind_mounts}" != "NONE" ] || - is_network_drive "${HOME}/chroot"; } && - ! egrep -qs '/var/lib/[^/]*chroot/.*/chroot' /proc/mounts; then - echo "${HOME}/chroot is currently located on the same device as your" - echo "home directory." - echo "This might not be what you want. Do you want me to move it somewhere" - echo "else?" - # If the computer has multiple spindles, many users configure all or part of - # the secondary hard disk to be writable by the primary user of this machine. - # Make some reasonable effort to detect this type of configuration and - # then offer a good location for where to put the ~/chroot directory. - suggest= - for i in $(echo "${bind_mounts}"|cut -d ' ' -f 1); do - if [ -d "$i" -a -w "$i" -a \( ! -a "$i/chroot" -o -w "$i/chroot/." \) ] && - ! is_network_drive "$i"; then - suggest="$i" - else - for j in "$i/"*; do - if [ -d "$j" -a -w "$j" -a \ - \( ! -a "$j/chroot" -o -w "$j/chroot/." \) ] && - ! is_network_drive "$j"; then - suggest="$j" - else - for k in "$j/"*; do - if [ -d "$k" -a -w "$k" -a \ - \( ! -a "$k/chroot" -o -w "$k/chroot/." \) ] && - ! is_network_drive "$k"; then - suggest="$k" - break - fi - done - fi - [ -n "${suggest}" ] && break - done - fi - [ -n "${suggest}" ] && break - done - def_suggest="${HOME}" - if [ -n "${suggest}" ]; then - # For home directories that reside on network drives, make our suggestion - # the default option. For home directories that reside on a local drive, - # require that the user manually enters the new location. - if is_network_drive "${HOME}"; then - def_suggest="${suggest}" - else - echo "A good location would probably be in \"${suggest}\"" - fi - fi - while :; do - printf "Physical location [${def_suggest}]: " - read dir - [ -z "${dir}" ] && dir="${def_suggest}" - [ "${dir%%/}" == "${HOME%%/}" ] && break - if ! [ -d "${dir}" -a -w "${dir}" ] || - [ -a "${dir}/chroot" -a ! -w "${dir}/chroot/." ]; then - echo "Cannot write to ${dir}/chroot. Please try again" - else - mv "${HOME}/chroot" "${dir}/chroot" - ln -s "${dir}/chroot" "${HOME}/chroot" - for i in $(list_all_chroots); do - sudo "$i" mkdir -p "${dir}/chroot" - done - sudo sed -i "s,${HOME}/chroot,${dir}/chroot,g" /etc/schroot/mount-* - break - fi - done -fi - -# Clean up package files -sudo schroot -c "${target%bit}" -p -- apt-get clean -sudo apt-get clean - -trap '' INT TERM QUIT HUP -trap '' EXIT - -# Let the user know what we did -cat <<EOF - - -Successfully installed ${distname} ${arch} - -You can run programs inside of the chroot by invoking the -"/usr/local/bin/${target%bit}" command. - -This command can be used with arguments, in order to just run a single -program inside of the chroot environment (e.g. "${target%bit} make chrome") -or without arguments, in order to run an interactive shell session inside -of the chroot environment. - -If you need to run things as "root", you can use "sudo" (e.g. try -"sudo ${target%bit} apt-get update"). - -Your home directory is shared between the host and the chroot. But I -configured "${HOME}/chroot" to be private to the chroot environment. -You can use it for files that need to differ between environments. This -would be a good place to store binaries that you have built from your -source files. - -For Chrome, this probably means you want to make your "out" directory a -symbolic link that points somewhere inside of "${HOME}/chroot". - -You still need to run "gclient runhooks" whenever you switch from building -outside of the chroot to inside of the chroot. But you will find that you -don't have to repeatedly erase and then completely rebuild all your object -and binary files. - -EOF
diff --git a/build/internal/README.chromium b/build/internal/README.chromium deleted file mode 100644 index 4624830..0000000 --- a/build/internal/README.chromium +++ /dev/null
@@ -1,24 +0,0 @@ -Internal property sheets: - essential.vsprops - Contains the common settings used throughout the projects. Is included by either ..\debug.vsprops or ..\release.vsprops, so in general, it is not included directly. - - release_defaults.vsprops - Included by ..\release.vsprops. Its settings are overriden by release_impl$(CHROME_BUILD_TYPE).vsprops. Uses the default VS setting which is "Maximize Speed". Results in relatively fast build with reasonable optimization level but without whole program optimization to reduce build time. - - release_impl.vsprops - Included by ..\release.vsprops by default when CHROME_BUILD_TYPE is undefined. Includes release_defaults.vsprops. - - release_impl_checksenabled.vsprops - Included by ..\release.vsprops when CHROME_BUILD_TYPE=_checksenabled. Matches what release_defaults.vsprops does, but doesn't actually inherit from it as we couldn't quite get that working. The only difference is that _DEBUG is set instead of NDEBUG. Used for keeping debug checks enabled with a build that is fast enough to dogfood with. - - release_impl_official.vsprops - Included by ..\release.vsprops when CHROME_BUILD_TYPE=_official. Includes release_defaults.vsprops. Enables Whole Program Optimizations (WPO), which doubles the build time. Results in much more optimized build. Uses "Full Optimization" and "Flavor small code". - - release_impl_pgo_instrument.vsprops - Included by ..\release.vsprops when CHROME_BUILD_TYPE=_pgo_instrument. Includes release_defaults.vsprops. Enables Profile Guided Optimization (PGO) instrumentation (first pass). Uses "Full Optimization" and "Flavor small code". - - release_impl_pgo_optimize.vsprops - Included by ..\release.vsprops when CHROME_BUILD_TYPE=_pgo_optimize. Includes release_defaults.vsprops. Enables Profile Guided Optimization (PGO) optimization (second pass). Uses "Full Optimization" and "Flavor small code". - - release_impl_purify.vsprops - Included by ..\release.vsprops when CHROME_BUILD_TYPE=_purify. Includes release_defaults.vsprops. Disables optimizations. Used with Purify to test without debug tools and without optimization; i.e. NDEBUG is defined but the compiler doesn't optimize the binary.
diff --git a/build/ios/OWNERS b/build/ios/OWNERS deleted file mode 100644 index 40a68c7..0000000 --- a/build/ios/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -rohitrao@chromium.org
diff --git a/build/ios/chrome_ios.croc b/build/ios/chrome_ios.croc deleted file mode 100644 index 938a2e9..0000000 --- a/build/ios/chrome_ios.croc +++ /dev/null
@@ -1,71 +0,0 @@ -# -*- python -*- -# Crocodile config file for Chromium iOS. -# -# Note that Chromium iOS also uses the config file at src/build/common.croc. -# -# See src/tools/code_coverage/example.croc for more info on config files. - -{ - # List of rules, applied in order - 'rules' : [ - # Specify inclusions before exclusions, since rules are in order. - - # Exclude everything to negate whatever is in src/build/common.croc - { - 'regexp' : '.*', - 'include' : 0, - }, - - # Include all directories (but not the files in the directories). - # This is a workaround for how croc.py walks the directory tree. See the - # TODO in the AddFiles method of src/tools/code_coverage/croc.py - { - 'regexp' : '.*/$', - 'include' : 1, - }, - - # Include any file with an 'ios' directory in the path. - { - 'regexp' : '.*/ios/.*', - 'include' : 1, - 'add_if_missing' : 1, - }, - - # Include any file that ends with _ios. - { - 'regexp' : '.*_ios\\.(c|cc|m|mm)$', - 'include' : 1, - 'add_if_missing' : 1, - }, - - # Include any file that ends with _ios_unittest (and label it a test). - { - 'regexp' : '.*_ios_unittest\\.(c|cc|m|mm)$', - 'include' : 1, - 'add_if_missing' : 1, - 'group' : 'test', - }, - - # Don't scan for executable lines in uninstrumented header files - { - 'regexp' : '.*\\.(h|hpp)$', - 'add_if_missing' : 0, - }, - - # Don't measure coverage of perftests. - { - 'regexp' : '.*perftest\\.(c|cc|m|mm)$', - 'include' : 0, - }, - - # Languages - { - 'regexp' : '.*\\.m$', - 'language' : 'ObjC', - }, - { - 'regexp' : '.*\\.mm$', - 'language' : 'ObjC++', - }, - ], -}
diff --git a/build/ios/clean_env.py b/build/ios/clean_env.py deleted file mode 100755 index bf56b2f..0000000 --- a/build/ios/clean_env.py +++ /dev/null
@@ -1,77 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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 os -import sys - -def Main(argv): - """This is like 'env -i', but it uses a whitelist of env variables to allow - through to the command being run. It attempts to strip off Xcode-added - values from PATH. - """ - # Note: An attempt was made to do something like: env -i bash -lc '[command]' - # but that fails to set the things set by login (USER, etc.), so instead - # the only approach that seems to work is to have a whitelist. - env_key_whitelist = ( - 'HOME', - 'LOGNAME', - # 'PATH' added below (but filtered). - 'PWD', - 'SHELL', - 'TEMP', - 'TMPDIR', - 'USER' - ) - - # Need something to run. - # TODO(lliabraa): Make this output a usage string and exit (here and below). - assert(len(argv) > 0) - - add_to_path = []; - first_entry = argv[0]; - if first_entry.startswith('ADD_TO_PATH='): - argv = argv[1:]; - add_to_path = first_entry.replace('ADD_TO_PATH=', '', 1).split(':') - - # Still need something to run. - assert(len(argv) > 0) - - clean_env = {} - - # Pull over the whitelisted keys. - for key in env_key_whitelist: - val = os.environ.get(key, None) - if not val is None: - clean_env[key] = val - - # Collect the developer dir as set via Xcode, defaulting it. - dev_prefix = os.environ.get('DEVELOPER_DIR', '/Developer/') - if dev_prefix[-1:] != '/': - dev_prefix += '/' - - # Now pull in PATH, but remove anything Xcode might have added. - initial_path = os.environ.get('PATH', '') - filtered_chunks = \ - [x for x in initial_path.split(':') if not x.startswith(dev_prefix)] - if filtered_chunks: - clean_env['PATH'] = ':'.join(add_to_path + filtered_chunks) - - # Add any KEY=VALUE args before the command to the cleaned environment. - args = argv[:] - while '=' in args[0]: - (key, val) = args[0].split('=', 1) - clean_env[key] = val - args = args[1:] - - # Still need something to run. - assert(len(args) > 0) - - # Off it goes... - os.execvpe(args[0], args, clean_env) - # Should never get here, so return a distinctive, non-zero status code. - return 66 - -if __name__ == '__main__': - sys.exit(Main(sys.argv[1:]))
diff --git a/build/landmine_utils.py b/build/landmine_utils.py deleted file mode 100644 index a3f21ff..0000000 --- a/build/landmine_utils.py +++ /dev/null
@@ -1,33 +0,0 @@ -# Copyright 2013 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 sys - - -def IsWindows(): - return sys.platform in ['win32', 'cygwin'] - - -def IsLinux(): - return sys.platform.startswith(('linux', 'freebsd', 'netbsd', 'openbsd')) - - -def IsMac(): - return sys.platform == 'darwin' - - -def host_os(): - """ - Returns a string representing the host_os of the current system. - Possible values: 'win', 'mac', 'linux', 'unknown'. - """ - if IsWindows(): - return 'win' - elif IsLinux(): - return 'linux' - elif IsMac(): - return 'mac' - else: - return 'unknown'
diff --git a/build/landmines.py b/build/landmines.py deleted file mode 100755 index d0f4298..0000000 --- a/build/landmines.py +++ /dev/null
@@ -1,145 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -""" -This script runs every build as the first hook (See DEPS). If it detects that -the build should be clobbered, it will delete the contents of the build -directory. - -A landmine is tripped when a builder checks out a different revision, and the -diff between the new landmines and the old ones is non-null. At this point, the -build is clobbered. - -Before adding or changing a landmine consider the consequences of doing so. -Doing so will wipe out every output directory on every Chrome developer's -machine. This can be particularly problematic on Windows where the directory -deletion may well fail (locked files, command prompt in the directory, etc.), -and generated .sln and .vcxproj files will be deleted. - -This output directory deletion will be repated when going back and forth across -the change that added the landmine, adding to the cost. There are usually less -troublesome alternatives. -""" - -import difflib -import errno -import logging -import optparse -import os -import sys -import subprocess -import time - -import clobber -import landmine_utils - - -def get_build_dir(src_dir): - """ - Returns output directory absolute path dependent on build and targets. - Examples: - r'c:\b\build\slave\win\build\src\out' - '/mnt/data/b/build/slave/linux/build/src/out' - '/b/build/slave/ios_rel_device/build/src/out' - - Keep this function in sync with tools/build/scripts/slave/compile.py - """ - if 'CHROMIUM_OUT_DIR' in os.environ: - output_dir = os.environ.get('CHROMIUM_OUT_DIR').strip() - if not output_dir: - raise Error('CHROMIUM_OUT_DIR environment variable is set but blank!') - else: - output_dir = 'out' - return os.path.abspath(os.path.join(src_dir, output_dir)) - - -def clobber_if_necessary(new_landmines, src_dir): - """Does the work of setting, planting, and triggering landmines.""" - out_dir = get_build_dir(src_dir) - landmines_path = os.path.normpath(os.path.join(src_dir, '.landmines')) - try: - os.makedirs(out_dir) - except OSError as e: - if e.errno == errno.EEXIST: - pass - - if os.path.exists(landmines_path): - with open(landmines_path, 'r') as f: - old_landmines = f.readlines() - if old_landmines != new_landmines: - old_date = time.ctime(os.stat(landmines_path).st_ctime) - diff = difflib.unified_diff(old_landmines, new_landmines, - fromfile='old_landmines', tofile='new_landmines', - fromfiledate=old_date, tofiledate=time.ctime(), n=0) - sys.stdout.write('Clobbering due to:\n') - sys.stdout.writelines(diff) - sys.stdout.flush() - - clobber.clobber(out_dir) - - # Save current set of landmines for next time. - with open(landmines_path, 'w') as f: - f.writelines(new_landmines) - - -def process_options(): - """Returns an options object containing the configuration for this script.""" - parser = optparse.OptionParser() - parser.add_option( - '-s', '--landmine-scripts', action='append', - help='Path to the script which emits landmines to stdout. The target ' - 'is passed to this script via option -t. Note that an extra ' - 'script can be specified via an env var EXTRA_LANDMINES_SCRIPT.') - parser.add_option('-d', '--src-dir', - help='Path of the source root dir. Overrides the default location of the ' - 'source root dir when calculating the build directory.') - parser.add_option('-v', '--verbose', action='store_true', - default=('LANDMINES_VERBOSE' in os.environ), - help=('Emit some extra debugging information (default off). This option ' - 'is also enabled by the presence of a LANDMINES_VERBOSE environment ' - 'variable.')) - - options, args = parser.parse_args() - - if args: - parser.error('Unknown arguments %s' % args) - - logging.basicConfig( - level=logging.DEBUG if options.verbose else logging.ERROR) - - if options.src_dir: - if not os.path.isdir(options.src_dir): - parser.error('Cannot find source root dir at %s' % options.src_dir) - logging.debug('Overriding source root dir. Using: %s', options.src_dir) - else: - options.src_dir = \ - os.path.dirname(os.path.dirname(os.path.realpath(__file__))) - - if not options.landmine_scripts: - options.landmine_scripts = [os.path.join(options.src_dir, 'build', - 'get_landmines.py')] - - extra_script = os.environ.get('EXTRA_LANDMINES_SCRIPT') - if extra_script: - options.landmine_scripts += [extra_script] - - return options - - -def main(): - options = process_options() - - landmines = [] - for s in options.landmine_scripts: - proc = subprocess.Popen([sys.executable, s], stdout=subprocess.PIPE) - output, _ = proc.communicate() - landmines.extend([('%s\n' % l.strip()) for l in output.splitlines()]) - clobber_if_necessary(landmines, options.src_dir) - - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn deleted file mode 100644 index 54314c7..0000000 --- a/build/linux/BUILD.gn +++ /dev/null
@@ -1,31 +0,0 @@ -# Copyright (c) 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/config/features.gni") -import("//build/config/freetype/freetype.gni") -import("//build/config/linux/pkg_config.gni") - -if (use_gio) { - pkg_config("gio_config") { - packages = [ "gio-2.0" ] - - defines = [ "USE_GIO" ] - } -} - -# Looking for libspeechd? Use //third_party/speech-dispatcher - -if (use_system_freetype) { - assert(!is_chromecast) - - # Only provided for distributions which prefer to keep linking to FreeType on - # the system, use with caution,for details see build/config/freetype/BUILD.gn. - pkg_config("freetype_from_pkgconfig") { - visibility = [ - "//third_party:freetype_harfbuzz", - "//third_party/harfbuzz-ng:harfbuzz_source", - ] - packages = [ "freetype2" ] - } -}
diff --git a/build/linux/OWNERS b/build/linux/OWNERS deleted file mode 100644 index 8e1cb55..0000000 --- a/build/linux/OWNERS +++ /dev/null
@@ -1,3 +0,0 @@ -mmoss@chromium.org -thestig@chromium.org -thomasanderson@chromium.org
diff --git a/build/linux/chrome.map b/build/linux/chrome.map deleted file mode 100644 index 914f37b..0000000 --- a/build/linux/chrome.map +++ /dev/null
@@ -1,87 +0,0 @@ -{ -global: - __bss_start; - __data_start; - data_start; - _edata; - _end; - _IO_stdin_used; - - # Initialization and finalization functions for static global - # variables. - _fini; - _init; - __libc_csu_fini; - __libc_csu_init; - - # Chrome's main function. Exported for historical purposes. - ChromeMain; - - # Program entry point. - _start; - - # Memory allocation symbols. We want chrome and any libraries to - # share the same heap, so it is correct to export these symbols. - calloc; - cfree; - free; - __free_hook; - __libc_calloc; - __libc_cfree; - __libc_free; - __libc_malloc; - __libc_memalign; - __libc_pvalloc; - __libc_realloc; - __libc_valloc; - mallinfo; - malloc; - __malloc_hook; - malloc_size; - malloc_stats; - malloc_usable_size; - mallopt; - memalign; - __memalign_hook; - __posix_memalign; - posix_memalign; - pvalloc; - realloc; - __realloc_hook; - valloc; - - # Various flavors of operator new and operator delete. - _ZdaPv; - _ZdaPvm; - _ZdaPvmSt11align_val_t; - _ZdaPvRKSt9nothrow_t; - _ZdaPvSt11align_val_t; - _ZdaPvSt11align_val_tRKSt9nothrow_t; - _ZdlPv; - _ZdlPvm; - _ZdlPvmSt11align_val_t; - _ZdlPvRKSt9nothrow_t; - _ZdlPvSt11align_val_t; - _ZdlPvSt11align_val_tRKSt9nothrow_t; - _Znam; - _ZnamRKSt9nothrow_t; - _ZnamSt11align_val_t; - _ZnamSt11align_val_tRKSt9nothrow_t; - _Znwm; - _ZnwmRKSt9nothrow_t; - _ZnwmSt11align_val_t; - _ZnwmSt11align_val_tRKSt9nothrow_t; - - # Various flavors of localtime(). These are exported by the chrome - # sandbox to intercept calls to localtime(), which would otherwise - # fail in untrusted processes that don't have permission to read - # /etc/localtime. These overrides forward the request to the browser - # process, which uses dlsym(localtime) to make the real calls. - localtime; - localtime64; - localtime64_r; - localtime_r; - -local: - *; -};
diff --git a/build/linux/chrome_linux.croc b/build/linux/chrome_linux.croc deleted file mode 100644 index f400306..0000000 --- a/build/linux/chrome_linux.croc +++ /dev/null
@@ -1,29 +0,0 @@ -# -*- python -*- -# Crocodile config file for Chromium linux - -# TODO(jhawkins): We'll need to add a chromeos.croc once we get a coverage bot -# for that platform. - -{ - # List of rules, applied in order - 'rules' : [ - # Specify inclusions before exclusions, since rules are in order. - - # Don't include non-Linux platform dirs - { - 'regexp' : '.*/(chromeos|views)/', - 'include' : 0, - }, - # Don't include chromeos, windows, or mac specific files - { - 'regexp' : '.*(_|/)(chromeos|mac|win|views)(\\.|_)', - 'include' : 0, - }, - - # Groups - { - 'regexp' : '.*_test_linux\\.', - 'group' : 'test', - }, - ], -}
diff --git a/build/linux/dump_app_syms.py b/build/linux/dump_app_syms.py deleted file mode 100644 index 12e693e..0000000 --- a/build/linux/dump_app_syms.py +++ /dev/null
@@ -1,29 +0,0 @@ -# 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. - -# Helper script to run dump_syms on Chrome Linux executables and strip -# them if needed. - -import os -import subprocess -import sys - -if len(sys.argv) != 5: - print "dump_app_syms.py <dump_syms_exe> <strip_binary>" - print " <binary_with_symbols> <symbols_output>" - sys.exit(1) - -dumpsyms = sys.argv[1] -strip_binary = sys.argv[2] -infile = sys.argv[3] -outfile = sys.argv[4] - -# Dump only when the output file is out-of-date. -if not os.path.isfile(outfile) or \ - os.stat(outfile).st_mtime < os.stat(infile).st_mtime: - with open(outfile, 'w') as outfileobj: - subprocess.check_call([dumpsyms, infile], stdout=outfileobj) - -if strip_binary != '0': - subprocess.check_call(['strip', infile])
diff --git a/build/linux/extract_symbols.gni b/build/linux/extract_symbols.gni deleted file mode 100644 index 50b1aa3..0000000 --- a/build/linux/extract_symbols.gni +++ /dev/null
@@ -1,44 +0,0 @@ -# Copyright 2018 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") - -# Extracts symbols from a binary into a symbol file using dump_app_syms.py. -# -# Args: -# binary: Path to the binary containing symbols to extract, e.g.: -# "$root_out_dir/chrome" -# symbol_file: Desired output file for symbols, e.g.: -# "$root_out_dir/chrome.breakpad.$current_cpu" -template("extract_symbols") { - forward_variables_from(invoker, - [ - "deps", - "testonly", - ]) - symbol_target_name = "${target_name}_symbols" - - action("${symbol_target_name}") { - dump_syms_label = "//third_party/breakpad:dump_syms($host_toolchain)" - dump_syms_binary = - get_label_info(dump_syms_label, "root_out_dir") + "/" + "dump_syms" - - script = "//build/linux/dump_app_syms.py" - inputs = [ - invoker.binary, - dump_syms_binary, - ] - outputs = [ - invoker.symbol_file, - ] - args = [ - "./" + rebase_path(dump_syms_binary, root_build_dir), - "0", # strip_binary = false - rebase_path(invoker.binary, root_build_dir), - rebase_path(invoker.symbol_file, root_build_dir), - ] - - deps += [ dump_syms_label ] - } -}
diff --git a/build/linux/install-chromeos-fonts.py b/build/linux/install-chromeos-fonts.py deleted file mode 100755 index 54d0ede..0000000 --- a/build/linux/install-chromeos-fonts.py +++ /dev/null
@@ -1,118 +0,0 @@ -#!/usr/bin/env python -# Copyright 2013 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. - -# Script to install the Chrome OS fonts on Linux. -# This script can be run manually (as root), but is also run as part -# install-build-deps.sh. - -import os -import shutil -import subprocess -import sys - -URL_TEMPLATE = ('https://commondatastorage.googleapis.com/chromeos-localmirror/' - 'distfiles/%(name)s-%(version)s.tar.bz2') - -# Taken from the media-fonts/<name> ebuilds in chromiumos-overlay. -# noto-cjk used to be here, but is removed because fc-cache takes too long -# regenerating the fontconfig cache (See crbug.com/697954.) -# TODO(jshin): Add it back when the above issue can be avoided. -SOURCES = [ - { - 'name': 'notofonts', - 'version': '20161129' - }, { - 'name': 'robotofonts', - 'version': '2.132' - } -] - -URLS = sorted([URL_TEMPLATE % d for d in SOURCES]) -FONTS_DIR = '/usr/local/share/fonts' - -def main(args): - if not sys.platform.startswith('linux'): - print "Error: %s must be run on Linux." % __file__ - return 1 - - if os.getuid() != 0: - print "Error: %s must be run as root." % __file__ - return 1 - - if not os.path.isdir(FONTS_DIR): - print "Error: Destination directory does not exist: %s" % FONTS_DIR - return 1 - - dest_dir = os.path.join(FONTS_DIR, 'chromeos') - - stamp = os.path.join(dest_dir, ".stamp02") - if os.path.exists(stamp): - with open(stamp) as s: - if s.read() == '\n'.join(URLS): - print "Chrome OS fonts already up to date in %s." % dest_dir - return 0 - - if os.path.isdir(dest_dir): - shutil.rmtree(dest_dir) - os.mkdir(dest_dir) - os.chmod(dest_dir, 0755) - - print "Installing Chrome OS fonts to %s." % dest_dir - for url in URLS: - tarball = os.path.join(dest_dir, os.path.basename(url)) - subprocess.check_call(['curl', '-L', url, '-o', tarball]) - subprocess.check_call(['tar', '--no-same-owner', '--no-same-permissions', - '-xf', tarball, '-C', dest_dir]) - os.remove(tarball) - - readme = os.path.join(dest_dir, "README") - with open(readme, 'w') as s: - s.write("This directory and its contents are auto-generated.\n") - s.write("It may be deleted and recreated. Do not modify.\n") - s.write("Script: %s\n" % __file__) - - with open(stamp, 'w') as s: - s.write('\n'.join(URLS)) - - for base, dirs, files in os.walk(dest_dir): - for dir in dirs: - os.chmod(os.path.join(base, dir), 0755) - for file in files: - os.chmod(os.path.join(base, file), 0644) - - print """\ - -Chrome OS font rendering settings are specified using Fontconfig. If your -system's configuration doesn't match Chrome OS's (which vary for different -devices), fonts may be rendered with different subpixel rendering, subpixel -positioning, or hinting settings. This may affect font metrics. - -Chrome OS's settings are stored in the media-libs/fontconfig package, which is -at src/third_party/chromiumos-overlay/media-libs/fontconfig in a Chrome OS -checkout. You can configure your system to match Chrome OS's defaults by -creating or editing a ~/.fonts.conf file: - -<?xml version="1.0"?> -<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> -<fontconfig> - <match target="font"> - <edit name="antialias" mode="assign"><bool>true</bool></edit> - <edit name="autohint" mode="assign"><bool>true</bool></edit> - <edit name="hinting" mode="assign"><bool>true</bool></edit> - <edit name="hintstyle" mode="assign"><const>hintslight</const></edit> - <edit name="rgba" mode="assign"><const>rgb</const></edit> - </match> -</fontconfig> - -To load additional per-font configs (and assuming you have Chrome OS checked -out), add the following immediately before the "</fontconfig>" line: - - <include ignore_missing="yes">/path/to/src/third_party/chromiumos-overlay/media-libs/fontconfig/files/local.conf</include> -""" - - return 0 - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:]))
diff --git a/build/linux/libbrlapi/BUILD.gn b/build/linux/libbrlapi/BUILD.gn deleted file mode 100644 index 4ee3950..0000000 --- a/build/linux/libbrlapi/BUILD.gn +++ /dev/null
@@ -1,26 +0,0 @@ -# Copyright 2016 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("//tools/generate_library_loader/generate_library_loader.gni") - -generate_library_loader("libbrlapi") { - name = "LibBrlapiLoader" - output_h = "libbrlapi.h" - output_cc = "libbrlapi_loader.cc" - header = "<brlapi.h>" - - functions = [ - "brlapi_getHandleSize", - "brlapi_error_location", - "brlapi_strerror", - "brlapi__acceptKeys", - "brlapi__openConnection", - "brlapi__closeConnection", - "brlapi__getDisplaySize", - "brlapi__enterTtyModeWithPath", - "brlapi__leaveTtyMode", - "brlapi__writeDots", - "brlapi__readKey", - ] -}
diff --git a/build/linux/libpci/BUILD.gn b/build/linux/libpci/BUILD.gn deleted file mode 100644 index 2d1e267..0000000 --- a/build/linux/libpci/BUILD.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2016 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("//tools/generate_library_loader/generate_library_loader.gni") - -# This generates a target named "libpci". -generate_library_loader("libpci") { - name = "LibPciLoader" - output_h = "libpci.h" - output_cc = "libpci_loader.cc" - header = "<pci/pci.h>" - - functions = [ - "pci_alloc", - "pci_init", - "pci_cleanup", - "pci_scan_bus", - "pci_fill_info", - "pci_lookup_name", - ] -}
diff --git a/build/linux/libudev/BUILD.gn b/build/linux/libudev/BUILD.gn deleted file mode 100644 index 9486a03..0000000 --- a/build/linux/libudev/BUILD.gn +++ /dev/null
@@ -1,65 +0,0 @@ -# Copyright 2016 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("//tools/generate_library_loader/generate_library_loader.gni") - -libudev_functions = [ - "udev_device_get_action", - "udev_device_get_devnode", - "udev_device_get_parent", - "udev_device_get_parent_with_subsystem_devtype", - "udev_device_get_property_value", - "udev_device_get_subsystem", - "udev_device_get_sysattr_value", - "udev_device_get_sysname", - "udev_device_get_syspath", - "udev_device_new_from_devnum", - "udev_device_new_from_subsystem_sysname", - "udev_device_new_from_syspath", - "udev_device_unref", - "udev_enumerate_add_match_subsystem", - "udev_enumerate_get_list_entry", - "udev_enumerate_new", - "udev_enumerate_scan_devices", - "udev_enumerate_unref", - "udev_list_entry_get_next", - "udev_list_entry_get_name", - "udev_monitor_enable_receiving", - "udev_monitor_filter_add_match_subsystem_devtype", - "udev_monitor_get_fd", - "udev_monitor_new_from_netlink", - "udev_monitor_receive_device", - "udev_monitor_unref", - "udev_new", - "udev_set_log_fn", - "udev_set_log_priority", - "udev_unref", -] - -# This generates a target named "udev0_loader". -generate_library_loader("udev0_loader") { - name = "LibUdev0Loader" - output_h = "libudev0.h" - output_cc = "libudev0_loader.cc" - header = "\"third_party/libudev/libudev0.h\"" - - functions = libudev_functions -} - -# This generates a target named "udev1_loader". -generate_library_loader("udev1_loader") { - name = "LibUdev1Loader" - output_h = "libudev1.h" - output_cc = "libudev1_loader.cc" - header = "\"third_party/libudev/libudev1.h\"" - - functions = libudev_functions -} - -group("libudev") { - public_deps = [ - ":udev0_loader", - ":udev1_loader", - ] -}
diff --git a/build/linux/pkg-config-wrapper b/build/linux/pkg-config-wrapper deleted file mode 100755 index c4935d7..0000000 --- a/build/linux/pkg-config-wrapper +++ /dev/null
@@ -1,46 +0,0 @@ -#!/bin/bash -# Copyright (c) 2012 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. - -# This program wraps around pkg-config to generate the correct include and -# library paths when cross-compiling using a sysroot. -# The assumption is that the sysroot contains the .pc files in usr/lib/pkgconfig -# and usr/share/pkgconfig (relative to the sysroot) and that they output paths -# relative to some parent path of the sysroot. -# This assumption is valid for a range of sysroots, in particular: a -# LSB-compliant root filesystem mounted at the sysroot, and a board build -# directory of a Chromium OS chroot. - -set -o nounset -set -o errexit - -root="$1" -shift -target_arch="$1" -shift -libpath="$1" -shift - -if [ -z "$root" -o -z "$target_arch" ] -then - echo "usage: $0 /path/to/sysroot target_arch libdir [pkg-config-arguments] package" >&2 - exit 1 -fi - -rewrite=`dirname $0`/rewrite_dirs.py -package=${!#} - -libdir=$root/usr/$libpath/pkgconfig:$root/usr/share/pkgconfig - -set -e -# Some sysroots, like the Chromium OS ones, may generate paths that are not -# relative to the sysroot. For example, -# /path/to/chroot/build/x86-generic/usr/lib/pkgconfig/pkg.pc may have all paths -# relative to /path/to/chroot (i.e. prefix=/build/x86-generic/usr) instead of -# relative to /path/to/chroot/build/x86-generic (i.e prefix=/usr). -# To support this correctly, it's necessary to extract the prefix to strip from -# pkg-config's |prefix| variable. -prefix=`PKG_CONFIG_LIBDIR=$libdir pkg-config --variable=prefix "$package" | sed -e 's|/usr$||'` -result=`PKG_CONFIG_LIBDIR=$libdir pkg-config "$@"` -echo "$result"| $rewrite --sysroot "$root" --strip-prefix "$prefix"
diff --git a/build/linux/rewrite_dirs.py b/build/linux/rewrite_dirs.py deleted file mode 100755 index 30f22f0..0000000 --- a/build/linux/rewrite_dirs.py +++ /dev/null
@@ -1,71 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2011 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. - -"""Rewrites paths in -I, -L and other option to be relative to a sysroot.""" - -import sys -import os -import optparse - -REWRITE_PREFIX = ['-I', - '-idirafter', - '-imacros', - '-imultilib', - '-include', - '-iprefix', - '-iquote', - '-isystem', - '-L'] - -def RewritePath(path, opts): - """Rewrites a path by stripping the prefix and prepending the sysroot.""" - sysroot = opts.sysroot - prefix = opts.strip_prefix - if os.path.isabs(path) and not path.startswith(sysroot): - if path.startswith(prefix): - path = path[len(prefix):] - path = path.lstrip('/') - return os.path.join(sysroot, path) - else: - return path - - -def RewriteLine(line, opts): - """Rewrites all the paths in recognized options.""" - args = line.split() - count = len(args) - i = 0 - while i < count: - for prefix in REWRITE_PREFIX: - # The option can be either in the form "-I /path/to/dir" or - # "-I/path/to/dir" so handle both. - if args[i] == prefix: - i += 1 - try: - args[i] = RewritePath(args[i], opts) - except IndexError: - sys.stderr.write('Missing argument following %s\n' % prefix) - break - elif args[i].startswith(prefix): - args[i] = prefix + RewritePath(args[i][len(prefix):], opts) - i += 1 - - return ' '.join(args) - - -def main(argv): - parser = optparse.OptionParser() - parser.add_option('-s', '--sysroot', default='/', help='sysroot to prepend') - parser.add_option('-p', '--strip-prefix', default='', help='prefix to strip') - opts, args = parser.parse_args(argv[1:]) - - for line in sys.stdin.readlines(): - line = RewriteLine(line.strip(), opts) - print line - return 0 - - -if __name__ == '__main__': - sys.exit(main(sys.argv))
diff --git a/build/linux/sysroot_ld_path.sh b/build/linux/sysroot_ld_path.sh deleted file mode 100755 index 623d47b..0000000 --- a/build/linux/sysroot_ld_path.sh +++ /dev/null
@@ -1,99 +0,0 @@ -#!/bin/sh -# Copyright (c) 2013 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. - -# Reads etc/ld.so.conf and/or etc/ld.so.conf.d/*.conf and returns the -# appropriate linker flags. -# -# sysroot_ld_path.sh /abspath/to/sysroot -# - -log_error_and_exit() { - echo $0: $@ - exit 1 -} - -process_entry() { - if [ -z "$1" ] || [ -z "$2" ]; then - log_error_and_exit "bad arguments to process_entry()" - fi - local root="$1" - local localpath="$2" - - echo $localpath | grep -qs '^/' - if [ $? -ne 0 ]; then - log_error_and_exit $localpath does not start with / - fi - local entry="$root$localpath" - echo $entry -} - -process_ld_so_conf() { - if [ -z "$1" ] || [ -z "$2" ]; then - log_error_and_exit "bad arguments to process_ld_so_conf()" - fi - local root="$1" - local ld_so_conf="$2" - - # ld.so.conf may include relative include paths. pushd is a bashism. - local saved_pwd=$(pwd) - cd $(dirname "$ld_so_conf") - - cat "$ld_so_conf" | \ - while read ENTRY; do - echo "$ENTRY" | grep -qs ^include - if [ $? -eq 0 ]; then - local included_files=$(echo "$ENTRY" | sed 's/^include //') - echo "$included_files" | grep -qs ^/ - if [ $? -eq 0 ]; then - if ls $root$included_files >/dev/null 2>&1 ; then - for inc_file in $root$included_files; do - process_ld_so_conf "$root" "$inc_file" - done - fi - else - if ls $(pwd)/$included_files >/dev/null 2>&1 ; then - for inc_file in $(pwd)/$included_files; do - process_ld_so_conf "$root" "$inc_file" - done - fi - fi - continue - fi - - echo "$ENTRY" | grep -qs ^/ - if [ $? -eq 0 ]; then - process_entry "$root" "$ENTRY" - fi - done - - # popd is a bashism - cd "$saved_pwd" -} - -# Main - -if [ $# -ne 1 ]; then - echo Usage $0 /abspath/to/sysroot - exit 1 -fi - -echo $1 | grep -qs ' ' -if [ $? -eq 0 ]; then - log_error_and_exit $1 contains whitespace. -fi - -LD_SO_CONF="$1/etc/ld.so.conf" -LD_SO_CONF_D="$1/etc/ld.so.conf.d" - -if [ -e "$LD_SO_CONF" ]; then - process_ld_so_conf "$1" "$LD_SO_CONF" | xargs echo -elif [ -e "$LD_SO_CONF_D" ]; then - find "$LD_SO_CONF_D" -maxdepth 1 -name '*.conf' -print -quit > /dev/null - if [ $? -eq 0 ]; then - for entry in $LD_SO_CONF_D/*.conf; do - process_ld_so_conf "$1" "$entry" - done | xargs echo - fi -fi
diff --git a/build/linux/sysroot_scripts/build_and_upload.py b/build/linux/sysroot_scripts/build_and_upload.py deleted file mode 100755 index 78eaa63..0000000 --- a/build/linux/sysroot_scripts/build_and_upload.py +++ /dev/null
@@ -1,97 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 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. - -"""Automates running BuildPackageLists, BuildSysroot, and -UploadSysroot for each supported arch of each sysroot creator. -""" - -import glob -import hashlib -import json -import multiprocessing -import os -import re -import string -import subprocess -import sys - -def run_script(args): - fnull = open(os.devnull, 'w') - subprocess.check_call(args, stdout=fnull, stderr=fnull) - -def sha1sumfile(filename): - sha1 = hashlib.sha1() - with open(filename, 'rb') as f: - while True: - data = f.read(65536) - if not data: - break - sha1.update(data) - return sha1.hexdigest() - -def get_proc_output(args): - return subprocess.check_output(args).strip() - -def build_and_upload(script_path, distro, release, arch, lock): - # TODO(thomasanderson): Find out which revision 'git-cl upload' uses to - # calculate the diff against and use that instead of HEAD. - script_dir = os.path.dirname(os.path.realpath(__file__)) - revision = get_proc_output(['git', '-C', script_dir, 'rev-parse', 'HEAD']) - - run_script([script_path, 'UpdatePackageLists%s' % arch]) - run_script([script_path, 'BuildSysroot%s' % arch]) - run_script([script_path, 'UploadSysroot%s' % arch, revision]) - - tarball = '%s_%s_%s_sysroot.tar.xz' % (distro, release, arch.lower()) - tarxz_path = os.path.join(script_dir, "..", "..", "..", "out", - "sysroot-build", release, tarball) - sha1sum = sha1sumfile(tarxz_path) - sysroot_dir = '%s_%s_%s-sysroot' % (distro, release, arch.lower()) - - sysroot_metadata = { - 'Revision': revision, - 'Tarball': tarball, - 'Sha1Sum': sha1sum, - 'SysrootDir': sysroot_dir - } - with lock: - with open(os.path.join(script_dir, 'sysroots.json'), 'rw+') as f: - sysroots = json.load(f) - sysroots["%s_%s" % (release, arch.lower())] = sysroot_metadata - f.seek(0) - f.truncate() - f.write(json.dumps(sysroots, sort_keys=True, indent=4, - separators=(',', ': '))) - f.write('\n') - -def main(): - script_dir = os.path.dirname(os.path.realpath(__file__)) - procs = [] - lock = multiprocessing.Lock() - for filename in glob.glob(os.path.join(script_dir, 'sysroot-creator-*.sh')): - script_path = os.path.join(script_dir, filename) - distro = get_proc_output([script_path, 'PrintDistro']) - release = get_proc_output([script_path, 'PrintRelease']) - architectures = get_proc_output([script_path, 'PrintArchitectures']) - for arch in architectures.split('\n'): - proc = multiprocessing.Process(target=build_and_upload, - args=(script_path, distro, release, arch, - lock)) - procs.append(("%s %s (%s)" % (distro, release, arch), proc)) - proc.start() - for _, proc in procs: - proc.join() - - print "SYSROOT CREATION SUMMARY" - failures = 0 - for name, proc in procs: - if proc.exitcode: - failures += 1 - status = "FAILURE" if proc.exitcode else "SUCCESS" - print "%s sysroot creation\t%s" % (name, status) - return failures - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/linux/sysroot_scripts/debian-archive-sid-stable.gpg b/build/linux/sysroot_scripts/debian-archive-sid-stable.gpg deleted file mode 100644 index a282485..0000000 --- a/build/linux/sysroot_scripts/debian-archive-sid-stable.gpg +++ /dev/null Binary files differ
diff --git a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols.py b/build/linux/sysroot_scripts/find_incompatible_glibc_symbols.py deleted file mode 100755 index 426e17f..0000000 --- a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols.py +++ /dev/null
@@ -1,58 +0,0 @@ -#!/usr/bin/env python -# Copyright 2018 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. - -"""Find incompatible symbols in glibc and output a list of replacements. -""" - -import re -import sys - -# This constant comes from https://crbug.com/580892 -MAX_ALLOWED_GLIBC_VERSION = [2, 17] - - -def get_replacements(nm_file, max_allowed_glibc_version): - symbol_format = re.compile('\S+ \S+ ([^@]+)@@?(\S+)\n') - version_format = re.compile('GLIBC_[0-9\.]+') - symbols = {} - for line in nm_file: - m = re.match(symbol_format, line) - symbol = m.group(1) - version = m.group(2) - if not re.match(version_format, version): - continue - if symbol in symbols: - symbols[symbol].add(version) - else: - symbols[symbol] = set([version]) - - replacements = [] - for symbol, versions in symbols.iteritems(): - if len(versions) <= 1: - continue - versions_parsed = [[ - int(part) for part in version.lstrip('GLIBC_').split('.') - ] for version in versions] - if (max(versions_parsed) > max_allowed_glibc_version and - min(versions_parsed) <= max_allowed_glibc_version): - # Use the newest allowed version of the symbol. - replacement_version_parsed = max([ - version for version in versions_parsed - if version <= max_allowed_glibc_version - ]) - replacement_version = 'GLIBC_' + '.'.join( - [str(part) for part in replacement_version_parsed]) - replacements.append('__asm__(".symver %s, %s@%s");' % - (symbol, symbol, replacement_version)) - return sorted(replacements) - - -if __name__ == '__main__': - replacements = get_replacements(sys.stdin, MAX_ALLOWED_GLIBC_VERSION) - if replacements: - print('// Chromium-specific hack.') - print('// See explanation in sysroot-creator.sh.') - for replacement in replacements: - print replacement
diff --git a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols_unittest.py b/build/linux/sysroot_scripts/find_incompatible_glibc_symbols_unittest.py deleted file mode 100755 index 5af3eb2..0000000 --- a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols_unittest.py +++ /dev/null
@@ -1,36 +0,0 @@ -#!/usr/bin/env python -# Copyright 2018 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 cStringIO -import find_incompatible_glibc_symbols - -NM_DATA = """\ -0000000000000001 W expf@GLIBC_2.2.5 -0000000000000002 W expf@@GLIBC_2.27 -0000000000000003 W foo@@GLIBC_2.2.5 -0000000000000004 W bar@GLIBC_2.2.5 -0000000000000005 W baz@GLIBC_2.2.5 -0000000000000006 T foo2@GLIBC_2.2 -0000000000000007 T foo2@GLIBC_2.3 -0000000000000008 T foo2@GLIBC_2.30 -0000000000000009 T foo2@@GLIBC_2.31 -000000000000000a T bar2@GLIBC_2.30 -000000000000000b T bar2@@GLIBC_2.31 -000000000000000c T baz2@GLIBC_2.2 -000000000000000d T baz2@@GLIBC_2.3 -""" - -EXPECTED_REPLACEMENTS = [ - '__asm__(".symver expf, expf@GLIBC_2.2.5");', - '__asm__(".symver foo2, foo2@GLIBC_2.3");', -] - -nm_file = cStringIO.StringIO() -nm_file.write(NM_DATA) -nm_file.seek(0) - -assert ( - EXPECTED_REPLACEMENTS == find_incompatible_glibc_symbols.get_replacements( - nm_file, [2, 17]))
diff --git a/build/linux/sysroot_scripts/install-sysroot.py b/build/linux/sysroot_scripts/install-sysroot.py deleted file mode 100755 index 58f0995..0000000 --- a/build/linux/sysroot_scripts/install-sysroot.py +++ /dev/null
@@ -1,160 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2013 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. - -"""Install Debian sysroots for building chromium. -""" - -# The sysroot is needed to ensure that binaries that get built will run on -# the oldest stable version of Debian that we currently support. -# This script can be run manually but is more often run as part of gclient -# hooks. When run from hooks this script is a no-op on non-linux platforms. - -# The sysroot image could be constructed from scratch based on the current state -# of the Debian archive but for consistency we use a pre-built root image (we -# don't want upstream changes to Debian to effect the chromium build until we -# choose to pull them in). The images will normally need to be rebuilt every -# time chrome's build dependencies are changed but should also be updated -# periodically to include upstream security fixes from Debian. - -import hashlib -import json -import platform -import optparse -import os -import re -import shutil -import subprocess -import sys -import urllib2 - -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) - -URL_PREFIX = 'https://commondatastorage.googleapis.com' -URL_PATH = 'chrome-linux-sysroot/toolchain' - -VALID_ARCHS = ('arm', 'arm64', 'i386', 'amd64', 'mips', 'mips64el') - -ARCH_TRANSLATIONS = { - 'x64': 'amd64', - 'x86': 'i386', - 'mipsel': 'mips', - 'mips64': 'mips64el', -} - -DEFAULT_TARGET_PLATFORM = 'sid' - -class Error(Exception): - pass - - -def GetSha1(filename): - sha1 = hashlib.sha1() - with open(filename, 'rb') as f: - while True: - # Read in 1mb chunks, so it doesn't all have to be loaded into memory. - chunk = f.read(1024*1024) - if not chunk: - break - sha1.update(chunk) - return sha1.hexdigest() - - -def main(args): - parser = optparse.OptionParser('usage: %prog [OPTIONS]', description=__doc__) - parser.add_option('--arch', - help='Sysroot architecture: %s' % ', '.join(VALID_ARCHS)) - parser.add_option('--all', action='store_true', - help='Install all sysroot images (useful when updating the' - ' images)') - parser.add_option('--print-hash', - help='Print the hash of the sysroot for the given arch.') - options, _ = parser.parse_args(args) - if not sys.platform.startswith('linux'): - return 0 - - if options.print_hash: - arch = options.print_hash - print GetSysrootDict(DEFAULT_TARGET_PLATFORM, - ARCH_TRANSLATIONS.get(arch, arch))['Sha1Sum'] - return 0 - if options.arch: - InstallSysroot(DEFAULT_TARGET_PLATFORM, - ARCH_TRANSLATIONS.get(options.arch, options.arch)) - elif options.all: - for arch in VALID_ARCHS: - InstallSysroot(DEFAULT_TARGET_PLATFORM, arch) - else: - print 'You much specify one of the options.' - return 1 - - return 0 - - -def GetSysrootDict(target_platform, target_arch): - if target_arch not in VALID_ARCHS: - raise Error('Unknown architecture: %s' % target_arch) - - sysroots_file = os.path.join(SCRIPT_DIR, 'sysroots.json') - sysroots = json.load(open(sysroots_file)) - sysroot_key = '%s_%s' % (target_platform, target_arch) - if sysroot_key not in sysroots: - raise Error('No sysroot for: %s %s' % (target_platform, target_arch)) - return sysroots[sysroot_key] - - -def InstallSysroot(target_platform, target_arch): - sysroot_dict = GetSysrootDict(target_platform, target_arch) - revision = sysroot_dict['Revision'] - tarball_filename = sysroot_dict['Tarball'] - tarball_sha1sum = sysroot_dict['Sha1Sum'] - # TODO(thestig) Consider putting this elsewhere to avoid having to recreate - # it on every build. - linux_dir = os.path.dirname(SCRIPT_DIR) - sysroot = os.path.join(linux_dir, sysroot_dict['SysrootDir']) - - url = '%s/%s/%s/%s' % (URL_PREFIX, URL_PATH, revision, tarball_filename) - - stamp = os.path.join(sysroot, '.stamp') - if os.path.exists(stamp): - with open(stamp) as s: - if s.read() == url: - return - - print 'Installing Debian %s %s root image: %s' % \ - (target_platform, target_arch, sysroot) - if os.path.isdir(sysroot): - shutil.rmtree(sysroot) - os.mkdir(sysroot) - tarball = os.path.join(sysroot, tarball_filename) - print 'Downloading %s' % url - sys.stdout.flush() - sys.stderr.flush() - for _ in range(3): - try: - response = urllib2.urlopen(url) - with open(tarball, "wb") as f: - f.write(response.read()) - break - except: - pass - else: - raise Error('Failed to download %s' % url) - sha1sum = GetSha1(tarball) - if sha1sum != tarball_sha1sum: - raise Error('Tarball sha1sum is wrong.' - 'Expected %s, actual: %s' % (tarball_sha1sum, sha1sum)) - subprocess.check_call(['tar', 'xf', tarball, '-C', sysroot]) - os.remove(tarball) - - with open(stamp, 'w') as s: - s.write(url) - - -if __name__ == '__main__': - try: - sys.exit(main(sys.argv[1:])) - except Error as e: - sys.stderr.write(str(e) + '\n') - sys.exit(1)
diff --git a/build/linux/sysroot_scripts/libdbus-1-3-symbols b/build/linux/sysroot_scripts/libdbus-1-3-symbols deleted file mode 100644 index 28050aa..0000000 --- a/build/linux/sysroot_scripts/libdbus-1-3-symbols +++ /dev/null
@@ -1,235 +0,0 @@ -libdbus-1.so.3 libdbus-1-3 #MINVER# - dbus_address_entries_free@Base 1.0.2 - dbus_address_entry_get_method@Base 1.0.2 - dbus_address_entry_get_value@Base 1.0.2 - dbus_address_escape_value@Base 1.0.2 - dbus_address_unescape_value@Base 1.0.2 - dbus_bus_add_match@Base 1.0.2 - dbus_bus_get@Base 1.0.2 - dbus_bus_get_id@Base 1.1.1 - dbus_bus_get_private@Base 1.0.2 - dbus_bus_get_unique_name@Base 1.0.2 - dbus_bus_get_unix_user@Base 1.0.2 - dbus_bus_name_has_owner@Base 1.0.2 - dbus_bus_register@Base 1.0.2 - dbus_bus_release_name@Base 1.0.2 - dbus_bus_remove_match@Base 1.0.2 - dbus_bus_request_name@Base 1.0.2 - dbus_bus_set_unique_name@Base 1.0.2 - dbus_bus_start_service_by_name@Base 1.0.2 - dbus_connection_add_filter@Base 1.0.2 - dbus_connection_allocate_data_slot@Base 1.0.2 - dbus_connection_borrow_message@Base 1.0.2 - dbus_connection_can_send_type@Base 1.3.1 - dbus_connection_close@Base 1.0.2 - dbus_connection_dispatch@Base 1.0.2 - dbus_connection_flush@Base 1.0.2 - dbus_connection_free_data_slot@Base 1.0.2 - dbus_connection_free_preallocated_send@Base 1.0.2 - dbus_connection_get_adt_audit_session_data@Base 1.2.4 - dbus_connection_get_data@Base 1.0.2 - dbus_connection_get_dispatch_status@Base 1.0.2 - dbus_connection_get_is_anonymous@Base 1.1.1 - dbus_connection_get_is_authenticated@Base 1.0.2 - dbus_connection_get_is_connected@Base 1.0.2 - dbus_connection_get_max_message_size@Base 1.0.2 - dbus_connection_get_max_message_unix_fds@Base 1.3.1 - dbus_connection_get_max_received_size@Base 1.0.2 - dbus_connection_get_max_received_unix_fds@Base 1.3.1 - dbus_connection_get_object_path_data@Base 1.0.2 - dbus_connection_get_outgoing_size@Base 1.0.2 - dbus_connection_get_outgoing_unix_fds@Base 1.3.1 - dbus_connection_get_server_id@Base 1.1.1 - dbus_connection_get_socket@Base 1.0.2 - dbus_connection_get_unix_fd@Base 1.0.2 - dbus_connection_get_unix_process_id@Base 1.0.2 - dbus_connection_get_unix_user@Base 1.0.2 - dbus_connection_get_windows_user@Base 1.1.1 - dbus_connection_has_messages_to_send@Base 1.0.2 - dbus_connection_list_registered@Base 1.0.2 - dbus_connection_open@Base 1.0.2 - dbus_connection_open_private@Base 1.0.2 - dbus_connection_pop_message@Base 1.0.2 - dbus_connection_preallocate_send@Base 1.0.2 - dbus_connection_read_write@Base 1.0.2 - dbus_connection_read_write_dispatch@Base 1.0.2 - dbus_connection_ref@Base 1.0.2 - dbus_connection_register_fallback@Base 1.0.2 - dbus_connection_register_object_path@Base 1.0.2 - dbus_connection_remove_filter@Base 1.0.2 - dbus_connection_return_message@Base 1.0.2 - dbus_connection_send@Base 1.0.2 - dbus_connection_send_preallocated@Base 1.0.2 - dbus_connection_send_with_reply@Base 1.0.2 - dbus_connection_send_with_reply_and_block@Base 1.0.2 - dbus_connection_set_allow_anonymous@Base 1.1.1 - dbus_connection_set_change_sigpipe@Base 1.0.2 - dbus_connection_set_data@Base 1.0.2 - dbus_connection_set_dispatch_status_function@Base 1.0.2 - dbus_connection_set_exit_on_disconnect@Base 1.0.2 - dbus_connection_set_max_message_size@Base 1.0.2 - dbus_connection_set_max_message_unix_fds@Base 1.3.1 - dbus_connection_set_max_received_size@Base 1.0.2 - dbus_connection_set_max_received_unix_fds@Base 1.3.1 - dbus_connection_set_route_peer_messages@Base 1.0.2 - dbus_connection_set_timeout_functions@Base 1.0.2 - dbus_connection_set_unix_user_function@Base 1.0.2 - dbus_connection_set_wakeup_main_function@Base 1.0.2 - dbus_connection_set_watch_functions@Base 1.0.2 - dbus_connection_set_windows_user_function@Base 1.1.1 - dbus_connection_steal_borrowed_message@Base 1.0.2 - dbus_connection_try_register_fallback@Base 1.1.4 - dbus_connection_try_register_object_path@Base 1.1.4 - dbus_connection_unref@Base 1.0.2 - dbus_connection_unregister_object_path@Base 1.0.2 - dbus_error_free@Base 1.0.2 - dbus_error_has_name@Base 1.0.2 - dbus_error_init@Base 1.0.2 - dbus_error_is_set@Base 1.0.2 - dbus_free@Base 1.0.2 - dbus_free_string_array@Base 1.0.2 - dbus_get_local_machine_id@Base 1.0.2 - dbus_get_version@Base 1.1.4 - dbus_internal_do_not_use_create_uuid@Base 1.0.2 - dbus_internal_do_not_use_get_uuid@Base 1.0.2 - dbus_malloc0@Base 1.0.2 - dbus_malloc@Base 1.0.2 - dbus_message_allocate_data_slot@Base 1.0.2 - dbus_message_append_args@Base 1.0.2 - dbus_message_append_args_valist@Base 1.0.2 - dbus_message_contains_unix_fds@Base 1.3.1 - dbus_message_copy@Base 1.0.2 - dbus_message_demarshal@Base 1.1.1 - dbus_message_demarshal_bytes_needed@Base 1.2.14 - dbus_message_free_data_slot@Base 1.0.2 - dbus_message_get_args@Base 1.0.2 - dbus_message_get_args_valist@Base 1.0.2 - dbus_message_get_auto_start@Base 1.0.2 - dbus_message_get_data@Base 1.0.2 - dbus_message_get_destination@Base 1.0.2 - dbus_message_get_error_name@Base 1.0.2 - dbus_message_get_interface@Base 1.0.2 - dbus_message_get_member@Base 1.0.2 - dbus_message_get_no_reply@Base 1.0.2 - dbus_message_get_path@Base 1.0.2 - dbus_message_get_path_decomposed@Base 1.0.2 - dbus_message_get_reply_serial@Base 1.0.2 - dbus_message_get_sender@Base 1.0.2 - dbus_message_get_serial@Base 1.0.2 - dbus_message_get_signature@Base 1.0.2 - dbus_message_get_type@Base 1.0.2 - dbus_message_has_destination@Base 1.0.2 - dbus_message_has_interface@Base 1.0.2 - dbus_message_has_member@Base 1.0.2 - dbus_message_has_path@Base 1.0.2 - dbus_message_has_sender@Base 1.0.2 - dbus_message_has_signature@Base 1.0.2 - dbus_message_is_error@Base 1.0.2 - dbus_message_is_method_call@Base 1.0.2 - dbus_message_is_signal@Base 1.0.2 - dbus_message_iter_abandon_container@Base 1.2.16 - dbus_message_iter_append_basic@Base 1.0.2 - dbus_message_iter_append_fixed_array@Base 1.0.2 - dbus_message_iter_close_container@Base 1.0.2 - dbus_message_iter_get_arg_type@Base 1.0.2 - dbus_message_iter_get_array_len@Base 1.0.2 - dbus_message_iter_get_basic@Base 1.0.2 - dbus_message_iter_get_element_type@Base 1.0.2 - dbus_message_iter_get_fixed_array@Base 1.0.2 - dbus_message_iter_get_signature@Base 1.0.2 - dbus_message_iter_has_next@Base 1.0.2 - dbus_message_iter_init@Base 1.0.2 - dbus_message_iter_init_append@Base 1.0.2 - dbus_message_iter_next@Base 1.0.2 - dbus_message_iter_open_container@Base 1.0.2 - dbus_message_iter_recurse@Base 1.0.2 - dbus_message_lock@Base 1.2.14 - dbus_message_marshal@Base 1.1.1 - dbus_message_new@Base 1.0.2 - dbus_message_new_error@Base 1.0.2 - dbus_message_new_error_printf@Base 1.0.2 - dbus_message_new_method_call@Base 1.0.2 - dbus_message_new_method_return@Base 1.0.2 - dbus_message_new_signal@Base 1.0.2 - dbus_message_ref@Base 1.0.2 - dbus_message_set_auto_start@Base 1.0.2 - dbus_message_set_data@Base 1.0.2 - dbus_message_set_destination@Base 1.0.2 - dbus_message_set_error_name@Base 1.0.2 - dbus_message_set_interface@Base 1.0.2 - dbus_message_set_member@Base 1.0.2 - dbus_message_set_no_reply@Base 1.0.2 - dbus_message_set_path@Base 1.0.2 - dbus_message_set_reply_serial@Base 1.0.2 - dbus_message_set_sender@Base 1.0.2 - dbus_message_set_serial@Base 1.2.14 - dbus_message_type_from_string@Base 1.0.2 - dbus_message_type_to_string@Base 1.0.2 - dbus_message_unref@Base 1.0.2 - dbus_move_error@Base 1.0.2 - dbus_parse_address@Base 1.0.2 - dbus_pending_call_allocate_data_slot@Base 1.0.2 - dbus_pending_call_block@Base 1.0.2 - dbus_pending_call_cancel@Base 1.0.2 - dbus_pending_call_free_data_slot@Base 1.0.2 - dbus_pending_call_get_completed@Base 1.0.2 - dbus_pending_call_get_data@Base 1.0.2 - dbus_pending_call_ref@Base 1.0.2 - dbus_pending_call_set_data@Base 1.0.2 - dbus_pending_call_set_notify@Base 1.0.2 - dbus_pending_call_steal_reply@Base 1.0.2 - dbus_pending_call_unref@Base 1.0.2 - dbus_realloc@Base 1.0.2 - dbus_server_allocate_data_slot@Base 1.0.2 - dbus_server_disconnect@Base 1.0.2 - dbus_server_free_data_slot@Base 1.0.2 - dbus_server_get_address@Base 1.0.2 - dbus_server_get_data@Base 1.0.2 - dbus_server_get_id@Base 1.1.1 - dbus_server_get_is_connected@Base 1.0.2 - dbus_server_listen@Base 1.0.2 - dbus_server_ref@Base 1.0.2 - dbus_server_set_auth_mechanisms@Base 1.0.2 - dbus_server_set_data@Base 1.0.2 - dbus_server_set_new_connection_function@Base 1.0.2 - dbus_server_set_timeout_functions@Base 1.0.2 - dbus_server_set_watch_functions@Base 1.0.2 - dbus_server_unref@Base 1.0.2 - dbus_set_error@Base 1.0.2 - dbus_set_error_const@Base 1.0.2 - dbus_set_error_from_message@Base 1.0.2 - dbus_setenv@Base 1.7.6 - dbus_shutdown@Base 1.0.2 - dbus_signature_iter_get_current_type@Base 1.0.2 - dbus_signature_iter_get_element_type@Base 1.0.2 - dbus_signature_iter_get_signature@Base 1.0.2 - dbus_signature_iter_init@Base 1.0.2 - dbus_signature_iter_next@Base 1.0.2 - dbus_signature_iter_recurse@Base 1.0.2 - dbus_signature_validate@Base 1.0.2 - dbus_signature_validate_single@Base 1.0.2 - dbus_threads_init@Base 1.0.2 - dbus_threads_init_default@Base 1.0.2 - dbus_timeout_get_data@Base 1.0.2 - dbus_timeout_get_enabled@Base 1.0.2 - dbus_timeout_get_interval@Base 1.0.2 - dbus_timeout_handle@Base 1.0.2 - dbus_timeout_set_data@Base 1.0.2 - dbus_type_is_basic@Base 1.0.2 - dbus_type_is_container@Base 1.0.2 - dbus_type_is_fixed@Base 1.0.2 - dbus_type_is_valid@Base 1.5.0 - dbus_validate_bus_name@Base 1.5.12 - dbus_validate_error_name@Base 1.5.12 - dbus_validate_interface@Base 1.5.12 - dbus_validate_member@Base 1.5.12 - dbus_validate_path@Base 1.5.12 - dbus_validate_utf8@Base 1.5.12 - dbus_watch_get_data@Base 1.0.2 - dbus_watch_get_enabled@Base 1.0.2 - dbus_watch_get_fd@Base 1.0.2 - dbus_watch_get_flags@Base 1.0.2 - dbus_watch_get_socket@Base 1.1.1 - dbus_watch_get_unix_fd@Base 1.1.1 - dbus_watch_handle@Base 1.0.2 - dbus_watch_set_data@Base 1.0.2
diff --git a/build/linux/sysroot_scripts/merge-package-lists.py b/build/linux/sysroot_scripts/merge-package-lists.py deleted file mode 100755 index 58bd163..0000000 --- a/build/linux/sysroot_scripts/merge-package-lists.py +++ /dev/null
@@ -1,34 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 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. - -"""Merge package entries from different package lists. -""" - -# This is used for replacing packages in eg. sid with those in experimental. -# The updated packages are ABI compatible, but include security patches, so we -# should use those instead in our sysroots. - -import sys - -if len(sys.argv) != 2: - exit(1) - -packages = {} - -def AddPackagesFromFile(file): - global packages - lines = file.readlines() - if len(lines) % 3 != 0: - exit(1) - for i in xrange(0, len(lines), 3): - packages[lines[i]] = (lines[i + 1], lines[i + 2]) - -AddPackagesFromFile(open(sys.argv[1], 'r')) -AddPackagesFromFile(sys.stdin) - -output_file = open(sys.argv[1], 'w') - -for (package, (filename, sha256)) in packages.iteritems(): - output_file.write(package + filename + sha256)
diff --git a/build/linux/sysroot_scripts/packagelist.sid.amd64 b/build/linux/sysroot_scripts/packagelist.sid.amd64 deleted file mode 100644 index 68fba9f..0000000 --- a/build/linux/sysroot_scripts/packagelist.sid.amd64 +++ /dev/null
@@ -1,311 +0,0 @@ -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libcilkrts5_7.3.0-14_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/liblsan0_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libmpx2_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libquadmath0_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libtsan0_8-20180402-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_amd64.deb -http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-intel1_2.4.91-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0+git20180308-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0+git20180308-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0+git20180308-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0+git20180308-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0+git20180308-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0+git20180308-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0+git20180308-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.5-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.5-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_amd64.deb -http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_amd64.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_amd64.deb
diff --git a/build/linux/sysroot_scripts/packagelist.sid.arm b/build/linux/sysroot_scripts/packagelist.sid.arm deleted file mode 100644 index 4b7d022..0000000 --- a/build/linux/sysroot_scripts/packagelist.sid.arm +++ /dev/null
@@ -1,309 +0,0 @@ -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_armhf.deb -http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-exynos1_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-omap1_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.91-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.5-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.5-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_armhf.deb -http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_armhf.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_armhf.deb
diff --git a/build/linux/sysroot_scripts/packagelist.sid.arm64 b/build/linux/sysroot_scripts/packagelist.sid.arm64 deleted file mode 100644 index 753a41a..0000000 --- a/build/linux/sysroot_scripts/packagelist.sid.arm64 +++ /dev/null
@@ -1,309 +0,0 @@ -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8-20180402-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_arm64.deb -http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-freedreno1_2.4.91-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-tegra0_2.4.91-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0+git20180308-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0+git20180308-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0+git20180308-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0+git20180308-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0+git20180308-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0+git20180308-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0+git20180308-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.5-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.5-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_arm64.deb -http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_arm64.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_arm64.deb
diff --git a/build/linux/sysroot_scripts/packagelist.sid.i386 b/build/linux/sysroot_scripts/packagelist.sid.i386 deleted file mode 100644 index d2d9131..0000000 --- a/build/linux/sysroot_scripts/packagelist.sid.i386 +++ /dev/null
@@ -1,309 +0,0 @@ -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_i386.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_i386.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libasan3_6.4.0-15_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libcilkrts5_7.3.0-14_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-7/libubsan0_7.3.0-14_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libitm1_8-20180402-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libmpx2_8-20180402-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libquadmath0_8-20180402-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_i386.deb -http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_i386.deb -http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-intel1_2.4.91-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_i386.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0+git20180308-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0+git20180308-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0+git20180308-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0+git20180308-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0+git20180308-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0+git20180308-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0+git20180308-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_i386.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.5-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.5-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_i386.deb -http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_i386.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_i386.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_i386.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_i386.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_i386.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_i386.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_i386.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_i386.deb
diff --git a/build/linux/sysroot_scripts/packagelist.sid.mips64el b/build/linux/sysroot_scripts/packagelist.sid.mips64el deleted file mode 100644 index e913cb9..0000000 --- a/build/linux/sysroot_scripts/packagelist.sid.mips64el +++ /dev/null
@@ -1,302 +0,0 @@ -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.5-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.5-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_mips64el.deb
diff --git a/build/linux/sysroot_scripts/packagelist.sid.mipsel b/build/linux/sysroot_scripts/packagelist.sid.mipsel deleted file mode 100644 index 2405752..0000000 --- a/build/linux/sysroot_scripts/packagelist.sid.mipsel +++ /dev/null
@@ -1,302 +0,0 @@ -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2_1.1.3-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/alsa-lib/libasound2-dev_1.1.3-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-0_2.28.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.28.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.26.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.26.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.28.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.28.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.8.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.7-3.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-common3_0.7-3.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth3_5.47-1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/b/bluez/libbluetooth-dev_5.47-1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi0.6_5.6-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/b/brltty/libbrlapi-dev_5.6-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2_1.15.10-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo2-dev_1.15.10-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-gobject2_1.15.10-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.15.10-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/colord/libcolord2_1.3.3-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2_2.2.7-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcups2-dev_2.2.7-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.7-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.7-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/d/db5.3/libdb5.3_5.3.28-13.1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.12.6-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.12.6-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.44.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/libcom-err2_1.44.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf1_0.170-0.3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/e/elfutils/libelf-dev_0.170-0.3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1_2.2.5-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/e/expat/libexpat1-dev_2.2.5-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac8_1.3.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/f/flac/libflac-dev_1.3.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.12.6-0.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/f/fontconfig/libfontconfig1-dev_2.12.6-0.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6_2.8.1-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/f/freetype/libfreetype6-dev_2.8.1-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/f/fribidi/libfribidi0_0.19.7-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libgcc-6-dev_6.4.0-15_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-6/libstdc++-6-dev_6.4.0-15_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libatomic1_8-20180402-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgcc1_8-20180402-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libgomp1_8-20180402-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8-20180402-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-0_2.36.11-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.11-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.56.0-6_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/glib2.0/libglib2.0-dev_2.56.0-6_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6_2.27-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/glibc/libc6-dev_2.27-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gmp/libgmp10_6.1.2+dfsg-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls28-dev_3.5.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls30_3.5.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-dane0_3.5.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutls-openssl27_3.5.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gnutls28/libgnutlsxx28_3.5.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-3_1.3.11-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/graphite2/libgraphite2-dev_1.3.11-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.32-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-0_3.22.29-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/g/gtk+3.0/libgtk-3-dev_3.22.29-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz0b_1.7.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-dev_1.7.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.7.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.7.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-9_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/j/json-glib/libjson-glib-1.0-0_1.4.2-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9.2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-9_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.16-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/liba/libasyncns/libasyncns0_0.8-6_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libb/libbsd/libbsd0_0.8.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1.2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1.2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libc/libcap-ng/libcap-ng0_0.7.7-3.1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-7_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib4_16.04.1+17.04.20170109.1-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_16.04.1+17.04.20170109.1-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_16.04.1+17.04.20170109.1-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_16.04.1+17.04.20170109.1-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.91-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.91-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-dev_2.4.91-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-nouveau2_2.4.91-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm-radeon1_2.4.91-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy0_1.4.3-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libe/libepoxy/libepoxy-dev_1.4.3-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libe/libevent/libevent-2.1-6_2.1.8-stable-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-8_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-8_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20_1.8.2-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.2-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libegl1_1.0.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.0.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libgles2_1.0.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd0_1.0.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglvnd-dev_1.0.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.0.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libglvnd/libopengl0_1.0.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error0_1.28-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libg/libgpg-error/libgpg-error-dev_1.28-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libi/libice/libice6_1.0.9-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libi/libidn/libidn11_1.33-2.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator3-7_0.5.0-3+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-3+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.2-2+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.7.4-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg0_1.3.2-1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libo/libogg/libogg-dev_1.3.2-1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpciaccess/libpciaccess0_0.14-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.34-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.34-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libr/librest/librest-0.7-0_0.8.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.7-2+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsm/libsm6_1.2.2-1+b3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsndfile/libsndfile1_1.0.28-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup2.4-1_2.62.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.62.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.13-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.27-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libt/libtool/libltdl7_2.4.6-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libu/libunistring/libunistring2_0.9.8-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva2_2.1.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_2.1.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm2_2.1.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx2_2.1.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland2_2.1.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-2_2.1.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbis0a_1.3.6-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvorbis/libvorbisenc2_1.3.6-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libv/libvpx/libvpx-dev_1.7.0-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebp-dev_0.6.1-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libw/libwebp/libwebpmux3_0.6.1-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.5-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.5-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.5-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.6.5-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.8-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.8-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri2-0_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-dri3-0_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-glx0_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-present0_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-render0-dev_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-shm0-dev_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-sync1_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcb/libxcb-xfixes0_1.13-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite1_0.4.4-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor1_1.1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxcursor/libxcursor-dev_1.1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage1_1.1.4-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext6_1.3.3-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxext/libxext-dev_1.3.3-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes3_5.0.3-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi6_1.7.9-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxi/libxi-dev_1.7.9-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama1_1.1.3-1+b3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon0_0.8.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxkbcommon/libxkbcommon-dev_0.8.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2_2.9.4+dfsg1-6.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender1_0.9.10-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1.1_1.1.29-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxslt/libxslt1-dev_1.1.29-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss1_1.2.2-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxss/libxss-dev_1.2.2-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt6_1.1.5-1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxt/libxt-dev_1.1.5-1+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst6_1.2.3-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/l/lcms2/liblcms2-2_2.9-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/l/linux/linux-libc-dev_4.15.11-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/l/lzo2/liblzo2-2_2.08-1.2+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm1_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgbm-dev_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libglapi-mesa_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/libwayland-egl1-mesa_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_17.3.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip1_1.1-8+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libhogweed4_3.4-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nettle/libnettle6_3.4-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.35-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.35-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2o-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0h-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0h-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus0_1.2.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/opus/libopus-dev_1.2.1-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit-2-0_2.14.19-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.10-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.7_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g-dev_1.1.8-3.7_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango-1.0-0_1.42.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpango1.0-dev_1.42.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangocairo-1.0-0_1.42.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoft2-1.0-0_1.42.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pango1.0/libpangoxft-1.0-0_1.42.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci3_3.5.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pciutils/libpci-dev_3.5.2-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre16-3_8.39-9_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre32-3_8.39-9_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3_8.39-9_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcre3-dev_8.39-9_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pcre3/libpcrecpp0v5_8.39-9_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-0_0.34.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pixman/libpixman-1-dev_0.34.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_11.1-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_11.1-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_11.1-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-4_20180301+dfsg-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/r/re2/libre2-dev_20180301+dfsg-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy1v5_1.1.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/snappy/libsnappy-dev_1.1.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.8-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.8-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.8-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.0-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libsystemd0_238-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_238-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_238-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/t/tiff/libtiff5_4.0.9-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/u/unbound/libunbound2_1.6.7-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libblkid1_2.31.1-0.5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libmount1_2.31.1-0.5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/libuuid1_2.31.1-0.5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/u/util-linux/uuid-dev_2.31.1-0.5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.14.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-cursor0_1.14.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-dev_1.14.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-server0_1.14.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/w/wayland-protocols/wayland-protocols_1.13-1_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xft/libxft2_2.3.2-1+b2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-composite-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-damage-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-fixes-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-input-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-kb-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-randr-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-record-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-render-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xext-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xorgproto/x11proto-xinerama-dev_2018.4-4_all.deb -http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.2.2-1.3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-5_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-5_mipsel.deb
diff --git a/build/linux/sysroot_scripts/sysroot-creator-sid.sh b/build/linux/sysroot_scripts/sysroot-creator-sid.sh deleted file mode 100755 index 18aa037..0000000 --- a/build/linux/sysroot_scripts/sysroot-creator-sid.sh +++ /dev/null
@@ -1,369 +0,0 @@ -#!/bin/bash -# Copyright 2017 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. - -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -DISTRO=debian -DIST=sid - -APT_SOURCES_LIST="http://ftp.us.debian.org/debian/ sid main" - -# gpg keyring file generated using: -# export KEYS="518E17E1 46925553 2B90D010 C857C906 F66AEC98 8AE22BA9 1A7B6500" -# gpg --recv-keys $KEYS -# gpg --output ./debian-archive-sid-stable.gpg --export $KEYS -KEYRING_FILE="${SCRIPT_DIR}/debian-archive-sid-stable.gpg" - -HAS_ARCH_AMD64=1 -HAS_ARCH_I386=1 -HAS_ARCH_ARM=1 -HAS_ARCH_ARM64=1 -HAS_ARCH_MIPS=1 -HAS_ARCH_MIPS64EL=1 - -# Sysroot packages: these are the packages needed to build chrome. -# NOTE: When DEBIAN_PACKAGES is modified, the packagelist files must be updated -# by running this script in GeneratePackageList mode. -DEBIAN_PACKAGES="\ - comerr-dev - krb5-multidev - libappindicator-dev - libappindicator1 - libappindicator3-1 - libappindicator3-dev - libasound2 - libasound2-dev - libasyncns0 - libatk-bridge2.0-0 - libatk-bridge2.0-dev - libatk1.0-0 - libatk1.0-dev - libatomic1 - libatspi2.0-0 - libatspi2.0-dev - libattr1 - libaudit1 - libavahi-client3 - libavahi-common3 - libblkid1 - libbluetooth-dev - libbluetooth3 - libbrlapi-dev - libbrlapi0.6 - libbsd0 - libc6 - libc6-dev - libcairo-gobject2 - libcairo-script-interpreter2 - libcairo2 - libcairo2-dev - libcap-dev - libcap-ng0 - libcap2 - libcolord2 - libcom-err2 - libcups2 - libcups2-dev - libcupsimage2 - libcupsimage2-dev - libdatrie1 - libdb5.3 - libdbus-1-3 - libdbus-1-dev - libdbus-glib-1-2 - libdbusmenu-glib-dev - libdbusmenu-glib4 - libdbusmenu-gtk3-4 - libdbusmenu-gtk4 - libdrm-amdgpu1 - libdrm-dev - libdrm-nouveau2 - libdrm-radeon1 - libdrm2 - libegl1 - libegl1-mesa - libegl1-mesa-dev - libelf-dev - libelf1 - libepoxy-dev - libepoxy0 - libevent-2.1-6 - libexpat1 - libexpat1-dev - libffi-dev - libffi6 - libflac-dev - libflac8 - libfontconfig1 - libfontconfig1-dev - libfreetype6 - libfreetype6-dev - libfribidi0 - libgbm-dev - libgbm1 - libgcc-6-dev - libgcc1 - libgcrypt20 - libgcrypt20-dev - libgdk-pixbuf2.0-0 - libgdk-pixbuf2.0-dev - libgl1 - libgl1-mesa-dev - libgl1-mesa-glx - libglapi-mesa - libgles2 - libglib2.0-0 - libglib2.0-dev - libglvnd-dev - libglvnd0 - libglx0 - libgmp10 - libgnome-keyring-dev - libgnome-keyring0 - libgnutls-dane0 - libgnutls-openssl27 - libgnutls28-dev - libgnutls30 - libgnutlsxx28 - libgomp1 - libgpg-error-dev - libgpg-error0 - libgraphite2-3 - libgraphite2-dev - libgssapi-krb5-2 - libgssrpc4 - libgtk-3-0 - libgtk-3-dev - libgtk2.0-0 - libgtk2.0-dev - libharfbuzz-dev - libharfbuzz-gobject0 - libharfbuzz-icu0 - libharfbuzz0b - libhogweed4 - libice6 - libicu57 - libidl-2-0 - libidn11 - libidn2-0 - libindicator3-7 - libindicator7 - libjbig0 - libjpeg62-turbo - libjpeg62-turbo-dev - libjson-glib-1.0-0 - libjsoncpp-dev - libjsoncpp1 - libk5crypto3 - libkadm5clnt-mit11 - libkadm5srv-mit11 - libkdb5-9 - libkeyutils1 - libkrb5-3 - libkrb5-dev - libkrb5support0 - liblcms2-2 - libltdl7 - liblz4-1 - liblzma5 - liblzo2-2 - libminizip-dev - libminizip1 - libmount1 - libnettle6 - libnspr4 - libnspr4-dev - libnss-db - libnss3 - libnss3-dev - libogg-dev - libogg0 - libopengl0 - libopus-dev - libopus0 - liborbit-2-0 - liborbit2 - libp11-kit0 - libpam0g - libpam0g-dev - libpango-1.0-0 - libpango1.0-dev - libpangocairo-1.0-0 - libpangoft2-1.0-0 - libpangox-1.0-0 - libpangoxft-1.0-0 - libpci-dev - libpci3 - libpciaccess0 - libpcre16-3 - libpcre3 - libpcre3-dev - libpcre32-3 - libpcrecpp0v5 - libpixman-1-0 - libpixman-1-dev - libpng-dev - libpng16-16 - libpthread-stubs0-dev - libpulse-dev - libpulse-mainloop-glib0 - libpulse0 - libre2-4 - libre2-dev - librest-0.7-0 - libselinux1 - libsm6 - libsnappy-dev - libsnappy1v5 - libsndfile1 - libsoup-gnome2.4-1 - libsoup2.4-1 - libspeechd-dev - libspeechd2 - libsqlite3-0 - libssl-dev - libssl1.0.2 - libssl1.1 - libstdc++-6-dev - libstdc++6 - libsystemd0 - libtasn1-6 - libthai0 - libtiff5 - libudev-dev - libudev1 - libunbound2 - libunistring2 - libuuid1 - libva-dev - libva-drm2 - libva-glx2 - libva-wayland2 - libva-x11-2 - libva2 - libvorbis0a - libvorbisenc2 - libvpx-dev - libvpx5 - libwayland-client0 - libwayland-cursor0 - libwayland-dev - libwayland-egl1-mesa - libwayland-server0 - libwebp-dev - libwebp6 - libwebpdemux2 - libwebpmux3 - libwrap0 - libx11-6 - libx11-dev - libx11-xcb-dev - libx11-xcb1 - libxau-dev - libxau6 - libxcb-dri2-0 - libxcb-dri3-0 - libxcb-glx0 - libxcb-present0 - libxcb-render0 - libxcb-render0-dev - libxcb-shm0 - libxcb-shm0-dev - libxcb-sync1 - libxcb-xfixes0 - libxcb1 - libxcb1-dev - libxcomposite-dev - libxcomposite1 - libxcursor-dev - libxcursor1 - libxdamage-dev - libxdamage1 - libxdmcp-dev - libxdmcp6 - libxext-dev - libxext6 - libxfixes-dev - libxfixes3 - libxft2 - libxi-dev - libxi6 - libxinerama-dev - libxinerama1 - libxkbcommon-dev - libxkbcommon0 - libxml2 - libxml2-dev - libxrandr-dev - libxrandr2 - libxrender-dev - libxrender1 - libxshmfence1 - libxslt1-dev - libxslt1.1 - libxss-dev - libxss1 - libxt-dev - libxt6 - libxtst-dev - libxtst6 - libxxf86vm1 - linux-libc-dev - mesa-common-dev - speech-dispatcher - uuid-dev - wayland-protocols - x11proto-composite-dev - x11proto-damage-dev - x11proto-dev - x11proto-fixes-dev - x11proto-input-dev - x11proto-kb-dev - x11proto-randr-dev - x11proto-record-dev - x11proto-render-dev - x11proto-scrnsaver-dev - x11proto-xext-dev - x11proto-xinerama-dev - zlib1g - zlib1g-dev -" - -DEBIAN_PACKAGES_AMD64=" - liblsan0 - libtsan0 -" - -DEBIAN_PACKAGES_X86=" - libasan3 - libcilkrts5 - libdrm-intel1 - libitm1 - libmpx2 - libquadmath0 - libubsan0 -" - -DEBIAN_PACKAGES_ARM=" - libasan3 - libdrm-etnaviv1 - libdrm-exynos1 - libdrm-freedreno1 - libdrm-omap1 - libdrm-tegra0 - libubsan0 -" - -DEBIAN_PACKAGES_ARM64=" - libasan3 - libdrm-freedreno1 - libdrm-tegra0 - libgmp10 - libitm1 - libthai0 - libubsan0 -" - -. "${SCRIPT_DIR}/sysroot-creator.sh"
diff --git a/build/linux/sysroot_scripts/sysroot-creator.sh b/build/linux/sysroot_scripts/sysroot-creator.sh deleted file mode 100644 index 98b9063..0000000 --- a/build/linux/sysroot_scripts/sysroot-creator.sh +++ /dev/null
@@ -1,961 +0,0 @@ -# Copyright 2014 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. -# -# This script should not be run directly but sourced by the other -# scripts (e.g. sysroot-creator-sid.sh). Its up to the parent scripts -# to define certain environment variables: e.g. -# DISTRO=debian -# DIST=sid -# # Similar in syntax to /etc/apt/sources.list -# APT_SOURCES_LIST="http://ftp.us.debian.org/debian/ sid main" -# KEYRING_FILE=debian-archive-sid-stable.gpg -# DEBIAN_PACKAGES="gcc libz libssl" - -#@ This script builds Debian/Ubuntu sysroot images for building Google Chrome. -#@ -#@ Generally this script is invoked as: -#@ sysroot-creator-<flavour>.sh <mode> <args>* -#@ Available modes are shown below. -#@ -#@ List of modes: - -###################################################################### -# Config -###################################################################### - -set -o nounset -set -o errexit - -SCRIPT_DIR=$(cd $(dirname $0) && pwd) - -if [ -z "${DIST:-}" ]; then - echo "error: DIST not defined" - exit 1 -fi - -if [ -z "${KEYRING_FILE:-}" ]; then - echo "error: KEYRING_FILE not defined" - exit 1 -fi - -if [ -z "${DEBIAN_PACKAGES:-}" ]; then - echo "error: DEBIAN_PACKAGES not defined" - exit 1 -fi - -readonly HAS_ARCH_AMD64=${HAS_ARCH_AMD64:=0} -readonly HAS_ARCH_I386=${HAS_ARCH_I386:=0} -readonly HAS_ARCH_ARM=${HAS_ARCH_ARM:=0} -readonly HAS_ARCH_ARM64=${HAS_ARCH_ARM64:=0} -readonly HAS_ARCH_MIPS=${HAS_ARCH_MIPS:=0} -readonly HAS_ARCH_MIPS64EL=${HAS_ARCH_MIPS64EL:=0} - -readonly REQUIRED_TOOLS="curl xzcat" - -###################################################################### -# Package Config -###################################################################### - -readonly PACKAGES_EXT=xz -readonly RELEASE_FILE="Release" -readonly RELEASE_FILE_GPG="Release.gpg" - -readonly DEBIAN_DEP_LIST_AMD64="packagelist.${DIST}.amd64" -readonly DEBIAN_DEP_LIST_I386="packagelist.${DIST}.i386" -readonly DEBIAN_DEP_LIST_ARM="packagelist.${DIST}.arm" -readonly DEBIAN_DEP_LIST_ARM64="packagelist.${DIST}.arm64" -readonly DEBIAN_DEP_LIST_MIPS="packagelist.${DIST}.mipsel" -readonly DEBIAN_DEP_LIST_MIPS64EL="packagelist.${DIST}.mips64el" - - -###################################################################### -# Helper -###################################################################### - -Banner() { - echo "######################################################################" - echo $* - echo "######################################################################" -} - - -SubBanner() { - echo "----------------------------------------------------------------------" - echo $* - echo "----------------------------------------------------------------------" -} - - -Usage() { - egrep "^#@" "${BASH_SOURCE[0]}" | cut --bytes=3- -} - - -DownloadOrCopy() { - if [ -f "$2" ] ; then - echo "$2 already in place" - return - fi - - HTTP=0 - echo "$1" | grep -qs ^http:// && HTTP=1 - if [ "$HTTP" = "1" ]; then - SubBanner "downloading from $1 -> $2" - # Appending the "$$" shell pid is necessary here to prevent concurrent - # instances of sysroot-creator.sh from trying to write to the same file. - # --create-dirs is added in case there are slashes in the filename, as can - # happen with the "debian/security" release class. - curl -L "$1" --create-dirs -o "${2}.partial.$$" - mv "${2}.partial.$$" $2 - else - SubBanner "copying from $1" - cp "$1" "$2" - fi -} - - -SetEnvironmentVariables() { - ARCH="" - echo $1 | grep -qs Amd64$ && ARCH=AMD64 - if [ -z "$ARCH" ]; then - echo $1 | grep -qs I386$ && ARCH=I386 - fi - if [ -z "$ARCH" ]; then - echo $1 | grep -qs Mips64el$ && ARCH=MIPS64EL - fi - if [ -z "$ARCH" ]; then - echo $1 | grep -qs Mips$ && ARCH=MIPS - fi - if [ -z "$ARCH" ]; then - echo $1 | grep -qs ARM$ && ARCH=ARM - fi - if [ -z "$ARCH" ]; then - echo $1 | grep -qs ARM64$ && ARCH=ARM64 - fi - if [ -z "${ARCH}" ]; then - echo "ERROR: Unable to determine architecture based on: $1" - exit 1 - fi - ARCH_LOWER=$(echo $ARCH | tr '[:upper:]' '[:lower:]') -} - - -# some sanity checks to make sure this script is run from the right place -# with the right tools -SanityCheck() { - Banner "Sanity Checks" - - local chrome_dir=$(cd "${SCRIPT_DIR}/../../.." && pwd) - BUILD_DIR="${chrome_dir}/out/sysroot-build/${DIST}" - mkdir -p ${BUILD_DIR} - echo "Using build directory: ${BUILD_DIR}" - - for tool in ${REQUIRED_TOOLS} ; do - if ! which ${tool} > /dev/null ; then - echo "Required binary $tool not found." - echo "Exiting." - exit 1 - fi - done - - # This is where the staging sysroot is. - INSTALL_ROOT="${BUILD_DIR}/${DIST}_${ARCH_LOWER}_staging" - TARBALL="${BUILD_DIR}/${DISTRO}_${DIST}_${ARCH_LOWER}_sysroot.tar.xz" - - if ! mkdir -p "${INSTALL_ROOT}" ; then - echo "ERROR: ${INSTALL_ROOT} can't be created." - exit 1 - fi -} - - -ChangeDirectory() { - # Change directory to where this script is. - cd ${SCRIPT_DIR} -} - - -ClearInstallDir() { - Banner "Clearing dirs in ${INSTALL_ROOT}" - rm -rf ${INSTALL_ROOT}/* -} - - -CreateTarBall() { - Banner "Creating tarball ${TARBALL}" - tar -I "xz -9 -T0" -cf ${TARBALL} -C ${INSTALL_ROOT} . -} - -ExtractPackageXz() { - local src_file="$1" - local dst_file="$2" - local repo="$3" - xzcat "${src_file}" | egrep '^(Package:|Filename:|SHA256:) ' | - sed "s|Filename: |Filename: ${repo}|" > "${dst_file}" -} - -GeneratePackageListDist() { - local arch="$1" - set -- $2 - local repo="$1" - local dist="$2" - local repo_name="$3" - - TMP_PACKAGE_LIST="${BUILD_DIR}/Packages.${dist}_${repo_name}_${arch}" - local repo_basedir="${repo}/dists/${dist}" - local package_list="${BUILD_DIR}/Packages.${dist}_${repo_name}_${arch}.${PACKAGES_EXT}" - local package_file_arch="${repo_name}/binary-${arch}/Packages.${PACKAGES_EXT}" - local package_list_arch="${repo_basedir}/${package_file_arch}" - - DownloadOrCopy "${package_list_arch}" "${package_list}" - VerifyPackageListing "${package_file_arch}" "${package_list}" ${repo} ${dist} - ExtractPackageXz "${package_list}" "${TMP_PACKAGE_LIST}" ${repo} -} - -GeneratePackageListCommon() { - local output_file="$1" - local arch="$2" - local packages="$3" - - local dists="${DIST} ${DIST_UPDATES:-}" - local repos="main ${REPO_EXTRA:-}" - - local list_base="${BUILD_DIR}/Packages.${DIST}_${arch}" - > "${list_base}" # Create (or truncate) a zero-length file. - echo "${APT_SOURCES_LIST}" | while read source; do - GeneratePackageListDist "${arch}" "${source}" - cat "${TMP_PACKAGE_LIST}" | ./merge-package-lists.py "${list_base}" - done - - GeneratePackageList "${list_base}" "${output_file}" "${packages}" -} - -GeneratePackageListAmd64() { - GeneratePackageListCommon "$1" amd64 "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_X86:=} ${DEBIAN_PACKAGES_AMD64:=}" -} - -GeneratePackageListI386() { - GeneratePackageListCommon "$1" i386 "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_X86:=}" -} - -GeneratePackageListARM() { - GeneratePackageListCommon "$1" armhf "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_ARM:=}" -} - -GeneratePackageListARM64() { - GeneratePackageListCommon "$1" arm64 "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_ARM64:=}" -} - -GeneratePackageListMips() { - GeneratePackageListCommon "$1" mipsel "${DEBIAN_PACKAGES}" -} - -GeneratePackageListMips64el() { - GeneratePackageListCommon "$1" mips64el "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_MIPS64EL:=}" -} - -StripChecksumsFromPackageList() { - local package_file="$1" - sed -i 's/ [a-f0-9]\{64\}$//' "$package_file" -} - -VerifyPackageFilesMatch() { - local downloaded_package_file="$1" - local stored_package_file="$2" - diff -u "$downloaded_package_file" "$stored_package_file" - if [ "$?" -ne "0" ]; then - echo "ERROR: downloaded package files does not match $2." - echo "You may need to run UpdatePackageLists." - exit 1 - fi -} - -###################################################################### -# -###################################################################### - -HacksAndPatchesCommon() { - local arch=$1 - local os=$2 - local strip=$3 - Banner "Misc Hacks & Patches" - # these are linker scripts with absolute pathnames in them - # which we rewrite here - lscripts="${INSTALL_ROOT}/usr/lib/${arch}-${os}/libpthread.so \ - ${INSTALL_ROOT}/usr/lib/${arch}-${os}/libc.so" - - # Rewrite linker scripts - sed -i -e 's|/usr/lib/${arch}-${os}/||g' ${lscripts} - sed -i -e 's|/lib/${arch}-${os}/||g' ${lscripts} - - # Unversion libdbus symbols. This is required because libdbus-1-3 - # switched from unversioned symbols to versioned ones, and we must - # still support distros using the unversioned library. This hack - # can be removed once support for Ubuntu Trusty and Debian Jessie - # are dropped. - ${strip} -R .gnu.version_d -R .gnu.version \ - "${INSTALL_ROOT}/lib/${arch}-${os}/libdbus-1.so.3" - cp "${SCRIPT_DIR}/libdbus-1-3-symbols" \ - "${INSTALL_ROOT}/debian/libdbus-1-3/DEBIAN/symbols" - - # Glibc 2.27 introduced some new optimizations to several math functions, but - # it will be a while before it makes it into all supported distros. Luckily, - # glibc maintains ABI compatibility with previous versions, so the old symbols - # are still there. - # TODO(thomasanderson): Remove this once glibc 2.27 is available on all - # supported distros. - local math_h="${INSTALL_ROOT}/usr/include/math.h" - local libm_so="${INSTALL_ROOT}/lib/${arch}-${os}/libm.so.6" - nm -D --defined-only --with-symbol-versions "${libm_so}" | \ - "${SCRIPT_DIR}/find_incompatible_glibc_symbols.py" >> "${math_h}" - - # glob64() was also optimized in glibc 2.27. Make sure to choose the older - # version. - local glob_h="${INSTALL_ROOT}/usr/include/glob.h" - local libc_so="${INSTALL_ROOT}/lib/${arch}-${os}/libc.so.6" - nm -D --defined-only --with-symbol-versions "${libc_so}" | \ - "${SCRIPT_DIR}/find_incompatible_glibc_symbols.py" >> "${glob_h}" - - # This is for chrome's ./build/linux/pkg-config-wrapper - # which overwrites PKG_CONFIG_LIBDIR internally - SubBanner "Move pkgconfig scripts" - mkdir -p ${INSTALL_ROOT}/usr/lib/pkgconfig - mv ${INSTALL_ROOT}/usr/lib/${arch}-${os}/pkgconfig/* \ - ${INSTALL_ROOT}/usr/lib/pkgconfig -} - - -HacksAndPatchesAmd64() { - HacksAndPatchesCommon x86_64 linux-gnu strip -} - - -HacksAndPatchesI386() { - HacksAndPatchesCommon i386 linux-gnu strip -} - - -HacksAndPatchesARM() { - HacksAndPatchesCommon arm linux-gnueabihf arm-linux-gnueabihf-strip -} - - -HacksAndPatchesARM64() { - # Use the unstripped libdbus for arm64 to prevent linker errors. - # https://bugs.chromium.org/p/webrtc/issues/detail?id=8535 - HacksAndPatchesCommon aarch64 linux-gnu true -} - - -HacksAndPatchesMips() { - HacksAndPatchesCommon mipsel linux-gnu mipsel-linux-gnu-strip -} - - -HacksAndPatchesMips64el() { - HacksAndPatchesCommon mips64el linux-gnuabi64 mips64el-linux-gnuabi64-strip -} - - -InstallIntoSysroot() { - Banner "Install Libs And Headers Into Jail" - - mkdir -p ${BUILD_DIR}/debian-packages - # The /debian directory is an implementation detail that's used to cd into - # when running dpkg-shlibdeps. - mkdir -p ${INSTALL_ROOT}/debian - # An empty control file is necessary to run dpkg-shlibdeps. - touch ${INSTALL_ROOT}/debian/control - while (( "$#" )); do - local file="$1" - local package="${BUILD_DIR}/debian-packages/${file##*/}" - shift - local sha256sum="$1" - shift - if [ "${#sha256sum}" -ne "64" ]; then - echo "Bad sha256sum from package list" - exit 1 - fi - - Banner "Installing $(basename ${file})" - DownloadOrCopy ${file} ${package} - if [ ! -s "${package}" ] ; then - echo - echo "ERROR: bad package ${package}" - exit 1 - fi - echo "${sha256sum} ${package}" | sha256sum --quiet -c - - SubBanner "Extracting to ${INSTALL_ROOT}" - dpkg-deb -x ${package} ${INSTALL_ROOT} - - base_package=$(dpkg-deb --field ${package} Package) - mkdir -p ${INSTALL_ROOT}/debian/${base_package}/DEBIAN - dpkg-deb -e ${package} ${INSTALL_ROOT}/debian/${base_package}/DEBIAN - done - - # Prune /usr/share, leaving only pkgconfig - for name in ${INSTALL_ROOT}/usr/share/*; do - if [ "${name}" != "${INSTALL_ROOT}/usr/share/pkgconfig" ]; then - rm -r ${name} - fi - done -} - - -CleanupJailSymlinks() { - Banner "Jail symlink cleanup" - - SAVEDPWD=$(pwd) - cd ${INSTALL_ROOT} - local libdirs="lib usr/lib" - if [ "${ARCH}" != "MIPS" ]; then - libdirs="${libdirs} lib64" - fi - find $libdirs -type l -printf '%p %l\n' | while read link target; do - # skip links with non-absolute paths - echo "${target}" | grep -qs ^/ || continue - echo "${link}: ${target}" - # Relativize the symlink. - prefix=$(echo "${link}" | sed -e 's/[^/]//g' | sed -e 's|/|../|g') - ln -snfv "${prefix}${target}" "${link}" - done - - find $libdirs -type l -printf '%p %l\n' | while read link target; do - # Make sure we catch new bad links. - if [ ! -r "${link}" ]; then - echo "ERROR: FOUND BAD LINK ${link}" - ls -l ${link} - exit 1 - fi - done - cd "$SAVEDPWD" -} - - -VerifyLibraryDepsCommon() { - local arch=$1 - local os=$2 - local find_dirs=( - "${INSTALL_ROOT}/lib/${arch}-${os}/" - "${INSTALL_ROOT}/usr/lib/${arch}-${os}/" - ) - local needed_libs="$( - find ${find_dirs[*]} -name "*\.so*" -type f -exec file {} \; | \ - grep ': ELF' | sed 's/^\(.*\): .*$/\1/' | xargs readelf -d | \ - grep NEEDED | sort | uniq | sed 's/^.*Shared library: \[\(.*\)\]$/\1/g')" - local all_libs="$(find ${find_dirs[*]} -printf '%f\n')" - local missing_libs="$(grep -vFxf <(echo "${all_libs}") \ - <(echo "${needed_libs}"))" - if [ ! -z "${missing_libs}" ]; then - echo "Missing libraries:" - echo "${missing_libs}" - exit 1 - fi -} - - -VerifyLibraryDepsAmd64() { - VerifyLibraryDepsCommon x86_64 linux-gnu -} - - -VerifyLibraryDepsI386() { - VerifyLibraryDepsCommon i386 linux-gnu -} - - -VerifyLibraryDepsARM() { - VerifyLibraryDepsCommon arm linux-gnueabihf -} - - -VerifyLibraryDepsARM64() { - VerifyLibraryDepsCommon aarch64 linux-gnu -} - - -VerifyLibraryDepsMips() { - VerifyLibraryDepsCommon mipsel linux-gnu -} - - -VerifyLibraryDepsMips64el() { - VerifyLibraryDepsCommon mips64el linux-gnuabi64 -} - - -#@ -#@ BuildSysrootAmd64 -#@ -#@ Build everything and package it -BuildSysrootAmd64() { - if [ "$HAS_ARCH_AMD64" = "0" ]; then - return - fi - ClearInstallDir - local package_file="$BUILD_DIR/package_with_sha256sum_amd64" - GeneratePackageListAmd64 "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_AMD64" - InstallIntoSysroot ${files_and_sha256sums} - CleanupJailSymlinks - HacksAndPatchesAmd64 - VerifyLibraryDepsAmd64 - CreateTarBall -} - -#@ -#@ BuildSysrootI386 -#@ -#@ Build everything and package it -BuildSysrootI386() { - if [ "$HAS_ARCH_I386" = "0" ]; then - return - fi - ClearInstallDir - local package_file="$BUILD_DIR/package_with_sha256sum_i386" - GeneratePackageListI386 "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_I386" - InstallIntoSysroot ${files_and_sha256sums} - CleanupJailSymlinks - HacksAndPatchesI386 - VerifyLibraryDepsI386 - CreateTarBall -} - -#@ -#@ BuildSysrootARM -#@ -#@ Build everything and package it -BuildSysrootARM() { - if [ "$HAS_ARCH_ARM" = "0" ]; then - return - fi - ClearInstallDir - local package_file="$BUILD_DIR/package_with_sha256sum_arm" - GeneratePackageListARM "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_ARM" - InstallIntoSysroot ${files_and_sha256sums} - CleanupJailSymlinks - HacksAndPatchesARM - VerifyLibraryDepsARM - CreateTarBall -} - -#@ -#@ BuildSysrootARM64 -#@ -#@ Build everything and package it -BuildSysrootARM64() { - if [ "$HAS_ARCH_ARM64" = "0" ]; then - return - fi - ClearInstallDir - local package_file="$BUILD_DIR/package_with_sha256sum_arm64" - GeneratePackageListARM64 "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_ARM64" - InstallIntoSysroot ${files_and_sha256sums} - CleanupJailSymlinks - HacksAndPatchesARM64 - VerifyLibraryDepsARM64 - CreateTarBall -} - - -#@ -#@ BuildSysrootMips -#@ -#@ Build everything and package it -BuildSysrootMips() { - if [ "$HAS_ARCH_MIPS" = "0" ]; then - return - fi - ClearInstallDir - local package_file="$BUILD_DIR/package_with_sha256sum_mips" - GeneratePackageListMips "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_MIPS" - InstallIntoSysroot ${files_and_sha256sums} - CleanupJailSymlinks - HacksAndPatchesMips - VerifyLibraryDepsMips - CreateTarBall -} - - -#@ -#@ BuildSysrootMips64el -#@ -#@ Build everything and package it -BuildSysrootMips64el() { - if [ "$HAS_ARCH_MIPS64EL" = "0" ]; then - return - fi - ClearInstallDir - local package_file="$BUILD_DIR/package_with_sha256sum_mips64el" - GeneratePackageListMips64el "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_MIPS64EL" - InstallIntoSysroot ${files_and_sha256sums} - CleanupJailSymlinks - HacksAndPatchesMips64el - VerifyLibraryDepsMips64el - CreateTarBall -} - -#@ -#@ BuildSysrootAll -#@ -#@ Build sysroot images for all architectures -BuildSysrootAll() { - RunCommand BuildSysrootAmd64 - RunCommand BuildSysrootI386 - RunCommand BuildSysrootARM - RunCommand BuildSysrootARM64 - RunCommand BuildSysrootMips - RunCommand BuildSysrootMips64el -} - -UploadSysroot() { - local rev=$1 - if [ -z "${rev}" ]; then - echo "Please specify a revision to upload at." - exit 1 - fi - set -x - gsutil cp -a public-read "${TARBALL}" \ - "gs://chrome-linux-sysroot/toolchain/$rev/" - set +x -} - -#@ -#@ UploadSysrootAmd64 <revision> -#@ -UploadSysrootAmd64() { - if [ "$HAS_ARCH_AMD64" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootI386 <revision> -#@ -UploadSysrootI386() { - if [ "$HAS_ARCH_I386" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootARM <revision> -#@ -UploadSysrootARM() { - if [ "$HAS_ARCH_ARM" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootARM64 <revision> -#@ -UploadSysrootARM64() { - if [ "$HAS_ARCH_ARM64" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootMips <revision> -#@ -UploadSysrootMips() { - if [ "$HAS_ARCH_MIPS" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootMips64el <revision> -#@ -UploadSysrootMips64el() { - if [ "$HAS_ARCH_MIPS64EL" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootAll <revision> -#@ -#@ Upload sysroot image for all architectures -UploadSysrootAll() { - RunCommand UploadSysrootAmd64 "$@" - RunCommand UploadSysrootI386 "$@" - RunCommand UploadSysrootARM "$@" - RunCommand UploadSysrootARM64 "$@" - RunCommand UploadSysrootMips "$@" - RunCommand UploadSysrootMips64el "$@" - -} - -# -# CheckForDebianGPGKeyring -# -# Make sure the Debian GPG keys exist. Otherwise print a helpful message. -# -CheckForDebianGPGKeyring() { - if [ ! -e "$KEYRING_FILE" ]; then - echo "KEYRING_FILE not found: ${KEYRING_FILE}" - echo "Debian GPG keys missing. Install the debian-archive-keyring package." - exit 1 - fi -} - -# -# VerifyPackageListing -# -# Verifies the downloaded Packages.xz file has the right checksums. -# -VerifyPackageListing() { - local file_path="$1" - local output_file="$2" - local repo="$3" - local dist="$4" - - local repo_basedir="${repo}/dists/${dist}" - local release_list="${repo_basedir}/${RELEASE_FILE}" - local release_list_gpg="${repo_basedir}/${RELEASE_FILE_GPG}" - - local release_file="${BUILD_DIR}/${dist}-${RELEASE_FILE}" - local release_file_gpg="${BUILD_DIR}/${dist}-${RELEASE_FILE_GPG}" - - CheckForDebianGPGKeyring - - DownloadOrCopy ${release_list} ${release_file} - DownloadOrCopy ${release_list_gpg} ${release_file_gpg} - echo "Verifying: ${release_file} with ${release_file_gpg}" - set -x - gpgv --keyring "${KEYRING_FILE}" "${release_file_gpg}" "${release_file}" - set +x - - echo "Verifying: ${output_file}" - local sha256sum=$(grep -E "${file_path}\$|:\$" "${release_file}" | \ - grep "SHA256:" -A 1 | xargs echo | awk '{print $2;}') - - if [ "${#sha256sum}" -ne "64" ]; then - echo "Bad sha256sum from ${release_list}" - exit 1 - fi - - echo "${sha256sum} ${output_file}" | sha256sum --quiet -c -} - -# -# GeneratePackageList -# -# Looks up package names in ${BUILD_DIR}/Packages and write list of URLs -# to output file. -# -GeneratePackageList() { - local input_file="$1" - local output_file="$2" - echo "Updating: ${output_file} from ${input_file}" - /bin/rm -f "${output_file}" - shift - shift - for pkg in $@ ; do - local pkg_full=$(grep -A 1 " ${pkg}\$" "$input_file" | \ - egrep "pool/.*" | sed 's/.*Filename: //') - if [ -z "${pkg_full}" ]; then - echo "ERROR: missing package: $pkg" - exit 1 - fi - local sha256sum=$(grep -A 4 " ${pkg}\$" "$input_file" | \ - grep ^SHA256: | sed 's/^SHA256: //') - if [ "${#sha256sum}" -ne "64" ]; then - echo "Bad sha256sum from Packages" - exit 1 - fi - echo $pkg_full $sha256sum >> "$output_file" - done - # sort -o does an in-place sort of this file - sort "$output_file" -o "$output_file" -} - -#@ -#@ UpdatePackageListsAmd64 -#@ -#@ Regenerate the package lists such that they contain an up-to-date -#@ list of URLs within the Debian archive. (For amd64) -UpdatePackageListsAmd64() { - if [ "$HAS_ARCH_AMD64" = "0" ]; then - return - fi - GeneratePackageListAmd64 "$DEBIAN_DEP_LIST_AMD64" - StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_AMD64" -} - -#@ -#@ UpdatePackageListsI386 -#@ -#@ Regenerate the package lists such that they contain an up-to-date -#@ list of URLs within the Debian archive. (For i386) -UpdatePackageListsI386() { - if [ "$HAS_ARCH_I386" = "0" ]; then - return - fi - GeneratePackageListI386 "$DEBIAN_DEP_LIST_I386" - StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_I386" -} - -#@ -#@ UpdatePackageListsARM -#@ -#@ Regenerate the package lists such that they contain an up-to-date -#@ list of URLs within the Debian archive. (For arm) -UpdatePackageListsARM() { - if [ "$HAS_ARCH_ARM" = "0" ]; then - return - fi - GeneratePackageListARM "$DEBIAN_DEP_LIST_ARM" - StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_ARM" -} - -#@ -#@ UpdatePackageListsARM64 -#@ -#@ Regenerate the package lists such that they contain an up-to-date -#@ list of URLs within the Debian archive. (For arm64) -UpdatePackageListsARM64() { - if [ "$HAS_ARCH_ARM64" = "0" ]; then - return - fi - GeneratePackageListARM64 "$DEBIAN_DEP_LIST_ARM64" - StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_ARM64" -} - -#@ -#@ UpdatePackageListsMips -#@ -#@ Regenerate the package lists such that they contain an up-to-date -#@ list of URLs within the Debian archive. (For mips) -UpdatePackageListsMips() { - if [ "$HAS_ARCH_MIPS" = "0" ]; then - return - fi - GeneratePackageListMips "$DEBIAN_DEP_LIST_MIPS" - StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_MIPS" -} - - -#@ -#@ UpdatePackageListsMips64el -#@ -#@ Regenerate the package lists such that they contain an up-to-date -#@ list of URLs within the Debian archive. (For mips64el) -UpdatePackageListsMips64el() { - if [ "$HAS_ARCH_MIPS64EL" = "0" ]; then - return - fi - GeneratePackageListMips64el "$DEBIAN_DEP_LIST_MIPS64EL" - StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_MIPS64EL" -} - -#@ -#@ UpdatePackageListsAll -#@ -#@ Regenerate the package lists for all architectures. -UpdatePackageListsAll() { - RunCommand UpdatePackageListsAmd64 - RunCommand UpdatePackageListsI386 - RunCommand UpdatePackageListsARM - RunCommand UpdatePackageListsARM64 - RunCommand UpdatePackageListsMips - RunCommand UpdatePackageListsMips64el -} - -#@ -#@ PrintArchitectures -#@ -#@ Prints supported architectures. -PrintArchitectures() { - if [ "$HAS_ARCH_AMD64" = "1" ]; then - echo Amd64 - fi - if [ "$HAS_ARCH_I386" = "1" ]; then - echo I386 - fi - if [ "$HAS_ARCH_ARM" = "1" ]; then - echo ARM - fi - if [ "$HAS_ARCH_ARM64" = "1" ]; then - echo ARM64 - fi - if [ "$HAS_ARCH_MIPS" = "1" ]; then - echo Mips - fi - if [ "$HAS_ARCH_MIPS64EL" = "1" ]; then - echo Mips64el - fi -} - -#@ -#@ PrintDistro -#@ -#@ Prints distro. eg: ubuntu -PrintDistro() { - echo ${DISTRO} -} - -#@ -#@ DumpRelease -#@ -#@ Prints disto release. eg: jessie -PrintRelease() { - echo ${DIST} -} - -RunCommand() { - SetEnvironmentVariables "$1" - SanityCheck - "$@" -} - -if [ $# -eq 0 ] ; then - echo "ERROR: you must specify a mode on the commandline" - echo - Usage - exit 1 -elif [ "$(type -t $1)" != "function" ]; then - echo "ERROR: unknown function '$1'." >&2 - echo "For help, try:" - echo " $0 help" - exit 1 -else - ChangeDirectory - if echo $1 | grep -qs --regexp='\(^Print\)\|\(All$\)'; then - "$@" - else - RunCommand "$@" - fi -fi
diff --git a/build/linux/sysroot_scripts/sysroots.json b/build/linux/sysroot_scripts/sysroots.json deleted file mode 100644 index e79b69b..0000000 --- a/build/linux/sysroot_scripts/sysroots.json +++ /dev/null
@@ -1,38 +0,0 @@ -{ - "sid_amd64": { - "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced", - "Sha1Sum": "4e7db513b0faeea8fb410f70c9909e8736f5c0ab", - "SysrootDir": "debian_sid_amd64-sysroot", - "Tarball": "debian_sid_amd64_sysroot.tar.xz" - }, - "sid_arm": { - "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced", - "Sha1Sum": "b2165ab47ab9c4cc780db53ace1b08607d68ae31", - "SysrootDir": "debian_sid_arm-sysroot", - "Tarball": "debian_sid_arm_sysroot.tar.xz" - }, - "sid_arm64": { - "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced", - "Sha1Sum": "37dfa5f22e2c0e847cee34f9848eb31230c33d35", - "SysrootDir": "debian_sid_arm64-sysroot", - "Tarball": "debian_sid_arm64_sysroot.tar.xz" - }, - "sid_i386": { - "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced", - "Sha1Sum": "b8639749e2b561a7462d7e7978ca74ee4044bdab", - "SysrootDir": "debian_sid_i386-sysroot", - "Tarball": "debian_sid_i386_sysroot.tar.xz" - }, - "sid_mips": { - "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced", - "Sha1Sum": "baaf37cdcbcf251fb9a4ccaf8b479722ae61fe49", - "SysrootDir": "debian_sid_mips-sysroot", - "Tarball": "debian_sid_mips_sysroot.tar.xz" - }, - "sid_mips64el": { - "Revision": "1015a998c2adf188813cca60b558b0ea1a0b6ced", - "Sha1Sum": "bbfe1a513b849921cfcf78865faec8fc03f93b3d", - "SysrootDir": "debian_sid_mips64el-sysroot", - "Tarball": "debian_sid_mips64el_sysroot.tar.xz" - } -}
diff --git a/build/linux/unbundle/README b/build/linux/unbundle/README deleted file mode 100644 index 6e4f0a9..0000000 --- a/build/linux/unbundle/README +++ /dev/null
@@ -1,57 +0,0 @@ -This directory contains files that make it possible for Linux -distributions to build Chromium using system libraries and exclude the -source code for Chromium's bundled copies of system libraries in a -consistent manner. Nothing here is used in normal developer builds. - - -For more info on the Linux distros' philosophy on bundling system -libraries and why this exists, please read the following: - - - https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries - - https://wiki.gentoo.org/wiki/Why_not_bundle_dependencies - - http://www.debian.org/doc/debian-policy/ch-source.html#s-embeddedfiles - -For more Chromium-specific context please read -http://spot.livejournal.com/312320.html . - -Additional resources which might provide even more context: - - - http://events.linuxfoundation.org/sites/events/files/slides/LinuxCon%202014%20Slides_0.pdf - - https://lwn.net/Articles/619158/ - - -This directory is provided in the source tree so one can follow the -above guidelines without having to download additional tools and worry -about having the right version of the tool. It is a compromise solution -which takes into account Chromium developers who want to avoid the -perceived burden of more conditional code in build files, and -expectations of Open Source community, where using system-provided -libraries is the norm. - -Usage: - -1. remove_bundled_libraries.py <preserved-directories> - - For example: remove_bundled_libraries.py third_party/mesa - - The script scans sources looking for third_party directories. - Everything that is not explicitly preserved is removed (except for - GYP/GN build files), and the script fails if any directory passed on - command line does not exist (to ensure list is kept up to date). - - This is intended to be used on source code extracted from a tarball, - not on a git repository. - - NOTE: by default this will not remove anything (for safety). Pass - the --do-remove flag to actually remove files. - -2. replace_gn_files.py --system-libraries lib... - - This swaps out a normal library GN build file that is intended for - use with a bundled library for a build file that is set up to use - the system library. While some build files have use_system_libfoo - build flags, using unbundled build files has the advantage that Linux - distros can build Chromium without having to specify many additional - build flags. - - For example: replace_gn_files.py --system-libraries libxml
diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn deleted file mode 100644 index ee3da15..0000000 --- a/build/linux/unbundle/ffmpeg.gn +++ /dev/null
@@ -1,37 +0,0 @@ -# Copyright 2016 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/buildflag_header.gni") -import("//build/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -pkg_config("system_ffmpeg") { - packages = [ - "libavcodec", - "libavformat", - "libavutil", - ] -} - -buildflag_header("ffmpeg_buildflags") { - header = "ffmpeg_buildflags.h" - flags = [ "USE_SYSTEM_FFMPEG=true" ] -} - -shim_headers("ffmpeg_shim") { - root_path = "." - headers = [ - "libavcodec/avcodec.h", - "libavformat/avformat.h", - "libavutil/imgutils.h", - ] -} - -source_set("ffmpeg") { - deps = [ - ":ffmpeg_buildflags", - ":ffmpeg_shim", - ] - public_configs = [ ":system_ffmpeg" ] -}
diff --git a/build/linux/unbundle/flac.gn b/build/linux/unbundle/flac.gn deleted file mode 100644 index 5f2fdeb..0000000 --- a/build/linux/unbundle/flac.gn +++ /dev/null
@@ -1,32 +0,0 @@ -# Copyright 2016 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/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -pkg_config("system_flac") { - packages = [ "flac" ] -} - -shim_headers("flac_shim") { - root_path = "include" - headers = [ - "FLAC/all.h", - "FLAC/assert.h", - "FLAC/callback.h", - "FLAC/export.h", - "FLAC/format.h", - "FLAC/metadata.h", - "FLAC/ordinals.h", - "FLAC/stream_decoder.h", - "FLAC/stream_encoder.h", - ] -} - -source_set("flac") { - deps = [ - ":flac_shim", - ] - public_configs = [ ":system_flac" ] -}
diff --git a/build/linux/unbundle/fontconfig.gn b/build/linux/unbundle/fontconfig.gn deleted file mode 100644 index c1e2298..0000000 --- a/build/linux/unbundle/fontconfig.gn +++ /dev/null
@@ -1,13 +0,0 @@ -# Copyright 2017 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. - -assert(is_linux) - -config("fontconfig_config") { - libs = [ "fontconfig" ] -} - -group("fontconfig") { - public_configs = [ ":fontconfig_config" ] -}
diff --git a/build/linux/unbundle/freetype.gn b/build/linux/unbundle/freetype.gn deleted file mode 100644 index cafa9db..0000000 --- a/build/linux/unbundle/freetype.gn +++ /dev/null
@@ -1,14 +0,0 @@ -# Copyright 2017 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. - -declare_args() { - # Blink needs a recent and properly build-configured FreeType version to - # support OpenType variations, color emoji and avoid security bugs. By default - # we ship and link such a version as part of Chrome. For distributions that - # prefer to keep linking to the version the system, FreeType must be newer - # than version 2.7.1 and have color bitmap support compiled in. WARNING: - # System FreeType configurations other than as described WILL INTRODUCE TEXT - # RENDERING AND SECURITY REGRESSIONS. - use_system_freetype = true -}
diff --git a/build/linux/unbundle/harfbuzz-ng.gn b/build/linux/unbundle/harfbuzz-ng.gn deleted file mode 100644 index b4ba17a..0000000 --- a/build/linux/unbundle/harfbuzz-ng.gn +++ /dev/null
@@ -1,13 +0,0 @@ -# Copyright 2017 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. - -declare_args() { - # Blink uses a cutting-edge version of Harfbuzz (version listed in - # third_party/harfbuzz-ng/README.chromium); most Linux distros do not contain - # a new enough version of the code to work correctly. However, ChromeOS - # chroots (i.e. real ChromeOS builds for devices) do contain a new enough - # version of the library, and so this variable exists so that ChromeOS can - # build against the system lib and keep binary sizes smaller. - use_system_harfbuzz = true -}
diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn deleted file mode 100644 index 4450e40..0000000 --- a/build/linux/unbundle/icu.gn +++ /dev/null
@@ -1,258 +0,0 @@ -# Copyright 2016 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/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -group("icu") { - public_deps = [ - ":icui18n", - ":icuuc", - ] -} - -config("icu_config") { - defines = [ - "USING_SYSTEM_ICU=1", - "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC", - "UCHAR_TYPE=uint16_t", - - # U_EXPORT (defined in unicode/platform.h) is used to set public visibility - # on classes through the U_COMMON_API and U_I18N_API macros (among others). - # When linking against the system ICU library, we want its symbols to have - # public LTO visibility. This disables CFI checks for the ICU classes and - # allows whole-program optimization to be applied to the rest of Chromium. - # - # Both U_COMMON_API and U_I18N_API macros would be defined to U_EXPORT only - # when U_COMBINED_IMPLEMENTATION is defined (see unicode/utypes.h). Because - # we override the default system UCHAR_TYPE (char16_t), it is not possible - # to use U_COMBINED_IMPLEMENTATION at this moment, meaning the U_COMMON_API - # and U_I18N_API macros are set to U_IMPORT which is an empty definition. - # - # Until building with UCHAR_TYPE=char16_t is supported, one way to apply - # public visibility (and thus public LTO visibility) to all ICU classes is - # to define U_IMPORT to have the same value as U_EXPORT. For more details, - # please see: https://crbug.com/822820 - "U_IMPORT=U_EXPORT", - ] -} - -pkg_config("system_icui18n") { - packages = [ "icu-i18n" ] -} - -pkg_config("system_icuuc") { - packages = [ "icu-uc" ] -} - -source_set("icui18n") { - deps = [ - ":icui18n_shim", - ] - public_configs = [ - ":icu_config", - ":system_icui18n", - ] -} - -source_set("icuuc") { - deps = [ - ":icuuc_shim", - ] - public_configs = [ - ":icu_config", - ":system_icuuc", - ] -} - -shim_headers("icui18n_shim") { - root_path = "source/i18n" - headers = [ - # This list can easily be updated using the commands below: - # cd third_party/icu/source/i18n - # find unicode -iname '*.h' -printf ' "%p",\n' | LC_ALL=C sort -u - "unicode/alphaindex.h", - "unicode/basictz.h", - "unicode/calendar.h", - "unicode/choicfmt.h", - "unicode/coleitr.h", - "unicode/coll.h", - "unicode/compactdecimalformat.h", - "unicode/curramt.h", - "unicode/currpinf.h", - "unicode/currunit.h", - "unicode/datefmt.h", - "unicode/dcfmtsym.h", - "unicode/decimfmt.h", - "unicode/dtfmtsym.h", - "unicode/dtitvfmt.h", - "unicode/dtitvinf.h", - "unicode/dtptngen.h", - "unicode/dtrule.h", - "unicode/fieldpos.h", - "unicode/fmtable.h", - "unicode/format.h", - "unicode/fpositer.h", - "unicode/gender.h", - "unicode/gregocal.h", - "unicode/measfmt.h", - "unicode/measunit.h", - "unicode/measure.h", - "unicode/msgfmt.h", - "unicode/numfmt.h", - "unicode/numsys.h", - "unicode/plurfmt.h", - "unicode/plurrule.h", - "unicode/rbnf.h", - "unicode/rbtz.h", - "unicode/regex.h", - "unicode/region.h", - "unicode/reldatefmt.h", - "unicode/scientificnumberformatter.h", - "unicode/search.h", - "unicode/selfmt.h", - "unicode/simpletz.h", - "unicode/smpdtfmt.h", - "unicode/sortkey.h", - "unicode/stsearch.h", - "unicode/tblcoll.h", - "unicode/timezone.h", - "unicode/tmunit.h", - "unicode/tmutamt.h", - "unicode/tmutfmt.h", - "unicode/translit.h", - "unicode/tzfmt.h", - "unicode/tznames.h", - "unicode/tzrule.h", - "unicode/tztrans.h", - "unicode/ucal.h", - "unicode/ucol.h", - "unicode/ucoleitr.h", - "unicode/ucsdet.h", - "unicode/udat.h", - "unicode/udateintervalformat.h", - "unicode/udatpg.h", - "unicode/ufieldpositer.h", - "unicode/uformattable.h", - "unicode/ugender.h", - "unicode/ulocdata.h", - "unicode/umsg.h", - "unicode/unirepl.h", - "unicode/unum.h", - "unicode/unumsys.h", - "unicode/upluralrules.h", - "unicode/uregex.h", - "unicode/uregion.h", - "unicode/ureldatefmt.h", - "unicode/usearch.h", - "unicode/uspoof.h", - "unicode/utmscale.h", - "unicode/utrans.h", - "unicode/vtzone.h", - ] -} - -shim_headers("icuuc_shim") { - root_path = "source/common" - headers = [ - # This list can easily be updated using the commands below: - # cd third_party/icu/source/common - # find unicode -iname '*.h' -printf ' "%p",\n' | LC_ALL=C sort -u - "unicode/appendable.h", - "unicode/brkiter.h", - "unicode/bytestream.h", - "unicode/bytestrie.h", - "unicode/bytestriebuilder.h", - "unicode/caniter.h", - "unicode/casemap.h", - "unicode/char16ptr.h", - "unicode/chariter.h", - "unicode/dbbi.h", - "unicode/docmain.h", - "unicode/dtintrv.h", - "unicode/edits.h", - "unicode/enumset.h", - "unicode/errorcode.h", - "unicode/filteredbrk.h", - "unicode/icudataver.h", - "unicode/icuplug.h", - "unicode/idna.h", - "unicode/listformatter.h", - "unicode/localpointer.h", - "unicode/locdspnm.h", - "unicode/locid.h", - "unicode/messagepattern.h", - "unicode/normalizer2.h", - "unicode/normlzr.h", - "unicode/parseerr.h", - "unicode/parsepos.h", - "unicode/platform.h", - "unicode/ptypes.h", - "unicode/putil.h", - "unicode/rbbi.h", - "unicode/rep.h", - "unicode/resbund.h", - "unicode/schriter.h", - "unicode/simpleformatter.h", - "unicode/std_string.h", - "unicode/strenum.h", - "unicode/stringpiece.h", - "unicode/stringtriebuilder.h", - "unicode/symtable.h", - "unicode/ubidi.h", - "unicode/ubiditransform.h", - "unicode/ubrk.h", - "unicode/ucasemap.h", - "unicode/ucat.h", - "unicode/uchar.h", - "unicode/ucharstrie.h", - "unicode/ucharstriebuilder.h", - "unicode/uchriter.h", - "unicode/uclean.h", - "unicode/ucnv.h", - "unicode/ucnv_cb.h", - "unicode/ucnv_err.h", - "unicode/ucnvsel.h", - "unicode/uconfig.h", - "unicode/ucurr.h", - "unicode/udata.h", - "unicode/udisplaycontext.h", - "unicode/uenum.h", - "unicode/uidna.h", - "unicode/uiter.h", - "unicode/uldnames.h", - "unicode/ulistformatter.h", - "unicode/uloc.h", - "unicode/umachine.h", - "unicode/umisc.h", - "unicode/unifilt.h", - "unicode/unifunct.h", - "unicode/unimatch.h", - "unicode/uniset.h", - "unicode/unistr.h", - "unicode/unorm.h", - "unicode/unorm2.h", - "unicode/uobject.h", - "unicode/urename.h", - "unicode/urep.h", - "unicode/ures.h", - "unicode/uscript.h", - "unicode/uset.h", - "unicode/usetiter.h", - "unicode/ushape.h", - "unicode/usprep.h", - "unicode/ustring.h", - "unicode/ustringtrie.h", - "unicode/utext.h", - "unicode/utf.h", - "unicode/utf16.h", - "unicode/utf32.h", - "unicode/utf8.h", - "unicode/utf_old.h", - "unicode/utrace.h", - "unicode/utypes.h", - "unicode/uvernum.h", - "unicode/uversion.h", - ] -}
diff --git a/build/linux/unbundle/libdrm.gn b/build/linux/unbundle/libdrm.gn deleted file mode 100644 index 22df98a..0000000 --- a/build/linux/unbundle/libdrm.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2017 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/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -pkg_config("system_libdrm") { - packages = [ "libdrm" ] -} - -shim_headers("libdrm_shim") { - root_path = "src/include" - headers = [ "drm.h" ] -} - -source_set("libdrm") { - deps = [ - ":libdrm_shim", - ] - public_configs = [ ":system_libdrm" ] -}
diff --git a/build/linux/unbundle/libevent.gn b/build/linux/unbundle/libevent.gn deleted file mode 100644 index 47e48e9..0000000 --- a/build/linux/unbundle/libevent.gn +++ /dev/null
@@ -1,17 +0,0 @@ -# Copyright 2016 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/shim_headers.gni") - -shim_headers("libevent_shim") { - root_path = "." - headers = [ "event.h" ] -} - -source_set("libevent") { - deps = [ - ":libevent_shim", - ] - libs = [ "event" ] -}
diff --git a/build/linux/unbundle/libjpeg.gn b/build/linux/unbundle/libjpeg.gn deleted file mode 100644 index 17398ea..0000000 --- a/build/linux/unbundle/libjpeg.gn +++ /dev/null
@@ -1,12 +0,0 @@ -# Copyright 2018 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. - -declare_args() { - # Uses system libjpeg. If true, overrides use_libjpeg_turbo. - use_system_libjpeg = true - - # Uses libjpeg_turbo as the jpeg implementation. Has no effect if - # use_system_libjpeg is set. - use_libjpeg_turbo = true -}
diff --git a/build/linux/unbundle/libpng.gn b/build/linux/unbundle/libpng.gn deleted file mode 100644 index 60f837b..0000000 --- a/build/linux/unbundle/libpng.gn +++ /dev/null
@@ -1,25 +0,0 @@ -# Copyright 2016 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/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -pkg_config("libpng_config") { - packages = [ "libpng" ] -} - -shim_headers("libpng_shim") { - root_path = "." - headers = [ - "png.h", - "pngconf.h", - ] -} - -source_set("libpng") { - deps = [ - ":libpng_shim", - ] - public_configs = [ ":libpng_config" ] -}
diff --git a/build/linux/unbundle/libvpx.gn b/build/linux/unbundle/libvpx.gn deleted file mode 100644 index eb49e75..0000000 --- a/build/linux/unbundle/libvpx.gn +++ /dev/null
@@ -1,34 +0,0 @@ -# Copyright 2016 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/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -pkg_config("system_libvpx") { - packages = [ "vpx" ] -} - -shim_headers("libvpx_shim") { - root_path = "source/libvpx" - headers = [ - "vpx/vp8.h", - "vpx/vp8cx.h", - "vpx/vp8dx.h", - "vpx/vpx_codec.h", - "vpx/vpx_codec_impl_bottom.h", - "vpx/vpx_codec_impl_top.h", - "vpx/vpx_decoder.h", - "vpx/vpx_encoder.h", - "vpx/vpx_frame_buffer.h", - "vpx/vpx_image.h", - "vpx/vpx_integer.h", - ] -} - -source_set("libvpx") { - deps = [ - ":libvpx_shim", - ] - public_configs = [ ":system_libvpx" ] -}
diff --git a/build/linux/unbundle/libwebp.gn b/build/linux/unbundle/libwebp.gn deleted file mode 100644 index ab92ade..0000000 --- a/build/linux/unbundle/libwebp.gn +++ /dev/null
@@ -1,17 +0,0 @@ -# Copyright 2016 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. - -source_set("libwebp_webp") { - libs = [ - "webp", - "webpdemux", - "webpmux", - ] -} - -group("libwebp") { - deps = [ - ":libwebp_webp", - ] -}
diff --git a/build/linux/unbundle/libxml.gn b/build/linux/unbundle/libxml.gn deleted file mode 100644 index c481bd3..0000000 --- a/build/linux/unbundle/libxml.gn +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2016 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/config/linux/pkg_config.gni") - -pkg_config("system_libxml") { - packages = [ "libxml-2.0" ] -} - -static_library("libxml") { - sources = [ - "chromium/libxml_utils.cc", - "chromium/libxml_utils.h", - ] - - public_configs = [ ":system_libxml" ] -}
diff --git a/build/linux/unbundle/libxslt.gn b/build/linux/unbundle/libxslt.gn deleted file mode 100644 index 885574e..0000000 --- a/build/linux/unbundle/libxslt.gn +++ /dev/null
@@ -1,13 +0,0 @@ -# Copyright 2016 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/config/linux/pkg_config.gni") - -pkg_config("system_libxslt") { - packages = [ "libxslt" ] -} - -source_set("libxslt") { - public_configs = [ ":system_libxslt" ] -}
diff --git a/build/linux/unbundle/openh264.gn b/build/linux/unbundle/openh264.gn deleted file mode 100644 index 68ca487..0000000 --- a/build/linux/unbundle/openh264.gn +++ /dev/null
@@ -1,42 +0,0 @@ -# Copyright 2017 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/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -pkg_config("config") { - packages = [ "openh264" ] -} - -shim_headers("openh264_shim") { - prefix = "wels/" - root_path = "src/codec/api/svc" - headers = [ - "codec_api.h", - "codec_app_def.h", - "codec_def.h", - "codec_ver.h", - ] -} - -source_set("common") { - deps = [ - ":openh264_shim", - ] - public_configs = [ ":config" ] -} - -source_set("processing") { - deps = [ - ":openh264_shim", - ] - public_configs = [ ":config" ] -} - -source_set("encoder") { - deps = [ - ":openh264_shim", - ] - public_configs = [ ":config" ] -}
diff --git a/build/linux/unbundle/opus.gn b/build/linux/unbundle/opus.gn deleted file mode 100644 index e998e3e..0000000 --- a/build/linux/unbundle/opus.gn +++ /dev/null
@@ -1,45 +0,0 @@ -# Copyright 2017 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/config/linux/pkg_config.gni") -import("//build/shim_headers.gni") - -pkg_config("opus_config") { - packages = [ "opus" ] -} - -shim_headers("opus_shim") { - root_path = "src/include" - headers = [ - "opus.h", - "opus_defines.h", - "opus_multistream.h", - "opus_types.h", - ] -} - -source_set("opus") { - deps = [ - ":opus_shim", - ] - public_configs = [ ":opus_config" ] -} - -source_set("opus_compare") { -} - -source_set("opus_demo") { -} - -source_set("test_opus_api") { -} - -source_set("test_opus_decode") { -} - -source_set("test_opus_encode") { -} - -source_set("test_opus_padding") { -}
diff --git a/build/linux/unbundle/re2.gn b/build/linux/unbundle/re2.gn deleted file mode 100644 index 94013e5..0000000 --- a/build/linux/unbundle/re2.gn +++ /dev/null
@@ -1,23 +0,0 @@ -# Copyright 2016 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/shim_headers.gni") - -shim_headers("re2_shim") { - root_path = "src" - headers = [ - "re2/filtered_re2.h", - "re2/re2.h", - "re2/set.h", - "re2/stringpiece.h", - "re2/variadic_function.h", - ] -} - -source_set("re2") { - deps = [ - ":re2_shim", - ] - libs = [ "re2" ] -}
diff --git a/build/linux/unbundle/remove_bundled_libraries.py b/build/linux/unbundle/remove_bundled_libraries.py deleted file mode 100755 index 1cf2841..0000000 --- a/build/linux/unbundle/remove_bundled_libraries.py +++ /dev/null
@@ -1,106 +0,0 @@ -#!/usr/bin/env python -# Copyright 2013 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. - -""" -Removes bundled libraries to make sure they are not used. - -See README for more details. -""" - - -import optparse -import os.path -import sys - - -def DoMain(argv): - my_dirname = os.path.abspath(os.path.dirname(__file__)) - source_tree_root = os.path.abspath( - os.path.join(my_dirname, '..', '..', '..')) - - if os.path.join(source_tree_root, 'build', 'linux', 'unbundle') != my_dirname: - print ('Sanity check failed: please run this script from ' + - 'build/linux/unbundle directory.') - return 1 - - parser = optparse.OptionParser() - parser.add_option('--do-remove', action='store_true') - - options, args = parser.parse_args(argv) - - exclusion_used = {} - for exclusion in args: - exclusion_used[exclusion] = False - - for root, dirs, files in os.walk(source_tree_root, topdown=False): - # Only look at paths which contain a "third_party" component - # (note that e.g. third_party.png doesn't count). - root_relpath = os.path.relpath(root, source_tree_root) - if 'third_party' not in root_relpath.split(os.sep): - continue - - for f in files: - path = os.path.join(root, f) - relpath = os.path.relpath(path, source_tree_root) - - excluded = False - for exclusion in args: - # Require precise exclusions. Find the right-most third_party - # in the relative path, and if there is more than one ignore - # the exclusion if it's completely contained within the part - # before right-most third_party path component. - split = relpath.rsplit(os.sep + 'third_party' + os.sep, 1) - if len(split) > 1 and split[0].startswith(exclusion): - continue - - if relpath.startswith(exclusion): - # Multiple exclusions can match the same path. Go through all of them - # and mark each one as used. - exclusion_used[exclusion] = True - excluded = True - if excluded: - continue - - # Deleting gyp files almost always leads to gyp failures. - # These files come from Chromium project, and can be replaced if needed. - if f.endswith('.gyp') or f.endswith('.gypi'): - continue - - # Same about GN files. - if f.endswith('.gn') or f.endswith('.gni'): - continue - - # Deleting .isolate files leads to gyp failures. They are usually - # not used by a distro build anyway. - # See http://www.chromium.org/developers/testing/isolated-testing - # for more info. - if f.endswith('.isolate'): - continue - - if options.do_remove: - # Delete the file - best way to ensure it's not used during build. - os.remove(path) - else: - # By default just print paths that would be removed. - print path - - exit_code = 0 - - # Fail if exclusion list contains stale entries - this helps keep it - # up to date. - for exclusion, used in exclusion_used.iteritems(): - if not used: - print '%s does not exist' % exclusion - exit_code = 1 - - if not options.do_remove: - print ('To actually remove files printed above, please pass ' + - '--do-remove flag.') - - return exit_code - - -if __name__ == '__main__': - sys.exit(DoMain(sys.argv[1:]))
diff --git a/build/linux/unbundle/replace_gn_files.py b/build/linux/unbundle/replace_gn_files.py deleted file mode 100755 index d4d07f2..0000000 --- a/build/linux/unbundle/replace_gn_files.py +++ /dev/null
@@ -1,84 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 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. - -""" -Replaces GN files in tree with files from here that -make the build use system libraries. -""" - -from __future__ import print_function - -import argparse -import os -import shutil -import sys - - -REPLACEMENTS = { - 'ffmpeg': 'third_party/ffmpeg/BUILD.gn', - 'flac': 'third_party/flac/BUILD.gn', - 'fontconfig': 'third_party/fontconfig/BUILD.gn', - 'freetype': 'build/config/freetype/freetype.gni', - 'harfbuzz-ng': 'third_party/harfbuzz-ng/harfbuzz.gni', - 'icu': 'third_party/icu/BUILD.gn', - 'libdrm': 'third_party/libdrm/BUILD.gn', - 'libevent': 'base/third_party/libevent/BUILD.gn', - 'libjpeg': 'third_party/libjpeg.gni', - 'libpng': 'third_party/libpng/BUILD.gn', - 'libvpx': 'third_party/libvpx/BUILD.gn', - 'libwebp': 'third_party/libwebp/BUILD.gn', - 'libxml': 'third_party/libxml/BUILD.gn', - 'libxslt': 'third_party/libxslt/BUILD.gn', - 'openh264': 'third_party/openh264/BUILD.gn', - 'opus': 'third_party/opus/BUILD.gn', - 're2': 'third_party/re2/BUILD.gn', - 'snappy': 'third_party/snappy/BUILD.gn', - 'yasm': 'third_party/yasm/yasm_assemble.gni', - 'zlib': 'third_party/zlib/BUILD.gn', -} - - -def DoMain(argv): - my_dirname = os.path.dirname(__file__) - source_tree_root = os.path.abspath( - os.path.join(my_dirname, '..', '..', '..')) - - parser = argparse.ArgumentParser() - parser.add_argument('--system-libraries', nargs='*', default=[]) - parser.add_argument('--undo', action='store_true') - - args = parser.parse_args(argv) - - handled_libraries = set() - for lib, path in REPLACEMENTS.items(): - if lib not in args.system_libraries: - continue - handled_libraries.add(lib) - - if args.undo: - # Restore original file, and also remove the backup. - # This is meant to restore the source tree to its original state. - os.rename(os.path.join(source_tree_root, path + '.orig'), - os.path.join(source_tree_root, path)) - else: - # Create a backup copy for --undo. - shutil.copyfile(os.path.join(source_tree_root, path), - os.path.join(source_tree_root, path + '.orig')) - - # Copy the GN file from directory of this script to target path. - shutil.copyfile(os.path.join(my_dirname, '%s.gn' % lib), - os.path.join(source_tree_root, path)) - - unhandled_libraries = set(args.system_libraries) - handled_libraries - if unhandled_libraries: - print('Unrecognized system libraries requested: %s' % ', '.join( - sorted(unhandled_libraries)), file=sys.stderr) - return 1 - - return 0 - - -if __name__ == '__main__': - sys.exit(DoMain(sys.argv[1:]))
diff --git a/build/linux/unbundle/snappy.gn b/build/linux/unbundle/snappy.gn deleted file mode 100644 index 9956ef8..0000000 --- a/build/linux/unbundle/snappy.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2016 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/shim_headers.gni") - -shim_headers("snappy_shim") { - root_path = "src" - headers = [ - "snappy-c.h", - "snappy-sinksource.h", - "snappy-stubs-public.h", - "snappy.h", - ] -} - -source_set("snappy") { - deps = [ - ":snappy_shim", - ] - libs = [ "snappy" ] -}
diff --git a/build/linux/unbundle/yasm.gn b/build/linux/unbundle/yasm.gn deleted file mode 100644 index b5b440e..0000000 --- a/build/linux/unbundle/yasm.gn +++ /dev/null
@@ -1,102 +0,0 @@ -# Copyright 2016 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. - -if (current_cpu == "x86") { - _yasm_flags = [ - "-felf32", - "-m", - "x86", - ] -} else if (current_cpu == "x64") { - _yasm_flags = [ - "-DPIC", - "-felf64", - "-m", - "amd64", - ] -} - -template("yasm_assemble") { - action_name = "${target_name}_action" - source_set_name = target_name - - action_foreach(action_name) { - # Only the source set can depend on this. - visibility = [ ":$source_set_name" ] - - script = "//third_party/yasm/run_yasm.py" - sources = invoker.sources - - if (defined(invoker.inputs)) { - inputs = invoker.inputs - } - - deps = [] - if (defined(invoker.deps)) { - deps += invoker.deps - } - - args = [ "yasm" ] + _yasm_flags - if (defined(invoker.yasm_flags)) { - args += invoker.yasm_flags - } - - # User defined include dirs go first. - if (defined(invoker.include_dirs)) { - foreach(include, invoker.include_dirs) { - args += [ "-I" + rebase_path(include, root_build_dir) ] - } - } - - # Default yasm include dirs. Make it match the native build (source root and - # root generated code directory). - # This goes to the end of include list. - args += [ - "-I.", - - # Using "//." will produce a relative path "../.." which looks better than - # "../../" which will result from using "//" as the base (although both - # work). This is because rebase_path will terminate the result in a - # slash if the input ends in a slash. - "-I" + rebase_path("//.", root_build_dir), - "-I" + rebase_path(root_gen_dir, root_build_dir), - ] - - # Extra defines. - if (defined(invoker.defines)) { - foreach(def, invoker.defines) { - args += [ "-D$def" ] - } - } - - # Output file. - outputs = [ - "$target_out_dir/$source_set_name/{{source_name_part}}.o", - ] - args += [ - "-o", - rebase_path(outputs[0], root_build_dir), - "{{source}}", - ] - - # The wrapper script run_yasm will write the depfile to the same name as - # the output but with .d appended (like gcc will). - depfile = outputs[0] + ".d" - } - - # Gather the .o files into a linkable thing. This doesn't actually link - # anything (a source set just compiles files to link later), but will pass - # the object files generated by the action up the dependency chain. - static_library(source_set_name) { - if (defined(invoker.visibility)) { - visibility = invoker.visibility - } - - sources = get_target_outputs(":$action_name") - - deps = [ - ":$action_name", - ] - } -}
diff --git a/build/linux/unbundle/zlib.gn b/build/linux/unbundle/zlib.gn deleted file mode 100644 index 020fc7e..0000000 --- a/build/linux/unbundle/zlib.gn +++ /dev/null
@@ -1,66 +0,0 @@ -# Copyright 2016 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/shim_headers.gni") - -shim_headers("zlib_shim") { - root_path = "." - headers = [ "zlib.h" ] -} - -config("system_zlib") { - defines = [ "USE_SYSTEM_ZLIB=1" ] -} - -source_set("zlib") { - deps = [ - ":zlib_shim", - ] - libs = [ "z" ] - public_configs = [ ":system_zlib" ] -} - -shim_headers("minizip_shim") { - root_path = "contrib" - headers = [ - "minizip/crypt.h", - "minizip/ioapi.h", - "minizip/iowin32.h", - "minizip/mztools.h", - "minizip/unzip.h", - "minizip/zip.h", - ] -} - -source_set("minizip") { - deps = [ - ":minizip_shim", - ] - libs = [ "minizip" ] -} - -static_library("zip") { - sources = [ - "google/zip.cc", - "google/zip.h", - "google/zip_internal.cc", - "google/zip_internal.h", - "google/zip_reader.cc", - "google/zip_reader.h", - ] - deps = [ - ":minizip", - "//base", - ] -} - -static_library("compression_utils") { - sources = [ - "google/compression_utils.cc", - "google/compression_utils.h", - ] - deps = [ - ":zlib", - ] -}
diff --git a/build/mac/OWNERS b/build/mac/OWNERS deleted file mode 100644 index a2d7cc8..0000000 --- a/build/mac/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -mark@chromium.org -rsesek@chromium.org - -# COMPONENT: Build
diff --git a/build/mac/edit_xibs.sh b/build/mac/edit_xibs.sh deleted file mode 100755 index b7b749e..0000000 --- a/build/mac/edit_xibs.sh +++ /dev/null
@@ -1,19 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2012 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. - -# This script is a convenience to run GYP for /src/chrome/chrome_nibs.gyp -# with the Xcode generator (as you likely use ninja). Documentation: -# http://dev.chromium.org/developers/design-documents/mac-xib-files - -set -e - -RELSRC=$(dirname "$0")/../.. -SRC=$(cd "$RELSRC" && pwd) -export PYTHONPATH="$PYTHONPATH:$SRC/build" -export GYP_GENERATORS=xcode -"$SRC/tools/gyp/gyp" -I"$SRC/build/common.gypi" "$SRC/chrome/chrome_nibs.gyp" -echo "You can now edit XIB files in Xcode using:" -echo " $SRC/chrome/chrome_nibs.xcodeproj"
diff --git a/build/mac/find_sdk.py b/build/mac/find_sdk.py deleted file mode 100755 index 540a320..0000000 --- a/build/mac/find_sdk.py +++ /dev/null
@@ -1,105 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -"""Prints the lowest locally available SDK version greater than or equal to a -given minimum sdk version to standard output. If --developer_dir is passed, then -the script will use the Xcode toolchain located at DEVELOPER_DIR. - -Usage: - python find_sdk.py [--developer_dir DEVELOPER_DIR] 10.6 # Ignores SDKs < 10.6 -""" - -import os -import re -import subprocess -import sys - -from optparse import OptionParser - - -class SdkError(Exception): - def __init__(self, value): - self.value = value - def __str__(self): - return repr(self.value) - - -def parse_version(version_str): - """'10.6' => [10, 6]""" - return map(int, re.findall(r'(\d+)', version_str)) - - -def main(): - parser = OptionParser() - parser.add_option("--verify", - action="store_true", dest="verify", default=False, - help="return the sdk argument and warn if it doesn't exist") - parser.add_option("--sdk_path", - action="store", type="string", dest="sdk_path", default="", - help="user-specified SDK path; bypasses verification") - parser.add_option("--print_sdk_path", - action="store_true", dest="print_sdk_path", default=False, - help="Additionally print the path the SDK (appears first).") - parser.add_option("--developer_dir", help='Path to Xcode.') - options, args = parser.parse_args() - if len(args) != 1: - parser.error('Please specify a minimum SDK version') - min_sdk_version = args[0] - - if options.developer_dir: - os.environ['DEVELOPER_DIR'] = options.developer_dir - - job = subprocess.Popen(['xcode-select', '-print-path'], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - out, err = job.communicate() - if job.returncode != 0: - print >> sys.stderr, out - print >> sys.stderr, err - raise Exception('Error %d running xcode-select' % job.returncode) - sdk_dir = os.path.join( - out.rstrip(), 'Platforms/MacOSX.platform/Developer/SDKs') - # Xcode must be installed, its license agreement must be accepted, and its - # command-line tools must be installed. Stand-alone installations (in - # /Library/Developer/CommandLineTools) are not supported. - # https://bugs.chromium.org/p/chromium/issues/detail?id=729990#c1 - if not os.path.isdir(sdk_dir) or not '.app/Contents/Developer' in sdk_dir: - raise SdkError('Install Xcode, launch it, accept the license ' + - 'agreement, and run `sudo xcode-select -s /path/to/Xcode.app` ' + - 'to continue.') - sdks = [re.findall('^MacOSX(10\.\d+)\.sdk$', s) for s in os.listdir(sdk_dir)] - sdks = [s[0] for s in sdks if s] # [['10.5'], ['10.6']] => ['10.5', '10.6'] - sdks = [s for s in sdks # ['10.5', '10.6'] => ['10.6'] - if parse_version(s) >= parse_version(min_sdk_version)] - if not sdks: - raise Exception('No %s+ SDK found' % min_sdk_version) - best_sdk = sorted(sdks, key=parse_version)[0] - - if options.verify and best_sdk != min_sdk_version and not options.sdk_path: - print >> sys.stderr, '' - print >> sys.stderr, ' vvvvvvv' - print >> sys.stderr, '' - print >> sys.stderr, \ - 'This build requires the %s SDK, but it was not found on your system.' \ - % min_sdk_version - print >> sys.stderr, \ - 'Either install it, or explicitly set mac_sdk in your GYP_DEFINES.' - print >> sys.stderr, '' - print >> sys.stderr, ' ^^^^^^^' - print >> sys.stderr, '' - sys.exit(1) - - if options.print_sdk_path: - print subprocess.check_output( - ['xcrun', '-sdk', 'macosx' + best_sdk, '--show-sdk-path']).strip() - - return best_sdk - - -if __name__ == '__main__': - if sys.platform != 'darwin': - raise Exception("This script only runs on Mac") - print main() - sys.exit(0)
diff --git a/build/mac/should_use_hermetic_xcode.py b/build/mac/should_use_hermetic_xcode.py deleted file mode 100755 index 124cf54..0000000 --- a/build/mac/should_use_hermetic_xcode.py +++ /dev/null
@@ -1,42 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 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. - -""" -Prints "1" if Chrome targets should be built with hermetic Xcode. -Prints "2" if Chrome targets should be built with hermetic Xcode, but the OS -version does not meet the minimum requirements of the hermetic version of Xcode. -Otherwise prints "0". - -Usage: - python should_use_hermetic_xcode.py <target_os> -""" - -import os -import sys - -_THIS_DIR_PATH = os.path.abspath(os.path.dirname(os.path.realpath(__file__))) -_BUILD_PATH = os.path.join(_THIS_DIR_PATH, os.pardir) -sys.path.insert(0, _BUILD_PATH) - -import mac_toolchain - - -def _IsCorpMachine(): - return os.path.isdir('/Library/GoogleCorpSupport/') - - -def main(): - allow_corp = sys.argv[1] == 'mac' and _IsCorpMachine() - if os.environ.get('FORCE_MAC_TOOLCHAIN') or allow_corp: - if not mac_toolchain.PlatformMeetsHermeticXcodeRequirements(): - return "2" - return "1" - else: - return "0" - - -if __name__ == '__main__': - print main() - sys.exit(0)
diff --git a/build/mac/tweak_info_plist.gni b/build/mac/tweak_info_plist.gni deleted file mode 100644 index 505f5e5..0000000 --- a/build/mac/tweak_info_plist.gni +++ /dev/null
@@ -1,83 +0,0 @@ -# Copyright 2016 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. - -# Template to run the tweak_info_plist.py script on a plist. -# -# Arguments: -# -# info_plist: -# (optional), string, the plist to tweak. -# -# info_plists: -# (optional), list of string, the plist files to merge and tweak. -# -# args: -# (optional), list of string, the arguments to pass to the -# tweak_info_plist.py script. -# -# Callers should use get_target_outputs() to get the output name. One of -# info_plist or info_plists must be specified. -template("tweak_info_plist") { - _output_name = "$target_gen_dir/${target_name}_tweaked.plist" - - if (defined(invoker.info_plists)) { - assert(!defined(invoker.info_plist), - "Cannot have both info_plist and info_plists for $target_name") - - _source_name = "$target_gen_dir/${target_name}_merged.plist" - _deps = [ ":" + target_name + "_merge_plist" ] - - action(target_name + "_merge_plist") { - forward_variables_from(invoker, [ "testonly" ]) - script = "//build/config/mac/plist_util.py" - sources = invoker.info_plists - outputs = [ - _source_name, - ] - args = [ - "merge", - "-f=xml1", - "-o=" + rebase_path(_source_name, root_build_dir), - ] + rebase_path(invoker.info_plists, root_build_dir) - } - } else { - assert(defined(invoker.info_plist), - "The info_plist must be specified in $target_name") - - _source_name = invoker.info_plist - _deps = [] - } - - action(target_name) { - forward_variables_from(invoker, - [ - "args", - "testonly", - ]) - script = "//build/mac/tweak_info_plist.py" - inputs = [ - script, - "//build/util/version.py", - "//build/util/LASTCHANGE", - "//chrome/VERSION", - ] - sources = [ - _source_name, - ] - outputs = [ - _output_name, - ] - if (!defined(args)) { - args = [] - } - args += [ - "--plist", - rebase_path(_source_name, root_build_dir), - "--output", - rebase_path(_output_name, root_build_dir), - "--platform=$current_os", - ] - deps = _deps - } -}
diff --git a/build/mac/tweak_info_plist.py b/build/mac/tweak_info_plist.py deleted file mode 100755 index 9ea794b..0000000 --- a/build/mac/tweak_info_plist.py +++ /dev/null
@@ -1,366 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2012 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. - -# -# Xcode supports build variable substitutions and CPP; sadly, that doesn't work -# because: -# -# 1. Xcode wants to do the Info.plist work before it runs any build phases, -# this means if we were to generate a .h file for INFOPLIST_PREFIX_HEADER -# we'd have to put it in another target so it runs in time. -# 2. Xcode also doesn't check to see if the header being used as a prefix for -# the Info.plist has changed. So even if we updated it, it's only looking -# at the modtime of the info.plist to see if that's changed. -# -# So, we work around all of this by making a script build phase that will run -# during the app build, and simply update the info.plist in place. This way -# by the time the app target is done, the info.plist is correct. -# - -import optparse -import os -import plistlib -import re -import subprocess -import sys -import tempfile - -TOP = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) - - -def _ConvertPlist(source_plist, output_plist, fmt): - """Convert |source_plist| to |fmt| and save as |output_plist|.""" - return subprocess.call( - ['plutil', '-convert', fmt, '-o', output_plist, source_plist]) - - -def _GetOutput(args): - """Runs a subprocess and waits for termination. Returns (stdout, returncode) - of the process. stderr is attached to the parent.""" - proc = subprocess.Popen(args, stdout=subprocess.PIPE) - (stdout, stderr) = proc.communicate() - return (stdout, proc.returncode) - - -def _GetOutputNoError(args): - """Similar to _GetOutput() but ignores stderr. If there's an error launching - the child (like file not found), the exception will be caught and (None, 1) - will be returned to mimic quiet failure.""" - try: - proc = subprocess.Popen(args, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - except OSError: - return (None, 1) - (stdout, stderr) = proc.communicate() - return (stdout, proc.returncode) - - -def _RemoveKeys(plist, *keys): - """Removes a varargs of keys from the plist.""" - for key in keys: - try: - del plist[key] - except KeyError: - pass - - -def _ApplyVersionOverrides(version, keys, overrides, separator='.'): - """Applies version overrides. - - Given a |version| string as "a.b.c.d" (assuming a default separator) with - version components named by |keys| then overrides any value that is present - in |overrides|. - - >>> _ApplyVersionOverrides('a.b', ['major', 'minor'], {'minor': 'd'}) - 'a.d' - """ - if not overrides: - return version - version_values = version.split(separator) - for i, (key, value) in enumerate(zip(keys, version_values)): - if key in overrides: - version_values[i] = overrides[key] - return separator.join(version_values) - - -def _GetVersion(version_format, values, overrides=None): - """Generates a version number according to |version_format| using the values - from |values| or |overrides| if given.""" - result = version_format - for key in values: - if overrides and key in overrides: - value = overrides[key] - else: - value = values[key] - result = result.replace('@%s@' % key, value) - return result - - -def _AddVersionKeys( - plist, version_format_for_key, version=None, overrides=None): - """Adds the product version number into the plist. Returns True on success and - False on error. The error will be printed to stderr.""" - if not version: - # Pull in the Chrome version number. - VERSION_TOOL = os.path.join(TOP, 'build/util/version.py') - VERSION_FILE = os.path.join(TOP, 'chrome/VERSION') - (stdout, retval) = _GetOutput([ - VERSION_TOOL, '-f', VERSION_FILE, - '-t', '@MAJOR@.@MINOR@.@BUILD@.@PATCH@']) - - # If the command finished with a non-zero return code, then report the - # error up. - if retval != 0: - return False - - version = stdout.strip() - - # Parse the given version number, that should be in MAJOR.MINOR.BUILD.PATCH - # format (where each value is a number). Note that str.isdigit() returns - # True if the string is composed only of digits (and thus match \d+ regexp). - groups = version.split('.') - if len(groups) != 4 or not all(element.isdigit() for element in groups): - print >>sys.stderr, 'Invalid version string specified: "%s"' % version - return False - values = dict(zip(('MAJOR', 'MINOR', 'BUILD', 'PATCH'), groups)) - - for key in version_format_for_key: - plist[key] = _GetVersion(version_format_for_key[key], values, overrides) - - # Return with no error. - return True - - -def _DoSCMKeys(plist, add_keys): - """Adds the SCM information, visible in about:version, to property list. If - |add_keys| is True, it will insert the keys, otherwise it will remove them.""" - scm_revision = None - if add_keys: - # Pull in the Chrome revision number. - VERSION_TOOL = os.path.join(TOP, 'build/util/version.py') - LASTCHANGE_FILE = os.path.join(TOP, 'build/util/LASTCHANGE') - (stdout, retval) = _GetOutput([VERSION_TOOL, '-f', LASTCHANGE_FILE, '-t', - '@LASTCHANGE@']) - if retval: - return False - scm_revision = stdout.rstrip() - - # See if the operation failed. - _RemoveKeys(plist, 'SCMRevision') - if scm_revision != None: - plist['SCMRevision'] = scm_revision - elif add_keys: - print >>sys.stderr, 'Could not determine SCM revision. This may be OK.' - - return True - - -def _AddBreakpadKeys(plist, branding, platform, staging): - """Adds the Breakpad keys. This must be called AFTER _AddVersionKeys() and - also requires the |branding| argument.""" - plist['BreakpadReportInterval'] = '3600' # Deliberately a string. - plist['BreakpadProduct'] = '%s_%s' % (branding, platform) - plist['BreakpadProductDisplay'] = branding - if staging: - plist['BreakpadURL'] = 'https://clients2.google.com/cr/staging_report' - else: - plist['BreakpadURL'] = 'https://clients2.google.com/cr/report' - - # These are both deliberately strings and not boolean. - plist['BreakpadSendAndExit'] = 'YES' - plist['BreakpadSkipConfirm'] = 'YES' - - -def _RemoveBreakpadKeys(plist): - """Removes any set Breakpad keys.""" - _RemoveKeys(plist, - 'BreakpadURL', - 'BreakpadReportInterval', - 'BreakpadProduct', - 'BreakpadProductDisplay', - 'BreakpadVersion', - 'BreakpadSendAndExit', - 'BreakpadSkipConfirm') - - -def _TagSuffixes(): - # Keep this list sorted in the order that tag suffix components are to - # appear in a tag value. That is to say, it should be sorted per ASCII. - components = ('full',) - assert tuple(sorted(components)) == components - - components_len = len(components) - combinations = 1 << components_len - tag_suffixes = [] - for combination in xrange(0, combinations): - tag_suffix = '' - for component_index in xrange(0, components_len): - if combination & (1 << component_index): - tag_suffix += '-' + components[component_index] - tag_suffixes.append(tag_suffix) - return tag_suffixes - - -def _AddKeystoneKeys(plist, bundle_identifier): - """Adds the Keystone keys. This must be called AFTER _AddVersionKeys() and - also requires the |bundle_identifier| argument (com.example.product).""" - plist['KSVersion'] = plist['CFBundleShortVersionString'] - plist['KSProductID'] = bundle_identifier - plist['KSUpdateURL'] = 'https://tools.google.com/service/update2' - - _RemoveKeys(plist, 'KSChannelID') - for tag_suffix in _TagSuffixes(): - if tag_suffix: - plist['KSChannelID' + tag_suffix] = tag_suffix - - -def _RemoveKeystoneKeys(plist): - """Removes any set Keystone keys.""" - _RemoveKeys(plist, - 'KSVersion', - 'KSProductID', - 'KSUpdateURL') - - tag_keys = [] - for tag_suffix in _TagSuffixes(): - tag_keys.append('KSChannelID' + tag_suffix) - _RemoveKeys(plist, *tag_keys) - - -def Main(argv): - parser = optparse.OptionParser('%prog [options]') - parser.add_option('--plist', dest='plist_path', action='store', - type='string', default=None, help='The path of the plist to tweak.') - parser.add_option('--output', dest='plist_output', action='store', - type='string', default=None, help='If specified, the path to output ' + \ - 'the tweaked plist, rather than overwriting the input.') - parser.add_option('--breakpad', dest='use_breakpad', action='store', - type='int', default=False, help='Enable Breakpad [1 or 0]') - parser.add_option('--breakpad_staging', dest='use_breakpad_staging', - action='store_true', default=False, - help='Use staging breakpad to upload reports. Ignored if --breakpad=0.') - parser.add_option('--keystone', dest='use_keystone', action='store', - type='int', default=False, help='Enable Keystone [1 or 0]') - parser.add_option('--scm', dest='add_scm_info', action='store', type='int', - default=True, help='Add SCM metadata [1 or 0]') - parser.add_option('--branding', dest='branding', action='store', - type='string', default=None, help='The branding of the binary') - parser.add_option('--bundle_id', dest='bundle_identifier', - action='store', type='string', default=None, - help='The bundle id of the binary') - parser.add_option('--platform', choices=('ios', 'mac'), default='mac', - help='The target platform of the bundle') - parser.add_option('--version-overrides', action='append', - help='Key-value pair to override specific component of version ' - 'like key=value (can be passed multiple time to configure ' - 'more than one override)') - parser.add_option('--format', choices=('binary1', 'xml1', 'json'), - default='xml1', help='Format to use when writing property list ' - '(default: %(default)s)') - parser.add_option('--version', dest='version', action='store', type='string', - default=None, help='The version string [major.minor.build.patch]') - (options, args) = parser.parse_args(argv) - - if len(args) > 0: - print >>sys.stderr, parser.get_usage() - return 1 - - if not options.plist_path: - print >>sys.stderr, 'No --plist specified.' - return 1 - - # Read the plist into its parsed format. Convert the file to 'xml1' as - # plistlib only supports that format in Python 2.7. - with tempfile.NamedTemporaryFile() as temp_info_plist: - retcode = _ConvertPlist(options.plist_path, temp_info_plist.name, 'xml1') - if retcode != 0: - return retcode - plist = plistlib.readPlist(temp_info_plist.name) - - # Convert overrides. - overrides = {} - if options.version_overrides: - for pair in options.version_overrides: - if not '=' in pair: - print >>sys.stderr, 'Invalid value for --version-overrides:', pair - return 1 - key, value = pair.split('=', 1) - overrides[key] = value - if key not in ('MAJOR', 'MINOR', 'BUILD', 'PATCH'): - print >>sys.stderr, 'Unsupported key for --version-overrides:', key - return 1 - - if options.platform == 'mac': - version_format_for_key = { - # Add public version info so "Get Info" works. - 'CFBundleShortVersionString': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@', - - # Honor the 429496.72.95 limit. The maximum comes from splitting 2^32 - 1 - # into 6, 2, 2 digits. The limitation was present in Tiger, but it could - # have been fixed in later OS release, but hasn't been tested (it's easy - # enough to find out with "lsregister -dump). - # http://lists.apple.com/archives/carbon-dev/2006/Jun/msg00139.html - # BUILD will always be an increasing value, so BUILD_PATH gives us - # something unique that meetings what LS wants. - 'CFBundleVersion': '@BUILD@.@PATCH@', - } - else: - version_format_for_key = { - 'CFBundleShortVersionString': '@MAJOR@.@BUILD@.@PATCH@', - 'CFBundleVersion': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@' - } - - if options.use_breakpad: - version_format_for_key['BreakpadVersion'] = \ - '@MAJOR@.@MINOR@.@BUILD@.@PATCH@' - - # Insert the product version. - if not _AddVersionKeys( - plist, version_format_for_key, version=options.version, - overrides=overrides): - return 2 - - # Add Breakpad if configured to do so. - if options.use_breakpad: - if options.branding is None: - print >>sys.stderr, 'Use of Breakpad requires branding.' - return 1 - # Map "target_os" passed from gn via the --platform parameter - # to the platform as known by breakpad. - platform = {'mac': 'Mac', 'ios': 'iOS'}[options.platform] - _AddBreakpadKeys(plist, options.branding, platform, - options.use_breakpad_staging) - else: - _RemoveBreakpadKeys(plist) - - # Add Keystone if configured to do so. - if options.use_keystone: - if options.bundle_identifier is None: - print >>sys.stderr, 'Use of Keystone requires the bundle id.' - return 1 - _AddKeystoneKeys(plist, options.bundle_identifier) - else: - _RemoveKeystoneKeys(plist) - - # Adds or removes any SCM keys. - if not _DoSCMKeys(plist, options.add_scm_info): - return 3 - - output_path = options.plist_path - if options.plist_output is not None: - output_path = options.plist_output - - # Now that all keys have been mutated, rewrite the file. - with tempfile.NamedTemporaryFile() as temp_info_plist: - plistlib.writePlist(plist, temp_info_plist.name) - - # Convert Info.plist to the format requested by the --format flag. Any - # format would work on Mac but iOS requires specific format. - return _ConvertPlist(temp_info_plist.name, output_path, options.format) - - -if __name__ == '__main__': - sys.exit(Main(sys.argv[1:]))
diff --git a/build/mac_toolchain.py b/build/mac_toolchain.py deleted file mode 100755 index 24ee355..0000000 --- a/build/mac_toolchain.py +++ /dev/null
@@ -1,169 +0,0 @@ -#!/usr/bin/env python -# Copyright 2018 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. - -""" -If should_use_hermetic_xcode.py emits "1", and the current toolchain is out of -date: - * Downloads the hermetic mac toolchain - * Requires CIPD authentication. Run `cipd auth-login`, use Google account. - * Accepts the license. - * If xcode-select and xcodebuild are not passwordless in sudoers, requires - user interaction. - -The toolchain version can be overridden by setting MAC_TOOLCHAIN_REVISION with -the full revision, e.g. 9A235. -""" - -import os -import platform -import shutil -import subprocess -import sys - - -# This can be changed after running: -# mac_toolchain upload -xcode-path path/to/Xcode.app -MAC_TOOLCHAIN_VERSION = '8E2002' - -# The toolchain will not be downloaded if the minimum OS version is not met. -# 16 is the major version number for macOS 10.12. -MAC_MINIMUM_OS_VERSION = 16 - -MAC_TOOLCHAIN_INSTALLER = 'mac_toolchain' - -# Absolute path to src/ directory. -REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -# Absolute path to a file with gclient solutions. -GCLIENT_CONFIG = os.path.join(os.path.dirname(REPO_ROOT), '.gclient') - -BASE_DIR = os.path.abspath(os.path.dirname(__file__)) -TOOLCHAIN_ROOT = os.path.join(BASE_DIR, 'mac_files') -TOOLCHAIN_BUILD_DIR = os.path.join(TOOLCHAIN_ROOT, 'Xcode.app') -STAMP_FILE = os.path.join(TOOLCHAIN_ROOT, 'toolchain_build_revision') - - -def PlatformMeetsHermeticXcodeRequirements(): - return int(platform.release().split('.')[0]) >= MAC_MINIMUM_OS_VERSION - - -def _UseHermeticToolchain(): - current_dir = os.path.dirname(os.path.realpath(__file__)) - script_path = os.path.join(current_dir, 'mac/should_use_hermetic_xcode.py') - proc = subprocess.Popen([script_path, 'mac'], stdout=subprocess.PIPE) - return '1' in proc.stdout.readline() - - -def RequestCipdAuthentication(): - """Requests that the user authenticate to access Xcode CIPD packages.""" - - print 'Access to Xcode CIPD package requires authentication.' - print '-----------------------------------------------------------------' - print - print 'You appear to be a Googler.' - print - print 'I\'m sorry for the hassle, but you may need to do a one-time manual' - print 'authentication. Please run:' - print - print ' cipd auth-login' - print - print 'and follow the instructions.' - print - print 'NOTE: Use your google.com credentials, not chromium.org.' - print - print '-----------------------------------------------------------------' - print - sys.stdout.flush() - - -def PrintError(message): - # Flush buffers to ensure correct output ordering. - sys.stdout.flush() - sys.stderr.write(message + '\n') - sys.stderr.flush() - - -def InstallXcode(xcode_build_version, installer_cmd, xcode_app_path): - """Installs the requested Xcode build version. - - Args: - xcode_build_version: (string) Xcode build version to install. - installer_cmd: (string) Path to mac_toolchain command to install Xcode. - See https://chromium.googlesource.com/infra/infra/+/master/go/src/infra/cmd/mac_toolchain/ - xcode_app_path: (string) Path to install the contents of Xcode.app. - - Returns: - True if installation was successful. False otherwise. - """ - args = [ - installer_cmd, 'install', - '-kind', 'mac', - '-xcode-version', xcode_build_version.lower(), - '-output-dir', xcode_app_path, - ] - - # Buildbot slaves need to use explicit credentials. LUCI bots should NOT set - # this variable. - creds = os.environ.get('MAC_TOOLCHAIN_CREDS') - if creds: - args.extend(['--service-account-json', creds]) - - try: - subprocess.check_call(args) - except subprocess.CalledProcessError as e: - PrintError('Xcode build version %s failed to install: %s\n' % ( - xcode_build_version, e)) - RequestCipdAuthentication() - return False - except OSError as e: - PrintError(('Xcode installer "%s" failed to execute' - ' (not on PATH or not installed).') % installer_cmd) - return False - - return True - - -def main(): - if sys.platform != 'darwin': - return 0 - - if not _UseHermeticToolchain(): - print 'Skipping Mac toolchain installation for mac' - return 0 - - if not PlatformMeetsHermeticXcodeRequirements(): - print 'OS version does not support toolchain.' - return 0 - - toolchain_version = os.environ.get('MAC_TOOLCHAIN_REVISION', - MAC_TOOLCHAIN_VERSION) - - # On developer machines, mac_toolchain tool is provided by - # depot_tools. On the bots, the recipe is responsible for installing - # it and providing the path to the executable. - installer_cmd = os.environ.get('MAC_TOOLCHAIN_INSTALLER', - MAC_TOOLCHAIN_INSTALLER) - - toolchain_root = TOOLCHAIN_ROOT - xcode_app_path = TOOLCHAIN_BUILD_DIR - stamp_file = STAMP_FILE - - # Delete the old "hermetic" installation if detected. - # TODO(crbug.com/797051): remove this once the old "hermetic" solution is no - # longer in use. - if os.path.exists(stamp_file): - print 'Detected old hermetic installation at %s. Deleting.' % ( - toolchain_root) - shutil.rmtree(toolchain_root) - - success = InstallXcode(toolchain_version, installer_cmd, xcode_app_path) - if not success: - return 1 - - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/nocompile.gni b/build/nocompile.gni deleted file mode 100644 index be6e5af..0000000 --- a/build/nocompile.gni +++ /dev/null
@@ -1,109 +0,0 @@ -# Copyright (c) 2011 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. - -# This file is meant to be included into an target to create a unittest that -# invokes a set of no-compile tests. A no-compile test is a test that asserts -# a particular construct will not compile. -# -# Also see: -# http://dev.chromium.org/developers/testing/no-compile-tests -# -# To use this, create a gyp target with the following form: -# -# import("//build/nocompile.gni") -# nocompile_test("my_module_nc_unittests") { -# sources = [ -# 'nc_testset_1.nc', -# 'nc_testset_2.nc', -# ] -# } -# -# The .nc files are C++ files that contain code we wish to assert will not -# compile. Each individual test case in the file should be put in its own -# #ifdef section. The expected output should be appended with a C++-style -# comment that has a python list of regular expressions. This will likely -# be greater than 80-characters. Giving a solid expected output test is -# important so that random compile failures do not cause the test to pass. -# -# Example .nc file: -# -# #if defined(TEST_NEEDS_SEMICOLON) // [r"expected ',' or ';' at end of input"] -# -# int a = 1 -# -# #elif defined(TEST_NEEDS_CAST) // [r"invalid conversion from 'void*' to 'char*'"] -# -# void* a = NULL; -# char* b = a; -# -# #endif -# -# If we needed disable TEST_NEEDS_SEMICOLON, then change the define to: -# -# DISABLE_TEST_NEEDS_SEMICOLON -# TEST_NEEDS_CAST -# -# The lines above are parsed by a regexp so avoid getting creative with the -# formatting or ifdef logic; it will likely just not work. -# -# Implementation notes: -# The .nc files are actually processed by a python script which executes the -# compiler and generates a .cc file that is empty on success, or will have a -# series of #error lines on failure, and a set of trivially passing gunit -# TEST() functions on success. This allows us to fail at the compile step when -# something goes wrong, and know during the unittest run that the test was at -# least processed when things go right. - -import("//testing/test.gni") - -declare_args() { - # TODO(crbug.com/105388): make sure no-compile test is not flaky. - enable_nocompile_tests = - (is_linux || is_mac || is_ios) && is_clang && host_cpu == target_cpu -} - -if (enable_nocompile_tests) { - import("//build/config/sysroot.gni") - import("//build/config/c++/c++.gni") - template("nocompile_test") { - nocompile_target = target_name + "_run_nocompile" - - action_foreach(nocompile_target) { - script = "//tools/nocompile_driver.py" - sources = invoker.sources - - result_path = "$target_gen_dir/{{source_name_part}}_nc.cc" - depfile = "${result_path}.d" - outputs = [ - result_path, - ] - args = [ - "4", # number of compilers to invoke in parallel. - "{{source}}", - rebase_path(result_path, root_build_dir), - "--", - "-nostdinc++", - "-isystem" + rebase_path("$libcxx_prefix/include", root_build_dir), - "-isystem" + rebase_path("$libcxxabi_prefix/include", root_build_dir), - "-std=c++14", - "-Wall", - "-Werror", - "-Wfatal-errors", - "-Wthread-safety", - "-I" + rebase_path("//", root_build_dir), - ] - if (sysroot != "") { - args += [ - "--sysroot", - rebase_path(sysroot, root_build_dir), - ] - } - } - - test(target_name) { - deps = invoker.deps + [ ":$nocompile_target" ] - sources = get_target_outputs(":$nocompile_target") - } - } -}
diff --git a/build/package_mac_toolchain.py b/build/package_mac_toolchain.py deleted file mode 100755 index 48672bb..0000000 --- a/build/package_mac_toolchain.py +++ /dev/null
@@ -1,145 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 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. - -"""Compress and upload Mac toolchain files. - -Stored in in https://pantheon.corp.google.com/storage/browser/chrome-mac-sdk/. -""" - -import argparse -import glob -import os -import plistlib -import re -import subprocess -import sys -import tarfile -import tempfile - - -TOOLCHAIN_URL = "gs://chrome-mac-sdk" - -# It's important to at least remove unused Platform folders to cut down on the -# size of the toolchain folder. There are other various unused folders that -# have been removed through trial and error. If future versions of Xcode become -# problematic it's possible this list is incorrect, and can be reduced to just -# the unused platforms. On the flip side, it's likely more directories can be -# excluded. -DEFAULT_EXCLUDE_FOLDERS = [ -'Contents/Applications', -'Contents/Developer/Documentation', -'Contents/Developer/Library/Xcode/Templates', -'Contents/Developer/Platforms/AppleTVOS.platform', -'Contents/Developer/Platforms/AppleTVSimulator.platform', -'Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/' - 'usr/share/man/', -'Contents/Developer/Platforms/WatchOS.platform', -'Contents/Developer/Platforms/WatchSimulator.platform', -'Contents/Developer/Toolchains/Swift*', -'Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift', -'Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator', -'Contents/Resources/Packages/MobileDevice.pkg', -] - -MAC_EXCLUDE_FOLDERS = [ -# The only thing we need in iPhoneOS.platform on mac is: -# \Developer\Library\Xcode\PrivatePlugins -# \Info.Plist. -# This is the cleanest way to get these. -'Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks', -'Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/GPUTools', -'Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/' - 'GPUToolsPlatform', -'Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/' - 'PrivateFrameworks', -'Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr', -'Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs', -'Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport', -'Contents/Developer/Platforms/iPhoneOS.platform/Library', -'Contents/Developer/Platforms/iPhoneOS.platform/usr', - -# iPhoneSimulator has a similar requirement, but the bulk of the binary size is -# in \Developer\SDKs, so only excluding that here. -'Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs', -] - -IOS_EXCLUDE_FOLDERS = [ -'Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/' -'Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/' - 'iPhoneSimulator.sdk/Applications/', -'Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/' - 'iPhoneSimulator.sdk/System/Library/AccessibilityBundles/', -'Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/' - 'iPhoneSimulator.sdk/System/Library/CoreServices/', -'Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/' - 'iPhoneSimulator.sdk/System/Library/LinguisticData/', -] - -def main(): - """Compress |target_dir| and upload to |TOOLCHAIN_URL|""" - parser = argparse.ArgumentParser() - parser.add_argument('target_dir', - help="Xcode installation directory.") - parser.add_argument('platform', choices=['ios', 'mac'], - help="Target platform for bundle.") - parser_args = parser.parse_args() - - # Verify this looks like an Xcode directory. - contents_dir = os.path.join(parser_args.target_dir, 'Contents') - plist_file = os.path.join(contents_dir, 'version.plist') - try: - info = plistlib.readPlist(plist_file) - except: - print "Invalid Xcode dir." - return 0 - build_version = info['ProductBuildVersion'] - - # Look for previous toolchain tgz files with the same |build_version|. - fname = 'toolchain' - if parser_args.platform == 'ios': - fname = 'ios-' + fname - wildcard_filename = '%s/%s-%s-*.tgz' % (TOOLCHAIN_URL, fname, build_version) - p = subprocess.Popen(['gsutil.py', 'ls', wildcard_filename], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - output = p.communicate()[0] - next_count = 1 - if p.returncode == 0: - next_count = len(output.split('\n')) - sys.stdout.write("%s already exists (%s). " - "Do you want to create another? [y/n] " - % (build_version, next_count - 1)) - - if raw_input().lower() not in set(['yes','y', 'ye']): - print "Skipping duplicate upload." - return 0 - - os.chdir(parser_args.target_dir) - toolchain_file_name = "%s-%s-%s" % (fname, build_version, next_count) - toolchain_name = tempfile.mktemp(suffix='toolchain.tgz') - - print "Creating %s (%s)." % (toolchain_file_name, toolchain_name) - os.environ["COPYFILE_DISABLE"] = "1" - os.environ["GZ_OPT"] = "-8" - args = ['tar', '-cvzf', toolchain_name] - exclude_folders = DEFAULT_EXCLUDE_FOLDERS - if parser_args.platform == 'mac': - exclude_folders += MAC_EXCLUDE_FOLDERS - else: - exclude_folders += IOS_EXCLUDE_FOLDERS - args.extend(map('--exclude={0}'.format, exclude_folders)) - args.extend(['.']) - subprocess.check_call(args) - - print "Uploading %s toolchain." % toolchain_file_name - destination_path = '%s/%s.tgz' % (TOOLCHAIN_URL, toolchain_file_name) - subprocess.check_call(['gsutil.py', 'cp', '-n', toolchain_name, - destination_path]) - - print "Done with %s upload." % toolchain_file_name - return 0 - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/precompile.cc b/build/precompile.cc deleted file mode 100644 index db1ef6d..0000000 --- a/build/precompile.cc +++ /dev/null
@@ -1,7 +0,0 @@ -// Copyright (c) 2011 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. - -// Precompiled header generator for Windows builds. No include is needed -// in this file as the PCH include is forced via the "Forced Include File" -// flag in the projects generated by GYP.
diff --git a/build/precompile.h b/build/precompile.h deleted file mode 100644 index c699562..0000000 --- a/build/precompile.h +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright (c) 2012 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. - -// This file is used as a precompiled header for both C and C++ files. So -// any C++ headers must go in the __cplusplus block below. - -#if defined(BUILD_PRECOMPILE_H_) -#error You shouldn't include the precompiled header file more than once. -#endif - -#define BUILD_PRECOMPILE_H_ - -#include <errno.h> -#include <fcntl.h> -#include <limits.h> -#include <math.h> -#include <memory.h> -#include <signal.h> -#include <stdarg.h> -#include <stddef.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> - -#if defined(__cplusplus) - -#include <algorithm> -#include <bitset> -#include <cmath> -#include <cstddef> -#include <cstdio> -#include <cstdlib> -#include <cstring> -#include <fstream> -#include <functional> -#include <iomanip> -#include <iosfwd> -#include <iterator> -#include <limits> -#include <list> -#include <map> -#include <numeric> -#include <ostream> -#include <queue> -#include <set> -#include <sstream> -#include <string> -#include <utility> -#include <vector> - -#endif // __cplusplus
diff --git a/build/print_python_deps.py b/build/print_python_deps.py deleted file mode 100755 index fe71c4a..0000000 --- a/build/print_python_deps.py +++ /dev/null
@@ -1,107 +0,0 @@ -#!/usr/bin/env vpython -# Copyright 2016 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. - -"""Prints all non-system dependencies for the given module. - -The primary use-case for this script is to genererate the list of python modules -required for .isolate files. -""" - -import argparse -import imp -import os -import pipes -import sys - -# Don't use any helper modules, or else they will end up in the results. - - -_SRC_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) - - -def _ComputePythonDependencies(): - """Gets the paths of imported non-system python modules. - - A path is assumed to be a "system" import if it is outside of chromium's - src/. The paths will be relative to the current directory. - """ - module_paths = (m.__file__ for m in sys.modules.values() - if m and hasattr(m, '__file__')) - - src_paths = set() - for path in module_paths: - if path == __file__: - continue - path = os.path.abspath(path) - if not path.startswith(_SRC_ROOT): - continue - - if (path.endswith('.pyc') - or (path.endswith('c') and not os.path.splitext(path)[1])): - path = path[:-1] - src_paths.add(path) - - return src_paths - - -def _NormalizeCommandLine(options): - """Returns a string that when run from SRC_ROOT replicates the command.""" - args = ['build/print_python_deps.py'] - root = os.path.relpath(options.root, _SRC_ROOT) - if root != '.': - args.extend(('--root', root)) - if options.output: - args.extend(('--output', os.path.relpath(options.output, _SRC_ROOT))) - for whitelist in sorted(options.whitelists): - args.extend(('--whitelist', os.path.relpath(whitelist, _SRC_ROOT))) - args.append(os.path.relpath(options.module, _SRC_ROOT)) - return ' '.join(pipes.quote(x) for x in args) - - -def _FindPythonInDirectory(directory): - """Returns an iterable of all non-test python files in the given directory.""" - files = [] - for root, _dirnames, filenames in os.walk(directory): - for filename in filenames: - if filename.endswith('.py') and not filename.endswith('_test.py'): - yield os.path.join(root, filename) - - -def main(): - parser = argparse.ArgumentParser( - description='Prints all non-system dependencies for the given module.') - parser.add_argument('module', - help='The python module to analyze.') - parser.add_argument('--root', default='.', - help='Directory to make paths relative to.') - parser.add_argument('--output', - help='Write output to a file rather than stdout.') - parser.add_argument('--whitelist', default=[], action='append', - dest='whitelists', - help='Recursively include all non-test python files ' - 'within this directory. May be specified multiple times.') - options = parser.parse_args() - # Replace the path entry for print_python_deps.py with the one for the given - # module. - sys.path[0] = os.path.dirname(options.module) - imp.load_source('NAME', options.module) - - paths_set = _ComputePythonDependencies() - for path in options.whitelists: - paths_set.update(os.path.abspath(p) for p in _FindPythonInDirectory(path)) - - paths = [os.path.relpath(p, options.root) for p in paths_set] - - normalized_cmdline = _NormalizeCommandLine(options) - out = open(options.output, 'w') if options.output else sys.stdout - with out: - out.write('# Generated by running:\n') - out.write('# %s\n' % normalized_cmdline) - for path in sorted(paths): - out.write(path + '\n') - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/protoc_java.py b/build/protoc_java.py deleted file mode 100755 index 2addb82..0000000 --- a/build/protoc_java.py +++ /dev/null
@@ -1,85 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -"""Generate java source files from protobuf files. - -This is a helper file for the genproto_java action in protoc_java.gypi. - -It performs the following steps: -1. Deletes all old sources (ensures deleted classes are not part of new jars). -2. Creates source directory. -3. Generates Java files using protoc (output into either --java-out-dir or - --srcjar). -4. Creates a new stamp file. -""" - -import os -import optparse -import shutil -import subprocess -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), "android", "gyp")) -from util import build_utils - -def main(argv): - parser = optparse.OptionParser() - build_utils.AddDepfileOption(parser) - parser.add_option("--protoc", help="Path to protoc binary.") - parser.add_option("--proto-path", help="Path to proto directory.") - parser.add_option("--java-out-dir", - help="Path to output directory for java files.") - parser.add_option("--srcjar", help="Path to output srcjar.") - parser.add_option("--stamp", help="File to touch on success.") - parser.add_option("--nano", - help="Use to generate nano protos.", action='store_true') - options, args = parser.parse_args(argv) - - build_utils.CheckOptions(options, parser, ['protoc', 'proto_path']) - if not options.java_out_dir and not options.srcjar: - print 'One of --java-out-dir or --srcjar must be specified.' - return 1 - - with build_utils.TempDir() as temp_dir: - if options.nano: - # Specify arguments to the generator. - generator_args = ['optional_field_style=reftypes', - 'store_unknown_fields=true'] - out_arg = '--javanano_out=' + ','.join(generator_args) + ':' + temp_dir - else: - out_arg = '--java_out=' + temp_dir - - # Check if all proto files (which are listed in the args) are opting to - # use the lite runtime, otherwise we'd have to include the much heavier - # regular proto runtime in Chrome. - # TODO(jkrcal): Replace this check by '--java_lite_out=' for the out_arg - # above once this works on the master branch of the protobuf library, - # expected in version 4.0 (see https://crbug.com/800281). - for proto_file in args: - if not 'LITE_RUNTIME' in open(proto_file).read(): - raise Exception( - 'Chrome only supports lite protos. Please add "optimize_for = ' - 'LITE_RUNTIME" to your proto file to enable the lite runtime.') - # Generate Java files using protoc. - build_utils.CheckOutput( - [options.protoc, '--proto_path', options.proto_path, out_arg] - + args) - - if options.java_out_dir: - build_utils.DeleteDirectory(options.java_out_dir) - shutil.copytree(temp_dir, options.java_out_dir) - else: - build_utils.ZipDir(options.srcjar, temp_dir) - - if options.depfile: - assert options.srcjar - deps = args + [options.protoc] - build_utils.WriteDepfile(options.depfile, options.srcjar, deps) - - if options.stamp: - build_utils.Touch(options.stamp) - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:]))
diff --git a/build/redirect_stdout.py b/build/redirect_stdout.py deleted file mode 100644 index 72d0732..0000000 --- a/build/redirect_stdout.py +++ /dev/null
@@ -1,19 +0,0 @@ -# Copyright 2016 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 subprocess -import sys - -# This script executes a command and redirects the stdout to a file. This is -# equivalent to |command... > output_file|. -# -# Usage: python redirect_stdout.py output_file command... - -if __name__ == '__main__': - if len(sys.argv) < 2: - print >> sys.stderr, "Usage: %s output_file command..." % (sys.argv[0]) - sys.exit(1) - - with open(sys.argv[1], 'w') as fp: - sys.exit(subprocess.check_call(sys.argv[2:], stdout=fp))
diff --git a/build/rm.py b/build/rm.py deleted file mode 100755 index 5ca642d..0000000 --- a/build/rm.py +++ /dev/null
@@ -1,38 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2016 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. - -"""Delete a file. - -This module works much like the rm posix command. -""" - -import argparse -import os -import sys - - -def Main(): - parser = argparse.ArgumentParser() - parser.add_argument('files', nargs='+') - parser.add_argument('-f', '--force', action='store_true', - help="don't err on missing") - parser.add_argument('--stamp', required=True, help='touch this file') - args = parser.parse_args() - for f in args.files: - try: - os.remove(f) - except OSError: - if not args.force: - print >>sys.stderr, "'%s' does not exist" % f - return 1 - - with open(args.stamp, 'w'): - os.utime(args.stamp, None) - - return 0 - - -if __name__ == '__main__': - sys.exit(Main())
diff --git a/build/run_swarming_xcode_install.py b/build/run_swarming_xcode_install.py deleted file mode 100755 index a731c1b..0000000 --- a/build/run_swarming_xcode_install.py +++ /dev/null
@@ -1,81 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -""" -This script runs swarming_xcode_install on the bots. It should be run when we -need to upgrade all the swarming testers. It: - 1) Packages two python files into an isolate. - 2) Runs the isolate on swarming machines that satisfy certain dimensions. - -Example usage: - $ ./build/run_swarming_xcode_install.py --luci_path ~/work/luci-py \ - --swarming-server touch-swarming.appspot.com \ - --isolate-server touch-isolate.appspot.com -""" - -import argparse -import os -import shutil -import subprocess -import sys -import tempfile - - -def main(): - parser = argparse.ArgumentParser( - description='Run swarming_xcode_install on the bots.') - parser.add_argument('--luci_path', required=True, type=os.path.abspath) - parser.add_argument('--swarming-server', required=True, type=str) - parser.add_argument('--isolate-server', required=True, type=str) - parser.add_argument('--batches', type=int, default=25, - help="Run xcode install in batches of size |batches|.") - parser.add_argument('--dimension', nargs=2, action='append') - args = parser.parse_args() - - args.dimension = args.dimension or [] - - script_dir = os.path.dirname(os.path.abspath(__file__)) - tmp_dir = tempfile.mkdtemp(prefix='swarming_xcode') - try: - print 'Making isolate.' - shutil.copyfile(os.path.join(script_dir, 'swarming_xcode_install.py'), - os.path.join(tmp_dir, 'swarming_xcode_install.py')) - shutil.copyfile(os.path.join(script_dir, 'mac_toolchain.py'), - os.path.join(tmp_dir, 'mac_toolchain.py')) - - luci_client = os.path.join(args.luci_path, 'client') - cmd = [ - sys.executable, os.path.join(luci_client, 'isolateserver.py'), 'archive', - '-I', args.isolate_server, tmp_dir, - ] - isolate_hash = subprocess.check_output(cmd).split()[0] - - print 'Running swarming_xcode_install.' - # TODO(crbug.com/765361): The dimensions below should be updated once - # swarming for iOS is fleshed out, likely removing xcode_version 9 and - # adding different dimensions. - luci_tools = os.path.join(luci_client, 'tools') - dimensions = [['pool', 'Chrome'], ['xcode_version', '9.0']] + args.dimension - dim_args = [] - for d in dimensions: - dim_args += ['--dimension'] + d - cmd = [ - sys.executable, os.path.join(luci_tools, 'run_on_bots.py'), - '--swarming', args.swarming_server, '--isolate-server', - args.isolate_server, '--priority', '20', '--batches', str(args.batches), - '--tags', 'name:run_swarming_xcode_install', - ] + dim_args + ['--name', 'run_swarming_xcode_install', '--', isolate_hash, - 'python', 'swarming_xcode_install.py', - ] - subprocess.check_call(cmd) - print 'All tasks completed.' - - finally: - shutil.rmtree(tmp_dir) - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/sample_arg_file.gn b/build/sample_arg_file.gn deleted file mode 100644 index 91e9045..0000000 --- a/build/sample_arg_file.gn +++ /dev/null
@@ -1,6 +0,0 @@ -# Build arguments go here. Here are some of the most commonly set ones. -# Run `gn args <out_dir> --list` for the full list. -# is_component_build = true -# is_debug = true -# symbol_level = 2 -# use_goma = false
diff --git a/build/sanitize-mac-build-log.sed b/build/sanitize-mac-build-log.sed deleted file mode 100644 index b4111c7..0000000 --- a/build/sanitize-mac-build-log.sed +++ /dev/null
@@ -1,33 +0,0 @@ -# Copyright (c) 2012 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. - -# Use this sed script to reduce a Mac build log into something readable. - -# Drop uninformative lines. -/^distcc/d -/^Check dependencies/d -/^ setenv /d -/^ cd /d -/^make: Nothing to be done/d -/^$/d - -# Xcode prints a short "compiling foobar.o" line followed by the lengthy -# full command line. These deletions drop the command line. -\|^ /Developer/usr/bin/|d -\|^ /Developer/Library/PrivateFrameworks/DevToolsCore\.framework/|d -\|^ /Developer/Library/Xcode/Plug-ins/CoreBuildTasks\.xcplugin/|d - -# Drop any goma command lines as well. -\|^ .*/gomacc |d - -# And, if you've overridden something from your own bin directory, remove those -# full command lines, too. -\|^ /Users/[^/]*/bin/|d - -# There's already a nice note for bindings, don't need the command line. -\|^python scripts/rule_binding\.py|d - -# Shorten the "compiling foobar.o" line. -s|^Distributed-CompileC (.*) normal i386 c\+\+ com\.apple\.compilers\.gcc\.4_2| CC \1| -s|^CompileC (.*) normal i386 c\+\+ com\.apple\.compilers\.gcc\.4_2| CC \1|
diff --git a/build/sanitize-mac-build-log.sh b/build/sanitize-mac-build-log.sh deleted file mode 100755 index df5a7af..0000000 --- a/build/sanitize-mac-build-log.sh +++ /dev/null
@@ -1,5 +0,0 @@ -#!/bin/sh -# Copyright (c) 2010 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. -sed -r -f `dirname "${0}"`/`basename "${0}" sh`sed
diff --git a/build/sanitize-win-build-log.sed b/build/sanitize-win-build-log.sed deleted file mode 100644 index c18e664..0000000 --- a/build/sanitize-win-build-log.sed +++ /dev/null
@@ -1,15 +0,0 @@ -# Copyright (c) 2012 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. - -# Use this sed script to reduce a Windows build log into something -# machine-parsable. - -# Drop uninformative lines. -/The operation completed successfully\./d - -# Drop parallelization indicators on lines. -s/^[0-9]+>// - -# Shorten bindings generation lines -s/^.*"python".*idl_compiler\.py".*("[^"]+\.idl").*$/ idl_compiler \1/
diff --git a/build/sanitize-win-build-log.sh b/build/sanitize-win-build-log.sh deleted file mode 100755 index df5a7af..0000000 --- a/build/sanitize-win-build-log.sh +++ /dev/null
@@ -1,5 +0,0 @@ -#!/bin/sh -# Copyright (c) 2010 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. -sed -r -f `dirname "${0}"`/`basename "${0}" sh`sed
diff --git a/build/sanitizers/OWNERS b/build/sanitizers/OWNERS deleted file mode 100644 index 3059b0e..0000000 --- a/build/sanitizers/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -glider@chromium.org -eugenis@chromium.org -per-file tsan_suppressions.cc=* -per-file lsan_suppressions.cc=*
diff --git a/build/sanitizers/asan_suppressions.cc b/build/sanitizers/asan_suppressions.cc deleted file mode 100644 index df94bc8..0000000 --- a/build/sanitizers/asan_suppressions.cc +++ /dev/null
@@ -1,23 +0,0 @@ -// 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. - -// This file contains the default suppressions for AddressSanitizer. -// It should only be used under very limited circumstances such as suppressing -// a report caused by an interceptor call in a system-installed library. - -#if defined(ADDRESS_SANITIZER) - -// Please make sure the code below declares a single string variable -// kASanDefaultSuppressions which contains ASan suppressions delimited by -// newlines. -char kASanDefaultSuppressions[] = -// http://crbug.com/178677 -"interceptor_via_lib:libsqlite3.so\n" - -// PLEASE READ ABOVE BEFORE ADDING NEW SUPPRESSIONS. - -// End of suppressions. -; // Please keep this semicolon. - -#endif // ADDRESS_SANITIZER
diff --git a/build/sanitizers/lsan_suppressions.cc b/build/sanitizers/lsan_suppressions.cc deleted file mode 100644 index a64f998..0000000 --- a/build/sanitizers/lsan_suppressions.cc +++ /dev/null
@@ -1,108 +0,0 @@ -// 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. - -// This file contains the default suppressions for LeakSanitizer. -// You can also pass additional suppressions via LSAN_OPTIONS: -// LSAN_OPTIONS=suppressions=/path/to/suppressions. Please refer to -// http://dev.chromium.org/developers/testing/leaksanitizer for more info. - -#if defined(LEAK_SANITIZER) - -// Please make sure the code below declares a single string variable -// kLSanDefaultSuppressions which contains LSan suppressions delimited by -// newlines. See http://dev.chromium.org/developers/testing/leaksanitizer -// for the instructions on writing suppressions. -char kLSanDefaultSuppressions[] = - // Intentional leak used as sanity test for Valgrind/memcheck. - "leak:base::ToolsSanityTest_MemoryLeak_Test::TestBody\n" - - // ================ Leaks in third-party code ================ - - // False positives in libfontconfig. http://crbug.com/39050 - "leak:libfontconfig\n" - // eglibc-2.19/string/strdup.c creates false positive leak errors because of - // the same reason as crbug.com/39050. The leak error stack trace, when - // unwind on malloc, includes a call to libfontconfig. But the default stack - // trace is too short in leak sanitizer bot to make the libfontconfig - // suppression works. http://crbug.com/605286 - "leak:__strdup\n" - - // Leaks in Nvidia's libGL. - "leak:libGL.so\n" - - // TODO(eugenis): revisit NSS suppressions after the switch to BoringSSL - // NSS leaks in CertDatabaseNSSTest tests. http://crbug.com/51988 - "leak:net::NSSCertDatabase::ImportFromPKCS12\n" - "leak:net::NSSCertDatabase::ListCerts\n" - "leak:net::NSSCertDatabase::DeleteCertAndKey\n" - "leak:crypto::ScopedTestNSSDB::ScopedTestNSSDB\n" - // Another leak due to not shutting down NSS properly. - // http://crbug.com/124445 - "leak:error_get_my_stack\n" - // The NSS suppressions above will not fire when the fast stack unwinder is - // used, because it can't unwind through NSS libraries. Apply blanket - // suppressions for now. - "leak:libnssutil3\n" - "leak:libnspr4\n" - "leak:libnss3\n" - "leak:libplds4\n" - "leak:libnssckbi\n" - - // XRandR has several one time leaks. - "leak:libxrandr\n" - - // xrandr leak. http://crbug.com/119677 - "leak:XRRFindDisplay\n" - - // http://crbug.com/431213, http://crbug.com/416665 - "leak:gin/object_template_builder.h\n" - - // Leaks in swrast_dri.so. http://crbug.com/540042 - "leak:swrast_dri.so\n" - - // Leak in glibc's gconv caused by fopen(..., "r,ccs=UNICODE") - "leak:__gconv_lookup_cache\n" - - // ================ Leaks in Chromium code ================ - // PLEASE DO NOT ADD SUPPRESSIONS FOR NEW LEAKS. - // Instead, commits that introduce memory leaks should be reverted. - // Suppressing the leak is acceptable in some cases when reverting is - // impossible, i.e. when enabling leak detection for the first time for a - // test target with pre-existing leaks. - - // Small test-only leak in ppapi_unittests. http://crbug.com/258113 - "leak:ppapi::proxy::PPP_Instance_Private_ProxyTest_PPPInstancePrivate_" - "Test\n" - - // http://crbug.com/322671 - "leak:content::SpeechRecognitionBrowserTest::SetUpOnMainThread\n" - - // http://crbug.com/355641 - "leak:TrayAccessibilityTest\n" - - // http://crbug.com/354644 - "leak:CertificateViewerUITest::ShowModalCertificateViewer\n" - - // http://crbug.com/356306 - "leak:service_manager::SetProcessTitleFromCommandLine\n" - - // https://crbug.com/755670 - "leak:third_party/yasm/\n" - - // v8 leaks caused by weak ref not call - "leak:blink::DOMWrapperWorld::Create\n" - "leak:blink::ScriptState::Create\n" - - // https://crbug.com/795148 - "leak:third_party/fontconfig/\n" - - // https://crbug.com/831667 - "leak:gin/*_unittest.cc\n" - - // PLEASE READ ABOVE BEFORE ADDING NEW SUPPRESSIONS. - - // End of suppressions. - ; // Please keep this semicolon. - -#endif // LEAK_SANITIZER
diff --git a/build/sanitizers/sanitizer_options.cc b/build/sanitizers/sanitizer_options.cc deleted file mode 100644 index 7f90f19..0000000 --- a/build/sanitizers/sanitizer_options.cc +++ /dev/null
@@ -1,176 +0,0 @@ -// Copyright 2014 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. -// -// This file contains the default options for various compiler-based dynamic -// tools. - -#include "build/build_config.h" - -#if defined(ADDRESS_SANITIZER) || defined(LEAK_SANITIZER) || \ - defined(MEMORY_SANITIZER) || defined(THREAD_SANITIZER) || \ - defined(UNDEFINED_SANITIZER) -// Functions returning default options are declared weak in the tools' runtime -// libraries. To make the linker pick the strong replacements for those -// functions from this module, we explicitly force its inclusion by passing -// -Wl,-u_sanitizer_options_link_helper -extern "C" -void _sanitizer_options_link_helper() { } - -// The callbacks we define here will be called from the sanitizer runtime, but -// aren't referenced from the Chrome executable. We must ensure that those -// callbacks are not sanitizer-instrumented, and that they aren't stripped by -// the linker. -#define SANITIZER_HOOK_ATTRIBUTE \ - extern "C" \ - __attribute__((no_sanitize("address", "memory", "thread", "undefined"))) \ - __attribute__((visibility("default"))) \ - __attribute__((used)) -#endif - -#if defined(ADDRESS_SANITIZER) -// Default options for AddressSanitizer in various configurations: -// malloc_context_size=5 - limit the size of stack traces collected by ASan -// for each malloc/free by 5 frames. These stack traces tend to accumulate -// very fast in applications using JIT (v8 in Chrome's case), see -// https://code.google.com/p/address-sanitizer/issues/detail?id=177 -// symbolize=1 - enable in-process symbolization. -// legacy_pthread_cond=1 - run in the libpthread 2.2.5 compatibility mode to -// work around libGL.so using the obsolete API, see -// http://crbug.com/341805. This may break if pthread_cond_t objects are -// accessed by both instrumented and non-instrumented binaries (e.g. if -// they reside in shared memory). This option is going to be deprecated in -// upstream AddressSanitizer and must not be used anywhere except the -// official builds. -// check_printf=1 - check the memory accesses to printf (and other formatted -// output routines) arguments. -// use_sigaltstack=1 - handle signals on an alternate signal stack. Useful -// for stack overflow detection. -// strip_path_prefix=/../../ - prefixes up to and including this -// substring will be stripped from source file paths in symbolized reports -// fast_unwind_on_fatal=1 - use the fast (frame-pointer-based) stack unwinder -// to print error reports. V8 doesn't generate debug info for the JIT code, -// so the slow unwinder may not work properly. -// detect_stack_use_after_return=1 - use fake stack to delay the reuse of -// stack allocations and detect stack-use-after-return errors. -#if defined(OS_LINUX) -#if defined(GOOGLE_CHROME_BUILD) -// Default AddressSanitizer options for the official build. These do not affect -// tests on buildbots (which don't set GOOGLE_CHROME_BUILD) or non-official -// Chromium builds. -const char kAsanDefaultOptions[] = - "legacy_pthread_cond=1 malloc_context_size=5 " - "symbolize=1 check_printf=1 use_sigaltstack=1 detect_leaks=0 " - "strip_path_prefix=/../../ fast_unwind_on_fatal=1 " - "allow_user_segv_handler=1 "; -#else -// Default AddressSanitizer options for buildbots and non-official builds. -const char* kAsanDefaultOptions = - "symbolize=1 check_printf=1 use_sigaltstack=1 " - "detect_leaks=0 strip_path_prefix=/../../ fast_unwind_on_fatal=1 " - "detect_stack_use_after_return=1 " - "allow_user_segv_handler=1 "; -#endif // GOOGLE_CHROME_BUILD - -#elif defined(OS_MACOSX) -const char *kAsanDefaultOptions = - "check_printf=1 use_sigaltstack=1 " - "strip_path_prefix=/../../ fast_unwind_on_fatal=1 " - "detect_stack_use_after_return=1 detect_odr_violation=0 "; -#endif // OS_LINUX - -#if defined(OS_LINUX) || defined(OS_MACOSX) -// Allow NaCl to override the default asan options. -extern const char* kAsanDefaultOptionsNaCl; -__attribute__((weak)) const char* kAsanDefaultOptionsNaCl = nullptr; - -SANITIZER_HOOK_ATTRIBUTE const char *__asan_default_options() { - if (kAsanDefaultOptionsNaCl) - return kAsanDefaultOptionsNaCl; - return kAsanDefaultOptions; -} - -extern char kASanDefaultSuppressions[]; - -SANITIZER_HOOK_ATTRIBUTE const char *__asan_default_suppressions() { - return kASanDefaultSuppressions; -} -#endif // OS_LINUX || OS_MACOSX -#endif // ADDRESS_SANITIZER - -#if defined(THREAD_SANITIZER) && defined(OS_LINUX) -// Default options for ThreadSanitizer in various configurations: -// detect_deadlocks=1 - enable deadlock (lock inversion) detection. -// second_deadlock_stack=1 - more verbose deadlock reports. -// report_signal_unsafe=0 - do not report async-signal-unsafe functions -// called from signal handlers. -// report_thread_leaks=0 - do not report unjoined threads at the end of -// the program execution. -// print_suppressions=1 - print the list of matched suppressions. -// history_size=7 - make the history buffer proportional to 2^7 (the maximum -// value) to keep more stack traces. -// strip_path_prefix=/../../ - prefixes up to and including this -// substring will be stripped from source file paths in symbolized reports. -const char kTsanDefaultOptions[] = - "detect_deadlocks=1 second_deadlock_stack=1 report_signal_unsafe=0 " - "report_thread_leaks=0 print_suppressions=1 history_size=7 " - "strict_memcmp=0 strip_path_prefix=/../../ "; - -SANITIZER_HOOK_ATTRIBUTE const char *__tsan_default_options() { - return kTsanDefaultOptions; -} - -extern char kTSanDefaultSuppressions[]; - -SANITIZER_HOOK_ATTRIBUTE const char *__tsan_default_suppressions() { - return kTSanDefaultSuppressions; -} - -#endif // THREAD_SANITIZER && OS_LINUX - -#if defined(MEMORY_SANITIZER) -// Default options for MemorySanitizer: -// intercept_memcmp=0 - do not detect uninitialized memory in memcmp() calls. -// Pending cleanup, see http://crbug.com/523428 -// strip_path_prefix=/../../ - prefixes up to and including this -// substring will be stripped from source file paths in symbolized reports. -const char kMsanDefaultOptions[] = - "intercept_memcmp=0 strip_path_prefix=/../../ "; - -SANITIZER_HOOK_ATTRIBUTE const char *__msan_default_options() { - return kMsanDefaultOptions; -} - -#endif // MEMORY_SANITIZER - -#if defined(LEAK_SANITIZER) -// Default options for LeakSanitizer: -// print_suppressions=1 - print the list of matched suppressions. -// strip_path_prefix=/../../ - prefixes up to and including this -// substring will be stripped from source file paths in symbolized reports. -const char kLsanDefaultOptions[] = - "print_suppressions=1 strip_path_prefix=/../../ "; - -SANITIZER_HOOK_ATTRIBUTE const char *__lsan_default_options() { - return kLsanDefaultOptions; -} - -extern char kLSanDefaultSuppressions[]; - -SANITIZER_HOOK_ATTRIBUTE const char *__lsan_default_suppressions() { - return kLSanDefaultSuppressions; -} - -#endif // LEAK_SANITIZER - -#if defined(UNDEFINED_SANITIZER) -// Default options for UndefinedBehaviorSanitizer: -// print_stacktrace=1 - print the stacktrace when UBSan reports an error. -const char kUbsanDefaultOptions[] = - "print_stacktrace=1 strip_path_prefix=/../../ "; - -SANITIZER_HOOK_ATTRIBUTE const char* __ubsan_default_options() { - return kUbsanDefaultOptions; -} - -#endif // UNDEFINED_SANITIZER
diff --git a/build/sanitizers/tsan_suppressions.cc b/build/sanitizers/tsan_suppressions.cc deleted file mode 100644 index 9e475c6..0000000 --- a/build/sanitizers/tsan_suppressions.cc +++ /dev/null
@@ -1,270 +0,0 @@ -// Copyright 2014 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. - -// This file contains the default suppressions for ThreadSanitizer. -// You can also pass additional suppressions via TSAN_OPTIONS: -// TSAN_OPTIONS=suppressions=/path/to/suppressions. Please refer to -// http://dev.chromium.org/developers/testing/threadsanitizer-tsan-v2 -// for more info. - -#if defined(THREAD_SANITIZER) - -// Please make sure the code below declares a single string variable -// kTSanDefaultSuppressions contains TSan suppressions delimited by newlines. -// See http://dev.chromium.org/developers/testing/threadsanitizer-tsan-v2 -// for the instructions on writing suppressions. -char kTSanDefaultSuppressions[] = - // False positives in libflashplayer.so, libgio.so and libglib.so. - // Since we don't instrument them, we cannot reason about the - // synchronization in them. - "race:libflashplayer.so\n" - "race:libgio*.so\n" - "race:libglib*.so\n" - - // Intentional race in ToolsSanityTest.DataRace in base_unittests. - "race:base/tools_sanity_unittest.cc\n" - - // Data race on WatchdogCounter [test-only]. - "race:base/threading/watchdog_unittest.cc\n" - - // Races in libevent, http://crbug.com/23244. - "race:libevent/event.c\n" - - // http://crbug.com/84094. - "race:sqlite3StatusSet\n" - "race:pcache1EnforceMaxPage\n" - "race:pcache1AllocPage\n" - - // http://crbug.com/120808 - "race:base/threading/watchdog.cc\n" - - // http://crbug.com/157586 - "race:third_party/libvpx/source/libvpx/vp8/decoder/threading.c\n" - - // http://crbug.com/158718 - "race:third_party/ffmpeg/libavcodec/pthread.c\n" - "race:third_party/ffmpeg/libavcodec/pthread_frame.c\n" - "race:third_party/ffmpeg/libavcodec/vp8.c\n" - "race:third_party/ffmpeg/libavutil/mem.c\n" - "race:*HashFrameForTesting\n" - "race:third_party/ffmpeg/libavcodec/h264pred.c\n" - "race:media::ReleaseData\n" - - // http://crbug.com/158922 - "race:third_party/libvpx/source/libvpx/vp8/encoder/*\n" - "race:third_party/libvpx/source/libvpx/vp9/encoder/*\n" - - // http://crbug.com/239359 - "race:media::TestInputCallback::OnData\n" - - // http://crbug.com/244368 - "race:skia::BeginPlatformPaint\n" - - // http://crbug.com/244385 - "race:unixTempFileDir\n" - - // http://crbug.com/244755 - "race:v8::internal::Zone::NewExpand\n" - "race:TooLateToEnableNow\n" - "race:adjust_segment_bytes_allocated\n" - - // http://crbug.com/244774 - "race:webrtc::RTPReceiver::ProcessBitrate\n" - "race:webrtc::RTPSender::ProcessBitrate\n" - "race:webrtc::VideoCodingModuleImpl::Decode\n" - "race:webrtc::RTPSender::SendOutgoingData\n" - "race:webrtc::LibvpxVp8Encoder::GetEncodedPartitions\n" - "race:webrtc::LibvpxVp8Encoder::Encode\n" - "race:webrtc::ViEEncoder::DeliverFrame\n" - "race:webrtc::vcm::VideoReceiver::Decode\n" - "race:webrtc::VCMReceiver::FrameForDecoding\n" - "race:*trace_event_unique_catstatic*\n" - - // http://crbug.com/244856 - "race:libpulsecommon*.so\n" - - // http://crbug.com/246968 - "race:webrtc::VideoCodingModuleImpl::RegisterPacketRequestCallback\n" - - // http://crbug.com/257396 - "race:base::trace_event::" - "TraceEventTestFixture_TraceSamplingScope_Test::TestBody\n" - - // http://crbug.com/258479 - "race:SamplingStateScope\n" - "race:g_trace_state\n" - - // http://crbug.com/258499 - "race:third_party/skia/include/core/SkRefCnt.h\n" - - // http://crbug.com/268924 - "race:base::g_power_monitor\n" - "race:base::PowerMonitor::PowerMonitor\n" - "race:base::PowerMonitor::AddObserver\n" - "race:base::PowerMonitor::RemoveObserver\n" - "race:base::PowerMonitor::IsOnBatteryPower\n" - - // http://crbug.com/258935 - "race:base::Thread::StopSoon\n" - - // http://crbug.com/272095 - "race:base::g_top_manager\n" - - // http://crbug.com/308590 - "race:CustomThreadWatcher::~CustomThreadWatcher\n" - - // http://crbug.com/310851 - "race:net::ProxyResolverV8Tracing::Job::~Job\n" - - // http://crbug.com/476529 - "deadlock:cc::VideoLayerImpl::WillDraw\n" - - // http://crbug.com/328826 - "race:gLCDOrder\n" - "race:gLCDOrientation\n" - - // http://crbug.com/328868 - "race:PR_Lock\n" - - // http://crbug.com/333244 - "race:content::" - "VideoCaptureImplTest::MockVideoCaptureImpl::~MockVideoCaptureImpl\n" - - // http://crbug.com/333871 - "race:v8::internal::Interface::NewValue()::value_interface\n" - "race:v8::internal::IsMinusZero(double)::minus_zero\n" - "race:v8::internal::FastCloneShallowObjectStub::" - "InitializeInterfaceDescriptor\n" - "race:v8::internal::KeyedLoadStubCompiler::registers\n" - "race:v8::internal::KeyedStoreStubCompiler::registers()::registers\n" - "race:v8::internal::KeyedLoadFastElementStub::" - "InitializeInterfaceDescriptor\n" - "race:v8::internal::KeyedStoreFastElementStub::" - "InitializeInterfaceDescriptor\n" - "race:v8::internal::LoadStubCompiler::registers\n" - "race:v8::internal::StoreStubCompiler::registers\n" - "race:v8::internal::HValue::LoopWeight\n" - - // http://crbug.com/334140 - "race:CommandLine::HasSwitch\n" - "race:CommandLine::current_process_commandline_\n" - "race:CommandLine::GetSwitchValueASCII\n" - - // http://crbug.com/338675 - "race:blink::s_platform\n" - "race:content::" - "RendererWebKitPlatformSupportImpl::~RendererWebKitPlatformSupportImpl\n" - - // http://crbug.com/347534 - "race:v8::internal::V8::TearDown\n" - - // http://crbug.com/347538 - "race:sctp_timer_start\n" - - // http://crbug.com/347553 - "race:blink::WebString::reset\n" - - // http://crbug.com/348511 - "race:webrtc::acm1::AudioCodingModuleImpl::PlayoutData10Ms\n" - - // http://crbug.com/348982 - "race:cricket::P2PTransportChannel::OnConnectionDestroyed\n" - "race:cricket::P2PTransportChannel::AddConnection\n" - - // http://crbug.com/348984 - "race:sctp_express_handle_sack\n" - "race:system_base_info\n" - - // https://code.google.com/p/v8/issues/detail?id=3143 - "race:v8::internal::FLAG_track_double_fields\n" - - // http://crbug.com/374135 - "race:media::AlsaWrapper::PcmWritei\n" - - // False positive in libc's tzset_internal, http://crbug.com/379738. - "race:tzset_internal\n" - - // http://crbug.com/380554 - "deadlock:g_type_add_interface_static\n" - - // http:://crbug.com/386385 - "race:content::AppCacheStorageImpl::DatabaseTask::CallRunCompleted\n" - - // http://crbug.com/388730 - "race:g_next_user_script_id\n" - - // http://crbug.com/397022 - "deadlock:" - "base::trace_event::TraceEventTestFixture_ThreadOnceBlocking_Test::" - "TestBody\n" - - // http://crbug.com/415472 - "deadlock:base::trace_event::TraceLog::GetCategoryGroupEnabled\n" - - // http://crbug.com/490856 - "deadlock:content::TracingControllerImpl::SetEnabledOnFileThread\n" - - // https://code.google.com/p/skia/issues/detail?id=3294 - "race:SkBaseMutex::acquire\n" - - // https://crbug.com/430533 - "race:TileTaskGraphRunner::Run\n" - - // Lock inversion in third party code, won't fix. - // https://crbug.com/455638 - "deadlock:dbus::Bus::ShutdownAndBlock\n" - - // https://crbug.com/459429 - "race:randomnessPid\n" - - // https://crbug.com/454655 - "race:content::BrowserTestBase::PostTaskToInProcessRendererAndWait\n" - - // https://crbug.com/569682 - "race:blink::ThreadState::visitStackRoots\n" - - // http://crbug.com/582274 - "race:usrsctp_close\n" - - // http://crbug.com/633145 - "race:third_party/libjpeg_turbo/simd/jsimd_x86_64.c\n" - - // http://crbug.com/587199 - "race:base::TimerTest_OneShotTimer_CustomTaskRunner_Test::TestBody\n" - "race:base::TimerSequenceTest_OneShotTimerTaskOnPoolSequence_Test::" - "TestBody\n" - "race:base::TimerSequenceTest_" - "OneShotTimerUsedAndTaskedOnDifferentSequences\n" - - // http://crbug.com/v8/6065 - "race:net::(anonymous namespace)::ProxyResolverV8TracingImpl::RequestImpl" - "::~RequestImpl()\n" - - // http://crbug.com/691029 - "deadlock:libGLX.so*\n" - - // http://crbug.com/719633 - "race:crypto::EnsureNSSInit()\n" - - // http://crbug.com/695929 - "race:base::i18n::IsRTL\n" - "race:base::i18n::SetICUDefaultLocale\n" - - // https://crbug.com/794920 - "race:base::debug::SetCrashKeyString\n" - "race:crash_reporter::internal::CrashKeyStringImpl::Set\n" - - // http://crbug.com/795110 - "race:third_party/fontconfig/*\n" - - // http://crbug.com/797998 - "race:content::SandboxIPCHandler::HandleLocaltime\n" - - // - "race:third_party/harfbuzz-ng/src/*\n" - - // End of suppressions. - ; // Please keep this semicolon. - -#endif // THREAD_SANITIZER
diff --git a/build/secondary/testing/gmock/BUILD.gn b/build/secondary/testing/gmock/BUILD.gn deleted file mode 100644 index 9184d62..0000000 --- a/build/secondary/testing/gmock/BUILD.gn +++ /dev/null
@@ -1,65 +0,0 @@ -# Copyright 2014 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. - -# Chromium's GN configuration for gmock now lives at testing/gmock/BUILD.gn. -# -# This configuration is left in the tree because it is pulled by V8 and PDFium, -# and will be removed as soon as the projects switch off of it. -# -# Details at http://crbug.com/630705 and http://crrev.com/2779193002 - -config("gmock_config") { - # Gmock headers need to be able to find themselves. - include_dirs = [ - "//testing/gmock_custom", - "include", - ] -} - -static_library("gmock") { - testonly = true - sources = [ - # Sources based on files in r173 of gmock. - "include/gmock/gmock-actions.h", - "include/gmock/gmock-cardinalities.h", - "include/gmock/gmock-generated-actions.h", - "include/gmock/gmock-generated-function-mockers.h", - "include/gmock/gmock-generated-matchers.h", - "include/gmock/gmock-generated-nice-strict.h", - "include/gmock/gmock-matchers.h", - "include/gmock/gmock-spec-builders.h", - "include/gmock/gmock.h", - "include/gmock/internal/gmock-generated-internal-utils.h", - "include/gmock/internal/gmock-internal-utils.h", - "include/gmock/internal/gmock-port.h", - - # gmock helpers. - "../gmock_custom/gmock/internal/custom/gmock-port.h", - - #"src/gmock-all.cc", # Not needed by our build. - "src/gmock-cardinalities.cc", - "src/gmock-internal-utils.cc", - "src/gmock-matchers.cc", - "src/gmock-spec-builders.cc", - "src/gmock.cc", - ] - - # This project includes some stuff form gtest's guts. - include_dirs = [ "../gtest/include" ] - - public_configs = [ - ":gmock_config", - "//testing/gtest:gtest_config", - ] -} - -static_library("gmock_main") { - testonly = true - sources = [ - "src/gmock_main.cc", - ] - deps = [ - ":gmock", - ] -}
diff --git a/build/secondary/testing/gtest/BUILD.gn b/build/secondary/testing/gtest/BUILD.gn deleted file mode 100644 index aa24d7e..0000000 --- a/build/secondary/testing/gtest/BUILD.gn +++ /dev/null
@@ -1,150 +0,0 @@ -# Copyright 2014 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. - -# Chromium's GN configuration for gtest now lives at testing/gtest/BUILD.gn. -# -# This configuration is left in the tree because it is pulled by V8 and PDFium, -# and will be removed as soon as the projects switch off of it. -# -# Details at http://crbug.com/630705 and http://crrev.com/2779193002 - -import("//build_overrides/gtest.gni") -if (is_ios) { - import("//build/config/ios/ios_sdk.gni") - import("//build/buildflag_header.gni") -} - -config("gtest_config") { - visibility = [ - ":*", - "//testing/gmock:*", # gmock also shares this config. - ] - - defines = [ - # In order to allow regex matches in gtest to be shared between Windows - # and other systems, we tell gtest to always use it's internal engine. - "GTEST_HAS_POSIX_RE=0", - "GTEST_LANG_CXX11=1", - ] - - # Gtest headers need to be able to find themselves. - include_dirs = [ "include" ] - - if (is_win) { - cflags = [ "/wd4800" ] # Unused variable warning. - } -} - -config("gtest_direct_config") { - visibility = [ ":*" ] - defines = [ "UNIT_TEST" ] -} - -config("gtest_warnings") { - if (is_win && is_clang) { - # The Mutex constructor initializer list in gtest-port.cc is incorrectly - # ordered. See - # https://groups.google.com/d/msg/googletestframework/S5uSV8L2TX8/U1FaTDa6J6sJ. - cflags = [ "-Wno-reorder" ] - } -} - -static_library("gtest") { - testonly = true - sources = [ - "include/gtest/gtest-death-test.h", - "include/gtest/gtest-message.h", - "include/gtest/gtest-param-test.h", - "include/gtest/gtest-printers.h", - "include/gtest/gtest-spi.h", - "include/gtest/gtest-test-part.h", - "include/gtest/gtest-typed-test.h", - "include/gtest/gtest.h", - "include/gtest/gtest_pred_impl.h", - "include/gtest/internal/gtest-death-test-internal.h", - "include/gtest/internal/gtest-filepath.h", - "include/gtest/internal/gtest-internal.h", - "include/gtest/internal/gtest-linked_ptr.h", - "include/gtest/internal/gtest-param-util-generated.h", - "include/gtest/internal/gtest-param-util.h", - "include/gtest/internal/gtest-port.h", - "include/gtest/internal/gtest-string.h", - "include/gtest/internal/gtest-tuple.h", - "include/gtest/internal/gtest-type-util.h", - - #"gtest/src/gtest-all.cc", # Not needed by our build. - "src/gtest-death-test.cc", - "src/gtest-filepath.cc", - "src/gtest-internal-inl.h", - "src/gtest-port.cc", - "src/gtest-printers.cc", - "src/gtest-test-part.cc", - "src/gtest-typed-test.cc", - "src/gtest.cc", - ] - deps = [] - - if (gtest_include_multiprocess) { - sources += [ - "../multiprocess_func_list.cc", - "../multiprocess_func_list.h", - ] - } - - if (gtest_include_platform_test) { - sources += [ "../platform_test.h" ] - } - - if ((is_mac || is_ios) && gtest_include_objc_support) { - if (is_ios) { - set_sources_assignment_filter([]) - } - sources += [ - "../gtest_mac.h", - "../gtest_mac.mm", - ] - if (gtest_include_platform_test) { - sources += [ "../platform_test_mac.mm" ] - } - set_sources_assignment_filter(sources_assignment_filter) - } - - if (is_ios && gtest_include_ios_coverage) { - sources += [ - "../coverage_util_ios.h", - "../coverage_util_ios.mm", - ] - deps += [ ":ios_enable_coverage" ] - } - - include_dirs = [ "." ] - - all_dependent_configs = [ ":gtest_config" ] - public_configs = [ ":gtest_direct_config" ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", - - # Must be after no_chromium_code for warning flags to be ordered correctly. - ":gtest_warnings", - ] -} - -source_set("gtest_main") { - testonly = true - sources = [ - "src/gtest_main.cc", - ] - deps = [ - ":gtest", - ] -} - -if (is_ios) { - buildflag_header("ios_enable_coverage") { - header = "ios_enable_coverage.h" - flags = [ "IOS_ENABLE_COVERAGE=$ios_enable_coverage" ] - } -}
diff --git a/build/secondary/third_party/android_platform/development/scripts/BUILD.gn b/build/secondary/third_party/android_platform/development/scripts/BUILD.gn deleted file mode 100644 index 2c9758e..0000000 --- a/build/secondary/third_party/android_platform/development/scripts/BUILD.gn +++ /dev/null
@@ -1,14 +0,0 @@ -# Copyright 2017 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/config/android/config.gni") -import("//build/config/python.gni") - -python_library("stack_py") { - pydeps_file = "//build/secondary/third_party/android_platform/development/scripts/stack.pydeps" - data = [ - "//third_party/android_platform/development/scripts/stack", - "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer", - ] -}
diff --git a/build/secondary/third_party/android_platform/development/scripts/stack.pydeps b/build/secondary/third_party/android_platform/development/scripts/stack.pydeps deleted file mode 100644 index a8972fd..0000000 --- a/build/secondary/third_party/android_platform/development/scripts/stack.pydeps +++ /dev/null
@@ -1,21 +0,0 @@ -# Generated by running: -# build/print_python_deps.py --root third_party/android_platform/development/scripts --output build/secondary/third_party/android_platform/development/scripts/stack.pydeps third_party/android_platform/development/scripts/stack.py -../../../../build/android/pylib/__init__.py -../../../../build/android/pylib/constants/__init__.py -../../../../build/android/pylib/constants/host_paths.py -../../../../build/android/pylib/symbols/__init__.py -../../../../build/android/pylib/symbols/elf_symbolizer.py -../../../../tools/python/llvm_symbolizer.py -../../../catapult/devil/devil/__init__.py -../../../catapult/devil/devil/android/__init__.py -../../../catapult/devil/devil/android/constants/__init__.py -../../../catapult/devil/devil/android/constants/chrome.py -../../../catapult/devil/devil/android/sdk/__init__.py -../../../catapult/devil/devil/android/sdk/keyevent.py -../../../catapult/devil/devil/android/sdk/version_codes.py -../../../catapult/devil/devil/constants/__init__.py -../../../catapult/devil/devil/constants/exit_codes.py -stack.py -stack_core.py -stack_libs.py -symbol.py
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn deleted file mode 100644 index 4a902b5..0000000 --- a/build/secondary/third_party/android_tools/BUILD.gn +++ /dev/null
@@ -1,244 +0,0 @@ -# Copyright 2014 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/config/android/rules.gni") - -config("cpu_features_include") { - include_dirs = [ "$android_ndk_root/sources/android/cpufeatures" ] -} - -config("cpu_features_warnings") { - if (is_clang) { - # cpu-features.c has few unused functions on x86 b/26403333 - cflags = [ "-Wno-unused-function" ] - } -} - -source_set("cpu_features") { - sources = [ - "$android_ndk_root/sources/android/cpufeatures/cpu-features.c", - ] - public_configs = [ ":cpu_features_include" ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", - - # Must be after no_chromium_code for warning flags to be ordered correctly. - ":cpu_features_warnings", - ] -} - -if (enable_java_templates) { - template("support_lib_alias") { - java_group(target_name) { - forward_variables_from(invoker, [ "testonly" ]) - deps = [ - "$android_support_library_package:$target_name", - ] - } - } - - support_lib_alias("android_support_chromium_java") { - testonly = true - } - support_lib_alias("android_gcm_java") { - } - support_lib_alias("emma_device_java") { - } - prebuilt_wrapper("android_arch_lifecycle_common_java") { - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_arch_lifecycle_runtime_java") { - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_multidex_java") { - android_deps_target_name = "com_android_support_multidex_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_annotations_java") { - android_deps_target_name = "com_android_support_support_annotations_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_cardview_java") { - android_deps_target_name = "com_android_support_cardview_v7_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_compat_java") { - android_deps_target_name = "com_android_support_support_compat_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_core_ui_java") { - android_deps_target_name = "com_android_support_support_core_ui_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_core_utils_java") { - android_deps_target_name = "com_android_support_support_core_utils_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_design_java") { - android_deps_target_name = "com_android_support_design_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_v4_java") { - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_v7_appcompat_java") { - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_v7_gridlayout_java") { - android_deps_target_name = "com_android_support_gridlayout_v7_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_v7_mediarouter_java") { - android_deps_target_name = "com_android_support_mediarouter_v7_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_v7_recyclerview_java") { - android_deps_target_name = "com_android_support_recyclerview_v7_java" - fallback_target = "$android_support_library_package:$target_name" - } - prebuilt_wrapper("android_support_v13_java") { - android_deps_target_name = "com_android_support_support_v13_java" - fallback_target = "$android_support_library_package:$target_name" - } - - # TODO(dgn): Use the POM files instead of hardcoding the dependencies. - gms_path = "$default_extras_android_sdk_root/extras/google/m2repository/com/google/android/gms" - gms_version = "11.2.0" - - android_aar_prebuilt("google_play_services_basement_java") { - deps = [ - ":android_support_v4_java", - ] - _lib_name = "play-services-basement" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ] - } - - android_aar_prebuilt("google_play_services_tasks_java") { - deps = [ - ":google_play_services_basement_java", - ] - _lib_name = "play-services-tasks" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_base_java") { - deps = [ - ":android_support_v4_java", - ":google_play_services_basement_java", - ":google_play_services_tasks_java", - ] - _lib_name = "play-services-base" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_auth_base_java") { - deps = [ - ":google_play_services_base_java", - ":google_play_services_basement_java", - ] - _lib_name = "play-services-auth-base" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_auth_java") { - deps = [ - ":google_play_services_auth_base_java", - ":google_play_services_base_java", - ":google_play_services_basement_java", - ] - _lib_name = "play-services-auth" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_cast_java") { - deps = [ - ":android_support_v7_mediarouter_java", - ":google_play_services_base_java", - ":google_play_services_basement_java", - ] - _lib_name = "play-services-cast" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_iid_java") { - deps = [ - ":google_play_services_base_java", - ":google_play_services_basement_java", - ] - _lib_name = "play-services-iid" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_gcm_java") { - deps = [ - ":google_play_services_base_java", - ":google_play_services_basement_java", - ":google_play_services_iid_java", - ] - _lib_name = "play-services-gcm" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_location_java") { - deps = [ - ":google_play_services_base_java", - ":google_play_services_basement_java", - ] - _lib_name = "play-services-location" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_vision_java") { - deps = [ - ":google_play_services_base_java", - ":google_play_services_basement_java", - ":google_play_services_vision_common_java", - ] - _lib_name = "play-services-vision" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } - - android_aar_prebuilt("google_play_services_vision_common_java") { - deps = [ - ":google_play_services_base_java", - ":google_play_services_basement_java", - ] - _lib_name = "play-services-vision-common" - aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar" - info_path = "//build/secondary/third_party/android_tools/$target_name.info" - proguard_configs = - [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ] - } -}
diff --git a/build/secondary/third_party/android_tools/apk_proguard.flags b/build/secondary/third_party/android_tools/apk_proguard.flags deleted file mode 100644 index 953e8b9..0000000 --- a/build/secondary/third_party/android_tools/apk_proguard.flags +++ /dev/null
@@ -1,10 +0,0 @@ -# Copyright 2016 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. - -# Keep all Parcelables, since Play Services has some that are used only by -# reflection. -# TODO(agrieve): Remove this once proguard flags provided by play services via -# .aars are used. https://crbug.com/640836 --keep class * implements android.os.Parcelable -
diff --git a/build/secondary/third_party/android_tools/google_play_services_auth_base_java.info b/build/secondary/third_party/android_tools/google_play_services_auth_base_java.info deleted file mode 100644 index a2ebd4a..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_auth_base_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_auth_java.info b/build/secondary/third_party/android_tools/google_play_services_auth_java.info deleted file mode 100644 index 5c44fcb..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_auth_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = false -resources = [ "res/drawable-watch-v20/common_google_signin_btn_text_dark_normal.xml", "res/drawable-watch-v20/common_google_signin_btn_text_disabled.xml", "res/drawable-watch-v20/common_google_signin_btn_text_light_normal.xml", "res/values-watch-v20/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_base_java.info b/build/secondary/third_party/android_tools/google_play_services_base_java.info deleted file mode 100644 index 01b9405..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_base_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = false -resources = [ "res/color/common_google_signin_btn_text_dark.xml", "res/color/common_google_signin_btn_text_light.xml", "res/color/common_google_signin_btn_tint.xml", "res/drawable-hdpi-v4/common_full_open_on_phone.png", "res/drawable-hdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-hdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-hdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-hdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-hdpi-v4/googleg_disabled_color_18.png", "res/drawable-hdpi-v4/googleg_standard_color_18.png", "res/drawable-mdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-mdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-mdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-mdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-mdpi-v4/googleg_disabled_color_18.png", "res/drawable-mdpi-v4/googleg_standard_color_18.png", "res/drawable-xhdpi-v4/common_full_open_on_phone.png", "res/drawable-xhdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-xhdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-xhdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-xhdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-xhdpi-v4/googleg_disabled_color_18.png", "res/drawable-xhdpi-v4/googleg_standard_color_18.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-xxhdpi-v4/googleg_disabled_color_18.png", "res/drawable-xxhdpi-v4/googleg_standard_color_18.png", "res/drawable/common_google_signin_btn_icon_dark.xml", "res/drawable/common_google_signin_btn_icon_dark_focused.xml", "res/drawable/common_google_signin_btn_icon_dark_normal.xml", "res/drawable/common_google_signin_btn_icon_disabled.xml", "res/drawable/common_google_signin_btn_icon_light.xml", "res/drawable/common_google_signin_btn_icon_light_focused.xml", "res/drawable/common_google_signin_btn_icon_light_normal.xml", "res/drawable/common_google_signin_btn_text_dark.xml", "res/drawable/common_google_signin_btn_text_dark_focused.xml", "res/drawable/common_google_signin_btn_text_dark_normal.xml", "res/drawable/common_google_signin_btn_text_disabled.xml", "res/drawable/common_google_signin_btn_text_light.xml", "res/drawable/common_google_signin_btn_text_light_focused.xml", "res/drawable/common_google_signin_btn_text_light_normal.xml", "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_basement_java.info b/build/secondary/third_party/android_tools/google_play_services_basement_java.info deleted file mode 100644 index ac3ce23..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_basement_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = false -resources = [ "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_cast_java.info b/build/secondary/third_party/android_tools/google_play_services_cast_java.info deleted file mode 100644 index 492ffdc..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_cast_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = true -resources = [ "res/drawable-hdpi-v4/cast_ic_notification_0.png", "res/drawable-hdpi-v4/cast_ic_notification_1.png", "res/drawable-hdpi-v4/cast_ic_notification_2.png", "res/drawable-hdpi-v4/cast_ic_notification_on.png", "res/drawable-mdpi-v4/cast_ic_notification_0.png", "res/drawable-mdpi-v4/cast_ic_notification_1.png", "res/drawable-mdpi-v4/cast_ic_notification_2.png", "res/drawable-mdpi-v4/cast_ic_notification_on.png", "res/drawable-xhdpi-v4/cast_ic_notification_0.png", "res/drawable-xhdpi-v4/cast_ic_notification_1.png", "res/drawable-xhdpi-v4/cast_ic_notification_2.png", "res/drawable-xhdpi-v4/cast_ic_notification_on.png", "res/drawable-xxhdpi-v4/cast_ic_notification_0.png", "res/drawable-xxhdpi-v4/cast_ic_notification_1.png", "res/drawable-xxhdpi-v4/cast_ic_notification_2.png", "res/drawable-xxhdpi-v4/cast_ic_notification_on.png", "res/drawable/cast_ic_notification_connecting.xml", "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_gcm_java.info b/build/secondary/third_party/android_tools/google_play_services_gcm_java.info deleted file mode 100644 index 020cd82..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_gcm_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = false -is_manifest_empty = false -resources = [ "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_iid_java.info b/build/secondary/third_party/android_tools/google_play_services_iid_java.info deleted file mode 100644 index 2307336..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_iid_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = false -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_location_java.info b/build/secondary/third_party/android_tools/google_play_services_location_java.info deleted file mode 100644 index a2ebd4a..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_location_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_tasks_java.info b/build/secondary/third_party/android_tools/google_play_services_tasks_java.info deleted file mode 100644 index a2ebd4a..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_tasks_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_vision_common_java.info b/build/secondary/third_party/android_tools/google_play_services_vision_common_java.info deleted file mode 100644 index a2ebd4a..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_vision_common_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/google_play_services_vision_java.info b/build/secondary/third_party/android_tools/google_play_services_vision_java.info deleted file mode 100644 index a2ebd4a..0000000 --- a/build/secondary/third_party/android_tools/google_play_services_vision_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/BUILD.gn b/build/secondary/third_party/android_tools/support/BUILD.gn deleted file mode 100644 index 55609b6..0000000 --- a/build/secondary/third_party/android_tools/support/BUILD.gn +++ /dev/null
@@ -1,262 +0,0 @@ -# Copyright 2017 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/config/android/rules.gni") - -assert(enable_java_templates) - -visibility = [ ":*" ] - -lib_version = "27.0.0" -lib_path = "//third_party/android_tools/sdk/extras/android/m2repository/com/android/support" -arch_lib_version = "1.0.0" -arch_lib_path = - "//third_party/android_tools/sdk/extras/android/m2repository/android/arch" -build_file_dir = "//build/secondary/third_party/android_tools/support" - -android_library("android_support_chromium_java") { - testonly = true - java_files = [ "//third_party/android_tools/sdk/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ] - visibility += [ "//third_party/android_tools:*" ] -} - -android_java_prebuilt("android_gcm_java") { - jar_path = "//third_party/android_tools/sdk/extras/google/gcm/gcm-client/dist/gcm.jar" - visibility += [ "//third_party/android_tools:*" ] -} - -android_java_prebuilt("emma_device_java") { - jar_path = "//third_party/android_tools/sdk/tools/lib/emma_device.jar" - include_java_resources = true - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_design_java") { - deps = [ - ":android_support_transition_java", - ":android_support_v4_java", - ":android_support_v7_appcompat_java", - ":android_support_v7_recyclerview_java", - ] - _lib_name = "design" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_transition_java") { - deps = [ - ":android_support_v4_java", - ] - _lib_name = "transition" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" -} - -android_aar_prebuilt("android_support_cardview_java") { - deps = [ - ":android_support_v7_appcompat_java", - ] - _lib_name = "cardview-v7" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_multidex_java") { - aar_path = "$lib_path/multidex/1.0.1/multidex-1.0.1.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_arch_lifecycle_runtime_java") { - aar_path = "$arch_lib_path/lifecycle/runtime/$arch_lib_version/runtime-$arch_lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - deps = [ - ":android_arch_core_common_java", - ":android_arch_lifecycle_common_java", - ":android_support_annotations_java", - ] - visibility += [ "//third_party/android_tools:*" ] -} - -android_java_prebuilt("android_arch_lifecycle_common_java") { - output_name = "arch_lifecycle_common" - jar_path = "$arch_lib_path/lifecycle/common/$arch_lib_version/common-$arch_lib_version.jar" - deps = [ - ":android_support_annotations_java", - ] - visibility += [ "//third_party/android_tools:*" ] -} - -android_java_prebuilt("android_arch_core_common_java") { - output_name = "arch_core_common" - jar_path = "$arch_lib_path/core/common/$arch_lib_version/common-$arch_lib_version.jar" - deps = [ - ":android_support_annotations_java", - ] -} - -android_java_prebuilt("android_support_annotations_java") { - _lib_name = "support-annotations" - jar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.jar" - visibility += [ "//third_party/android_tools:*" ] -} - -java_group("android_support_v4_java") { - deps = [ - ":android_support_compat_java", - ":android_support_core_ui_java", - ":android_support_core_utils_java", - ":android_support_fragment_java", - ":android_support_media_compat_java", - ] - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_compat_java") { - deps = [ - ":android_arch_lifecycle_runtime_java", - ":android_support_annotations_java", - ] - _lib_name = "support-compat" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - ignore_aidl = true # We don't appear to need these currently. - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_core_ui_java") { - deps = [ - ":android_support_compat_java", - ] - _lib_name = "support-core-ui" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_core_utils_java") { - deps = [ - ":android_support_compat_java", - ] - _lib_name = "support-core-utils" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_fragment_java") { - deps = [ - ":android_support_compat_java", - ":android_support_core_ui_java", - ":android_support_core_utils_java", - ":android_support_media_compat_java", - ] - _lib_name = "support-fragment" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" -} - -android_aar_prebuilt("android_support_media_compat_java") { - deps = [ - ":android_support_compat_java", - ] - _lib_name = "support-media-compat" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - ignore_aidl = true # We don't appear to need these currently. -} - -android_aar_prebuilt("android_support_v13_java") { - deps = [ - ":android_support_v4_java", - ] - _lib_name = "support-v13" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_vector_drawable_java") { - deps = [ - ":android_support_compat_java", - ] - _lib_name = "support-vector-drawable" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" -} - -android_aar_prebuilt("android_support_animated_vector_drawable_java") { - deps = [ - ":android_support_core_ui_java", - ":android_support_vector_drawable_java", - ] - _lib_name = "animated-vector-drawable" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" -} - -android_aar_prebuilt("android_support_v7_appcompat_java_internal") { - deps = [ - ":android_support_v4_java", - ] - _lib_name = "appcompat-v7" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" -} - -java_group("android_support_v7_appcompat_java") { - deps = [ - ":android_support_animated_vector_drawable_java", - ":android_support_v4_java", - ":android_support_v7_appcompat_java_internal", - ":android_support_vector_drawable_java", - ] - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_v7_gridlayout_java") { - deps = [ - ":android_support_compat_java", - ":android_support_core_ui_java", - ] - _lib_name = "gridlayout-v7" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_v7_mediarouter_java") { - deps = [ - ":android_support_v7_appcompat_java", - ":android_support_v7_palette_java", - ] - _lib_name = "mediarouter-v7" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_v7_recyclerview_java") { - deps = [ - ":android_support_annotations_java", - ":android_support_compat_java", - ":android_support_core_ui_java", - ] - _lib_name = "recyclerview-v7" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" - visibility += [ "//third_party/android_tools:*" ] -} - -android_aar_prebuilt("android_support_v7_palette_java") { - deps = [ - ":android_support_compat_java", - ":android_support_core_utils_java", - ] - _lib_name = "palette-v7" - aar_path = "$lib_path/$_lib_name/$lib_version/$_lib_name-$lib_version.aar" - info_path = "$build_file_dir/$target_name.info" -}
diff --git a/build/secondary/third_party/android_tools/support/android_arch_lifecycle_runtime_java.info b/build/secondary/third_party/android_tools/support/android_arch_lifecycle_runtime_java.info deleted file mode 100644 index acf40e8..0000000 --- a/build/secondary/third_party/android_tools/support/android_arch_lifecycle_runtime_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = false -is_manifest_empty = false -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_animated_vector_drawable_java.info b/build/secondary/third_party/android_tools/support/android_support_animated_vector_drawable_java.info deleted file mode 100644 index 7103bc0..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_animated_vector_drawable_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_cardview_java.info b/build/secondary/third_party/android_tools/support/android_support_cardview_java.info deleted file mode 100644 index e458725..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_cardview_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values-v23/values-v23.xml", "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_compat_java.info b/build/secondary/third_party/android_tools/support/android_support_compat_java.info deleted file mode 100644 index fc66ea7..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_compat_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ "aidl/android/support/v4/os/ResultReceiver.aidl" ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/notification_bg_low_normal.9.png", "res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-hdpi-v4/notification_bg_normal.9.png", "res/drawable-hdpi-v4/notification_bg_low_pressed.9.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/notification_template_icon_group.xml", "res/layout/notification_template_custom_big.xml", "res/layout/notification_template_part_time.xml", "res/layout/notification_template_part_chronometer.xml", "res/layout/notification_action_tombstone.xml", "res/layout/notification_action.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/layout-v16/notification_template_custom_big.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/notification_bg_low_normal.9.png", "res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-mdpi-v4/notification_bg_normal.9.png", "res/drawable-mdpi-v4/notification_bg_low_pressed.9.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/notification_bg_low_normal.9.png", "res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-xhdpi-v4/notification_bg_normal.9.png", "res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-v16/values-v16.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-port/values-port.xml", "res/values-ne/values-ne.xml", "res/drawable/notification_bg_low.xml", "res/drawable/notification_bg.xml", "res/drawable/notification_icon_background.xml", "res/drawable/notification_tile_bg.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/layout-v21/notification_template_icon_group.xml", "res/layout-v21/notification_template_custom_big.xml", "res/layout-v21/notification_action_tombstone.xml", "res/layout-v21/notification_action.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/notification_action_background.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_core_ui_java.info b/build/secondary/third_party/android_tools/support/android_support_core_ui_java.info deleted file mode 100644 index 7103bc0..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_core_ui_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_core_utils_java.info b/build/secondary/third_party/android_tools/support/android_support_core_utils_java.info deleted file mode 100644 index cd54060..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_core_utils_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_design_java.info b/build/secondary/third_party/android_tools/support/android_support_design_java.info deleted file mode 100644 index ec2b700..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_design_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/drawable-hdpi-v4/design_ic_visibility.png", "res/drawable-hdpi-v4/design_ic_visibility_off.png", "res/layout/design_bottom_sheet_dialog.xml", "res/layout/design_layout_tab_text.xml", "res/layout/design_bottom_navigation_item.xml", "res/layout/design_navigation_item.xml", "res/layout/design_layout_snackbar_include.xml", "res/layout/design_navigation_menu.xml", "res/layout/design_navigation_item_header.xml", "res/layout/design_navigation_item_separator.xml", "res/layout/design_layout_snackbar.xml", "res/layout/design_text_input_password_icon.xml", "res/layout/design_layout_tab_icon.xml", "res/layout/design_navigation_item_subheader.xml", "res/layout/design_menu_item_action_area.xml", "res/layout/design_navigation_menu_item.xml", "res/values-v21/values-v21.xml", "res/drawable-anydpi-v21/design_ic_visibility.xml", "res/drawable-anydpi-v21/design_ic_visibility_off.xml", "res/layout-sw600dp-v13/design_layout_snackbar.xml", "res/drawable-xxhdpi-v4/design_ic_visibility.png", "res/drawable-xxhdpi-v4/design_ic_visibility_off.png", "res/color/design_error.xml", "res/color/design_tint_password_toggle.xml", "res/animator-v21/design_appbar_state_list_animator.xml", "res/drawable-mdpi-v4/design_ic_visibility.png", "res/drawable-mdpi-v4/design_ic_visibility_off.png", "res/values/values.xml", "res/drawable-xhdpi-v4/design_ic_visibility.png", "res/drawable-xhdpi-v4/design_ic_visibility_off.png", "res/values-land/values-land.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/anim/design_snackbar_out.xml", "res/anim/design_snackbar_in.xml", "res/anim/design_bottom_sheet_slide_out.xml", "res/anim/design_bottom_sheet_slide_in.xml", "res/drawable-xxxhdpi-v4/design_ic_visibility.png", "res/drawable-xxxhdpi-v4/design_ic_visibility_off.png", "res/anim-v21/design_bottom_sheet_slide_out.xml", "res/anim-v21/design_bottom_sheet_slide_in.xml", "res/values-v26/values-v26.xml", "res/color-v23/design_tint_password_toggle.xml", "res/drawable/design_snackbar_background.xml", "res/drawable/design_fab_background.xml", "res/drawable/design_password_eye.xml", "res/drawable/navigation_empty_icon.xml", "res/drawable/design_bottom_navigation_item_background.xml", "res/drawable-v21/avd_hide_password.xml", "res/drawable-v21/avd_show_password.xml", "res/drawable-v21/design_password_eye.xml", "res/drawable-v21/design_bottom_navigation_item_background.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_fragment_java.info b/build/secondary/third_party/android_tools/support/android_support_fragment_java.info deleted file mode 100644 index cd54060..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_fragment_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_media_compat_java.info b/build/secondary/third_party/android_tools/support/android_support_media_compat_java.info deleted file mode 100644 index 6140dd1..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_media_compat_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ "aidl/android/support/v4/media/session/PlaybackStateCompat.aidl", "aidl/android/support/v4/media/session/MediaSessionCompat.aidl", "aidl/android/support/v4/media/session/ParcelableVolumeInfo.aidl", "aidl/android/support/v4/media/RatingCompat.aidl", "aidl/android/support/v4/media/MediaMetadataCompat.aidl", "aidl/android/support/v4/media/MediaDescriptionCompat.aidl" ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/layout/notification_template_media_custom.xml", "res/layout/notification_template_big_media_narrow_custom.xml", "res/layout/notification_template_media.xml", "res/layout/notification_template_big_media.xml", "res/layout/notification_media_action.xml", "res/layout/notification_template_lines_media.xml", "res/layout/notification_media_cancel_action.xml", "res/layout/notification_template_big_media_custom.xml", "res/layout/notification_template_big_media_narrow.xml", "res/values-v21/values-v21.xml", "res/values/values.xml", "res/values-v24/values-v24.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_multidex_java.info b/build/secondary/third_party/android_tools/support/android_support_multidex_java.info deleted file mode 100644 index a2ebd4a..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_multidex_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = false -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_transition_java.info b/build/secondary/third_party/android_tools/support/android_support_transition_java.info deleted file mode 100644 index a25d255..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_transition_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v13_java.info b/build/secondary/third_party/android_tools/support/android_support_v13_java.info deleted file mode 100644 index cd54060..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v13_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v14_preference_java.info b/build/secondary/third_party/android_tools/support/android_support_v14_preference_java.info deleted file mode 100644 index 74388f4..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v14_preference_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/layout/preference_information_material.xml", "res/layout/preference_widget_seekbar_material.xml", "res/layout/preference_category_material.xml", "res/layout/preference_dropdown_material.xml", "res/layout/preference_widget_switch.xml", "res/layout/preference_material.xml", "res/values/values.xml", "res/values-v17/values-v17.xml", "res/drawable/preference_list_divider_material.xml", "res/layout-v21/preference_information_material.xml", "res/layout-v21/preference_category_material.xml", "res/layout-v21/preference_dropdown_material.xml", "res/layout-v21/preference_material.xml", "res/drawable-v21/preference_list_divider_material.xml", "res/layout-v17/preference_information_material.xml", "res/layout-v17/preference_category_material.xml", "res/layout-v17/preference_dropdown_material.xml", "res/layout-v17/preference_material.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v17_leanback_java.info b/build/secondary/third_party/android_tools/support/android_support_v17_leanback_java.info deleted file mode 100644 index 34d3693..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v17_leanback_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/lb_action_bg_focused.9.png", "res/drawable-hdpi-v4/lb_ic_search_mic.png", "res/drawable-hdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-hdpi-v4/lb_ic_search_mic_out.png", "res/drawable-hdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-hdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-hdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-hdpi-v4/lb_ic_sad_cloud.png", "res/drawable-hdpi-v4/lb_ic_in_app_search.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-v18/values-v18.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/lb_browse_fragment.xml", "res/layout/lb_image_card_view_themed_title.xml", "res/layout/lb_list_row_hovercard.xml", "res/layout/lb_guidedactions.xml", "res/layout/lb_guidedactions_item.xml", "res/layout/lb_playback_transport_controls.xml", "res/layout/lb_image_card_view_themed_content.xml", "res/layout/lb_image_card_view_themed_badge_right.xml", "res/layout/lb_image_card_view.xml", "res/layout/lb_media_item_number_view_flipper.xml", "res/layout/lb_title_view.xml", "res/layout/lb_browse_title.xml", "res/layout/lb_control_bar.xml", "res/layout/lb_divider.xml", "res/layout/lb_background_window.xml", "res/layout/lb_guidance.xml", "res/layout/lb_shadow.xml", "res/layout/lb_video_surface.xml", "res/layout/lb_control_button_primary.xml", "res/layout/lb_fullwidth_details_overview_logo.xml", "res/layout/lb_onboarding_fragment.xml", "res/layout/lb_error_fragment.xml", "res/layout/lb_vertical_grid_fragment.xml", "res/layout/lb_action_1_line.xml", "res/layout/video_surface_fragment.xml", "res/layout/lb_guidedbuttonactions.xml", "res/layout/lb_picker_item.xml", "res/layout/lb_guidedstep_background.xml", "res/layout/lb_details_fragment.xml", "res/layout/lb_playback_controls_row.xml", "res/layout/lb_row_header.xml", "res/layout/lb_playback_transport_controls_row.xml", "res/layout/lb_search_orb.xml", "res/layout/lb_guidedstep_fragment.xml", "res/layout/lb_picker.xml", "res/layout/lb_speech_orb.xml", "res/layout/lb_playback_now_playing_bars.xml", "res/layout/lb_list_row.xml", "res/layout/lb_row_media_item_action.xml", "res/layout/lb_vertical_grid.xml", "res/layout/lb_header.xml", "res/layout/lb_row_media_item.xml", "res/layout/lb_playback_fragment.xml", "res/layout/lb_search_fragment.xml", "res/layout/lb_playback_controls.xml", "res/layout/lb_section_header.xml", "res/layout/lb_guidedactions_datepicker_item.xml", "res/layout/lb_details_description.xml", "res/layout/lb_details_overview.xml", "res/layout/lb_picker_column.xml", "res/layout/lb_media_list_header.xml", "res/layout/lb_image_card_view_themed_badge_left.xml", "res/layout/lb_rows_fragment.xml", "res/layout/lb_headers_fragment.xml", "res/layout/lb_action_2_lines.xml", "res/layout/lb_control_button_secondary.xml", "res/layout/lb_search_bar.xml", "res/layout/lb_row_container.xml", "res/layout/lb_fullwidth_details_overview.xml", "res/layout/lb_picker_separator.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/lb_action_bg_focused.9.png", "res/drawable-xxhdpi-v4/lb_ic_search_mic.png", "res/drawable-xxhdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-xxhdpi-v4/lb_ic_search_mic_out.png", "res/drawable-xxhdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-xxhdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-xxhdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-xxhdpi-v4/lb_ic_sad_cloud.png", "res/drawable-xxhdpi-v4/lb_ic_in_app_search.png", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-v22/values-v22.xml", "res/animator-v21/lb_onboarding_logo_exit.xml", "res/animator-v21/lb_onboarding_title_enter.xml", "res/animator-v21/lb_playback_bg_fade_out.xml", "res/animator-v21/lb_playback_bg_fade_in.xml", "res/animator-v21/lb_playback_description_fade_out.xml", "res/animator-v21/lb_onboarding_description_enter.xml", "res/animator-v21/lb_onboarding_logo_enter.xml", "res/animator-v21/lb_onboarding_page_indicator_enter.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/lb_action_bg_focused.9.png", "res/drawable-mdpi-v4/lb_ic_search_mic.png", "res/drawable-mdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-mdpi-v4/lb_ic_search_mic_out.png", "res/drawable-mdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-mdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-mdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-mdpi-v4/lb_ic_sad_cloud.png", "res/drawable-mdpi-v4/lb_ic_in_app_search.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/lb_ic_pause.png", "res/drawable-xhdpi-v4/lb_ic_more.png", "res/drawable-xhdpi-v4/lb_action_bg_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_skip_next.png", "res/drawable-xhdpi-v4/lb_ic_search_mic.png", "res/drawable-xhdpi-v4/lb_ic_fast_forward.png", "res/drawable-xhdpi-v4/lb_ic_shuffle.png", "res/drawable-xhdpi-v4/lb_ic_hq.png", "res/drawable-xhdpi-v4/lb_ic_skip_previous.png", "res/drawable-xhdpi-v4/lb_ic_replay.png", "res/drawable-xhdpi-v4/lb_text_dot_two.png", "res/drawable-xhdpi-v4/lb_ic_cc.png", "res/drawable-xhdpi-v4/lb_ic_thumb_up_outline.png", "res/drawable-xhdpi-v4/lb_ic_thumb_up.png", "res/drawable-xhdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_playback_loop.png", "res/drawable-xhdpi-v4/lb_text_dot_one.png", "res/drawable-xhdpi-v4/lb_ic_search_mic_out.png", "res/drawable-xhdpi-v4/lb_ic_loop_one.png", "res/drawable-xhdpi-v4/lb_text_dot_one_small.png", "res/drawable-xhdpi-v4/lb_ic_stop.png", "res/drawable-xhdpi-v4/lb_ic_pip.png", "res/drawable-xhdpi-v4/lb_card_shadow_normal.9.png", "res/drawable-xhdpi-v4/lb_ic_nav_arrow.png", "res/drawable-xhdpi-v4/lb_text_dot_two_small.png", "res/drawable-xhdpi-v4/lb_ic_loop.png", "res/drawable-xhdpi-v4/lb_ic_play.png", "res/drawable-xhdpi-v4/lb_ic_play_fit.png", "res/drawable-xhdpi-v4/lb_ic_fast_rewind.png", "res/drawable-xhdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-xhdpi-v4/lb_ic_thumb_down_outline.png", "res/drawable-xhdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-xhdpi-v4/lb_card_shadow_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-xhdpi-v4/lb_ic_sad_cloud.png", "res/drawable-xhdpi-v4/lb_ic_thumb_down.png", "res/drawable-xhdpi-v4/lb_ic_guidedactions_item_chevron.png", "res/drawable-xhdpi-v4/lb_ic_in_app_search.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-ldrtl-v17/values-ldrtl-v17.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-v19/values-v19.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/raw/lb_voice_open.ogg", "res/raw/lb_voice_success.ogg", "res/raw/lb_voice_failure.ogg", "res/raw/lb_voice_no_input.ogg", "res/transition-v21/lb_browse_headers_out.xml", "res/transition-v21/lb_browse_enter_transition.xml", "res/transition-v21/lb_return_transition.xml", "res/transition-v21/lb_details_return_transition.xml", "res/transition-v21/lb_browse_entrance_transition.xml", "res/transition-v21/lb_details_enter_transition.xml", "res/transition-v21/lb_enter_transition.xml", "res/transition-v21/lb_vertical_grid_entrance_transition.xml", "res/transition-v21/lb_shared_element_enter_transition.xml", "res/transition-v21/lb_guidedstep_activity_enter.xml", "res/transition-v21/lb_shared_element_return_transition.xml", "res/transition-v21/lb_title_in.xml", "res/transition-v21/lb_guidedstep_activity_enter_bottom.xml", "res/transition-v21/lb_title_out.xml", "res/transition-v21/lb_browse_return_transition.xml", "res/transition-v21/lb_vertical_grid_enter_transition.xml", "res/transition-v21/lb_vertical_grid_return_transition.xml", "res/transition-v21/lb_browse_headers_in.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/anim/lb_decelerator_4.xml", "res/anim/lb_decelerator_2.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/animator/lb_onboarding_page_indicator_fade_in.xml", "res/animator/lb_guidedstep_slide_down.xml", "res/animator/lb_onboarding_logo_exit.xml", "res/animator/lb_onboarding_title_enter.xml", "res/animator/lb_onboarding_start_button_fade_out.xml", "res/animator/lb_playback_rows_fade_out.xml", "res/animator/lb_playback_controls_fade_in.xml", "res/animator/lb_playback_description_fade_in.xml", "res/animator/lb_playback_bg_fade_out.xml", "res/animator/lb_playback_bg_fade_in.xml", "res/animator/lb_guidedactions_item_unpressed.xml", "res/animator/lb_playback_description_fade_out.xml", "res/animator/lb_onboarding_start_button_fade_in.xml", "res/animator/lb_playback_rows_fade_in.xml", "res/animator/lb_guidedactions_item_pressed.xml", "res/animator/lb_onboarding_description_enter.xml", "res/animator/lb_guidedstep_slide_up.xml", "res/animator/lb_onboarding_logo_enter.xml", "res/animator/lb_onboarding_page_indicator_enter.xml", "res/animator/lb_playback_controls_fade_out.xml", "res/animator/lb_onboarding_page_indicator_fade_out.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-ne/values-ne.xml", "res/transition-v19/lb_browse_headers_out.xml", "res/transition-v19/lb_browse_headers_in.xml", "res/drawable/lb_card_foreground.xml", "res/drawable/lb_control_button_primary.xml", "res/drawable/lb_playback_progress_bar.xml", "res/drawable/lb_onboarding_start_button_background.xml", "res/drawable/lb_search_orb.xml", "res/drawable/lb_speech_orb.xml", "res/drawable/lb_headers_right_fading.xml", "res/drawable/lb_background.xml", "res/drawable/lb_playback_now_playing_bar.xml", "res/drawable/lb_control_button_secondary.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/lb_card_foreground.xml", "res/drawable-v21/lb_selectable_item_rounded_rect.xml", "res/drawable-v21/lb_control_button_primary.xml", "res/drawable-v21/lb_action_bg.xml", "res/drawable-v21/lb_control_button_secondary.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v17_preference_java.info b/build/secondary/third_party/android_tools/support/android_support_v17_preference_java.info deleted file mode 100644 index 87ea13e..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v17_preference_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/layout/leanback_preference_widget_seekbar.xml", "res/layout/leanback_preference_information.xml", "res/layout/leanback_preference.xml", "res/layout/leanback_preferences_list.xml", "res/layout/leanback_settings_fragment.xml", "res/layout/leanback_list_preference_item_single.xml", "res/layout/leanback_preference_category.xml", "res/layout/leanback_list_preference_fragment.xml", "res/layout/leanback_list_preference_item_multi.xml", "res/layout/leanback_preference_fragment.xml", "res/color/lb_preference_item_primary_text_color.xml", "res/color/lb_preference_item_secondary_text_color.xml", "res/values/values.xml", "res/layout-v21/leanback_settings_fragment.xml", "res/layout-v21/leanback_preference_category.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v7_appcompat_java_internal.info b/build/secondary/third_party/android_tools/support/android_support_v7_appcompat_java_internal.info deleted file mode 100644 index e99e4de..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v7_appcompat_java_internal.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-hdpi-v4/abc_list_focused_holo.9.png", "res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-v18/values-v18.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/abc_list_menu_item_layout.xml", "res/layout/abc_action_menu_layout.xml", "res/layout/abc_search_dropdown_item_icons_2line.xml", "res/layout/support_simple_spinner_dropdown_item.xml", "res/layout/abc_screen_simple.xml", "res/layout/abc_action_menu_item_layout.xml", "res/layout/abc_list_menu_item_radio.xml", "res/layout/abc_alert_dialog_title_material.xml", "res/layout/abc_alert_dialog_material.xml", "res/layout/abc_screen_toolbar.xml", "res/layout/abc_screen_simple_overlay_action_mode.xml", "res/layout/abc_select_dialog_material.xml", "res/layout/abc_action_mode_bar.xml", "res/layout/abc_dialog_title_material.xml", "res/layout/abc_list_menu_item_checkbox.xml", "res/layout/abc_popup_menu_header_item_layout.xml", "res/layout/abc_action_bar_up_container.xml", "res/layout/select_dialog_singlechoice_material.xml", "res/layout/abc_action_mode_close_item_material.xml", "res/layout/tooltip.xml", "res/layout/select_dialog_multichoice_material.xml", "res/layout/abc_action_bar_title_item.xml", "res/layout/abc_activity_chooser_view_list_item.xml", "res/layout/abc_popup_menu_item_layout.xml", "res/layout/abc_alert_dialog_button_bar_material.xml", "res/layout/abc_list_menu_item_icon.xml", "res/layout/abc_expanded_menu_layout.xml", "res/layout/select_dialog_item_material.xml", "res/layout/abc_activity_chooser_view.xml", "res/layout/abc_search_view.xml", "res/layout/abc_screen_content_include.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-hdpi-v4/values-hdpi-v4.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-v14/values-v14.xml", "res/values-ta/values-ta.xml", "res/values-v23/values-v23.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png", "res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/color/abc_search_url_text.xml", "res/color/abc_btn_colored_borderless_text_material.xml", "res/color/abc_primary_text_material_light.xml", "res/color/abc_tint_seek_thumb.xml", "res/color/abc_tint_btn_checkable.xml", "res/color/abc_secondary_text_material_dark.xml", "res/color/abc_tint_edittext.xml", "res/color/abc_tint_spinner.xml", "res/color/abc_primary_text_material_dark.xml", "res/color/abc_secondary_text_material_light.xml", "res/color/switch_thumb_material_dark.xml", "res/color/abc_hint_foreground_material_dark.xml", "res/color/abc_tint_switch_track.xml", "res/color/abc_primary_text_disable_only_material_dark.xml", "res/color/abc_btn_colored_text_material.xml", "res/color/abc_hint_foreground_material_light.xml", "res/color/switch_thumb_material_light.xml", "res/color/abc_tint_default.xml", "res/color/abc_primary_text_disable_only_material_light.xml", "res/values-ldltr-v21/values-ldltr-v21.xml", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-large-v4/values-large-v4.xml", "res/values-v11/values-v11.xml", "res/color-v11/abc_background_cache_hint_selector_material_light.xml", "res/color-v11/abc_background_cache_hint_selector_material_dark.xml", "res/values-pa/values-pa.xml", "res/values-v22/values-v22.xml", "res/values-v25/values-v25.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/values-v12/values-v12.xml", "res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-mdpi-v4/abc_list_focused_holo.9.png", "res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-v24/values-v24.xml", "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-xhdpi-v4/abc_list_focused_holo.9.png", "res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-land/values-land.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-xlarge-v4/values-xlarge-v4.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/anim/abc_shrink_fade_out_from_bottom.xml", "res/anim/abc_slide_in_bottom.xml", "res/anim/abc_fade_out.xml", "res/anim/abc_slide_in_top.xml", "res/anim/abc_slide_out_top.xml", "res/anim/tooltip_exit.xml", "res/anim/abc_popup_exit.xml", "res/anim/abc_grow_fade_in_from_bottom.xml", "res/anim/tooltip_enter.xml", "res/anim/abc_fade_in.xml", "res/anim/abc_slide_out_bottom.xml", "res/anim/abc_popup_enter.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-night-v8/values-night-v8.xml", "res/drawable-v23/abc_control_background_material.xml", "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-v16/values-v16.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/layout-v26/abc_screen_toolbar.xml", "res/values-v26/values-v26.xml", "res/values-port/values-port.xml", "res/color-v23/abc_btn_colored_borderless_text_material.xml", "res/color-v23/abc_color_highlight_material.xml", "res/color-v23/abc_tint_seek_thumb.xml", "res/color-v23/abc_tint_btn_checkable.xml", "res/color-v23/abc_tint_edittext.xml", "res/color-v23/abc_tint_spinner.xml", "res/color-v23/abc_tint_switch_track.xml", "res/color-v23/abc_btn_colored_text_material.xml", "res/color-v23/abc_tint_default.xml", "res/values-v17/values-v17.xml", "res/values-ne/values-ne.xml", "res/values-v13/values-v13.xml", "res/drawable/abc_tab_indicator_material.xml", "res/drawable/abc_item_background_holo_dark.xml", "res/drawable/abc_edit_text_material.xml", "res/drawable/abc_ic_voice_search_api_material.xml", "res/drawable/abc_ic_menu_overflow_material.xml", "res/drawable/abc_ic_search_api_material.xml", "res/drawable/abc_cab_background_top_material.xml", "res/drawable/abc_list_selector_holo_light.xml", "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml", "res/drawable/abc_spinner_textfield_background_material.xml", "res/drawable/abc_ratingbar_small_material.xml", "res/drawable/tooltip_frame_dark.xml", "res/drawable/abc_item_background_holo_light.xml", "res/drawable/abc_btn_colored_material.xml", "res/drawable/abc_ratingbar_material.xml", "res/drawable/abc_cab_background_internal_bg.xml", "res/drawable/abc_btn_radio_material.xml", "res/drawable/tooltip_frame_light.xml", "res/drawable/abc_ic_clear_material.xml", "res/drawable/abc_ic_ab_back_material.xml", "res/drawable/abc_textfield_search_material.xml", "res/drawable/abc_ic_go_search_api_material.xml", "res/drawable/abc_seekbar_track_material.xml", "res/drawable/abc_dialog_material_background.xml", "res/drawable/abc_seekbar_tick_mark_material.xml", "res/drawable/abc_list_selector_background_transition_holo_light.xml", "res/drawable/abc_text_cursor_material.xml", "res/drawable/abc_btn_default_mtrl_shape.xml", "res/drawable/abc_ratingbar_indicator_material.xml", "res/drawable/abc_switch_thumb_material.xml", "res/drawable/abc_seekbar_thumb_material.xml", "res/drawable/abc_list_selector_background_transition_holo_dark.xml", "res/drawable/abc_btn_check_material.xml", "res/drawable/abc_list_selector_holo_dark.xml", "res/drawable/abc_btn_borderless_material.xml", "res/drawable/abc_vector_test.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-h720dp-v13/values-h720dp-v13.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/abc_edit_text_material.xml", "res/drawable-v21/abc_btn_colored_material.xml", "res/drawable-v21/abc_action_bar_item_background_material.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v7_gridlayout_java.info b/build/secondary/third_party/android_tools/support/android_support_v7_gridlayout_java.info deleted file mode 100644 index 28c8330..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v7_gridlayout_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v7_mediarouter_java.info b/build/secondary/third_party/android_tools/support/android_support_v7_mediarouter_java.info deleted file mode 100644 index 6fc7871..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v7_mediarouter_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/ic_dialog_close_light.png", "res/drawable-hdpi-v4/ic_media_pause_light.png", "res/drawable-hdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-hdpi-v4/ic_mr_button_grey.png", "res/drawable-hdpi-v4/ic_media_play_light.png", "res/drawable-hdpi-v4/ic_dialog_close_dark.png", "res/drawable-hdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-hdpi-v4/ic_media_pause_dark.png", "res/drawable-hdpi-v4/ic_vol_type_tv_light.png", "res/drawable-hdpi-v4/ic_media_stop_dark.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-hdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-hdpi-v4/ic_audiotrack_light.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-hdpi-v4/ic_media_stop_light.png", "res/drawable-hdpi-v4/ic_media_play_dark.png", "res/drawable-hdpi-v4/ic_audiotrack_dark.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-hdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-hdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_group_light.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/interpolator/mr_fast_out_slow_in.xml", "res/interpolator/mr_linear_out_slow_in.xml", "res/layout/mr_controller_material_dialog_b.xml", "res/layout/mr_volume_control.xml", "res/layout/mr_controller_volume_item.xml", "res/layout/mr_chooser_list_item.xml", "res/layout/mr_chooser_dialog.xml", "res/layout/mr_playback_control.xml", "res/values-ms/values-ms.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/ic_mr_button_connected_28_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_00_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_28_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_04_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_28_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_06_light.png", "res/drawable-xxhdpi-v4/ic_dialog_close_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_29_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_01_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_23_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_18_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_04_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_12_light.png", "res/drawable-xxhdpi-v4/ic_media_pause_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_grey.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_14_dark.png", "res/drawable-xxhdpi-v4/ic_media_play_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_12_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_14_light.png", "res/drawable-xxhdpi-v4/ic_dialog_close_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_30_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_27_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_07_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_25_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_18_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_23_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_11_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_08_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_02_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_22_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_08_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_20_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_18_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_19_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_05_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_10_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_02_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_25_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_18_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_22_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_22_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_24_dark.png", "res/drawable-xxhdpi-v4/ic_media_pause_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_29_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_03_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_tv_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_11_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_30_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_23_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_29_dark.png", "res/drawable-xxhdpi-v4/ic_media_stop_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_27_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_25_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_06_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_00_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_02_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_17_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_03_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_09_dark.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_00_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_24_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_26_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_29_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_30_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_05_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_08_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_15_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_17_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_26_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_24_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_16_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_27_dark.png", "res/drawable-xxhdpi-v4/ic_audiotrack_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_13_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_16_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_04_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_13_light.png", "res/drawable-xxhdpi-v4/ic_media_stop_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_17_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_16_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_16_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_01_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_07_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_13_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_19_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_00_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_14_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_03_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_15_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_20_light.png", "res/drawable-xxhdpi-v4/ic_media_play_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_03_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_27_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_21_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_28_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_02_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_10_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_23_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_15_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_21_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_05_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_19_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_20_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_06_dark.png", "res/drawable-xxhdpi-v4/ic_audiotrack_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_21_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_09_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_20_dark.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_19_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_22_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_25_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_09_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_11_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_12_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_10_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_13_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_24_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_01_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_26_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_26_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_07_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_04_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_10_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_17_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_05_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_07_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_15_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_08_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_11_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_09_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_12_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_group_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_14_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_21_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_30_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_06_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_01_dark.png", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/ic_dialog_close_light.png", "res/drawable-mdpi-v4/ic_media_pause_light.png", "res/drawable-mdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-mdpi-v4/ic_mr_button_grey.png", "res/drawable-mdpi-v4/ic_media_play_light.png", "res/drawable-mdpi-v4/ic_dialog_close_dark.png", "res/drawable-mdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-mdpi-v4/ic_media_pause_dark.png", "res/drawable-mdpi-v4/ic_vol_type_tv_light.png", "res/drawable-mdpi-v4/ic_media_stop_dark.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-mdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-mdpi-v4/ic_audiotrack_light.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-mdpi-v4/ic_media_stop_light.png", "res/drawable-mdpi-v4/ic_media_play_dark.png", "res/drawable-mdpi-v4/ic_audiotrack_dark.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-mdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-mdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_group_light.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/ic_mr_button_connected_28_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_00_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_28_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_04_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_28_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_06_light.png", "res/drawable-xhdpi-v4/ic_dialog_close_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_29_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_01_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_23_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_18_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_04_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_12_light.png", "res/drawable-xhdpi-v4/ic_media_pause_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-xhdpi-v4/ic_mr_button_grey.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_14_dark.png", "res/drawable-xhdpi-v4/ic_media_play_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_12_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_14_light.png", "res/drawable-xhdpi-v4/ic_dialog_close_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_30_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_27_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_07_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_25_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_18_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_23_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_11_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_08_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_02_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_22_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_08_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_20_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_18_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_19_light.png", "res/drawable-xhdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_05_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_10_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_02_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_25_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_18_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_22_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_22_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_24_dark.png", "res/drawable-xhdpi-v4/ic_media_pause_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_29_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_03_light.png", "res/drawable-xhdpi-v4/ic_vol_type_tv_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_11_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_30_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_23_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_29_dark.png", "res/drawable-xhdpi-v4/ic_media_stop_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_27_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_25_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_06_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_00_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_02_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_17_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_03_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_09_dark.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_00_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_24_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_26_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_29_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_30_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_05_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_08_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_15_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_17_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_26_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_24_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_16_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_27_dark.png", "res/drawable-xhdpi-v4/ic_audiotrack_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_13_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_16_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_04_light.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_13_light.png", "res/drawable-xhdpi-v4/ic_media_stop_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_17_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_16_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_16_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_01_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_07_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_13_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_19_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_00_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_14_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_03_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_15_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_20_light.png", "res/drawable-xhdpi-v4/ic_media_play_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_03_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_27_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_21_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_28_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_02_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_10_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_23_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_15_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_21_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_05_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_19_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_20_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_06_dark.png", "res/drawable-xhdpi-v4/ic_audiotrack_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_21_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_09_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_20_dark.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_19_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_22_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_25_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_09_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_11_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_12_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_10_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_13_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_24_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_01_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_26_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_26_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_07_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_04_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_10_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_17_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_05_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_07_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_15_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_08_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_11_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_09_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_12_light.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_group_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_14_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_21_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_30_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_06_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_01_dark.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-land/values-land.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/drawable-xxxhdpi-v4/ic_group_collapse_13.png", "res/drawable-xxxhdpi-v4/ic_mr_button_grey.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_09.png", "res/drawable-xxxhdpi-v4/ic_group_expand_06.png", "res/drawable-xxxhdpi-v4/ic_group_expand_03.png", "res/drawable-xxxhdpi-v4/ic_group_expand_09.png", "res/drawable-xxxhdpi-v4/ic_group_expand_07.png", "res/drawable-xxxhdpi-v4/ic_group_expand_08.png", "res/drawable-xxxhdpi-v4/ic_group_expand_14.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_04.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_14.png", "res/drawable-xxxhdpi-v4/ic_group_expand_04.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_05.png", "res/drawable-xxxhdpi-v4/ic_group_expand_11.png", "res/drawable-xxxhdpi-v4/ic_group_expand_10.png", "res/drawable-xxxhdpi-v4/ic_group_expand_05.png", "res/drawable-xxxhdpi-v4/ic_group_expand_13.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_06.png", "res/drawable-xxxhdpi-v4/ic_group_expand_15.png", "res/drawable-xxxhdpi-v4/ic_group_expand_02.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_10.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_15.png", "res/drawable-xxxhdpi-v4/ic_group_expand_00.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_02.png", "res/drawable-xxxhdpi-v4/ic_group_expand_12.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_03.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_08.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_01.png", "res/drawable-xxxhdpi-v4/ic_group_expand_01.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_00.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_12.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_07.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_11.png", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-sw720dp-v13/values-sw720dp-v13.xml", "res/values-ne/values-ne.xml", "res/drawable/mr_media_pause_dark.xml", "res/drawable/mr_dialog_close_dark.xml", "res/drawable/mr_media_stop_light.xml", "res/drawable/mr_button_dark.xml", "res/drawable/mr_button_connected_dark.xml", "res/drawable/mr_dialog_material_background_dark.xml", "res/drawable/mr_button_connecting_light.xml", "res/drawable/mr_media_play_light.xml", "res/drawable/mr_media_pause_light.xml", "res/drawable/mr_dialog_material_background_light.xml", "res/drawable/mr_button_connecting_dark.xml", "res/drawable/mr_media_stop_dark.xml", "res/drawable/mr_dialog_close_light.xml", "res/drawable/mr_group_expand.xml", "res/drawable/mr_vol_type_audiotrack_dark.xml", "res/drawable/mr_vol_type_audiotrack_light.xml", "res/drawable/mr_media_play_dark.xml", "res/drawable/mr_group_collapse.xml", "res/drawable/mr_button_light.xml", "res/drawable/mr_button_connected_light.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v7_palette_java.info b/build/secondary/third_party/android_tools/support/android_support_v7_palette_java.info deleted file mode 100644 index cd54060..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v7_palette_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v7_preference_java.info b/build/secondary/third_party/android_tools/support/android_support_v7_preference_java.info deleted file mode 100644 index 25a4927..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v7_preference_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/layout-v11/preference.xml", "res/layout-v11/preference_dropdown.xml", "res/layout/preference_recyclerview.xml", "res/layout/preference_widget_checkbox.xml", "res/layout/preference_widget_seekbar.xml", "res/layout/preference_widget_switch_compat.xml", "res/layout/preference_list_fragment.xml", "res/layout/preference_dialog_edittext.xml", "res/layout/preference_information.xml", "res/layout/preference_category.xml", "res/values/values.xml", "res/values-v17/values-v17.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_v7_recyclerview_java.info b/build/secondary/third_party/android_tools/support/android_support_v7_recyclerview_java.info deleted file mode 100644 index a25d255..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_v7_recyclerview_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = true -has_r_text_file = true -is_manifest_empty = true -resources = [ "res/values/values.xml" ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/android_tools/support/android_support_vector_drawable_java.info b/build/secondary/third_party/android_tools/support/android_support_vector_drawable_java.info deleted file mode 100644 index cd54060..0000000 --- a/build/secondary/third_party/android_tools/support/android_support_vector_drawable_java.info +++ /dev/null
@@ -1,13 +0,0 @@ -# Generated by //build/android/gyp/aar.py -# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen". - -aidl = [ ] -assets = [ ] -has_classes_jar = true -has_native_libraries = false -has_proguard_flags = false -has_r_text_file = true -is_manifest_empty = true -resources = [ ] -subjar_tuples = [ ] -subjars = [ ]
diff --git a/build/secondary/third_party/catapult/devil/BUILD.gn b/build/secondary/third_party/catapult/devil/BUILD.gn deleted file mode 100644 index 5e9707e..0000000 --- a/build/secondary/third_party/catapult/devil/BUILD.gn +++ /dev/null
@@ -1,50 +0,0 @@ -# Copyright 2017 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/symlink.gni") -import("//build/secondary/third_party/catapult/devil/devil_arm.gni") -import("//testing/android/empty_apk/empty_apk.gni") - -empty_apk("empty_system_webview_apk") { - package_name = "com.android.webview" - apk_name = "EmptySystemWebView" -} - -group("devil") { - testonly = true - deps = [ - ":empty_system_webview_apk", - "//buildtools/third_party/libc++($host_toolchain)", - "//tools/android/forwarder2", - "//tools/android/md5sum", - ] - - if (build_devil_arm_deps) { - deps += [ - ":host_forwarder_arm", - ":libcxx_arm", - ":md5sum_bin_host_arm", - ] - } -} - -if (build_devil_arm_deps) { - binary_symlink("host_forwarder_arm") { - binary_label = "//tools/android/forwarder2:host_forwarder(//build/toolchain/linux:clang_arm)" - output_name = "host_forwarder_arm" - } - - binary_symlink("md5sum_bin_host_arm") { - binary_label = - "//tools/android/md5sum:md5sum_bin(//build/toolchain/linux:clang_arm)" - output_name = "md5sum_bin_host_arm" - } - - binary_symlink("libcxx_arm") { - binary_label = - "//buildtools/third_party/libc++(//build/toolchain/linux:clang_arm)" - binary_output_name = "libc++.so" - output_name = "libc++_arm" - } -}
diff --git a/build/secondary/third_party/catapult/devil/devil_arm.gni b/build/secondary/third_party/catapult/devil/devil_arm.gni deleted file mode 100644 index 04c5e40..0000000 --- a/build/secondary/third_party/catapult/devil/devil_arm.gni +++ /dev/null
@@ -1,9 +0,0 @@ -# Copyright 2018 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. - -declare_args() { - # Whether to build Devil host dependencies for Linux arm, e.g. for use on - # Raspberry Pis. - build_devil_arm_deps = false -}
diff --git a/build/secondary/third_party/libjpeg_turbo/BUILD.gn b/build/secondary/third_party/libjpeg_turbo/BUILD.gn deleted file mode 100644 index 265d30b..0000000 --- a/build/secondary/third_party/libjpeg_turbo/BUILD.gn +++ /dev/null
@@ -1,221 +0,0 @@ -# Copyright 2014 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. - -# Do not use the targets in this file unless you need a certain libjpeg -# implementation. Use the meta target //third_party:jpeg instead. - -import("//build/config/sanitizers/sanitizers.gni") -if (current_cpu == "arm") { - import("//build/config/arm.gni") -} - -assert(!is_ios, "This is not used on iOS, don't drag it in unintentionally") - -if (current_cpu == "x86" || current_cpu == "x64") { - import("//third_party/yasm/yasm_assemble.gni") - - yasm_assemble("simd_asm") { - defines = [] - - if (current_cpu == "x86") { - sources = [ - "simd/jccolor-mmx.asm", - "simd/jccolor-sse2.asm", - "simd/jcgray-mmx.asm", - "simd/jcgray-sse2.asm", - "simd/jchuff-sse2.asm", - "simd/jcsample-mmx.asm", - "simd/jcsample-sse2.asm", - "simd/jdcolor-mmx.asm", - "simd/jdcolor-sse2.asm", - "simd/jdmerge-mmx.asm", - "simd/jdmerge-sse2.asm", - "simd/jdsample-mmx.asm", - "simd/jdsample-sse2.asm", - "simd/jfdctflt-3dn.asm", - "simd/jfdctflt-sse.asm", - "simd/jfdctfst-mmx.asm", - "simd/jfdctfst-sse2.asm", - "simd/jfdctint-mmx.asm", - "simd/jfdctint-sse2.asm", - "simd/jidctflt-3dn.asm", - "simd/jidctflt-sse.asm", - "simd/jidctflt-sse2.asm", - "simd/jidctfst-mmx.asm", - "simd/jidctfst-sse2.asm", - "simd/jidctint-mmx.asm", - "simd/jidctint-sse2.asm", - "simd/jidctred-mmx.asm", - "simd/jidctred-sse2.asm", - "simd/jquant-3dn.asm", - "simd/jquant-mmx.asm", - "simd/jquant-sse.asm", - "simd/jquantf-sse2.asm", - "simd/jquanti-sse2.asm", - "simd/jsimdcpu.asm", - ] - defines += [ - "__x86__", - "PIC", - ] - } else if (current_cpu == "x64") { - sources = [ - "simd/jccolor-sse2-64.asm", - "simd/jcgray-sse2-64.asm", - "simd/jchuff-sse2-64.asm", - "simd/jcsample-sse2-64.asm", - "simd/jdcolor-sse2-64.asm", - "simd/jdmerge-sse2-64.asm", - "simd/jdsample-sse2-64.asm", - "simd/jfdctflt-sse-64.asm", - "simd/jfdctfst-sse2-64.asm", - "simd/jfdctint-sse2-64.asm", - "simd/jidctflt-sse2-64.asm", - "simd/jidctfst-sse2-64.asm", - "simd/jidctint-sse2-64.asm", - "simd/jidctred-sse2-64.asm", - "simd/jquantf-sse2-64.asm", - "simd/jquanti-sse2-64.asm", - ] - defines += [ - "__x86_64__", - "PIC", - ] - } - - if (is_win) { - defines += [ "MSVC" ] - if (current_cpu == "x86") { - defines += [ "WIN32" ] - } else { - defines += [ "WIN64" ] - } - } else if (is_mac || is_ios) { - defines += [ "MACHO" ] - } else if (is_linux || is_android || is_fuchsia) { - defines += [ "ELF" ] - } - } -} - -static_library("simd") { - if (current_cpu == "x86") { - deps = [ - ":simd_asm", - ] - sources = [ - "simd/jsimd_i386.c", - ] - } else if (current_cpu == "x64") { - deps = [ - ":simd_asm", - ] - sources = [ - "simd/jsimd_x86_64.c", - ] - } else if (current_cpu == "arm" && arm_version >= 7 && - (arm_use_neon || arm_optionally_use_neon)) { - sources = [ - "simd/jsimd_arm.c", - "simd/jsimd_arm_neon.S", - ] - } else if (current_cpu == "arm64") { - sources = [ - "simd/jsimd_arm64.c", - "simd/jsimd_arm64_neon.S", - ] - } else { - sources = [ - "jsimd_none.c", - ] - } - - if (is_win) { - cflags = [ "/wd4245" ] - } -} - -config("libjpeg_config") { - include_dirs = [ "." ] -} - -static_library("libjpeg") { - sources = [ - "jcapimin.c", - "jcapistd.c", - "jccoefct.c", - "jccolor.c", - "jcdctmgr.c", - "jchuff.c", - "jchuff.h", - "jcinit.c", - "jcmainct.c", - "jcmarker.c", - "jcmaster.c", - "jcomapi.c", - "jconfig.h", - "jcparam.c", - "jcphuff.c", - "jcprepct.c", - "jcsample.c", - "jdapimin.c", - "jdapistd.c", - "jdatadst.c", - "jdatasrc.c", - "jdcoefct.c", - "jdcolor.c", - "jdct.h", - "jddctmgr.c", - "jdhuff.c", - "jdhuff.h", - "jdinput.c", - "jdmainct.c", - "jdmarker.c", - "jdmaster.c", - "jdmerge.c", - "jdphuff.c", - "jdpostct.c", - "jdsample.c", - "jerror.c", - "jerror.h", - "jfdctflt.c", - "jfdctfst.c", - "jfdctint.c", - "jidctflt.c", - "jidctfst.c", - "jidctint.c", - "jidctred.c", - "jinclude.h", - "jmemmgr.c", - "jmemnobs.c", - "jmemsys.h", - "jmorecfg.h", - "jpegint.h", - "jpeglib.h", - "jpeglibmangler.h", - "jquant1.c", - "jquant2.c", - "jutils.c", - "jversion.h", - ] - - defines = [ - "WITH_SIMD", - "NO_GETENV", - ] - - configs += [ ":libjpeg_config" ] - - public_configs = [ ":libjpeg_config" ] - - # MemorySanitizer doesn't support assembly code, so keep it disabled in - # MSan builds for now. - if (is_msan) { - sources += [ "jsimd_none.c" ] - } else { - deps = [ - ":simd", - ] - } -}
diff --git a/build/secondary/third_party/nss/BUILD.gn b/build/secondary/third_party/nss/BUILD.gn deleted file mode 100644 index 5788f3e..0000000 --- a/build/secondary/third_party/nss/BUILD.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2014 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/config/linux/pkg_config.gni") - -if (is_linux) { - # This is a dependency on NSS with no libssl. On Linux we use a built-in SSL - # library but the system NSS libraries. Non-Linux platforms using NSS use the - # hermetic one in //third_party/nss. - # - # Generally you should depend on //crypto:platform instead of using this - # config since that will properly pick up NSS or OpenSSL depending on - # platform and build config. - pkg_config("system_nss_no_ssl_config") { - packages = [ "nss" ] - extra_args = [ - "-v", - "-lssl3", - ] - } -}
diff --git a/build/shim_headers.gni b/build/shim_headers.gni deleted file mode 100644 index 5659148..0000000 --- a/build/shim_headers.gni +++ /dev/null
@@ -1,41 +0,0 @@ -# Copyright 2016 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. - -template("shim_headers") { - action_name = "gen_${target_name}" - config_name = "${target_name}_config" - shim_headers_path = "${root_gen_dir}/shim_headers/${target_name}" - - config(config_name) { - include_dirs = [ shim_headers_path ] - } - - action(action_name) { - script = "//tools/generate_shim_headers/generate_shim_headers.py" - args = [ - "--generate", - "--headers-root", - rebase_path(invoker.root_path), - "--output-directory", - rebase_path(shim_headers_path), - ] - if (defined(invoker.prefix)) { - args += [ - "--prefix", - invoker.prefix, - ] - } - args += invoker.headers - - outputs = process_file_template(invoker.headers, - "${shim_headers_path}/{{source_file_part}}") - } - - group(target_name) { - deps = [ - ":${action_name}", - ] - all_dependent_configs = [ ":${config_name}" ] - } -}
diff --git a/build/split_static_library.gni b/build/split_static_library.gni deleted file mode 100644 index ea378e3..0000000 --- a/build/split_static_library.gni +++ /dev/null
@@ -1,73 +0,0 @@ -# Copyright 2016 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. - -template("split_static_library") { - assert(defined(invoker.split_count), - "Must define split_count for split_static_library") - - # In many conditions the number of inputs will be 1 (because the count will - # be conditional on platform or configuration) so optimize that. - if (invoker.split_count == 1) { - static_library(target_name) { - forward_variables_from(invoker, "*") - } - } else { - group_name = target_name - - generated_static_libraries = [] - current_library_index = 0 - foreach(current_sources, split_list(invoker.sources, invoker.split_count)) { - current_name = "${target_name}_$current_library_index" - assert( - current_sources != [], - "Your values for splitting a static library generate one that has no sources.") - generated_static_libraries += [ ":$current_name" ] - - static_library(current_name) { - # Generated static library shard gets everything but sources (which - # we're redefining) and visibility (which is set to be the group - # below). - forward_variables_from(invoker, - "*", - [ - "check_includes", - "sources", - "visibility", - ]) - sources = current_sources - visibility = [ ":$group_name" ] - - # When splitting a target's sources up into a series of static - # libraries, those targets will naturally include headers from each - # other arbitrarily. We could theoretically generate a web of - # dependencies and allow_circular_includes_from between all pairs of - # targets, but that's very cumbersome. Typical usage in Chrome is that - # only official Windows builds use split static libraries due to the - # Visual Studio size limits, and this means we'll still get header - # checking coverage for the other configurations. - check_includes = false - - # Uniquify the output name if one is specified. - if (defined(invoker.output_name)) { - output_name = "${invoker.output_name}_$current_library_index" - } - } - - current_library_index = current_library_index + 1 - } - - group(group_name) { - public_deps = generated_static_libraries - forward_variables_from(invoker, - [ - "testonly", - "visibility", - ]) - } - } -} - -set_defaults("split_static_library") { - configs = default_compiler_configs -}
diff --git a/build/swarming_xcode_install.py b/build/swarming_xcode_install.py deleted file mode 100755 index 7764aa5..0000000 --- a/build/swarming_xcode_install.py +++ /dev/null
@@ -1,64 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -""" -Script used to install Xcode on the swarming bots. -""" - -import os -import shutil -import subprocess -import sys -import tarfile -import tempfile - -import mac_toolchain - -VERSION = '9A235' -URL = 'gs://chrome-mac-sdk/ios-toolchain-9A235-1.tgz' -REMOVE_DIR = '/Applications/Xcode9.0-Beta4.app/' -OUTPUT_DIR = '/Applications/Xcode9.0.app/' - -def main(): - # Check if it's already installed. - if os.path.exists(OUTPUT_DIR): - env = os.environ.copy() - env['DEVELOPER_DIR'] = OUTPUT_DIR - cmd = ['xcodebuild', '-version'] - found_version = \ - subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE).communicate()[0] - if VERSION in found_version: - print "Xcode %s already installed" % VERSION - sys.exit(0) - - # Confirm old dir is there first. - if not os.path.exists(REMOVE_DIR): - print "Failing early since %s isn't there." % REMOVE_DIR - sys.exit(1) - - # Download Xcode. - with tempfile.NamedTemporaryFile() as temp: - env = os.environ.copy() - env['PATH'] += ":/b/depot_tools" - subprocess.check_call(['gsutil.py', 'cp', URL, temp.name], env=env) - if os.path.exists(OUTPUT_DIR): - shutil.rmtree(OUTPUT_DIR) - if not os.path.exists(OUTPUT_DIR): - os.makedirs(OUTPUT_DIR) - tarfile.open(mode='r:gz', name=temp.name).extractall(path=OUTPUT_DIR) - - # Accept license, call runFirstLaunch. - mac_toolchain.FinalizeUnpack(OUTPUT_DIR, 'ios') - - # Set new Xcode as default. - subprocess.check_call(['sudo', '/usr/bin/xcode-select', '-s', OUTPUT_DIR]) - - if os.path.exists(REMOVE_DIR): - shutil.rmtree(REMOVE_DIR) - - -if __name__ == '__main__': - sys.exit(main()) -
diff --git a/build/symlink.gni b/build/symlink.gni deleted file mode 100644 index 4da5a57..0000000 --- a/build/symlink.gni +++ /dev/null
@@ -1,85 +0,0 @@ -# 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. - -# Creates a symlink. -# Args: -# source: Path to link to. -# output: Where to create the symlink. -template("symlink") { - action(target_name) { - forward_variables_from(invoker, - [ - "data_deps", - "deps", - "testonly", - "visibility", - ]) - outputs = [ - invoker.output, - ] - script = "//build/symlink.py" - args = [ - "-f", - rebase_path(invoker.source, get_path_info(invoker.output, "dir")), - rebase_path(invoker.output, root_build_dir), - ] - } -} - -# Creates a symlink from root_build_dir/target_name to |binary_label|. This rule -# is meant to be used within if (current_toolchain == default_toolchain) blocks -# and point to targets in the non-default toolchain. -# Note that for executables, using a copy (as opposed to a symlink) does not -# work when is_component_build=true, since dependent libraries are found via -# relative location. -# -# Args: -# binary_label: Target that builds the file to symlink to. e.g.: -# ":$target_name($host_toolchain)". -# binary_output_name: The output_name set by the binary_label target -# (if applicable). -# output_name: Where to create the symlink -# (default="$root_out_dir/$binary_output_name"). -# -# Example: -# if (current_toolchain == host_toolchain) { -# executable("foo") { ... } -# } else if (current_toolchain == default_toolchain) { -# binary_symlink("foo") { -# binary_label = ":foo($host_toolchain)" -# } -# } -template("binary_symlink") { - symlink(target_name) { - forward_variables_from(invoker, - [ - "output", - "testonly", - "visibility", - ]) - deps = [ - invoker.binary_label, - ] - data_deps = [ - invoker.binary_label, - ] - if (defined(invoker.data_deps)) { - data_deps += invoker.data_deps - } - - _out_dir = get_label_info(invoker.binary_label, "root_out_dir") - if (defined(invoker.binary_output_name)) { - _name = invoker.binary_output_name - } else { - _name = get_label_info(invoker.binary_label, "name") - } - source = "$_out_dir/$_name" - - _output_name = _name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - output = "$root_out_dir/$_output_name" - } -}
diff --git a/build/symlink.py b/build/symlink.py deleted file mode 100755 index 5a261dc..0000000 --- a/build/symlink.py +++ /dev/null
@@ -1,60 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2013 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. - -"""Make a symlink and optionally touch a file (to handle dependencies). - -Usage: - symlink.py [options] sources... target - -A sym link to source is created at target. If multiple sources are specfied, -then target is assumed to be a directory, and will contain all the links to -the sources (basenames identical to their source). -""" - -import errno -import optparse -import os.path -import shutil -import sys - - -def Main(argv): - parser = optparse.OptionParser() - parser.add_option('-f', '--force', action='store_true') - parser.add_option('--touch') - - options, args = parser.parse_args(argv[1:]) - if len(args) < 2: - parser.error('at least two arguments required.') - - target = args[-1] - sources = args[:-1] - for s in sources: - t = os.path.join(target, os.path.basename(s)) - if len(sources) == 1 and not os.path.isdir(target): - t = target - t = os.path.expanduser(t) - if os.path.realpath(t) == s: - continue - try: - os.symlink(s, t) - except OSError, e: - if e.errno == errno.EEXIST and options.force: - if os.path.isdir(t): - shutil.rmtree(t, ignore_errors=True) - else: - os.remove(t) - os.symlink(s, t) - else: - raise - - - if options.touch: - with open(options.touch, 'w') as f: - pass - - -if __name__ == '__main__': - sys.exit(Main(sys.argv))
diff --git a/build/toolchain/BUILD.gn b/build/toolchain/BUILD.gn deleted file mode 100644 index 75701de..0000000 --- a/build/toolchain/BUILD.gn +++ /dev/null
@@ -1,25 +0,0 @@ -# Copyright 2016 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/concurrent_links.gni") -import("//build/toolchain/goma.gni") - -declare_args() { - # Pool for non goma tasks. - action_pool_depth = -1 -} - -if (action_pool_depth == -1 || use_goma) { - action_pool_depth = exec_script("get_cpu_count.py", [], "value") -} - -if (current_toolchain == default_toolchain) { - pool("link_pool") { - depth = concurrent_links - } - - pool("action_pool") { - depth = action_pool_depth - } -}
diff --git a/build/toolchain/OWNERS b/build/toolchain/OWNERS deleted file mode 100644 index 85d8d31..0000000 --- a/build/toolchain/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -dpranke@chromium.org -scottmg@chromium.org
diff --git a/build/toolchain/aix/BUILD.gn b/build/toolchain/aix/BUILD.gn deleted file mode 100644 index 202e59e..0000000 --- a/build/toolchain/aix/BUILD.gn +++ /dev/null
@@ -1,21 +0,0 @@ -# Copyright 2017 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/gcc_toolchain.gni") - -gcc_toolchain("ppc64") { - cc = "gcc" - cxx = "g++" - - readelf = "readelf" - nm = "nm" - ar = "ar" - ld = cxx - - toolchain_args = { - current_cpu = "ppc64" - current_os = "aix" - is_clang = false - } -}
diff --git a/build/toolchain/android/BUILD.gn b/build/toolchain/android/BUILD.gn deleted file mode 100644 index 407bc3a..0000000 --- a/build/toolchain/android/BUILD.gn +++ /dev/null
@@ -1,121 +0,0 @@ -# Copyright 2013 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/config/clang/clang.gni") -import("//build/config/sysroot.gni") # Imports android/config.gni. -import("//build/toolchain/gcc_toolchain.gni") - -# The Android clang toolchains share most of the same parameters, so we have this -# wrapper around gcc_toolchain to avoid duplication of logic. -# -# Parameters: -# - toolchain_root -# Path to cpu-specific toolchain within the ndk. -# - sysroot -# Sysroot for this architecture. -# - lib_dir -# Subdirectory inside of sysroot where libs go. -# - binary_prefix -# Prefix of compiler executables. -template("android_clang_toolchain") { - gcc_toolchain(target_name) { - assert(defined(invoker.toolchain_args), - "toolchain_args must be defined for android_clang_toolchain()") - toolchain_args = invoker.toolchain_args - toolchain_args.current_os = "android" - - # Output linker map files for binary size analysis. - enable_linker_map = true - - # Make our manually injected libs relative to the build dir. - _ndk_lib = - rebase_path(invoker.sysroot + "/" + invoker.lib_dir, root_build_dir) - - libs_section_prefix = "$_ndk_lib/crtbegin_dynamic.o" - libs_section_postfix = "$_ndk_lib/crtend_android.o" - - solink_libs_section_prefix = "$_ndk_lib/crtbegin_so.o" - solink_libs_section_postfix = "$_ndk_lib/crtend_so.o" - - _android_tool_prefix = - "${invoker.toolchain_root}/bin/${invoker.binary_prefix}-" - - # The tools should be run relative to the build dir. - _tool_prefix = rebase_path("$_android_tool_prefix", root_build_dir) - - _prefix = rebase_path("$clang_base_path/bin", root_build_dir) - cc = "$_prefix/clang" - cxx = "$_prefix/clang++" - ar = "$_prefix/llvm-ar" - ld = cxx - readelf = _tool_prefix + "readelf" - nm = _tool_prefix + "nm" - strip = rebase_path("//third_party/eu-strip/bin/eu-strip", root_build_dir) - use_unstripped_as_runtime_outputs = true - - # Don't use .cr.so for loadable_modules since they are always loaded via - # absolute path. - loadable_module_extension = ".so" - } -} - -android_clang_toolchain("android_clang_x86") { - toolchain_root = x86_android_toolchain_root - sysroot = "$android_ndk_root/$x86_android_sysroot_subdir" - lib_dir = "usr/lib" - binary_prefix = "i686-linux-android" - toolchain_args = { - current_cpu = "x86" - } -} - -android_clang_toolchain("android_clang_arm") { - toolchain_root = arm_android_toolchain_root - sysroot = "$android_ndk_root/$arm_android_sysroot_subdir" - lib_dir = "usr/lib" - binary_prefix = "arm-linux-androideabi" - toolchain_args = { - current_cpu = "arm" - } -} - -android_clang_toolchain("android_clang_mipsel") { - toolchain_root = mips_android_toolchain_root - sysroot = "$android_ndk_root/$mips_android_sysroot_subdir" - lib_dir = "usr/lib" - binary_prefix = "mipsel-linux-android" - toolchain_args = { - current_cpu = "mipsel" - } -} - -android_clang_toolchain("android_clang_x64") { - toolchain_root = x86_64_android_toolchain_root - sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir" - lib_dir = "usr/lib64" - binary_prefix = "x86_64-linux-android" - toolchain_args = { - current_cpu = "x64" - } -} - -android_clang_toolchain("android_clang_arm64") { - toolchain_root = arm64_android_toolchain_root - sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir" - lib_dir = "usr/lib" - binary_prefix = "aarch64-linux-android" - toolchain_args = { - current_cpu = "arm64" - } -} - -android_clang_toolchain("android_clang_mips64el") { - toolchain_root = mips64_android_toolchain_root - sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir" - lib_dir = "usr/lib64" - binary_prefix = "mips64el-linux-android" - toolchain_args = { - current_cpu = "mips64el" - } -}
diff --git a/build/toolchain/cc_wrapper.gni b/build/toolchain/cc_wrapper.gni deleted file mode 100644 index 0a03dde..0000000 --- a/build/toolchain/cc_wrapper.gni +++ /dev/null
@@ -1,40 +0,0 @@ -# Copyright (c) 2014 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/goma.gni") - -# Defines the configuration of cc wrapper -# ccache: a c/c++ compiler cache which can greatly reduce recompilation times. -# icecc, distcc: it takes compile jobs from a build and distributes them among -# remote machines allowing a parallel build. -# -# TIPS -# -# 1) ccache -# Set clang_use_chrome_plugins=false if using ccache 3.1.9 or earlier, since -# these versions don't support -Xclang. (3.1.10 and later will silently -# ignore -Xclang, so it doesn't matter if you disable clang_use_chrome_plugins -# or not). -# -# Use ccache 3.2 or later to avoid clang unused argument warnings: -# https://bugzilla.samba.org/show_bug.cgi?id=8118 -# -# To avoid -Wparentheses-equality clang warnings, at some cost in terms of -# speed, you can do: -# export CCACHE_CPP2=yes -# -# 2) icecc -# Set clang_use_chrome_plugins=false because icecc cannot distribute custom -# clang libraries. -# -# To use icecc and ccache together, set cc_wrapper = "ccache" with -# export CCACHE_PREFIX=icecc - -declare_args() { - # Set to "ccache", "icecc" or "distcc". Probably doesn't work on windows. - cc_wrapper = "" -} - -assert(!use_goma || cc_wrapper == "", - "use_goma and cc_wrapper can not be used together.")
diff --git a/build/toolchain/clang_static_analyzer.gni b/build/toolchain/clang_static_analyzer.gni deleted file mode 100644 index 9cb7975..0000000 --- a/build/toolchain/clang_static_analyzer.gni +++ /dev/null
@@ -1,11 +0,0 @@ -# Copyright (c) 2017 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. - -# Defines the configuration of Clang static analysis tools. -# See docs/clang_static_analyzer.md for more information. - -declare_args() { - # Uses the Clang static analysis tools during compilation. - use_clang_static_analyzer = false -}
diff --git a/build/toolchain/clang_static_analyzer_wrapper.py b/build/toolchain/clang_static_analyzer_wrapper.py deleted file mode 100755 index 1c54d72..0000000 --- a/build/toolchain/clang_static_analyzer_wrapper.py +++ /dev/null
@@ -1,72 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""Adds an analysis build step to invocations of the Clang C/C++ compiler. - -Usage: clang_static_analyzer_wrapper.py <compiler> [args...] -""" - -import argparse -import fnmatch -import itertools -import os -import sys -import wrapper_utils - -# Flags used to enable analysis for Clang invocations. -analyzer_enable_flags = [ - '--analyze', -] - -# Flags used to configure the analyzer's behavior. -analyzer_option_flags = [ - '-fdiagnostics-show-option', - '-analyzer-checker=cplusplus', - '-analyzer-opt-analyze-nested-blocks', - '-analyzer-eagerly-assume', - '-analyzer-output=text', - '-analyzer-config', - 'suppress-c++-stdlib=true', - -# List of checkers to execute. -# The full list of checkers can be found at -# https://clang-analyzer.llvm.org/available_checks.html. - '-analyzer-checker=core', - '-analyzer-checker=unix', - '-analyzer-checker=deadcode', -] - - -# Prepends every element of a list |args| with |token|. -# e.g. ['-analyzer-foo', '-analyzer-bar'] => ['-Xanalyzer', '-analyzer-foo', -# '-Xanalyzer', '-analyzer-bar'] -def interleave_args(args, token): - return list(sum(zip([token] * len(args), args), ())) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--mode', - choices=['clang', 'cl'], - required=True, - help='Specifies the compiler argument convention to use.') - parser.add_argument('args', nargs=argparse.REMAINDER) - parsed_args = parser.parse_args() - - prefix = '-Xclang' if parsed_args.mode == 'cl' else '-Xanalyzer' - cmd = parsed_args.args + analyzer_enable_flags + \ - interleave_args(analyzer_option_flags, prefix) - returncode, stderr = wrapper_utils.CaptureCommandStderr( - wrapper_utils.CommandToRun(cmd)) - sys.stderr.write(stderr) - - returncode, stderr = wrapper_utils.CaptureCommandStderr( - wrapper_utils.CommandToRun(parsed_args.args)) - sys.stderr.write(stderr) - - return returncode - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/toolchain/concurrent_links.gni b/build/toolchain/concurrent_links.gni deleted file mode 100644 index e68384f..0000000 --- a/build/toolchain/concurrent_links.gni +++ /dev/null
@@ -1,56 +0,0 @@ -# Copyright 2016 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. - -# This file should only be imported from files that define toolchains. -# There's no way to enforce this exactly, but all toolchains are processed -# in the context of the default_toolchain, so we can at least check for that. -assert(current_toolchain == default_toolchain) - -import("//build/config/compiler/compiler.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/toolchain/toolchain.gni") - -declare_args() { - # Limit the number of concurrent links; we often want to run fewer - # links at once than we do compiles, because linking is memory-intensive. - # The default to use varies by platform and by the amount of memory - # available, so we call out to a script to get the right value. - concurrent_links = -1 -} - -if (concurrent_links == -1) { - if (use_thin_lto) { - _args = [ - "--mem_per_link_gb=10", - "--reserve_mem_gb=10", - ] - } else if (use_sanitizer_coverage || use_fuzzing_engine) { - # Sanitizer coverage instrumentation increases linker memory consumption - # significantly. - _args = [ "--mem_per_link_gb=16" ] - } else if (is_win && symbol_level == 1 && !is_debug) { - _args = [ "--mem_per_link_gb=3" ] - } else if (is_win) { - _args = [ "--mem_per_link_gb=5" ] - } else if (is_mac) { - _args = [ "--mem_per_link_gb=4" ] - } else if (is_android && !is_component_build && symbol_level == 2) { - # Full debug symbols require large memory for link. - _args = [ "--mem_per_link_gb=25" ] - } else if (is_android && !is_debug && !using_sanitizer && symbol_level == 0) { - # Increase the number of concurrent links for release bots. Debug builds - # make heavier use of ProGuard, and so should not be raised. Sanitizers also - # increase the memory overhead. - _args = [ "--mem_per_link_gb=4" ] - } else if (is_linux && !is_chromeos && symbol_level == 0) { - # Memory consumption on link without debug symbols is low on linux. - _args = [ "--mem_per_link_gb=3" ] - } else { - _args = [] - } - - # TODO(crbug.com/617429) Pass more build configuration info to the script - # so that we can compute better values. - concurrent_links = exec_script("get_concurrent_links.py", _args, "value") -}
diff --git a/build/toolchain/cros/BUILD.gn b/build/toolchain/cros/BUILD.gn deleted file mode 100644 index bf139dc..0000000 --- a/build/toolchain/cros/BUILD.gn +++ /dev/null
@@ -1,136 +0,0 @@ -# Copyright 2014 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/config/compiler/compiler.gni") -import("//build/config/sysroot.gni") -import("//build/toolchain/gcc_toolchain.gni") -import("//build/toolchain/cros_toolchain.gni") - -# This is the normal toolchain for most targets. -gcc_toolchain("target") { - ar = cros_target_ar - cc = cros_target_cc - cxx = cros_target_cxx - ld = cxx - if (cros_target_ld != "") { - ld = cros_target_ld - } - if (cros_target_nm != "") { - nm = cros_target_nm - } - if (cros_target_readelf != "") { - readelf = cros_target_readelf - } - extra_cflags = cros_target_extra_cflags - extra_cppflags = cros_target_extra_cppflags - extra_cxxflags = cros_target_extra_cxxflags - extra_ldflags = cros_target_extra_ldflags - - toolchain_args = { - cc_wrapper = "" - current_cpu = target_cpu - current_os = "chromeos" - is_clang = is_clang - use_debug_fission = use_debug_fission - use_gold = use_gold - use_sysroot = use_sysroot - } -} - -# This is a special toolchain needed just for the nacl_bootstrap target in -# //native_client/src/trusted/service_runtime/linux. It is identical -# to ":target" except that it forces use_debug_fission, use_gold, and -# use_sysroot off, and allows the user to set different sets of extra flags. -gcc_toolchain("nacl_bootstrap") { - ar = cros_target_ar - cc = cros_target_cc - cxx = cros_target_cxx - ld = cxx - if (cros_target_ld != "") { - ld = cros_target_ld - } - if (cros_target_nm != "") { - nm = cros_target_nm - } - if (cros_target_readelf != "") { - readelf = cros_target_readelf - } - extra_cflags = cros_nacl_bootstrap_extra_cflags - extra_cppflags = cros_nacl_bootstrap_extra_cppflags - extra_cxxflags = cros_nacl_bootstrap_extra_cxxflags - extra_ldflags = cros_nacl_bootstrap_extra_ldflags - - toolchain_args = { - cc_wrapper = "" - current_cpu = target_cpu - current_os = "chromeos" - is_clang = is_clang - use_debug_fission = false - use_gold = false - use_sysroot = false - } -} - -gcc_toolchain("host") { - # These are args for the template. - ar = cros_host_ar - cc = cros_host_cc - cxx = cros_host_cxx - ld = cxx - if (cros_host_ld != "") { - ld = cros_host_ld - } - if (cros_host_nm != "") { - nm = cros_host_nm - } - if (cros_host_readelf != "") { - readelf = cros_host_readelf - } - extra_cflags = cros_host_extra_cflags - extra_cppflags = cros_host_extra_cppflags - extra_cxxflags = cros_host_extra_cxxflags - extra_ldflags = cros_host_extra_ldflags - - toolchain_args = { - cc_wrapper = "" - is_clang = cros_host_is_clang - current_cpu = host_cpu - current_os = "linux" - use_sysroot = false - } -} - -gcc_toolchain("v8_snapshot") { - # These are args for the template. - ar = cros_v8_snapshot_ar - cc = cros_v8_snapshot_cc - cxx = cros_v8_snapshot_cxx - ld = cxx - if (cros_v8_snapshot_ld != "") { - ld = cros_v8_snapshot_ld - } - if (cros_v8_snapshot_nm != "") { - nm = cros_v8_snapshot_nm - } - if (cros_v8_snapshot_readelf != "") { - readelf = cros_v8_snapshot_readelf - } - extra_cflags = cros_v8_snapshot_extra_cflags - extra_cppflags = cros_v8_snapshot_extra_cppflags - extra_cxxflags = cros_v8_snapshot_extra_cxxflags - extra_ldflags = cros_v8_snapshot_extra_ldflags - - toolchain_args = { - cc_wrapper = "" - is_clang = cros_v8_snapshot_is_clang - if (target_cpu == "x86" || target_cpu == "arm" || target_cpu == "mipsel") { - current_cpu = "x86" - } else { - current_cpu = "x64" - } - v8_current_cpu = v8_target_cpu - current_os = "linux" - use_sysroot = false - } -}
diff --git a/build/toolchain/cros_toolchain.gni b/build/toolchain/cros_toolchain.gni deleted file mode 100644 index fdfdb07..0000000 --- a/build/toolchain/cros_toolchain.gni +++ /dev/null
@@ -1,81 +0,0 @@ -# Copyright 2016 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. - -# CrOS builds must cross-compile on a Linux host for the actual CrOS -# device target. There are many different CrOS devices so the build -# system provides configuration variables that permit a CrOS build to -# control the cross-compilation tool chain. However, requiring such -# fine-grain specification is tedious for build-bots and developers. -# Consequently, the CrOS build system defaults to a convenience -# compilation mode where the compilation host is also the build target. -# -# Chrome can be compiled in this way with the gn variable: -# -# target_os = "chromeos" -# -# To perform a board-specific build, first obtain the correct system -# root (http://goo.gl/aFB4XH) for the board. Then configure GN to use it -# by setting appropriate cross-compilation variables. -# -# For example, to compile a Chrome source tree in /g/src for an -# auron_paine CrOS device with the system root cached in /g/.cros_cache, -# the following GN arguments must be provided to configure -# cross-compilation with Goma acceleration. (NB: additional variables -# will be necessary to successfully compile a working CrOS Chrome. See -# the definition of GYP_DEFINES inside a sysroot shell.) -# -# goma_dir = "/g/.cros_cache/common/goma+2" -# target_sysroot= /g/.cros_cache/chrome-sdk/tarballs/auron_paine+7644.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz" -# cros_target_cc = "x86_64-cros-linux-gnu-gcc -B/g/.cros_cache/chrome-sdk/tarballs/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold" -# cros_target_cxx = "x86_64-cros-linux-gnu-g++ -B/g/.cros_cache/chrome-sdk/tarballs/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold" -# cros_target_ar = "x86_64-cros-linux-gnu-gcc-ar" -# target_cpu = "x64" - -declare_args() { - # These must be specified for a board-specific build. - cros_target_ar = "ar" - cros_target_cc = "gcc" - cros_target_cxx = "g++" - cros_target_ld = "" - cros_target_nm = "" - cros_target_readelf = "" - - # These can be optionally set. The "_cppflags" will be applied to *both* - # C and C++ files; use "_cxxflags" for C++-only flags. - cros_target_extra_cflags = "" - cros_target_extra_cppflags = "" - cros_target_extra_cxxflags = "" - cros_target_extra_ldflags = "" - - # is_clang is used instead of cros_target_is_clang - - cros_host_ar = "ar" - cros_host_cc = "gcc" - cros_host_cxx = "g++" - cros_host_ld = "" - cros_host_nm = "" - cros_host_readelf = "" - cros_host_extra_cflags = "" - cros_host_extra_cppflags = "" - cros_host_extra_cxxflags = "" - cros_host_extra_ldflags = "" - cros_host_is_clang = false - - cros_v8_snapshot_ar = "ar" - cros_v8_snapshot_cc = "gcc" - cros_v8_snapshot_cxx = "g++" - cros_v8_snapshot_ld = "" - cros_v8_snapshot_nm = "" - cros_v8_snapshot_readelf = "" - cros_v8_snapshot_extra_cflags = "" - cros_v8_snapshot_extra_cppflags = "" - cros_v8_snapshot_extra_cxxflags = "" - cros_v8_snapshot_extra_ldflags = "" - cros_v8_snapshot_is_clang = false - - cros_nacl_bootstrap_extra_cflags = "" - cros_nacl_bootstrap_extra_cppflags = "" - cros_nacl_bootstrap_extra_cxxflags = "" - cros_nacl_bootstrap_extra_ldflags = "" -}
diff --git a/build/toolchain/fuchsia/BUILD.gn b/build/toolchain/fuchsia/BUILD.gn deleted file mode 100644 index a5151e3..0000000 --- a/build/toolchain/fuchsia/BUILD.gn +++ /dev/null
@@ -1,36 +0,0 @@ -# Copyright 2017 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/gcc_toolchain.gni") -import("//build/config/fuchsia/config.gni") - -# Fuchsia builds using the Clang toolchain, with most parameters common across -# the different target architectures. -template("fuchsia_clang_toolchain") { - clang_toolchain(target_name) { - assert(host_os == "linux") - assert(defined(invoker.toolchain_args), - "toolchain_args must be defined for fuchsia_clang_toolchain()") - - # We want to build and strip binaries, but retain the unstripped binaries - # in runtime_deps to make them available for isolates. - strip = rebase_path("//third_party/eu-strip/bin/eu-strip", root_build_dir) - use_unstripped_as_runtime_outputs = true - - toolchain_args = invoker.toolchain_args - toolchain_args.current_os = "fuchsia" - } -} - -fuchsia_clang_toolchain("x64") { - toolchain_args = { - current_cpu = "x64" - } -} - -fuchsia_clang_toolchain("arm64") { - toolchain_args = { - current_cpu = "arm64" - } -}
diff --git a/build/toolchain/fuchsia/OWNERS b/build/toolchain/fuchsia/OWNERS deleted file mode 100644 index 3f809e8..0000000 --- a/build/toolchain/fuchsia/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -scottmg@chromium.org
diff --git a/build/toolchain/gcc_ar_wrapper.py b/build/toolchain/gcc_ar_wrapper.py deleted file mode 100755 index 5977f44..0000000 --- a/build/toolchain/gcc_ar_wrapper.py +++ /dev/null
@@ -1,78 +0,0 @@ -#!/usr/bin/env python -# 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. - -"""Runs the 'ar' command after removing its output file first. - -This script is invoked like: - python gcc_ar_wrapper.py --ar=$AR --output=$OUT $OP $INPUTS -to do the equivalent of: - rm -f $OUT && $AR $OP $OUT $INPUTS -""" - -import argparse -import os -import subprocess -import sys - -import wrapper_utils - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--ar', - required=True, - help='The ar binary to run', - metavar='PATH') - parser.add_argument('--output', - required=True, - help='Output archive file', - metavar='ARCHIVE') - parser.add_argument('--plugin', - help='Load plugin') - parser.add_argument('--resource-whitelist', - help='Merge all resource whitelists into a single file.', - metavar='PATH') - parser.add_argument('operation', - help='Operation on the archive') - parser.add_argument('inputs', nargs='+', - help='Input files') - args = parser.parse_args() - - # Specifies the type of object file ar should examine. - # The ar on linux ignores this option. - object_mode = [] - if sys.platform.startswith('aix'): - # The @file feature is not available on ar for AIX. - # For linux (and other posix like systems), the @file_name - # option reads the contents of file_name as command line arguments. - # For AIX we must parse these (rsp files) manually. - # Read rspfile. - args.inputs = wrapper_utils.ResolveRspLinks(args.inputs) - object_mode = ['-X64'] - else: - if args.resource_whitelist: - whitelist_candidates = wrapper_utils.ResolveRspLinks(args.inputs) - wrapper_utils.CombineResourceWhitelists( - whitelist_candidates, args.resource_whitelist) - - command = [args.ar] + object_mode + args.operation.split() - if args.plugin is not None: - command += ['--plugin', args.plugin] - command.append(args.output) - command += args.inputs - - # Remove the output file first. - try: - os.remove(args.output) - except OSError as e: - if e.errno != os.errno.ENOENT: - raise - - # Now just run the ar command. - return subprocess.call(wrapper_utils.CommandToRun(command)) - - -if __name__ == "__main__": - sys.exit(main())
diff --git a/build/toolchain/gcc_compile_wrapper.py b/build/toolchain/gcc_compile_wrapper.py deleted file mode 100755 index 33cac37..0000000 --- a/build/toolchain/gcc_compile_wrapper.py +++ /dev/null
@@ -1,43 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 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. - -"""Runs a compilation command. - -This script exists to avoid using complex shell commands in -gcc_toolchain.gni's tool("cxx") and tool("cc") in case the host running the -compiler does not have a POSIX-like shell (e.g. Windows). -""" - -import argparse -import sys - -import wrapper_utils - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--resource-whitelist', - help='Generate a resource whitelist for this target.', - metavar='PATH') - parser.add_argument('command', nargs=argparse.REMAINDER, - help='Compilation command') - args = parser.parse_args() - - returncode, stderr = wrapper_utils.CaptureCommandStderr( - wrapper_utils.CommandToRun(args.command)) - - used_resources = wrapper_utils.ExtractResourceIdsFromPragmaWarnings(stderr) - sys.stderr.write(stderr) - - if args.resource_whitelist: - with open(args.resource_whitelist, 'w') as f: - if used_resources: - f.write('\n'.join(str(resource) for resource in used_resources)) - f.write('\n') - - return returncode - -if __name__ == "__main__": - sys.exit(main())
diff --git a/build/toolchain/gcc_link_wrapper.py b/build/toolchain/gcc_link_wrapper.py deleted file mode 100755 index 8892f14..0000000 --- a/build/toolchain/gcc_link_wrapper.py +++ /dev/null
@@ -1,74 +0,0 @@ -#!/usr/bin/env python -# 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. - -"""Runs a linking command and optionally a strip command. - -This script exists to avoid using complex shell commands in -gcc_toolchain.gni's tool("link"), in case the host running the compiler -does not have a POSIX-like shell (e.g. Windows). -""" - -import argparse -import os -import subprocess -import sys - -import wrapper_utils - - -# When running on a Windows host and using a toolchain whose tools are -# actually wrapper scripts (i.e. .bat files on Windows) rather than binary -# executables, the "command" to run has to be prefixed with this magic. -# The GN toolchain definitions take care of that for when GN/Ninja is -# running the tool directly. When that command is passed in to this -# script, it appears as a unitary string but needs to be split up so that -# just 'cmd' is the actual command given to Python's subprocess module. -BAT_PREFIX = 'cmd /c call ' - -def CommandToRun(command): - if command[0].startswith(BAT_PREFIX): - command = command[0].split(None, 3) + command[1:] - return command - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--strip', - help='The strip binary to run', - metavar='PATH') - parser.add_argument('--unstripped-file', - help='Executable file produced by linking command', - metavar='FILE') - parser.add_argument('--map-file', - help=('Use --Wl,-Map to generate a map file. Will be ' - 'gzipped if extension ends with .gz'), - metavar='FILE') - parser.add_argument('--output', - required=True, - help='Final output executable file', - metavar='FILE') - parser.add_argument('command', nargs='+', - help='Linking command') - args = parser.parse_args() - - # Work-around for gold being slow-by-default. http://crbug.com/632230 - fast_env = dict(os.environ) - fast_env['LC_ALL'] = 'C' - result = wrapper_utils.RunLinkWithOptionalMapFile(args.command, env=fast_env, - map_file=args.map_file) - if result != 0: - return result - - # Finally, strip the linked executable (if desired). - if args.strip: - result = subprocess.call(CommandToRun([ - args.strip, '-o', args.output, args.unstripped_file - ])) - - return result - - -if __name__ == "__main__": - sys.exit(main())
diff --git a/build/toolchain/gcc_solink_wrapper.py b/build/toolchain/gcc_solink_wrapper.py deleted file mode 100755 index 5159fce..0000000 --- a/build/toolchain/gcc_solink_wrapper.py +++ /dev/null
@@ -1,131 +0,0 @@ -#!/usr/bin/env python -# 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. - -"""Runs 'ld -shared' and generates a .TOC file that's untouched when unchanged. - -This script exists to avoid using complex shell commands in -gcc_toolchain.gni's tool("solink"), in case the host running the compiler -does not have a POSIX-like shell (e.g. Windows). -""" - -import argparse -import os -import subprocess -import sys - -import wrapper_utils - - -def CollectSONAME(args): - """Replaces: readelf -d $sofile | grep SONAME""" - toc = '' - readelf = subprocess.Popen(wrapper_utils.CommandToRun( - [args.readelf, '-d', args.sofile]), stdout=subprocess.PIPE, bufsize=-1) - for line in readelf.stdout: - if 'SONAME' in line: - toc += line - return readelf.wait(), toc - - -def CollectDynSym(args): - """Replaces: nm --format=posix -g -D $sofile | cut -f1-2 -d' '""" - toc = '' - nm = subprocess.Popen(wrapper_utils.CommandToRun([ - args.nm, '--format=posix', '-g', '-D', args.sofile]), - stdout=subprocess.PIPE, bufsize=-1) - for line in nm.stdout: - toc += ' '.join(line.split(' ', 2)[:2]) + '\n' - return nm.wait(), toc - - -def CollectTOC(args): - result, toc = CollectSONAME(args) - if result == 0: - result, dynsym = CollectDynSym(args) - toc += dynsym - return result, toc - - -def UpdateTOC(tocfile, toc): - if os.path.exists(tocfile): - old_toc = open(tocfile, 'r').read() - else: - old_toc = None - if toc != old_toc: - open(tocfile, 'w').write(toc) - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--readelf', - required=True, - help='The readelf binary to run', - metavar='PATH') - parser.add_argument('--nm', - required=True, - help='The nm binary to run', - metavar='PATH') - parser.add_argument('--strip', - help='The strip binary to run', - metavar='PATH') - parser.add_argument('--sofile', - required=True, - help='Shared object file produced by linking command', - metavar='FILE') - parser.add_argument('--tocfile', - required=True, - help='Output table-of-contents file', - metavar='FILE') - parser.add_argument('--map-file', - help=('Use --Wl,-Map to generate a map file. Will be ' - 'gzipped if extension ends with .gz'), - metavar='FILE') - parser.add_argument('--output', - required=True, - help='Final output shared object file', - metavar='FILE') - parser.add_argument('--resource-whitelist', - help='Merge all resource whitelists into a single file.', - metavar='PATH') - parser.add_argument('command', nargs='+', - help='Linking command') - args = parser.parse_args() - - # Work-around for gold being slow-by-default. http://crbug.com/632230 - fast_env = dict(os.environ) - fast_env['LC_ALL'] = 'C' - - if args.resource_whitelist: - whitelist_candidates = wrapper_utils.ResolveRspLinks(args.command) - wrapper_utils.CombineResourceWhitelists( - whitelist_candidates, args.resource_whitelist) - - # First, run the actual link. - command = wrapper_utils.CommandToRun(args.command) - result = wrapper_utils.RunLinkWithOptionalMapFile(command, env=fast_env, - map_file=args.map_file) - - if result != 0: - return result - - # Next, generate the contents of the TOC file. - result, toc = CollectTOC(args) - if result != 0: - return result - - # If there is an existing TOC file with identical contents, leave it alone. - # Otherwise, write out the TOC file. - UpdateTOC(args.tocfile, toc) - - # Finally, strip the linked shared object file (if desired). - if args.strip: - result = subprocess.call(wrapper_utils.CommandToRun( - [args.strip, '-o', args.output, args.sofile])) - - return result - - -if __name__ == "__main__": - sys.exit(main())
diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni deleted file mode 100644 index b6f63d7..0000000 --- a/build/toolchain/gcc_toolchain.gni +++ /dev/null
@@ -1,630 +0,0 @@ -# Copyright (c) 2013 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/config/android/config.gni") -import("//build/config/clang/clang.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/config/v8_target_cpu.gni") -import("//build/toolchain/cc_wrapper.gni") -import("//build/toolchain/clang_static_analyzer.gni") -import("//build/toolchain/goma.gni") -import("//build/toolchain/toolchain.gni") - -if (is_nacl) { - # To keep NaCl variables out of builds that don't include NaCl, all - # variables defined in nacl/config.gni referenced here should be protected by - # is_nacl conditions. - import("//build/config/nacl/config.gni") -} - -# Path to the Clang static analysis wrapper script. -# REVIEWERS: can you suggest a better location for this? -# GN is really picky about dead stores of variables except at the global scope. -analyzer_wrapper = - rebase_path("//build/toolchain/clang_static_analyzer_wrapper.py", - root_build_dir) + " --mode=clang" - -# This template defines a toolchain for something that works like gcc -# (including clang). -# -# It requires the following variables specifying the executables to run: -# - ar -# - cc -# - cxx -# - ld -# -# Optional parameters that control the tools: -# -# - extra_cflags -# Extra flags to be appended when compiling C files (but not C++ files). -# - extra_cppflags -# Extra flags to be appended when compiling both C and C++ files. "CPP" -# stands for "C PreProcessor" in this context, although it can be -# used for non-preprocessor flags as well. Not to be confused with -# "CXX" (which follows). -# - extra_cxxflags -# Extra flags to be appended when compiling C++ files (but not C files). -# - extra_asmflags -# Extra flags to be appended when compiling assembly. -# - extra_ldflags -# Extra flags to be appended when linking -# -# - libs_section_prefix -# - libs_section_postfix -# The contents of these strings, if specified, will be placed around -# the libs section of the linker line. It allows one to inject libraries -# at the beginning and end for all targets in a toolchain. -# - solink_libs_section_prefix -# - solink_libs_section_postfix -# Same as libs_section_{pre,post}fix except used for solink instead of link. -# - link_outputs -# The content of this array, if specified, will be added to the list of -# outputs from the link command. This can be useful in conjunction with -# the post_link parameter. -# - use_unstripped_as_runtime_outputs -# When |strip| is set, mark unstripped executables as runtime deps rather -# than stripped ones. -# - post_link -# The content of this string, if specified, will be run as a separate -# command following the the link command. -# - deps -# Just forwarded to the toolchain definition. -# - executable_extension -# If this string is specified it will be used for the file extension -# for an executable, rather than using no extension; targets will -# still be able to override the extension using the output_extension -# variable. -# - rebuild_define -# The contents of this string, if specified, will be passed as a #define -# to the toolchain. It can be used to force recompiles whenever a -# toolchain is updated. -# - shlib_extension -# If this string is specified it will be used for the file extension -# for a shared library, rather than default value specified in -# toolchain.gni -# - strip -# Location of the strip executable. When specified, strip will be run on -# all shared libraries and executables as they are built. The pre-stripped -# artifacts will be put in lib.unstripped/ and exe.unstripped/. -template("gcc_toolchain") { - toolchain(target_name) { - assert(defined(invoker.ar), "gcc_toolchain() must specify a \"ar\" value") - assert(defined(invoker.cc), "gcc_toolchain() must specify a \"cc\" value") - assert(defined(invoker.cxx), "gcc_toolchain() must specify a \"cxx\" value") - assert(defined(invoker.ld), "gcc_toolchain() must specify a \"ld\" value") - - # This define changes when the toolchain changes, forcing a rebuild. - # Nothing should ever use this define. - if (defined(invoker.rebuild_define)) { - rebuild_string = "-D" + invoker.rebuild_define + " " - } else { - rebuild_string = "" - } - - # GN's syntax can't handle more than one scope dereference at once, like - # "invoker.toolchain_args.foo", so make a temporary to hold the toolchain - # args so we can do "invoker_toolchain_args.foo". - assert(defined(invoker.toolchain_args), - "Toolchains must specify toolchain_args") - invoker_toolchain_args = invoker.toolchain_args - assert(defined(invoker_toolchain_args.current_cpu), - "toolchain_args must specify a current_cpu") - assert(defined(invoker_toolchain_args.current_os), - "toolchain_args must specify a current_os") - - # When invoking this toolchain not as the default one, these args will be - # passed to the build. They are ignored when this is the default toolchain. - toolchain_args = { - # Populate toolchain args from the invoker. - forward_variables_from(invoker_toolchain_args, "*") - - # The host toolchain value computed by the default toolchain's setup - # needs to be passed through unchanged to all secondary toolchains to - # ensure that it's always the same, regardless of the values that may be - # set on those toolchains. - host_toolchain = host_toolchain - - if (!defined(invoker_toolchain_args.v8_current_cpu)) { - v8_current_cpu = invoker_toolchain_args.current_cpu - } - } - - # When the invoker has explicitly overridden use_goma or cc_wrapper in the - # toolchain args, use those values, otherwise default to the global one. - # This works because the only reasonable override that toolchains might - # supply for these values are to force-disable them. - if (defined(toolchain_args.use_goma)) { - toolchain_uses_goma = toolchain_args.use_goma - } else { - toolchain_uses_goma = use_goma - } - if (defined(toolchain_args.cc_wrapper)) { - toolchain_cc_wrapper = toolchain_args.cc_wrapper - } else { - toolchain_cc_wrapper = cc_wrapper - } - assert(!(toolchain_cc_wrapper != "" && toolchain_uses_goma), - "Goma and cc_wrapper can't be used together.") - - # When the invoker has explicitly overridden use_goma or cc_wrapper in the - # toolchain args, use those values, otherwise default to the global one. - # This works because the only reasonable override that toolchains might - # supply for these values are to force-disable them. - if (toolchain_uses_goma) { - goma_path = "$goma_dir/gomacc" - - # Use the static analysis script if static analysis is turned on - # AND the tool has not opted out by setting - # 'is_clang_static_analysis_supported' to false. - if (is_clang && use_clang_static_analyzer && - (!defined(invoker.is_clang_analysis_supported) || - invoker.is_clang_analysis_supported)) { - compiler_prefix = "${analyzer_wrapper} ${goma_path} " - - # Create a distinct variable for "asm", since analysis runs pass - # a bunch of flags to clang/clang++ that are nonsensical on assembler - # runs. - asm = "${goma_path} ${invoker.cc}" - } else { - compiler_prefix = "${goma_path} " - } - } else { - if (is_clang && use_clang_static_analyzer && - (!defined(invoker.is_clang_analysis_supported) || - invoker.is_clang_analysis_supported)) { - compiler_prefix = "${analyzer_wrapper} " - asm = invoker.cc - } else { - compiler_prefix = "${toolchain_cc_wrapper} " - } - } - - cc = compiler_prefix + invoker.cc - cxx = compiler_prefix + invoker.cxx - ar = invoker.ar - ld = invoker.ld - if (!defined(asm)) { - asm = cc - } - if (defined(invoker.readelf)) { - readelf = invoker.readelf - } else { - readelf = "readelf" - } - if (defined(invoker.nm)) { - nm = invoker.nm - } else { - nm = "nm" - } - - if (defined(invoker.shlib_extension)) { - default_shlib_extension = invoker.shlib_extension - } else { - default_shlib_extension = shlib_extension - } - - if (defined(invoker.executable_extension)) { - default_executable_extension = invoker.executable_extension - } else { - default_executable_extension = "" - } - - # Bring these into our scope for string interpolation with default values. - if (defined(invoker.libs_section_prefix)) { - libs_section_prefix = invoker.libs_section_prefix - } else { - libs_section_prefix = "" - } - - if (defined(invoker.libs_section_postfix)) { - libs_section_postfix = invoker.libs_section_postfix - } else { - libs_section_postfix = "" - } - - if (defined(invoker.solink_libs_section_prefix)) { - solink_libs_section_prefix = invoker.solink_libs_section_prefix - } else { - solink_libs_section_prefix = "" - } - - if (defined(invoker.solink_libs_section_postfix)) { - solink_libs_section_postfix = invoker.solink_libs_section_postfix - } else { - solink_libs_section_postfix = "" - } - - if (defined(invoker.extra_cflags) && invoker.extra_cflags != "") { - extra_cflags = " " + invoker.extra_cflags - } else { - extra_cflags = "" - } - - if (defined(invoker.extra_cppflags) && invoker.extra_cppflags != "") { - extra_cppflags = " " + invoker.extra_cppflags - } else { - extra_cppflags = "" - } - - if (defined(invoker.extra_cxxflags) && invoker.extra_cxxflags != "") { - extra_cxxflags = " " + invoker.extra_cxxflags - } else { - extra_cxxflags = "" - } - - if (defined(invoker.extra_asmflags) && invoker.extra_asmflags != "") { - extra_asmflags = " " + invoker.extra_asmflags - } else { - extra_asmflags = "" - } - - if (defined(invoker.extra_ldflags) && invoker.extra_ldflags != "") { - extra_ldflags = " " + invoker.extra_ldflags - } else { - extra_ldflags = "" - } - - enable_linker_map = defined(invoker.enable_linker_map) && - invoker.enable_linker_map && generate_linker_map - - # These library switches can apply to all tools below. - lib_switch = "-l" - lib_dir_switch = "-L" - - # Object files go in this directory. - object_subdir = "{{target_out_dir}}/{{label_name}}" - - tool("cc") { - depfile = "{{output}}.d" - command = "$cc -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}${extra_cppflags}${extra_cflags} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "CC {{output}}" - outputs = [ - # The whitelist file is also an output, but ninja does not - # currently support multiple outputs for tool("cc"). - "$object_subdir/{{source_name_part}}.o", - ] - if (enable_resource_whitelist_generation) { - compile_wrapper = - rebase_path("//build/toolchain/gcc_compile_wrapper.py", - root_build_dir) - command = "$python_path \"$compile_wrapper\" --resource-whitelist=\"{{output}}.whitelist\" $command" - } - } - - tool("cxx") { - depfile = "{{output}}.d" - command = "$cxx -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}}${extra_cppflags}${extra_cxxflags} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "CXX {{output}}" - outputs = [ - # The whitelist file is also an output, but ninja does not - # currently support multiple outputs for tool("cxx"). - "$object_subdir/{{source_name_part}}.o", - ] - if (enable_resource_whitelist_generation) { - compile_wrapper = - rebase_path("//build/toolchain/gcc_compile_wrapper.py", - root_build_dir) - command = "$python_path \"$compile_wrapper\" --resource-whitelist=\"{{output}}.whitelist\" $command" - } - } - - tool("asm") { - # For GCC we can just use the C compiler to compile assembly. - depfile = "{{output}}.d" - command = "$asm -MMD -MF $depfile ${rebuild_string}{{defines}} {{include_dirs}} {{asmflags}}${extra_asmflags} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "ASM {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.o", - ] - } - - tool("alink") { - rspfile = "{{output}}.rsp" - whitelist_flag = " " - if (enable_resource_whitelist_generation) { - whitelist_flag = " --resource-whitelist=\"{{output}}.whitelist\"" - } - - # This needs a Python script to avoid using simple sh features in this - # command, in case the host does not use a POSIX shell (e.g. compiling - # POSIX-like toolchains such as NaCl on Windows). - ar_wrapper = - rebase_path("//build/toolchain/gcc_ar_wrapper.py", root_build_dir) - - if (current_os == "aix") { - # We use slightly different arflags for AIX. - extra_arflags = "-r -c -s" - } else { - extra_arflags = "-r -c -s -D" - } - - # Almost all targets build with //build/config/compiler:thin_archive which - # adds -T to arflags. - command = "$python_path \"$ar_wrapper\"$whitelist_flag --output={{output}} --ar=\"$ar\" \"{{arflags}} $extra_arflags\" @\"$rspfile\"" - description = "AR {{output}}" - rspfile_content = "{{inputs}}" - outputs = [ - "{{output_dir}}/{{target_output_name}}{{output_extension}}", - ] - - # Shared libraries go in the target out directory by default so we can - # generate different targets with the same name and not have them collide. - default_output_dir = "{{target_out_dir}}" - default_output_extension = ".a" - output_prefix = "lib" - } - - tool("solink") { - soname = "{{target_output_name}}{{output_extension}}" # e.g. "libfoo.so". - sofile = "{{output_dir}}/$soname" # Possibly including toolchain dir. - rspfile = sofile + ".rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - whitelist_flag = " " - if (enable_resource_whitelist_generation) { - whitelist_file = "$sofile.whitelist" - whitelist_flag = " --resource-whitelist=\"$whitelist_file\"" - } - - if (defined(invoker.strip)) { - unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname" - } else { - unstripped_sofile = sofile - } - - # These variables are not built into GN but are helpers that - # implement (1) linking to produce a .so, (2) extracting the symbols - # from that file (3) if the extracted list differs from the existing - # .TOC file, overwrite it, otherwise, don't change it. - tocfile = sofile + ".TOC" - - link_command = "$ld -shared {{ldflags}}${extra_ldflags} -o \"$unstripped_sofile\" -Wl,-soname=\"$soname\" @\"$rspfile\"" - - # Generate a map file to be used for binary size analysis. - # Map file adds ~10% to the link time on a z620. - # With target_os="android", libchrome.so.map.gz is ~20MB. - map_switch = "" - if (enable_linker_map && is_official_build) { - map_file = "$unstripped_sofile.map.gz" - map_switch = " --map-file \"$map_file\"" - } - - assert(defined(readelf), "to solink you must have a readelf") - assert(defined(nm), "to solink you must have an nm") - strip_switch = "" - if (defined(invoker.strip)) { - strip_switch = "--strip=${invoker.strip} " - } - - # This needs a Python script to avoid using a complex shell command - # requiring sh control structures, pipelines, and POSIX utilities. - # The host might not have a POSIX shell and utilities (e.g. Windows). - solink_wrapper = - rebase_path("//build/toolchain/gcc_solink_wrapper.py", root_build_dir) - command = "$python_path \"$solink_wrapper\" --readelf=\"$readelf\" --nm=\"$nm\" $strip_switch--sofile=\"$unstripped_sofile\" --tocfile=\"$tocfile\"$map_switch --output=\"$sofile\"$whitelist_flag -- $link_command" - - if (target_cpu == "mipsel" && is_component_build && is_android) { - rspfile_content = "-Wl,--start-group -Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix -Wl,--end-group" - } else { - rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix" - } - - description = "SOLINK $sofile" - - # Use this for {{output_extension}} expansions unless a target manually - # overrides it (in which case {{output_extension}} will be what the target - # specifies). - default_output_extension = default_shlib_extension - - default_output_dir = "{{root_out_dir}}" - if (shlib_subdir != ".") { - default_output_dir += "/$shlib_subdir" - } - - output_prefix = "lib" - - # Since the above commands only updates the .TOC file when it changes, ask - # Ninja to check if the timestamp actually changed to know if downstream - # dependencies should be recompiled. - restat = true - - # Tell GN about the output files. It will link to the sofile but use the - # tocfile for dependency management. - outputs = [ - sofile, - tocfile, - ] - if (enable_resource_whitelist_generation) { - outputs += [ whitelist_file ] - } - if (sofile != unstripped_sofile) { - outputs += [ unstripped_sofile ] - if (defined(invoker.use_unstripped_as_runtime_outputs) && - invoker.use_unstripped_as_runtime_outputs) { - runtime_outputs = [ unstripped_sofile ] - } - } - if (defined(map_file)) { - outputs += [ map_file ] - } - link_output = sofile - depend_output = tocfile - } - - tool("solink_module") { - soname = "{{target_output_name}}{{output_extension}}" # e.g. "libfoo.so". - sofile = "{{output_dir}}/$soname" - rspfile = sofile + ".rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - - if (defined(invoker.strip)) { - unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname" - } else { - unstripped_sofile = sofile - } - - command = "$ld -shared {{ldflags}}${extra_ldflags} -o \"$unstripped_sofile\" -Wl,-soname=\"$soname\" @\"$rspfile\"" - - if (defined(invoker.strip)) { - strip_command = "${invoker.strip} -o \"$sofile\" \"$unstripped_sofile\"" - command += " && " + strip_command - } - rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix" - - description = "SOLINK_MODULE $sofile" - - # Use this for {{output_extension}} expansions unless a target manually - # overrides it (in which case {{output_extension}} will be what the target - # specifies). - if (defined(invoker.loadable_module_extension)) { - default_output_extension = invoker.loadable_module_extension - } else { - default_output_extension = default_shlib_extension - } - - default_output_dir = "{{root_out_dir}}" - if (shlib_subdir != ".") { - default_output_dir += "/$shlib_subdir" - } - - output_prefix = "lib" - - outputs = [ - sofile, - ] - if (sofile != unstripped_sofile) { - outputs += [ unstripped_sofile ] - if (defined(invoker.use_unstripped_as_runtime_outputs) && - invoker.use_unstripped_as_runtime_outputs) { - runtime_outputs = [ unstripped_sofile ] - } - } - } - - tool("link") { - exename = "{{target_output_name}}{{output_extension}}" - outfile = "{{output_dir}}/$exename" - rspfile = "$outfile.rsp" - unstripped_outfile = outfile - pool = "//build/toolchain:link_pool($default_toolchain)" - - # Use this for {{output_extension}} expansions unless a target manually - # overrides it (in which case {{output_extension}} will be what the target - # specifies). - default_output_extension = default_executable_extension - - default_output_dir = "{{root_out_dir}}" - - if (defined(invoker.strip)) { - unstripped_outfile = "{{root_out_dir}}/exe.unstripped/$exename" - } - - # Generate a map file to be used for binary size analysis. - # Map file adds ~10% to the link time on a z620. - # With target_os="android", libchrome.so.map.gz is ~20MB. - map_switch = "" - if (enable_linker_map && is_official_build) { - map_file = "$unstripped_outfile.map.gz" - map_switch = " --map-file \"$map_file\"" - } - - start_group_flag = "" - end_group_flag = "" - if (current_os != "aix") { - # the "--start-group .. --end-group" feature isn't available on the aix ld. - start_group_flag = "-Wl,--start-group" - end_group_flag = "-Wl,--end-group " - } - link_command = "$ld {{ldflags}}${extra_ldflags} -o \"$unstripped_outfile\" $start_group_flag @\"$rspfile\" {{solibs}} $end_group_flag $libs_section_prefix {{libs}} $libs_section_postfix" - - strip_switch = "" - - if (defined(invoker.strip)) { - strip_switch = " --strip=\"${invoker.strip}\" --unstripped-file=\"$unstripped_outfile\"" - } - - link_wrapper = - rebase_path("//build/toolchain/gcc_link_wrapper.py", root_build_dir) - command = "$python_path \"$link_wrapper\" --output=\"$outfile\"$strip_switch$map_switch -- $link_command" - description = "LINK $outfile" - rspfile_content = "{{inputs}}" - outputs = [ - outfile, - ] - if (outfile != unstripped_outfile) { - outputs += [ unstripped_outfile ] - if (defined(invoker.use_unstripped_as_runtime_outputs) && - invoker.use_unstripped_as_runtime_outputs) { - runtime_outputs = [ unstripped_outfile ] - } - } - if (defined(invoker.link_outputs)) { - outputs += invoker.link_outputs - } - if (defined(map_file)) { - outputs += [ map_file ] - } - } - - # These two are really entirely generic, but have to be repeated in - # each toolchain because GN doesn't allow a template to be used here. - # See //build/toolchain/toolchain.gni for details. - tool("stamp") { - command = stamp_command - description = stamp_description - } - tool("copy") { - command = copy_command - description = copy_description - } - - tool("action") { - pool = "//build/toolchain:action_pool($default_toolchain)" - } - - forward_variables_from(invoker, [ "deps" ]) - } -} - -# This is a shorthand for gcc_toolchain instances based on the Chromium-built -# version of Clang. Only the toolchain_cpu and toolchain_os variables need to -# be specified by the invoker, and optionally toolprefix if it's a -# cross-compile case. Note that for a cross-compile case this toolchain -# requires a config to pass the appropriate -target option, or else it will -# actually just be doing a native compile. The invoker can optionally override -# use_gold too. -template("clang_toolchain") { - if (defined(invoker.toolprefix)) { - toolprefix = invoker.toolprefix - } else { - toolprefix = "" - } - - gcc_toolchain(target_name) { - prefix = rebase_path("$clang_base_path/bin", root_build_dir) - cc = "$prefix/clang" - cxx = "$prefix/clang++" - ld = cxx - readelf = "${toolprefix}readelf" - ar = "${prefix}/llvm-ar" - nm = "${toolprefix}nm" - - forward_variables_from(invoker, - [ - "strip", - "is_clang_analysis_supported", - "enable_linker_map", - "use_unstripped_as_runtime_outputs", - ]) - - toolchain_args = { - if (defined(invoker.toolchain_args)) { - forward_variables_from(invoker.toolchain_args, "*") - } - is_clang = true - } - } -}
diff --git a/build/toolchain/get_concurrent_links.py b/build/toolchain/get_concurrent_links.py deleted file mode 100644 index 45a932c..0000000 --- a/build/toolchain/get_concurrent_links.py +++ /dev/null
@@ -1,84 +0,0 @@ -# Copyright 2014 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. - -# This script computs the number of concurrent links we want to run in the build -# as a function of machine spec. It's based on GetDefaultConcurrentLinks in GYP. - -import multiprocessing -import optparse -import os -import re -import subprocess -import sys - -def _GetTotalMemoryInBytes(): - if sys.platform in ('win32', 'cygwin'): - import ctypes - - class MEMORYSTATUSEX(ctypes.Structure): - _fields_ = [ - ("dwLength", ctypes.c_ulong), - ("dwMemoryLoad", ctypes.c_ulong), - ("ullTotalPhys", ctypes.c_ulonglong), - ("ullAvailPhys", ctypes.c_ulonglong), - ("ullTotalPageFile", ctypes.c_ulonglong), - ("ullAvailPageFile", ctypes.c_ulonglong), - ("ullTotalVirtual", ctypes.c_ulonglong), - ("ullAvailVirtual", ctypes.c_ulonglong), - ("sullAvailExtendedVirtual", ctypes.c_ulonglong), - ] - - stat = MEMORYSTATUSEX(dwLength=ctypes.sizeof(MEMORYSTATUSEX)) - ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(stat)) - return stat.ullTotalPhys - elif sys.platform.startswith('linux'): - if os.path.exists("/proc/meminfo"): - with open("/proc/meminfo") as meminfo: - memtotal_re = re.compile(r'^MemTotal:\s*(\d*)\s*kB') - for line in meminfo: - match = memtotal_re.match(line) - if not match: - continue - return float(match.group(1)) * 2**10 - elif sys.platform == 'darwin': - try: - return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize'])) - except Exception: - return 0 - # TODO(scottmg): Implement this for other platforms. - return 0 - - -def _GetDefaultConcurrentLinks(mem_per_link_gb, reserve_mem_gb): - # Inherit the legacy environment variable for people that have set it in GYP. - pool_size = int(os.getenv('GYP_LINK_CONCURRENCY', 0)) - if pool_size: - return pool_size - - mem_total_bytes = _GetTotalMemoryInBytes() - mem_total_bytes = max(0, mem_total_bytes - reserve_mem_gb * 2**30) - num_concurrent_links = int(max(1, mem_total_bytes / mem_per_link_gb / 2**30)) - hard_cap = max(1, int(os.getenv('GYP_LINK_CONCURRENCY_MAX', 2**32))) - - try: - cpu_cap = multiprocessing.cpu_count() - except: - cpu_cap = 1 - - return min(num_concurrent_links, hard_cap, cpu_cap) - - -def main(): - parser = optparse.OptionParser() - parser.add_option('--mem_per_link_gb', action="store", type="int", default=8) - parser.add_option('--reserve_mem_gb', action="store", type="int", default=0) - parser.disable_interspersed_args() - options, _ = parser.parse_args() - - print _GetDefaultConcurrentLinks(options.mem_per_link_gb, - options.reserve_mem_gb) - return 0 - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/toolchain/get_cpu_count.py b/build/toolchain/get_cpu_count.py deleted file mode 100644 index 1609ce6..0000000 --- a/build/toolchain/get_cpu_count.py +++ /dev/null
@@ -1,21 +0,0 @@ -# Copyright 2018 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. - -# This script shows cpu count to specify capacity of action pool. - -import multiprocessing -import sys - -def main(): - try: - cpu_count = multiprocessing.cpu_count() - except: - cpu_count = 1 - - print cpu_count - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/toolchain/goma.gni b/build/toolchain/goma.gni deleted file mode 100644 index 29be588..0000000 --- a/build/toolchain/goma.gni +++ /dev/null
@@ -1,27 +0,0 @@ -# Copyright (c) 2013 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. - -# Defines the configuration of Goma. - -declare_args() { - # Set to true to enable distributed compilation using Goma. - use_goma = false - - # Set the default value based on the platform. - if (host_os == "win") { - # Absolute directory containing the gomacc.exe binary. - goma_dir = "C:\src\goma\goma-win64" - } else { - if (getenv("GOMA_DIR") != "") { - # Absolute directory containing the gomacc binary. - goma_dir = getenv("GOMA_DIR") - } else { - # Absolute directory containing the gomacc binary. - goma_dir = getenv("HOME") + "/goma" - } - } -} - -assert(!(is_win && host_os != "win") || !use_goma, - "goma does not yet work in win cross builds, b/64390790")
diff --git a/build/toolchain/linux/BUILD.gn b/build/toolchain/linux/BUILD.gn deleted file mode 100644 index 4e9ff44..0000000 --- a/build/toolchain/linux/BUILD.gn +++ /dev/null
@@ -1,284 +0,0 @@ -# Copyright 2013 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/config/sysroot.gni") -import("//build/toolchain/gcc_toolchain.gni") - -clang_toolchain("clang_arm") { - toolprefix = "arm-linux-gnueabihf-" - toolchain_args = { - current_cpu = "arm" - current_os = "linux" - } -} - -clang_toolchain("clang_arm64") { - toolprefix = "aarch64-linux-gnu-" - toolchain_args = { - current_cpu = "arm64" - current_os = "linux" - } -} - -gcc_toolchain("arm64") { - toolprefix = "aarch64-linux-gnu-" - - cc = "${toolprefix}gcc" - cxx = "${toolprefix}g++" - - ar = "${toolprefix}ar" - ld = cxx - readelf = "${toolprefix}readelf" - nm = "${toolprefix}nm" - - toolchain_args = { - current_cpu = "arm64" - current_os = "linux" - is_clang = false - } -} - -gcc_toolchain("arm") { - toolprefix = "arm-linux-gnueabihf-" - - cc = "${toolprefix}gcc" - cxx = "${toolprefix}g++" - - ar = "${toolprefix}ar" - ld = cxx - readelf = "${toolprefix}readelf" - nm = "${toolprefix}nm" - - toolchain_args = { - current_cpu = "arm" - current_os = "linux" - is_clang = false - } -} - -clang_toolchain("clang_x86") { - # Output linker map files for binary size analysis. - enable_linker_map = true - - toolchain_args = { - current_cpu = "x86" - current_os = "linux" - } -} - -clang_toolchain("clang_x86_v8_arm") { - toolchain_args = { - current_cpu = "x86" - v8_current_cpu = "arm" - current_os = "linux" - } -} - -clang_toolchain("clang_x86_v8_mipsel") { - toolchain_args = { - current_cpu = "x86" - v8_current_cpu = "mipsel" - current_os = "linux" - } -} - -clang_toolchain("clang_x86_v8_mips") { - toolchain_args = { - current_cpu = "x86" - v8_current_cpu = "mips" - current_os = "linux" - } -} - -gcc_toolchain("x86") { - cc = "gcc" - cxx = "g++" - - readelf = "readelf" - nm = "nm" - ar = "ar" - ld = cxx - - # Output linker map files for binary size analysis. - enable_linker_map = true - - toolchain_args = { - current_cpu = "x86" - current_os = "linux" - is_clang = false - } -} - -clang_toolchain("clang_x64") { - # Output linker map files for binary size analysis. - enable_linker_map = true - - toolchain_args = { - current_cpu = "x64" - current_os = "linux" - } -} - -clang_toolchain("clang_x64_v8_arm64") { - toolchain_args = { - current_cpu = "x64" - v8_current_cpu = "arm64" - current_os = "linux" - } -} - -clang_toolchain("clang_x64_v8_mips64el") { - toolchain_args = { - current_cpu = "x64" - v8_current_cpu = "mips64el" - current_os = "linux" - } -} - -clang_toolchain("clang_x64_v8_mips64") { - toolchain_args = { - current_cpu = "x64" - v8_current_cpu = "mips64" - current_os = "linux" - } -} - -gcc_toolchain("x64") { - cc = "gcc" - cxx = "g++" - - readelf = "readelf" - nm = "nm" - ar = "ar" - ld = cxx - - # Output linker map files for binary size analysis. - enable_linker_map = true - - toolchain_args = { - current_cpu = "x64" - current_os = "linux" - is_clang = false - } -} - -clang_toolchain("clang_mipsel") { - toolchain_args = { - current_cpu = "mipsel" - current_os = "linux" - } -} - -clang_toolchain("clang_mips64el") { - toolchain_args = { - current_cpu = "mips64el" - current_os = "linux" - } -} - -gcc_toolchain("mipsel") { - toolprefix = "mipsel-linux-gnu-" - - cc = "${toolprefix}gcc" - cxx = " ${toolprefix}g++" - ar = "${toolprefix}ar" - ld = cxx - readelf = "${toolprefix}readelf" - nm = "${toolprefix}nm" - - toolchain_args = { - cc_wrapper = "" - current_cpu = "mipsel" - current_os = "linux" - is_clang = false - use_goma = false - } -} - -gcc_toolchain("mips64el") { - toolprefix = "mips64el-linux-gnuabi64-" - - cc = "${toolprefix}gcc" - cxx = "${toolprefix}g++" - ar = "${toolprefix}ar" - ld = cxx - readelf = "${toolprefix}readelf" - nm = "${toolprefix}nm" - - toolchain_args = { - cc_wrapper = "" - current_cpu = "mips64el" - current_os = "linux" - is_clang = false - use_goma = false - } -} - -gcc_toolchain("s390x") { - cc = "gcc" - cxx = "g++" - - readelf = "readelf" - nm = "nm" - ar = "ar" - ld = cxx - - toolchain_args = { - current_cpu = "s390x" - current_os = "linux" - is_clang = false - } -} - -gcc_toolchain("ppc64") { - cc = "gcc" - cxx = "g++" - - readelf = "readelf" - nm = "nm" - ar = "ar" - ld = cxx - - toolchain_args = { - current_cpu = "ppc64" - current_os = "linux" - is_clang = false - } -} - -gcc_toolchain("mips") { - toolprefix = "mips-linux-gnu-" - - cc = "${toolprefix}gcc" - cxx = "${toolprefix}g++" - - readelf = "${toolprefix}readelf" - nm = "${toolprefix}nm" - ar = "${toolprefix}ar" - ld = cxx - - toolchain_args = { - current_cpu = "mips" - current_os = "linux" - is_clang = false - } -} - -gcc_toolchain("mips64") { - toolprefix = "mips64-linux-gnuabi64-" - - cc = "${toolprefix}gcc" - cxx = "${toolprefix}g++" - - readelf = "${toolprefix}readelf" - nm = "${toolprefix}nm" - ar = "${toolprefix}ar" - ld = cxx - - toolchain_args = { - current_cpu = "mips64" - current_os = "linux" - is_clang = false - } -}
diff --git a/build/toolchain/linux/unbundle/BUILD.gn b/build/toolchain/linux/unbundle/BUILD.gn deleted file mode 100644 index 4719d54..0000000 --- a/build/toolchain/linux/unbundle/BUILD.gn +++ /dev/null
@@ -1,41 +0,0 @@ -# Copyright 2017 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/gcc_toolchain.gni") - -gcc_toolchain("default") { - cc = getenv("CC") - cxx = getenv("CXX") - ar = getenv("AR") - nm = getenv("NM") - ld = cxx - - extra_cflags = getenv("CFLAGS") - extra_cppflags = getenv("CPPFLAGS") - extra_cxxflags = getenv("CXXFLAGS") - extra_ldflags = getenv("LDFLAGS") - - toolchain_args = { - current_cpu = current_cpu - current_os = current_os - } -} - -gcc_toolchain("host") { - cc = getenv("BUILD_CC") - cxx = getenv("BUILD_CXX") - ar = getenv("BUILD_AR") - nm = getenv("BUILD_NM") - ld = cxx - - extra_cflags = getenv("BUILD_CFLAGS") - extra_cppflags = getenv("BUILD_CPPFLAGS") - extra_cxxflags = getenv("BUILD_CXXFLAGS") - extra_ldflags = getenv("BUILD_LDFLAGS") - - toolchain_args = { - current_cpu = current_cpu - current_os = current_os - } -}
diff --git a/build/toolchain/linux/unbundle/README.md b/build/toolchain/linux/unbundle/README.md deleted file mode 100644 index ac5808a..0000000 --- a/build/toolchain/linux/unbundle/README.md +++ /dev/null
@@ -1,41 +0,0 @@ -# Overview - -This directory contains files that make it possible for Linux -distributions to build Chromium using system toolchain. - -For more info on established way such builds are configured, -please read the following: - - - https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html - -Why do distros want CFLAGS, LDFLAGS, etc? Please read the following -for some examples. This is not an exhaustive list. - - - https://wiki.debian.org/Hardening - - https://wiki.ubuntu.com/DistCompilerFlags - - https://fedoraproject.org/wiki/Changes/Harden_All_Packages - - https://fedoraproject.org/wiki/Changes/Modernise_GCC_Flags - - https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags - - https://blog.flameeyes.eu/2010/09/are-we-done-with-ldflags/ - - https://blog.flameeyes.eu/2008/08/flags-and-flags/ - -# Usage - -Add the following to GN args: - -``` -custom_toolchain="//build/toolchain/linux/unbundle:default" -host_toolchain="//build/toolchain/linux/unbundle:default" -``` - -See [more docs on GN](https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/quick_start.md). - -To cross-compile (not fully tested), add the following: - -``` -host_toolchain="//build/toolchain/linux/unbundle:host" -v8_snapshot_toolchain="//build/toolchain/linux/unbundle:host" -``` - -Note: when cross-compiling for a 32-bit target, a matching 32-bit toolchain -may be needed.
diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn deleted file mode 100644 index 441ff0f..0000000 --- a/build/toolchain/mac/BUILD.gn +++ /dev/null
@@ -1,545 +0,0 @@ -# Copyright (c) 2013 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. - -# TODO(brettw) Use "gcc_toolchain.gni" like the Linux toolchains. This requires -# some enhancements since the commands on Mac are slightly different than on -# Linux. - -import("../goma.gni") -import("//build/config/clang/clang.gni") -if (is_ios) { - import("//build/config/ios/ios_sdk.gni") -} -import("//build/config/mac/mac_sdk.gni") -import("//build/config/mac/symbols.gni") - -assert(host_os == "mac") - -import("//build/toolchain/cc_wrapper.gni") -import("//build/toolchain/clang_static_analyzer.gni") -import("//build/toolchain/goma.gni") -import("//build/toolchain/toolchain.gni") -import("//build/toolchain/concurrent_links.gni") - -declare_args() { - # Reduce the number of tasks using the copy_bundle_data and compile_xcassets - # tools as they can cause lots of I/O contention when invoking ninja with a - # large number of parallel jobs (e.g. when using distributed build like goma). - bundle_pool_depth = -1 -} - -if (current_toolchain == default_toolchain) { - pool("bundle_pool") { - if (bundle_pool_depth == -1) { - depth = concurrent_links - } else { - depth = bundle_pool_depth - } - } -} - -# When implementing tools using Python scripts, a TOOL_VERSION=N env -# variable is placed in front of the command. The N should be incremented -# whenever the script is changed, so that the build system rebuilds all -# edges that utilize the script. Ideally this should be changed to use -# proper input-dirty checking, but that could be expensive. Instead, use a -# script to get the tool scripts' modification time to use as the version. -# This won't cause a re-generation of GN files when the tool script changes -# but it will cause edges to be marked as dirty if the ninja files are -# regenerated. See https://crbug.com/619083 for details. A proper fix -# would be to have inputs to tools (https://crbug.com/621119). -tool_versions = - exec_script("get_tool_mtime.py", - rebase_path([ - "//build/toolchain/mac/compile_xcassets.py", - "//build/toolchain/mac/filter_libtool.py", - "//build/toolchain/mac/linker_driver.py", - ], - root_build_dir), - "trim scope") - -# Shared toolchain definition. Invocations should set current_os to set the -# build args in this definition. -template("mac_toolchain") { - toolchain(target_name) { - if (use_system_xcode) { - env_wrapper = "" - } else { - env_wrapper = "export DEVELOPER_DIR=$hermetic_xcode_path; " - } - - # When invoking this toolchain not as the default one, these args will be - # passed to the build. They are ignored when this is the default toolchain. - assert(defined(invoker.toolchain_args), - "Toolchains must declare toolchain_args") - toolchain_args = { - # Populate toolchain args from the invoker. - forward_variables_from(invoker.toolchain_args, "*") - - # The host toolchain value computed by the default toolchain's setup - # needs to be passed through unchanged to all secondary toolchains to - # ensure that it's always the same, regardless of the values that may be - # set on those toolchains. - host_toolchain = host_toolchain - } - - # Supports building with the version of clang shipped with Xcode when - # targeting iOS by not respecting clang_base_path. - if (toolchain_args.current_os == "ios" && use_xcode_clang) { - prefix = "" - } else { - prefix = rebase_path("$clang_base_path/bin/", root_build_dir) - } - - _cc = "${prefix}clang" - _cxx = "${prefix}clang++" - - # When the invoker has explicitly overridden use_goma or cc_wrapper in the - # toolchain args, use those values, otherwise default to the global one. - # This works because the only reasonable override that toolchains might - # supply for these values are to force-disable them. - if (defined(toolchain_args.use_goma)) { - toolchain_uses_goma = toolchain_args.use_goma - } else { - toolchain_uses_goma = use_goma - } - if (defined(toolchain_args.cc_wrapper)) { - toolchain_cc_wrapper = toolchain_args.cc_wrapper - } else { - toolchain_cc_wrapper = cc_wrapper - } - - # Compute the compiler prefix. - if (toolchain_uses_goma) { - assert(toolchain_cc_wrapper == "", - "Goma and cc_wrapper can't be used together.") - compiler_prefix = "$goma_dir/gomacc " - } else if (toolchain_cc_wrapper != "") { - compiler_prefix = toolchain_cc_wrapper + " " - } else { - compiler_prefix = "" - } - - cc = compiler_prefix + _cc - cxx = compiler_prefix + _cxx - ld = _cxx - - if (use_clang_static_analyzer) { - analyzer_wrapper = - rebase_path("//build/toolchain/clang_static_analyzer_wrapper.py", - root_build_dir) + " --mode=clang" - cc = analyzer_wrapper + " ${cc}" - cxx = analyzer_wrapper + " ${cxx}" - - ld = cxx - } - - linker_driver = - "TOOL_VERSION=${tool_versions.linker_driver} " + - rebase_path("//build/toolchain/mac/linker_driver.py", root_build_dir) - - # On iOS, the final applications are assembled using lipo (to support fat - # builds). The correct flags are passed to the linker_driver.py script - # directly during the lipo call. - if (toolchain_args.current_os != "ios") { - _enable_dsyms = enable_dsyms - _save_unstripped_output = save_unstripped_output - } else { - _enable_dsyms = false - _save_unstripped_output = false - } - - # Make these apply to all tools below. - lib_switch = "-l" - lib_dir_switch = "-L" - - # Object files go in this directory. Use label_name instead of - # target_output_name since labels will generally have no spaces and will be - # unique in the directory. - object_subdir = "{{target_out_dir}}/{{label_name}}" - - # If dSYMs are enabled, this flag will be added to the link tools. - if (_enable_dsyms) { - dsym_switch = " -Wcrl,dsym,{{root_out_dir}} " - dsym_output_dir = - "{{root_out_dir}}/{{target_output_name}}{{output_extension}}.dSYM" - dsym_output = [ - "$dsym_output_dir/", - "$dsym_output_dir/Contents/Info.plist", - "$dsym_output_dir/Contents/Resources/DWARF/" + - "{{target_output_name}}{{output_extension}}", - ] - } else { - dsym_switch = "" - } - - if (_save_unstripped_output) { - _unstripped_output = "{{root_out_dir}}/{{target_output_name}}{{output_extension}}.unstripped" - } - - tool("cc") { - depfile = "{{output}}.d" - precompiled_header_type = "gcc" - command = "$env_wrapper $cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "CC {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.o", - ] - } - - tool("cxx") { - depfile = "{{output}}.d" - precompiled_header_type = "gcc" - command = "$env_wrapper $cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "CXX {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.o", - ] - } - - tool("asm") { - # For GCC we can just use the C compiler to compile assembly. - depfile = "{{output}}.d" - command = "$env_wrapper $cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{asmflags}} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "ASM {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.o", - ] - } - - tool("objc") { - depfile = "{{output}}.d" - precompiled_header_type = "gcc" - command = "$env_wrapper $cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_objc}} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "OBJC {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.o", - ] - } - - tool("objcxx") { - depfile = "{{output}}.d" - precompiled_header_type = "gcc" - command = "$env_wrapper $cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_objcc}} -c {{source}} -o {{output}}" - depsformat = "gcc" - description = "OBJCXX {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.o", - ] - } - - tool("alink") { - script = - rebase_path("//build/toolchain/mac/filter_libtool.py", root_build_dir) - - # Note about -filelist: Apple's linker reads the file list file and - # interprets each newline-separated chunk of text as a file name. It - # doesn't do the things one would expect from the shell like unescaping - # or handling quotes. In contrast, when Ninja finds a file name with - # spaces, it single-quotes them in $inputs_newline as it would normally - # do for command-line arguments. Thus any source names with spaces, or - # label names with spaces (which GN bases the output paths on) will be - # corrupted by this process. Don't use spaces for source files or labels. - rspfile = "{{output}}.rsp" - rspfile_content = "{{inputs_newline}}" - command = "$env_wrapper rm -f {{output}} && TOOL_VERSION=${tool_versions.filter_libtool} python $script libtool -static {{arflags}} -o {{output}} -filelist $rspfile" - description = "LIBTOOL-STATIC {{output}}" - outputs = [ - "{{output_dir}}/{{target_output_name}}{{output_extension}}", - ] - default_output_dir = "{{target_out_dir}}" - default_output_extension = ".a" - output_prefix = "lib" - } - - tool("solink") { - dylib = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # eg "./libfoo.dylib" - rspfile = dylib + ".rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - - # These variables are not built into GN but are helpers that implement - # (1) linking to produce a .dylib, (2) extracting the symbols from that - # file to a temporary file, (3) if the temporary file has differences from - # the existing .TOC file, overwrite it, otherwise, don't change it. - # - # As a special case, if the library reexports symbols from other dynamic - # libraries, we always update the .TOC and skip the temporary file and - # diffing steps, since that library always needs to be re-linked. - tocname = dylib + ".TOC" - temporary_tocname = dylib + ".tmp" - - does_reexport_command = "[ ! -e \"$dylib\" -o ! -e \"$tocname\" ] || otool -l \"$dylib\" | grep -q LC_REEXPORT_DYLIB" - - link_command = "$linker_driver $ld -shared " - if (is_component_build) { - link_command += " -Wl,-install_name,@rpath/\"{{target_output_name}}{{output_extension}}\" " - } - link_command += dsym_switch - link_command += "{{ldflags}} -o \"$dylib\" -Wl,-filelist,\"$rspfile\" {{libs}} {{solibs}}" - - replace_command = "if ! cmp -s \"$temporary_tocname\" \"$tocname\"; then mv \"$temporary_tocname\" \"$tocname\"" - extract_toc_command = "{ otool -l \"$dylib\" | grep LC_ID_DYLIB -A 5; nm -gP \"$dylib\" | cut -f1-2 -d' ' | grep -v U\$\$; true; }" - - command = "$env_wrapper if $does_reexport_command ; then $link_command && $extract_toc_command > \"$tocname\"; else $link_command && $extract_toc_command > \"$temporary_tocname\" && $replace_command ; fi; fi" - - rspfile_content = "{{inputs_newline}}" - - description = "SOLINK {{output}}" - - # Use this for {{output_extension}} expansions unless a target manually - # overrides it (in which case {{output_extension}} will be what the target - # specifies). - default_output_dir = "{{root_out_dir}}" - default_output_extension = ".dylib" - - output_prefix = "lib" - - # Since the above commands only updates the .TOC file when it changes, ask - # Ninja to check if the timestamp actually changed to know if downstream - # dependencies should be recompiled. - restat = true - - # Tell GN about the output files. It will link to the dylib but use the - # tocname for dependency management. - outputs = [ - dylib, - tocname, - ] - link_output = dylib - depend_output = tocname - - if (_enable_dsyms) { - outputs += dsym_output - } - if (_save_unstripped_output) { - outputs += [ _unstripped_output ] - } - } - - tool("solink_module") { - sofile = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # eg "./libfoo.so" - rspfile = sofile + ".rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - - link_command = "$env_wrapper $linker_driver $ld -bundle {{ldflags}} -o \"$sofile\" -Wl,-filelist,\"$rspfile\"" - if (is_component_build) { - link_command += " -Wl,-install_name,@rpath/{{target_output_name}}{{output_extension}}" - } - link_command += dsym_switch - link_command += " {{solibs}} {{libs}}" - command = link_command - - rspfile_content = "{{inputs_newline}}" - - description = "SOLINK_MODULE {{output}}" - - # Use this for {{output_extension}} expansions unless a target manually - # overrides it (in which case {{output_extension}} will be what the target - # specifies). - default_output_dir = "{{root_out_dir}}" - default_output_extension = ".so" - - outputs = [ - sofile, - ] - - if (_enable_dsyms) { - outputs += dsym_output - } - if (_save_unstripped_output) { - outputs += [ _unstripped_output ] - } - } - - tool("link") { - outfile = "{{output_dir}}/{{target_output_name}}{{output_extension}}" - rspfile = "$outfile.rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - - # Note about -filelist: Apple's linker reads the file list file and - # interprets each newline-separated chunk of text as a file name. It - # doesn't do the things one would expect from the shell like unescaping - # or handling quotes. In contrast, when Ninja finds a file name with - # spaces, it single-quotes them in $inputs_newline as it would normally - # do for command-line arguments. Thus any source names with spaces, or - # label names with spaces (which GN bases the output paths on) will be - # corrupted by this process. Don't use spaces for source files or labels. - command = "$env_wrapper $linker_driver $ld $dsym_switch {{ldflags}} -o \"$outfile\" -Wl,-filelist,\"$rspfile\" {{solibs}} {{libs}}" - description = "LINK $outfile" - rspfile_content = "{{inputs_newline}}" - outputs = [ - outfile, - ] - - if (_enable_dsyms) { - outputs += dsym_output - } - if (_save_unstripped_output) { - outputs += [ _unstripped_output ] - } - - default_output_dir = "{{root_out_dir}}" - } - - # These two are really entirely generic, but have to be repeated in - # each toolchain because GN doesn't allow a template to be used here. - # See //build/toolchain/toolchain.gni for details. - tool("stamp") { - command = stamp_command - description = stamp_description - } - tool("copy") { - command = copy_command - description = copy_description - } - - tool("copy_bundle_data") { - # copy_command use hardlink if possible but this does not work with - # directories. If source is a directory, instead use "pax" to create - # the same tree structure using hardlinks to individual files (this - # preserve symbolic links too) as recommended in the replies to the - # question at http://serverfault.com/q/209888/43689 ("cp -al" isn't - # available on macOS). - # - # According to the man page for pax, the commands to use to clone - # olddir to newdir using pax are the following: - # - # $ mkdir newdir - # $ cd olddir - # $ pax -rwl . ../newdir - # - # The _copydir command does exactly that but use an absolute path - # constructed using shell variable $OLDPWD (automatically set when - # cd is used) as computing the relative path is a bit complex and - # using pwd would requires a sub-shell to be created. - _copydir = "mkdir -p {{output}} && cd {{source}} && " + - "pax -rwl . \"\$OLDPWD\"/{{output}}" - command = "rm -rf {{output}} && if [[ -d {{source}} ]]; then " + - _copydir + "; else " + copy_command + "; fi" - - description = "COPY_BUNDLE_DATA {{source}} {{output}}" - pool = ":bundle_pool($default_toolchain)" - } - tool("compile_xcassets") { - _tool = rebase_path("//build/toolchain/mac/compile_xcassets.py", - root_build_dir) - if (is_ios) { - _sdk_name = ios_sdk_name - _min_deployment_target = ios_deployment_target - _compress_pngs = "" - } else { - _sdk_name = mac_sdk_name - _min_deployment_target = mac_deployment_target - _compress_pngs = " -c " - } - command = - "$env_wrapper rm -f \"{{output}}\" && " + - "TOOL_VERSION=${tool_versions.compile_xcassets} " + - "python $_tool$_compress_pngs -p \"$_sdk_name\" " + - "-t \"$_min_deployment_target\" -T \"{{bundle_product_type}}\" " + - "-P \"{{bundle_partial_info_plist}}\" -o {{output}} {{inputs}}" - - description = "COMPILE_XCASSETS {{output}}" - pool = ":bundle_pool($default_toolchain)" - } - - tool("action") { - pool = "//build/toolchain:action_pool($default_toolchain)" - } - } -} - -mac_toolchain("clang_arm") { - toolchain_args = { - current_cpu = "arm" - current_os = "mac" - } -} - -mac_toolchain("clang_x64") { - toolchain_args = { - current_cpu = "x64" - current_os = "mac" - - if (target_os == "ios") { - # TODO(crbug.com/753445): the use_sanitizer_coverage arg is currently - # not supported by the Chromium mac_clang_x64 toolchain on iOS - # distribution. - use_sanitizer_coverage = false - } - } -} - -mac_toolchain("clang_x86") { - toolchain_args = { - current_cpu = "x86" - current_os = "mac" - } -} - -mac_toolchain("clang_x86_v8_arm") { - toolchain_args = { - current_cpu = "x86" - v8_current_cpu = "arm" - current_os = "mac" - } -} - -mac_toolchain("clang_x86_v8_mipsel") { - toolchain_args = { - current_cpu = "x86" - v8_current_cpu = "mipsel" - current_os = "mac" - } -} - -mac_toolchain("clang_x64_v8_arm64") { - toolchain_args = { - current_cpu = "x64" - v8_current_cpu = "arm64" - current_os = "mac" - } -} - -mac_toolchain("clang_x64_v8_mips64el") { - toolchain_args = { - current_cpu = "x64" - v8_current_cpu = "mips64el" - current_os = "mac" - } -} - -if (is_ios) { - mac_toolchain("ios_clang_arm") { - toolchain_args = { - current_cpu = "arm" - current_os = "ios" - } - } - - mac_toolchain("ios_clang_arm64") { - toolchain_args = { - current_cpu = "arm64" - current_os = "ios" - } - } - - mac_toolchain("ios_clang_x86") { - toolchain_args = { - current_cpu = "x86" - current_os = "ios" - } - } - - mac_toolchain("ios_clang_x64") { - toolchain_args = { - current_cpu = "x64" - current_os = "ios" - } - } -}
diff --git a/build/toolchain/mac/OWNERS b/build/toolchain/mac/OWNERS deleted file mode 100644 index 0ed2e15..0000000 --- a/build/toolchain/mac/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -rsesek@chromium.org -sdefresne@chromium.org
diff --git a/build/toolchain/mac/compile_xcassets.py b/build/toolchain/mac/compile_xcassets.py deleted file mode 100644 index c1f4680..0000000 --- a/build/toolchain/mac/compile_xcassets.py +++ /dev/null
@@ -1,251 +0,0 @@ -# Copyright 2016 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 argparse -import os -import re -import subprocess -import sys -import tempfile - -"""Wrapper around actool to compile assets catalog. - -The script compile_xcassets.py is a wrapper around actool to compile -assets catalog to Assets.car that turns warning into errors. It also -fixes some quirks of actool to make it work from ninja (mostly that -actool seems to require absolute path but gn generates command-line -with relative paths). - -The wrapper filter out any message that is not a section header and -not a warning or error message, and fails if filtered output is not -empty. This should to treat all warnings as error until actool has -an option to fail with non-zero error code when there are warnings. -""" - -# Pattern matching a section header in the output of actool. -SECTION_HEADER = re.compile('^/\\* ([^ ]*) \\*/$') - -# Name of the section containing informational messages that can be ignored. -NOTICE_SECTION = 'com.apple.actool.compilation-results' - -# Regular expressions matching spurious messages from actool that should be -# ignored (as they are bogus). Generally a bug should be filed with Apple -# when adding a pattern here. -SPURIOUS_PATTERNS = map(re.compile, [ - # crbug.com/770634, likely a bug in Xcode 9.1 beta, remove once build - # requires a version of Xcode with a fix. - r'\[\]\[ipad\]\[76x76\]\[\]\[\]\[1x\]\[\]\[\]: notice: \(null\)', - - # crbug.com/770634, likely a bug in Xcode 9.2 beta, remove once build - # requires a version of Xcode with a fix. - r'\[\]\[ipad\]\[76x76\]\[\]\[\]\[1x\]\[\]\[\]: notice: 76x76@1x app icons' - ' only apply to iPad apps targeting releases of iOS prior to 10.0.', -]) - -# Map special type of asset catalog to the corresponding command-line -# parameter that need to be passed to actool. -ACTOOL_FLAG_FOR_ASSET_TYPE = { - '.appiconset': '--app-icon', - '.launchimage': '--launch-image', -} - - -def IsSpuriousMessage(line): - """Returns whether line contains a spurious message that should be ignored.""" - for pattern in SPURIOUS_PATTERNS: - match = pattern.search(line) - if match is not None: - return True - return False - - -def FilterCompilerOutput(compiler_output, relative_paths): - """Filers actool compilation output. - - The compiler output is composed of multiple sections for each different - level of output (error, warning, notices, ...). Each section starts with - the section name on a single line, followed by all the messages from the - section. - - The function filter any lines that are not in com.apple.actool.errors or - com.apple.actool.document.warnings sections (as spurious messages comes - before any section of the output). - - See crbug.com/730054, crbug.com/739163 and crbug.com/770634 for some example - messages that pollute the output of actool and cause flaky builds. - - Args: - compiler_output: string containing the output generated by the - compiler (contains both stdout and stderr) - relative_paths: mapping from absolute to relative paths used to - convert paths in the warning and error messages (unknown paths - will be left unaltered) - - Returns: - The filtered output of the compiler. If the compilation was a - success, then the output will be empty, otherwise it will use - relative path and omit any irrelevant output. - """ - - filtered_output = [] - current_section = None - data_in_section = False - for line in compiler_output.splitlines(): - match = SECTION_HEADER.search(line) - if match is not None: - data_in_section = False - current_section = match.group(1) - continue - if current_section and current_section != NOTICE_SECTION: - if IsSpuriousMessage(line): - continue - absolute_path = line.split(':')[0] - relative_path = relative_paths.get(absolute_path, absolute_path) - if absolute_path != relative_path: - line = relative_path + line[len(absolute_path):] - if not data_in_section: - data_in_section = True - filtered_output.append('/* %s */\n' % current_section) - filtered_output.append(line + '\n') - - return ''.join(filtered_output) - - -def CompileAssetCatalog(output, platform, product_type, min_deployment_target, - inputs, compress_pngs, partial_info_plist): - """Compile the .xcassets bundles to an asset catalog using actool. - - Args: - output: absolute path to the containing bundle - platform: the targeted platform - product_type: the bundle type - min_deployment_target: minimum deployment target - inputs: list of absolute paths to .xcassets bundles - compress_pngs: whether to enable compression of pngs - partial_info_plist: path to partial Info.plist to generate - """ - command = [ - 'xcrun', 'actool', '--output-format=human-readable-text', - '--notices', '--warnings', '--errors', '--platform', platform, - '--minimum-deployment-target', min_deployment_target, - ] - - if compress_pngs: - command.extend(['--compress-pngs']) - - if product_type != '': - command.extend(['--product-type', product_type]) - - if platform == 'macosx': - command.extend(['--target-device', 'mac']) - else: - command.extend(['--target-device', 'iphone', '--target-device', 'ipad']) - - # Scan the input directories for the presence of asset catalog types that - # require special treatment, and if so, add them to the actool command-line. - for relative_path in inputs: - - if not os.path.isdir(relative_path): - continue - - for file_or_dir_name in os.listdir(relative_path): - if not os.path.isdir(os.path.join(relative_path, file_or_dir_name)): - continue - - asset_name, asset_type = os.path.splitext(file_or_dir_name) - if asset_type not in ACTOOL_FLAG_FOR_ASSET_TYPE: - continue - - command.extend([ACTOOL_FLAG_FOR_ASSET_TYPE[asset_type], asset_name]) - - # Always ask actool to generate a partial Info.plist file. If not path - # has been given by the caller, use a temporary file name. - temporary_file = None - if not partial_info_plist: - temporary_file = tempfile.NamedTemporaryFile(suffix='.plist') - partial_info_plist = temporary_file.name - - command.extend(['--output-partial-info-plist', partial_info_plist]) - - # Dictionary used to convert absolute paths back to their relative form - # in the output of actool. - relative_paths = {} - - # actool crashes if paths are relative, so convert input and output paths - # to absolute paths, and record the relative paths to fix them back when - # filtering the output. - absolute_output = os.path.abspath(output) - relative_paths[output] = absolute_output - relative_paths[os.path.dirname(output)] = os.path.dirname(absolute_output) - command.extend(['--compile', os.path.dirname(os.path.abspath(output))]) - - for relative_path in inputs: - absolute_path = os.path.abspath(relative_path) - relative_paths[absolute_path] = relative_path - command.append(absolute_path) - - try: - # Run actool and redirect stdout and stderr to the same pipe (as actool - # is confused about what should go to stderr/stdout). - process = subprocess.Popen( - command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - stdout, _ = process.communicate() - - # Filter the output to remove all garbarge and to fix the paths. - stdout = FilterCompilerOutput(stdout, relative_paths) - - if process.returncode or stdout: - sys.stderr.write(stdout) - sys.exit(1) - - finally: - if temporary_file: - temporary_file.close() - - -def Main(): - parser = argparse.ArgumentParser( - description='compile assets catalog for a bundle') - parser.add_argument( - '--platform', '-p', required=True, - choices=('macosx', 'iphoneos', 'iphonesimulator'), - help='target platform for the compiled assets catalog') - parser.add_argument( - '--minimum-deployment-target', '-t', required=True, - help='minimum deployment target for the compiled assets catalog') - parser.add_argument( - '--output', '-o', required=True, - help='path to the compiled assets catalog') - parser.add_argument( - '--compress-pngs', '-c', action='store_true', default=False, - help='recompress PNGs while compiling assets catalog') - parser.add_argument( - '--product-type', '-T', - help='type of the containing bundle') - parser.add_argument( - '--partial-info-plist', '-P', - help='path to partial info plist to create') - parser.add_argument( - 'inputs', nargs='+', - help='path to input assets catalog sources') - args = parser.parse_args() - - if os.path.basename(args.output) != 'Assets.car': - sys.stderr.write( - 'output should be path to compiled asset catalog, not ' - 'to the containing bundle: %s\n' % (args.output,)) - sys.exit(1) - - CompileAssetCatalog( - args.output, - args.platform, - args.product_type, - args.minimum_deployment_target, - args.inputs, - args.compress_pngs, - args.partial_info_plist) - - -if __name__ == '__main__': - sys.exit(Main())
diff --git a/build/toolchain/mac/compile_xcassets_unittests.py b/build/toolchain/mac/compile_xcassets_unittests.py deleted file mode 100644 index 7655df8..0000000 --- a/build/toolchain/mac/compile_xcassets_unittests.py +++ /dev/null
@@ -1,141 +0,0 @@ -# Copyright 2017 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 unittest -import compile_xcassets - - -class TestFilterCompilerOutput(unittest.TestCase): - - relative_paths = { - '/Users/janedoe/chromium/src/Chromium.xcassets': - '../../Chromium.xcassets', - '/Users/janedoe/chromium/src/out/Default/Chromium.app/Assets.car': - 'Chromium.app/Assets.car', - } - - def testNoError(self): - self.assertEquals( - '', - compile_xcassets.FilterCompilerOutput( - '/* com.apple.actool.compilation-results */\n' - '/Users/janedoe/chromium/src/out/Default/Chromium.app/Assets.car\n', - self.relative_paths)) - - def testNoErrorRandomMessages(self): - self.assertEquals( - '', - compile_xcassets.FilterCompilerOutput( - '2017-07-04 04:59:19.460 ibtoold[23487:41214] CoreSimulator is att' - 'empting to unload a stale CoreSimulatorService job. Existing' - ' job (com.apple.CoreSimulator.CoreSimulatorService.179.1.E8tt' - 'yeDeVgWK) is from an older version and is being removed to pr' - 'event problems.\n' - '/* com.apple.actool.compilation-results */\n' - '/Users/janedoe/chromium/src/out/Default/Chromium.app/Assets.car\n', - self.relative_paths)) - - def testWarning(self): - self.assertEquals( - '/* com.apple.actool.document.warnings */\n' - '../../Chromium.xcassets:./image1.imageset/[universal][][][1x][][][][' - '][][]: warning: The file "image1.png" for the image set "image1"' - ' does not exist.\n', - compile_xcassets.FilterCompilerOutput( - '/* com.apple.actool.document.warnings */\n' - '/Users/janedoe/chromium/src/Chromium.xcassets:./image1.imageset/[' - 'universal][][][1x][][][][][][]: warning: The file "image1.png' - '" for the image set "image1" does not exist.\n' - '/* com.apple.actool.compilation-results */\n' - '/Users/janedoe/chromium/src/out/Default/Chromium.app/Assets.car\n', - self.relative_paths)) - - def testError(self): - self.assertEquals( - '/* com.apple.actool.errors */\n' - '../../Chromium.xcassets: error: The output directory "/Users/janedoe/' - 'chromium/src/out/Default/Chromium.app" does not exist.\n', - compile_xcassets.FilterCompilerOutput( - '/* com.apple.actool.errors */\n' - '/Users/janedoe/chromium/src/Chromium.xcassets: error: The output ' - 'directory "/Users/janedoe/chromium/src/out/Default/Chromium.a' - 'pp" does not exist.\n' - '/* com.apple.actool.compilation-results */\n', - self.relative_paths)) - - def testSpurious(self): - self.assertEquals( - '/* com.apple.actool.document.warnings */\n' - '../../Chromium.xcassets:./AppIcon.appiconset: warning: A 1024x1024 ap' - 'p store icon is required for iOS apps\n', - compile_xcassets.FilterCompilerOutput( - '/* com.apple.actool.document.warnings */\n' - '/Users/janedoe/chromium/src/Chromium.xcassets:./AppIcon.appiconse' - 't: warning: A 1024x1024 app store icon is required for iOS ap' - 'ps\n' - '/* com.apple.actool.document.notices */\n' - '/Users/janedoe/chromium/src/Chromium.xcassets:./AppIcon.appiconse' - 't/[][ipad][76x76][][][1x][][]: notice: (null)\n', - self.relative_paths)) - - def testComplexError(self): - self.assertEquals( - '/* com.apple.actool.errors */\n' - ': error: Failed to find a suitable device for the type SimDeviceType ' - ': com.apple.dt.Xcode.IBSimDeviceType.iPad-2x with runtime SimRunt' - 'ime : 10.3.1 (14E8301) - com.apple.CoreSimulator.SimRuntime.iOS-1' - '0-3\n' - ' Failure Reason: Failed to create SimDeviceSet at path /Users/jane' - 'doe/Library/Developer/Xcode/UserData/IB Support/Simulator Devices' - '. You\'ll want to check the logs in ~/Library/Logs/CoreSimulator ' - 'to see why creating the SimDeviceSet failed.\n' - ' Underlying Errors:\n' - ' Description: Failed to initialize simulator device set.\n' - ' Failure Reason: Failed to subscribe to notifications from Cor' - 'eSimulatorService.\n' - ' Underlying Errors:\n' - ' Description: Error returned in reply to notification requ' - 'est: Connection invalid\n' - ' Failure Reason: Software caused connection abort\n', - compile_xcassets.FilterCompilerOutput( - '2017-07-07 10:37:27.367 ibtoold[88538:12553239] CoreSimulator det' - 'ected Xcode.app relocation or CoreSimulatorService version ch' - 'ange. Framework path (/Applications/Xcode.app/Contents/Devel' - 'oper/Library/PrivateFrameworks/CoreSimulator.framework) and v' - 'ersion (375.21) does not match existing job path (/Library/De' - 'veloper/PrivateFrameworks/CoreSimulator.framework/Versions/A/' - 'XPCServices/com.apple.CoreSimulator.CoreSimulatorService.xpc)' - ' and version (459.13). Attempting to remove the stale servic' - 'e in order to add the expected version.\n' - '2017-07-07 10:37:27.625 ibtoold[88538:12553256] CoreSimulatorServ' - 'ice connection interrupted. Resubscribing to notifications.\n' - '2017-07-07 10:37:27.632 ibtoold[88538:12553264] CoreSimulatorServ' - 'ice connection became invalid. Simulator services will no lo' - 'nger be available.\n' - '2017-07-07 10:37:27.642 ibtoold[88538:12553274] CoreSimulatorServ' - 'ice connection became invalid. Simulator services will no lo' - 'nger be available.\n' - '/* com.apple.actool.errors */\n' - ': error: Failed to find a suitable device for the type SimDeviceT' - 'ype : com.apple.dt.Xcode.IBSimDeviceType.iPad-2x with runtime' - ' SimRuntime : 10.3.1 (14E8301) - com.apple.CoreSimulator.SimR' - 'untime.iOS-10-3\n' - ' Failure Reason: Failed to create SimDeviceSet at path /Users/' - 'janedoe/Library/Developer/Xcode/UserData/IB Support/Simulator' - ' Devices. You\'ll want to check the logs in ~/Library/Logs/Co' - 'reSimulator to see why creating the SimDeviceSet failed.\n' - ' Underlying Errors:\n' - ' Description: Failed to initialize simulator device set.\n' - ' Failure Reason: Failed to subscribe to notifications from' - ' CoreSimulatorService.\n' - ' Underlying Errors:\n' - ' Description: Error returned in reply to notification ' - 'request: Connection invalid\n' - ' Failure Reason: Software caused connection abort\n' - '/* com.apple.actool.compilation-results */\n', - self.relative_paths)) - - -if __name__ == '__main__': - unittest.main()
diff --git a/build/toolchain/mac/filter_libtool.py b/build/toolchain/mac/filter_libtool.py deleted file mode 100644 index 3b16151..0000000 --- a/build/toolchain/mac/filter_libtool.py +++ /dev/null
@@ -1,54 +0,0 @@ -# Copyright 2016 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 os -import re -import subprocess -import sys - -# This script executes libool and filters out logspam lines like: -# '/path/to/libtool: file: foo.o has no symbols' - -BLACKLIST_PATTERNS = map(re.compile, [ - r'^.*libtool: (?:for architecture: \S* )?file: .* has no symbols$', - r'^.*libtool: warning for library: .* the table of contents is empty ' - r'\(no object file members in the library define global symbols\)$', - r'^.*libtool: warning same member name \(\S*\) in output file used for ' - r'input files: \S* and: \S* \(due to use of basename, truncation, ' - r'blank padding or duplicate input files\)$', -]) - - -def IsBlacklistedLine(line): - """Returns whether the line should be filtered out.""" - for pattern in BLACKLIST_PATTERNS: - if pattern.match(line): - return True - return False - - -def Main(cmd_list): - env = os.environ.copy() - # Ref: - # http://www.opensource.apple.com/source/cctools/cctools-809/misc/libtool.c - # The problem with this flag is that it resets the file mtime on the file to - # epoch=0, e.g. 1970-1-1 or 1969-12-31 depending on timezone. - env['ZERO_AR_DATE'] = '1' - libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE, env=env) - _, err = libtoolout.communicate() - for line in err.splitlines(): - if not IsBlacklistedLine(line): - print >>sys.stderr, line - # Unconditionally touch the output .a file on the command line if present - # and the command succeeded. A bit hacky. - if not libtoolout.returncode: - for i in range(len(cmd_list) - 1): - if cmd_list[i] == '-o' and cmd_list[i+1].endswith('.a'): - os.utime(cmd_list[i+1], None) - break - return libtoolout.returncode - - -if __name__ == '__main__': - sys.exit(Main(sys.argv[1:]))
diff --git a/build/toolchain/mac/get_tool_mtime.py b/build/toolchain/mac/get_tool_mtime.py deleted file mode 100644 index 4106344..0000000 --- a/build/toolchain/mac/get_tool_mtime.py +++ /dev/null
@@ -1,17 +0,0 @@ -# Copyright 2016 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 os -import sys - -# Usage: python get_tool_mtime.py path/to/file1.py path/to/file2.py -# -# Prints a GN scope with the variable name being the basename sans-extension -# and the value being the file modification time. A variable is emitted for -# each file argument on the command line. - -if __name__ == '__main__': - for f in sys.argv[1:]: - variable = os.path.splitext(os.path.basename(f))[0] - print '%s = %d' % (variable, os.path.getmtime(f))
diff --git a/build/toolchain/mac/linker_driver.py b/build/toolchain/mac/linker_driver.py deleted file mode 100755 index 35de9d1..0000000 --- a/build/toolchain/mac/linker_driver.py +++ /dev/null
@@ -1,230 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2016 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 os -import os.path -import shutil -import subprocess -import sys - -# The linker_driver.py is responsible for forwarding a linker invocation to -# the compiler driver, while processing special arguments itself. -# -# Usage: linker_driver.py clang++ main.o -L. -llib -o prog -Wcrl,dsym,out -# -# On Mac, the logical step of linking is handled by three discrete tools to -# perform the image link, debug info link, and strip. The linker_driver.py -# combines these three steps into a single tool. -# -# The command passed to the linker_driver.py should be the compiler driver -# invocation for the linker. It is first invoked unaltered (except for the -# removal of the special driver arguments, described below). Then the driver -# performs additional actions, based on these arguments: -# -# -Wcrl,dsym,<dsym_path_prefix> -# After invoking the linker, this will run `dsymutil` on the linker's -# output, producing a dSYM bundle, stored at dsym_path_prefix. As an -# example, if the linker driver were invoked with: -# "... -o out/gn/obj/foo/libbar.dylib ... -Wcrl,dsym,out/gn ..." -# The resulting dSYM would be out/gn/libbar.dylib.dSYM/. -# -# -Wcrl,unstripped,<unstripped_path_prefix> -# After invoking the linker, and before strip, this will save a copy of -# the unstripped linker output in the directory unstripped_path_prefix. -# -# -Wcrl,strip,<strip_arguments> -# After invoking the linker, and optionally dsymutil, this will run -# the strip command on the linker's output. strip_arguments are -# comma-separated arguments to be passed to the strip command. - -def Main(args): - """Main function for the linker driver. Separates out the arguments for - the main compiler driver and the linker driver, then invokes all the - required tools. - - Args: - args: list of string, Arguments to the script. - """ - - if len(args) < 2: - raise RuntimeError("Usage: linker_driver.py [linker-invocation]") - - for i in xrange(len(args)): - if args[i] != '--developer_dir': - continue - os.environ['DEVELOPER_DIR'] = args[i + 1] - del args[i:i+2] - break - - # Collect arguments to the linker driver (this script) and remove them from - # the arguments being passed to the compiler driver. - linker_driver_actions = {} - compiler_driver_args = [] - for arg in args[1:]: - if arg.startswith(_LINKER_DRIVER_ARG_PREFIX): - # Convert driver actions into a map of name => lambda to invoke. - driver_action = ProcessLinkerDriverArg(arg) - assert driver_action[0] not in linker_driver_actions - linker_driver_actions[driver_action[0]] = driver_action[1] - else: - compiler_driver_args.append(arg) - - linker_driver_outputs = [_FindLinkerOutput(compiler_driver_args)] - - try: - # Run the linker by invoking the compiler driver. - subprocess.check_call(compiler_driver_args) - - # Run the linker driver actions, in the order specified by the actions list. - for action in _LINKER_DRIVER_ACTIONS: - name = action[0] - if name in linker_driver_actions: - linker_driver_outputs += linker_driver_actions[name](args) - except: - # If a linker driver action failed, remove all the outputs to make the - # build step atomic. - map(_RemovePath, linker_driver_outputs) - - # Re-report the original failure. - raise - - -def ProcessLinkerDriverArg(arg): - """Processes a linker driver argument and returns a tuple containing the - name and unary lambda to invoke for that linker driver action. - - Args: - arg: string, The linker driver argument. - - Returns: - A 2-tuple: - 0: The driver action name, as in _LINKER_DRIVER_ACTIONS. - 1: An 1-ary lambda that takes the full list of arguments passed to - Main(). The lambda should call the linker driver action that - corresponds to the argument and return a list of outputs from the - action. - """ - if not arg.startswith(_LINKER_DRIVER_ARG_PREFIX): - raise ValueError('%s is not a linker driver argument' % (arg,)) - - sub_arg = arg[len(_LINKER_DRIVER_ARG_PREFIX):] - - for driver_action in _LINKER_DRIVER_ACTIONS: - (name, action) = driver_action - if sub_arg.startswith(name): - return (name, - lambda full_args: action(sub_arg[len(name):], full_args)) - - raise ValueError('Unknown linker driver argument: %s' % (arg,)) - - -def RunDsymUtil(dsym_path_prefix, full_args): - """Linker driver action for -Wcrl,dsym,<dsym-path-prefix>. Invokes dsymutil - on the linker's output and produces a dsym file at |dsym_file| path. - - Args: - dsym_path_prefix: string, The path at which the dsymutil output should be - located. - full_args: list of string, Full argument list for the linker driver. - - Returns: - list of string, Build step outputs. - """ - if not len(dsym_path_prefix): - raise ValueError('Unspecified dSYM output file') - - linker_out = _FindLinkerOutput(full_args) - base = os.path.basename(linker_out) - dsym_out = os.path.join(dsym_path_prefix, base + '.dSYM') - - # Remove old dSYMs before invoking dsymutil. - _RemovePath(dsym_out) - subprocess.check_call(['xcrun', 'dsymutil', '-o', dsym_out, linker_out]) - return [dsym_out] - - -def RunSaveUnstripped(unstripped_path_prefix, full_args): - """Linker driver action for -Wcrl,unstripped,<unstripped_path_prefix>. Copies - the linker output to |unstripped_path_prefix| before stripping. - - Args: - unstripped_path_prefix: string, The path at which the unstripped output - should be located. - full_args: list of string, Full argument list for the linker driver. - - Returns: - list of string, Build step outputs. - """ - if not len(unstripped_path_prefix): - raise ValueError('Unspecified unstripped output file') - - linker_out = _FindLinkerOutput(full_args) - base = os.path.basename(linker_out) - unstripped_out = os.path.join(unstripped_path_prefix, base + '.unstripped') - - shutil.copyfile(linker_out, unstripped_out) - return [unstripped_out] - - -def RunStrip(strip_args_string, full_args): - """Linker driver action for -Wcrl,strip,<strip_arguments>. - - Args: - strip_args_string: string, Comma-separated arguments for `strip`. - full_args: list of string, Full arguments for the linker driver. - - Returns: - list of string, Build step outputs. - """ - strip_command = ['xcrun', 'strip'] - if len(strip_args_string) > 0: - strip_command += strip_args_string.split(',') - strip_command.append(_FindLinkerOutput(full_args)) - subprocess.check_call(strip_command) - return [] - - -def _FindLinkerOutput(full_args): - """Finds the output of the linker by looking for the output flag in its - argument list. As this is a required linker argument, raises an error if it - cannot be found. - """ - # The linker_driver.py script may be used to wrap either the compiler linker - # (uses -o to configure the output) or lipo (uses -output to configure the - # output). Since wrapping the compiler linker is the most likely possibility - # use try/except and fallback to checking for -output if -o is not found. - try: - output_flag_index = full_args.index('-o') - except ValueError: - output_flag_index = full_args.index('-output') - return full_args[output_flag_index + 1] - - -def _RemovePath(path): - """Removes the file or directory at |path| if it exists.""" - if os.path.exists(path): - if os.path.isdir(path): - shutil.rmtree(path) - else: - os.unlink(path) - - -_LINKER_DRIVER_ARG_PREFIX = '-Wcrl,' - -"""List of linker driver actions. The sort order of this list affects the -order in which the actions are invoked. The first item in the tuple is the -argument's -Wcrl,<sub_argument> and the second is the function to invoke. -""" -_LINKER_DRIVER_ACTIONS = [ - ('dsym,', RunDsymUtil), - ('unstripped,', RunSaveUnstripped), - ('strip,', RunStrip), -] - - -if __name__ == '__main__': - Main(sys.argv) - sys.exit(0)
diff --git a/build/toolchain/nacl/BUILD.gn b/build/toolchain/nacl/BUILD.gn deleted file mode 100644 index 2083de8..0000000 --- a/build/toolchain/nacl/BUILD.gn +++ /dev/null
@@ -1,270 +0,0 @@ -# Copyright (c) 2014 The Native Client 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/config/sysroot.gni") -import("//build/config/nacl/config.gni") -import("//build/toolchain/nacl_toolchain.gni") - -# Add the toolchain revision as a preprocessor define so that sources are -# rebuilt when a toolchain is updated. -# Idea we could use the toolchain deps feature, but currently that feature is -# bugged and does not trigger a rebuild. -# https://code.google.com/p/chromium/issues/detail?id=431880 -# Calls to get the toolchain revision are relatively slow, so do them all in a -# single batch to amortize python startup, etc. -revisions = exec_script("//native_client/build/get_toolchain_revision.py", - [ - "nacl_x86_glibc", - "nacl_arm_glibc", - "pnacl_newlib", - ], - "trim list lines") -nacl_x86_glibc_rev = revisions[0] -nacl_arm_glibc_rev = revisions[1] - -pnacl_newlib_rev = revisions[2] - -if (host_os == "win") { - toolsuffix = ".exe" -} else { - toolsuffix = "" -} - -# The PNaCl toolchain tools are all wrapper scripts rather than binary -# executables. On POSIX systems, nobody cares what kind of executable -# file you are. But on Windows, scripts (.bat files) cannot be run -# directly and need the Windows shell (cmd.exe) specified explicily. -if (host_os == "win") { - # NOTE! The //build/toolchain/gcc_*_wrapper.py scripts recognize - # this exact prefix string, so they must be updated if this string - # is changed in any way. - scriptprefix = "cmd /c call " - scriptsuffix = ".bat" -} else { - scriptprefix = "" - scriptsuffix = "" -} - -# When the compilers are run via goma or ccache rather than directly by -# GN/Ninja, the goma/ccache wrapper handles .bat files but gets confused -# by being given the scriptprefix. -if (host_os == "win" && !use_goma && cc_wrapper == "") { - compiler_scriptprefix = scriptprefix -} else { - compiler_scriptprefix = "" -} - -template("pnacl_toolchain") { - assert(defined(invoker.executable_extension), - "Must define executable_extension") - - nacl_toolchain(target_name) { - toolchain_package = "pnacl_newlib" - toolchain_revision = pnacl_newlib_rev - toolprefix = - rebase_path("${nacl_toolchain_dir}/${toolchain_package}/bin/pnacl-", - root_build_dir) - - cc = compiler_scriptprefix + toolprefix + "clang" + scriptsuffix - cxx = compiler_scriptprefix + toolprefix + "clang++" + scriptsuffix - ar = scriptprefix + toolprefix + "ar" + scriptsuffix - readelf = scriptprefix + toolprefix + "readelf" + scriptsuffix - nm = scriptprefix + toolprefix + "nm" + scriptsuffix - if (defined(invoker.strip)) { - strip = scriptprefix + toolprefix + invoker.strip + scriptsuffix - } - forward_variables_from(invoker, - [ - "executable_extension", - "is_clang_analysis_supported", - ]) - - # Note this is not the usual "ld = cxx" because "ld" uses are - # never run via goma, so this needs scriptprefix. - ld = scriptprefix + toolprefix + "clang++" + scriptsuffix - - toolchain_args = { - is_clang = true - current_cpu = "pnacl" - use_lld = false - } - } -} - -pnacl_toolchain("newlib_pnacl") { - executable_extension = ".pexe" - - # The pnacl-finalize tool turns a .pexe.debug file into a .pexe file. - # It's very similar in purpose to the traditional "strip" utility: it - # turns what comes out of the linker into what you actually want to - # distribute and run. PNaCl doesn't have a "strip"-like utility that - # you ever actually want to use other than pnacl-finalize, so just - # make pnacl-finalize the strip tool rather than adding an additional - # step like "postlink" to run pnacl-finalize. - strip = "finalize" -} - -pnacl_toolchain("newlib_pnacl_nonsfi") { - executable_extension = "" - strip = "strip" - - if (use_clang_static_analyzer) { - is_clang_analysis_supported = false - } -} - -template("nacl_glibc_toolchain") { - toolchain_cpu = target_name - assert(defined(invoker.toolchain_tuple), "Must define toolchain_tuple") - assert(defined(invoker.toolchain_package), "Must define toolchain_package") - assert(defined(invoker.toolchain_revision), "Must define toolchain_revision") - forward_variables_from(invoker, - [ - "toolchain_package", - "toolchain_revision", - ]) - - toolprefix = rebase_path("${nacl_toolchain_dir}/${toolchain_package}/bin/" + - invoker.toolchain_tuple + "-", - root_build_dir) - - nacl_toolchain("glibc_" + toolchain_cpu) { - cc = toolprefix + "gcc" + toolsuffix - cxx = toolprefix + "g++" + toolsuffix - ar = toolprefix + "ar" + toolsuffix - ld = cxx - readelf = toolprefix + "readelf" + toolsuffix - nm = toolprefix + "nm" + toolsuffix - strip = toolprefix + "strip" + toolsuffix - - toolchain_args = { - current_cpu = toolchain_cpu - is_clang = false - is_nacl_glibc = true - use_lld = false - } - } -} - -nacl_glibc_toolchain("x86") { - toolchain_package = "nacl_x86_glibc" - toolchain_revision = nacl_x86_glibc_rev - - # Rely on the :compiler_cpu_abi config adding the -m32 flag here rather - # than using the i686-nacl binary directly. This is a because i686-nacl-gcc - # is a shell script wrapper around x86_64-nacl-gcc and goma has trouble with - # compiler executables that are shell scripts (so the i686 'compiler' is not - # currently in goma). - toolchain_tuple = "x86_64-nacl" -} - -nacl_glibc_toolchain("x64") { - toolchain_package = "nacl_x86_glibc" - toolchain_revision = nacl_x86_glibc_rev - toolchain_tuple = "x86_64-nacl" -} - -nacl_glibc_toolchain("arm") { - toolchain_package = "nacl_arm_glibc" - toolchain_revision = nacl_arm_glibc_rev - toolchain_tuple = "arm-nacl" -} - -template("nacl_clang_toolchain") { - toolchain_cpu = target_name - assert(defined(invoker.toolchain_tuple), "Must define toolchain_tuple") - - toolchain_package = "pnacl_newlib" - toolchain_revision = pnacl_newlib_rev - toolprefix = rebase_path("${nacl_toolchain_dir}/${toolchain_package}/bin/" + - invoker.toolchain_tuple + "-", - root_build_dir) - - nacl_toolchain("clang_newlib_" + toolchain_cpu) { - cc = toolprefix + "clang" + toolsuffix - cxx = toolprefix + "clang++" + toolsuffix - ar = toolprefix + "ar" + toolsuffix - ld = cxx - readelf = toolprefix + "readelf" + toolsuffix - nm = toolprefix + "nm" + toolsuffix - strip = toolprefix + "strip" + toolsuffix - - toolchain_args = { - current_cpu = toolchain_cpu - is_clang = true - use_lld = false - } - } -} - -template("nacl_irt_toolchain") { - toolchain_cpu = target_name - assert(defined(invoker.toolchain_tuple), "Must define toolchain_tuple") - - toolchain_package = "pnacl_newlib" - toolchain_revision = pnacl_newlib_rev - toolprefix = rebase_path("${nacl_toolchain_dir}/${toolchain_package}/bin/" + - invoker.toolchain_tuple + "-", - root_build_dir) - - link_irt = rebase_path("//native_client/build/link_irt.py", root_build_dir) - - tls_edit_label = - "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)" - host_toolchain_out_dir = - rebase_path(get_label_info(tls_edit_label, "root_out_dir"), - root_build_dir) - tls_edit = "${host_toolchain_out_dir}/tls_edit" - - nacl_toolchain("irt_" + toolchain_cpu) { - cc = toolprefix + "clang" + toolsuffix - cxx = toolprefix + "clang++" + toolsuffix - ar = toolprefix + "ar" + toolsuffix - readelf = toolprefix + "readelf" + toolsuffix - nm = toolprefix + "nm" + toolsuffix - strip = toolprefix + "strip" + toolsuffix - - # Some IRT implementations (notably, Chromium's) contain C++ code, - # so we need to link w/ the C++ linker. - ld = "${python_path} ${link_irt} --tls-edit=${tls_edit} --link-cmd=${cxx} --readelf-cmd=${readelf}" - - toolchain_args = { - current_cpu = toolchain_cpu - is_clang = true - use_lld = false - } - - # TODO(ncbray): depend on link script - deps = [ - tls_edit_label, - ] - } -} - -template("nacl_clang_toolchains") { - assert(defined(invoker.toolchain_tuple), "Must define toolchain_tuple") - nacl_clang_toolchain(target_name) { - toolchain_tuple = invoker.toolchain_tuple - } - nacl_irt_toolchain(target_name) { - toolchain_tuple = invoker.toolchain_tuple - } -} - -nacl_clang_toolchains("x86") { - # Rely on :compiler_cpu_abi adding -m32. See nacl_x86_glibc above. - toolchain_tuple = "x86_64-nacl" -} - -nacl_clang_toolchains("x64") { - toolchain_tuple = "x86_64-nacl" -} - -nacl_clang_toolchains("arm") { - toolchain_tuple = "arm-nacl" -} - -nacl_clang_toolchains("mipsel") { - toolchain_tuple = "mipsel-nacl" -}
diff --git a/build/toolchain/nacl_toolchain.gni b/build/toolchain/nacl_toolchain.gni deleted file mode 100644 index 566f071..0000000 --- a/build/toolchain/nacl_toolchain.gni +++ /dev/null
@@ -1,59 +0,0 @@ -# Copyright (c) 2014 The Native Client 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/config/nacl/config.gni") -import("//build/toolchain/gcc_toolchain.gni") - -# This template defines a NaCl toolchain. -# -# It requires the following variables specifying the executables to run: -# - cc -# - cxx -# - ar -# - ld - -template("nacl_toolchain") { - assert(defined(invoker.cc), "nacl_toolchain() must specify a \"cc\" value") - assert(defined(invoker.cxx), "nacl_toolchain() must specify a \"cxx\" value") - assert(defined(invoker.ar), "nacl_toolchain() must specify a \"ar\" value") - assert(defined(invoker.ld), "nacl_toolchain() must specify a \"ld\" value") - gcc_toolchain(target_name) { - if (defined(invoker.executable_extension)) { - executable_extension = invoker.executable_extension - } else { - executable_extension = ".nexe" - } - rebuild_define = "NACL_TC_REV=" + invoker.toolchain_revision - - forward_variables_from(invoker, - [ - "ar", - "cc", - "cxx", - "deps", - "is_clang_analysis_supported", - "ld", - "link_outputs", - "nm", - "readelf", - "strip", - ]) - - toolchain_args = { - # Use all values set on the invoker's toolchain_args. - forward_variables_from(invoker.toolchain_args, "*") - - current_os = "nacl" - - # We do not support component builds with the NaCl toolchains. - is_component_build = false - - # We do not support tcmalloc in the NaCl toolchains. - use_allocator = "none" - - # We do not support clang code coverage in the NaCl toolchains. - use_clang_coverage = false - } - } -}
diff --git a/build/toolchain/toolchain.gni b/build/toolchain/toolchain.gni deleted file mode 100644 index 5b4ca3f..0000000 --- a/build/toolchain/toolchain.gni +++ /dev/null
@@ -1,113 +0,0 @@ -# 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. - -# Toolchain-related configuration that may be needed outside the context of the -# toolchain() rules themselves. - -import("//build_overrides/build.gni") -import("//build/config/chrome_build.gni") - -declare_args() { - # If this is set to true, or if LLVM_FORCE_HEAD_REVISION is set to 1 - # in the environment, we use the revision in the llvm repo to determine - # the CLANG_REVISION to use, instead of the version hard-coded into - # //tools/clang/scripts/update.py. This should only be used in - # conjunction with setting LLVM_FORCE_HEAD_REVISION in the - # environment when `gclient runhooks` is run as well. - llvm_force_head_revision = false - - # Compile with Xcode version of clang instead of hermetic version shipped - # with the build. Used on iOS to ship official builds (as they are built - # with the version of clang shipped with Xcode). - use_xcode_clang = is_ios && is_official_build - - # Used for binary size analysis. - # Currently disabled on LLD because of a bug (fixed upstream). - # See https://crbug.com/716209. - generate_linker_map = is_android && is_official_build - - # Use absolute file paths in the compiler diagnostics and __FILE__ macro - # if needed. - msvc_use_absolute_paths = false -} - -if (generate_linker_map) { - assert( - is_official_build, - "Linker map files should only be generated when is_official_build = true") - assert(current_os == "android" || target_os == "linux", - "Linker map files should only be generated for Android and Linux") -} - -# The path to the hermetic install of Xcode. Only relevant when -# use_system_xcode = false. -hermetic_xcode_path = - rebase_path("//build/${target_os}_files/Xcode.app", "", root_build_dir) - -declare_args() { - if (is_clang) { - # Clang compiler version. Clang files are placed at version-dependent paths. - clang_version = "7.0.0" - } -} - -# Check target_os here instead of is_ios as this file is loaded for secondary -# toolchain (host toolchain in particular) but the argument is the same for -# all toolchains. -assert(!use_xcode_clang || target_os == "ios", - "Using Xcode's clang is only supported in iOS builds") - -# Subdirectory within root_out_dir for shared library files. -# TODO(agrieve): GYP sets this to "lib" for Linux & Android, but this won't work -# in GN until support for loadable_module() is added. -# See: https://codereview.chromium.org/1236503002/ -shlib_subdir = "." - -# Root out dir for shared library files. -root_shlib_dir = root_out_dir -if (shlib_subdir != ".") { - root_shlib_dir += "/$shlib_subdir" -} - -# Extension for shared library files (including leading dot). -if (is_mac || is_ios) { - shlib_extension = ".dylib" -} else if (is_android && is_component_build) { - # By appending .cr, we prevent name collisions with libraries already - # loaded by the Android zygote. - shlib_extension = ".cr.so" -} else if (is_posix || is_fuchsia) { - shlib_extension = ".so" -} else if (is_win) { - shlib_extension = ".dll" -} else { - assert(false, "Platform not supported") -} - -# Prefix for shared library files. -if (is_posix || is_fuchsia) { - shlib_prefix = "lib" -} else { - shlib_prefix = "" -} - -# While other "tool"s in a toolchain are specific to the target of that -# toolchain, the "stamp" and "copy" tools are really generic to the host; -# but each toolchain must define them separately. GN doesn't allow a -# template instantiation inside a toolchain definition, so some boilerplate -# has to be repeated in each toolchain to define these two tools. These -# four variables reduce the duplication in that boilerplate. -stamp_description = "STAMP {{output}}" -copy_description = "COPY {{source}} {{output}}" -if (host_os == "win") { - _tool_wrapper_path = - rebase_path("//build/toolchain/win/tool_wrapper.py", root_build_dir) - - stamp_command = "cmd /c type nul > \"{{output}}\"" - copy_command = - "$python_path $_tool_wrapper_path recursive-mirror {{source}} {{output}}" -} else { - stamp_command = "touch {{output}}" - copy_command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})" -}
diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn deleted file mode 100644 index 4d9d1f4..0000000 --- a/build/toolchain/win/BUILD.gn +++ /dev/null
@@ -1,469 +0,0 @@ -# Copyright (c) 2013 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/config/clang/clang.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/config/win/visual_studio_version.gni") -import("//build/toolchain/clang_static_analyzer.gni") -import("//build/toolchain/goma.gni") -import("//build/toolchain/toolchain.gni") - -# Should only be running on Windows. -assert(is_win) - -# Setup the Visual Studio state. -# -# Its arguments are the VS path and the compiler wrapper tool. It will write -# "environment.x86" and "environment.x64" to the build directory and return a -# list to us. - -# This tool will is used as a wrapper for various commands below. -tool_wrapper_path = rebase_path("tool_wrapper.py", root_build_dir) - -if (use_goma) { - if (host_os == "win") { - goma_prefix = "$goma_dir/gomacc.exe " - } else { - goma_prefix = "$goma_dir/gomacc " - } -} else { - goma_prefix = "" -} - -# Copy the VS runtime DLL for the default toolchain to the root build directory -# so things will run. -if (current_toolchain == default_toolchain) { - if (is_debug) { - configuration_name = "Debug" - } else { - configuration_name = "Release" - } - exec_script("../../vs_toolchain.py", - [ - "copy_dlls", - rebase_path(root_build_dir), - configuration_name, - target_cpu, - ]) -} - -# Parameters: -# environment: File name of environment file. -# -# You would also define a toolchain_args variable with at least these set: -# current_cpu: current_cpu to pass as a build arg -# current_os: current_os to pass as a build arg -template("msvc_toolchain") { - toolchain(target_name) { - # When invoking this toolchain not as the default one, these args will be - # passed to the build. They are ignored when this is the default toolchain. - assert(defined(invoker.toolchain_args)) - toolchain_args = { - if (defined(invoker.toolchain_args)) { - forward_variables_from(invoker.toolchain_args, "*") - } - - # This value needs to be passed through unchanged. - host_toolchain = host_toolchain - } - - # Make these apply to all tools below. - lib_switch = "" - lib_dir_switch = "/LIBPATH:" - - # Object files go in this directory. - object_subdir = "{{target_out_dir}}/{{label_name}}" - - env = invoker.environment - - # When the invoker has explicitly overridden use_goma or cc_wrapper in the - # toolchain args, use those values, otherwise default to the global one. - # This works because the only reasonable override that toolchains might - # supply for these values are to force-disable them. - if (defined(toolchain_args.is_clang)) { - toolchain_uses_clang = toolchain_args.is_clang - } else { - toolchain_uses_clang = is_clang - } - - cl = invoker.cl - - if (toolchain_uses_clang && use_clang_static_analyzer) { - analyzer_prefix = - "$python_path " + - rebase_path("//build/toolchain/clang_static_analyzer_wrapper.py", - root_build_dir) + " --mode=cl" - cl = "${analyzer_prefix} ${cl}" - } - - if (use_lld) { - if (host_os == "win") { - lld_link = "lld-link.exe" - } else { - lld_link = "lld-link" - } - prefix = rebase_path("$clang_base_path/bin", root_build_dir) - - # lld-link includes a replacement for lib.exe that can produce thin - # archives and understands bitcode (for lto builds). - lib = "$prefix/$lld_link /lib /llvmlibthin" - link = "$prefix/$lld_link" - if (host_os != "win") { - # See comment adding --rsp-quoting to $cl above for more information. - link = "$link --rsp-quoting=posix" - } - } else { - lib = "lib.exe" - link = "link.exe" - } - - # If possible, pass system includes as flags to the compiler. When that's - # not possible, load a full environment file (containing %INCLUDE% and - # %PATH%) -- e.g. 32-bit MSVS builds require %PATH% to be set and just - # passing in a list of include directories isn't enough. - if (defined(invoker.sys_include_flags)) { - env_wrapper = "" - sys_include_flags = "${invoker.sys_include_flags} " # Note trailing space. - } else { - # clang-cl doesn't need this env hoop, so omit it there. - assert(!toolchain_uses_clang) - env_wrapper = "ninja -t msvc -e $env -- " # Note trailing space. - sys_include_flags = "" - } - - clflags = "" - - # Pass /FC flag to the compiler if needed. - if (msvc_use_absolute_paths) { - clflags += "/FC " - } - - tool("cc") { - precompiled_header_type = "msvc" - pdbname = "{{target_out_dir}}/{{label_name}}_c.pdb" - - # Label names may have spaces in them so the pdbname must be quoted. The - # source and output don't need to be quoted because GN knows they're a - # full file name and will quote automatically when necessary. - depsformat = "msvc" - description = "CC {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.obj", - ] - - command = "$env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\"" - } - - tool("cxx") { - precompiled_header_type = "msvc" - - # The PDB name needs to be different between C and C++ compiled files. - pdbname = "{{target_out_dir}}/{{label_name}}_cc.pdb" - - # See comment in CC tool about quoting. - depsformat = "msvc" - description = "CXX {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.obj", - ] - - command = "$env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\"" - } - - tool("rc") { - command = "$python_path $tool_wrapper_path rc-wrapper $env rc.exe {{defines}} {{include_dirs}} /fo{{output}} {{source}}" - depsformat = "msvc" - outputs = [ - "$object_subdir/{{source_name_part}}.res", - ] - description = "RC {{output}}" - } - - tool("asm") { - if (toolchain_args.current_cpu == "x64") { - ml = "ml64.exe" - } else { - ml = "ml.exe" - } - command = "$python_path $tool_wrapper_path asm-wrapper $env $ml {{defines}} {{include_dirs}} {{asmflags}} /c /Fo{{output}} {{source}}" - description = "ASM {{output}}" - outputs = [ - "$object_subdir/{{source_name_part}}.obj", - ] - } - - tool("alink") { - rspfile = "{{output}}.rsp" - command = "$python_path $tool_wrapper_path link-wrapper $env False $lib /nologo {{arflags}} /OUT:{{output}} @$rspfile" - description = "LIB {{output}}" - outputs = [ - # Ignore {{output_extension}} and always use .lib, there's no reason to - # allow targets to override this extension on Windows. - "{{output_dir}}/{{target_output_name}}.lib", - ] - default_output_extension = ".lib" - default_output_dir = "{{target_out_dir}}" - - # The use of inputs_newline is to work around a fixed per-line buffer - # size in the linker. - rspfile_content = "{{inputs_newline}}" - } - - tool("solink") { - dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # e.g. foo.dll - libname = "${dllname}.lib" # e.g. foo.dll.lib - pdbname = "${dllname}.pdb" - rspfile = "${dllname}.rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - - command = "$python_path $tool_wrapper_path link-wrapper $env False $link /nologo /IMPLIB:$libname /DLL /OUT:$dllname /PDB:$pdbname @$rspfile" - - default_output_extension = ".dll" - default_output_dir = "{{root_out_dir}}" - description = "LINK(DLL) {{output}}" - outputs = [ - dllname, - libname, - ] - link_output = libname - depend_output = libname - runtime_outputs = [ dllname ] - if (symbol_level != 0) { - outputs += [ pdbname ] - runtime_outputs += [ pdbname ] - } - - # Since the above commands only updates the .lib file when it changes, ask - # Ninja to check if the timestamp actually changed to know if downstream - # dependencies should be recompiled. - restat = true - - # The use of inputs_newline is to work around a fixed per-line buffer - # size in the linker. - rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}" - } - - tool("solink_module") { - dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # e.g. foo.dll - pdbname = "${dllname}.pdb" - rspfile = "${dllname}.rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - - command = "$python_path $tool_wrapper_path link-wrapper $env False $link /nologo /DLL /OUT:$dllname /PDB:$pdbname @$rspfile" - - default_output_extension = ".dll" - default_output_dir = "{{root_out_dir}}" - description = "LINK_MODULE(DLL) {{output}}" - outputs = [ - dllname, - ] - if (symbol_level != 0) { - outputs += [ pdbname ] - } - runtime_outputs = outputs - - # The use of inputs_newline is to work around a fixed per-line buffer - # size in the linker. - rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}" - } - - tool("link") { - exename = "{{output_dir}}/{{target_output_name}}{{output_extension}}" - pdbname = "$exename.pdb" - rspfile = "$exename.rsp" - pool = "//build/toolchain:link_pool($default_toolchain)" - - command = "$python_path $tool_wrapper_path link-wrapper $env False $link /nologo /OUT:$exename /PDB:$pdbname @$rspfile" - - if (host_os == "win") { - shellprefix = "cmd /c" - } else { - shellprefix = "" - } - not_needed([ "shellprefix" ]) - - if (is_official_build) { - # On bots, the binary's PDB grow and eventually exceed 4G, causing the - # link to fail. As there's no utility to keeping the PDB around - # incrementally anyway in this config (because we're doing - # non-incremental LTCG builds), delete it before linking. - command = "$shellprefix $python_path $tool_wrapper_path delete-file $pdbname && $command" - } - - default_output_extension = ".exe" - default_output_dir = "{{root_out_dir}}" - description = "LINK {{output}}" - outputs = [ - exename, - ] - if (symbol_level != 0) { - outputs += [ pdbname ] - } - runtime_outputs = outputs - - # The use of inputs_newline is to work around a fixed per-line buffer - # size in the linker. - rspfile_content = "{{inputs_newline}} {{libs}} {{solibs}} {{ldflags}}" - } - - # These two are really entirely generic, but have to be repeated in - # each toolchain because GN doesn't allow a template to be used here. - # See //build/toolchain/toolchain.gni for details. - tool("stamp") { - command = stamp_command - description = stamp_description - pool = "//build/toolchain:action_pool($default_toolchain)" - } - tool("copy") { - command = copy_command - description = copy_description - pool = "//build/toolchain:action_pool($default_toolchain)" - } - - tool("action") { - pool = "//build/toolchain:action_pool($default_toolchain)" - } - } -} - -if (host_os == "win") { - clang_cl = "clang-cl.exe" -} else { - clang_cl = "clang-cl" -} - -if (target_cpu == "x86" || target_cpu == "x64") { - win_build_host_cpu = target_cpu -} else { - win_build_host_cpu = host_cpu -} - -# x86, arm and arm64 build cpu toolchains for Windows (not WinUWP). Only -# define when the build cpu is one of these architectures since we don't -# do any cross compiles when targeting x64-bit (the build does generate -# some 64-bit stuff from x86/arm/arm64 target builds). -if (win_build_host_cpu != "x64") { - build_cpu_toolchain_data = exec_script("setup_toolchain.py", - [ - visual_studio_path, - windows_sdk_path, - visual_studio_runtime_dirs, - host_os, - win_build_host_cpu, - "environment." + win_build_host_cpu, - ], - "scope") - - msvc_toolchain(win_build_host_cpu) { - environment = "environment." + win_build_host_cpu - cl = "${goma_prefix}\"${build_cpu_toolchain_data.vc_bin_dir}/cl.exe\"" - toolchain_args = { - current_os = "win" - current_cpu = win_build_host_cpu - is_clang = false - } - } - - msvc_toolchain("win_clang_" + win_build_host_cpu) { - environment = "environment." + win_build_host_cpu - prefix = rebase_path("$clang_base_path/bin", root_build_dir) - cl = "${goma_prefix}$prefix/${clang_cl}" - sys_include_flags = "${build_cpu_toolchain_data.include_flags_imsvc}" - - toolchain_args = { - current_os = "win" - current_cpu = win_build_host_cpu - is_clang = true - } - } -} - -# 64-bit toolchains. -x64_toolchain_data = exec_script("setup_toolchain.py", - [ - visual_studio_path, - windows_sdk_path, - visual_studio_runtime_dirs, - "win", - "x64", - "environment.x64", - ], - "scope") - -template("win_x64_toolchains") { - msvc_toolchain(target_name) { - environment = "environment.x64" - cl = "${goma_prefix}\"${x64_toolchain_data.vc_bin_dir}/cl.exe\"" - - toolchain_args = { - if (defined(invoker.toolchain_args)) { - forward_variables_from(invoker.toolchain_args, "*") - } - is_clang = false - current_os = "win" - current_cpu = "x64" - } - } - - msvc_toolchain("win_clang_" + target_name) { - environment = "environment.x64" - prefix = rebase_path("$clang_base_path/bin", root_build_dir) - cl = "${goma_prefix}$prefix/${clang_cl}" - sys_include_flags = "${x64_toolchain_data.include_flags_imsvc}" - - toolchain_args = { - if (defined(invoker.toolchain_args)) { - forward_variables_from(invoker.toolchain_args, "*") - } - is_clang = true - current_os = "win" - current_cpu = "x64" - } - } -} - -win_x64_toolchains("x64") { - toolchain_args = { - # Use the defaults. - } -} - -# The nacl_win64 toolchain is nearly identical to the plain x64 toolchain. -# It's used solely for building nacl64.exe (//components/nacl/broker:nacl64). -# The only reason it's a separate toolchain is so that it can force -# is_component_build to false in the toolchain_args() block, because -# building nacl64.exe in component style does not work. -win_x64_toolchains("nacl_win64") { - toolchain_args = { - is_component_build = false - } -} - -# WinUWP toolchains. Only define these when targeting them. - -if (target_os == "winuwp") { - assert(target_cpu == "x64" || target_cpu == "x86" || target_cpu == "arm" || - target_cpu == "arm64") - store_cpu_toolchain_data = exec_script("setup_toolchain.py", - [ - visual_studio_path, - windows_sdk_path, - visual_studio_runtime_dirs, - target_os, - target_cpu, - "environment.store_" + target_cpu, - ], - "scope") - - msvc_toolchain("uwp_" + target_cpu) { - environment = "environment.store_" + target_cpu - cl = "${goma_prefix}\"${store_cpu_toolchain_data.vc_bin_dir}/cl.exe\"" - toolchain_args = { - current_os = "winuwp" - current_cpu = target_cpu - is_clang = false - } - } -}
diff --git a/build/toolchain/win/midl.gni b/build/toolchain/win/midl.gni deleted file mode 100644 index 9ff29c6..0000000 --- a/build/toolchain/win/midl.gni +++ /dev/null
@@ -1,115 +0,0 @@ -# Copyright 2014 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. - -assert(is_win) - -import("//build/config/win/visual_studio_version.gni") - -# This template defines a rule to invoke the MS IDL compiler. The generated -# source code will be compiled and linked into targets that depend on this. -# -# Parameters -# -# sources -# List of .idl file to process. -# -# header_file (optional) -# File name of generated header file. Defaults to the basename of the -# source idl file with a .h extension. -# -# out_dir (optional) -# Directory to write the generated files to. Defaults to target_gen_dir. -# -# dynamic_guid (optional) -# If the GUID is not constant across builds, the current GUID. -# -# deps (optional) -# visibility (optional) - -template("midl") { - action_name = "${target_name}_idl_action" - source_set_name = target_name - - assert(defined(invoker.sources), "Source must be defined for $target_name") - - if (defined(invoker.out_dir)) { - out_dir = invoker.out_dir - } else { - out_dir = target_gen_dir - } - - if (defined(invoker.dynamic_guid)) { - dynamic_guid = invoker.dynamic_guid - } else { - dynamic_guid = "none" - } - - if (defined(invoker.header_file)) { - header_file = invoker.header_file - } else { - header_file = "{{source_name_part}}.h" - } - - dlldata_file = "{{source_name_part}}.dlldata.c" - interface_identifier_file = "{{source_name_part}}_i.c" - proxy_file = "{{source_name_part}}_p.c" - type_library_file = "{{source_name_part}}.tlb" - - action_foreach(action_name) { - visibility = [ ":$source_set_name" ] - script = "//build/toolchain/win/midl.py" - - sources = invoker.sources - - # Note that .tlb is not included in the outputs as it is not always - # generated depending on the content of the input idl file. - outputs = [ - "$out_dir/$header_file", - "$out_dir/$dlldata_file", - "$out_dir/$interface_identifier_file", - "$out_dir/$proxy_file", - ] - - if (current_cpu == "x86") { - win_tool_arch = "environment.x86" - idl_target_platform = "win32" - } else if (current_cpu == "x64") { - win_tool_arch = "environment.x64" - idl_target_platform = "x64" - } else { - assert(false, "Need environment for this arch") - } - - args = [ - win_tool_arch, - rebase_path(out_dir, root_build_dir), - dynamic_guid, - type_library_file, - header_file, - dlldata_file, - interface_identifier_file, - proxy_file, - "{{source}}", - "/char", - "signed", - "/env", - idl_target_platform, - "/Oicf", - ] - - forward_variables_from(invoker, [ "deps" ]) - } - - source_set(target_name) { - forward_variables_from(invoker, [ "visibility" ]) - - # We only compile the IID files from the IDL tool rather than all outputs. - sources = process_file_template(invoker.sources, - [ "$out_dir/$interface_identifier_file" ]) - - public_deps = [ - ":$action_name", - ] - } -}
diff --git a/build/toolchain/win/midl.py b/build/toolchain/win/midl.py deleted file mode 100644 index 09fec0b..0000000 --- a/build/toolchain/win/midl.py +++ /dev/null
@@ -1,238 +0,0 @@ -# Copyright 2017 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 array -import difflib -import distutils.dir_util -import filecmp -import operator -import os -import re -import shutil -import struct -import subprocess -import sys -import tempfile -import uuid - - -def ZapTimestamp(filename): - contents = open(filename, 'rb').read() - # midl.exe writes timestamp 2147483647 (2^31 - 1) as creation date into its - # outputs, but using the local timezone. To make the output timezone- - # independent, replace that date with a fixed string of the same length. - # Also blank out the minor version number. - if filename.endswith('.tlb'): - # See https://chromium-review.googlesource.com/c/chromium/src/+/693223 for - # a fairly complete description of the .tlb binary format. - # TLB files start with a 54 byte header. Offset 0x20 stores how many types - # are defined in the file, and the header is followed by that many uint32s. - # After that, 15 section headers appear. Each section header is 16 bytes, - # starting with offset and length uint32s. - # Section 12 in the file contains custom() data. custom() data has a type - # (int, string, etc). Each custom data chunk starts with a uint16_t - # describing its type. Type 8 is string data, consisting of a uint32_t - # len, followed by that many data bytes, followed by 'W' bytes to pad to a - # 4 byte boundary. Type 0x13 is uint32 data, followed by 4 data bytes, - # followed by two 'W' to pad to a 4 byte boundary. - # The custom block always starts with one string containing "Created by - # MIDL version 8...", followed by one uint32 containing 0x7fffffff, - # followed by another uint32 containing the MIDL compiler version (e.g. - # 0x0801026e for v8.1.622 -- 0x26e == 622). These 3 fields take 0x54 bytes. - # There might be more custom data after that, but these 3 blocks are always - # there for file-level metadata. - # All data is little-endian in the file. - assert contents[0:8] == 'MSFT\x02\x00\x01\x00' - ntypes, = struct.unpack_from('<I', contents, 0x20) - custom_off, custom_len = struct.unpack_from( - '<II', contents, 0x54 + 4*ntypes + 11*16) - assert custom_len >= 0x54 - # First: Type string (0x8), followed by 0x3e characters. - assert contents[custom_off:custom_off+6] == '\x08\x00\x3e\x00\x00\x00' - assert re.match( - 'Created by MIDL version 8\.\d\d\.\d{4} at ... Jan 1. ..:..:.. 2038\n', - contents[custom_off+6:custom_off+6+0x3e]) - # Second: Type uint32 (0x13) storing 0x7fffffff (followed by WW / 0x57 pad) - assert contents[custom_off+6+0x3e:custom_off+6+0x3e+8] == \ - '\x13\x00\xff\xff\xff\x7f\x57\x57' - # Third: Type uint32 (0x13) storing MIDL compiler version. - assert contents[custom_off+6+0x3e+8:custom_off+6+0x3e+8+2] == '\x13\x00' - # Replace "Created by" string with fixed string, and fixed MIDL version with - # 8.1.622 always. - contents = (contents[0:custom_off+6] + - 'Created by MIDL version 8.xx.xxxx at a redacted point in time\n' + - # uint32 (0x13) val 0x7fffffff, WW, uint32 (0x13), val 0x0801026e, WW - '\x13\x00\xff\xff\xff\x7f\x57\x57\x13\x00\x6e\x02\x01\x08\x57\x57' + - contents[custom_off + 0x54:]) - else: - contents = re.sub( - 'File created by MIDL compiler version 8\.\d\d\.\d{4} \*/\r\n' - '/\* at ... Jan 1. ..:..:.. 2038', - 'File created by MIDL compiler version 8.xx.xxxx */\r\n' - '/* at a redacted point in time', - contents) - contents = re.sub( - ' Oicf, W1, Zp8, env=(.....) \(32b run\), ' - 'target_arch=(AMD64|X86) 8\.\d\d\.\d{4}', - ' Oicf, W1, Zp8, env=\\1 (32b run), target_arch=\\2 8.xx.xxxx', - contents) - # TODO(thakis): If we need more hacks than these, try to verify checked-in - # outputs when we're using the hermetic toolchain. - # midl.exe older than 8.1.622 omit '//' after #endif, fix that: - contents = contents.replace('#endif !_MIDL_USE_GUIDDEF_', - '#endif // !_MIDL_USE_GUIDDEF_') - # midl.exe puts the midl version into code in one place. To have - # predictable output, lie about the midl version if it's not 8.1.622. - # This is unfortunate, but remember that there's beauty too in imperfection. - contents = contents.replace('0x801026c, /* MIDL Version 8.1.620 */', - '0x801026e, /* MIDL Version 8.1.622 */') - open(filename, 'wb').write(contents) - - -def overwrite_cls_guid_h(h_file, dynamic_guid): - contents = open(h_file, 'rb').read() - contents = re.sub('class DECLSPEC_UUID\("[^"]*"\)', - 'class DECLSPEC_UUID("%s")' % str(dynamic_guid), contents) - open(h_file, 'wb').write(contents) - - -def overwrite_cls_guid_iid(iid_file, dynamic_guid): - contents = open(iid_file, 'rb').read() - hexuuid = '0x%08x,0x%04x,0x%04x,' % dynamic_guid.fields[0:3] - hexuuid += ','.join('0x%02x' % ord(b) for b in dynamic_guid.bytes[8:]) - contents = re.sub(r'MIDL_DEFINE_GUID\(CLSID, ([^,]*),[^)]*\)', - r'MIDL_DEFINE_GUID(CLSID, \1,%s)' % hexuuid, contents) - open(iid_file, 'wb').write(contents) - - -def overwrite_cls_guid_tlb(tlb_file, dynamic_guid): - # See ZapTimestamp() for a short overview of the .tlb format. The 1st - # section contains type descriptions, and the first type should be our - # coclass. It points to the type's GUID in section 6, the GUID section. - contents = open(tlb_file, 'rb').read() - assert contents[0:8] == 'MSFT\x02\x00\x01\x00' - ntypes, = struct.unpack_from('<I', contents, 0x20) - type_off, type_len = struct.unpack_from('<II', contents, 0x54 + 4*ntypes) - assert ord(contents[type_off]) == 0x25, "expected coclass" - guidind = struct.unpack_from('<I', contents, type_off + 0x2c)[0] - guid_off, guid_len = struct.unpack_from( - '<II', contents, 0x54 + 4*ntypes + 5*16) - assert guidind + 14 <= guid_len - contents = array.array('c', contents) - struct.pack_into('<IHH8s', contents, guid_off + guidind, - *(dynamic_guid.fields[0:3] + (dynamic_guid.bytes[8:],))) - # The GUID is correct now, but there's also a GUID hashtable in section 5. - # Need to recreate that too. Since the hash table uses chaining, it's - # easiest to recompute it from scratch rather than trying to patch it up. - hashtab = [0xffffffff] * (0x80 / 4) - for guidind in range(guid_off, guid_off + guid_len, 24): - guidbytes, typeoff, nextguid = struct.unpack_from( - '<16sII', contents, guidind) - words = struct.unpack('<8H', guidbytes) - # midl seems to use the following simple hash function for GUIDs: - guidhash = reduce(operator.xor, [w for w in words]) % (0x80 / 4) - nextguid = hashtab[guidhash] - struct.pack_into('<I', contents, guidind + 0x14, nextguid) - hashtab[guidhash] = guidind - guid_off - hash_off, hash_len = struct.unpack_from( - '<II', contents, 0x54 + 4*ntypes + 4*16) - for i, hashval in enumerate(hashtab): - struct.pack_into('<I', contents, hash_off + 4*i, hashval) - open(tlb_file, 'wb').write(contents) - - -def overwrite_cls_guid(h_file, iid_file, tlb_file, dynamic_guid): - # Fix up GUID in .h, _i.c, and .tlb. This currently assumes that there's - # only one coclass in the idl file, and that that's the type with the - # dynamic type. - overwrite_cls_guid_h(h_file, dynamic_guid) - overwrite_cls_guid_iid(iid_file, dynamic_guid) - overwrite_cls_guid_tlb(tlb_file, dynamic_guid) - - -def main(arch, outdir, dynamic_guid, tlb, h, dlldata, iid, proxy, idl, *flags): - # Copy checked-in outputs to final location. - THIS_DIR = os.path.abspath(os.path.dirname(__file__)) - source = os.path.join(THIS_DIR, '..', '..', '..', - 'third_party', 'win_build_output', outdir.replace('gen/', 'midl/')) - if os.path.isdir(os.path.join(source, os.path.basename(idl))): - source = os.path.join(source, os.path.basename(idl)) - source = os.path.join(source, arch.split('.')[1]) # Append 'x86' or 'x64'. - source = os.path.normpath(source) - distutils.dir_util.copy_tree(source, outdir, preserve_times=False) - if dynamic_guid != 'none': - overwrite_cls_guid(os.path.join(outdir, h), - os.path.join(outdir, iid), - os.path.join(outdir, tlb), - uuid.UUID(dynamic_guid)) - - # On non-Windows, that's all we can do. - if sys.platform != 'win32': - return 0 - - # On Windows, run midl.exe on the input and check that its outputs are - # identical to the checked-in outputs (after possibly replacing their main - # class guid). - tmp_dir = tempfile.mkdtemp() - delete_tmp_dir = True - - # Read the environment block from the file. This is stored in the format used - # by CreateProcess. Drop last 2 NULs, one for list terminator, one for - # trailing vs. separator. - env_pairs = open(arch).read()[:-2].split('\0') - env_dict = dict([item.split('=', 1) for item in env_pairs]) - - args = ['midl', '/nologo'] + list(flags) + [ - '/out', tmp_dir, - '/tlb', tlb, - '/h', h, - '/dlldata', dlldata, - '/iid', iid, - '/proxy', proxy, - idl] - try: - popen = subprocess.Popen(args, shell=True, env=env_dict, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - out, _ = popen.communicate() - # Filter junk out of stdout, and write filtered versions. Output we want - # to filter is pairs of lines that look like this: - # Processing C:\Program Files (x86)\Microsoft SDKs\...\include\objidl.idl - # objidl.idl - lines = out.splitlines() - prefixes = ('Processing ', '64 bit Processing ') - processing = set(os.path.basename(x) - for x in lines if x.startswith(prefixes)) - for line in lines: - if not line.startswith(prefixes) and line not in processing: - print line - if popen.returncode != 0: - return popen.returncode - - for f in os.listdir(tmp_dir): - ZapTimestamp(os.path.join(tmp_dir, f)) - - # Now compare the output in tmp_dir to the copied-over outputs. - diff = filecmp.dircmp(tmp_dir, outdir) - if diff.diff_files: - print 'midl.exe output different from files in %s, see %s' \ - % (outdir, tmp_dir) - for f in diff.diff_files: - if f.endswith('.tlb'): continue - fromfile = os.path.join(outdir, f) - tofile = os.path.join(tmp_dir, f) - print ''.join(difflib.unified_diff(open(fromfile, 'U').readlines(), - open(tofile, 'U').readlines(), - fromfile, tofile)) - delete_tmp_dir = False - print 'To rebaseline:' - print ' copy /y %s\* %s' % (tmp_dir, source) - sys.exit(1) - return 0 - finally: - if os.path.exists(tmp_dir) and delete_tmp_dir: - shutil.rmtree(tmp_dir) - - -if __name__ == '__main__': - sys.exit(main(*sys.argv[1:]))
diff --git a/build/toolchain/win/rc/.gitignore b/build/toolchain/win/rc/.gitignore deleted file mode 100644 index e8fc4d3..0000000 --- a/build/toolchain/win/rc/.gitignore +++ /dev/null
@@ -1,3 +0,0 @@ -linux64/rc -mac/rc -win/rc.exe
diff --git a/build/toolchain/win/rc/README.md b/build/toolchain/win/rc/README.md deleted file mode 100644 index e6d38f9..0000000 --- a/build/toolchain/win/rc/README.md +++ /dev/null
@@ -1,30 +0,0 @@ -# rc - -This contains a cross-platform reimplementation of rc.exe. - -This exists mainly to compile .rc files on non-Windows hosts for cross builds. -However, it also runs on Windows for two reasons: - -1. To compare the output of Microsoft's rc.exe and the reimplementation and to - check that they produce bitwise identical output. -2. The reimplementation supports printing resource files in /showIncludes - output, which helps getting build dependencies right. - -The resource compiler consists of two parts: - -1. A python script rc.py that serves as the driver. It does unicode - conversions, runs the input through the preprocessor, and then calls the - actual resource compiler. -2. The resource compiler, a C++ binary obtained via sha1 files from Google - Storage. The binary's code currenty lives at - https://github.com/nico/hack/tree/master/res, even though work is (slowly) - underway to upstream it into LLVM. - -To update the rc binary, run `upload_rc_binaries.sh` in this directory, on a -Mac. - -rc isn't built from source as part of the regular chrome build because -it's needed in a gn toolchain tool, and these currently cannot have deps. -Alternatively, gn could be taught about deps on tools, or rc invocations could -be not a tool but a template like e.g. yasm invocations (which can have deps), -then the prebuilt binaries wouldn't be needed.
diff --git a/build/toolchain/win/rc/linux64/rc.sha1 b/build/toolchain/win/rc/linux64/rc.sha1 deleted file mode 100644 index ad14ca4..0000000 --- a/build/toolchain/win/rc/linux64/rc.sha1 +++ /dev/null
@@ -1 +0,0 @@ -2d0c766039264dc2514d005a42f074af4838a446 \ No newline at end of file
diff --git a/build/toolchain/win/rc/mac/rc.sha1 b/build/toolchain/win/rc/mac/rc.sha1 deleted file mode 100644 index dbd6302..0000000 --- a/build/toolchain/win/rc/mac/rc.sha1 +++ /dev/null
@@ -1 +0,0 @@ -4c25c3bcb6608109bb52028d008835895cf72629 \ No newline at end of file
diff --git a/build/toolchain/win/rc/rc.py b/build/toolchain/win/rc/rc.py deleted file mode 100755 index 73da888..0000000 --- a/build/toolchain/win/rc/rc.py +++ /dev/null
@@ -1,194 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""usage: rc.py [options] input.res -A resource compiler for .rc files. - -options: --h, --help Print this message. --I<dir> Add include path. --D<sym> Define a macro for the preprocessor. -/fo<out> Set path of output .res file. -/showIncludes Print referenced header and resource files.""" - -from __future__ import print_function -from collections import namedtuple -import codecs -import os -import re -import subprocess -import sys -import tempfile - - -THIS_DIR = os.path.abspath(os.path.dirname(__file__)) -SRC_DIR = \ - os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(THIS_DIR)))) - - -def ParseFlags(): - """Parses flags off sys.argv and returns the parsed flags.""" - # Can't use optparse / argparse because of /fo flag :-/ - includes = [] - defines = [] - output = None - input = None - show_includes = False - # Parse. - for flag in sys.argv[1:]: - if flag == '-h' or flag == '--help': - print(__doc__) - sys.exit(0) - if flag.startswith('-I'): - includes.append(flag) - elif flag.startswith('-D'): - defines.append(flag) - elif flag.startswith('/fo'): - if output: - print('rc.py: error: multiple /fo flags', '/fo' + output, flag, - file=sys.stderr) - sys.exit(1) - output = flag[3:] - elif flag == '/showIncludes': - show_includes = True - elif (flag.startswith('-') or - (flag.startswith('/') and not os.path.exists(flag))): - print('rc.py: error: unknown flag', flag, file=sys.stderr) - print(__doc__, file=sys.stderr) - sys.exit(1) - else: - if input: - print('rc.py: error: multiple inputs:', input, flag, file=sys.stderr) - sys.exit(1) - input = flag - # Validate and set default values. - if not input: - print('rc.py: error: no input file', file=sys.stderr) - sys.exit(1) - if not output: - output = os.path.splitext(input)[0] + '.res' - Flags = namedtuple('Flags', ['includes', 'defines', 'output', 'input', - 'show_includes']) - return Flags(includes=includes, defines=defines, output=output, input=input, - show_includes=show_includes) - - -def ReadInput(input): - """"Reads input and returns it. For UTF-16LEBOM input, converts to UTF-8.""" - # Microsoft's rc.exe only supports unicode in the form of UTF-16LE with a BOM. - # Our rc binary sniffs for UTF-16LE. If that's not found, if /utf-8 is - # passed, the input is treated as UTF-8. If /utf-8 is not passed and the - # input is not UTF-16LE, then our rc errors out on characters outside of - # 7-bit ASCII. Since the driver always converts UTF-16LE to UTF-8 here (for - # the preprocessor, which doesn't support UTF-16LE), our rc will either see - # UTF-8 with the /utf-8 flag (for UTF-16LE input), or ASCII input. - # This is compatible with Microsoft rc.exe. If we wanted, we could expose - # a /utf-8 flag for the driver for UTF-8 .rc inputs too. - # TODO(thakis): Microsoft's rc.exe supports BOM-less UTF-16LE. We currently - # don't, but for chrome it currently doesn't matter. - is_utf8 = False - try: - with open(input, 'rb') as rc_file: - rc_file_data = rc_file.read() - if rc_file_data.startswith(codecs.BOM_UTF16_LE): - rc_file_data = rc_file_data[2:].decode('utf-16le').encode('utf-8') - is_utf8 = True - except IOError: - print('rc.py: failed to open', input, file=sys.stderr) - sys.exit(1) - except UnicodeDecodeError: - print('rc.py: failed to decode UTF-16 despite BOM', input, file=sys.stderr) - sys.exit(1) - return rc_file_data, is_utf8 - - -def Preprocess(rc_file_data, flags): - """Runs the input file through the preprocessor.""" - clang = os.path.join(SRC_DIR, 'third_party', 'llvm-build', - 'Release+Asserts', 'bin', 'clang-cl') - # Let preprocessor write to a temp file so that it doesn't interfere - # with /showIncludes output on stdout. - if sys.platform == 'win32': - clang += '.exe' - temp_handle, temp_file = tempfile.mkstemp(suffix='.i') - # Closing temp_handle immediately defeats the purpose of mkstemp(), but I - # can't figure out how to let write to the temp file on Windows otherwise. - os.close(temp_handle) - clang_cmd = [clang, '/P', '/DRC_INVOKED', '/TC', '-', '/Fi' + temp_file] - if os.path.dirname(flags.input): - # This must precede flags.includes. - clang_cmd.append('-I' + os.path.dirname(flags.input)) - if flags.show_includes: - clang_cmd.append('/showIncludes') - clang_cmd += flags.includes + flags.defines - p = subprocess.Popen(clang_cmd, stdin=subprocess.PIPE) - p.communicate(input=rc_file_data) - if p.returncode != 0: - sys.exit(p.returncode) - preprocessed_output = open(temp_file, 'rb').read() - os.remove(temp_file) - - # rc.exe has a wacko preprocessor: - # https://msdn.microsoft.com/en-us/library/windows/desktop/aa381033(v=vs.85).aspx - # """RC treats files with the .c and .h extensions in a special manner. It - # assumes that a file with one of these extensions does not contain - # resources. If a file has the .c or .h file name extension, RC ignores all - # lines in the file except the preprocessor directives.""" - # Thankfully, the Microsoft headers are mostly good about putting everything - # in the system headers behind `if !defined(RC_INVOKED)`, so regular - # preprocessing with RC_INVOKED defined almost works. The one exception - # is struct tagCRGB in dlgs.h, but that will be fixed in the next major - # SDK release too. - # TODO(thakis): Remove this once an SDK with the fix has been released. - preprocessed_output = re.sub('typedef struct tagCRGB\s*{[^}]*} CRGB;', '', - preprocessed_output) - return preprocessed_output - - -def RunRc(preprocessed_output, is_utf8, flags): - if sys.platform.startswith('linux'): - rc = os.path.join(THIS_DIR, 'linux64', 'rc') - elif sys.platform == 'darwin': - rc = os.path.join(THIS_DIR, 'mac', 'rc') - elif sys.platform == 'win32': - rc = os.path.join(THIS_DIR, 'win', 'rc.exe') - else: - print('rc.py: error: unsupported platform', sys.platform, file=sys.stderr) - sys.exit(1) - rc_cmd = [rc] - # Make sure rc-relative resources can be found: - if os.path.dirname(flags.input): - rc_cmd.append('/cd' + os.path.dirname(flags.input)) - rc_cmd.append('/fo' + flags.output) - if is_utf8: - rc_cmd.append('/utf-8') - # TODO(thakis): rc currently always prints full paths for /showIncludes, - # but clang-cl /P doesn't. Which one is right? - if flags.show_includes: - rc_cmd.append('/showIncludes') - # Microsoft rc.exe searches for referenced files relative to -I flags in - # addition to the pwd, so -I flags need to be passed both to both - # the preprocessor and rc. - rc_cmd += flags.includes - p = subprocess.Popen(rc_cmd, stdin=subprocess.PIPE) - p.communicate(input=preprocessed_output) - return p.returncode - - -def main(): - # This driver has to do these things: - # 1. Parse flags. - # 2. Convert the input from UTF-16LE to UTF-8 if needed. - # 3. Pass the input through a preprocessor (and clean up the preprocessor's - # output in minor ways). - # 4. Call rc for the heavy lifting. - flags = ParseFlags() - rc_file_data, is_utf8 = ReadInput(flags.input) - preprocessed_output = Preprocess(rc_file_data, flags) - return RunRc(preprocessed_output, is_utf8, flags) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/toolchain/win/rc/upload_rc_binaries.sh b/build/toolchain/win/rc/upload_rc_binaries.sh deleted file mode 100755 index ec4df4c..0000000 --- a/build/toolchain/win/rc/upload_rc_binaries.sh +++ /dev/null
@@ -1,46 +0,0 @@ -#!/bin/bash -# Copyright 2017 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. -set -eu - -# Builds new rc binaries at head and uploads them to google storage. -# The new .sha1 files will be in the tree after this has run. - -if [[ "$OSTYPE" != "darwin"* ]]; then - echo "this script must run on a mac" - exit 1 -fi - -DIR="$(cd "$(dirname "${0}" )" && pwd)" -SRC_DIR="$DIR/../../../.." - -# Make sure Linux and Windows sysroots are installed, for distrib.py. -$SRC_DIR/build/linux/sysroot_scripts/install-sysroot.py --arch amd64 -$SRC_DIR/build/vs_toolchain.py update --force - -# Make a temporary directory. -WORK_DIR=$(mktemp -d) -if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then - echo "could not create temp dir" - exit 1 -fi -function cleanup { - rm -rf "$WORK_DIR" -} -trap cleanup EXIT - -# Check out rc and build it in the temporary directory. Copy binaries over. -pushd "$WORK_DIR" > /dev/null -git clone -q https://github.com/nico/hack -cd hack/res -./distrib.py "$SRC_DIR" -popd > /dev/null -cp "$WORK_DIR/hack/res/rc-linux64" "$DIR/linux64/rc" -cp "$WORK_DIR/hack/res/rc-mac" "$DIR/mac/rc" -cp "$WORK_DIR/hack/res/rc-win.exe" "$DIR/win/rc.exe" - -# Upload binaries to cloud storage. -upload_to_google_storage.py -b chromium-browser-clang/rc "$DIR/linux64/rc" -upload_to_google_storage.py -b chromium-browser-clang/rc "$DIR/mac/rc" -upload_to_google_storage.py -b chromium-browser-clang/rc "$DIR/win/rc.exe"
diff --git a/build/toolchain/win/rc/win/rc.exe.sha1 b/build/toolchain/win/rc/win/rc.exe.sha1 deleted file mode 100644 index 3fdbfc0..0000000 --- a/build/toolchain/win/rc/win/rc.exe.sha1 +++ /dev/null
@@ -1 +0,0 @@ -ba51d69039ffb88310b72b6568efa9f0de148f8f \ No newline at end of file
diff --git a/build/toolchain/win/setup_toolchain.py b/build/toolchain/win/setup_toolchain.py deleted file mode 100644 index d63b131..0000000 --- a/build/toolchain/win/setup_toolchain.py +++ /dev/null
@@ -1,271 +0,0 @@ -# Copyright (c) 2013 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. -# -# Copies the given "win tool" (which the toolchain uses to wrap compiler -# invocations) and the environment blocks for the 32-bit and 64-bit builds on -# Windows to the build directory. -# -# The arguments are the visual studio install location and the location of the -# win tool. The script assumes that the root build directory is the current dir -# and the files will be written to the current directory. - -import errno -import json -import os -import re -import subprocess -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) -import gn_helpers - -SCRIPT_DIR = os.path.dirname(__file__) - -def _ExtractImportantEnvironment(output_of_set): - """Extracts environment variables required for the toolchain to run from - a textual dump output by the cmd.exe 'set' command.""" - envvars_to_save = ( - 'goma_.*', # TODO(scottmg): This is ugly, but needed for goma. - 'include', - 'lib', - 'libpath', - 'path', - 'pathext', - 'systemroot', - 'temp', - 'tmp', - ) - env = {} - # This occasionally happens and leads to misleading SYSTEMROOT error messages - # if not caught here. - if output_of_set.count('=') == 0: - raise Exception('Invalid output_of_set. Value is:\n%s' % output_of_set) - for line in output_of_set.splitlines(): - for envvar in envvars_to_save: - if re.match(envvar + '=', line.lower()): - var, setting = line.split('=', 1) - if envvar == 'path': - # Our own rules and actions in Chromium rely on python being in the - # path. Add the path to this python here so that if it's not in the - # path when ninja is run later, python will still be found. - setting = os.path.dirname(sys.executable) + os.pathsep + setting - env[var.upper()] = setting - break - if sys.platform in ('win32', 'cygwin'): - for required in ('SYSTEMROOT', 'TEMP', 'TMP'): - if required not in env: - raise Exception('Environment variable "%s" ' - 'required to be set to valid path' % required) - return env - - -def _DetectVisualStudioPath(): - """Return path to the GYP_MSVS_VERSION of Visual Studio. - """ - - # Use the code in build/vs_toolchain.py to avoid duplicating code. - chromium_dir = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..', '..')) - sys.path.append(os.path.join(chromium_dir, 'build')) - import vs_toolchain - return vs_toolchain.DetectVisualStudioPath() - - -def _LoadEnvFromBat(args): - """Given a bat command, runs it and returns env vars set by it.""" - args = args[:] - args.extend(('&&', 'set')) - popen = subprocess.Popen( - args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - variables, _ = popen.communicate() - if popen.returncode != 0: - raise Exception('"%s" failed with error %d' % (args, popen.returncode)) - return variables - - -def _LoadToolchainEnv(cpu, sdk_dir, target_store): - """Returns a dictionary with environment variables that must be set while - running binaries from the toolchain (e.g. INCLUDE and PATH for cl.exe).""" - # Check if we are running in the SDK command line environment and use - # the setup script from the SDK if so. |cpu| should be either - # 'x86' or 'x64' or 'arm' or 'arm64'. - assert cpu in ('x86', 'x64', 'arm', 'arm64') - if bool(int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', 1))) and sdk_dir: - # Load environment from json file. - env = os.path.normpath(os.path.join(sdk_dir, 'bin/SetEnv.%s.json' % cpu)) - env = json.load(open(env))['env'] - for k in env: - entries = [os.path.join(*([os.path.join(sdk_dir, 'bin')] + e)) - for e in env[k]] - # clang-cl wants INCLUDE to be ;-separated even on non-Windows, - # lld-link wants LIB to be ;-separated even on non-Windows. Path gets :. - # The separator for INCLUDE here must match the one used in main() below. - sep = os.pathsep if k == 'PATH' else ';' - env[k] = sep.join(entries) - # PATH is a bit of a special case, it's in addition to the current PATH. - env['PATH'] = env['PATH'] + os.pathsep + os.environ['PATH'] - # Augment with the current env to pick up TEMP and friends. - for k in os.environ: - if k not in env: - env[k] = os.environ[k] - - varlines = [] - for k in sorted(env.keys()): - varlines.append('%s=%s' % (str(k), str(env[k]))) - variables = '\n'.join(varlines) - - # Check that the json file contained the same environment as the .cmd file. - if sys.platform in ('win32', 'cygwin'): - script = os.path.normpath(os.path.join(sdk_dir, 'Bin/SetEnv.cmd')) - arg = '/' + cpu - json_env = _ExtractImportantEnvironment(variables) - cmd_env = _ExtractImportantEnvironment(_LoadEnvFromBat([script, arg])) - assert _LowercaseDict(json_env) == _LowercaseDict(cmd_env) - else: - if 'GYP_MSVS_OVERRIDE_PATH' not in os.environ: - os.environ['GYP_MSVS_OVERRIDE_PATH'] = _DetectVisualStudioPath() - # We only support x64-hosted tools. - script_path = os.path.normpath(os.path.join( - os.environ['GYP_MSVS_OVERRIDE_PATH'], - 'VC/vcvarsall.bat')) - if not os.path.exists(script_path): - # vcvarsall.bat for VS 2017 fails if run after running vcvarsall.bat from - # VS 2013 or VS 2015. Fix this by clearing the vsinstalldir environment - # variable. - if 'VSINSTALLDIR' in os.environ: - del os.environ['VSINSTALLDIR'] - other_path = os.path.normpath(os.path.join( - os.environ['GYP_MSVS_OVERRIDE_PATH'], - 'VC/Auxiliary/Build/vcvarsall.bat')) - if not os.path.exists(other_path): - raise Exception('%s is missing - make sure VC++ tools are installed.' % - script_path) - script_path = other_path - cpu_arg = "amd64" - if (cpu != 'x64'): - # x64 is default target CPU thus any other CPU requires a target set - cpu_arg += '_' + cpu - args = [script_path, cpu_arg] - # Store target must come before any SDK version declaration - if (target_store): - args.append(['store']) - # Chromium requires the 10.0.17134.0 SDK - previous versions don't have - # all of the required declarations. - args.append('10.0.17134.0') - variables = _LoadEnvFromBat(args) - return _ExtractImportantEnvironment(variables) - - -def _FormatAsEnvironmentBlock(envvar_dict): - """Format as an 'environment block' directly suitable for CreateProcess. - Briefly this is a list of key=value\0, terminated by an additional \0. See - CreateProcess documentation for more details.""" - block = '' - nul = '\0' - for key, value in envvar_dict.iteritems(): - block += key + '=' + value + nul - block += nul - return block - - -def _LowercaseDict(d): - """Returns a copy of `d` with both key and values lowercased. - - Args: - d: dict to lowercase (e.g. {'A': 'BcD'}). - - Returns: - A dict with both keys and values lowercased (e.g.: {'a': 'bcd'}). - """ - return {k.lower(): d[k].lower() for k in d} - - -def main(): - if len(sys.argv) != 7: - print('Usage setup_toolchain.py ' - '<visual studio path> <win sdk path> ' - '<runtime dirs> <target_os> <target_cpu> ' - '<environment block name|none>') - sys.exit(2) - win_sdk_path = sys.argv[2] - runtime_dirs = sys.argv[3] - target_os = sys.argv[4] - target_cpu = sys.argv[5] - environment_block_name = sys.argv[6] - if (environment_block_name == 'none'): - environment_block_name = '' - - if (target_os == 'winuwp'): - target_store = True - else: - target_store = False - - cpus = ('x86', 'x64', 'arm', 'arm64') - assert target_cpu in cpus - vc_bin_dir = '' - vc_lib_path = '' - vc_lib_atlmfc_path = '' - vc_lib_um_path = '' - include = '' - - # TODO(scottmg|goma): Do we need an equivalent of - # ninja_use_custom_environment_files? - - for cpu in cpus: - if cpu == target_cpu: - # Extract environment variables for subprocesses. - env = _LoadToolchainEnv(cpu, win_sdk_path, target_store) - env['PATH'] = runtime_dirs + os.pathsep + env['PATH'] - - for path in env['PATH'].split(os.pathsep): - if os.path.exists(os.path.join(path, 'cl.exe')): - vc_bin_dir = os.path.realpath(path) - break - - for path in env['LIB'].split(';'): - if os.path.exists(os.path.join(path, 'msvcrt.lib')): - vc_lib_path = os.path.realpath(path) - break - - for path in env['LIB'].split(';'): - if os.path.exists(os.path.join(path, 'atls.lib')): - vc_lib_atlmfc_path = os.path.realpath(path) - break - - for path in env['LIB'].split(';'): - if os.path.exists(os.path.join(path, 'User32.Lib')): - vc_lib_um_path = os.path.realpath(path) - break - - # The separator for INCLUDE here must match the one used in - # _LoadToolchainEnv() above. - include = [p.replace('"', r'\"') for p in env['INCLUDE'].split(';') if p] - include_I = ' '.join(['"/I' + i + '"' for i in include]) - include_imsvc = ' '.join(['"-imsvc' + i + '"' for i in include]) - - if (environment_block_name != ''): - env_block = _FormatAsEnvironmentBlock(env) - with open(environment_block_name, 'wb') as f: - f.write(env_block) - - assert vc_bin_dir - print 'vc_bin_dir = ' + gn_helpers.ToGNString(vc_bin_dir) - assert include_I - print 'include_flags_I = ' + gn_helpers.ToGNString(include_I) - assert include_imsvc - print 'include_flags_imsvc = ' + gn_helpers.ToGNString(include_imsvc) - assert vc_lib_path - print 'vc_lib_path = ' + gn_helpers.ToGNString(vc_lib_path) - if (target_store != True): - # Path is assumed not to exist for desktop applications - assert vc_lib_atlmfc_path - # Possible atlmfc library path gets introduced in the future for store thus - # output result if a result exists. - if (vc_lib_atlmfc_path != ''): - print 'vc_lib_atlmfc_path = ' + gn_helpers.ToGNString(vc_lib_atlmfc_path) - assert vc_lib_um_path - print 'vc_lib_um_path = ' + gn_helpers.ToGNString(vc_lib_um_path) - print 'paths = ' + gn_helpers.ToGNString(env['PATH']) - -if __name__ == '__main__': - main()
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py deleted file mode 100644 index b2cb093..0000000 --- a/build/toolchain/win/tool_wrapper.py +++ /dev/null
@@ -1,275 +0,0 @@ -# Copyright (c) 2012 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. - -"""Utility functions for Windows builds. - -This file is copied to the build directory as part of toolchain setup and -is used to set up calls to tools used by the build that need wrappers. -""" - -import os -import re -import shutil -import subprocess -import stat -import string -import sys - -# tool_wrapper.py doesn't get invoked through python.bat so the Python bin -# directory doesn't get added to the path. The Python module search logic -# handles this fine and finds win32file.pyd. However the Windows module -# search logic then looks for pywintypes27.dll and other DLLs in the path and -# if it finds versions with a different bitness first then win32file.pyd will -# fail to load with a cryptic error: -# ImportError: DLL load failed: %1 is not a valid Win32 application. -if sys.platform == 'win32': - os.environ['PATH'] = os.path.dirname(sys.executable) + \ - os.pathsep + os.environ['PATH'] - import win32file # pylint: disable=import-error - -BASE_DIR = os.path.dirname(os.path.abspath(__file__)) - -# A regex matching an argument corresponding to the output filename passed to -# link.exe. -_LINK_EXE_OUT_ARG = re.compile('/OUT:(?P<out>.+)$', re.IGNORECASE) -_LINK_PDB_OUT_ARG = re.compile('/PDB:(?P<out>.+)$', re.IGNORECASE) -_LINK_ERROR = re.compile('.* error LNK(\d+):') - -# Retry links when this error is hit, to try to deal with crbug.com/782660 -_LINKER_RETRY_ERRORS = 1201 -# Maximum number of linker retries. -_LINKER_RETRIES = 3 - -def main(args): - exit_code = WinTool().Dispatch(args) - if exit_code is not None: - sys.exit(exit_code) - - -class WinTool(object): - """This class performs all the Windows tooling steps. The methods can either - be executed directly, or dispatched from an argument list.""" - - def _UseSeparateMspdbsrv(self, env, args): - """Allows to use a unique instance of mspdbsrv.exe per linker instead of a - shared one.""" - if len(args) < 1: - raise Exception("Not enough arguments") - - if args[0] != 'link.exe': - return - - # Use the output filename passed to the linker to generate an endpoint name - # for mspdbsrv.exe. - endpoint_name = None - for arg in args: - m = _LINK_EXE_OUT_ARG.match(arg) - if m: - endpoint_name = re.sub(r'\W+', '', - '%s_%d' % (m.group('out'), os.getpid())) - break - - if endpoint_name is None: - return - - # Adds the appropriate environment variable. This will be read by link.exe - # to know which instance of mspdbsrv.exe it should connect to (if it's - # not set then the default endpoint is used). - env['_MSPDBSRV_ENDPOINT_'] = endpoint_name - - def Dispatch(self, args): - """Dispatches a string command to a method.""" - if len(args) < 1: - raise Exception("Not enough arguments") - - method = "Exec%s" % self._CommandifyName(args[0]) - return getattr(self, method)(*args[1:]) - - def _CommandifyName(self, name_string): - """Transforms a tool name like recursive-mirror to RecursiveMirror.""" - return name_string.title().replace('-', '') - - def _GetEnv(self, arch): - """Gets the saved environment from a file for a given architecture.""" - # The environment is saved as an "environment block" (see CreateProcess - # and msvs_emulation for details). We convert to a dict here. - # Drop last 2 NULs, one for list terminator, one for trailing vs. separator. - pairs = open(arch).read()[:-2].split('\0') - kvs = [item.split('=', 1) for item in pairs] - return dict(kvs) - - def ExecDeleteFile(self, path): - """Simple file delete command.""" - if os.path.exists(path): - os.unlink(path) - - def ExecRecursiveMirror(self, source, dest): - """Emulation of rm -rf out && cp -af in out.""" - if os.path.exists(dest): - if os.path.isdir(dest): - def _on_error(fn, path, dummy_excinfo): - # The operation failed, possibly because the file is set to - # read-only. If that's why, make it writable and try the op again. - if not os.access(path, os.W_OK): - os.chmod(path, stat.S_IWRITE) - fn(path) - shutil.rmtree(dest, onerror=_on_error) - else: - if not os.access(dest, os.W_OK): - # Attempt to make the file writable before deleting it. - os.chmod(dest, stat.S_IWRITE) - os.unlink(dest) - - if os.path.isdir(source): - shutil.copytree(source, dest) - else: - shutil.copy2(source, dest) - # Try to diagnose crbug.com/741603 - if not os.path.exists(dest): - raise Exception("Copying of %s to %s failed" % (source, dest)) - - def ExecLinkWrapper(self, arch, use_separate_mspdbsrv, *args): - """Filter diagnostic output from link that looks like: - ' Creating library ui.dll.lib and object ui.dll.exp' - This happens when there are exports from the dll or exe. - """ - env = self._GetEnv(arch) - if use_separate_mspdbsrv == 'True': - self._UseSeparateMspdbsrv(env, args) - if sys.platform == 'win32': - args = list(args) # *args is a tuple by default, which is read-only. - args[0] = args[0].replace('/', '\\') - # https://docs.python.org/2/library/subprocess.html: - # "On Unix with shell=True [...] if args is a sequence, the first item - # specifies the command string, and any additional items will be treated as - # additional arguments to the shell itself. That is to say, Popen does the - # equivalent of: - # Popen(['/bin/sh', '-c', args[0], args[1], ...])" - # For that reason, since going through the shell doesn't seem necessary on - # non-Windows don't do that there. - pdb_name = None - pe_name = None - for arg in args: - m = _LINK_PDB_OUT_ARG.match(arg) - if m: - pdb_name = m.group('out') - m = _LINK_EXE_OUT_ARG.match(arg) - if m: - pe_name = m.group('out') - for retry_count in range(_LINKER_RETRIES): - retry = False - link = subprocess.Popen(args, shell=sys.platform == 'win32', env=env, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - # Read output one line at a time as it shows up to avoid OOM failures when - # GBs of output is produced. - for line in link.stdout: - if (not line.startswith(' Creating library ') and - not line.startswith('Generating code') and - not line.startswith('Finished generating code')): - m = _LINK_ERROR.match(line) - if m: - error_code = int(m.groups()[0]) - if error_code == _LINKER_RETRY_ERRORS: - print 'Retrying link due to error %d' % error_code - if pdb_name: - shutil.copyfile(pdb_name, pdb_name + 'failure_backup') - retry = True - print line, - result = link.wait() - if not retry: - break - if result == 0 and sys.platform == 'win32': - # Flush the file buffers to try to work around a Windows 10 kernel bug, - # https://crbug.com/644525 - output_handle = win32file.CreateFile(pe_name, win32file.GENERIC_WRITE, - 0, None, win32file.OPEN_EXISTING, 0, 0) - win32file.FlushFileBuffers(output_handle) - output_handle.Close() - return result - - def ExecAsmWrapper(self, arch, *args): - """Filter logo banner from invocations of asm.exe.""" - env = self._GetEnv(arch) - popen = subprocess.Popen(args, shell=True, env=env, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - out, _ = popen.communicate() - for line in out.splitlines(): - # Split to avoid triggering license checks: - if (not line.startswith('Copy' + 'right (C' + - ') Microsoft Corporation') and - not line.startswith('Microsoft (R) Macro Assembler') and - not line.startswith(' Assembling: ') and - line): - print line - return popen.returncode - - def ExecRcWrapper(self, arch, *args): - """Converts .rc files to .res files.""" - env = self._GetEnv(arch) - - # We run two resource compilers: - # 1. A custom one at build/toolchain/win/rc/rc.py which can run on - # non-Windows, and which has /showIncludes support so we can track - # dependencies (e.g. on .ico files) of .rc files. - # 2. On Windows, regular Microsoft rc.exe, to make sure rc.py produces - # bitwise identical output. - - # 1. Run our rc.py. - # Also pass /showIncludes to track dependencies of .rc files. - args = list(args) - rcpy_args = args[:] - rcpy_args[0:1] = [sys.executable, os.path.join(BASE_DIR, 'rc', 'rc.py')] - rcpy_res_output = rcpy_args[-2] - assert rcpy_res_output.startswith('/fo') - assert rcpy_res_output.endswith('.res') - rc_res_output = rcpy_res_output + '_ms_rc' - args[-2] = rc_res_output - rcpy_args.append('/showIncludes') - rc_exe_exit_code = subprocess.call(rcpy_args, env=env) - if rc_exe_exit_code == 0: - # Since tool("rc") can't have deps, add deps on this script and on rc.py - # and its deps here, so that rc edges become dirty if rc.py changes. - print 'Note: including file: ../../build/toolchain/win/tool_wrapper.py' - print 'Note: including file: ../../build/toolchain/win/rc/rc.py' - print 'Note: including file: ../../build/toolchain/win/rc/linux64/rc.sha1' - print 'Note: including file: ../../build/toolchain/win/rc/mac/rc.sha1' - print 'Note: including file: ../../build/toolchain/win/rc/win/rc.exe.sha1' - - # 2. Run Microsoft rc.exe. - if sys.platform == 'win32' and rc_exe_exit_code == 0: - popen = subprocess.Popen(args, shell=True, env=env, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - out, _ = popen.communicate() - # Filter logo banner from invocations of rc.exe. Older versions of RC - # don't support the /nologo flag. - for line in out.splitlines(): - if (not line.startswith('Microsoft (R) Windows (R) Resource Compiler') - and not line.startswith('Copy' + 'right (C' + - ') Microsoft Corporation') - and line): - print line - rc_exe_exit_code = popen.returncode - # Assert Microsoft rc.exe and rc.py produced identical .res files. - if rc_exe_exit_code == 0: - import filecmp - # Strip "/fo" prefix. - assert filecmp.cmp(rc_res_output[3:], rcpy_res_output[3:]) - return rc_exe_exit_code - - def ExecActionWrapper(self, arch, rspfile, *dirname): - """Runs an action command line from a response file using the environment - for |arch|. If |dirname| is supplied, use that as the working directory.""" - env = self._GetEnv(arch) - # TODO(scottmg): This is a temporary hack to get some specific variables - # through to actions that are set after GN-time. http://crbug.com/333738. - for k, v in os.environ.iteritems(): - if k not in env: - env[k] = v - args = open(rspfile).read() - dirname = dirname[0] if dirname else None - return subprocess.call(args, shell=True, env=env, cwd=dirname) - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:]))
diff --git a/build/toolchain/wrapper_utils.py b/build/toolchain/wrapper_utils.py deleted file mode 100644 index f76192e..0000000 --- a/build/toolchain/wrapper_utils.py +++ /dev/null
@@ -1,150 +0,0 @@ -# Copyright (c) 2016 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. - -"""Helper functions for gcc_toolchain.gni wrappers.""" - -import gzip -import os -import re -import subprocess -import shlex -import shutil -import sys -import threading - -_BAT_PREFIX = 'cmd /c call ' -_WHITELIST_RE = re.compile('whitelisted_resource_(?P<resource_id>[0-9]+)') - - -def _GzipThenDelete(src_path, dest_path): - # Results for Android map file with GCC on a z620: - # Uncompressed: 207MB - # gzip -9: 16.4MB, takes 8.7 seconds. - # gzip -1: 21.8MB, takes 2.0 seconds. - # Piping directly from the linker via -print-map (or via -Map with a fifo) - # adds a whopping 30-45 seconds! - with open(src_path, 'rb') as f_in, gzip.GzipFile(dest_path, 'wb', 1) as f_out: - shutil.copyfileobj(f_in, f_out) - os.unlink(src_path) - - -def CommandToRun(command): - """Generates commands compatible with Windows. - - When running on a Windows host and using a toolchain whose tools are - actually wrapper scripts (i.e. .bat files on Windows) rather than binary - executables, the |command| to run has to be prefixed with this magic. - The GN toolchain definitions take care of that for when GN/Ninja is - running the tool directly. When that command is passed in to this - script, it appears as a unitary string but needs to be split up so that - just 'cmd' is the actual command given to Python's subprocess module. - - Args: - command: List containing the UNIX style |command|. - - Returns: - A list containing the Windows version of the |command|. - """ - if command[0].startswith(_BAT_PREFIX): - command = command[0].split(None, 3) + command[1:] - return command - - -def RunLinkWithOptionalMapFile(command, env=None, map_file=None): - """Runs the given command, adding in -Wl,-Map when |map_file| is given. - - Also takes care of gzipping when |map_file| ends with .gz. - - Args: - command: List of arguments comprising the command. - env: Environment variables. - map_file: Path to output map_file. - - Returns: - The exit code of running |command|. - """ - tmp_map_path = None - if map_file and map_file.endswith('.gz'): - tmp_map_path = map_file + '.tmp' - command.append('-Wl,-Map,' + tmp_map_path) - elif map_file: - command.append('-Wl,-Map,' + map_file) - - result = subprocess.call(command, env=env) - - if tmp_map_path and result == 0: - threading.Thread( - target=lambda: _GzipThenDelete(tmp_map_path, map_file)).start() - elif tmp_map_path and os.path.exists(tmp_map_path): - os.unlink(tmp_map_path) - - return result - - -def ResolveRspLinks(inputs): - """Return a list of files contained in a response file. - - Args: - inputs: A command containing rsp files. - - Returns: - A set containing the rsp file content.""" - rspfiles = [a[1:] for a in inputs if a.startswith('@')] - resolved = set() - for rspfile in rspfiles: - with open(rspfile, 'r') as f: - resolved.update(shlex.split(f.read())) - - return resolved - - -def CombineResourceWhitelists(whitelist_candidates, outfile): - """Combines all whitelists for a resource file into a single whitelist. - - Args: - whitelist_candidates: List of paths to rsp files containing all targets. - outfile: Path to save the combined whitelist. - """ - whitelists = ('%s.whitelist' % candidate for candidate in whitelist_candidates - if os.path.exists('%s.whitelist' % candidate)) - - resources = set() - for whitelist in whitelists: - with open(whitelist, 'r') as f: - resources.update(f.readlines()) - - with open(outfile, 'w') as f: - f.writelines(resources) - - -def ExtractResourceIdsFromPragmaWarnings(text): - """Returns set of resource IDs that are inside unknown pragma warnings. - - Args: - text: The text that will be scanned for unknown pragma warnings. - - Returns: - A set containing integers representing resource IDs. - """ - used_resources = set() - lines = text.splitlines() - for ln in lines: - match = _WHITELIST_RE.search(ln) - if match: - resource_id = int(match.group('resource_id')) - used_resources.add(resource_id) - - return used_resources - - -def CaptureCommandStderr(command, env=None): - """Returns the stderr of a command. - - Args: - command: A list containing the command and arguments. - env: Environment variables for the new process. - """ - child = subprocess.Popen(command, stderr=subprocess.PIPE, env=env) - _, stderr = child.communicate() - return child.returncode, stderr
diff --git a/build/tree_truth.sh b/build/tree_truth.sh deleted file mode 100755 index 617092d..0000000 --- a/build/tree_truth.sh +++ /dev/null
@@ -1,102 +0,0 @@ -#!/bin/bash -# Copyright 2013 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. -# -# Script for printing recent commits in a buildbot run. - -# Return the sha1 of the given tag. If not present, return "". -# $1: path to repo -# $2: tag name -tt_sha1_for_tag() { - oneline=$(cd $1 && git log -1 $2 --format='%H' 2>/dev/null) - if [ $? -eq 0 ] ; then - echo $oneline - fi -} - -# Return the sha1 of HEAD, or "" -# $1: path to repo -tt_sha1_for_head() { - ( cd $1 && git log HEAD -n1 --format='%H' | cat ) -} - -# For the given repo, set tag to HEAD. -# $1: path to repo -# $2: tag name -tt_tag_head() { - ( cd $1 && git tag -f $2 ) -} - -# For the given repo, delete the tag. -# $1: path to repo -# $2: tag name -tt_delete_tag() { - ( cd $1 && git tag -d $2 ) -} - -# For the given repo, set tag to "three commits ago" (for testing). -# $1: path to repo -# $2: tag name -tt_tag_three_ago() { - local sh=$(cd $1 && git log --pretty=oneline -n 3 | tail -1 | awk '{print $1}') - ( cd $1 && git tag -f $2 $sh ) -} - -# List the commits between the given tag and HEAD. -# If the tag does not exist, only list the last few. -# If the tag is at HEAD, list nothing. -# Output format has distinct build steps for repos with changes. -# $1: path to repo -# $2: tag name -# $3: simple/short repo name to use for display -tt_list_commits() { - local tag_sha1=$(tt_sha1_for_tag $1 $2) - local head_sha1=$(tt_sha1_for_head $1) - local display_name=$(echo $3 | sed 's#/#_#g') - if [ "${tag_sha1}" = "${head_sha1}" ] ; then - return - fi - if [ "${tag_sha1}" = "" ] ; then - echo "@@@BUILD_STEP Recent commits in repo $display_name@@@" - echo "NOTE: git tag was not found so we have no baseline." - echo "Here are some recent commits, but they may not be new for this build." - ( cd $1 && git log -n 10 --stat | cat) - else - echo "@@@BUILD_STEP New commits in repo $display_name@@@" - ( cd $1 && git log -n 500 $2..HEAD --stat | cat) - fi -} - -# Clean out the tree truth tags in all repos. For testing. -tt_clean_all() { - for project in $@; do - tt_delete_tag $CHROME_SRC/../$project tree_truth - done -} - -# Print tree truth for all clank repos. -tt_print_all() { - for project in $@; do - local full_path=$CHROME_SRC/../$project - tt_list_commits $full_path tree_truth $project - tt_tag_head $full_path tree_truth - done -} - -# Print a summary of the last 10 commits for each repo. -tt_brief_summary() { - echo "@@@BUILD_STEP Brief summary of recent CLs in every branch@@@" - for project in $@; do - echo $project: - local full_path=$CHROME_SRC/../$project - (cd $full_path && git log -n 10 --format=" %H %s %an, %ad" | cat) - echo "=================================================================" - done -} - -CHROME_SRC=$1 -shift -PROJECT_LIST=$@ -tt_brief_summary $PROJECT_LIST -tt_print_all $PROJECT_LIST
diff --git a/build/update-linux-sandbox.sh b/build/update-linux-sandbox.sh deleted file mode 100755 index fa2d107..0000000 --- a/build/update-linux-sandbox.sh +++ /dev/null
@@ -1,76 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2012 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. - -BUILDTYPE="${BUILDTYPE:-Debug}" -CHROME_SRC_DIR="${CHROME_SRC_DIR:-$(dirname -- $(readlink -fn -- "$0"))/..}" -CHROME_OUT_DIR="${CHROME_SRC_DIR}/${CHROMIUM_OUT_DIR:-out}/${BUILDTYPE}" -CHROME_SANDBOX_BUILD_PATH="${CHROME_OUT_DIR}/chrome_sandbox" -CHROME_SANDBOX_INST_PATH="/usr/local/sbin/chrome-devel-sandbox" -CHROME_SANDBOX_INST_DIR=$(dirname -- "$CHROME_SANDBOX_INST_PATH") - -TARGET_DIR_TYPE=$(stat -f -c %t -- "${CHROME_SANDBOX_INST_DIR}" 2>/dev/null) -if [ $? -ne 0 ]; then - echo "Could not get status of ${CHROME_SANDBOX_INST_DIR}" - exit 1 -fi - -# Make sure the path is not on NFS. -if [ "${TARGET_DIR_TYPE}" = "6969" ]; then - echo "Please make sure ${CHROME_SANDBOX_INST_PATH} is not on NFS!" - exit 1 -fi - -installsandbox() { - echo "(using sudo so you may be asked for your password)" - sudo -- cp "${CHROME_SANDBOX_BUILD_PATH}" \ - "${CHROME_SANDBOX_INST_PATH}" && - sudo -- chown root:root "${CHROME_SANDBOX_INST_PATH}" && - sudo -- chmod 4755 "${CHROME_SANDBOX_INST_PATH}" - return $? -} - -if [ ! -d "${CHROME_OUT_DIR}" ]; then - echo -n "${CHROME_OUT_DIR} does not exist. Use \"BUILDTYPE=Release ${0}\" " - echo "If you are building in Release mode" - exit 1 -fi - -if [ ! -f "${CHROME_SANDBOX_BUILD_PATH}" ]; then - echo "Could not find ${CHROME_SANDBOX_BUILD_PATH}" - echo -n "BUILDTYPE is $BUILDTYPE, use \"BUILDTYPE=<value> ${0}\" to override " - echo "after you build the chrome_sandbox target" - exit 1 -fi - -if [ ! -f "${CHROME_SANDBOX_INST_PATH}" ]; then - echo -n "Could not find ${CHROME_SANDBOX_INST_PATH}, " - echo "installing it now." - installsandbox -fi - -if [ ! -f "${CHROME_SANDBOX_INST_PATH}" ]; then - echo "Failed to install ${CHROME_SANDBOX_INST_PATH}" - exit 1 -fi - -CURRENT_API=$("${CHROME_SANDBOX_BUILD_PATH}" --get-api) -INSTALLED_API=$("${CHROME_SANDBOX_INST_PATH}" --get-api) - -if [ "${CURRENT_API}" != "${INSTALLED_API}" ]; then - echo "Your installed setuid sandbox is too old, installing it now." - if ! installsandbox; then - echo "Failed to install ${CHROME_SANDBOX_INST_PATH}" - exit 1 - fi -else - echo "Your setuid sandbox is up to date" - if [ "${CHROME_DEVEL_SANDBOX}" != "${CHROME_SANDBOX_INST_PATH}" ]; then - echo -n "Make sure you have \"export " - echo -n "CHROME_DEVEL_SANDBOX=${CHROME_SANDBOX_INST_PATH}\" " - echo "somewhere in your .bashrc" - echo "This variable is currently: ${CHROME_DEVEL_SANDBOX:-empty}" - fi -fi
diff --git a/build/util/BUILD.gn b/build/util/BUILD.gn deleted file mode 100644 index 9f5a6f7..0000000 --- a/build/util/BUILD.gn +++ /dev/null
@@ -1,51 +0,0 @@ -# Copyright (c) 2013 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. - -action("webkit_version") { - script = "version.py" - - lastchange_file = "LASTCHANGE" - - template_file = "webkit_version.h.in" - inputs = [ - lastchange_file, - template_file, - ] - - output_file = "$target_gen_dir/webkit_version.h" - outputs = [ - output_file, - ] - - args = [ - # LASTCHANGE contains "<build hash>-<ref>". The user agent only wants the - # "<build hash>" bit, so chop off everything after it. - "-e", - "LASTCHANGE=LASTCHANGE[:LASTCHANGE.find('-')]", - "-f", - rebase_path(lastchange_file, root_build_dir), - rebase_path(template_file, root_build_dir), - rebase_path(output_file, root_build_dir), - ] -} - -action("chrome_version_json") { - script = "version.py" - _chrome_version_path = "//chrome/VERSION" - inputs = [ - _chrome_version_path, - ] - _output_file = "$root_gen_dir/CHROME_VERSION.json" - outputs = [ - _output_file, - ] - args = [ - "--file", - rebase_path(_chrome_version_path, root_build_dir), - "--template", - "{\"full-quoted\": \"\\\"@MAJOR@.@MINOR@.@BUILD@.@PATCH@\\\"\"}", - "--output", - rebase_path(_output_file, root_build_dir), - ] -}
diff --git a/build/util/LASTCHANGE b/build/util/LASTCHANGE deleted file mode 100644 index 125c0d0..0000000 --- a/build/util/LASTCHANGE +++ /dev/null
@@ -1 +0,0 @@ -LASTCHANGE=f2d1e453de33756fb4454dd881ba8fa786bed919-refs/heads/master@{#563863}
diff --git a/build/util/branding.gni b/build/util/branding.gni deleted file mode 100644 index cadd1a3..0000000 --- a/build/util/branding.gni +++ /dev/null
@@ -1,44 +0,0 @@ -# Copyright 2016 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. - -# This exposes the Chrome branding as GN variables for use in build files. -# -# PREFER NOT TO USE THESE. The GYP build uses this kind of thing extensively. -# However, it is far better to write an action to generate a file at -# build-time with the information you need. This allows better dependency -# checking and GN will run faster. -# -# These values should only be used if you REALLY need to depend on them at -# build-time, for example, in the computation of output file names. - -import("//build/config/chrome_build.gni") - -_branding_dictionary_template = - "full_name = \"@PRODUCT_FULLNAME@\" " + - "short_name = \"@PRODUCT_SHORTNAME@\" " + - "bundle_id = \"@MAC_BUNDLE_ID@\" " + - "creator_code = \"@MAC_CREATOR_CODE@\" " + - "installer_full_name = \"@PRODUCT_INSTALLER_FULLNAME@\" " + - "installer_short_name = \"@PRODUCT_INSTALLER_SHORTNAME@\" " - -_branding_file = "//chrome/app/theme/$branding_path_component/BRANDING" -_result = exec_script("version.py", - [ - "-f", - rebase_path(_branding_file, root_build_dir), - "-t", - _branding_dictionary_template, - ], - "scope", - [ _branding_file ]) - -chrome_product_full_name = _result.full_name -chrome_product_short_name = _result.short_name -chrome_product_installer_full_name = _result.installer_full_name -chrome_product_installer_short_name = _result.installer_short_name - -if (is_mac) { - chrome_mac_bundle_id = _result.bundle_id - chrome_mac_creator_code = _result.creator_code -}
diff --git a/build/util/java_action.gni b/build/util/java_action.gni deleted file mode 100644 index 646d5a4..0000000 --- a/build/util/java_action.gni +++ /dev/null
@@ -1,103 +0,0 @@ -# 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. - -jarrunner = "//build/util/java_action.py" - -# Declare a target that runs a java command a single time. -# -# This target type allows you to run a java command a single time to produce -# one or more output files. If you want to run a java command for each of a -# set of input files, see "java_action_foreach". -# -# See "gn help action" for more information on how to use this target. This -# template is based on the "action" and supports the same variables. -template("java_action") { - assert(defined(invoker.script), - "Need script in $target_name listing the .jar file to run.") - assert(defined(invoker.outputs), - "Need outputs in $target_name listing the generated outputs.") - - jarscript = invoker.script - action(target_name) { - script = jarrunner - - inputs = [ - jarscript, - ] - if (defined(invoker.inputs)) { - inputs += invoker.inputs - } - - args = [ - "-jar", - rebase_path(jarscript, root_build_dir), - ] - if (defined(invoker.args)) { - args += invoker.args - } - - forward_variables_from(invoker, - [ - "console", - "data", - "data_deps", - "depfile", - "deps", - "outputs", - "sources", - "testonly", - "visibility", - ]) - } -} - -# Declare a target that runs a java command over a set of files. -# -# This target type allows you to run a java command once-per-file over a set of -# sources. If you want to run a java command once that takes many files as -# input, see "java_action". -# -# See "gn help action_foreach" for more information on how to use this target. -# This template is based on the "action_foreach" supports the same variables. -template("java_action_foreach") { - assert(defined(invoker.script), - "Need script in $target_name listing the .jar file to run.") - assert(defined(invoker.outputs), - "Need outputs in $target_name listing the generated outputs.") - assert(defined(invoker.sources), - "Need sources in $target_name listing the target inputs.") - - jarscript = invoker.script - action_foreach(target_name) { - script = jarrunner - - inputs = [ - jarscript, - ] - if (defined(invoker.inputs)) { - inputs += invoker.inputs - } - - args = [ - "-jar", - rebase_path(jarscript, root_build_dir), - ] - if (defined(invoker.args)) { - args += invoker.args - } - - forward_variables_from(invoker, - [ - "console", - "data", - "data_deps", - "depfile", - "deps", - "outputs", - "sources", - "testonly", - "visibility", - ]) - } -}
diff --git a/build/util/java_action.py b/build/util/java_action.py deleted file mode 100755 index ed9bb60..0000000 --- a/build/util/java_action.py +++ /dev/null
@@ -1,82 +0,0 @@ -#!/usr/bin/env python -# 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. - -"""Wrapper script to run java command as action with gn.""" - -import os -import subprocess -import sys - -EXIT_SUCCESS = 0 -EXIT_FAILURE = 1 - - -def IsExecutable(path): - """Returns whether file at |path| exists and is executable. - - Args: - path: absolute or relative path to test. - - Returns: - True if the file at |path| exists, False otherwise. - """ - return os.path.isfile(path) and os.access(path, os.X_OK) - - -def FindCommand(command): - """Looks up for |command| in PATH. - - Args: - command: name of the command to lookup, if command is a relative or - absolute path (i.e. contains some path separator) then only that - path will be tested. - - Returns: - Full path to command or None if the command was not found. - - On Windows, this respects the PATHEXT environment variable when the - command name does not have an extension. - """ - fpath, _ = os.path.split(command) - if fpath: - if IsExecutable(command): - return command - - if sys.platform == 'win32': - # On Windows, if the command does not have an extension, cmd.exe will - # try all extensions from PATHEXT when resolving the full path. - command, ext = os.path.splitext(command) - if not ext: - exts = os.environ['PATHEXT'].split(os.path.pathsep) - else: - exts = [ext] - else: - exts = [''] - - for path in os.environ['PATH'].split(os.path.pathsep): - for ext in exts: - path = os.path.join(path, command) + ext - if IsExecutable(path): - return path - - return None - - -def main(): - java_path = FindCommand('java') - if not java_path: - sys.stderr.write('java: command not found\n') - sys.exit(EXIT_FAILURE) - - args = sys.argv[1:] - if len(args) < 2 or args[0] != '-jar': - sys.stderr.write('usage: %s -jar JARPATH [java_args]...\n' % sys.argv[0]) - sys.exit(EXIT_FAILURE) - - return subprocess.check_call([java_path] + args) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/util/lastchange.py b/build/util/lastchange.py deleted file mode 100755 index 19e3237..0000000 --- a/build/util/lastchange.py +++ /dev/null
@@ -1,224 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 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. - -""" -lastchange.py -- Chromium revision fetching utility. -""" - -import re -import logging -import optparse -import os -import subprocess -import sys - -class VersionInfo(object): - def __init__(self, revision_id, full_revision_string): - self.revision_id = revision_id - self.revision = full_revision_string - - -def RunGitCommand(directory, command): - """ - Launches git subcommand. - - Errors are swallowed. - - Returns: - A process object or None. - """ - command = ['git'] + command - # Force shell usage under cygwin. This is a workaround for - # mysterious loss of cwd while invoking cygwin's git. - # We can't just pass shell=True to Popen, as under win32 this will - # cause CMD to be used, while we explicitly want a cygwin shell. - if sys.platform == 'cygwin': - command = ['sh', '-c', ' '.join(command)] - try: - proc = subprocess.Popen(command, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - cwd=directory, - shell=(sys.platform=='win32')) - return proc - except OSError as e: - logging.error('Command %r failed: %s' % (' '.join(command), e)) - return None - - -def FetchGitRevision(directory, filter): - """ - Fetch the Git hash (and Cr-Commit-Position if any) for a given directory. - - Errors are swallowed. - - Returns: - A VersionInfo object or None on error. - """ - hsh = '' - git_args = ['log', '-1', '--format=%H'] - if filter is not None: - git_args.append('--grep=' + filter) - proc = RunGitCommand(directory, git_args) - if proc: - output = proc.communicate()[0].strip() - if proc.returncode == 0 and output: - hsh = output - else: - logging.error('Git error: rc=%d, output=%r' % - (proc.returncode, output)) - if not hsh: - return None - pos = '' - proc = RunGitCommand(directory, ['cat-file', 'commit', hsh]) - if proc: - output = proc.communicate()[0] - if proc.returncode == 0 and output: - for line in reversed(output.splitlines()): - if line.startswith('Cr-Commit-Position:'): - pos = line.rsplit()[-1].strip() - break - return VersionInfo(hsh, '%s-%s' % (hsh, pos)) - - -def FetchVersionInfo(directory=None, filter=None): - """ - Returns the last change (as a VersionInfo object) - from some appropriate revision control system. - """ - version_info = FetchGitRevision(directory, filter) - if not version_info: - version_info = VersionInfo('0', '0') - return version_info - - -def GetHeaderGuard(path): - """ - Returns the header #define guard for the given file path. - This treats everything after the last instance of "src/" as being a - relevant part of the guard. If there is no "src/", then the entire path - is used. - """ - src_index = path.rfind('src/') - if src_index != -1: - guard = path[src_index + 4:] - else: - guard = path - guard = guard.upper() - return guard.replace('/', '_').replace('.', '_').replace('\\', '_') + '_' - - -def GetHeaderContents(path, define, version): - """ - Returns what the contents of the header file should be that indicate the given - revision. - """ - header_guard = GetHeaderGuard(path) - - header_contents = """/* Generated by lastchange.py, do not edit.*/ - -#ifndef %(header_guard)s -#define %(header_guard)s - -#define %(define)s "%(version)s" - -#endif // %(header_guard)s -""" - header_contents = header_contents % { 'header_guard': header_guard, - 'define': define, - 'version': version } - return header_contents - - -def WriteIfChanged(file_name, contents): - """ - Writes the specified contents to the specified file_name - iff the contents are different than the current contents. - """ - try: - old_contents = open(file_name, 'r').read() - except EnvironmentError: - pass - else: - if contents == old_contents: - return - os.unlink(file_name) - open(file_name, 'w').write(contents) - - -def main(argv=None): - if argv is None: - argv = sys.argv - - parser = optparse.OptionParser(usage="lastchange.py [options]") - parser.add_option("-m", "--version-macro", - help="Name of C #define when using --header. Defaults to " + - "LAST_CHANGE.", - default="LAST_CHANGE") - parser.add_option("-o", "--output", metavar="FILE", - help="Write last change to FILE. " + - "Can be combined with --header to write both files.") - parser.add_option("", "--header", metavar="FILE", - help="Write last change to FILE as a C/C++ header. " + - "Can be combined with --output to write both files.") - parser.add_option("--revision-id-only", action='store_true', - help="Output the revision as a VCS revision ID only (in " + - "Git, a 40-character commit hash, excluding the " + - "Cr-Commit-Position).") - parser.add_option("--print-only", action='store_true', - help="Just print the revision string. Overrides any " + - "file-output-related options.") - parser.add_option("-s", "--source-dir", metavar="DIR", - help="Use repository in the given directory.") - parser.add_option("", "--filter", metavar="REGEX", - help="Only use log entries where the commit message " + - "matches the supplied filter regex. Defaults to " + - "'^Change-Id:' to suppress local commits.", - default='^Change-Id:') - opts, args = parser.parse_args(argv[1:]) - - logging.basicConfig(level=logging.WARNING) - - out_file = opts.output - header = opts.header - filter=opts.filter - - while len(args) and out_file is None: - if out_file is None: - out_file = args.pop(0) - if args: - sys.stderr.write('Unexpected arguments: %r\n\n' % args) - parser.print_help() - sys.exit(2) - - if opts.source_dir: - src_dir = opts.source_dir - else: - src_dir = os.path.dirname(os.path.abspath(__file__)) - - version_info = FetchVersionInfo(directory=src_dir, filter=filter) - revision_string = version_info.revision - if opts.revision_id_only: - revision_string = version_info.revision_id - - if opts.print_only: - print revision_string - else: - contents = "LASTCHANGE=%s\n" % revision_string - if not out_file and not opts.header: - sys.stdout.write(contents) - else: - if out_file: - WriteIfChanged(out_file, contents) - if header: - WriteIfChanged(header, - GetHeaderContents(header, opts.version_macro, - revision_string)) - - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/util/lib/common/PRESUBMIT.py b/build/util/lib/common/PRESUBMIT.py deleted file mode 100644 index fca962f..0000000 --- a/build/util/lib/common/PRESUBMIT.py +++ /dev/null
@@ -1,16 +0,0 @@ -# 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. - - -def _RunTests(input_api, output_api): - return (input_api.canned_checks.RunUnitTestsInDirectory( - input_api, output_api, '.', whitelist=[r'.+_test.py$'])) - - -def CheckChangeOnUpload(input_api, output_api): - return _RunTests(input_api, output_api) - - -def CheckChangeOnCommit(input_api, output_api): - return _RunTests(input_api, output_api)
diff --git a/build/util/lib/common/__init__.py b/build/util/lib/common/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/build/util/lib/common/__init__.py +++ /dev/null
diff --git a/build/util/lib/common/chrome_test_server_spawner.py b/build/util/lib/common/chrome_test_server_spawner.py deleted file mode 100644 index b9844aa..0000000 --- a/build/util/lib/common/chrome_test_server_spawner.py +++ /dev/null
@@ -1,480 +0,0 @@ -# Copyright 2017 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. - -"""A "Test Server Spawner" that handles killing/stopping per-test test servers. - -It's used to accept requests from the device to spawn and kill instances of the -chrome test server on the host. -""" -# pylint: disable=W0702 - -import BaseHTTPServer -import json -import logging -import os -import select -import struct -import subprocess -import sys -import threading -import time -import urlparse - - -SERVER_TYPES = { - 'http': '', - 'ftp': '-f', - 'sync': '', # Sync uses its own script, and doesn't take a server type arg. - 'tcpecho': '--tcp-echo', - 'udpecho': '--udp-echo', - 'ws': '--websocket', -} - - -_DIR_SOURCE_ROOT = os.path.abspath( - os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, - os.pardir)) - - -_logger = logging.getLogger(__name__) - - -# Path that are needed to import necessary modules when launching a testserver. -os.environ['PYTHONPATH'] = os.environ.get('PYTHONPATH', '') + (':%s:%s:%s:%s:%s' - % (os.path.join(_DIR_SOURCE_ROOT, 'third_party'), - os.path.join(_DIR_SOURCE_ROOT, 'third_party', 'tlslite'), - os.path.join(_DIR_SOURCE_ROOT, 'third_party', 'pyftpdlib', 'src'), - os.path.join(_DIR_SOURCE_ROOT, 'net', 'tools', 'testserver'), - os.path.join(_DIR_SOURCE_ROOT, 'components', 'sync', 'tools', - 'testserver'))) - - -# The timeout (in seconds) of starting up the Python test server. -_TEST_SERVER_STARTUP_TIMEOUT = 10 - - -def _GetServerTypeCommandLine(server_type): - """Returns the command-line by the given server type. - - Args: - server_type: the server type to be used (e.g. 'http'). - - Returns: - A string containing the command-line argument. - """ - if server_type not in SERVER_TYPES: - raise NotImplementedError('Unknown server type: %s' % server_type) - if server_type == 'udpecho': - raise Exception('Please do not run UDP echo tests because we do not have ' - 'a UDP forwarder tool.') - return SERVER_TYPES[server_type] - - -class PortForwarder: - def Map(self, port_pairs): - pass - - def GetDevicePortForHostPort(self, host_port): - """Returns the device port that corresponds to a given host port.""" - return host_port - - def WaitHostPortAvailable(self, port): - """Returns True if |port| is available.""" - return True - - def WaitPortNotAvailable(self, port): - """Returns True if |port| is not available.""" - return True - - def WaitDevicePortReady(self, port): - """Returns whether the provided port is used.""" - return True - - def Unmap(self, device_port): - """Unmaps specified port""" - pass - - -class TestServerThread(threading.Thread): - """A thread to run the test server in a separate process.""" - - def __init__(self, ready_event, arguments, port_forwarder): - """Initialize TestServerThread with the following argument. - - Args: - ready_event: event which will be set when the test server is ready. - arguments: dictionary of arguments to run the test server. - device: An instance of DeviceUtils. - tool: instance of runtime error detection tool. - """ - threading.Thread.__init__(self) - self.wait_event = threading.Event() - self.stop_event = threading.Event() - self.ready_event = ready_event - self.ready_event.clear() - self.arguments = arguments - self.port_forwarder = port_forwarder - self.test_server_process = None - self.is_ready = False - self.host_port = self.arguments['port'] - self.host_ocsp_port = 0 - assert isinstance(self.host_port, int) - # The forwarder device port now is dynamically allocated. - self.forwarder_device_port = 0 - self.forwarder_ocsp_device_port = 0 - # Anonymous pipe in order to get port info from test server. - self.pipe_in = None - self.pipe_out = None - self.process = None - self.command_line = [] - - def _WaitToStartAndGetPortFromTestServer(self): - """Waits for the Python test server to start and gets the port it is using. - - The port information is passed by the Python test server with a pipe given - by self.pipe_out. It is written as a result to |self.host_port|. - - Returns: - Whether the port used by the test server was successfully fetched. - """ - assert self.host_port == 0 and self.pipe_out and self.pipe_in - (in_fds, _, _) = select.select([self.pipe_in, ], [], [], - _TEST_SERVER_STARTUP_TIMEOUT) - if len(in_fds) == 0: - _logger.error('Failed to wait to the Python test server to be started.') - return False - # First read the data length as an unsigned 4-byte value. This - # is _not_ using network byte ordering since the Python test server packs - # size as native byte order and all Chromium platforms so far are - # configured to use little-endian. - # TODO(jnd): Change the Python test server and local_test_server_*.cc to - # use a unified byte order (either big-endian or little-endian). - data_length = os.read(self.pipe_in, struct.calcsize('=L')) - if data_length: - (data_length,) = struct.unpack('=L', data_length) - assert data_length - if not data_length: - _logger.error('Failed to get length of server data.') - return False - server_data_json = os.read(self.pipe_in, data_length) - if not server_data_json: - _logger.error('Failed to get server data.') - return False - _logger.info('Got port json data: %s', server_data_json) - - parsed_server_data = None - try: - parsed_server_data = json.loads(server_data_json) - except ValueError: - pass - - if not isinstance(parsed_server_data, dict): - _logger.error('Failed to parse server_data: %s' % server_data_json) - return False - - if not isinstance(parsed_server_data.get('port'), int): - _logger.error('Failed to get port information from the server data.') - return False - - self.host_port = parsed_server_data['port'] - self.host_ocsp_port = parsed_server_data.get('ocsp_port', 0) - - return self.port_forwarder.WaitPortNotAvailable(self.host_port) - - def _GenerateCommandLineArguments(self): - """Generates the command line to run the test server. - - Note that all options are processed by following the definitions in - testserver.py. - """ - if self.command_line: - return - - args_copy = dict(self.arguments) - - # Translate the server type. - type_cmd = _GetServerTypeCommandLine(args_copy.pop('server-type')) - if type_cmd: - self.command_line.append(type_cmd) - - # Use a pipe to get the port given by the instance of Python test server - # if the test does not specify the port. - assert self.host_port == args_copy['port'] - if self.host_port == 0: - (self.pipe_in, self.pipe_out) = os.pipe() - self.command_line.append('--startup-pipe=%d' % self.pipe_out) - - # Pass the remaining arguments as-is. - for key, values in args_copy.iteritems(): - if not isinstance(values, list): - values = [values] - for value in values: - if value is None: - self.command_line.append('--%s' % key) - else: - self.command_line.append('--%s=%s' % (key, value)) - - def _CloseUnnecessaryFDsForTestServerProcess(self): - # This is required to avoid subtle deadlocks that could be caused by the - # test server child process inheriting undesirable file descriptors such as - # file lock file descriptors. - for fd in xrange(0, 1024): - if fd != self.pipe_out: - try: - os.close(fd) - except: - pass - - def run(self): - _logger.info('Start running the thread!') - self.wait_event.clear() - self._GenerateCommandLineArguments() - command = _DIR_SOURCE_ROOT - if self.arguments['server-type'] == 'sync': - command = [os.path.join(command, 'components', 'sync', 'tools', - 'testserver', - 'sync_testserver.py')] + self.command_line - else: - command = [os.path.join(command, 'net', 'tools', 'testserver', - 'testserver.py')] + self.command_line - _logger.info('Running: %s', command) - - # Disable PYTHONUNBUFFERED because it has a bad interaction with the - # testserver. Remove once this interaction is fixed. - unbuf = os.environ.pop('PYTHONUNBUFFERED', None) - - # Pass _DIR_SOURCE_ROOT as the child's working directory so that relative - # paths in the arguments are resolved correctly. - self.process = subprocess.Popen( - command, preexec_fn=self._CloseUnnecessaryFDsForTestServerProcess, - cwd=_DIR_SOURCE_ROOT) - if unbuf: - os.environ['PYTHONUNBUFFERED'] = unbuf - if self.process: - if self.pipe_out: - self.is_ready = self._WaitToStartAndGetPortFromTestServer() - else: - self.is_ready = self.port_forwarder.WaitPortNotAvailable(self.host_port) - - if self.is_ready: - port_map = [(0, self.host_port)] - if self.host_ocsp_port: - port_map.extend([(0, self.host_ocsp_port)]) - self.port_forwarder.Map(port_map) - - self.forwarder_device_port = \ - self.port_forwarder.GetDevicePortForHostPort(self.host_port) - if self.host_ocsp_port: - self.forwarder_ocsp_device_port = \ - self.port_forwarder.GetDevicePortForHostPort(self.host_ocsp_port) - - # Check whether the forwarder is ready on the device. - self.is_ready = self.forwarder_device_port and \ - self.port_forwarder.WaitDevicePortReady(self.forwarder_device_port) - - # Wake up the request handler thread. - self.ready_event.set() - # Keep thread running until Stop() gets called. - self.stop_event.wait() - if self.process.poll() is None: - self.process.kill() - self.port_forwarder.Unmap(self.forwarder_device_port) - self.process = None - self.is_ready = False - if self.pipe_out: - os.close(self.pipe_in) - os.close(self.pipe_out) - self.pipe_in = None - self.pipe_out = None - _logger.info('Test-server has died.') - self.wait_event.set() - - def Stop(self): - """Blocks until the loop has finished. - - Note that this must be called in another thread. - """ - if not self.process: - return - self.stop_event.set() - self.wait_event.wait() - - -class SpawningServerRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): - """A handler used to process http GET/POST request.""" - - def _SendResponse(self, response_code, response_reason, additional_headers, - contents): - """Generates a response sent to the client from the provided parameters. - - Args: - response_code: number of the response status. - response_reason: string of reason description of the response. - additional_headers: dict of additional headers. Each key is the name of - the header, each value is the content of the header. - contents: string of the contents we want to send to client. - """ - self.send_response(response_code, response_reason) - self.send_header('Content-Type', 'text/html') - # Specify the content-length as without it the http(s) response will not - # be completed properly (and the browser keeps expecting data). - self.send_header('Content-Length', len(contents)) - for header_name in additional_headers: - self.send_header(header_name, additional_headers[header_name]) - self.end_headers() - self.wfile.write(contents) - self.wfile.flush() - - def _StartTestServer(self): - """Starts the test server thread.""" - _logger.info('Handling request to spawn a test server.') - content_type = self.headers.getheader('content-type') - if content_type != 'application/json': - raise Exception('Bad content-type for start request.') - content_length = self.headers.getheader('content-length') - if not content_length: - content_length = 0 - try: - content_length = int(content_length) - except: - raise Exception('Bad content-length for start request.') - _logger.info(content_length) - test_server_argument_json = self.rfile.read(content_length) - _logger.info(test_server_argument_json) - - if len(self.server.test_servers) >= self.server.max_instances: - self._SendResponse(400, 'Invalid request', {}, - 'Too many test servers running') - return - - ready_event = threading.Event() - new_server = TestServerThread(ready_event, - json.loads(test_server_argument_json), - self.server.port_forwarder) - new_server.setDaemon(True) - new_server.start() - ready_event.wait() - if new_server.is_ready: - response = {'port': new_server.forwarder_device_port, - 'message': 'started'}; - if new_server.forwarder_ocsp_device_port: - response['ocsp_port'] = new_server.forwarder_ocsp_device_port - self._SendResponse(200, 'OK', {}, json.dumps(response)) - _logger.info('Test server is running on port %d forwarded to %d.' % - (new_server.forwarder_device_port, new_server.host_port)) - port = new_server.forwarder_device_port - assert not self.server.test_servers.has_key(port) - self.server.test_servers[port] = new_server - else: - new_server.Stop() - self._SendResponse(500, 'Test Server Error.', {}, '') - _logger.info('Encounter problem during starting a test server.') - - def _KillTestServer(self, params): - """Stops the test server instance.""" - try: - port = int(params['port'][0]) - except ValueError, KeyError: - port = None - if port == None or port <= 0: - self._SendResponse(400, 'Invalid request.', {}, 'port must be specified') - return - - if not self.server.test_servers.has_key(port): - self._SendResponse(400, 'Invalid request.', {}, - "testserver isn't running on port %d" % port) - return - - server = self.server.test_servers.pop(port) - - _logger.info('Handling request to kill a test server on port: %d.', port) - server.Stop() - - # Make sure the status of test server is correct before sending response. - if self.server.port_forwarder.WaitHostPortAvailable(port): - self._SendResponse(200, 'OK', {}, 'killed') - _logger.info('Test server on port %d is killed', port) - else: - self._SendResponse(500, 'Test Server Error.', {}, '') - _logger.info('Encounter problem during killing a test server.') - - def log_message(self, format, *args): - # Suppress the default HTTP logging behavior if the logging level is higher - # than INFO. - if _logger.getEffectiveLevel() <= logging.INFO: - pass - - def do_POST(self): - parsed_path = urlparse.urlparse(self.path) - action = parsed_path.path - _logger.info('Action for POST method is: %s.', action) - if action == '/start': - self._StartTestServer() - else: - self._SendResponse(400, 'Unknown request.', {}, '') - _logger.info('Encounter unknown request: %s.', action) - - def do_GET(self): - parsed_path = urlparse.urlparse(self.path) - action = parsed_path.path - params = urlparse.parse_qs(parsed_path.query, keep_blank_values=1) - _logger.info('Action for GET method is: %s.', action) - for param in params: - _logger.info('%s=%s', param, params[param][0]) - if action == '/kill': - self._KillTestServer(params) - elif action == '/ping': - # The ping handler is used to check whether the spawner server is ready - # to serve the requests. We don't need to test the status of the test - # server when handling ping request. - self._SendResponse(200, 'OK', {}, 'ready') - _logger.info('Handled ping request and sent response.') - else: - self._SendResponse(400, 'Unknown request', {}, '') - _logger.info('Encounter unknown request: %s.', action) - - -class SpawningServer(object): - """The class used to start/stop a http server.""" - - def __init__(self, test_server_spawner_port, port_forwarder, max_instances): - self.server = BaseHTTPServer.HTTPServer(('', test_server_spawner_port), - SpawningServerRequestHandler) - self.server_port = self.server.server_port - _logger.info('Started test server spawner on port: %d.', self.server_port) - - self.server.port_forwarder = port_forwarder - self.server.test_servers = {} - self.server.max_instances = max_instances - - def _Listen(self): - _logger.info('Starting test server spawner.') - self.server.serve_forever() - - def Start(self): - """Starts the test server spawner.""" - listener_thread = threading.Thread(target=self._Listen) - listener_thread.setDaemon(True) - listener_thread.start() - - def Stop(self): - """Stops the test server spawner. - - Also cleans the server state. - """ - self.CleanupState() - self.server.shutdown() - - def CleanupState(self): - """Cleans up the spawning server state. - - This should be called if the test server spawner is reused, - to avoid sharing the test server instance. - """ - if self.server.test_servers: - _logger.warning('Not all test servers were stopped.') - for port in self.server.test_servers: - _logger.warning('Stopping test server on port %d' % port) - self.server.test_servers[port].Stop() - self.server.test_servers = {}
diff --git a/build/util/lib/common/perf_result_data_type.py b/build/util/lib/common/perf_result_data_type.py deleted file mode 100644 index 67b550a..0000000 --- a/build/util/lib/common/perf_result_data_type.py +++ /dev/null
@@ -1,20 +0,0 @@ -# Copyright 2013 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. - -DEFAULT = 'default' -UNIMPORTANT = 'unimportant' -HISTOGRAM = 'histogram' -UNIMPORTANT_HISTOGRAM = 'unimportant-histogram' -INFORMATIONAL = 'informational' - -ALL_TYPES = [DEFAULT, UNIMPORTANT, HISTOGRAM, UNIMPORTANT_HISTOGRAM, - INFORMATIONAL] - - -def IsValidType(datatype): - return datatype in ALL_TYPES - - -def IsHistogram(datatype): - return (datatype == HISTOGRAM or datatype == UNIMPORTANT_HISTOGRAM)
diff --git a/build/util/lib/common/perf_tests_results_helper.py b/build/util/lib/common/perf_tests_results_helper.py deleted file mode 100644 index 59bb5e4..0000000 --- a/build/util/lib/common/perf_tests_results_helper.py +++ /dev/null
@@ -1,200 +0,0 @@ -# Copyright 2013 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 re -import sys - -import json -import logging -import math - -import perf_result_data_type - - -# Mapping from result type to test output -RESULT_TYPES = {perf_result_data_type.UNIMPORTANT: 'RESULT ', - perf_result_data_type.DEFAULT: '*RESULT ', - perf_result_data_type.INFORMATIONAL: '', - perf_result_data_type.UNIMPORTANT_HISTOGRAM: 'HISTOGRAM ', - perf_result_data_type.HISTOGRAM: '*HISTOGRAM '} - - -def _EscapePerfResult(s): - """Escapes |s| for use in a perf result.""" - return re.sub('[\:|=/#&,]', '_', s) - - -def FlattenList(values): - """Returns a simple list without sub-lists.""" - ret = [] - for entry in values: - if isinstance(entry, list): - ret.extend(FlattenList(entry)) - else: - ret.append(entry) - return ret - - -def GeomMeanAndStdDevFromHistogram(histogram_json): - histogram = json.loads(histogram_json) - # Handle empty histograms gracefully. - if not 'buckets' in histogram: - return 0.0, 0.0 - count = 0 - sum_of_logs = 0 - for bucket in histogram['buckets']: - if 'high' in bucket: - bucket['mean'] = (bucket['low'] + bucket['high']) / 2.0 - else: - bucket['mean'] = bucket['low'] - if bucket['mean'] > 0: - sum_of_logs += math.log(bucket['mean']) * bucket['count'] - count += bucket['count'] - - if count == 0: - return 0.0, 0.0 - - sum_of_squares = 0 - geom_mean = math.exp(sum_of_logs / count) - for bucket in histogram['buckets']: - if bucket['mean'] > 0: - sum_of_squares += (bucket['mean'] - geom_mean) ** 2 * bucket['count'] - return geom_mean, math.sqrt(sum_of_squares / count) - - -def _ValueToString(v): - # Special case for floats so we don't print using scientific notation. - if isinstance(v, float): - return '%f' % v - else: - return str(v) - - -def _MeanAndStdDevFromList(values): - avg = None - sd = None - if len(values) > 1: - try: - value = '[%s]' % ','.join([_ValueToString(v) for v in values]) - avg = sum([float(v) for v in values]) / len(values) - sqdiffs = [(float(v) - avg) ** 2 for v in values] - variance = sum(sqdiffs) / (len(values) - 1) - sd = math.sqrt(variance) - except ValueError: - value = ', '.join(values) - else: - value = values[0] - return value, avg, sd - - -def PrintPages(page_list): - """Prints list of pages to stdout in the format required by perf tests.""" - print 'Pages: [%s]' % ','.join([_EscapePerfResult(p) for p in page_list]) - - -def PrintPerfResult(measurement, trace, values, units, - result_type=perf_result_data_type.DEFAULT, - print_to_stdout=True): - """Prints numerical data to stdout in the format required by perf tests. - - The string args may be empty but they must not contain any colons (:) or - equals signs (=). - This is parsed by the buildbot using: - http://src.chromium.org/viewvc/chrome/trunk/tools/build/scripts/slave/process_log_utils.py - - Args: - measurement: A description of the quantity being measured, e.g. "vm_peak". - On the dashboard, this maps to a particular graph. Mandatory. - trace: A description of the particular data point, e.g. "reference". - On the dashboard, this maps to a particular "line" in the graph. - Mandatory. - values: A list of numeric measured values. An N-dimensional list will be - flattened and treated as a simple list. - units: A description of the units of measure, e.g. "bytes". - result_type: Accepts values of perf_result_data_type.ALL_TYPES. - print_to_stdout: If True, prints the output in stdout instead of returning - the output to caller. - - Returns: - String of the formated perf result. - """ - assert perf_result_data_type.IsValidType(result_type), \ - 'result type: %s is invalid' % result_type - - trace_name = _EscapePerfResult(trace) - - if (result_type == perf_result_data_type.UNIMPORTANT or - result_type == perf_result_data_type.DEFAULT or - result_type == perf_result_data_type.INFORMATIONAL): - assert isinstance(values, list) - assert '/' not in measurement - flattened_values = FlattenList(values) - assert len(flattened_values) - value, avg, sd = _MeanAndStdDevFromList(flattened_values) - output = '%s%s: %s%s%s %s' % ( - RESULT_TYPES[result_type], - _EscapePerfResult(measurement), - trace_name, - # Do not show equal sign if the trace is empty. Usually it happens when - # measurement is enough clear to describe the result. - '= ' if trace_name else '', - value, - units) - else: - assert perf_result_data_type.IsHistogram(result_type) - assert isinstance(values, list) - # The histograms can only be printed individually, there's no computation - # across different histograms. - assert len(values) == 1 - value = values[0] - output = '%s%s: %s= %s %s' % ( - RESULT_TYPES[result_type], - _EscapePerfResult(measurement), - trace_name, - value, - units) - avg, sd = GeomMeanAndStdDevFromHistogram(value) - - if avg: - output += '\nAvg %s: %f%s' % (measurement, avg, units) - if sd: - output += '\nSd %s: %f%s' % (measurement, sd, units) - if print_to_stdout: - print output - sys.stdout.flush() - return output - - -def ReportPerfResult(chart_data, graph_title, trace_title, value, units, - improvement_direction='down', important=True): - """Outputs test results in correct format. - - If chart_data is None, it outputs data in old format. If chart_data is a - dictionary, formats in chartjson format. If any other format defaults to - old format. - - Args: - chart_data: A dictionary corresponding to perf results in the chartjson - format. - graph_title: A string containing the name of the chart to add the result - to. - trace_title: A string containing the name of the trace within the chart - to add the result to. - value: The value of the result being reported. - units: The units of the value being reported. - improvement_direction: A string denoting whether higher or lower is - better for the result. Either 'up' or 'down'. - important: A boolean denoting whether the result is important or not. - """ - if chart_data and isinstance(chart_data, dict): - chart_data['charts'].setdefault(graph_title, {}) - chart_data['charts'][graph_title][trace_title] = { - 'type': 'scalar', - 'value': value, - 'units': units, - 'improvement_direction': improvement_direction, - 'important': important - } - else: - PrintPerfResult(graph_title, trace_title, [value], units)
diff --git a/build/util/lib/common/unittest_util.py b/build/util/lib/common/unittest_util.py deleted file mode 100644 index 9683ab7..0000000 --- a/build/util/lib/common/unittest_util.py +++ /dev/null
@@ -1,155 +0,0 @@ -# Copyright 2013 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. - -"""Utilities for dealing with the python unittest module.""" - -import fnmatch -import re -import sys -import unittest - - -class _TextTestResult(unittest._TextTestResult): - """A test result class that can print formatted text results to a stream. - - Results printed in conformance with gtest output format, like: - [ RUN ] autofill.AutofillTest.testAutofillInvalid: "test desc." - [ OK ] autofill.AutofillTest.testAutofillInvalid - [ RUN ] autofill.AutofillTest.testFillProfile: "test desc." - [ OK ] autofill.AutofillTest.testFillProfile - [ RUN ] autofill.AutofillTest.testFillProfileCrazyCharacters: "Test." - [ OK ] autofill.AutofillTest.testFillProfileCrazyCharacters - """ - def __init__(self, stream, descriptions, verbosity): - unittest._TextTestResult.__init__(self, stream, descriptions, verbosity) - self._fails = set() - - def _GetTestURI(self, test): - return '%s.%s.%s' % (test.__class__.__module__, - test.__class__.__name__, - test._testMethodName) - - def getDescription(self, test): - return '%s: "%s"' % (self._GetTestURI(test), test.shortDescription()) - - def startTest(self, test): - unittest.TestResult.startTest(self, test) - self.stream.writeln('[ RUN ] %s' % self.getDescription(test)) - - def addSuccess(self, test): - unittest.TestResult.addSuccess(self, test) - self.stream.writeln('[ OK ] %s' % self._GetTestURI(test)) - - def addError(self, test, err): - unittest.TestResult.addError(self, test, err) - self.stream.writeln('[ ERROR ] %s' % self._GetTestURI(test)) - self._fails.add(self._GetTestURI(test)) - - def addFailure(self, test, err): - unittest.TestResult.addFailure(self, test, err) - self.stream.writeln('[ FAILED ] %s' % self._GetTestURI(test)) - self._fails.add(self._GetTestURI(test)) - - def getRetestFilter(self): - return ':'.join(self._fails) - - -class TextTestRunner(unittest.TextTestRunner): - """Test Runner for displaying test results in textual format. - - Results are displayed in conformance with google test output. - """ - - def __init__(self, verbosity=1): - unittest.TextTestRunner.__init__(self, stream=sys.stderr, - verbosity=verbosity) - - def _makeResult(self): - return _TextTestResult(self.stream, self.descriptions, self.verbosity) - - -def GetTestsFromSuite(suite): - """Returns all the tests from a given test suite.""" - tests = [] - for x in suite: - if isinstance(x, unittest.TestSuite): - tests += GetTestsFromSuite(x) - else: - tests += [x] - return tests - - -def GetTestNamesFromSuite(suite): - """Returns a list of every test name in the given suite.""" - return map(lambda x: GetTestName(x), GetTestsFromSuite(suite)) - - -def GetTestName(test): - """Gets the test name of the given unittest test.""" - return '.'.join([test.__class__.__module__, - test.__class__.__name__, - test._testMethodName]) - - -def FilterTestSuite(suite, gtest_filter): - """Returns a new filtered tests suite based on the given gtest filter. - - See https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md - for gtest_filter specification. - """ - return unittest.TestSuite(FilterTests(GetTestsFromSuite(suite), gtest_filter)) - - -def FilterTests(all_tests, gtest_filter): - """Filter a list of tests based on the given gtest filter. - - Args: - all_tests: List of tests (unittest.TestSuite) - gtest_filter: Filter to apply. - - Returns: - Filtered subset of the given list of tests. - """ - test_names = [GetTestName(test) for test in all_tests] - filtered_names = FilterTestNames(test_names, gtest_filter) - return [test for test in all_tests if GetTestName(test) in filtered_names] - - -def FilterTestNames(all_tests, gtest_filter): - """Filter a list of test names based on the given gtest filter. - - See https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md - for gtest_filter specification. - - Args: - all_tests: List of test names. - gtest_filter: Filter to apply. - - Returns: - Filtered subset of the given list of test names. - """ - pattern_groups = gtest_filter.split('-') - positive_patterns = ['*'] - if pattern_groups[0]: - positive_patterns = pattern_groups[0].split(':') - negative_patterns = [] - if len(pattern_groups) > 1: - negative_patterns = pattern_groups[1].split(':') - - neg_pats = None - if negative_patterns: - neg_pats = re.compile('|'.join(fnmatch.translate(p) for p in - negative_patterns)) - - tests = [] - test_set = set() - for pattern in positive_patterns: - pattern_tests = [ - test for test in all_tests - if (fnmatch.fnmatch(test, pattern) - and not (neg_pats and neg_pats.match(test)) - and test not in test_set)] - tests.extend(pattern_tests) - test_set.update(pattern_tests) - return tests
diff --git a/build/util/lib/common/unittest_util_test.py b/build/util/lib/common/unittest_util_test.py deleted file mode 100755 index 1514c9b..0000000 --- a/build/util/lib/common/unittest_util_test.py +++ /dev/null
@@ -1,65 +0,0 @@ -#!/usr/bin/env python -# 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. - -# pylint: disable=protected-access - -import logging -import sys -import unittest -import unittest_util - - -class FilterTestNamesTest(unittest.TestCase): - - possible_list = ["Foo.One", - "Foo.Two", - "Foo.Three", - "Bar.One", - "Bar.Two", - "Bar.Three", - "Quux.One", - "Quux.Two", - "Quux.Three"] - - def testMatchAll(self): - x = unittest_util.FilterTestNames(self.possible_list, "*") - self.assertEquals(x, self.possible_list) - - def testMatchPartial(self): - x = unittest_util.FilterTestNames(self.possible_list, "Foo.*") - self.assertEquals(x, ["Foo.One", "Foo.Two", "Foo.Three"]) - - def testMatchFull(self): - x = unittest_util.FilterTestNames(self.possible_list, "Foo.Two") - self.assertEquals(x, ["Foo.Two"]) - - def testMatchTwo(self): - x = unittest_util.FilterTestNames(self.possible_list, "Bar.*:Foo.*") - self.assertEquals(x, ["Bar.One", - "Bar.Two", - "Bar.Three", - "Foo.One", - "Foo.Two", - "Foo.Three"]) - - def testMatchWithNegative(self): - x = unittest_util.FilterTestNames(self.possible_list, "Bar.*:Foo.*-*.Three") - self.assertEquals(x, ["Bar.One", - "Bar.Two", - "Foo.One", - "Foo.Two"]) - - def testMatchOverlapping(self): - x = unittest_util.FilterTestNames(self.possible_list, "Bar.*:*.Two") - self.assertEquals(x, ["Bar.One", - "Bar.Two", - "Bar.Three", - "Foo.Two", - "Quux.Two"]) - - -if __name__ == '__main__': - logging.getLogger().setLevel(logging.DEBUG) - unittest.main(verbosity=2)
diff --git a/build/util/lib/common/util.py b/build/util/lib/common/util.py deleted file mode 100644 index a415b1f..0000000 --- a/build/util/lib/common/util.py +++ /dev/null
@@ -1,151 +0,0 @@ -# Copyright 2013 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. - -"""Generic utilities for all python scripts.""" - -import atexit -import httplib -import os -import signal -import stat -import subprocess -import sys -import tempfile -import urlparse - - -def GetPlatformName(): - """Return a string to be used in paths for the platform.""" - if IsWindows(): - return 'win' - if IsMac(): - return 'mac' - if IsLinux(): - return 'linux' - raise NotImplementedError('Unknown platform "%s".' % sys.platform) - - -def IsWindows(): - return sys.platform == 'cygwin' or sys.platform.startswith('win') - - -def IsLinux(): - return sys.platform.startswith('linux') - - -def IsMac(): - return sys.platform.startswith('darwin') - - -def _DeleteDir(path): - """Deletes a directory recursively, which must exist.""" - # Don't use shutil.rmtree because it can't delete read-only files on Win. - for root, dirs, files in os.walk(path, topdown=False): - for name in files: - filename = os.path.join(root, name) - os.chmod(filename, stat.S_IWRITE) - os.remove(filename) - for name in dirs: - os.rmdir(os.path.join(root, name)) - os.rmdir(path) - - -def Delete(path): - """Deletes the given file or directory (recursively), which must exist.""" - if os.path.isdir(path): - _DeleteDir(path) - else: - os.remove(path) - - -def MaybeDelete(path): - """Deletes the given file or directory (recurisvely), if it exists.""" - if os.path.exists(path): - Delete(path) - - -def MakeTempDir(parent_dir=None): - """Creates a temporary directory and returns an absolute path to it. - - The temporary directory is automatically deleted when the python interpreter - exits normally. - - Args: - parent_dir: the directory to create the temp dir in. If None, the system - temp dir is used. - - Returns: - The absolute path to the temporary directory. - """ - path = tempfile.mkdtemp(dir=parent_dir) - atexit.register(MaybeDelete, path) - return path - - -def Unzip(zip_path, output_dir): - """Unzips the given zip file using a system installed unzip tool. - - Args: - zip_path: zip file to unzip. - output_dir: directory to unzip the contents of the zip file. The directory - must exist. - - Raises: - RuntimeError if the unzip operation fails. - """ - if IsWindows(): - unzip_cmd = ['C:\\Program Files\\7-Zip\\7z.exe', 'x', '-y'] - else: - unzip_cmd = ['unzip', '-o'] - unzip_cmd += [zip_path] - if RunCommand(unzip_cmd, output_dir) != 0: - raise RuntimeError('Unable to unzip %s to %s' % (zip_path, output_dir)) - - -def Kill(pid): - """Terminate the given pid.""" - if IsWindows(): - subprocess.call(['taskkill.exe', '/T', '/F', '/PID', str(pid)]) - else: - os.kill(pid, signal.SIGTERM) - - -def RunCommand(cmd, cwd=None): - """Runs the given command and returns the exit code. - - Args: - cmd: list of command arguments. - cwd: working directory to execute the command, or None if the current - working directory should be used. - - Returns: - The exit code of the command. - """ - process = subprocess.Popen(cmd, cwd=cwd) - process.wait() - return process.returncode - - -def DoesUrlExist(url): - """Determines whether a resource exists at the given URL. - - Args: - url: URL to be verified. - - Returns: - True if url exists, otherwise False. - """ - parsed = urlparse.urlparse(url) - try: - conn = httplib.HTTPConnection(parsed.netloc) - conn.request('HEAD', parsed.path) - response = conn.getresponse() - except (socket.gaierror, socket.error): - return False - finally: - conn.close() - # Follow both permanent (301) and temporary (302) redirects. - if response.status == 302 or response.status == 301: - return DoesUrlExist(response.getheader('location')) - return response.status == 200
diff --git a/build/util/process_version.gni b/build/util/process_version.gni deleted file mode 100644 index e27346e..0000000 --- a/build/util/process_version.gni +++ /dev/null
@@ -1,126 +0,0 @@ -# Copyright 2014 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. - -# Runs the version processing script over the given template file to produce -# an output file. This is used for generating various forms of files that -# incorporate the product name and version. -# -# Unlike GYP, this will actually compile the resulting file, so you don't need -# to add it separately to the sources, just depend on the target. -# -# In GYP this is a rule that runs once per ".ver" file. In GN this just -# processes one file per invocation of the template so you may have to have -# multiple targets. -# -# Parameters: -# sources (optional): -# List of file names to read. When converting a GYP target, this should -# list the 'source' (see above) as well as any extra_variable_files. -# The files will be passed to version.py in the order specified here. -# -# output: -# File name of file to write. In GYP this is unspecified and it will -# make up a file name for you based on the input name, and tack on -# "_version.rc" to the end. But in GN you need to specify the full name. -# -# template_file (optional): -# Template file to use (not a list). Most Windows users that want to use -# this to process a .rc template should use process_version_rc_template(), -# defined in //chrome/process_version_rc_template.gni, instead. -# -# extra_args (optional): -# Extra arguments to pass to version.py. Any "-f <filename>" args should -# use sources instead. -# -# process_only (optional, defaults to false) -# Set to generate only one action that processes the version file and -# doesn't attempt to link the result into a source set. This is for if -# you are processing the version as data only. -# -# visibility (optional) -# -# Example: -# process_version("myversion") { -# sources = [ -# "//chrome/VERSION" -# "myfile.h.in" -# ] -# output = "$target_gen_dir/myfile.h" -# extra_args = [ "-e", "FOO=42" ] -# } -template("process_version") { - assert(defined(invoker.output), "Output must be defined for $target_name") - - process_only = defined(invoker.process_only) && invoker.process_only - - if (process_only) { - action_name = target_name - } else { - action_name = target_name + "_action" - source_set_name = target_name - } - - action(action_name) { - script = "//build/util/version.py" - - inputs = [] - if (defined(invoker.inputs)) { - inputs += invoker.inputs - } - if (defined(invoker.template_file)) { - inputs += [ invoker.template_file ] - } - - outputs = [ - invoker.output, - ] - - args = [] - - if (is_official_build) { - args += [ "--official" ] - } - - if (defined(invoker.sources)) { - inputs += invoker.sources - foreach(i, invoker.sources) { - args += [ - "-f", - rebase_path(i, root_build_dir), - ] - } - } - - if (defined(invoker.extra_args)) { - args += invoker.extra_args - } - args += [ - "-o", - rebase_path(invoker.output, root_build_dir), - ] - if (defined(invoker.template_file)) { - args += [ rebase_path(invoker.template_file, root_build_dir) ] - } - - forward_variables_from(invoker, [ "deps" ]) - - if (process_only) { - # When processing only, visibility gets applied to this target. - forward_variables_from(invoker, [ "visibility" ]) - } else { - # When linking the result, only the source set can depend on the action. - visibility = [ ":$source_set_name" ] - } - } - - if (!process_only) { - source_set(source_set_name) { - forward_variables_from(invoker, [ "visibility" ]) - sources = get_target_outputs(":$action_name") - public_deps = [ - ":$action_name", - ] - } - } -}
diff --git a/build/util/version.gni b/build/util/version.gni deleted file mode 100644 index 01e3807..0000000 --- a/build/util/version.gni +++ /dev/null
@@ -1,59 +0,0 @@ -# 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. - -# This exposes the Chrome version as GN variables for use in build files. -# -# PREFER NOT TO USE THESE. The GYP build uses this kind of thing extensively. -# However, it is far better to write an action (or use the process_version -# wrapper in build/util/version.gni) to generate a file at build-time with the -# information you need. This allows better dependency checking and GN will -# run faster. -# -# These values should only be used if you REALLY need to depend on them at -# build-time, for example, in the computation of output file names. - -# Give version.py a pattern that will expand to a GN scope consisting of -# all values we need at once. -_version_dictionary_template = "full = \"@MAJOR@.@MINOR@.@BUILD@.@PATCH@\" " + - "major = \"@MAJOR@\" minor = \"@MINOR@\" " + - "build = \"@BUILD@\" patch = \"@PATCH@\" " - -# The file containing the Chrome version number. -chrome_version_file = "//chrome/VERSION" - -_result = exec_script("version.py", - [ - "-f", - rebase_path(chrome_version_file, root_build_dir), - "-t", - _version_dictionary_template, - ], - "scope", - [ chrome_version_file ]) - -# Full version. For example "45.0.12321.0" -chrome_version_full = _result.full - -# The consituent parts of the full version. -chrome_version_major = _result.major -chrome_version_minor = _result.minor -chrome_version_build = _result.build -chrome_version_patch = _result.patch - -if (is_mac) { - _result = exec_script("version.py", - [ - "-f", - rebase_path(chrome_version_file, root_build_dir), - "-t", - "@BUILD@.@PATCH_HI@.@PATCH_LO@", - "-e", - "PATCH_HI=int(PATCH)/256", - "-e", - "PATCH_LO=int(PATCH)%256", - ], - "trim string", - [ chrome_version_file ]) - chrome_dylib_version = _result -}
diff --git a/build/util/version.py b/build/util/version.py deleted file mode 100755 index 767412e..0000000 --- a/build/util/version.py +++ /dev/null
@@ -1,170 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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. - -""" -version.py -- Chromium version string substitution utility. -""" - -import argparse -import os -import sys - - -def fetch_values_from_file(values_dict, file_name): - """ - Fetches KEYWORD=VALUE settings from the specified file. - - Everything to the left of the first '=' is the keyword, - everything to the right is the value. No stripping of - white space, so beware. - - The file must exist, otherwise you get the Python exception from open(). - """ - for line in open(file_name, 'r').readlines(): - key, val = line.rstrip('\r\n').split('=', 1) - values_dict[key] = val - - -def fetch_values(file_list, is_official_build=None): - """ - Returns a dictionary of values to be used for substitution, populating - the dictionary with KEYWORD=VALUE settings from the files in 'file_list'. - - Explicitly adds the following value from internal calculations: - - OFFICIAL_BUILD - """ - CHROME_BUILD_TYPE = os.environ.get('CHROME_BUILD_TYPE') - if CHROME_BUILD_TYPE == '_official' or is_official_build: - official_build = '1' - else: - official_build = '0' - - values = dict( - OFFICIAL_BUILD = official_build, - ) - - for file_name in file_list: - fetch_values_from_file(values, file_name) - - return values - - -def subst_template(contents, values): - """ - Returns the template with substituted values from the specified dictionary. - - Keywords to be substituted are surrounded by '@': @KEYWORD@. - - No attempt is made to avoid recursive substitution. The order - of evaluation is random based on the order of the keywords returned - by the Python dictionary. So do NOT substitute a value that - contains any @KEYWORD@ strings expecting them to be recursively - substituted, okay? - """ - for key, val in values.iteritems(): - try: - contents = contents.replace('@' + key + '@', val) - except TypeError: - print repr(key), repr(val) - return contents - - -def subst_file(file_name, values): - """ - Returns the contents of the specified file_name with substituted - values from the specified dictionary. - - This is like subst_template, except it operates on a file. - """ - template = open(file_name, 'r').read() - return subst_template(template, values); - - -def write_if_changed(file_name, contents): - """ - Writes the specified contents to the specified file_name - iff the contents are different than the current contents. - """ - try: - old_contents = open(file_name, 'r').read() - except EnvironmentError: - pass - else: - if contents == old_contents: - return - os.unlink(file_name) - open(file_name, 'w').write(contents) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-f', '--file', action='append', default=[], - help='Read variables from FILE.') - parser.add_argument('-i', '--input', default=None, - help='Read strings to substitute from FILE.') - parser.add_argument('-o', '--output', default=None, - help='Write substituted strings to FILE.') - parser.add_argument('-t', '--template', default=None, - help='Use TEMPLATE as the strings to substitute.') - parser.add_argument('-e', '--eval', action='append', default=[], - help='Evaluate VAL after reading variables. Can be used ' - 'to synthesize variables. e.g. -e \'PATCH_HI=int(' - 'PATCH)/256.') - parser.add_argument('--official', action='store_true', - help='Whether the current build should be an official ' - 'build, used in addition to the environment ' - 'variable.') - parser.add_argument('args', nargs=argparse.REMAINDER, - help='For compatibility: INPUT and OUTPUT can be ' - 'passed as positional arguments.') - options = parser.parse_args() - - evals = {} - for expression in options.eval: - try: - evals.update(dict([expression.split('=', 1)])) - except ValueError: - parser.error('-e requires VAR=VAL') - - # Compatibility with old versions that considered the first two positional - # arguments shorthands for --input and --output. - while len(options.args) and (options.input is None or \ - options.output is None): - if options.input is None: - options.input = options.args.pop(0) - elif options.output is None: - options.output = options.args.pop(0) - if options.args: - parser.error('Unexpected arguments: %r' % options.args) - - values = fetch_values(options.file, options.official) - for key, val in evals.iteritems(): - values[key] = str(eval(val, globals(), values)) - - if options.template is not None: - contents = subst_template(options.template, values) - elif options.input: - contents = subst_file(options.input, values) - else: - # Generate a default set of version information. - contents = """MAJOR=%(MAJOR)s -MINOR=%(MINOR)s -BUILD=%(BUILD)s -PATCH=%(PATCH)s -LASTCHANGE=%(LASTCHANGE)s -OFFICIAL_BUILD=%(OFFICIAL_BUILD)s -""" % values - - if options.output is not None: - write_if_changed(options.output, contents) - else: - print contents - - return 0 - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/util/webkit_version.h.in b/build/util/webkit_version.h.in deleted file mode 100644 index 41960e7..0000000 --- a/build/util/webkit_version.h.in +++ /dev/null
@@ -1,9 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source is governed by a BSD-style license that can be -// found in the LICENSE file. - -// webkit_version.h is generated from webkit_version.h.in. Edit the source! - -#define WEBKIT_VERSION_MAJOR 537 -#define WEBKIT_VERSION_MINOR 36 -#define WEBKIT_SVN_REVISION "@@LASTCHANGE@"
diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py deleted file mode 100755 index 24a57b2..0000000 --- a/build/vs_toolchain.py +++ /dev/null
@@ -1,484 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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 glob -import json -import os -import pipes -import platform -import re -import shutil -import stat -import subprocess -import sys -from gn_helpers import ToGNString - - -script_dir = os.path.dirname(os.path.realpath(__file__)) -chrome_src = os.path.abspath(os.path.join(script_dir, os.pardir)) -SRC_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -sys.path.insert(0, os.path.join(chrome_src, 'tools', 'gyp', 'pylib')) -json_data_file = os.path.join(script_dir, 'win_toolchain.json') - - -# Use MSVS2017 as the default toolchain. -CURRENT_DEFAULT_TOOLCHAIN_VERSION = '2017' - - -def SetEnvironmentAndGetRuntimeDllDirs(): - """Sets up os.environ to use the depot_tools VS toolchain with gyp, and - returns the location of the VS runtime DLLs so they can be copied into - the output directory after gyp generation. - - Return value is [x64path, x86path] or None - """ - vs_runtime_dll_dirs = None - depot_tools_win_toolchain = \ - bool(int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', '1'))) - # When running on a non-Windows host, only do this if the SDK has explicitly - # been downloaded before (in which case json_data_file will exist). - if ((sys.platform in ('win32', 'cygwin') or os.path.exists(json_data_file)) - and depot_tools_win_toolchain): - if ShouldUpdateToolchain(): - update_result = Update() - if update_result != 0: - raise Exception('Failed to update, error code %d.' % update_result) - with open(json_data_file, 'r') as tempf: - toolchain_data = json.load(tempf) - - toolchain = toolchain_data['path'] - version = toolchain_data['version'] - win_sdk = toolchain_data.get('win_sdk') - if not win_sdk: - win_sdk = toolchain_data['win8sdk'] - wdk = toolchain_data['wdk'] - # TODO(scottmg): The order unfortunately matters in these. They should be - # split into separate keys for x86 and x64. (See CopyDlls call below). - # http://crbug.com/345992 - vs_runtime_dll_dirs = toolchain_data['runtime_dirs'] - - os.environ['GYP_MSVS_OVERRIDE_PATH'] = toolchain - os.environ['GYP_MSVS_VERSION'] = version - - # Limit the scope of the gyp import to only where it is used. This - # potentially lets build configs that never execute this block to drop - # their GYP checkout. - import gyp - - # We need to make sure windows_sdk_path is set to the automated - # toolchain values in GYP_DEFINES, but don't want to override any - # otheroptions.express - # values there. - gyp_defines_dict = gyp.NameValueListToDict(gyp.ShlexEnv('GYP_DEFINES')) - gyp_defines_dict['windows_sdk_path'] = win_sdk - os.environ['GYP_DEFINES'] = ' '.join('%s=%s' % (k, pipes.quote(str(v))) - for k, v in gyp_defines_dict.iteritems()) - - os.environ['WINDOWSSDKDIR'] = win_sdk - os.environ['WDK_DIR'] = wdk - # Include the VS runtime in the PATH in case it's not machine-installed. - runtime_path = os.path.pathsep.join(vs_runtime_dll_dirs) - os.environ['PATH'] = runtime_path + os.path.pathsep + os.environ['PATH'] - elif sys.platform == 'win32' and not depot_tools_win_toolchain: - if not 'GYP_MSVS_OVERRIDE_PATH' in os.environ: - os.environ['GYP_MSVS_OVERRIDE_PATH'] = DetectVisualStudioPath() - if not 'GYP_MSVS_VERSION' in os.environ: - os.environ['GYP_MSVS_VERSION'] = GetVisualStudioVersion() - - # When using an installed toolchain these files aren't needed in the output - # directory in order to run binaries locally, but they are needed in order - # to create isolates or the mini_installer. Copying them to the output - # directory ensures that they are available when needed. - bitness = platform.architecture()[0] - # When running 64-bit python the x64 DLLs will be in System32 - x64_path = 'System32' if bitness == '64bit' else 'Sysnative' - x64_path = os.path.join(os.path.expandvars('%windir%'), x64_path) - vs_runtime_dll_dirs = [x64_path, os.path.expandvars('%windir%/SysWOW64')] - - return vs_runtime_dll_dirs - - -def _RegistryGetValueUsingWinReg(key, value): - """Use the _winreg module to obtain the value of a registry key. - - Args: - key: The registry key. - value: The particular registry value to read. - Return: - contents of the registry key's value, or None on failure. Throws - ImportError if _winreg is unavailable. - """ - import _winreg - try: - root, subkey = key.split('\\', 1) - assert root == 'HKLM' # Only need HKLM for now. - with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, subkey) as hkey: - return _winreg.QueryValueEx(hkey, value)[0] - except WindowsError: - return None - - -def _RegistryGetValue(key, value): - try: - return _RegistryGetValueUsingWinReg(key, value) - except ImportError: - raise Exception('The python library _winreg not found.') - - -def GetVisualStudioVersion(): - """Return GYP_MSVS_VERSION of Visual Studio. - """ - return os.environ.get('GYP_MSVS_VERSION', CURRENT_DEFAULT_TOOLCHAIN_VERSION) - - -def DetectVisualStudioPath(): - """Return path to the GYP_MSVS_VERSION of Visual Studio. - """ - - # Note that this code is used from - # build/toolchain/win/setup_toolchain.py as well. - version_as_year = GetVisualStudioVersion() - year_to_version = { - '2017': '15.0', - } - if version_as_year not in year_to_version: - raise Exception(('Visual Studio version %s (from GYP_MSVS_VERSION)' - ' not supported. Supported versions are: %s') % ( - version_as_year, ', '.join(year_to_version.keys()))) - version = year_to_version[version_as_year] - if version_as_year == '2017': - # The VC++ 2017 install location needs to be located using COM instead of - # the registry. For details see: - # https://blogs.msdn.microsoft.com/heaths/2016/09/15/changes-to-visual-studio-15-setup/ - # For now we use a hardcoded default with an environment variable override. - for path in ( - os.environ.get('vs2017_install'), - os.path.expandvars('%ProgramFiles(x86)%' - '/Microsoft Visual Studio/2017/Enterprise'), - os.path.expandvars('%ProgramFiles(x86)%' - '/Microsoft Visual Studio/2017/Professional'), - os.path.expandvars('%ProgramFiles(x86)%' - '/Microsoft Visual Studio/2017/Community')): - if path and os.path.exists(path): - return path - - raise Exception(('Visual Studio Version %s (from GYP_MSVS_VERSION)' - ' not found.') % (version_as_year)) - - -def _CopyRuntimeImpl(target, source, verbose=True): - """Copy |source| to |target| if it doesn't already exist or if it needs to be - updated (comparing last modified time as an approximate float match as for - some reason the values tend to differ by ~1e-07 despite being copies of the - same file... https://crbug.com/603603). - """ - if (os.path.isdir(os.path.dirname(target)) and - (not os.path.isfile(target) or - abs(os.stat(target).st_mtime - os.stat(source).st_mtime) >= 0.01)): - if verbose: - print 'Copying %s to %s...' % (source, target) - if os.path.exists(target): - # Make the file writable so that we can delete it now, and keep it - # readable. - os.chmod(target, stat.S_IWRITE | stat.S_IREAD) - os.unlink(target) - shutil.copy2(source, target) - # Make the file writable so that we can overwrite or delete it later, - # keep it readable. - os.chmod(target, stat.S_IWRITE | stat.S_IREAD) - - -def _CopyUCRTRuntime(target_dir, source_dir, target_cpu, dll_pattern, suffix): - """Copy both the msvcp and vccorlib runtime DLLs, only if the target doesn't - exist, but the target directory does exist.""" - for file_part in ('msvcp', 'vccorlib', 'vcruntime'): - dll = dll_pattern % file_part - target = os.path.join(target_dir, dll) - source = os.path.join(source_dir, dll) - _CopyRuntimeImpl(target, source) - # Copy the UCRT files from the Windows SDK. This location includes the - # api-ms-win-crt-*.dll files that are not found in the Windows directory. - # These files are needed for component builds. If WINDOWSSDKDIR is not set - # use the default SDK path. This will be the case when - # DEPOT_TOOLS_WIN_TOOLCHAIN=0 and vcvarsall.bat has not been run. - win_sdk_dir = os.path.normpath( - os.environ.get('WINDOWSSDKDIR', - os.path.expandvars('%ProgramFiles(x86)%' - '\\Windows Kits\\10'))) - ucrt_dll_dirs = os.path.join(win_sdk_dir, 'Redist', 'ucrt', 'DLLs', - target_cpu) - ucrt_files = glob.glob(os.path.join(ucrt_dll_dirs, 'api-ms-win-*.dll')) - assert len(ucrt_files) > 0 - for ucrt_src_file in ucrt_files: - file_part = os.path.basename(ucrt_src_file) - ucrt_dst_file = os.path.join(target_dir, file_part) - _CopyRuntimeImpl(ucrt_dst_file, ucrt_src_file, False) - _CopyRuntimeImpl(os.path.join(target_dir, 'ucrtbase' + suffix), - os.path.join(source_dir, 'ucrtbase' + suffix)) - - -def FindVCToolsRoot(): - """In VS2017 the PGO runtime dependencies are located in - {toolchain_root}/VC/Tools/MSVC/{x.y.z}/bin/Host{target_cpu}/{target_cpu}/, the - {version_number} part is likely to change in case of a minor update of the - toolchain so we don't hardcode this value here (except for the major number). - - This returns the '{toolchain_root}/VC/Tools/MSVC/{x.y.z}/bin/' path. - - This function should only be called when using VS2017. - """ - assert GetVisualStudioVersion() == '2017' - SetEnvironmentAndGetRuntimeDllDirs() - assert ('GYP_MSVS_OVERRIDE_PATH' in os.environ) - vc_tools_msvc_root = os.path.join(os.environ['GYP_MSVS_OVERRIDE_PATH'], - 'VC', 'Tools', 'MSVC') - for directory in os.listdir(vc_tools_msvc_root): - if not os.path.isdir(os.path.join(vc_tools_msvc_root, directory)): - continue - if re.match('14\.\d+\.\d+', directory): - return os.path.join(vc_tools_msvc_root, directory, 'bin') - raise Exception('Unable to find the VC tools directory.') - - -def _CopyPGORuntime(target_dir, target_cpu): - """Copy the runtime dependencies required during a PGO build. - """ - env_version = GetVisualStudioVersion() - # These dependencies will be in a different location depending on the version - # of the toolchain. - if env_version == '2017': - pgo_runtime_root = FindVCToolsRoot() - assert pgo_runtime_root - # There's no version of pgosweep.exe in HostX64/x86, so we use the copy - # from HostX86/x86. - pgo_x86_runtime_dir = os.path.join(pgo_runtime_root, 'HostX86', 'x86') - pgo_x64_runtime_dir = os.path.join(pgo_runtime_root, 'HostX64', 'x64') - else: - raise Exception('Unexpected toolchain version: %s.' % env_version) - - # We need to copy 2 runtime dependencies used during the profiling step: - # - pgort140.dll: runtime library required to run the instrumented image. - # - pgosweep.exe: executable used to collect the profiling data - pgo_runtimes = ['pgort140.dll', 'pgosweep.exe'] - for runtime in pgo_runtimes: - if target_cpu == 'x86': - source = os.path.join(pgo_x86_runtime_dir, runtime) - elif target_cpu == 'x64': - source = os.path.join(pgo_x64_runtime_dir, runtime) - else: - raise NotImplementedError("Unexpected target_cpu value: " + target_cpu) - if not os.path.exists(source): - raise Exception('Unable to find %s.' % source) - _CopyRuntimeImpl(os.path.join(target_dir, runtime), source) - - -def _CopyRuntime(target_dir, source_dir, target_cpu, debug): - """Copy the VS runtime DLLs, only if the target doesn't exist, but the target - directory does exist. Handles VS 2015 and VS 2017.""" - suffix = "d.dll" if debug else ".dll" - # VS 2017 uses the same CRT DLLs as VS 2015. - _CopyUCRTRuntime(target_dir, source_dir, target_cpu, '%s140' + suffix, - suffix) - - -def CopyDlls(target_dir, configuration, target_cpu): - """Copy the VS runtime DLLs into the requested directory as needed. - - configuration is one of 'Debug' or 'Release'. - target_cpu is one of 'x86' or 'x64'. - - The debug configuration gets both the debug and release DLLs; the - release config only the latter. - """ - vs_runtime_dll_dirs = SetEnvironmentAndGetRuntimeDllDirs() - if not vs_runtime_dll_dirs: - return - - x64_runtime, x86_runtime = vs_runtime_dll_dirs - runtime_dir = x64_runtime if target_cpu == 'x64' else x86_runtime - _CopyRuntime(target_dir, runtime_dir, target_cpu, debug=False) - if configuration == 'Debug': - _CopyRuntime(target_dir, runtime_dir, target_cpu, debug=True) - else: - _CopyPGORuntime(target_dir, target_cpu) - - _CopyDebugger(target_dir, target_cpu) - - -def _CopyDebugger(target_dir, target_cpu): - """Copy dbghelp.dll and dbgcore.dll into the requested directory as needed. - - target_cpu is one of 'x86' or 'x64'. - - dbghelp.dll is used when Chrome needs to symbolize stacks. Copying this file - from the SDK directory avoids using the system copy of dbghelp.dll which then - ensures compatibility with recent debug information formats, such as VS - 2017 /debug:fastlink PDBs. - - dbgcore.dll is needed when using some functions from dbghelp.dll (like - MinidumpWriteDump). - """ - win_sdk_dir = SetEnvironmentAndGetSDKDir() - if not win_sdk_dir: - return - - # List of debug files that should be copied, the first element of the tuple is - # the name of the file and the second indicates if it's optional. - debug_files = [('dbghelp.dll', False), ('dbgcore.dll', True)] - for debug_file, is_optional in debug_files: - full_path = os.path.join(win_sdk_dir, 'Debuggers', target_cpu, debug_file) - if not os.path.exists(full_path): - if is_optional: - continue - else: - # TODO(crbug.com/773476): remove version requirement. - raise Exception('%s not found in "%s"\r\nYou must install the ' - '"Debugging Tools for Windows" feature from the Windows' - ' 10 SDK. You must use v10.0.17134.0. of the SDK' - % (debug_file, full_path)) - target_path = os.path.join(target_dir, debug_file) - _CopyRuntimeImpl(target_path, full_path) - - -def _GetDesiredVsToolchainHashes(): - """Load a list of SHA1s corresponding to the toolchains that we want installed - to build with.""" - env_version = GetVisualStudioVersion() - if env_version == '2017': - # VS 2017 Update 7.1 (15.7.1) with 10.0.17134.12 SDK. - toolchain_hash = '5454e45bf3764c03d3fc1024b3bf5bc41e3ab62c' - # Third parties that do not have access to the canonical toolchain can map - # canonical toolchain version to their own toolchain versions. - toolchain_hash_mapping_key = 'GYP_MSVS_HASH_%s' % toolchain_hash - return [os.environ.get(toolchain_hash_mapping_key, toolchain_hash)] - raise Exception('Unsupported VS version %s' % env_version) - - -def ShouldUpdateToolchain(): - """Check if the toolchain should be upgraded.""" - if not os.path.exists(json_data_file): - return True - with open(json_data_file, 'r') as tempf: - toolchain_data = json.load(tempf) - version = toolchain_data['version'] - env_version = GetVisualStudioVersion() - # If there's a mismatch between the version set in the environment and the one - # in the json file then the toolchain should be updated. - return version != env_version - - -def Update(force=False): - """Requests an update of the toolchain to the specific hashes we have at - this revision. The update outputs a .json of the various configuration - information required to pass to gyp which we use in |GetToolchainDir()|. - """ - if force != False and force != '--force': - print >>sys.stderr, 'Unknown parameter "%s"' % force - return 1 - if force == '--force' or os.path.exists(json_data_file): - force = True - - depot_tools_win_toolchain = \ - bool(int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', '1'))) - if ((sys.platform in ('win32', 'cygwin') or force) and - depot_tools_win_toolchain): - import find_depot_tools - depot_tools_path = find_depot_tools.add_depot_tools_to_path() - - # On Linux, the file system is usually case-sensitive while the Windows - # SDK only works on case-insensitive file systems. If it doesn't already - # exist, set up a ciopfs fuse mount to put the SDK in a case-insensitive - # part of the file system. - toolchain_dir = os.path.join(depot_tools_path, 'win_toolchain', 'vs_files') - # For testing this block, unmount existing mounts with - # fusermount -u third_party/depot_tools/win_toolchain/vs_files - if sys.platform.startswith('linux') and not os.path.ismount(toolchain_dir): - import distutils.spawn - ciopfs = distutils.spawn.find_executable('ciopfs') - if not ciopfs: - # ciopfs not found in PATH; try the one downloaded from the DEPS hook. - ciopfs = os.path.join(script_dir, 'ciopfs') - if not os.path.isdir(toolchain_dir): - os.mkdir(toolchain_dir) - if not os.path.isdir(toolchain_dir + '.ciopfs'): - os.mkdir(toolchain_dir + '.ciopfs') - # Without use_ino, clang's #pragma once and Wnonportable-include-path - # both don't work right, see https://llvm.org/PR34931 - # use_ino doesn't slow down builds, so it seems there's no drawback to - # just using it always. - subprocess.check_call([ - ciopfs, '-o', 'use_ino', toolchain_dir + '.ciopfs', toolchain_dir]) - - # Necessary so that get_toolchain_if_necessary.py will put the VS toolkit - # in the correct directory. - os.environ['GYP_MSVS_VERSION'] = GetVisualStudioVersion() - get_toolchain_args = [ - sys.executable, - os.path.join(depot_tools_path, - 'win_toolchain', - 'get_toolchain_if_necessary.py'), - '--output-json', json_data_file, - ] + _GetDesiredVsToolchainHashes() - if force: - get_toolchain_args.append('--force') - subprocess.check_call(get_toolchain_args) - - return 0 - - -def NormalizePath(path): - while path.endswith("\\"): - path = path[:-1] - return path - - -def SetEnvironmentAndGetSDKDir(): - """Gets location information about the current sdk (must have been - previously updated by 'update'). This is used for the GN build.""" - SetEnvironmentAndGetRuntimeDllDirs() - - # If WINDOWSSDKDIR is not set, search the default SDK path and set it. - if not 'WINDOWSSDKDIR' in os.environ: - default_sdk_path = os.path.expandvars('%ProgramFiles(x86)%' - '\\Windows Kits\\10') - if os.path.isdir(default_sdk_path): - os.environ['WINDOWSSDKDIR'] = default_sdk_path - - return NormalizePath(os.environ['WINDOWSSDKDIR']) - - -def GetToolchainDir(): - """Gets location information about the current toolchain (must have been - previously updated by 'update'). This is used for the GN build.""" - runtime_dll_dirs = SetEnvironmentAndGetRuntimeDllDirs() - win_sdk_dir = SetEnvironmentAndGetSDKDir() - - print '''vs_path = %s -sdk_path = %s -vs_version = %s -wdk_dir = %s -runtime_dirs = %s -''' % ( - ToGNString(NormalizePath(os.environ['GYP_MSVS_OVERRIDE_PATH'])), - ToGNString(win_sdk_dir), - ToGNString(GetVisualStudioVersion()), - ToGNString(NormalizePath(os.environ.get('WDK_DIR', ''))), - ToGNString(os.path.pathsep.join(runtime_dll_dirs or ['None']))) - - -def main(): - commands = { - 'update': Update, - 'get_toolchain_dir': GetToolchainDir, - 'copy_dlls': CopyDlls, - } - if len(sys.argv) < 2 or sys.argv[1] not in commands: - print >>sys.stderr, 'Expected one of: %s' % ', '.join(commands) - return 1 - return commands[sys.argv[1]](*sys.argv[2:]) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt deleted file mode 100644 index bd3bd32..0000000 --- a/build/whitespace_file.txt +++ /dev/null
@@ -1,175 +0,0 @@ -Copyright 2014 The Chromium Authors. All rights reserved. -Use of this useless file is governed by a BSD-style license that can be -found in the LICENSE file. - - -This file is used for making non-code changes to trigger buildbot cycles. Make -any modification below this line. - -====================================================================== - -Let's make a story. Add zero+ sentences for every commit: - -CHÄPTER 1: -It was a dark and blinky night; the rain fell in torrents -- except at -occasional intervals, when it was checked by a violent gust of wind which -swept up the streets (for it is in London that our scene lies), rattling along -the housetops, and fiercely agitating the scanty flame of the lamps that -struggled against the elements. A hooded figure emerged. - -It was a Domo-Kun. - -"What took you so long?", inquired his wife. - -Silence. Oblivious to his silence, she continued, "Did Mr. Usagi enjoy the -waffles you brought him?" "You know him, he's not one to forego a waffle, -no matter how burnt," he snickered. - -The pause was filled with the sound of compile errors. - -CHAPTER 2: -The jelly was as dark as night, and just as runny. -The Domo-Kun shuddered, remembering the way Mr. Usagi had speared his waffles -with his fork, watching the runny jelly spread and pool across his plate, -like the blood of a dying fawn. "It reminds me of that time --" he started, as -his wife cut in quickly: "-- please. I can't bear to hear it.". A flury of -images coming from the past flowed through his mind. - -"You recall what happened on Mulholland drive?" The ceiling fan rotated slowly -overhead, barely disturbing the thick cigarette smoke. No doubt was left about -when the fan was last cleaned. - -There was a poignant pause. - -CHAPTER 3: -Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he -began feeling sick. He thought out loud to himself, "No, he wouldn't have done -that to me." He considered that perhaps he shouldn't have pushed so hard. -Perhaps he shouldn't have been so cold and sarcastic, after the unimaginable -horror that had occurred just the week before. - -Next time, there won't be any sushi. Why sushi with waffles anyway? It's like -adorning breakfast cereal with halibut -- shameful. - -CHAPTER 4: -The taste of stale sushi in his mouth the next morning was unbearable. He -wondered where the sushi came from as he attempted to wash the taste away with -a bottle of 3000¥ sake. He tries to recall the cook's face. Green? Probably. - -CHAPTER 5: -Many tears later, Mr. Usagi would laugh at the memory of the earnest, -well-intentioned Domo-Kun. Another day in the life. That is when he realized that -life goes on. - -$CHAPTER6 - -TRUISMS (1978-1983) -JENNY HOLZER -A LITTLE KNOWLEDGE CAN GO A LONG WAY -A LOT OF PROFESSIONALS ARE CRACKPOTS -A MAN CAN'T KNOW WHAT IT IS TO BE A MOTHER -A NAME MEANS A LOT JUST BY ITSELF -A POSITIVE ATTITUDE MEANS ALL THE DIFFERENCE IN THE WORLD -A RELAXED MAN IS NOT NECESSARILY A BETTER MAN -NO ONE SHOULD EVER USE SVN -AN INFLEXIBLE POSITION SOMETIMES IS A SIGN OF PARALYSIS -IT IS MANS FATE TO OUTSMART HIMSELF -BEING SURE OF YOURSELF MEANS YOU'RE A FOOL -AM NOT -ARE TOO -IF AT FIRST YOU DON'T SUCCEED: TRY, EXCEPT, FINALLY -AND THEN, TIME LEAPT BACKWARDS -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhh LOT -I'm really tempted to change something above the line. -Reeccciiiipppppeeeeeesssssss!!!!!!!!! -PEOPLE SAY "FAILURE IS NOT AN OPTION", BUT FAILURE IS ALWAYS AN OPTION. -WHAT GOES UP MUST HAVE A NON-ZERO VELOCITY - -I can feel the heat closing in, feel them out there making their moves... -What could possibly go wrong? We've already ate our cake. - -Stand Still. Pause Clocks. We can make the World Stop. -WUBWUBWUBWUBWUB - -I want a 1917 build and you will give me what I want. - -This sentence is false. - -Beauty is in the eyes of a Beholder. - -I'm the best at space. - -The first time Yossarian saw the chaplain, he fell madly in love with him. -* -* -* -Give not thyself up, then, to fire, lest it invert thee, deaden thee; as for -the time it did me. There is a wisdom that is woe; but there is a woe that is -madness. And there is a Catskill eagle in some souls that can alike dive down -into the blackest gorges, and soar out of them again and become invisible in -the sunny spaces. And even if he for ever flies within the gorge, that gorge -is in the mountains; so that even in his lowest swoop the mountain eagle is -still higher than other birds upon the plain, even though they soar. -* -* -* - -I'm here to commit lines and drop rhymes -* -This is a line to test and try uploading a cl. - -And lo, in the year 2014, there was verily an attempt to upgrade to GCC 4.8 on -the Android bots, and it was good. Except on one bot, where it was bad. And -lo, the change was reverted, and GCC went back to 4.6, where code is slower -and less optimized. And verily did it break the build, because artifacts had -been created with 4.8, and alignment was no longer the same, and a great -sadness descended upon the Android GN buildbot, and it did refuseth to build -any more. But the sheriffs thought to themselves: Placebo! Let us clobber the -bot, and perhaps it will rebuild with GCC 4.6, which hath worked for many many -seasons. And so they modified the whitespace file with these immortal lines, -and visited it upon the bots, that great destruction might be wrought upon -their outdated binaries. In clobberus, veritas. - -As the git approaches, light begins to shine through the SCM thrice again... -However, the git, is, after all, quite stupid. - -Suddenly Domo-Kun found itself in a room filled with dazzling mirrors. As -Domo-Kun looked around, it realized that some of the mirrors were actually but -pale reflections of true reality. - -A herd of wild gits appears! Time for CQ :D -And one more for sizes.py... - -What's an overmarketed dietary supplement expressing sadness, relief, -tiredness, or a similar feeling.? Ah-Sigh-ee. - -It was love at first sight. The moment Yossarian first laid eyes on the chaplain, he fell madly in love with him. - -Cool whitespace change for git-cl land - -Oh god the bots are red! I'm blind! Mmmm, cronuts. - -If you stand on your head, you will get footprints in your hair. - -sigh -sigher -pick up cls - -In the BUILD we trust. -^_^ - -In the masters we don't. -In the tryservers, we don't either. -In the CQ sometimes. -Auto-generated by git-eject-upstream (http://goo.gl/cIHsYR) -My sandwiches are like my children: I love them all. -No, really, I couldn't eat another bit. -When I hunger I think of you, and a pastrami sandwich. -Do make a terrible mistake every once in a while. -I just made two. -Mistakes are the best sometimes. -\o/ -This is groovy. - -SECRET ENDING: IT WAS _____ ALL ALONG! -testing trailing line
diff --git a/build/win/BUILD.gn b/build/win/BUILD.gn deleted file mode 100644 index 320ee7a..0000000 --- a/build/win/BUILD.gn +++ /dev/null
@@ -1,153 +0,0 @@ -# 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/config/clang/clang.gni") -import("//build/config/sanitizers/sanitizers.gni") -import("//build/config/win/manifest.gni") - -# Depending on this target will cause the manifests for Chrome's default -# Windows and common control compatibility and elevation for executables. -windows_manifest("default_exe_manifest") { - sources = [ - as_invoker_manifest, - common_controls_manifest, - default_compatibility_manifest, - ] -} - -if (is_win) { - action("copy_cdb_to_output") { - script = "//build/win/copy_cdb_to_output.py" - inputs = [ - script, - ] - outputs = [ - "$root_out_dir/cdb/cdb.exe", - "$root_out_dir/cdb/dbgeng.dll", - "$root_out_dir/cdb/dbghelp.dll", - "$root_out_dir/cdb/dbgmodel.dll", - "$root_out_dir/cdb/winext/ext.dll", - "$root_out_dir/cdb/winext/uext.dll", - "$root_out_dir/cdb/winxp/exts.dll", - "$root_out_dir/cdb/winxp/ntsdexts.dll", - "$root_out_dir/cdb/api-ms-win-core-console-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-datetime-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-debug-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-errorhandling-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-file-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-file-l1-2-0.dll", - "$root_out_dir/cdb/api-ms-win-core-file-l2-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-handle-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-heap-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-interlocked-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-libraryloader-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-localization-l1-2-0.dll", - "$root_out_dir/cdb/api-ms-win-core-memory-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-namedpipe-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-processenvironment-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-processthreads-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-processthreads-l1-1-1.dll", - "$root_out_dir/cdb/api-ms-win-core-profile-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-rtlsupport-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-string-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-synch-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-synch-l1-2-0.dll", - "$root_out_dir/cdb/api-ms-win-core-sysinfo-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-timezone-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-core-util-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-conio-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-convert-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-environment-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-filesystem-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-heap-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-locale-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-math-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-multibyte-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-private-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-process-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-runtime-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-stdio-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-string-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-time-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-crt-utility-l1-1-0.dll", - "$root_out_dir/cdb/api-ms-win-eventing-provider-l1-1-0.dll", - "$root_out_dir/cdb/ucrtbase.dll", - ] - args = [ - rebase_path("$root_out_dir/cdb", root_out_dir), - current_cpu, - ] - } - - group("runtime_libs") { - if (is_component_build) { - # Copy the VS runtime DLLs into the isolate so that they don't have to be - # preinstalled on the target machine. The debug runtimes have a "d" at - # the end. - if (is_debug) { - vcrt_suffix = "d" - } else { - vcrt_suffix = "" - } - - # These runtime files are copied to the output directory by the - # vs_toolchain script that runs as part of toolchain configuration. - data = [ - "$root_out_dir/msvcp140${vcrt_suffix}.dll", - "$root_out_dir/vccorlib140${vcrt_suffix}.dll", - "$root_out_dir/vcruntime140${vcrt_suffix}.dll", - - # Universal Windows 10 CRT files - "$root_out_dir/api-ms-win-core-console-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-datetime-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-debug-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-errorhandling-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-file-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-file-l1-2-0.dll", - "$root_out_dir/api-ms-win-core-file-l2-1-0.dll", - "$root_out_dir/api-ms-win-core-handle-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-heap-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-interlocked-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-libraryloader-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-localization-l1-2-0.dll", - "$root_out_dir/api-ms-win-core-memory-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-namedpipe-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-processenvironment-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-processthreads-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-processthreads-l1-1-1.dll", - "$root_out_dir/api-ms-win-core-profile-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-rtlsupport-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-string-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-synch-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-synch-l1-2-0.dll", - "$root_out_dir/api-ms-win-core-sysinfo-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-timezone-l1-1-0.dll", - "$root_out_dir/api-ms-win-core-util-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-conio-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-convert-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-environment-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-filesystem-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-heap-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-locale-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-math-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-multibyte-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-private-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-process-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-runtime-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-stdio-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll", - "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll", - "$root_out_dir/ucrtbase${vcrt_suffix}.dll", - ] - if (is_asan) { - if (current_cpu == "x64") { - data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll" ] - } else { - data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll" ] - } - } - } - } -}
diff --git a/build/win/as_invoker.manifest b/build/win/as_invoker.manifest deleted file mode 100644 index df046fd..0000000 --- a/build/win/as_invoker.manifest +++ /dev/null
@@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> -<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> - <security> - <requestedPrivileges> - <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> - </requestedPrivileges> - </security> -</trustInfo></assembly>
diff --git a/build/win/chrome_win.croc b/build/win/chrome_win.croc deleted file mode 100644 index e1e3bb7..0000000 --- a/build/win/chrome_win.croc +++ /dev/null
@@ -1,26 +0,0 @@ -# -*- python -*- -# Crocodile config file for Chromium windows - -{ - # List of rules, applied in order - 'rules' : [ - # Specify inclusions before exclusions, since rules are in order. - - # Don't include chromeos, posix, or linux specific files - { - 'regexp' : '.*(_|/)(chromeos|linux|posix)(\\.|_)', - 'include' : 0, - }, - # Don't include ChromeOS dirs - { - 'regexp' : '.*/chromeos/', - 'include' : 0, - }, - - # Groups - { - 'regexp' : '.*_test_win\\.', - 'group' : 'test', - }, - ], -}
diff --git a/build/win/common_controls.manifest b/build/win/common_controls.manifest deleted file mode 100644 index 1710196..0000000 --- a/build/win/common_controls.manifest +++ /dev/null
@@ -1,8 +0,0 @@ -<?xml version='1.0' encoding='UTF-8' standalone='yes'?> -<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> - <dependency> - <dependentAssembly> - <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*' /> - </dependentAssembly> - </dependency> -</assembly>
diff --git a/build/win/compatibility.manifest b/build/win/compatibility.manifest deleted file mode 100644 index 10d10da..0000000 --- a/build/win/compatibility.manifest +++ /dev/null
@@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> - <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> - <application> - <!--The ID below indicates application support for Windows Vista --> - <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> - <!--The ID below indicates application support for Windows 7 --> - <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> - <!--The ID below indicates application support for Windows 8 --> - <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> - <!--The ID below indicates application support for Windows 8.1 --> - <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> - <!--The ID below indicates application support for Windows 10 --> - <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> - </application> - </compatibility> -</assembly>
diff --git a/build/win/copy_cdb_to_output.py b/build/win/copy_cdb_to_output.py deleted file mode 100755 index 46d4294..0000000 --- a/build/win/copy_cdb_to_output.py +++ /dev/null
@@ -1,111 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 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 glob -import hashlib -import os -import shutil -import sys - -script_dir = os.path.dirname(os.path.realpath(__file__)) -src_build_dir = os.path.abspath(os.path.join(script_dir, os.pardir)) -sys.path.insert(0, src_build_dir) - -import vs_toolchain - - -def _HexDigest(file_name): - hasher = hashlib.sha256() - afile = open(file_name, 'rb') - blocksize = 65536 - buf = afile.read(blocksize) - while len(buf) > 0: - hasher.update(buf) - buf = afile.read(blocksize) - afile.close() - return hasher.hexdigest() - - -def _CopyImpl(file_name, target_dir, source_dir, verbose=False): - """Copy |source| to |target| if it doesn't already exist or if it - needs to be updated. - """ - target = os.path.join(target_dir, file_name) - source = os.path.join(source_dir, file_name) - if (os.path.isdir(os.path.dirname(target)) and - ((not os.path.isfile(target)) or - _HexDigest(source) != _HexDigest(target))): - if verbose: - print 'Copying %s to %s...' % (source, target) - if os.path.exists(target): - os.unlink(target) - shutil.copy(source, target) - - -def _ConditionalMkdir(output_dir): - if not os.path.isdir(output_dir): - os.makedirs(output_dir) - - -def _CopyCDBToOutput(output_dir, target_arch): - """Copies the Windows debugging executable cdb.exe to the output - directory, which is created if it does not exist. The output - directory, and target architecture that should be copied, are - passed. Supported values for the target architecture are the GYP - values "ia32" and "x64" and the GN values "x86" and "x64". - """ - _ConditionalMkdir(output_dir) - vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs() - # If WINDOWSSDKDIR is not set use the default SDK path. This will be the case - # when DEPOT_TOOLS_WIN_TOOLCHAIN=0 and vcvarsall.bat has not been run. - win_sdk_dir = os.path.normpath( - os.environ.get('WINDOWSSDKDIR', - os.path.expandvars('%ProgramFiles(x86)%' - '\\Windows Kits\\10'))) - if target_arch == 'ia32' or target_arch == 'x86': - src_arch = 'x86' - elif target_arch == 'x64': - src_arch = 'x64' - else: - print 'copy_cdb_to_output.py: unknown target_arch %s' % target_arch - sys.exit(1) - # We need to copy multiple files, so cache the computed source directory. - src_dir = os.path.join(win_sdk_dir, 'Debuggers', src_arch) - # We need to copy some helper DLLs to get access to the !uniqstack - # command to dump all threads' stacks. - src_winext_dir = os.path.join(src_dir, 'winext') - dst_winext_dir = os.path.join(output_dir, 'winext') - src_winxp_dir = os.path.join(src_dir, 'winxp') - dst_winxp_dir = os.path.join(output_dir, 'winxp') - src_crt_dir = os.path.join(win_sdk_dir, 'Redist', 'ucrt', 'DLLs', src_arch) - _ConditionalMkdir(dst_winext_dir) - _ConditionalMkdir(dst_winxp_dir) - # Note that the outputs from the "copy_cdb_to_output" target need to - # be kept in sync with this list. - _CopyImpl('cdb.exe', output_dir, src_dir) - _CopyImpl('dbgeng.dll', output_dir, src_dir) - _CopyImpl('dbghelp.dll', output_dir, src_dir) - _CopyImpl('dbgmodel.dll', output_dir, src_dir) - _CopyImpl('ext.dll', dst_winext_dir, src_winext_dir) - _CopyImpl('uext.dll', dst_winext_dir, src_winext_dir) - _CopyImpl('exts.dll', dst_winxp_dir, src_winxp_dir) - _CopyImpl('ntsdexts.dll', dst_winxp_dir, src_winxp_dir) - _CopyImpl('api-ms-win-eventing-provider-l1-1-0.dll', output_dir, src_dir) - for dll_path in glob.glob(os.path.join(src_crt_dir, 'api-ms-win-*.dll')): - _CopyImpl(os.path.split(dll_path)[1], output_dir, src_crt_dir) - _CopyImpl('ucrtbase.dll', output_dir, src_crt_dir) - return 0 - - -def main(): - if len(sys.argv) < 2: - print >>sys.stderr, 'Usage: copy_cdb_to_output.py <output_dir> ' + \ - '<target_arch>' - return 1 - return _CopyCDBToOutput(sys.argv[1], sys.argv[2]) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/win/gn_meta_sln.py b/build/win/gn_meta_sln.py deleted file mode 100644 index 9f72eda..0000000 --- a/build/win/gn_meta_sln.py +++ /dev/null
@@ -1,212 +0,0 @@ -# Copyright 2017 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. -# -# gn_meta_sln.py -# Helper utility to combine GN-generated Visual Studio projects into -# a single meta-solution. - -import os -import glob -import re -import sys -from shutil import copyfile - -# Helpers -def EnsureExists(path): - try: - os.makedirs(path) - except OSError: - pass - -def WriteLinesToFile(lines, file_name): - EnsureExists(os.path.dirname(file_name)) - with open(file_name, "w") as f: - f.writelines(lines) - -def ExtractIdg(proj_file_name): - result = [] - with open(proj_file_name) as proj_file: - lines = iter(proj_file) - for p_line in lines: - if "<ItemDefinitionGroup" in p_line: - while not "</ItemDefinitionGroup" in p_line: - result.append(p_line) - p_line = lines.next() - result.append(p_line) - return result - -# [ (name, solution_name, vs_version), ... ] -configs = [] - -def GetVSVersion(solution_file): - with open(solution_file) as f: - f.readline() - comment = f.readline().strip() - return comment[-4:] - -# Find all directories that can be used as configs (and record if they have VS -# files present) -for root, dirs, files in os.walk("out"): - for out_dir in dirs: - gn_file = os.path.join("out", out_dir, "build.ninja.d") - if os.path.exists(gn_file): - solutions = glob.glob(os.path.join("out", out_dir, "*.sln")) - for solution in solutions: - vs_version = GetVSVersion(solution) - configs.append((out_dir, os.path.basename(solution), - vs_version)) - break - -# Every project has a GUID that encodes the type. We only care about C++. -cpp_type_guid = "8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942" - -# Work around MSBuild limitations by always using a fixed arch. -hard_coded_arch = "x64" - -# name -> [ (config, pathToProject, GUID, arch), ... ] -all_projects = {} -project_pattern = (r'Project\("\{' + cpp_type_guid + - r'\}"\) = "([^"]*)", "([^"]*)", "\{([^\}]*)\}"') - -# We need something to work with. Typically, this will fail if no GN folders -# have IDE files -if len(configs) == 0: - print("ERROR: At least one GN directory must have been built with --ide=vs") - sys.exit() - -# Filter out configs which don't match the name and vs version of the first. -name = configs[0][1] -vs_version = configs[0][2] - -for config in configs: - if config[1] != name or config[2] != vs_version: - continue - - sln_lines = iter(open(os.path.join("out", config[0], config[1]))) - for sln_line in sln_lines: - match_obj = re.match(project_pattern, sln_line) - if match_obj: - proj_name = match_obj.group(1) - if not all_projects.has_key(proj_name): - all_projects[proj_name] = [] - all_projects[proj_name].append((config[0], match_obj.group(2), - match_obj.group(3))) - -# We need something to work with. Typically, this will fail if no GN folders -# have IDE files -if len(all_projects) == 0: - print("ERROR: At least one GN directory must have been built with --ide=vs") - sys.exit() - -# Create a new solution. We arbitrarily use the first config as the GUID source -# (but we need to match that behavior later, when we copy/generate the project -# files). -new_sln_lines = [] -new_sln_lines.append( - 'Microsoft Visual Studio Solution File, Format Version 12.00\n') -new_sln_lines.append('# Visual Studio ' + vs_version + '\n') -for proj_name, proj_configs in all_projects.items(): - new_sln_lines.append('Project("{' + cpp_type_guid + '}") = "' + proj_name + - '", "' + proj_configs[0][1] + '", "{' + - proj_configs[0][2] + '}"\n') - new_sln_lines.append('EndProject\n') - -new_sln_lines.append('Global\n') -new_sln_lines.append( - '\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n') -for config in configs: - match = config[0] + '|' + hard_coded_arch - new_sln_lines.append('\t\t' + match + ' = ' + match + '\n') -new_sln_lines.append('\tEndGlobalSection\n') -new_sln_lines.append( - '\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n') -for proj_name, proj_configs in all_projects.items(): - proj_guid = proj_configs[0][2] - for config in configs: - match = config[0] + '|' + hard_coded_arch - new_sln_lines.append('\t\t{' + proj_guid + '}.' + match + - '.ActiveCfg = ' + match + '\n') - new_sln_lines.append('\t\t{' + proj_guid + '}.' + match + - '.Build.0 = ' + match + '\n') -new_sln_lines.append('\tEndGlobalSection\n') -new_sln_lines.append('\tGlobalSection(SolutionProperties) = preSolution\n') -new_sln_lines.append('\t\tHideSolutionNode = FALSE\n') -new_sln_lines.append('\tEndGlobalSection\n') -new_sln_lines.append('\tGlobalSection(NestedProjects) = preSolution\n') -new_sln_lines.append('\tEndGlobalSection\n') -new_sln_lines.append('EndGlobal\n') - -# Write solution file -WriteLinesToFile(new_sln_lines, 'out/sln/' + name) - -idg_hdr = "<ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='" - -configuration_template = """ <ProjectConfiguration Include="{config}|{arch}"> - <Configuration>{config}</Configuration> - <Platform>{arch}</Platform> - </ProjectConfiguration> -""" - -def FormatProjectConfig(config): - return configuration_template.format( - config = config[0], arch = hard_coded_arch) - -# Now, bring over the project files -for proj_name, proj_configs in all_projects.items(): - # Paths to project and filter file in src and dst locations - src_proj_path = os.path.join("out", proj_configs[0][0], proj_configs[0][1]) - dst_proj_path = os.path.join("out", "sln", proj_configs[0][1]) - src_filter_path = src_proj_path + ".filters" - dst_filter_path = dst_proj_path + ".filters" - - # Copy the filter file unmodified - EnsureExists(os.path.dirname(dst_proj_path)) - copyfile(src_filter_path, dst_filter_path) - - preferred_tool_arch = None - config_arch = {} - - # Bring over the project file, modified with extra configs - with open(src_proj_path) as src_proj_file: - proj_lines = iter(src_proj_file) - new_proj_lines = [] - for line in proj_lines: - if "<ItemDefinitionGroup" in line: - # This is a large group that contains many settings. We need to - # replicate it, with conditions so it varies per configuration. - idg_lines = [] - while not "</ItemDefinitionGroup" in line: - idg_lines.append(line) - line = proj_lines.next() - idg_lines.append(line) - for proj_config in proj_configs: - config_idg_lines = ExtractIdg(os.path.join("out", - proj_config[0], - proj_config[1])) - match = proj_config[0] + '|' + hard_coded_arch - new_proj_lines.append(idg_hdr + match + "'\">\n") - for idg_line in config_idg_lines[1:]: - new_proj_lines.append(idg_line) - elif "ProjectConfigurations" in line: - new_proj_lines.append(line) - proj_lines.next() - proj_lines.next() - proj_lines.next() - proj_lines.next() - for config in configs: - new_proj_lines.append(FormatProjectConfig(config)) - - elif "<OutDir" in line: - new_proj_lines.append(line.replace(proj_configs[0][0], - "$(Configuration)")) - elif "<PreferredToolArchitecture" in line: - new_proj_lines.append(" <PreferredToolArchitecture>" + - hard_coded_arch + - "</PreferredToolArchitecture>\n") - else: - new_proj_lines.append(line) - with open(dst_proj_path, "w") as new_proj: - new_proj.writelines(new_proj_lines) - -print('Wrote meta solution to out/sln/' + name)
diff --git a/build/win/merge_pgc_files.py b/build/win/merge_pgc_files.py deleted file mode 100755 index 804c4ea..0000000 --- a/build/win/merge_pgc_files.py +++ /dev/null
@@ -1,144 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 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. - -"""Merge the PGC files generated during the profiling step to the PGD database. - -This is required to workaround a flakyness in pgomgr.exe where it can run out -of address space while trying to merge all the PGC files at the same time. -""" - -import glob -import json -import optparse -import os -import subprocess -import sys - - -script_dir = os.path.dirname(os.path.realpath(__file__)) -sys.path.insert(0, os.path.join(script_dir, os.pardir)) - -import vs_toolchain - - -# Number of PGC files that should be merged in each iteration, merging all -# the files one by one is really slow but merging more than 10 at a time doesn't -# really seem to impact the total time (when merging 180 files). -# -# Number of pgc merged per iteration | Time (in min) -# 1 | 27.2 -# 10 | 12.8 -# 20 | 12.0 -# 30 | 11.5 -# 40 | 11.4 -# 50 | 11.5 -# 60 | 11.6 -# 70 | 11.6 -# 80 | 11.7 -# -# TODO(sebmarchand): Measure the memory usage of pgomgr.exe to see how it get -# affected by the number of pgc files. -_BATCH_SIZE_DEFAULT = 10 - - -def find_pgomgr(chrome_checkout_dir): - """Find pgomgr.exe.""" - win_toolchain_json_file = os.path.join(chrome_checkout_dir, 'build', - 'win_toolchain.json') - if not os.path.exists(win_toolchain_json_file): - raise Exception('The toolchain JSON file is missing.') - with open(win_toolchain_json_file) as temp_f: - toolchain_data = json.load(temp_f) - if not os.path.isdir(toolchain_data['path']): - raise Exception('The toolchain JSON file is invalid.') - - # Always use the x64 version of pgomgr (the x86 one doesn't work on the bot's - # environment). - pgomgr_dir = None - if toolchain_data['version'] == '2017': - vc_tools_root = vs_toolchain.FindVCToolsRoot() - pgomgr_dir = os.path.join(vc_tools_root, 'HostX64', 'x64') - - pgomgr_path = os.path.join(pgomgr_dir, 'pgomgr.exe') - if not os.path.exists(pgomgr_path): - raise Exception('pgomgr.exe is missing from %s.' % pgomgr_dir) - - return pgomgr_path - - -def merge_pgc_files(pgomgr_path, files, pgd_path): - """Merge all the pgc_files in |files| to |pgd_path|.""" - merge_command = [ - pgomgr_path, - '/merge' - ] - merge_command.extend(files) - merge_command.append(pgd_path) - proc = subprocess.Popen(merge_command, stdout=subprocess.PIPE) - stdout, _ = proc.communicate() - print stdout - return proc.returncode - - -def main(): - parser = optparse.OptionParser(usage='%prog [options]') - parser.add_option('--checkout-dir', help='The Chrome checkout directory.') - parser.add_option('--target-cpu', help='[DEPRECATED] The target\'s bitness.') - parser.add_option('--build-dir', help='Chrome build directory.') - parser.add_option('--binary-name', help='The binary for which the PGC files ' - 'should be merged, without extension.') - parser.add_option('--files-per-iter', help='The number of PGC files to merge ' - 'in each iteration, default to %d.' % _BATCH_SIZE_DEFAULT, - type='int', default=_BATCH_SIZE_DEFAULT) - options, _ = parser.parse_args() - - if not options.checkout_dir: - parser.error('--checkout-dir is required') - if not options.build_dir: - parser.error('--build-dir is required') - if not options.binary_name: - parser.error('--binary-name is required') - - # Starts by finding pgomgr.exe. - pgomgr_path = find_pgomgr(options.checkout_dir) - - pgc_files = glob.glob(os.path.join(options.build_dir, - '%s*.pgc' % options.binary_name)) - pgd_file = os.path.join(options.build_dir, '%s.pgd' % options.binary_name) - - def _split_in_chunks(items, chunk_size): - """Split |items| in chunks of size |chunk_size|. - - Source: http://stackoverflow.com/a/312464 - """ - for i in xrange(0, len(items), chunk_size): - yield items[i:i + chunk_size] - for chunk in _split_in_chunks(pgc_files, options.files_per_iter): - files_to_merge = [] - for pgc_file in chunk: - files_to_merge.append( - os.path.join(options.build_dir, os.path.basename(pgc_file))) - ret = merge_pgc_files(pgomgr_path, files_to_merge, pgd_file) - # pgomgr.exe sometimes fails to merge too many files at the same time (it - # usually complains that a stream is missing, but if you try to merge this - # file individually it works), try to merge all the PGCs from this batch one - # at a time instead. Don't fail the build if we can't merge a file. - # TODO(sebmarchand): Report this to Microsoft, check if this is still - # happening with VS2017. - if ret != 0: - print ('Error while trying to merge several PGC files at the same time, ' - 'trying to merge them one by one.') - for pgc_file in chunk: - ret = merge_pgc_files( - pgomgr_path, - [os.path.join(options.build_dir, os.path.basename(pgc_file))], - pgd_file - ) - if ret != 0: - print 'Error while trying to merge %s, continuing.' % pgc_file - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/win/message_compiler.gni b/build/win/message_compiler.gni deleted file mode 100644 index 814eb65..0000000 --- a/build/win/message_compiler.gni +++ /dev/null
@@ -1,89 +0,0 @@ -# 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. - -assert(is_win, "This only runs on Windows.") - -# Runs mc.exe over a list of sources. The outputs (a header and rc file) are -# placed in the target gen dir, and compiled. -# -# sources -# List of message files to process. -# -# user_mode_logging (optional bool) -# Generates user-mode logging code. Defaults to false (no logging code). -# -# compile_generated_code (optional, deafults = true) -# If unset or true, the generated code will be compiled and linked into -# targets that depend on it. If set to false, the .h and .rc files will only -# be generated. -# -# deps, public_deps, visibility -# Normal meaning. -template("message_compiler") { - if (defined(invoker.compile_generated_code) && - !invoker.compile_generated_code) { - compile_generated_code = false - action_name = target_name - } else { - compile_generated_code = true - action_name = "${target_name}_mc" - source_set_name = target_name - } - - action_foreach(action_name) { - if (compile_generated_code) { - visibility = [ ":$source_set_name" ] - } else { - forward_variables_from(invoker, [ "visibility" ]) - } - - script = "//build/win/message_compiler.py" - - outputs = [ - "$target_gen_dir/{{source_name_part}}.h", - "$target_gen_dir/{{source_name_part}}.rc", - ] - - args = [ - # The first argument is the environment file saved to the build - # directory. This is required because the Windows toolchain setup saves - # the VC paths and such so that running "mc.exe" will work with the - # configured toolchain. This file is in the root build dir. - "environment.$current_cpu", - - # Where to put the header. - "-h", - rebase_path(target_gen_dir, root_build_dir), - - # Where to put the .rc file. - "-r", - rebase_path(target_gen_dir, root_build_dir), - - # Input is Unicode. - "-u", - ] - if (defined(invoker.user_mode_logging) && invoker.user_mode_logging) { - args += [ "-um" ] - } - args += [ "{{source}}" ] - - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "sources", - ]) - } - - if (compile_generated_code) { - # Compile the generated rc file. - source_set(source_set_name) { - forward_variables_from(invoker, [ "visibility" ]) - sources = get_target_outputs(":$action_name") - deps = [ - ":$action_name", - ] - } - } -}
diff --git a/build/win/message_compiler.py b/build/win/message_compiler.py deleted file mode 100644 index 7c1902e..0000000 --- a/build/win/message_compiler.py +++ /dev/null
@@ -1,145 +0,0 @@ -# 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. - -# Runs the Microsoft Message Compiler (mc.exe). -# -# Usage: message_compiler.py <environment_file> [<args to mc.exe>*] - -import difflib -import distutils.dir_util -import filecmp -import os -import re -import shutil -import subprocess -import sys -import tempfile - -def main(): - env_file, rest = sys.argv[1], sys.argv[2:] - - # Parse some argument flags. - header_dir = None - resource_dir = None - input_file = None - for i, arg in enumerate(rest): - if arg == '-h' and len(rest) > i + 1: - assert header_dir == None - header_dir = rest[i + 1] - elif arg == '-r' and len(rest) > i + 1: - assert resource_dir == None - resource_dir = rest[i + 1] - elif arg.endswith('.mc') or arg.endswith('.man'): - assert input_file == None - input_file = arg - - # Copy checked-in outputs to final location. - THIS_DIR = os.path.abspath(os.path.dirname(__file__)) - assert header_dir == resource_dir - source = os.path.join(THIS_DIR, "..", "..", - "third_party", "win_build_output", - re.sub(r'^(?:[^/]+/)?gen/', 'mc/', header_dir)) - distutils.dir_util.copy_tree(source, header_dir, preserve_times=False) - - # On non-Windows, that's all we can do. - if sys.platform != 'win32': - return - - # On Windows, run mc.exe on the input and check that its outputs are - # identical to the checked-in outputs. - - # Read the environment block from the file. This is stored in the format used - # by CreateProcess. Drop last 2 NULs, one for list terminator, one for - # trailing vs. separator. - env_pairs = open(env_file).read()[:-2].split('\0') - env_dict = dict([item.split('=', 1) for item in env_pairs]) - - extension = os.path.splitext(input_file)[1] - if extension in ['.man', '.mc']: - # For .man files, mc's output changed significantly from Version 10.0.15063 - # to Version 10.0.16299. We should always have the output of the current - # default SDK checked in and compare to that. Early out if a different SDK - # is active. This also happens with .mc files. - # TODO(thakis): Check in new baselines and compare to 16299 instead once - # we use the 2017 Fall Creator's Update by default. - mc_help = subprocess.check_output(['mc.exe', '/?'], env=env_dict, - stderr=subprocess.STDOUT, shell=True) - version = re.search(r'Message Compiler\s+Version (\S+)', mc_help).group(1) - if version != '10.0.15063': - return - - # mc writes to stderr, so this explicitly redirects to stdout and eats it. - try: - tmp_dir = tempfile.mkdtemp() - delete_tmp_dir = True - if header_dir: - rest[rest.index('-h') + 1] = tmp_dir - header_dir = tmp_dir - if resource_dir: - rest[rest.index('-r') + 1] = tmp_dir - resource_dir = tmp_dir - - # This needs shell=True to search the path in env_dict for the mc - # executable. - subprocess.check_output(['mc.exe'] + rest, - env=env_dict, - stderr=subprocess.STDOUT, - shell=True) - # We require all source code (in particular, the header generated here) to - # be UTF-8. jinja can output the intermediate .mc file in UTF-8 or UTF-16LE. - # However, mc.exe only supports Unicode via the -u flag, and it assumes when - # that is specified that the input is UTF-16LE (and errors out on UTF-8 - # files, assuming they're ANSI). Even with -u specified and UTF16-LE input, - # it generates an ANSI header, and includes broken versions of the message - # text in the comment before the value. To work around this, for any invalid - # // comment lines, we simply drop the line in the header after building it. - # Also, mc.exe apparently doesn't always write #define lines in - # deterministic order, so manually sort each block of #defines. - if header_dir: - header_file = os.path.join( - header_dir, os.path.splitext(os.path.basename(input_file))[0] + '.h') - header_contents = [] - with open(header_file, 'rb') as f: - define_block = [] # The current contiguous block of #defines. - for line in f.readlines(): - if line.startswith('//') and '?' in line: - continue - if line.startswith('#define '): - define_block.append(line) - continue - # On the first non-#define line, emit the sorted preceding #define - # block. - header_contents += sorted(define_block, key=lambda s: s.split()[-1]) - define_block = [] - header_contents.append(line) - # If the .h file ends with a #define block, flush the final block. - header_contents += sorted(define_block, key=lambda s: s.split()[-1]) - with open(header_file, 'wb') as f: - f.write(''.join(header_contents)) - - # mc.exe invocation and post-processing are complete, now compare the output - # in tmp_dir to the checked-in outputs. - diff = filecmp.dircmp(tmp_dir, source) - if diff.diff_files or set(diff.left_list) != set(diff.right_list): - print 'mc.exe output different from files in %s, see %s' % (source, - tmp_dir) - diff.report() - for f in diff.diff_files: - if f.endswith('.bin'): continue - fromfile = os.path.join(source, f) - tofile = os.path.join(tmp_dir, f) - print ''.join(difflib.unified_diff(open(fromfile, 'U').readlines(), - open(tofile, 'U').readlines(), - fromfile, tofile)) - delete_tmp_dir = False - sys.exit(1) - except subprocess.CalledProcessError as e: - print e.output - sys.exit(e.returncode) - finally: - if os.path.exists(tmp_dir) and delete_tmp_dir: - shutil.rmtree(tmp_dir) - -if __name__ == '__main__': - main()
diff --git a/build/win/reorder-imports.py b/build/win/reorder-imports.py deleted file mode 100755 index c4b294d..0000000 --- a/build/win/reorder-imports.py +++ /dev/null
@@ -1,96 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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 glob -import optparse -import os -import shutil -import subprocess -import sys - -sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', - 'third_party', 'pefile')) -import pefile - -def reorder_imports(input_dir, output_dir, architecture): - """Swap chrome_elf.dll to be the first import of chrome.exe. - Also copy over any related files that might be needed - (pdbs, manifests etc.). - """ - # TODO(thakis): See if there is a reliable way to write the - # correct executable in the first place, so that this script - # only needs to verify that and not write a whole new exe. - - input_image = os.path.join(input_dir, 'chrome.exe') - output_image = os.path.join(output_dir, 'chrome.exe') - - # pefile mmap()s the whole executable, and then parses parts of - # it into python data structures for ease of processing. - # To write the file again, only the mmap'd data is written back, - # so modifying the parsed python objects generally has no effect. - # However, parsed raw data ends up in pe.Structure instances, - # and these all get serialized back when the file gets written. - # So things that are in a Structure must have their data set - # through the Structure, while other data must bet set through - # the set_bytes_*() methods. - pe = pefile.PE(input_image, fast_load=True) - if architecture == 'x64': - assert pe.PE_TYPE == pefile.OPTIONAL_HEADER_MAGIC_PE_PLUS - else: - assert pe.PE_TYPE == pefile.OPTIONAL_HEADER_MAGIC_PE - - pe.parse_data_directories(directories=[ - pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_IMPORT']]) - - found_elf = False - for i, peimport in enumerate(pe.DIRECTORY_ENTRY_IMPORT): - if peimport.dll.lower() == 'chrome_elf.dll': - assert not found_elf, 'only one chrome_elf.dll import expected' - found_elf = True - if i > 0: - swap = pe.DIRECTORY_ENTRY_IMPORT[0] - - # Morally we want to swap peimport.struct and swap.struct here, - # but the pe module doesn't expose a public method on Structure - # to get all data of a Structure without explicitly listing all - # field names. - # NB: OriginalFirstThunk and Characteristics are an union both at - # offset 0, handling just one of them is enough. - peimport.struct.OriginalFirstThunk, swap.struct.OriginalFirstThunk = \ - swap.struct.OriginalFirstThunk, peimport.struct.OriginalFirstThunk - peimport.struct.TimeDateStamp, swap.struct.TimeDateStamp = \ - swap.struct.TimeDateStamp, peimport.struct.TimeDateStamp - peimport.struct.ForwarderChain, swap.struct.ForwarderChain = \ - swap.struct.ForwarderChain, peimport.struct.ForwarderChain - peimport.struct.Name, swap.struct.Name = \ - swap.struct.Name, peimport.struct.Name - peimport.struct.FirstThunk, swap.struct.FirstThunk = \ - swap.struct.FirstThunk, peimport.struct.FirstThunk - assert found_elf, 'chrome_elf.dll import not found' - - pe.write(filename=output_image) - - for fname in glob.iglob(os.path.join(input_dir, 'chrome.exe.*')): - shutil.copy(fname, os.path.join(output_dir, os.path.basename(fname))) - return 0 - - -def main(argv): - usage = 'reorder_imports.py -i <input_dir> -o <output_dir> -a <target_arch>' - parser = optparse.OptionParser(usage=usage) - parser.add_option('-i', '--input', help='reorder chrome.exe in DIR', - metavar='DIR') - parser.add_option('-o', '--output', help='write new chrome.exe to DIR', - metavar='DIR') - parser.add_option('-a', '--arch', help='architecture of build (optional)', - default='ia32') - opts, args = parser.parse_args() - - if not opts.input or not opts.output: - parser.error('Please provide and input and output directory') - return reorder_imports(opts.input, opts.output, opts.arch) - -if __name__ == "__main__": - sys.exit(main(sys.argv[1:]))
diff --git a/build/win/require_administrator.manifest b/build/win/require_administrator.manifest deleted file mode 100644 index 4142e73..0000000 --- a/build/win/require_administrator.manifest +++ /dev/null
@@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> -<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> - <security> - <requestedPrivileges> - <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel> - </requestedPrivileges> - </security> -</trustInfo></assembly>
diff --git a/build/win/run_pgo_profiling_benchmarks.py b/build/win/run_pgo_profiling_benchmarks.py deleted file mode 100644 index 163682a..0000000 --- a/build/win/run_pgo_profiling_benchmarks.py +++ /dev/null
@@ -1,123 +0,0 @@ -# Copyright 2016 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. - -"""Utility script to run the benchmarks during the profiling step of a PGO -build. -""" - -import json -import optparse -import os -import subprocess -import sys - -# Make sure that we're running as admin, this is required to run the Telemetry -# benchmarks. -from win32com.shell import shell -if not shell.IsUserAnAdmin(): - raise Exception('This script has to be run as admin.') - - -_SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) -_CHROME_BUILD_DIR = os.path.dirname(_SCRIPT_DIR) -_CHROME_SRC_DIR = os.path.dirname(_CHROME_BUILD_DIR) - - -# List of the benchmark that we run during the profiling step. -_BENCHMARKS_TO_RUN = { - 'blink_perf.bindings', - 'blink_perf.canvas', - 'blink_perf.css', - 'blink_perf.dom', - 'blink_perf.paint', - 'blink_perf.svg', - 'blink_style.top_25', - 'dromaeo.cssqueryjquery', - 'dromaeo.domcoreattr', - 'dromaeo.domcoremodify', - 'dromaeo.domcorequery', - 'dromaeo.domcoretraverse', - 'dromaeo.jslibattrprototype', - 'dromaeo.jslibeventprototype', - 'dromaeo.jslibmodifyprototype', - 'dromaeo.jslibstyleprototype', - 'dromaeo.jslibtraversejquery', - 'dromaeo.jslibtraverseprototype', - 'media.tough_video_cases', - 'octane', - 'smoothness.top_25_smooth', - 'storage.indexeddb_endure_tracing', - 'sunspider', -} - - -def RunBenchmarks(options): - """Run the benchmarks.""" - # Find the run_benchmark script. - chrome_run_benchmark_script = os.path.join(_CHROME_SRC_DIR, 'tools', - 'perf', 'run_benchmark') - if not os.path.exists(chrome_run_benchmark_script): - raise Exception('Unable to find the run_benchmark script ' - '(%s doesn\'t exist) ' % chrome_run_benchmark_script) - - # Augment the PATH to make sure that the benchmarking script can find - # pgosweep.exe and its runtime libraries. - env = os.environ.copy() - env['PATH'] = str(os.pathsep.join([options.build_dir, os.environ['PATH']])) - env['PogoSafeMode'] = '1' - # Apply a scaling factor of 0.5 to the PGO profiling buffers for the 32-bit - # builds, without this the buffers will be too large and the process will - # fail to start. See crbug.com/632864#c22. - if options.target_cpu == 'x86': - env['VCPROFILE_ALLOC_SCALE'] = '0.5' - - # Run all the benchmarks. - # TODO(sebmarchand): Make this run in parallel. - for benchmark in _BENCHMARKS_TO_RUN: - try: - benchmark_command = [ - sys.executable, - chrome_run_benchmark_script, - '--browser', options.browser_type, - ] - # Automatically set the arguments to run this script on a local build. - if options.browser_type == 'exact': - benchmark_command += [ - '--browser-executable', os.path.join(options.build_dir, 'chrome.exe') - ] - benchmark_command += [ - '--profiler', 'win_pgo_profiler', - benchmark - ] - subprocess.check_call(benchmark_command, env=env) - except: - print ('Error while trying to run the %s benchmark, continuing.' % - benchmark) - continue - - return 0 - - -def main(): - parser = optparse.OptionParser(usage='%prog [options]') - parser.add_option( - '--browser-type', help='The browser type (to be passed to Telemetry\'s ' - 'benchmark runner).') - # TODO(sebmarchand): Parse the args.gn file to automatically set this value. - parser.add_option('--target-cpu', help='The target\'s bitness.') - parser.add_option('--build-dir', help='Chrome build directory.') - options, _ = parser.parse_args() - - if not options.target_cpu: - parser.error('--target-cpu is required') - if not options.build_dir: - parser.error('--build-dir is required') - if not options.browser_type: - options.browser_type = 'exact' - - return RunBenchmarks(options) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/build/win/use_ansi_codes.py b/build/win/use_ansi_codes.py deleted file mode 100755 index cff5f43..0000000 --- a/build/win/use_ansi_codes.py +++ /dev/null
@@ -1,10 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 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. -"""Prints if the the terminal is likely to understand ANSI codes.""" - -import os - -# Add more terminals here as needed. -print 'ANSICON' in os.environ
diff --git a/build/win_is_xtree_patched.py b/build/win_is_xtree_patched.py deleted file mode 100755 index 3f1994f..0000000 --- a/build/win_is_xtree_patched.py +++ /dev/null
@@ -1,26 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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. - -"""Determines if the VS xtree header has been patched to disable C4702.""" - -import os - - -def IsPatched(): - # TODO(scottmg): For now, just return if we're using the packaged toolchain - # script (because we know it's patched). Another case could be added here to - # query the active VS installation and actually check the contents of xtree. - # http://crbug.com/346399. - return int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', 1)) == 1 - - -def DoMain(_): - """Hook to be called from gyp without starting a separate python - interpreter.""" - return "1" if IsPatched() else "0" - - -if __name__ == '__main__': - print DoMain([])
diff --git a/build/win_toolchain.json b/build/win_toolchain.json deleted file mode 100644 index 585784e..0000000 --- a/build/win_toolchain.json +++ /dev/null
@@ -1 +0,0 @@ -{"wdk": "/usr/local/google/work/cr/src/third_party/depot_tools/win_toolchain/vs_files/5454e45bf3764c03d3fc1024b3bf5bc41e3ab62c/wdk", "win_sdk": "/usr/local/google/work/cr/src/third_party/depot_tools/win_toolchain/vs_files/5454e45bf3764c03d3fc1024b3bf5bc41e3ab62c/win_sdk", "version": "2017", "win8sdk": "/usr/local/google/work/cr/src/third_party/depot_tools/win_toolchain/vs_files/5454e45bf3764c03d3fc1024b3bf5bc41e3ab62c/win_sdk", "path": "/usr/local/google/work/cr/src/third_party/depot_tools/win_toolchain/vs_files/5454e45bf3764c03d3fc1024b3bf5bc41e3ab62c", "runtime_dirs": ["/usr/local/google/work/cr/src/third_party/depot_tools/win_toolchain/vs_files/5454e45bf3764c03d3fc1024b3bf5bc41e3ab62c/sys64", "/usr/local/google/work/cr/src/third_party/depot_tools/win_toolchain/vs_files/5454e45bf3764c03d3fc1024b3bf5bc41e3ab62c/sys32"]} \ No newline at end of file
diff --git a/build/write_buildflag_header.py b/build/write_buildflag_header.py deleted file mode 100755 index d46cfc8..0000000 --- a/build/write_buildflag_header.py +++ /dev/null
@@ -1,95 +0,0 @@ -#!/usr/bin/env python -# 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. - -# This writes headers for build flags. See buildflag_header.gni for usage of -# this system as a whole. -# -# The parameters are passed in a response file so we don't have to worry -# about command line lengths. The name of the response file is passed on the -# command line. -# -# The format of the response file is: -# [--flags <list of one or more flag values>] - -import optparse -import os -import shlex -import sys - - -class Options: - def __init__(self, output, rulename, header_guard, flags): - self.output = output - self.rulename = rulename - self.header_guard = header_guard - self.flags = flags - - -def GetOptions(): - parser = optparse.OptionParser() - parser.add_option('--output', help="Output header name inside --gen-dir.") - parser.add_option('--rulename', - help="Helpful name of build rule for including in the " + - "comment at the top of the file.") - parser.add_option('--gen-dir', - help="Path to root of generated file directory tree.") - parser.add_option('--definitions', - help="Name of the response file containing the flags.") - cmdline_options, cmdline_flags = parser.parse_args() - - # Compute header guard by replacing some chars with _ and upper-casing. - header_guard = cmdline_options.output.upper() - header_guard = \ - header_guard.replace('/', '_').replace('\\', '_').replace('.', '_') - header_guard += '_' - - # The actual output file is inside the gen dir. - output = os.path.join(cmdline_options.gen_dir, cmdline_options.output) - - # Definition file in GYP is newline separated, in GN they are shell formatted. - # shlex can parse both of these. - with open(cmdline_options.definitions, 'r') as def_file: - defs = shlex.split(def_file.read()) - flags_index = defs.index('--flags') - - # Everything after --flags are flags. true/false are remapped to 1/0, - # everything else is passed through. - flags = [] - for flag in defs[flags_index + 1 :]: - equals_index = flag.index('=') - key = flag[:equals_index] - value = flag[equals_index + 1:] - - # Canonicalize and validate the value. - if value == 'true': - value = '1' - elif value == 'false': - value = '0' - flags.append((key, str(value))) - - return Options(output=output, - rulename=cmdline_options.rulename, - header_guard=header_guard, - flags=flags) - - -def WriteHeader(options): - with open(options.output, 'w') as output_file: - output_file.write("// Generated by build/write_buildflag_header.py\n") - if options.rulename: - output_file.write('// From "' + options.rulename + '"\n') - - output_file.write('\n#ifndef %s\n' % options.header_guard) - output_file.write('#define %s\n\n' % options.header_guard) - output_file.write('#include "build/buildflag.h"\n\n') - - for pair in options.flags: - output_file.write('#define BUILDFLAG_INTERNAL_%s() (%s)\n' % pair) - - output_file.write('\n#endif // %s\n' % options.header_guard) - - -options = GetOptions() -WriteHeader(options)
diff --git a/src/build_config.h b/src/build_config.h new file mode 100644 index 0000000..89d0ff7 --- /dev/null +++ b/src/build_config.h
@@ -0,0 +1,207 @@ +// Copyright (c) 2012 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. + +// This file adds defines about the platform we're currently building on. +// Operating System: +// OS_WIN / OS_MACOSX / OS_LINUX / OS_POSIX (MACOSX or LINUX) / +// OS_NACL (NACL_SFI or NACL_NONSFI) / OS_NACL_SFI / OS_NACL_NONSFI +// OS_CHROMEOS is set by the build system +// Compiler: +// COMPILER_MSVC / COMPILER_GCC +// Processor: +// ARCH_CPU_X86 / ARCH_CPU_X86_64 / ARCH_CPU_X86_FAMILY (X86 or X86_64) +// ARCH_CPU_32_BITS / ARCH_CPU_64_BITS + +#ifndef BUILD_BUILD_CONFIG_H_ +#define BUILD_BUILD_CONFIG_H_ + +// A set of macros to use for platform detection. +#if defined(__native_client__) +// __native_client__ must be first, so that other OS_ defines are not set. +#define OS_NACL 1 +// OS_NACL comes in two sandboxing technology flavors, SFI or Non-SFI. +// PNaCl toolchain defines __native_client_nonsfi__ macro in Non-SFI build +// mode, while it does not in SFI build mode. +#if defined(__native_client_nonsfi__) +#define OS_NACL_NONSFI +#else +#define OS_NACL_SFI +#endif +#elif defined(ANDROID) +#define OS_ANDROID 1 +#elif defined(__APPLE__) +// only include TargetConditions after testing ANDROID as some android builds +// on mac don't have this header available and it's not needed unless the target +// is really mac/ios. +#include <TargetConditionals.h> +#define OS_MACOSX 1 +#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE +#define OS_IOS 1 +#endif // defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE +#elif defined(__linux__) +#define OS_LINUX 1 +// include a system header to pull in features.h for glibc/uclibc macros. +#include <unistd.h> +#if defined(__GLIBC__) && !defined(__UCLIBC__) +// we really are using glibc, not uClibc pretending to be glibc +#define LIBC_GLIBC 1 +#endif +#elif defined(_WIN32) +#define OS_WIN 1 +#elif defined(__Fuchsia__) +#define OS_FUCHSIA 1 +#elif defined(__FreeBSD__) +#define OS_FREEBSD 1 +#elif defined(__NetBSD__) +#define OS_NETBSD 1 +#elif defined(__OpenBSD__) +#define OS_OPENBSD 1 +#elif defined(__sun) +#define OS_SOLARIS 1 +#elif defined(__QNXNTO__) +#define OS_QNX 1 +#elif defined(_AIX) +#define OS_AIX 1 +#elif defined(__asmjs__) +#define OS_ASMJS +#else +#error Please add support for your platform in build_config.h +#endif +// NOTE: Adding a new port? Please follow +// https://chromium.googlesource.com/chromium/src/+/master/docs/new_port_policy.md + +// For access to standard BSD features, use OS_BSD instead of a +// more specific macro. +#if defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_OPENBSD) +#define OS_BSD 1 +#endif + +// For access to standard POSIXish features, use OS_POSIX instead of a +// more specific macro. +#if defined(OS_AIX) || defined(OS_ANDROID) || defined(OS_ASMJS) || \ + defined(OS_FREEBSD) || defined(OS_LINUX) || defined(OS_MACOSX) || \ + defined(OS_NACL) || defined(OS_NETBSD) || defined(OS_OPENBSD) || \ + defined(OS_QNX) || defined(OS_SOLARIS) +#define OS_POSIX 1 +#endif + +// Use tcmalloc +#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID)) && \ + !defined(NO_TCMALLOC) +#define USE_TCMALLOC 1 +#endif + +// Compiler detection. +#if defined(__GNUC__) +#define COMPILER_GCC 1 +#elif defined(_MSC_VER) +#define COMPILER_MSVC 1 +#else +#error Please add support for your compiler in build_config.h +#endif + +// Processor architecture detection. For more info on what's defined, see: +// http://msdn.microsoft.com/en-us/library/b0084kay.aspx +// http://www.agner.org/optimize/calling_conventions.pdf +// or with gcc, run: "echo | gcc -E -dM -" +#if defined(_M_X64) || defined(__x86_64__) +#define ARCH_CPU_X86_FAMILY 1 +#define ARCH_CPU_X86_64 1 +#define ARCH_CPU_64_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#elif defined(_M_IX86) || defined(__i386__) +#define ARCH_CPU_X86_FAMILY 1 +#define ARCH_CPU_X86 1 +#define ARCH_CPU_32_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#elif defined(__s390x__) +#define ARCH_CPU_S390_FAMILY 1 +#define ARCH_CPU_S390X 1 +#define ARCH_CPU_64_BITS 1 +#define ARCH_CPU_BIG_ENDIAN 1 +#elif defined(__s390__) +#define ARCH_CPU_S390_FAMILY 1 +#define ARCH_CPU_S390 1 +#define ARCH_CPU_31_BITS 1 +#define ARCH_CPU_BIG_ENDIAN 1 +#elif (defined(__PPC64__) || defined(__PPC__)) && defined(__BIG_ENDIAN__) +#define ARCH_CPU_PPC64_FAMILY 1 +#define ARCH_CPU_PPC64 1 +#define ARCH_CPU_64_BITS 1 +#define ARCH_CPU_BIG_ENDIAN 1 +#elif defined(__PPC64__) +#define ARCH_CPU_PPC64_FAMILY 1 +#define ARCH_CPU_PPC64 1 +#define ARCH_CPU_64_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#elif defined(__ARMEL__) +#define ARCH_CPU_ARM_FAMILY 1 +#define ARCH_CPU_ARMEL 1 +#define ARCH_CPU_32_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#elif defined(__aarch64__) +#define ARCH_CPU_ARM_FAMILY 1 +#define ARCH_CPU_ARM64 1 +#define ARCH_CPU_64_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#elif defined(__pnacl__) || defined(__asmjs__) +#define ARCH_CPU_32_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#elif defined(__MIPSEL__) +#if defined(__LP64__) +#define ARCH_CPU_MIPS_FAMILY 1 +#define ARCH_CPU_MIPS64EL 1 +#define ARCH_CPU_64_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#else +#define ARCH_CPU_MIPS_FAMILY 1 +#define ARCH_CPU_MIPSEL 1 +#define ARCH_CPU_32_BITS 1 +#define ARCH_CPU_LITTLE_ENDIAN 1 +#endif +#elif defined(__MIPSEB__) +#if defined(__LP64__) +#define ARCH_CPU_MIPS_FAMILY 1 +#define ARCH_CPU_MIPS64 1 +#define ARCH_CPU_64_BITS 1 +#define ARCH_CPU_BIG_ENDIAN 1 +#else +#define ARCH_CPU_MIPS_FAMILY 1 +#define ARCH_CPU_MIPS 1 +#define ARCH_CPU_32_BITS 1 +#define ARCH_CPU_BIG_ENDIAN 1 +#endif +#else +#error Please add support for your architecture in build_config.h +#endif + +// Type detection for wchar_t. +#if defined(OS_WIN) +#define WCHAR_T_IS_UTF16 +#elif defined(OS_FUCHSIA) +#define WCHAR_T_IS_UTF32 +#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \ + (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff) +#define WCHAR_T_IS_UTF32 +#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \ + (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff) +// On Posix, we'll detect short wchar_t, but projects aren't guaranteed to +// compile in this mode (in particular, Chrome doesn't). This is intended for +// other projects using base who manage their own dependencies and make sure +// short wchar works for them. +#define WCHAR_T_IS_UTF16 +#else +#error Please add support for your compiler in build_config.h +#endif + +#if defined(OS_ANDROID) +// The compiler thinks std::string::const_iterator and "const char*" are +// equivalent types. +#define STD_STRING_ITERATOR_IS_CHAR_POINTER +// The compiler thinks base::string16::const_iterator and "char16*" are +// equivalent types. +#define BASE_STRING16_ITERATOR_IS_CHAR16_POINTER +#endif + +#endif // BUILD_BUILD_CONFIG_H_
diff --git a/testing/libfuzzer/libfuzzer_exports.h b/testing/libfuzzer/libfuzzer_exports.h index 0612512..3e0cf98 100644 --- a/testing/libfuzzer/libfuzzer_exports.h +++ b/testing/libfuzzer/libfuzzer_exports.h
@@ -5,7 +5,7 @@ #ifndef TESTING_LIBFUZZER_LIBFUZZER_EXPORTS_H_ #define TESTING_LIBFUZZER_LIBFUZZER_EXPORTS_H_ -#include "build/build_config.h" +#include "build_config.h" // On macOS, the linker may strip symbols for functions that are not reachable // by the program entrypoint. Several libFuzzer functions are resolved via
diff --git a/third_party/googletest/custom/gtest/internal/custom/gtest.h b/third_party/googletest/custom/gtest/internal/custom/gtest.h index c7fe788..702251f 100644 --- a/third_party/googletest/custom/gtest/internal/custom/gtest.h +++ b/third_party/googletest/custom/gtest/internal/custom/gtest.h
@@ -5,7 +5,7 @@ #ifndef THIRD_PARTY_GOOGLETEST_CUSTOM_GTEST_INTERNAL_CUSTOM_GTEST_H_ #define THIRD_PARTY_GOOGLETEST_CUSTOM_GTEST_INTERNAL_CUSTOM_GTEST_H_ -#include "build/build_config.h" +#include "build_config.h" #if !defined(GTEST_DISABLE_PRINT_STACK_TRACE) #include "third_party/googletest/custom/gtest/internal/custom/stack_trace_getter.h"
diff --git a/tools/gn/args.cc b/tools/gn/args.cc index a53eb49..a9adfb8 100644 --- a/tools/gn/args.cc +++ b/tools/gn/args.cc
@@ -5,7 +5,7 @@ #include "tools/gn/args.h" #include "base/sys_info.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/source_file.h" #include "tools/gn/string_utils.h" #include "tools/gn/variables.h"
diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py deleted file mode 100755 index 00bfa56..0000000 --- a/tools/gn/bootstrap/bootstrap.py +++ /dev/null
@@ -1,945 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 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. - -# This file isn't officially supported by the Chromium project. It's maintained -# on a best-effort basis by volunteers, so some things may be broken from time -# to time. If you encounter errors, it's most often due to files in base that -# have been added or moved since somebody last tried this script. Generally -# such errors are easy to diagnose. - -"""Bootstraps gn. - -It is done by first building it manually in a temporary directory, then building -it with its own BUILD.gn to the final destination. -""" - -import contextlib -import errno -import logging -import optparse -import os -import platform -import shutil -import subprocess -import sys -import tempfile - -BOOTSTRAP_DIR = os.path.dirname(os.path.abspath(__file__)) -GN_ROOT = os.path.dirname(BOOTSTRAP_DIR) -SRC_ROOT = os.path.dirname(os.path.dirname(GN_ROOT)) - -is_win = sys.platform.startswith('win') -is_linux = sys.platform.startswith('linux') -is_mac = sys.platform.startswith('darwin') -is_aix = sys.platform.startswith('aix') -is_posix = is_linux or is_mac or is_aix - -def check_call(cmd, **kwargs): - logging.debug('Running: %s', ' '.join(cmd)) - - subprocess.check_call(cmd, cwd=GN_ROOT, **kwargs) - -def check_output(cmd, cwd=GN_ROOT, **kwargs): - logging.debug('Running: %s', ' '.join(cmd)) - - return subprocess.check_output(cmd, cwd=cwd, **kwargs) - -def mkdir_p(path): - try: - os.makedirs(path) - except OSError as e: - if e.errno == errno.EEXIST and os.path.isdir(path): - pass - else: raise - -@contextlib.contextmanager -def scoped_tempdir(): - path = tempfile.mkdtemp() - try: - yield path - finally: - shutil.rmtree(path) - - -def run_build(tempdir, options): - if options.build_path: - build_rel = options.build_path - elif options.debug: - build_rel = os.path.join('out', 'Debug') - else: - build_rel = os.path.join('out', 'Release') - build_root = os.path.join(SRC_ROOT, build_rel) - - windows_x64_toolchain = None - if is_win: - windows_x64_toolchain = windows_prepare_toolchain(tempdir) - os.environ["PATH"] = windows_x64_toolchain["paths"] - - print 'Building gn manually in a temporary directory for bootstrapping...' - build_gn_with_ninja_manually(tempdir, options, windows_x64_toolchain) - temp_gn = os.path.join(tempdir, 'gn') - out_gn = os.path.join(build_root, 'gn') - - if is_win: - temp_gn += '.exe' - out_gn += '.exe' - - if options.no_rebuild: - mkdir_p(build_root) - shutil.copy2(temp_gn, out_gn) - else: - print 'Building gn using itself to %s...' % build_rel - build_gn_with_gn(temp_gn, build_root, options) - - if options.output: - # Preserve the executable permission bit. - shutil.copy2(out_gn, options.output) - -def windows_target_build_arch(): - # Target build architecture set by vcvarsall.bat - target_arch = os.environ.get('Platform') - if target_arch in ['x64', 'x86']: return target_arch - - if platform.machine().lower() in ['x86_64', 'amd64']: return 'x64' - return 'x86' - -def windows_prepare_toolchain(tempdir): - - def CallPythonScopeScript(command, **kwargs): - response = check_output(command, **kwargs) - - _globals = {"__builtins__":None} - _locals = {} - exec(response, _globals, _locals) - - return _locals - - toolchain_paths = CallPythonScopeScript( - [sys.executable, - os.path.join(SRC_ROOT, "build", "vs_toolchain.py"), - "get_toolchain_dir"], - cwd=tempdir) - - windows_x64_toolchain = CallPythonScopeScript( - [sys.executable, - os.path.join(SRC_ROOT, "build", "toolchain", - "win", "setup_toolchain.py"), - toolchain_paths["vs_path"], - toolchain_paths["sdk_path"], - toolchain_paths["runtime_dirs"], - "win", - "x64", - "environment.x64", - "true" - ], - cwd=tempdir) - - return windows_x64_toolchain - -def main(argv): - parser = optparse.OptionParser(description=sys.modules[__name__].__doc__) - parser.add_option('-d', '--debug', action='store_true', - help='Do a debug build. Defaults to release build.') - parser.add_option('-o', '--output', - help='place output in PATH', metavar='PATH') - parser.add_option('-s', '--no-rebuild', action='store_true', - help='Do not rebuild GN with GN.') - parser.add_option('--no-clean', action='store_true', - help='Re-used build directory instead of using new ' - 'temporary location each time') - parser.add_option('--gn-gen-args', help='Args to pass to gn gen --args') - parser.add_option('--build-path', help='The directory in which to build gn, ' - 'relative to the src directory. (eg. out/Release)' - 'In the no-clean mode an absolute path will also force ' - 'the out_bootstrap to be located in the parent directory') - parser.add_option('-v', '--verbose', action='store_true', - help='Log more details') - options, args = parser.parse_args(argv) - - if args: - parser.error('Unrecognized command line arguments: %s.' % ', '.join(args)) - - options.no_rebuild = True - - logging.basicConfig(level=logging.DEBUG if options.verbose else logging.ERROR) - - try: - if options.no_clean: - out_bootstrap_dir = SRC_ROOT - if options.build_path and os.path.isabs(options.build_path): - out_bootstrap_dir = os.path.dirname(options.build_path) - build_dir = os.path.join(out_bootstrap_dir, 'out_bootstrap') - if not os.path.exists(build_dir): - os.makedirs(build_dir) - return run_build(build_dir, options) - else: - with scoped_tempdir() as tempdir: - return run_build(tempdir, options) - except subprocess.CalledProcessError as e: - print >> sys.stderr, str(e) - return 1 - return 0 - -def write_compiled_message(root_gen_dir, source): - path = os.path.join(root_gen_dir, os.path.dirname(source)) - mkdir_p(path) - check_call([ - 'mc.exe', - '-r', path, '-h', path, - '-u', '-um', - os.path.join(SRC_ROOT, source), - ]) - -def build_gn_with_ninja_manually(tempdir, options, windows_x64_toolchain): - root_gen_dir = os.path.join(tempdir, 'gen') - mkdir_p(root_gen_dir) - - if is_win: - write_compiled_message(root_gen_dir, - 'base/trace_event/etw_manifest/chrome_events_win.man') - - write_gn_ninja(os.path.join(tempdir, 'build.ninja'), - root_gen_dir, options, windows_x64_toolchain) - cmd = ['ninja', '-C', tempdir, '-w', 'dupbuild=err'] - if options.verbose: - cmd.append('-v') - - if is_win: - cmd.append('gn.exe') - else: - cmd.append('gn') - - check_call(cmd) - -def write_generic_ninja(path, static_libraries, executables, - cc, cxx, ar, ld, - cflags=[], cflags_cc=[], ldflags=[], - include_dirs=[], solibs=[]): - ninja_header_lines = [ - 'cc = ' + cc, - 'cxx = ' + cxx, - 'ar = ' + ar, - 'ld = ' + ld, - '', - ] - - if is_win: - template_filename = 'build_vs.ninja.template' - elif is_mac: - template_filename = 'build_mac.ninja.template' - elif is_aix: - template_filename = 'build_aix.ninja.template' - else: - template_filename = 'build.ninja.template' - - with open(os.path.join(GN_ROOT, 'bootstrap', template_filename)) as f: - ninja_template = f.read() - - if is_win: - executable_ext = '.exe' - library_ext = '.lib' - object_ext = '.obj' - else: - executable_ext = '' - library_ext = '.a' - object_ext = '.o' - - def escape_path_ninja(path): - return path.replace('$ ', '$$ ').replace(' ', '$ ').replace(':', '$:') - - def src_to_obj(path): - return escape_path_ninja('%s' % os.path.splitext(path)[0] + object_ext) - - def library_to_a(library): - return '%s%s' % (library, library_ext) - - ninja_lines = [] - def build_source(src_file, settings): - ninja_lines.extend([ - 'build %s: %s %s' % (src_to_obj(src_file), - settings['tool'], - escape_path_ninja( - os.path.join(SRC_ROOT, src_file))), - ' includes = %s' % ' '.join( - ['-I' + escape_path_ninja(dirname) for dirname in - include_dirs + settings.get('include_dirs', [])]), - ' cflags = %s' % ' '.join(cflags + settings.get('cflags', [])), - ' cflags_cc = %s' % - ' '.join(cflags_cc + settings.get('cflags_cc', [])), - ]) - - for library, settings in static_libraries.iteritems(): - for src_file in settings['sources']: - build_source(src_file, settings) - - ninja_lines.append('build %s: alink_thin %s' % ( - library_to_a(library), - ' '.join([src_to_obj(src_file) for src_file in settings['sources']]))) - - for executable, settings in executables.iteritems(): - for src_file in settings['sources']: - build_source(src_file, settings) - - ninja_lines.extend([ - 'build %s%s: link %s | %s' % ( - executable, executable_ext, - ' '.join([src_to_obj(src_file) for src_file in settings['sources']]), - ' '.join([library_to_a(library) for library in settings['libs']])), - ' ldflags = %s' % ' '.join(ldflags), - ' solibs = %s' % ' '.join(solibs), - ' libs = %s' % ' '.join( - [library_to_a(library) for library in settings['libs']]), - ]) - - ninja_lines.append('') # Make sure the file ends with a newline. - - with open(path, 'w') as f: - f.write('\n'.join(ninja_header_lines)) - f.write(ninja_template) - f.write('\n'.join(ninja_lines)) - -def write_gn_ninja(path, root_gen_dir, options, windows_x64_toolchain): - if is_win: - CCPATH = windows_x64_toolchain["vc_bin_dir"] - - cc = os.environ.get('CC', os.path.join(CCPATH, 'cl.exe')) - cxx = os.environ.get('CXX', os.path.join(CCPATH, 'cl.exe')) - ld = os.environ.get('LD', os.path.join(CCPATH, 'link.exe')) - ar = os.environ.get('AR', os.path.join(CCPATH, 'lib.exe')) - elif is_aix: - cc = os.environ.get('CC', 'gcc') - cxx = os.environ.get('CXX', 'c++') - ld = os.environ.get('LD', cxx) - ar = os.environ.get('AR', 'ar -X64') - else: - cc = os.environ.get('CC', 'cc') - cxx = os.environ.get('CXX', 'c++') - ld = cxx - ar = os.environ.get('AR', 'ar') - - cflags = os.environ.get('CFLAGS', '').split() - cflags_cc = os.environ.get('CXXFLAGS', '').split() - ldflags = os.environ.get('LDFLAGS', '').split() - include_dirs = [root_gen_dir, SRC_ROOT] - libs = [] - - # //base/allocator/allocator_extension.cc needs this macro defined, - # otherwise there would be link errors. - cflags.extend(['-DNO_TCMALLOC', '-D__STDC_FORMAT_MACROS']) - - if is_posix: - if options.debug: - cflags.extend(['-O0', '-g']) - else: - # The linux::ppc64 BE binary doesn't "work" when - # optimization level is set to 2 (0 works fine). - # Note that the current bootstrap script has no way to detect host_cpu. - # This can be easily fixed once we start building using a GN binary, - # as the optimization flag can then just be set using the - # logic inside //build/toolchain. - cflags.extend(['-O2', '-g0']) - - cflags.extend([ - '-D_FILE_OFFSET_BITS=64', - '-D__STDC_CONSTANT_MACROS', '-D__STDC_FORMAT_MACROS', - '-pthread', - '-pipe', - '-fno-exceptions' - ]) - cflags_cc.extend(['-std=c++14', '-Wno-c++11-narrowing']) - if is_aix: - cflags.extend(['-maix64']) - ldflags.extend([ '-maix64 -Wl,-bbigtoc' ]) - elif is_win: - if not options.debug: - cflags.extend(['/Ox', '/DNDEBUG', '/GL']) - ldflags.extend(['/LTCG', '/OPT:REF', '/OPT:ICF']) - - cflags.extend([ - '/FS', - '/Gy', - '/W3', '/wd4244', - '/Zi', - '/DWIN32_LEAN_AND_MEAN', '/DNOMINMAX', - '/D_CRT_SECURE_NO_DEPRECATE', '/D_SCL_SECURE_NO_DEPRECATE', - '/D_WIN32_WINNT=0x0A00', '/DWINVER=0x0A00', - '/DUNICODE', '/D_UNICODE', - ]) - cflags_cc.extend([ - '/GR-', - '/D_HAS_EXCEPTIONS=0', - ]) - - target_arch = windows_target_build_arch() - if target_arch == 'x64': - ldflags.extend(['/MACHINE:x64']) - else: - ldflags.extend(['/MACHINE:x86']) - - static_libraries = { - 'base': {'sources': [], 'tool': 'cxx', 'include_dirs': []}, - 'dynamic_annotations': {'sources': [], 'tool': 'cc', 'include_dirs': []}, - 'gn_lib': {'sources': [], 'tool': 'cxx', 'include_dirs': []}, - } - - executables = { - 'gn': {'sources': ['tools/gn/gn_main.cc'], - 'tool': 'cxx', 'include_dirs': [], 'libs': []}, - } - - for name in os.listdir(GN_ROOT): - if not name.endswith('.cc'): - continue - if name.endswith('_unittest.cc'): - continue - if name == 'run_all_unittests.cc': - continue - if name == 'test_with_scheduler.cc': - continue - if name == 'gn_main.cc': - continue - full_path = os.path.join(GN_ROOT, name) - static_libraries['gn_lib']['sources'].append( - os.path.relpath(full_path, SRC_ROOT)) - - static_libraries['dynamic_annotations']['sources'].extend([ - 'base/third_party/dynamic_annotations/dynamic_annotations.c', - 'base/third_party/superfasthash/superfasthash.c', - ]) - static_libraries['base']['sources'].extend([ - 'base/allocator/allocator_check.cc', - 'base/allocator/allocator_extension.cc', - 'base/at_exit.cc', - 'base/base_paths.cc', - 'base/base_switches.cc', - 'base/callback_helpers.cc', - 'base/callback_internal.cc', - 'base/command_line.cc', - 'base/debug/activity_tracker.cc', - 'base/debug/alias.cc', - 'base/debug/crash_logging.cc', - 'base/debug/dump_without_crashing.cc', - 'base/debug/stack_trace.cc', - 'base/debug/task_annotator.cc', - 'base/debug/thread_heap_usage_tracker.cc', - 'base/environment.cc', - 'base/feature_list.cc', - 'base/files/file.cc', - 'base/files/file_enumerator.cc', - 'base/files/file_path.cc', - 'base/files/file_path_constants.cc', - 'base/files/file_tracing.cc', - 'base/files/file_util.cc', - 'base/files/important_file_writer.cc', - 'base/files/memory_mapped_file.cc', - 'base/files/scoped_file.cc', - 'base/hash.cc', - 'base/json/json_parser.cc', - 'base/json/json_reader.cc', - 'base/json/json_string_value_serializer.cc', - 'base/json/json_writer.cc', - 'base/json/string_escape.cc', - 'base/lazy_instance_helpers.cc', - 'base/location.cc', - 'base/logging.cc', - 'base/md5.cc', - 'base/memory/platform_shared_memory_region.cc', - 'base/memory/read_only_shared_memory_region.cc', - 'base/memory/ref_counted.cc', - 'base/memory/ref_counted_memory.cc', - 'base/memory/shared_memory_mapping.cc', - 'base/memory/shared_memory_handle.cc', - 'base/memory/shared_memory_tracker.cc', - 'base/memory/weak_ptr.cc', - 'base/message_loop/incoming_task_queue.cc', - 'base/message_loop/message_loop.cc', - 'base/message_loop/message_loop_current.cc', - 'base/message_loop/message_loop_task_runner.cc', - 'base/message_loop/message_pump.cc', - 'base/message_loop/message_pump_default.cc', - 'base/message_loop/watchable_io_message_pump_posix.cc', - 'base/metrics/bucket_ranges.cc', - 'base/metrics/dummy_histogram.cc', - 'base/metrics/field_trial.cc', - 'base/metrics/field_trial_param_associator.cc', - 'base/metrics/field_trial_params.cc', - 'base/metrics/histogram.cc', - 'base/metrics/histogram_base.cc', - 'base/metrics/histogram_functions.cc', - 'base/metrics/histogram_samples.cc', - 'base/metrics/histogram_snapshot_manager.cc', - 'base/metrics/metrics_hashes.cc', - 'base/metrics/persistent_histogram_allocator.cc', - 'base/metrics/persistent_memory_allocator.cc', - 'base/metrics/persistent_sample_map.cc', - 'base/metrics/sample_map.cc', - 'base/metrics/sample_vector.cc', - 'base/metrics/sparse_histogram.cc', - 'base/metrics/statistics_recorder.cc', - 'base/observer_list_threadsafe.cc', - 'base/path_service.cc', - 'base/pending_task.cc', - 'base/pickle.cc', - 'base/process/kill.cc', - 'base/process/memory.cc', - 'base/process/process_handle.cc', - 'base/process/process_iterator.cc', - 'base/process/process_metrics.cc', - 'base/rand_util.cc', - 'base/run_loop.cc', - 'base/sequence_token.cc', - 'base/sequence_checker_impl.cc', - 'base/sequenced_task_runner.cc', - 'base/sha1.cc', - 'base/strings/pattern.cc', - 'base/strings/string_number_conversions.cc', - 'base/strings/string_piece.cc', - 'base/strings/string_split.cc', - 'base/strings/string_util.cc', - 'base/strings/string_util_constants.cc', - 'base/strings/stringprintf.cc', - 'base/strings/utf_string_conversion_utils.cc', - 'base/strings/utf_string_conversions.cc', - 'base/synchronization/atomic_flag.cc', - 'base/synchronization/lock.cc', - 'base/sys_info.cc', - 'base/task_runner.cc', - 'base/task_scheduler/delayed_task_manager.cc', - 'base/task_scheduler/environment_config.cc', - 'base/task_scheduler/post_task.cc', - 'base/task_scheduler/priority_queue.cc', - 'base/task_scheduler/scheduler_lock_impl.cc', - 'base/task_scheduler/scheduler_single_thread_task_runner_manager.cc', - 'base/task_scheduler/scheduler_worker.cc', - 'base/task_scheduler/scheduler_worker_pool.cc', - 'base/task_scheduler/scheduler_worker_pool_impl.cc', - 'base/task_scheduler/scheduler_worker_pool_params.cc', - 'base/task_scheduler/scheduler_worker_stack.cc', - 'base/task_scheduler/scoped_set_task_priority_for_current_thread.cc', - 'base/task_scheduler/sequence.cc', - 'base/task_scheduler/sequence_sort_key.cc', - 'base/task_scheduler/service_thread.cc', - 'base/task_scheduler/task.cc', - 'base/task_scheduler/task_scheduler.cc', - 'base/task_scheduler/task_scheduler_impl.cc', - 'base/task_scheduler/task_tracker.cc', - 'base/task_scheduler/task_traits.cc', - 'base/third_party/dmg_fp/dtoa_wrapper.cc', - 'base/third_party/dmg_fp/g_fmt.cc', - 'base/third_party/icu/icu_utf.cc', - 'base/third_party/nspr/prtime.cc', - 'base/threading/post_task_and_reply_impl.cc', - 'base/threading/scoped_blocking_call.cc', - 'base/threading/sequence_local_storage_map.cc', - 'base/threading/sequenced_task_runner_handle.cc', - 'base/threading/simple_thread.cc', - 'base/threading/thread.cc', - 'base/threading/thread_checker_impl.cc', - 'base/threading/thread_collision_warner.cc', - 'base/threading/thread_id_name_manager.cc', - 'base/threading/thread_local_storage.cc', - 'base/threading/thread_restrictions.cc', - 'base/threading/thread_task_runner_handle.cc', - 'base/time/clock.cc', - 'base/time/default_clock.cc', - 'base/time/default_tick_clock.cc', - 'base/time/tick_clock.cc', - 'base/time/time.cc', - 'base/timer/elapsed_timer.cc', - 'base/timer/timer.cc', - 'base/trace_event/category_registry.cc', - 'base/trace_event/event_name_filter.cc', - 'base/trace_event/heap_profiler_allocation_context.cc', - 'base/trace_event/heap_profiler_allocation_context_tracker.cc', - 'base/trace_event/heap_profiler_event_filter.cc', - 'base/trace_event/heap_profiler_heap_dump_writer.cc', - 'base/trace_event/heap_profiler_serialization_state.cc', - 'base/trace_event/heap_profiler_stack_frame_deduplicator.cc', - 'base/trace_event/heap_profiler_type_name_deduplicator.cc', - 'base/trace_event/malloc_dump_provider.cc', - 'base/trace_event/memory_allocator_dump.cc', - 'base/trace_event/memory_allocator_dump_guid.cc', - 'base/trace_event/memory_dump_manager.cc', - 'base/trace_event/memory_dump_provider_info.cc', - 'base/trace_event/memory_dump_request_args.cc', - 'base/trace_event/memory_dump_scheduler.cc', - 'base/trace_event/memory_infra_background_whitelist.cc', - 'base/trace_event/memory_peak_detector.cc', - 'base/trace_event/memory_usage_estimator.cc', - 'base/trace_event/process_memory_dump.cc', - 'base/trace_event/trace_buffer.cc', - 'base/trace_event/trace_config.cc', - 'base/trace_event/trace_config_category_filter.cc', - 'base/trace_event/trace_event_argument.cc', - 'base/trace_event/trace_event_filter.cc', - 'base/trace_event/trace_event_impl.cc', - 'base/trace_event/trace_event_memory_overhead.cc', - 'base/trace_event/trace_log.cc', - 'base/trace_event/trace_log_constants.cc', - 'base/trace_event/tracing_agent.cc', - 'base/unguessable_token.cc', - 'base/value_iterators.cc', - 'base/values.cc', - 'base/vlog.cc', - ]) - - if is_win: - static_libraries['base']['sources'].extend([ - 'base/memory/platform_shared_memory_region_win.cc' - ]) - elif is_mac: - static_libraries['base']['sources'].extend([ - 'base/memory/platform_shared_memory_region_mac.cc' - ]) - elif is_posix: - static_libraries['base']['sources'].extend([ - 'base/memory/platform_shared_memory_region_posix.cc' - ]) - - if is_posix: - static_libraries['base']['sources'].extend([ - 'base/base_paths_posix.cc', - 'base/debug/debugger_posix.cc', - 'base/debug/stack_trace_posix.cc', - 'base/files/file_enumerator_posix.cc', - 'base/files/file_descriptor_watcher_posix.cc', - 'base/files/file_posix.cc', - 'base/files/file_util_posix.cc', - 'base/files/memory_mapped_file_posix.cc', - 'base/memory/shared_memory_helper.cc', - 'base/message_loop/message_pump_libevent.cc', - 'base/posix/file_descriptor_shuffle.cc', - 'base/posix/global_descriptors.cc', - 'base/posix/safe_strerror.cc', - 'base/process/kill_posix.cc', - 'base/process/process_handle_posix.cc', - 'base/process/process_metrics_posix.cc', - 'base/process/process_posix.cc', - 'base/rand_util_posix.cc', - 'base/strings/string16.cc', - 'base/synchronization/condition_variable_posix.cc', - 'base/synchronization/lock_impl_posix.cc', - 'base/sys_info_posix.cc', - 'base/task_scheduler/task_tracker_posix.cc', - 'base/threading/platform_thread_internal_posix.cc', - 'base/threading/platform_thread_posix.cc', - 'base/threading/thread_local_storage_posix.cc', - 'base/time/time_conversion_posix.cc', - ]) - static_libraries['libevent'] = { - 'sources': [ - 'base/third_party/libevent/buffer.c', - 'base/third_party/libevent/evbuffer.c', - 'base/third_party/libevent/evdns.c', - 'base/third_party/libevent/event.c', - 'base/third_party/libevent/event_tagging.c', - 'base/third_party/libevent/evrpc.c', - 'base/third_party/libevent/evutil.c', - 'base/third_party/libevent/http.c', - 'base/third_party/libevent/log.c', - 'base/third_party/libevent/poll.c', - 'base/third_party/libevent/select.c', - 'base/third_party/libevent/signal.c', - 'base/third_party/libevent/strlcpy.c', - ], - 'tool': 'cc', - 'include_dirs': [], - 'cflags': cflags + ['-DHAVE_CONFIG_H'], - } - - if is_linux or is_aix: - static_libraries['xdg_user_dirs'] = { - 'sources': [ - 'base/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc', - ], - 'tool': 'cxx', - } - static_libraries['base']['sources'].extend([ - 'base/memory/shared_memory_handle_posix.cc', - 'base/memory/shared_memory_posix.cc', - 'base/nix/xdg_util.cc', - 'base/process/internal_linux.cc', - 'base/process/memory_linux.cc', - 'base/process/process_handle_linux.cc', - 'base/process/process_info_linux.cc', - 'base/process/process_iterator_linux.cc', - 'base/process/process_linux.cc', - 'base/process/process_metrics_linux.cc', - 'base/strings/sys_string_conversions_posix.cc', - 'base/synchronization/waitable_event_posix.cc', - 'base/sys_info_linux.cc', - 'base/time/time_exploded_posix.cc', - 'base/time/time_now_posix.cc', - 'base/threading/platform_thread_linux.cc', - ]) - if is_linux: - libcxx_root = SRC_ROOT + '/buildtools/third_party/libc++/trunk' - libcxxabi_root = SRC_ROOT + '/buildtools/third_party/libc++abi/trunk' - cflags_cc.extend([ - '-nostdinc++', - '-isystem' + libcxx_root + '/include', - '-isystem' + libcxxabi_root + '/include', - ]) - ldflags.extend(['-nodefaultlibs']) - libs.extend([ - '-lc', - '-lgcc_s', - '-lm', - '-lpthread', - ]) - static_libraries['libc++'] = { - 'sources': [ - libcxx_root + '/src/algorithm.cpp', - libcxx_root + '/src/any.cpp', - libcxx_root + '/src/bind.cpp', - libcxx_root + '/src/chrono.cpp', - libcxx_root + '/src/condition_variable.cpp', - libcxx_root + '/src/debug.cpp', - libcxx_root + '/src/exception.cpp', - libcxx_root + '/src/functional.cpp', - libcxx_root + '/src/future.cpp', - libcxx_root + '/src/hash.cpp', - libcxx_root + '/src/ios.cpp', - libcxx_root + '/src/iostream.cpp', - libcxx_root + '/src/locale.cpp', - libcxx_root + '/src/memory.cpp', - libcxx_root + '/src/mutex.cpp', - libcxx_root + '/src/new.cpp', - libcxx_root + '/src/optional.cpp', - libcxx_root + '/src/random.cpp', - libcxx_root + '/src/regex.cpp', - libcxx_root + '/src/shared_mutex.cpp', - libcxx_root + '/src/stdexcept.cpp', - libcxx_root + '/src/string.cpp', - libcxx_root + '/src/strstream.cpp', - libcxx_root + '/src/system_error.cpp', - libcxx_root + '/src/thread.cpp', - libcxx_root + '/src/typeinfo.cpp', - libcxx_root + '/src/utility.cpp', - libcxx_root + '/src/valarray.cpp', - libcxx_root + '/src/variant.cpp', - libcxx_root + '/src/vector.cpp', - ], - 'tool': 'cxx', - 'cflags': cflags + [ - '-D_LIBCPP_NO_EXCEPTIONS', - '-D_LIBCPP_BUILDING_LIBRARY', - '-DLIBCXX_BUILDING_LIBCXXABI', - ] - } - static_libraries['libc++abi'] = { - 'sources': [ - libcxxabi_root + '/src/abort_message.cpp', - libcxxabi_root + '/src/cxa_aux_runtime.cpp', - libcxxabi_root + '/src/cxa_default_handlers.cpp', - libcxxabi_root + '/src/cxa_demangle.cpp', - libcxxabi_root + '/src/cxa_exception_storage.cpp', - libcxxabi_root + '/src/cxa_guard.cpp', - libcxxabi_root + '/src/cxa_handlers.cpp', - libcxxabi_root + '/src/cxa_noexception.cpp', - libcxxabi_root + '/src/cxa_unexpected.cpp', - libcxxabi_root + '/src/cxa_vector.cpp', - libcxxabi_root + '/src/cxa_virtual.cpp', - libcxxabi_root + '/src/fallback_malloc.cpp', - libcxxabi_root + '/src/private_typeinfo.cpp', - libcxxabi_root + '/src/stdlib_exception.cpp', - libcxxabi_root + '/src/stdlib_stdexcept.cpp', - libcxxabi_root + '/src/stdlib_typeinfo.cpp', - ], - 'tool': 'cxx', - 'cflags': cflags + [ - '-DLIBCXXABI_SILENT_TERMINATE', - '-D_LIBCXXABI_NO_EXCEPTIONS', - ] - } - static_libraries['base']['sources'].extend([ - 'base/allocator/allocator_shim.cc', - 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc', - ]) - libs.extend(['-lrt', '-latomic']) - static_libraries['libevent']['include_dirs'].extend([ - os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'linux') - ]) - static_libraries['libevent']['sources'].extend([ - 'base/third_party/libevent/epoll.c', - ]) - else: - ldflags.extend(['-pthread']) - libs.extend(['-lrt']) - static_libraries['base']['sources'].extend([ - 'base/process/internal_aix.cc' - ]) - static_libraries['libevent']['include_dirs'].extend([ - os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'aix') - ]) - static_libraries['libevent']['include_dirs'].extend([ - os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'compat') - ]) - - if is_mac: - static_libraries['base']['sources'].extend([ - 'base/base_paths_mac.mm', - 'base/files/file_util_mac.mm', - 'base/mac/bundle_locations.mm', - 'base/mac/call_with_eh_frame.cc', - 'base/mac/call_with_eh_frame_asm.S', - 'base/mac/foundation_util.mm', - 'base/mac/mach_logging.cc', - 'base/mac/scoped_mach_port.cc', - 'base/mac/scoped_mach_vm.cc', - 'base/mac/scoped_nsautorelease_pool.mm', - 'base/memory/shared_memory_handle_mac.cc', - 'base/memory/shared_memory_mac.cc', - 'base/message_loop/message_pump_mac.mm', - 'base/process/process_handle_mac.cc', - 'base/process/process_info_mac.cc', - 'base/process/process_iterator_mac.cc', - 'base/process/process_metrics_mac.cc', - 'base/strings/sys_string_conversions_mac.mm', - 'base/synchronization/waitable_event_mac.cc', - 'base/sys_info_mac.mm', - 'base/time/time_exploded_posix.cc', - 'base/time/time_mac.cc', - 'base/threading/platform_thread_mac.mm', - ]) - static_libraries['libevent']['include_dirs'].extend([ - os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'mac') - ]) - static_libraries['libevent']['sources'].extend([ - 'base/third_party/libevent/kqueue.c', - ]) - - libs.extend([ - '-framework', 'AppKit', - '-framework', 'CoreFoundation', - '-framework', 'Foundation', - '-framework', 'Security', - ]) - - if is_win: - static_libraries['base']['sources'].extend([ - "base/allocator/partition_allocator/address_space_randomization.cc", - 'base/allocator/partition_allocator/page_allocator.cc', - "base/allocator/partition_allocator/spin_lock.cc", - 'base/base_paths_win.cc', - 'base/cpu.cc', - 'base/debug/close_handle_hook_win.cc', - 'base/debug/debugger.cc', - 'base/debug/debugger_win.cc', - 'base/debug/profiler.cc', - 'base/debug/stack_trace_win.cc', - 'base/file_version_info_win.cc', - 'base/files/file_enumerator_win.cc', - 'base/files/file_path_watcher_win.cc', - 'base/files/file_util_win.cc', - 'base/files/file_win.cc', - 'base/files/memory_mapped_file_win.cc', - 'base/guid.cc', - 'base/logging_win.cc', - 'base/memory/memory_pressure_monitor_win.cc', - 'base/memory/shared_memory_handle_win.cc', - 'base/memory/shared_memory_win.cc', - 'base/message_loop/message_pump_win.cc', - 'base/native_library_win.cc', - 'base/power_monitor/power_monitor_device_source_win.cc', - 'base/process/kill_win.cc', - 'base/process/launch_win.cc', - 'base/process/memory_win.cc', - 'base/process/process_handle_win.cc', - 'base/process/process_info_win.cc', - 'base/process/process_iterator_win.cc', - 'base/process/process_metrics_win.cc', - 'base/process/process_win.cc', - 'base/profiler/native_stack_sampler_win.cc', - 'base/profiler/win32_stack_frame_unwinder.cc', - 'base/rand_util_win.cc', - 'base/strings/sys_string_conversions_win.cc', - 'base/sync_socket_win.cc', - 'base/synchronization/condition_variable_win.cc', - 'base/synchronization/lock_impl_win.cc', - 'base/synchronization/waitable_event_watcher_win.cc', - 'base/synchronization/waitable_event_win.cc', - 'base/sys_info_win.cc', - 'base/threading/platform_thread_win.cc', - 'base/threading/thread_local_storage_win.cc', - 'base/time/time_win.cc', - 'base/timer/hi_res_timer_manager_win.cc', - 'base/trace_event/trace_event_etw_export_win.cc', - 'base/win/core_winrt_util.cc', - 'base/win/enum_variant.cc', - 'base/win/event_trace_controller.cc', - 'base/win/event_trace_provider.cc', - 'base/win/i18n.cc', - 'base/win/iat_patch_function.cc', - 'base/win/iunknown_impl.cc', - 'base/win/message_window.cc', - 'base/win/object_watcher.cc', - 'base/win/pe_image.cc', - 'base/win/process_startup_helper.cc', - 'base/win/registry.cc', - 'base/win/resource_util.cc', - 'base/win/scoped_bstr.cc', - 'base/win/scoped_com_initializer.cc', - 'base/win/scoped_handle.cc', - 'base/win/scoped_handle_verifier.cc', - 'base/win/scoped_process_information.cc', - 'base/win/scoped_variant.cc', - 'base/win/scoped_winrt_initializer.cc', - 'base/win/shortcut.cc', - 'base/win/startup_information.cc', - 'base/win/wait_chain.cc', - 'base/win/win_util.cc', - 'base/win/windows_version.cc', - 'base/win/wrapped_window_proc.cc', - ]) - - libs.extend([ - 'advapi32.lib', - 'dbghelp.lib', - 'kernel32.lib', - 'ole32.lib', - 'shell32.lib', - 'user32.lib', - 'userenv.lib', - 'version.lib', - 'winmm.lib', - 'ws2_32.lib', - 'Shlwapi.lib', - ]) - - # we just build static libraries that GN needs - executables['gn']['libs'].extend(static_libraries.keys()) - - write_generic_ninja(path, static_libraries, executables, cc, cxx, ar, ld, - cflags, cflags_cc, ldflags, include_dirs, libs) - -def build_gn_with_gn(temp_gn, build_dir, options): - gn_gen_args = options.gn_gen_args or '' - if not options.debug: - gn_gen_args += ' is_debug=false' - cmd = [temp_gn, 'gen', build_dir, '--args=%s' % gn_gen_args, - "--root="+SRC_ROOT - ] - check_call(cmd) - - cmd = ['ninja', '-C', build_dir, '-w', 'dupbuild=err'] - if options.verbose: - cmd.append('-v') - cmd.append('gn') - check_call(cmd) - - # build.ninja currently refers back to gn from the temporary directory. - # Regenerate the build files using the gn we just built so that the reference - # gets updated to "./gn". - cmd = [os.path.join(build_dir, 'gn'), 'gen', build_dir, - '--args=%s' % gn_gen_args] - check_call(cmd) - - if not options.debug and not is_win: - check_call(['strip', os.path.join(build_dir, 'gn')]) - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:]))
diff --git a/tools/gn/command_args.cc b/tools/gn/command_args.cc index 9fbf67b..b3c6862 100644 --- a/tools/gn/command_args.cc +++ b/tools/gn/command_args.cc
@@ -16,7 +16,7 @@ #include "base/process/launch.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/commands.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/input_file.h"
diff --git a/tools/gn/commands.cc b/tools/gn/commands.cc index 59d2391..38d672f 100644 --- a/tools/gn/commands.cc +++ b/tools/gn/commands.cc
@@ -8,7 +8,7 @@ #include "base/environment.h" #include "base/strings/string_split.h" #include "base/values.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/builder.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/item.h"
diff --git a/tools/gn/escape.cc b/tools/gn/escape.cc index 685a100..1bcc1e7 100644 --- a/tools/gn/escape.cc +++ b/tools/gn/escape.cc
@@ -7,7 +7,7 @@ #include <stddef.h> #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" namespace {
diff --git a/tools/gn/exec_process.cc b/tools/gn/exec_process.cc index 5453446..1009cec 100644 --- a/tools/gn/exec_process.cc +++ b/tools/gn/exec_process.cc
@@ -14,7 +14,7 @@ #include "base/process/kill.h" #include "base/process/launch.h" #include "base/process/process.h" -#include "build/build_config.h" +#include "build_config.h" #if defined(OS_WIN) #include <windows.h>
diff --git a/tools/gn/exec_process_unittest.cc b/tools/gn/exec_process_unittest.cc index 51ce7b7..91b4d9f 100644 --- a/tools/gn/exec_process_unittest.cc +++ b/tools/gn/exec_process_unittest.cc
@@ -7,7 +7,7 @@ #include "base/command_line.h" #include "base/files/scoped_temp_dir.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_WIN)
diff --git a/tools/gn/filesystem_utils.cc b/tools/gn/filesystem_utils.cc index f9f6794..37582a9 100644 --- a/tools/gn/filesystem_utils.cc +++ b/tools/gn/filesystem_utils.cc
@@ -10,7 +10,7 @@ #include "base/logging.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/location.h" #include "tools/gn/settings.h" #include "tools/gn/source_dir.h"
diff --git a/tools/gn/filesystem_utils_unittest.cc b/tools/gn/filesystem_utils_unittest.cc index dc2e512..e88cbc2 100644 --- a/tools/gn/filesystem_utils_unittest.cc +++ b/tools/gn/filesystem_utils_unittest.cc
@@ -8,7 +8,7 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/platform_thread.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/target.h"
diff --git a/tools/gn/function_exec_script.cc b/tools/gn/function_exec_script.cc index 0f6397c..1c5c517 100644 --- a/tools/gn/function_exec_script.cc +++ b/tools/gn/function_exec_script.cc
@@ -9,7 +9,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_restrictions.h" #include "base/time/time.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/err.h" #include "tools/gn/exec_process.h" #include "tools/gn/filesystem_utils.h"
diff --git a/tools/gn/function_get_path_info_unittest.cc b/tools/gn/function_get_path_info_unittest.cc index 79020df..5b1b314 100644 --- a/tools/gn/function_get_path_info_unittest.cc +++ b/tools/gn/function_get_path_info_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/functions.h" #include "tools/gn/test_with_scope.h"
diff --git a/tools/gn/function_rebase_path_unittest.cc b/tools/gn/function_rebase_path_unittest.cc index d89b56f..719511d 100644 --- a/tools/gn/function_rebase_path_unittest.cc +++ b/tools/gn/function_rebase_path_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/functions.h" #include "tools/gn/parse_tree.h"
diff --git a/tools/gn/function_write_file.cc b/tools/gn/function_write_file.cc index bfa79b6..31bfc32 100644 --- a/tools/gn/function_write_file.cc +++ b/tools/gn/function_write_file.cc
@@ -9,7 +9,7 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/err.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/functions.h"
diff --git a/tools/gn/gn_main.cc b/tools/gn/gn_main.cc index 4d51158..dac41f3 100644 --- a/tools/gn/gn_main.cc +++ b/tools/gn/gn_main.cc
@@ -12,7 +12,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/sys_info.h" #include "base/task_scheduler/task_scheduler.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/commands.h" #include "tools/gn/err.h" #include "tools/gn/location.h"
diff --git a/tools/gn/label.cc b/tools/gn/label.cc index 26e452f..5617a3a 100644 --- a/tools/gn/label.cc +++ b/tools/gn/label.cc
@@ -6,7 +6,7 @@ #include "base/logging.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/err.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/parse_tree.h"
diff --git a/tools/gn/label_pattern.cc b/tools/gn/label_pattern.cc index b2568e7..5472be0 100644 --- a/tools/gn/label_pattern.cc +++ b/tools/gn/label_pattern.cc
@@ -7,7 +7,7 @@ #include <stddef.h> #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/err.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/value.h"
diff --git a/tools/gn/label_unittest.cc b/tools/gn/label_unittest.cc index 986aa9b..fbd8e40 100644 --- a/tools/gn/label_unittest.cc +++ b/tools/gn/label_unittest.cc
@@ -5,7 +5,7 @@ #include <stddef.h> #include "base/macros.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/err.h" #include "tools/gn/label.h"
diff --git a/tools/gn/ninja_action_target_writer_unittest.cc b/tools/gn/ninja_action_target_writer_unittest.cc index 445a31a..d4f3d4a 100644 --- a/tools/gn/ninja_action_target_writer_unittest.cc +++ b/tools/gn/ninja_action_target_writer_unittest.cc
@@ -5,7 +5,7 @@ #include <algorithm> #include <sstream> -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/ninja_action_target_writer.h" #include "tools/gn/pool.h"
diff --git a/tools/gn/ninja_binary_target_writer_unittest.cc b/tools/gn/ninja_binary_target_writer_unittest.cc index acbd88b..7224e04 100644 --- a/tools/gn/ninja_binary_target_writer_unittest.cc +++ b/tools/gn/ninja_binary_target_writer_unittest.cc
@@ -8,7 +8,7 @@ #include <sstream> #include <utility> -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/config.h" #include "tools/gn/scheduler.h"
diff --git a/tools/gn/ninja_build_writer.cc b/tools/gn/ninja_build_writer.cc index 075592c..3af49dd 100644 --- a/tools/gn/ninja_build_writer.cc +++ b/tools/gn/ninja_build_writer.cc
@@ -16,7 +16,7 @@ #include "base/process/process_handle.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/build_settings.h" #include "tools/gn/builder.h" #include "tools/gn/err.h"
diff --git a/tools/gn/path_output.cc b/tools/gn/path_output.cc index 61c4ee0..9e1aef8 100644 --- a/tools/gn/path_output.cc +++ b/tools/gn/path_output.cc
@@ -5,7 +5,7 @@ #include "tools/gn/path_output.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/output_file.h" #include "tools/gn/string_utils.h"
diff --git a/tools/gn/path_output_unittest.cc b/tools/gn/path_output_unittest.cc index 6a7da19..f6051ed 100644 --- a/tools/gn/path_output_unittest.cc +++ b/tools/gn/path_output_unittest.cc
@@ -5,7 +5,7 @@ #include <sstream> #include "base/files/file_path.h" -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/output_file.h" #include "tools/gn/path_output.h"
diff --git a/tools/gn/settings.cc b/tools/gn/settings.cc index d206f5c..cf4aece 100644 --- a/tools/gn/settings.cc +++ b/tools/gn/settings.cc
@@ -5,7 +5,7 @@ #include "tools/gn/settings.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/filesystem_utils.h" Settings::Settings(const BuildSettings* build_settings,
diff --git a/tools/gn/setup.cc b/tools/gn/setup.cc index 36b6ec5..69def2e 100644 --- a/tools/gn/setup.cc +++ b/tools/gn/setup.cc
@@ -22,7 +22,7 @@ #include "base/strings/string_util.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/command_format.h" #include "tools/gn/commands.h" #include "tools/gn/filesystem_utils.h"
diff --git a/tools/gn/source_dir.cc b/tools/gn/source_dir.cc index 17eeb61..31f9582 100644 --- a/tools/gn/source_dir.cc +++ b/tools/gn/source_dir.cc
@@ -5,7 +5,7 @@ #include "tools/gn/source_dir.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/source_file.h"
diff --git a/tools/gn/source_dir_unittest.cc b/tools/gn/source_dir_unittest.cc index 80f9a5f..87d8e1b 100644 --- a/tools/gn/source_dir_unittest.cc +++ b/tools/gn/source_dir_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/err.h" #include "tools/gn/source_dir.h"
diff --git a/tools/gn/source_file.cc b/tools/gn/source_file.cc index befc5a5..d8d6c02 100644 --- a/tools/gn/source_file.cc +++ b/tools/gn/source_file.cc
@@ -5,7 +5,7 @@ #include "tools/gn/source_file.h" #include "base/logging.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/filesystem_utils.h" #include "tools/gn/source_dir.h"
diff --git a/tools/gn/standard_out.cc b/tools/gn/standard_out.cc index 8a6b7ef..f508e8c 100644 --- a/tools/gn/standard_out.cc +++ b/tools/gn/standard_out.cc
@@ -13,7 +13,7 @@ #include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" -#include "build/build_config.h" +#include "build_config.h" #include "tools/gn/switches.h" #if defined(OS_WIN)
diff --git a/tools/gn/substitution_writer_unittest.cc b/tools/gn/substitution_writer_unittest.cc index d98d4ce..9dc1781 100644 --- a/tools/gn/substitution_writer_unittest.cc +++ b/tools/gn/substitution_writer_unittest.cc
@@ -4,7 +4,7 @@ #include <sstream> -#include "build/build_config.h" +#include "build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "tools/gn/err.h" #include "tools/gn/escape.h"