| # Copyright 2016 The Fuchsia 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 directs GN to all the other key files. |
| |
| # The location of the build configuration file. |
| buildconfig = "//build/config/BUILDCONFIG.gn" |
| |
| # The secondary source root is a parallel directory tree where GN build files are placed when they |
| # can not be placed directly in the source tree, e.g. for third party source trees. |
| secondary_source = "//build/secondary/" |
| |
| # https://fxbug.dev/363930634: set this to true once all actions in the build have been fixed, |
| # of if we decide to create depfile parent directories in Ninja. |
| no_stamp_files = true |
| |
| # Only instantiate targets in the default toolchain that are dependencies |
| # of any target defined in //BUILD.gn, to significantly reduce the size of the |
| # GN build graph and of the Ninja build plan. |
| root_patterns = [ |
| # All targets defined in //BUILD.gn |
| "//:*", |
| ] |
| |
| # The executable used to execute scripts in action and exec_script. This is often an interpreter for |
| # projects that use a primary scripting language. In this project, we use several different kinds of |
| # programs including scripts in different languages and native binaries. An empty script_executable |
| # string tells GN to directly run the "script". |
| script_executable = "" |
| |
| # Require Ninja 1.10.0 to support multiple outputs from a rule with a depfile. |
| ninja_required_version = "1.10.0" |
| |
| # Enable checking for all source code we control. |
| no_check_targets = [ "//third_party/*" ] |
| |
| # Use of `exec_script()` is discouraged for performance reasons. |
| # See: https://fuchsia.dev/fuchsia-src/development/build/build_system/best_practices_templates#exec-script |
| exec_script_whitelist = [ |
| "//build/config/fuchsia/BUILD.gn", |
| "//build/config/fuchsia/platform_version.gni", |
| "//build/config/mac/mac_sdk.gni", |
| "//build/config/profile/BUILD.gn", |
| "//build/config/sanitizers/BUILD.gn", |
| "//build/icu/build_config.gni", |
| "//build/toolchain/default_concurrent_jobs.gni", |
| "//build/toolchain/zircon/zircon_toolchain.gni", |
| "//zircon/kernel/arch/x86/phys/BUILD.gn", |
| ] |
| |
| check_system_includes = true |
| |
| # Causes a Clang compilation database to be written to $root_build_dir/compile_commands.json. It |
| # will contain the compilation commands for these patterns and all of their recursive dependencies. |
| export_compile_commands = [ "//:default" ] |
| |
| # These arguments override the default values for items in a declare_args block. "gn args" in turn |
| # can override these. |
| # |
| # In general the value for a build arg in a declare_args block should be the default. In some |
| # cases, a third party dependency will want different defaults for being built as part of Fuchsia |
| # vs. being built standalone. In this case, the Fuchsia defaults should go here. There should be no |
| # overrides here for values declared in the main Fuchsia repository. |
| # |
| # Important note for defining defaults: This file is executed before the BUILDCONFIG.gn file. That |
| # file sets up the global variables like "target_os". This means that the default_args can not depend |
| # on the platform, architecture, or other build parameters. If you really need that, the other repo |
| # should define a flag that toggles on a behavior that implements the additional logic required by |
| # Fuchsia to set the variables. |
| default_args = { |
| # Specify Pigweed backends for Fuchsia. |
| pw_assert_BACKEND = "//third_party/pigweed/backends/pw_assert" |
| pw_log_BACKEND = "//third_party/pigweed/backends/pw_log" |
| pw_chrono_SYSTEM_CLOCK_BACKEND = |
| "//third_party/pigweed/src/pw_chrono_stl:system_clock" |
| pw_sync_MUTEX_BACKEND = "//third_party/pigweed/src/pw_sync_stl:mutex_backend" |
| pw_sys_io_BACKEND = "//third_party/pigweed/src/pw_sys_io_stdio" |
| pw_thread_SLEEP_BACKEND = "//third_party/pigweed/src/pw_thread_stl:sleep" |
| |
| pw_sync_THREAD_NOTIFICATION_BACKEND = "//third_party/pigweed/src/pw_sync:binary_semaphore_thread_notification_backend" |
| pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND = "//third_party/pigweed/src/pw_sync:binary_semaphore_timed_thread_notification_backend" |
| pw_chrono_SYSTEM_TIMER_BACKEND = |
| "//third_party/pigweed/src/pw_chrono_stl:system_timer" |
| pw_sync_BINARY_SEMAPHORE_BACKEND = |
| "//third_party/pigweed/src/pw_sync_stl:binary_semaphore_backend" |
| |
| # Pigweed configs for Fuchsia. |
| pw_function_CONFIG = |
| "//third_party/pigweed/src/pw_function:enable_dynamic_allocation" |
| |
| # Some Pigweed module implementations need to be link dependencies to avoid circular dependencies. |
| pw_build_LINK_DEPS = [ |
| "//third_party/pigweed/src/pw_assert:impl", |
| "//third_party/pigweed/src/pw_log:impl", |
| ] |
| |
| # Configures Pigweed to use Fuchsia source directly instead of Pigweed's copy. |
| dir_pw_third_party_fuchsia = "//" |
| |
| # Configures Pigweed to use Fuchsia's boringssl target. |
| pw_third_party_boringssl_ALIAS = "//third_party/boringssl" |
| |
| # Configures Pigweed to use Fuchsia's Emboss checkout. |
| dir_pw_third_party_emboss = "//third_party/github.com/google/emboss/src" |
| |
| # Enable usage of the pw_async Pigweed module. |
| pw_async_EXPERIMENTAL_MODULE_VISIBILITY = [ |
| "//third_party/pigweed/backends/pw_async_fuchsia:*", |
| "//third_party/pigweed:*", |
| "//src/connectivity/bluetooth/core/bt-host/*", |
| ] |
| |
| pw_async_TASK_BACKEND = "//third_party/pigweed/backends/pw_async_fuchsia:task" |
| |
| pw_async_FAKE_DISPATCHER_BACKEND = |
| "//third_party/pigweed/backends/pw_async_fuchsia:fake_dispatcher" |
| |
| # Use protoc from the Fuchsia build for Pigweed |
| pw_protobuf_compiler_PROTOC_TARGET = "//third_party/protobuf:protoc" |
| pw_protobuf_compiler_PROTOC_BINARY = "host_x64/protoc" |
| |
| # Settings for pigweed's CHRE module. |
| dir_pw_third_party_chre = "//third_party/chre/src" |
| pw_chre_CONFIG = "//third_party/chre:chre_config" |
| pw_chre_PLATFORM_BACKEND = "//third_party/pigweed/src/pw_chre:chre_backend" |
| pw_chre_PLATFORM_BACKEND_HEADERS = |
| "//third_party/pigweed/src/pw_chre:chre_backend_headers" |
| |
| pw_unit_test_MAIN = "//src/lib/fxl/test:gtest_main" |
| pw_unit_test_GOOGLETEST_BACKEND = "//third_party/googletest:gmock_no_testonly" |
| pw_unit_test_BACKEND = "//third_party/pigweed/src/pw_unit_test:googletest" |
| pw_unit_test_TESTONLY = true |
| |
| # Point Pigweed's ICU target to Fuchsia's checkout. |
| dir_pw_third_party_icu = "//third_party/icu/default" |
| |
| # This is a Pigweed build configuration argument that removes default configs |
| # from pw_* targets. Due to linker errors ("undefined symbol: typeinfo") when |
| # using source_set with pw_source_set, we need to remove the reduced_size |
| # config that adds the "-fno-rtti" flag. |
| remove_default_configs = [ "//third_party/pigweed/src/pw_build:reduced_size" ] |
| } |