Deprecate obsolete repository
Change-Id: If849c8ad558f0d74fb3d87ebc57e1606c26c4adb
Reviewed-on: https://fuchsia-review.googlesource.com/c/build/+/418344
Reviewed-by: Mahesh Saripalli <maheshsr@google.com>
Commit-Queue: Mahesh Saripalli <maheshsr@google.com>
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index de820df..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,22 +0,0 @@
-/.jiri/
-*.pyc
-
-*~
-*.DS_Store
-
-# Thumbnails
-._*
-
-# swap
-[._]*.s[a-w][a-z]
-[._]s[a-w][a-z]
-# session
-Session.vim
-# temporary
-.netrwhist
-*~
-
-cipd.gni
-.cipd/*
-last-update
-third_party/
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 4c61558..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,9 +0,0 @@
-# This is the list of Fuchsia Authors.
-
-# Names should be added to this file as one of
-# Organization's name
-# Individual's name <submission email address>
-# Individual's name <submission email address> <email2> <emailN>
-
-Google Inc.
-The Chromium Authors
diff --git a/BUILD.gn b/BUILD.gn
deleted file mode 100644
index 11fc83b..0000000
--- a/BUILD.gn
+++ /dev/null
@@ -1,283 +0,0 @@
-# Copyright 2018 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.
-#
-
-group("bare_package_url_whitelist") {
- # ________ _________ ________ ________
- # |\ ____\|\___ ___\\ __ \|\ __ \
- # \ \ \___|\|___ \ \_\ \ \|\ \ \ \|\ \
- # \ \_____ \ \ \ \ \ \ \\\ \ \ ____\
- # \|____|\ \ \ \ \ \ \ \\\ \ \ \___|
- # ____\_\ \ \ \__\ \ \_______\ \__\
- # |\_________\ \|__| \|_______|\|__|
- # \|_________|
- # This is a whitelist of packages that have components that launch with legacy
- # bare package URLs. Do not add to this list. Please launch your components
- # with fuchsia-pkg URLs instead.
- visibility = [
- "//garnet/bin/appmgr/integration_tests:*",
- "//garnet/bin/appmgr/integration_tests/components:*",
- "//garnet/bin/appmgr/integration_tests/inspect:*",
- "//garnet/bin/appmgr/integration_tests/mock_runner:*",
- "//garnet/bin/appmgr/integration_tests/sandbox/features/build-info:*",
- "//garnet/bin/appmgr/integration_tests/sandbox/features/persistent-storage:*",
- "//garnet/bin/appmgr/integration_tests/sandbox/features/shell:*",
- "//garnet/bin/appmgr/integration_tests/sandbox/features/system-temp:*",
- "//garnet/bin/appmgr/integration_tests/sandbox/services:*",
- "//garnet/bin/auth:*",
- "//garnet/bin/auth/testing/account_manager_integration:*",
- "//garnet/bin/bluetooth/bt-gap:*",
- "//garnet/bin/bluetooth/bt-mgr:*",
- "//garnet/bin/bluetooth/bt-snoop:*",
- "//garnet/bin/bluetooth/profiles/bt-a2dp-sink:*",
- "//garnet/bin/bluetooth/tools/bt-snoop-cli:*",
- "//garnet/bin/catapult_converter:*",
- "//garnet/bin/chrealm/integration_tests:*",
- "//garnet/bin/cobalt/app:*",
- "//garnet/bin/cobalt/system-metrics:*",
- "//garnet/bin/cpuperf/tests:*",
- "//garnet/bin/cpuperf_provider:*",
- "//garnet/bin/crashpad:*",
- "//garnet/bin/crashpad/test:*",
- "//garnet/bin/debug_agent:*",
- "//garnet/bin/developer/tiles:*",
- "//garnet/bin/developer/tiles_ctl:*",
- "//garnet/bin/device_settings:*",
- "//garnet/bin/dhcpd:*",
- "//garnet/bin/dhcpd_test_client:*",
- "//garnet/bin/display_capture_test:*",
- "//garnet/bin/display_manager:*",
- "//garnet/bin/fidl_compatibility_test:*",
- "//garnet/bin/fonts:*",
- "//garnet/bin/glob:*",
- "//garnet/bin/guest/integration:*",
- "//garnet/bin/guest/manager:*",
- "//garnet/bin/guest/pkg/linux_guest:*",
- "//garnet/bin/guest/pkg/zircon_guest:*",
- "//garnet/bin/guest/runner:*",
- "//garnet/bin/guest/vmm:*",
- "//garnet/bin/guest/vmm/device:*",
- "//garnet/bin/http:*",
- "//garnet/bin/iquery:*",
- "//garnet/bin/iquery/testing:*",
- "//garnet/bin/kernel_crash_checker:*",
- "//garnet/bin/ktrace_provider:*",
- "//garnet/bin/logger:*",
- "//garnet/bin/logger/tests:*",
- "//garnet/bin/mdns/service:*",
- "//garnet/bin/mdns/util:*",
- "//garnet/bin/media:*",
- "//garnet/bin/media/audio_core/mixer:*",
- "//garnet/bin/media/audio_core/test:*",
- "//garnet/bin/media/camera_manager:*",
- "//garnet/bin/mediaplayer:*",
- "//garnet/bin/memory_monitor:*",
- "//garnet/bin/memory_monitor/test:*",
- "//garnet/bin/net-cli:*",
- "//garnet/bin/netcfg:*",
- "//garnet/bin/netconnector:*",
- "//garnet/bin/netstack_tests:*",
- "//garnet/bin/netstack_tests/test_filter_client:*",
- "//garnet/bin/network-speed-test:*",
- "//garnet/bin/network_loader:*",
- "//garnet/bin/network_settings_server:*",
- "//garnet/bin/network_time:*",
- "//garnet/bin/network_time/test:*",
- "//garnet/bin/network_time_service:*",
- "//garnet/bin/overnet/onet:*",
- "//garnet/bin/overnet/overnetstack:*",
- "//garnet/bin/pkg_ctl:*",
- "//garnet/bin/pkg_resolver:*",
- "//garnet/bin/power_manager:*",
- "//garnet/bin/recovery_netstack:*",
- "//garnet/bin/rolldice:*",
- "//garnet/bin/run:*",
- "//garnet/bin/run/test:*",
- "//garnet/bin/run_test_component:*",
- "//garnet/bin/run_test_component/test:*",
- "//garnet/bin/scpi:*",
- "//garnet/bin/sl4f:*",
- "//garnet/bin/sshd-host:*",
- "//garnet/bin/stash:*",
- "//garnet/bin/stash_ctl:*",
- "//garnet/bin/sysmgr/integration_tests:*",
- "//garnet/bin/telephony/ril-qmi:*",
- "//garnet/bin/terminal:*",
- "//garnet/bin/thermd:*",
- "//garnet/bin/timezone:*",
- "//garnet/bin/timezone/test:*",
- "//garnet/bin/trace/tests:*",
- "//garnet/bin/trace_manager:*",
- "//garnet/bin/trace_stress:*",
- "//garnet/bin/tts:*",
- "//garnet/bin/ui:*",
- "//garnet/bin/ui/benchmarks/image_grid_cpp:*",
- "//garnet/bin/ui/recovery_ui:*",
- "//garnet/bin/ui/sketchy:*",
- "//garnet/bin/ui/tests/performance:*",
- "//garnet/bin/vulkan_loader:*",
- "//garnet/bin/wayland:*",
- "//garnet/bin/wayland/bridge:*",
- "//garnet/bin/wlan/wlan-hw-sim:*",
- "//garnet/bin/wlan/wlan-smoke-test:*",
- "//garnet/bin/wlan/wlan-stress-test:*",
- "//garnet/bin/wlan/wlancfg:*",
- "//garnet/bin/wlan/wlanstack:*",
- "//garnet/bin/xi_core:*",
- "//garnet/examples/benchmark:*",
- "//garnet/examples/camera/camera_client:*",
- "//garnet/examples/components:*",
- "//garnet/examples/escher:*",
- "//garnet/examples/fidl/echo2_client_cpp:*",
- "//garnet/examples/fidl/echo2_client_go:*",
- "//garnet/examples/fidl/echo2_client_rust:*",
- "//garnet/examples/fidl/echo2_client_rust_synchronous:*",
- "//garnet/examples/fidl/echo2_server_c:*",
- "//garnet/examples/fidl/echo2_server_cpp:*",
- "//garnet/examples/fidl/echo2_server_go:*",
- "//garnet/examples/fidl/echo2_server_rust:*",
- "//garnet/examples/fidl/heartbeat_client_go:*",
- "//garnet/examples/fidl/heartbeat_server_go:*",
- "//garnet/examples/http/example_http_server:*",
- "//garnet/examples/http/httpget_cpp:*",
- "//garnet/examples/http/httpget_rust:*",
- "//garnet/examples/intl:*",
- "//garnet/examples/intl/test:*",
- "//garnet/examples/media:*",
- "//garnet/examples/overnet/echo/client:*",
- "//garnet/examples/overnet/echo/server:*",
- "//garnet/examples/overnet/interface_passing/client:*",
- "//garnet/examples/overnet/interface_passing/server:*",
- "//garnet/examples/profiler:*",
- "//garnet/examples/rust/eth-rs:*",
- "//garnet/examples/rust/staticlib:*",
- "//garnet/examples/tcp/tcp_file_sender:*",
- "//garnet/examples/testing/test_with_environment:*",
- "//garnet/examples/ui:*",
- "//garnet/go/src/amber:*",
- "//garnet/go/src/fidl/compatibility_test:*",
- "//garnet/go/src/netstack:*",
- "//garnet/go/src/pmd:*",
- "//garnet/go/src/system_update_package:*",
- "//garnet/lib/magma:*",
- "//garnet/lib/magma/tests:*",
- "//garnet/lib/media/camera/simple_camera_server:*",
- "//garnet/lib/rust/escaped-cstring:*",
- "//garnet/lib/rust/fuchsia-pkg-uri:*",
- "//garnet/lib/ui/gfx/tests:*",
- "//garnet/lib/vulkan:*",
- "//garnet/public/lib/escher:*",
- "//garnet/public/lib/media/audio_dfx:*",
- "//garnet/public/lib/media/timeline:*",
- "//garnet/public/lib/media/transport:*",
- "//garnet/public/lib/pkg_url:*",
- "//peridot/bin/acquirers/story_info:*",
- "//peridot/bin/agents/clipboard:*",
- "//peridot/bin/basemgr:*",
- "//peridot/bin/cloud_provider_firestore:*",
- "//peridot/bin/context_engine:*",
- "//peridot/bin/ledger:*",
- "//peridot/bin/ledger/tests/benchmark:*",
- "//peridot/bin/module_resolver:*",
- "//peridot/bin/module_resolver/module_package_indexer:*",
- "//peridot/bin/sessionmgr:*",
- "//peridot/bin/sessionmgr/story_runner:*",
- "//peridot/bin/suggestion_engine:*",
- "//peridot/bin/token_manager:*",
- "//peridot/examples/simple:*",
- "//peridot/examples/swap_cpp:*",
- "//peridot/examples/todo_cpp:*",
- "//peridot/tests/benchmarks/story:*",
- "//peridot/tests/chain:*",
- "//peridot/tests/clipboard:*",
- "//peridot/tests/common:*",
- "//peridot/tests/component_context:*",
- "//peridot/tests/embed_shell:*",
- "//peridot/tests/intents:*",
- "//peridot/tests/last_focus_time:*",
- "//peridot/tests/link_context_entities:*",
- "//peridot/tests/link_data:*",
- "//peridot/tests/link_passing:*",
- "//peridot/tests/module_context:*",
- "//peridot/tests/parent_child:*",
- "//peridot/tests/queue_persistence:*",
- "//peridot/tests/session_shell:*",
- "//peridot/tests/story_shell:*",
- "//peridot/tests/suggestion:*",
- "//peridot/tests/trigger:*",
- "//topaz/app/dashboard:*",
- "//topaz/app/infinite_scroller:*",
- "//topaz/app/latin-ime:*",
- "//topaz/app/ledger/ledger_dashboard:*",
- "//topaz/app/maxwell/agents/module_suggester_dart:*",
- "//topaz/app/maxwell/agents/usage_log:*",
- "//topaz/app/perspective:*",
- "//topaz/app/spinning_cube:*",
- "//topaz/app/term:*",
- "//topaz/auth_providers/google:*",
- "//topaz/bin/accessibility_settings:*",
- "//topaz/bin/bluetooth_settings:*",
- "//topaz/bin/crasher_dart:*",
- "//topaz/bin/device_settings:*",
- "//topaz/bin/display_settings:*",
- "//topaz/bin/fidl_bindings_test/server:*",
- "//topaz/bin/fidl_bindings_test/test:*",
- "//topaz/bin/fidl_compatibility_test/dart:*",
- "//topaz/bin/flutter_screencap_test:*",
- "//topaz/bin/session_shell/capybara_session_shell:*",
- "//topaz/bin/session_shell/ermine_session_shell:*",
- "//topaz/bin/system_dashboard:*",
- "//topaz/bin/ui/benchmarks/image_grid_flutter:*",
- "//topaz/bin/userpicker_base_shell:*",
- "//topaz/bin/wifi_settings:*",
- "//topaz/bin/xi/xi_embeddable:*",
- "//topaz/bin/xi/xi_mod:*",
- "//topaz/bin/xi/xi_session_agent:*",
- "//topaz/bin/xi/xi_session_demo:*",
- "//topaz/examples/bluetooth/ble_scanner:*",
- "//topaz/examples/example_manual_relationships:*",
- "//topaz/examples/fidl:*",
- "//topaz/examples/fidl/echo_client_async_dart:*",
- "//topaz/examples/fidl/echo_server_async_dart:*",
- "//topaz/examples/fidl/fidl_bindings_performance:*",
- "//topaz/examples/ledger/todo_list:*",
- "//topaz/examples/ledger/todo_list_sledge:*",
- "//topaz/examples/ledger/vote_list_sledge:*",
- "//topaz/examples/mediaplayer/mediaplayer_flutter:*",
- "//topaz/examples/mine_digger:*",
- "//topaz/examples/modular/fibonacci_agent:*",
- "//topaz/examples/modular/multilevel_mod:*",
- "//topaz/examples/modular/shapes_mod:*",
- "//topaz/examples/modular/slider_mod:*",
- "//topaz/examples/mondrian_test:*",
- "//topaz/examples/story_shell_test:*",
- "//topaz/examples/test/driver_example_mod:*",
- "//topaz/examples/tictactoe/bin/tictactoe/game_board_mod:*",
- "//topaz/examples/tictactoe/bin/tictactoe/game_tracker_agent:*",
- "//topaz/examples/tictactoe/bin/tictactoe/scoreboard_mod:*",
- "//topaz/examples/ui/async_hello_mod:*",
- "//topaz/examples/ui/hello_mod:*",
- "//topaz/examples/ui/noodles:*",
- "//topaz/examples/ui/simple_flutter:*",
- "//topaz/examples/ui/sketchy_flutter:*",
- "//topaz/examples/ui/text_flutter:*",
- "//topaz/public/dart-pkg/zircon:*",
- "//topaz/public/dart/fuchsia_modular:*",
- "//topaz/public/dart/fuchsia_services:*",
- "//topaz/public/dart/fuchsia_vfs:*",
- "//topaz/runtime/dart:*",
- "//topaz/runtime/dart_runner:*",
- "//topaz/runtime/dart_runner/examples/goodbye_dart:*",
- "//topaz/runtime/dart_runner/examples/hello_app_dart:*",
- "//topaz/runtime/dart_runner/examples/hello_dart:*",
- "//topaz/runtime/dart_runner/integration:*",
- "//topaz/runtime/dart_runner/vmservice:*",
- "//topaz/runtime/flutter_runner:*",
- "//topaz/runtime/web_runner_prototype:*",
- "//topaz/runtime/web_view:*",
- "//topaz/shell/agents/home_work_agent:*",
- "//topaz/shell/kernel_panic:*",
- "//topaz/shell/mondrian_story_shell:*",
- ]
-}
diff --git a/Fuchsia.cmake b/Fuchsia.cmake
deleted file mode 100644
index daabba8..0000000
--- a/Fuchsia.cmake
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2017 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.
-
-# Need support for CMAKE_C_COMPILER_TARGET
-cmake_minimum_required(VERSION 3.0)
-
-set(CMAKE_SYSTEM_NAME Fuchsia)
-
-set(CMAKE_SYSROOT ${FUCHSIA_SYSROOT})
-
-if(NOT DEFINED FUCHSIA_TOOLCHAIN)
- string(TOLOWER ${CMAKE_HOST_SYSTEM_PROCESSOR} HOST_SYSTEM_PROCESSOR)
- if(HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
- set(HOST_SYSTEM_PROCESSOR "x64")
- elseif(HOST_SYSTEM_PROCESSOR STREQUAL "aarch64")
- set(HOST_SYSTEM_PROCESSOR "arm64")
- endif()
- string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} HOST_SYSTEM_NAME)
- if(HOST_SYSTEM_NAME STREQUAL "darwin")
- set(HOST_SYSTEM_NAME "mac")
- endif()
- set(FUCHSIA_TOOLCHAIN "${CMAKE_CURRENT_LIST_DIR}/../buildtools/${HOST_SYSTEM_NAME}-${HOST_SYSTEM_PROCESSOR}/clang")
-endif()
-
-if(NOT DEFINED FUCHSIA_COMPILER_TARGET)
- set(FUCHSIA_COMPILER_TARGET "${FUCHSIA_SYSTEM_PROCESSOR}-fuchsia")
-endif()
-
-set(CMAKE_C_COMPILER "${FUCHSIA_TOOLCHAIN}/bin/clang")
-set(CMAKE_C_COMPILER_TARGET ${FUCHSIA_COMPILER_TARGET} CACHE STRING "")
-set(CMAKE_CXX_COMPILER "${FUCHSIA_TOOLCHAIN}/bin/clang++")
-set(CMAKE_CXX_COMPILER_TARGET ${FUCHSIA_COMPILER_TARGET} CACHE STRING "")
-set(CMAKE_ASM_COMPILER "${FUCHSIA_TOOLCHAIN}/bin/clang")
-set(CMAKE_ASM_COMPILER_TARGET ${FUCHSIA_COMPILER_TARGET} CACHE STRING "")
-
-set(CMAKE_LINKER "${FUCHSIA_TOOLCHAIN}/bin/ld.lld" CACHE PATH "")
-set(CMAKE_AR "${FUCHSIA_TOOLCHAIN}/bin/llvm-ar" CACHE PATH "")
-set(CMAKE_RANLIB "${FUCHSIA_TOOLCHAIN}/bin/llvm-ranlib" CACHE PATH "")
-set(CMAKE_NM "${FUCHSIA_TOOLCHAIN}/bin/llvm-nm" CACHE PATH "")
-set(CMAKE_OBJCOPY "${FUCHSIA_TOOLCHAIN}/bin/llvm-objcopy" CACHE PATH "")
-set(CMAKE_OBJDUMP "${FUCHSIA_TOOLCHAIN}/bin/llvm-objdump" CACHE PATH "")
-set(CMAKE_STRIP "${FUCHSIA_TOOLCHAIN}/bin/llvm-strip" CACHE PATH "")
-
-set(CMAKE_FIND_ROOT_PATH ${FUCHSIA_SYSROOT})
-
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index ac6402f..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2016 The Fuchsia Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/MAINTAINERS b/MAINTAINERS
deleted file mode 100644
index eec9ade..0000000
--- a/MAINTAINERS
+++ /dev/null
@@ -1,4 +0,0 @@
-jamesr@google.com
-mcgrathr@google.com
-phosek@google.com
-pylaligand@google.com
diff --git a/PATENTS b/PATENTS
deleted file mode 100644
index 2746e78..0000000
--- a/PATENTS
+++ /dev/null
@@ -1,22 +0,0 @@
-Additional IP Rights Grant (Patents)
-
-"This implementation" means the copyrightable works distributed by
-Google as part of the Fuchsia project.
-
-Google hereby grants to you a perpetual, worldwide, non-exclusive,
-no-charge, royalty-free, irrevocable (except as stated in this
-section) patent license to make, have made, use, offer to sell, sell,
-import, transfer, and otherwise run, modify and propagate the contents
-of this implementation of Fuchsia, where such license applies only to
-those patent claims, both currently owned by Google and acquired in
-the future, licensable by Google that are necessarily infringed by
-this implementation. This grant does not include claims that would be
-infringed only as a consequence of further modification of this
-implementation. If you or your agent or exclusive licensee institute
-or order or agree to the institution of patent litigation or any other
-patent enforcement activity against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that this
-implementation of Fuchsia constitutes direct or contributory patent
-infringement, or inducement of patent infringement, then any patent
-rights granted to you under this License for this implementation of
-Fuchsia shall terminate as of the date such litigation is filed.
diff --git a/README.md b/README.md
index ad26bed..07f3c01 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
-# Build
+# Obsolete
-Shared build configuration for Fuchsia.
+This repository has moved into Fuchsia's main repository:
+https://fuchsia.googlesource.com/fuchsia/+/master/build.
+
diff --git a/__init__.py b/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/__init__.py
+++ /dev/null
diff --git a/assert_cmx.gni b/assert_cmx.gni
deleted file mode 100644
index e08fb69..0000000
--- a/assert_cmx.gni
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2018 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.
-#
-
-template("assert_cmx") {
- package_meta = []
- if (defined(invoker.meta)) {
- package_meta = invoker.meta
- }
-
- found_cmx = false
-
- # deprecated_system_image are not fuchsia packages. Skip.
- if (invoker.deprecated_system_image) {
- found_cmx = true
- }
-
- # Tests don't launch as components by default, so no cmx is required.
- if (defined(invoker.testonly) && invoker.testonly) {
- found_cmx = true
- }
-
- # Unmigrated targets are whitelisted.
- if (defined(invoker.deprecated_no_cmx)) {
- found_cmx = true
- }
-
- # Packages that only contain shell binaries are allowed.
- if (defined(invoker.binaries)) {
- bins = []
- foreach(binary, invoker.binaries) {
- if (defined(binary.shell) && binary.shell) {
- bins += [ binary ]
- }
- }
- if (bins == invoker.binaries) {
- found_cmx = true
- }
- }
-
- # Packages that only contain data are allowed.
- if (!defined(invoker.binaries) && !defined(invoker.binary)) {
- found_cmx = true
- }
-
- foreach(item, package_meta) {
- dest = item.path
- if (defined(item.dest)) {
- dest = item.dest
- }
- if (get_path_info(dest, "extension") == "cmx") {
- found_cmx = true
- }
- }
-
- assert(
- found_cmx == true,
- "No cmx found in package $target_name. Please add cmx to your component. " + "See https://fuchsia.googlesource.com/docs/+/master/the-book/" + "package_metadata.md#Component-manifest. " + "Also see go/cmx-everywhere for the migration design.")
-}
diff --git a/banjo/BUILD.gn b/banjo/BUILD.gn
deleted file mode 100644
index 6ae9239..0000000
--- a/banjo/BUILD.gn
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/toolchain/clang_toolchain.gni")
-
-# A toolchain dedicated to processing Banjo libraries.
-# The only targets in this toolchain are action() targets, so it
-# has no real tools. But every toolchain needs stamp and copy.
-toolchain("banjoing") {
- tool("stamp") {
- command = stamp_command
- description = stamp_description
- }
- tool("copy") {
- command = copy_command
- description = copy_description
- }
-
- toolchain_args = {
- toolchain_variant = {
- }
- toolchain_variant = {
- base = get_label_info(":banjoing", "label_no_toolchain")
- }
- }
-}
diff --git a/banjo/banjo.gni b/banjo/banjo.gni
deleted file mode 100644
index 98f3046..0000000
--- a/banjo/banjo.gni
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/banjo/toolchain.gni")
-
-# Declares a BANJO library.
-#
-# Depending on the toolchain in which this targets is expanded, it will yield
-# different results:
-# - in the BANJO toolchain, it will compile its source files into an
-# intermediate representation consumable by language bindings generators;
-# - in the target or shared toolchain, this will produce a source_set
-# containing C/C++ bindings.
-#
-# Parameters
-#
-# sources (required)
-# List of paths to library source files.
-#
-# name (optional)
-# Name of the library.
-# Defaults to the target's name.
-#
-# sdk_category (optional)
-# Publication level of the library in SDKs.
-# See //build/sdk/sdk_atom.gni.
-
-template("banjo") {
- if (defined(invoker.sdk_category)) {
- not_needed(invoker, [ "sdk_category" ])
- }
- if (current_toolchain == banjo_toolchain) {
- import("//build/banjo/banjo_library.gni")
-
- banjo_library(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else if (is_fuchsia) {
- import("//build/c/banjo_c.gni")
-
- banjo_c_target(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else {
- assert(false,
- "Unable to process BANJO target in toolchain $current_toolchain.")
- }
-}
-
-template("banjo_dummy") {
- if (defined(invoker.sdk_category)) {
- not_needed(invoker, [ "sdk_category" ])
- }
- if (current_toolchain == banjo_toolchain) {
- import("//build/banjo/banjo_library.gni")
-
- banjo_dummy_library(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else if (is_fuchsia) {
- import("//build/c/banjo_c.gni")
-
- banjo_dummy_c_target(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else {
- assert(false,
- "Unable to process BANJO target in toolchain $current_toolchain.")
- }
-}
diff --git a/banjo/banjo_library.gni b/banjo/banjo_library.gni
deleted file mode 100644
index 9ce9225..0000000
--- a/banjo/banjo_library.gni
+++ /dev/null
@@ -1,305 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/banjo/toolchain.gni")
-import("//build/compiled_action.gni")
-import("//build/sdk/sdk_atom.gni")
-
-# Private template to generate an SDK Atom for banjo_library and
-# banjo_dummy_library targets.
-#
-
-template("_banjo_library_sdk") {
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- # Process sources.
- file_base = "banjo/$library_name"
- all_files = []
- sdk_sources = []
- foreach(source, invoker.sources) {
- relative_source = rebase_path(source, ".")
- if (string_replace(relative_source, "..", "bogus") != relative_source) {
- # If the source file is not within the same directory, just use the file
- # name.
- relative_source = get_path_info(source, "file")
- }
- destination = "$file_base/$relative_source"
- sdk_sources += [ destination ]
- all_files += [
- {
- source = rebase_path(source)
- dest = destination
- },
- ]
- }
-
- # Identify metadata for dependencies.
- sdk_metas = []
- sdk_deps = []
- all_deps = []
- if (defined(invoker.deps)) {
- all_deps = invoker.deps
- }
- foreach(dep, all_deps) {
- full_label = get_label_info(dep, "label_no_toolchain")
- sdk_dep = "${full_label}_sdk"
- sdk_deps += [ sdk_dep ]
- gen_dir = get_label_info(sdk_dep, "target_gen_dir")
- name = get_label_info(sdk_dep, "name")
- sdk_metas += [ rebase_path("$gen_dir/$name.meta.json") ]
- }
-
- # Generate the library metadata.
- meta_file = "$target_gen_dir/${target_name}.sdk_meta.json"
- meta_target_name = "${target_name}_meta"
-
- action(meta_target_name) {
- script = "//build/banjo/gen_sdk_meta.py"
-
- inputs = sdk_metas
-
- outputs = [
- meta_file,
- ]
-
- args = [
- "--out",
- rebase_path(meta_file),
- "--name",
- library_name,
- "--root",
- file_base,
- "--specs",
- ] + sdk_metas + [ "--sources" ] + sdk_sources
-
- deps = sdk_deps
- }
-
- sdk_atom("${target_name}_sdk") {
- id = "sdk://banjo/$library_name"
-
- category = invoker.sdk_category
-
- meta = {
- source = meta_file
- dest = "$file_base/meta.json"
- schema = "banjo_library"
- }
-
- files = all_files
-
- non_sdk_deps = [ ":$meta_target_name" ]
-
- deps = []
- foreach(dep, all_deps) {
- label = get_label_info(dep, "label_no_toolchain")
- deps += [ "${label}_sdk" ]
- }
- }
-}
-
-# Generates some representation of a Banjo library that's consumable by Language
-# bindings generators.
-#
-# The parameters for this template are defined in //build/banjo/banjo.gni. The
-# relevant parameters in this template are:
-# - name;
-# - sources;
-# - sdk_category.
-
-template("banjo_library") {
- assert(
- current_toolchain == banjo_toolchain,
- "This template can only be used in the Banjo toolchain $banjo_toolchain.")
-
- assert(defined(invoker.sources), "A Banjo library requires some sources.")
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- response_file = "$target_gen_dir/$target_name.args"
- ddk_root = string_replace(string_replace(library_name, ".", "/"), "_", "-")
- ddktl_root = string_replace(ddk_root, "ddk", "ddktl")
- ddk_header = "$root_gen_dir/$ddk_root.h"
- ddktl_header = "$root_gen_dir/$ddktl_root.h"
- ddktl_internal_header = "$root_gen_dir/$ddktl_root-internal.h"
-
- main_target_name = target_name
- response_file_target_name = "${target_name}_response_file"
- compilation_target_name = "${target_name}_compile"
-
- all_deps = []
- if (defined(invoker.deps)) {
- all_deps += invoker.deps
- }
- if (defined(invoker.public_deps)) {
- all_deps += invoker.public_deps
- }
-
- action(response_file_target_name) {
- visibility = [ ":*" ]
-
- script = "//build/banjo/gen_response_file.py"
-
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "sources",
- "testonly",
- ])
-
- libraries = "$target_gen_dir/$main_target_name.libraries"
-
- outputs = [
- response_file,
- libraries,
- ]
-
- args = [
- "--out-response-file",
- rebase_path(response_file, root_build_dir),
- "--out-libraries",
- rebase_path(libraries, root_build_dir),
- "--ddk-header",
- rebase_path(ddk_header, root_build_dir),
- "--ddktl-header",
- rebase_path(ddktl_header, root_build_dir),
- "--name",
- library_name,
- "--sources",
- ] + rebase_path(sources, root_build_dir)
-
- if (all_deps != []) {
- dep_libraries = []
-
- foreach(dep, all_deps) {
- gen_dir = get_label_info(dep, "target_gen_dir")
- name = get_label_info(dep, "name")
- dep_libraries += [ "$gen_dir/$name.libraries" ]
- }
-
- inputs = dep_libraries
-
- args += [ "--dep-libraries" ] + rebase_path(dep_libraries, root_build_dir)
- }
- }
-
- compiled_action(compilation_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- visibility = [ ":*" ]
-
- tool = "//zircon/public/tool/banjoc"
-
- inputs = [
- response_file,
- ]
-
- outputs = [
- ddk_header,
- ddktl_header,
- ddktl_internal_header,
- ]
-
- rebased_response_file = rebase_path(response_file, root_build_dir)
-
- args = [ "@$rebased_response_file" ]
-
- deps = [
- ":$response_file_target_name",
- ]
- }
-
- group(main_target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- public_deps = [
- ":$compilation_target_name",
- ":$response_file_target_name",
- ]
- }
-
- if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded") {
- _banjo_library_sdk("$target_name") {
- forward_variables_from(invoker, "*")
- }
- }
-}
-
-template("banjo_dummy_library") {
- assert(
- current_toolchain == banjo_toolchain,
- "This template can only be used in the Banjo toolchain $banjo_toolchain.")
-
- assert(defined(invoker.sources),
- "A Banjo dummy library requires some sources.")
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- main_target_name = target_name
- response_file_target_name = "${target_name}_response_file"
-
- action(response_file_target_name) {
- visibility = [ ":*" ]
-
- script = "//build/banjo/gen_response_file.py"
-
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "sources",
- "testonly",
- ])
-
- response_file = "$target_gen_dir/$main_target_name.args"
- libraries = "$target_gen_dir/$main_target_name.libraries"
-
- outputs = [
- response_file,
- libraries,
- ]
-
- args = [
- "--out-response-file",
- rebase_path(response_file, root_build_dir),
- "--out-libraries",
- rebase_path(libraries, root_build_dir),
- "--name",
- library_name,
- "--sources",
- ] + rebase_path(sources, root_build_dir)
- }
-
- group(main_target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- public_deps = [
- ":$response_file_target_name",
- ]
- }
-
- if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded") {
- _banjo_library_sdk("$target_name") {
- forward_variables_from(invoker, "*")
- }
- }
-}
diff --git a/banjo/gen_response_file.py b/banjo/gen_response_file.py
deleted file mode 100755
index 0d3dea5..0000000
--- a/banjo/gen_response_file.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import os
-import string
-import sys
-
-
-def read_libraries(libraries_path):
- with open(libraries_path) as f:
- lines = f.readlines()
- return [l.rstrip("\n") for l in lines]
-
-
-def write_libraries(libraries_path, libraries):
- directory = os.path.dirname(libraries_path)
- if not os.path.exists(directory):
- os.makedirs(directory)
- with open(libraries_path, "w+") as f:
- for library in libraries:
- f.write(library)
- f.write("\n")
-
-
-def main():
- parser = argparse.ArgumentParser(description="Generate response file for Banjo frontend")
- parser.add_argument("--out-response-file", help="The path for for the response file to generate", required=True)
- parser.add_argument("--out-libraries", help="The path for for the libraries file to generate", required=True)
- parser.add_argument("--ddk-header", help="The path for the C simple client file to generate, if any")
- parser.add_argument("--ddktl-header", help="The path for the C header file to generate, if any")
- parser.add_argument("--name", help="The name for the generated Banjo library, if any")
- parser.add_argument("--sources", help="List of Banjo source files", nargs="*")
- parser.add_argument("--dep-libraries", help="List of dependent libraries", nargs="*")
- args = parser.parse_args()
-
- target_libraries = []
-
- for dep_libraries_path in args.dep_libraries or []:
- dep_libraries = read_libraries(dep_libraries_path)
- for library in dep_libraries:
- if library in target_libraries:
- continue
- target_libraries.append(library)
-
- target_libraries.append(" ".join(sorted(args.sources)))
-
- write_libraries(args.out_libraries, target_libraries)
-
- response_file = []
-
- if args.name:
- response_file.append("--name %s" % args.name)
-
- if args.ddk_header:
- response_file.append("--ddk-header %s" % args.ddk_header)
-
- if args.ddktl_header:
- response_file.append("--ddktl-header %s" % args.ddktl_header)
-
- response_file.extend(["--files %s" % library for library in target_libraries])
-
- with open(args.out_response_file, "w+") as f:
- f.write(" ".join(response_file))
- f.write("\n")
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/banjo/gen_sdk_meta.py b/banjo/gen_sdk_meta.py
deleted file mode 100755
index 6fb4509..0000000
--- a/banjo/gen_sdk_meta.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser('Builds a metadata file')
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--name',
- help='Name of the library',
- required=True)
- parser.add_argument('--root',
- help='Root of the library in the SDK',
- required=True)
- parser.add_argument('--specs',
- help='Path to spec files of dependencies',
- nargs='*')
- parser.add_argument('--sources',
- help='List of library sources',
- nargs='+')
- args = parser.parse_args()
-
- metadata = {
- 'type': 'banjo_library',
- 'name': args.name,
- 'root': args.root,
- 'sources': args.sources,
- 'files': args.sources,
- }
-
- deps = []
- for spec in args.specs:
- with open(spec, 'r') as spec_file:
- data = json.load(spec_file)
- type = data['type']
- name = data['name']
- if type == 'banjo_library' or type == 'banjo_dummy_library':
- deps.append(name)
- else:
- raise Exception('Unsupported dependency type: %s' % type)
- metadata['deps'] = deps
-
- with open(args.out, 'w') as out_file:
- json.dump(metadata, out_file, indent=2, sort_keys=True)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/banjo/toolchain.gni b/banjo/toolchain.gni
deleted file mode 100644
index 493dbed..0000000
--- a/banjo/toolchain.gni
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2018 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.
-
-banjo_toolchain = "//build/banjo:banjoing"
diff --git a/c/BUILD.gn b/c/BUILD.gn
deleted file mode 100644
index 56e1322..0000000
--- a/c/BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/banjo/toolchain.gni")
-
-config("banjo_gen_config") {
- banjo_root_gen_dir =
- get_label_info("//bogus($banjo_toolchain)", "root_gen_dir")
- include_dirs = [ banjo_root_gen_dir ]
-}
diff --git a/c/banjo_c.gni b/c/banjo_c.gni
deleted file mode 100644
index 9fc8416..0000000
--- a/c/banjo_c.gni
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/banjo/toolchain.gni")
-import("//build/compiled_action.gni")
-
-# C/C++ bindings for a Banjo protocol.
-#
-# The parameters for this template are defined in //build/banjo/banjo.gni. The
-# relevant parameters in this template are:
-# name: string, name of the Banjo protocol
-
-template("banjo_c_target") {
- assert(is_fuchsia, "This template can only be used in $target_toolchain.")
-
- not_needed(invoker, [ "sources" ])
-
- main_target_name = target_name
-
- library_name = invoker.name
-
- ddk_root = string_replace(string_replace(library_name, ".", "/"), "_", "-")
- ddktl_root = string_replace(ddk_root, "ddk", "ddktl")
- banjo_root_gen_dir =
- get_label_info(":$target_name($banjo_toolchain)", "root_gen_dir")
- ddk_header = "$banjo_root_gen_dir/$ddk_root.h"
- ddktl_header = "$banjo_root_gen_dir/$ddktl_root.h"
- ddktl_internal_header = "$banjo_root_gen_dir/$ddktl_root-internal.h"
-
- # The C/C++ headers are generated by the frontend, so we just need to
- # produce a target with the generated file name and configuration information.
- source_set(main_target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
-
- public = [
- ddk_header,
- ddktl_header,
- ddktl_internal_header,
- ]
-
- # Let dependencies use `#include "$file_stem.h"`.
- public_configs = [ "//build/c:banjo_gen_config" ]
-
- deps += [ ":${main_target_name}_compile($banjo_toolchain)" ]
-
- libs = [ "zircon" ]
- }
-}
-
-template("banjo_dummy_c_target") {
- assert(is_fuchsia, "This template can only be used in $target_toolchain.")
-
- not_needed(invoker,
- [
- "sources",
- "name",
- ])
-
- main_target_name = target_name
-
- # The headers referenced by a dummy target all exist in the sysroot.
- source_set(main_target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
-
- public_deps = [
- "//zircon/public/sysroot",
- ]
- libs = [ "zircon" ]
- }
-}
diff --git a/c/fidl_c.gni b/c/fidl_c.gni
deleted file mode 100644
index 0fc6c15..0000000
--- a/c/fidl_c.gni
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/fidl/toolchain.gni")
-
-template("fidl_tables") {
- main_target_name = target_name
-
- fidl_target_gen_dir =
- get_label_info(":$target_name($fidl_toolchain)", "target_gen_dir")
- coding_tables = "$fidl_target_gen_dir/$target_name.fidl.tables.cc"
-
- # The C simple $type code is generated by the frontend, so we just need to
- # produce a target with the generated file name and configuration information.
- source_set(main_target_name + "_tables") {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- sources = [
- coding_tables,
- ]
-
- deps = [
- ":${main_target_name}_compile($fidl_toolchain)",
- ]
- public_deps = [
- "//zircon/public/lib/fidl",
- ]
- }
-}
-
-# C simple client bindings for a FIDL library.
-#
-# The parameters for this template are defined in //build/fidl/fidl.gni. The
-# relevant parameters in this template are:
-# name: string, name of the FIDL library
-# type: string, 'client' or 'server'
-
-template("fidl_c_target") {
- assert(is_fuchsia, "This template can only be used in $target_toolchain.")
-
- type = invoker.type
- main_target_name = target_name
-
- library_name = invoker.name
-
- c_stem = string_replace(library_name, ".", "/") + "/c/fidl"
- fidl_root_gen_dir =
- get_label_info(":$target_name($fidl_toolchain)", "root_gen_dir")
- c_header = "$fidl_root_gen_dir/$c_stem.h"
- c_file = "$fidl_root_gen_dir/$c_stem.$type.c"
-
- # The C simple $type code is generated by the frontend, so we just need to
- # produce a target with the generated file name and configuration information.
- source_set(main_target_name + "_c_" + type) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- sources = [
- c_file,
- ]
- public = [
- c_header,
- ]
-
- # Let dependencies use `#include "$file_stem.h"`.
- public_configs = [ "//build/cpp:fidl_gen_config" ]
-
- deps = [
- ":${main_target_name}_compile($fidl_toolchain)",
- ":${main_target_name}_tables",
- ]
- public_deps = [
- "//zircon/public/lib/fidl",
- ]
- libs = [ "zircon" ]
- }
-}
-
-template("fidl_c_client") {
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- fidl_c_target(target_name) {
- name = library_name
- type = "client"
- }
-}
-
-template("fidl_c_server") {
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
- fidl_c_target(target_name) {
- name = library_name
- type = "server"
- }
-}
diff --git a/cat.py b/cat.py
deleted file mode 100755
index 2e0c1a8..0000000
--- a/cat.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import sys
-
-def parse_args():
- parser = argparse.ArgumentParser(description='Concat files.')
- parser.add_argument('-i', action='append', dest='inputs', default=[],
- help='Input files', required=True)
- parser.add_argument('-o', dest='output', help='Output file', required=True)
- args = parser.parse_args()
- return args
-
-def main():
- args = parse_args()
- with open(args.output, 'w') as outfile:
- for fname in args.inputs:
- with open(fname) as infile:
- outfile.write(infile.read())
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/cat.sh b/cat.sh
deleted file mode 100755
index 9c9428b..0000000
--- a/cat.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-# Copyright 2018 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.
-
-# cat.sh output_file [file, ...]
-# cat.sh concatenates all file arguments into output_file, separated by lines.
-# cat.sh elides empty lines (in order to avoid breaking the symbolizer)
-
-# Note: `cat $output $@` is not equivalent - that does not produce new lines
-# between inputs.
-
-readonly output="$1"
-shift 1
-for file in "$@"
-do
- val="$(<"${file}")"
- if [ -n "${val}" ]; then
- echo "${val}"
- fi
-done > "${output}"
diff --git a/cipd-update.sh b/cipd-update.sh
deleted file mode 100755
index 01049bd..0000000
--- a/cipd-update.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2018 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.
-
-set -ex
-
-readonly SCRIPT_ROOT="$(cd $(dirname ${BASH_SOURCE[0]} ) && pwd)"
-readonly FUCHSIA_ROOT="${SCRIPT_ROOT}/.."
-readonly BUILD_ROOT="${FUCHSIA_ROOT}/build"
-readonly BUILDTOOLS_DIR="${FUCHSIA_ROOT}/buildtools"
-readonly CIPD="${BUILDTOOLS_DIR}/cipd"
-
-INTERNAL_ACCESS=false
-if [[ "$(${CIPD} ls fuchsia_internal)" != "No matching packages." ]]; then
- INTERNAL_ACCESS=true
-fi
-echo "internal_access = ${INTERNAL_ACCESS}" > "${SCRIPT_ROOT}/cipd.gni"
-
-declare -a ENSURE_FILES=("${SCRIPT_ROOT}/cipd.ensure")
-if $INTERNAL_ACCESS; then
- ENSURE_FILES+=("${SCRIPT_ROOT}/cipd_internal.ensure")
-fi
-
-(sed '/^\$/!d' "${ENSURE_FILES[@]}" && sed '/^\$/d' "${ENSURE_FILES[@]}") |
- ${CIPD} ensure -ensure-file - -root ${BUILD_ROOT} -log-level warning
diff --git a/cipd.ensure b/cipd.ensure
deleted file mode 100644
index 47b60ae..0000000
--- a/cipd.ensure
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2018 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.
-
-# Note: changes to this file will require updating cipd.versions, which
-# can be done by running `./cipd ensure-file-resolve -ensure-file cipd.ensure`
-# from this directory.
-
-$ResolvedVersions cipd.versions
-
-# This tells CIPD to fix up manually deleted files.
-$ParanoidMode CheckPresence
-
-$VerifiedPlatform linux-amd64
-$VerifiedPlatform mac-amd64
-
-# Linux sysroot
-@Subdir third_party/sysroot/linux-x64
-fuchsia/sysroot/linux-amd64 git_revision:a4aaacde9d37ccf91a0f8dc8267cb7ad5d9be283
-
-@Subdir third_party/sysroot/linux-arm64
-fuchsia/sysroot/linux-arm64 git_revision:a4aaacde9d37ccf91a0f8dc8267cb7ad5d9be283
diff --git a/cipd.versions b/cipd.versions
deleted file mode 100644
index b7b165f..0000000
--- a/cipd.versions
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file is auto-generated by 'cipd ensure-file-resolve'.
-# Do not modify manually. All changes will be overwritten.
-
-fuchsia/sysroot/linux-amd64
- git_revision:a4aaacde9d37ccf91a0f8dc8267cb7ad5d9be283
- qIDZyI1rOQR7INRUL5vxltcQ9sAmdu3-FrI-Wcf_OVwC
-
-fuchsia/sysroot/linux-arm64
- git_revision:a4aaacde9d37ccf91a0f8dc8267cb7ad5d9be283
- B1w-KMj3c3107ZQ3i05ID0Keq_kDPXLmwAkwzn2LmTIC
diff --git a/cipd_internal.ensure b/cipd_internal.ensure
deleted file mode 100644
index 8e27530..0000000
--- a/cipd_internal.ensure
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2018 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.
-
-$ParanoidMode CheckPresence
diff --git a/cmx/cmx.gni b/cmx/cmx.gni
deleted file mode 100644
index f6bd428..0000000
--- a/cmx/cmx.gni
+++ /dev/null
@@ -1,261 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/json/validate_json.gni")
-
-# Given a .cmx file, validates the module facet of it
-#
-# Parameters
-# cmx (required)
-# This is the .cmx file that wants to be validated.
-#
-# deps (optional)
-template("cmx_module_validate") {
- module_facet_validation = target_name + "_module_facet"
-
- # Validate the |fuchsia.module| facet schema.
- validate_json(module_facet_validation) {
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "testonly",
- "visibility",
- ])
-
- data = invoker.cmx
- schema = "//build/cmx/facets/module_facet_schema.json"
- }
-}
-
-# Validates a cmx file
-#
-# The cmx_validate template will ensure that a given cmx file is conformant to
-# the cmx schema, as defined by //garnet/bin/cmc/schema.json. A stamp file is
-# generated to mark that a given cmx file has passed.
-#
-# Parameters
-#
-# data (required)
-# [file] The path to the cmx file that is to be validated
-#
-# deps (optional)
-# public_deps (optional)
-# testonly (optional)
-# visibility (optional)
-# Standard GN meaning.
-#
-# Example of usage:
-#
-# cmx_validate(format) {
-# data = meta.path
-# }
-template("cmx_validate") {
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "sources",
- "public_deps",
- "testonly",
- "visibility",
- ])
-
- tool = "//garnet/bin/cmc"
- tool_output_name = "cmc"
-
- stamp_file = "$target_gen_dir/$target_name.verified"
-
- inputs = [
- invoker.data,
- ]
-
- outputs = [
- stamp_file,
- ]
-
- args = [
- "--stamp",
- rebase_path(stamp_file),
- "validate",
- rebase_path(invoker.data),
- ]
- }
- cmx_module_validate("module_" + target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
- cmx = invoker.data
- }
-}
-
-# Compiles a cml file
-#
-# The cm_compile template will compile a cml file into a cm file. It will
-# pretty-print the given cm file if is_debug is set to true.
-#
-# Parameters
-#
-# data (required)
-# [file] The path to the cml file that is to be compiled.
-#
-# deps (optional)
-# public_deps (optional)
-# testonly (optional)
-# visibility (optional)
-# Standard GN meaning.
-#
-# Example of usage:
-#
-# cm_compile(format) {
-# data = rebase_path(meta.path)
-# }
-template("cm_compile") {
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "testonly",
- "visibility",
- ])
- tool = "//garnet/bin/cmc/"
- tool_output_name = "cmc"
-
- compiled_output = "$target_out_dir/$target_name"
- inputs = [
- invoker.data,
- ]
- outputs = [
- compiled_output,
- ]
-
- args = [
- "compile",
- "--output",
- rebase_path(compiled_output),
- invoker.data,
- ]
-
- if (is_debug) {
- args += [ "--pretty" ]
- }
- }
-}
-
-# Merges together cmx files
-#
-# The cmx_merge template will combine the given cmx files into a single cmx
-# file.
-#
-# Parameters
-#
-# sources (required)
-# [list of files] A list of cmx files that are to be merged.
-#
-# deps (optional)
-# public_deps (optional)
-# testonly (optional)
-# visibility (optional)
-# Standard GN meaning.
-#
-# Example of usage:
-#
-# cmx_merge(format) {
-# sources = [
-# rebase_path(meta.path),
-# rebase_path(
-# "//topaz/runtime/dart_runner/meta/aot${product_suffix}_runtime"),
-# ]
-# }
-template("cmx_merge") {
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "sources",
- "public_deps",
- "testonly",
- "visibility",
- ])
-
- tool = "//garnet/bin/cmc"
- tool_output_name = "cmc"
-
- merged_output = "$target_out_dir/$target_name"
- inputs = invoker.sources
- outputs = [
- merged_output,
- ]
-
- args = [
- "merge",
- "--output",
- rebase_path(merged_output),
- ]
-
- foreach(source, sources) {
- args += [ rebase_path(source, root_build_dir) ]
- }
- }
-}
-
-# Formats a cmx file
-#
-# The cmx_format template will minify the given cmx file if is_debug is set to
-# false, and will pretty-print the given cmx file if is_debug is set to true.
-#
-# Parameters
-#
-# data (required)
-# [file] The path to the cmx file that is to be formatted
-#
-# deps (optional)
-# public_deps (optional)
-# testonly (optional)
-# visibility (optional)
-# Standard GN meaning.
-#
-# Example of usage:
-#
-# cmx_format(format) {
-# data = rebase_path(meta.path)
-# }
-template("cmx_format") {
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "testonly",
- "visibility",
- ])
-
- tool = "//garnet/bin/cmc"
- tool_output_name = "cmc"
-
- formatted_output = "$target_out_dir/$target_name"
- inputs = [
- invoker.data,
- ]
- outputs = [
- formatted_output,
- ]
-
- args = [
- "format",
- "--output",
- rebase_path(formatted_output),
- invoker.data,
- ]
-
- if (is_debug) {
- args += [ "--pretty" ]
- }
- }
-}
diff --git a/cmx/facets/module_facet_schema.json b/cmx/facets/module_facet_schema.json
deleted file mode 100644
index 16acc51..0000000
--- a/cmx/facets/module_facet_schema.json
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "$schema": "http://json-schema.org/schema#",
- "title": "Schema for a .cmx's `fuchsia.module` facet",
- "definitions": {
- "facets": {
- "type": "object",
- "properties": {
- "fuchsia.module": {
- "$ref": "#/definitions/moduleFacet"
- }
- }
- },
- "moduleFacet": {
- "type": "object",
- "properties": {
- "suggestion_headline": {
- "type": "string"
- },
- "intent_filters": {
- "$ref": "#/definitions/intentFilterArray"
- },
- "composition_pattern": {
- "$ref": "#/definitions/compositionPattern"
- },
- "action": {
- "type": "string"
- },
- "parameters": {
- "$ref": "#/definitions/parameterArray"
- },
- "@version": {
- "type": "integer"
- },
- "placeholder_color": {
- "$ref": "#definitions/hexColor"
- }
- },
- "dependencies": {
- "intent_filters": {
- "required": [
- "@version"
- ]
- }
- },
- "additionalProperties": false
- },
- "intentFilterArray": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/intentFilter"
- },
- "additionalItems": false,
- "uniqueItems": true,
- "minItems": 1
- },
- "intentFilter": {
- "type": "object",
- "properties": {
- "action": {
- "type": "string"
- },
- "parameters": {
- "$ref": "#/definitions/parameterArray"
- }
- },
- "required": [
- "action",
- "parameters"
- ]
- },
- "parameterArray": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/parameter"
- },
- "additionalItems": false,
- "uniqueItems": true
- },
- "parameter": {
- "type": "object",
- "properties": {
- "name": {
- "$ref": "#/definitions/alphaNumString"
- },
- "type": {
- "type": "string"
- },
- "required": {
- "type": "boolean"
- }
- },
- "required": [
- "name",
- "type"
- ],
- "additionalProperties": false
- },
- "alphaNumString": {
- "type": "string",
- "pattern": "^[a-zA-Z0-9_]+$"
- },
- "compositionPattern": {
- "type": "string",
- "enum": [
- "ticker",
- "comments-right"
- ]
- },
- "hexColor": {
- "type": "string",
- "pattern": "^#([A-Fa-f0-9]{6})$"
- }
- },
- "type": "object",
- "properties": {
- "facets": {
- "$ref": "#/definitions/facets"
- }
- },
- "additionalProperties": true
-}
\ No newline at end of file
diff --git a/compiled_action.gni b/compiled_action.gni
deleted file mode 100644
index 4a5b8c8..0000000
--- a/compiled_action.gni
+++ /dev/null
@@ -1,146 +0,0 @@
-# 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.
-
-import("//build/config/clang/clang.gni")
-
-# This file introduces two related templates that act like action and
-# action_foreach but instead of running a 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.
-#
-# tool_output_name (optional)
-# [string] The `output_name` in the `executable()` for `tool`.
-# This default's to the `tool` target's name.
-#
-# 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)
-# sources (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.
-#
-# args (all optional)
-# depfile
-# deps
-# public_deps
-# testonly
-# visibility
-# 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.
-# sources = [ "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.
-template("_compiled_action_target") {
- 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")
-
- target(invoker._target_type, target_name) {
- forward_variables_from(invoker,
- [
- "depfile",
- "deps",
- "inputs",
- "outputs",
- "public_deps",
- "sources",
- "testonly",
- "tool_output_name",
- "visibility",
- ])
- if (!defined(deps)) {
- deps = []
- }
- if (!defined(inputs)) {
- inputs = []
- }
-
- script = "//build/gn_run_binary.sh"
-
- # Constuct the host toolchain version of the tool.
- host_tool = "${invoker.tool}($host_toolchain)"
-
- # Get the path to the executable.
- if (!defined(tool_output_name)) {
- tool_output_name = get_label_info(host_tool, "name")
- }
- tool_out_dir = get_label_info(host_tool, "root_out_dir")
- host_executable = "$tool_out_dir/$tool_output_name"
-
- # Add the executable itself as an input.
- inputs += [ host_executable ]
-
- deps += [ host_tool ]
-
- # The script takes as arguments Clang bin directory (for passing
- # llvm-symbolizer to runtimes), the binary to run, and then the
- # arguments to pass it.
- args = [
- clang_prefix,
- rebase_path(host_executable, root_build_dir),
- ] + invoker.args
- }
-}
-
-# See _compiled_action_target().
-template("compiled_action") {
- _compiled_action_target(target_name) {
- _target_type = "action"
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker, "*", [ "visibility" ])
- }
-}
-
-# See _compiled_action_target().
-template("compiled_action_foreach") {
- _compiled_action_target(target_name) {
- _target_type = "action_foreach"
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker, "*", [ "visibility" ])
- }
-}
diff --git a/config/BUILD.gn b/config/BUILD.gn
deleted file mode 100644
index b086555..0000000
--- a/config/BUILD.gn
+++ /dev/null
@@ -1,252 +0,0 @@
-# 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.
-
-import("//build/config/compiler.gni")
-
-declare_args() {
- if (is_fuchsia) {
- # Controls whether the compiler emits full stack frames for function calls.
- # This reduces performance but increases the ability to generate good
- # stack traces, especially when we have bugs around unwind table generation.
- # It applies only for Fuchsia targets (see below where it is unset).
- #
- # TODO(ZX-2361): Theoretically unwind tables should be good enough so we can
- # remove this option when the issues are addressed.
- enable_frame_pointers = is_debug
- }
-}
-
-# No frame pointers for host compiles.
-if (!is_fuchsia) {
- enable_frame_pointers = false
-}
-
-config("compiler") {
- asmflags = []
- cflags = [ "-fcolor-diagnostics" ]
- cflags_c = []
- cflags_cc = [ "-fvisibility-inlines-hidden" ]
- cflags_objc = []
- cflags_objcc = [ "-fvisibility-inlines-hidden" ]
- ldflags = []
- defines = []
- configs = []
-
- if (current_os == "fuchsia") {
- configs += [ "//build/config/fuchsia:compiler" ]
- } else {
- cflags_c += [ "-std=c11" ]
- cflags_cc += [
- "-std=c++17",
- "-stdlib=libc++",
- ]
- if (current_os == "linux") {
- configs += [ "//build/config/linux:compiler" ]
- } else if (current_os == "mac") {
- configs += [ "//build/config/mac:compiler" ]
- }
- }
-
- # Linker on macOS does not support `color-diagnostics`
- if (current_os != "mac") {
- ldflags += [ "-Wl,--color-diagnostics" ]
- }
-
- asmflags += cflags
- asmflags += cflags_c
-}
-
-config("relative_paths") {
- # Make builds independent of absolute file path. The file names
- # embedded in debugging information will be expressed as relative to
- # the build directory, e.g. "../.." for an "out/subdir" under //.
- # This is consistent with the file names in __FILE__ expansions
- # (e.g. in assertion messages), which the compiler doesn't provide a
- # way to remap. That way source file names in logging and
- # symbolization can all be treated the same way. This won't go well
- # if root_build_dir is not a subdirectory //, but there isn't a better
- # option to keep all source file name references uniformly relative to
- # a single root.
- absolute_path = rebase_path("//.")
- relative_path = rebase_path("//.", root_build_dir)
- cflags = [
- # This makes sure that the DW_AT_comp_dir string (the current
- # directory while running the compiler, which is the basis for all
- # relative source file names in the DWARF info) is represented as
- # relative to //.
- "-fdebug-prefix-map=$absolute_path=$relative_path",
-
- # This makes sure that include directories in the toolchain are
- # represented as relative to the build directory (because that's how
- # we invoke the compiler), rather than absolute. This can affect
- # __FILE__ expansions (e.g. assertions in system headers). We
- # normally run a compiler that's someplace within the source tree
- # (//buildtools/...), so its absolute installation path will have a
- # prefix matching absolute_path and hence be mapped to relative_path
- # in the debugging information, so this should actually be
- # superfluous for purposes of the debugging information.
- "-no-canonical-prefixes",
- ]
-}
-
-config("debug") {
- cflags = [ "-O0" ]
- ldflags = cflags
-}
-
-config("release") {
- defines = [ "NDEBUG=1" ]
- cflags = [
- "-O3",
- "-fdata-sections",
- "-ffunction-sections",
- ]
- ldflags = cflags
- if (current_os == "mac") {
- ldflags += [ "-Wl,-dead_strip" ]
- } else {
- ldflags += [ "-Wl,--gc-sections" ]
- }
-}
-
-config("exceptions") {
- cflags_cc = [ "-fexceptions" ]
- cflags_objcc = cflags_cc
-}
-
-config("no_exceptions") {
- cflags_cc = [ "-fno-exceptions" ]
- cflags_objcc = cflags_cc
-}
-
-config("rtti") {
- cflags_cc = [ "-frtti" ]
- cflags_objcc = cflags_cc
-}
-
-config("no_rtti") {
- cflags_cc = [ "-fno-rtti" ]
- cflags_objcc = cflags_cc
-}
-
-config("default_include_dirs") {
- include_dirs = [
- "//",
- root_gen_dir,
- ]
-}
-
-config("minimal_symbols") {
- cflags = [ "-gline-tables-only" ]
- asmflags = cflags
- ldflags = cflags
-}
-
-config("symbols") {
- cflags = [ "-g3" ]
- asmflags = cflags
- ldflags = cflags
-}
-
-config("no_symbols") {
- cflags = [ "-g0" ]
- asmflags = cflags
- ldflags = 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(symbol_level >= 0 && symbol_level <= 2)
- }
-}
-
-config("default_frame_pointers") {
- if (enable_frame_pointers) {
- configs = [ ":frame_pointers" ]
- } else {
- configs = [ ":no_frame_pointers" ]
- }
-}
-
-config("frame_pointers") {
- cflags = [ "-fno-omit-frame-pointer" ]
-}
-
-config("no_frame_pointers") {
- cflags = [ "-fomit-frame-pointer" ]
-}
-
-config("default_warnings") {
- cflags = [
- "-Wall",
- "-Wextra",
- "-Wno-unused-parameter",
- ]
- if (current_os == "fuchsia") {
- cflags += [
- # TODO(TO-99): Remove once all the cases of unused 'this' lamda capture
- # have been removed from our codebase.
- "-Wno-unused-lambda-capture",
-
- # TODO(TO-100): Remove once comparator types provide const call operator.
- "-Wno-user-defined-warnings",
- ]
- }
-}
-
-config("symbol_visibility_hidden") {
- cflags = [ "-fvisibility=hidden" ]
-}
-
-config("symbol_no_undefined") {
- if (current_os == "mac") {
- ldflags = [ "-Wl,-undefined,error" ]
- } else {
- ldflags = [ "-Wl,--no-undefined" ]
- }
-}
-
-config("shared_library_config") {
- configs = []
- cflags = []
-
- if (current_os == "fuchsia") {
- configs += [ "//build/config/fuchsia:shared_library_config" ]
- } else if (current_os == "linux") {
- cflags += [ "-fPIC" ]
- } else if (current_os == "mac") {
- configs += [ "//build/config/mac:mac_dynamic_flags" ]
- }
-}
-
-config("executable_config") {
- configs = []
-
- if (current_os == "fuchsia") {
- configs += [
- "//build/config/fuchsia:executable_config",
- "//build/config/fuchsia:fdio_config",
- ]
- } else if (current_os == "mac") {
- configs += [
- "//build/config/mac:mac_dynamic_flags",
- "//build/config/mac:mac_executable_flags",
- ]
- }
-}
-
-config("default_libs") {
- configs = []
-
- if (current_os == "mac") {
- configs += [ "//build/config/mac:default_libs" ]
- }
-}
diff --git a/config/BUILDCONFIG.gn b/config/BUILDCONFIG.gn
deleted file mode 100644
index b837b29..0000000
--- a/config/BUILDCONFIG.gn
+++ /dev/null
@@ -1,983 +0,0 @@
-# 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.
-
-# The GN files in //third_party/flutter all use $flutter_root/
-# in place of // to refer to the root of the flutter source tree.
-flutter_root = "//third_party/flutter"
-
-declare_args() {
- # Debug build.
- is_debug = true
-}
-
-if (target_os == "") {
- target_os = "fuchsia"
-}
-if (target_cpu == "") {
- target_cpu = host_cpu
-}
-target_platform = "${target_os}-${target_cpu}"
-if (current_cpu == "") {
- current_cpu = target_cpu
-}
-if (current_os == "") {
- current_os = target_os
-}
-current_platform = "${current_os}-${current_cpu}"
-
-host_platform = "${host_os}-${host_cpu}"
-
-if (target_os == "fuchsia") {
- target_toolchain = "//build/toolchain/fuchsia:${target_cpu}"
-} else {
- assert(false, "Target OS not supported")
-}
-
-if (host_os == "linux" || host_os == "mac") {
- host_toolchain = "//build/toolchain:host_${host_cpu}"
-} else {
- assert(false, "Host OS not supported")
-}
-
-set_default_toolchain(target_toolchain)
-
-# Some projects expect a default value for sources_assignment_filter.
-sources_assignment_filter = []
-
-declare_args() {
- # *This should never be set as a build argument.*
- # It exists only to be set in `toolchain_args`.
- # See //build/toolchain/clang_toolchain.gni for details.
- # This variable is a scope giving details about the current toolchain:
- # `toolchain_variant.base`
- # [label] The "base" toolchain for this variant, *often the
- # right thing to use in comparisons, not `current_toolchain`.*
- # This is the toolchain actually referenced directly in GN
- # source code. If the current toolchain is not
- # `shlib_toolchain` or a variant toolchain, this is the same
- # as `current_toolchain`. In one of those derivative
- # toolchains, this is the toolchain the GN code probably
- # thought it was in. This is the right thing to use in a test
- # like `toolchain_variant.base == target_toolchain`, rather
- # rather than comparing against `current_toolchain`.
- # `toolchain_variant.name`
- # [string] The name of this variant, as used in `variant` fields
- # in [`select_variant`](#select_variant) clauses. In the base
- # toolchain and its `shlib_toolchain`, this is `""`.
- # `toolchain_variant.suffix`
- # [string] This is "-${toolchain_variant.name}", "" if name is empty.
- # `toolchain_variant.is_pic_default`
- # [bool] This is true in `shlib_toolchain`.
- # The other fields are the variant's effects as defined in
- # [`known_variants`](#known_variants).
- toolchain_variant = {
- base = target_toolchain # default toolchain
- }
-}
-
-if (!defined(toolchain_variant.name)) {
- # Default values describe the "null variant".
- # All the optional fields (except `toolchain_args`) are canonicalized
- # to their default/empty values so the code below doesn't need to have
- # `defined(toolchain_variant.field)` checks all over.
- toolchain_variant.name = ""
- toolchain_variant.suffix = ""
- toolchain_variant.configs = []
- toolchain_variant.remove_common_configs = []
- toolchain_variant.remove_shared_configs = []
- toolchain_variant.deps = []
- toolchain_variant.is_pic_default = false
-}
-
-is_android = false
-is_fuchsia = false
-is_fuchsia_host = false
-is_ios = false
-is_linux = false
-is_mac = false
-is_win = false
-is_clang = true
-is_component_build = false
-is_official_build = false
-
-# This is set to allow third party projects to configure their GN build based
-# on the knowledge that they're being built in the Fuchsia tree. In the
-# subproject this can be tested with
-# `if (defined(is_fuchsia_tree) && is_fuchsia_tree) { ... }`
-# thus allowing configuration without requiring all users of the subproject to
-# set this variable.
-is_fuchsia_tree = true
-
-if (current_os == "fuchsia") {
- is_fuchsia = true
-} else if (current_os == "linux") {
- is_linux = true
-} else if (current_os == "mac") {
- is_mac = true
-}
-
-# Some library targets may be built as different type depending on the target
-# platform. This variable specifies the default library type for each target.
-if (is_fuchsia) {
- default_library_type = "shared_library"
-} else {
- default_library_type = "static_library"
-}
-
-# When we are in a variant of host_toolchain, change the value of
-# host_toolchain so that `if (current_toolchain == host_toolchain)` tests
-# still match, since that is the conventional way to detect being in host
-# context. This means that any "...($host_toolchain)" label references
-# from inside a variant of host_toolchain will refer to the variant
-# (current_toolchain rather than host_toolchain). To handle this, the
-# `executable()` template below will define its target in other variant
-# toolchains as a copy of the real executable.
-if (toolchain_variant.base == host_toolchain) {
- is_fuchsia_host = true
- host_toolchain += toolchain_variant.suffix
-}
-
-# References should use `"label($shlib_toolchain)"` rather than
-# `"label(${target_toolchain}-shared)"` or anything else.
-shlib_toolchain = "${toolchain_variant.base}${toolchain_variant.suffix}-shared"
-
-# All binary targets will get this list of configs by default.
-default_common_binary_configs = [
- "//build/config:compiler",
- "//build/config:relative_paths",
- "//build/config:default_frame_pointers",
- "//build/config:default_include_dirs",
- "//build/config:default_symbols",
- "//build/config:default_warnings",
- "//build/config:no_exceptions",
- "//build/config:no_rtti",
- "//build/config:symbol_visibility_hidden",
-]
-
-if (is_debug) {
- default_common_binary_configs += [ "//build/config:debug" ]
-} else {
- default_common_binary_configs += [ "//build/config:release" ]
-}
-
-if (is_fuchsia) {
- default_common_binary_configs += [
- "//build/config/fuchsia:icf",
- "//build/config/fuchsia:thread_safety_annotations",
- "//build/config/fuchsia:werror",
-
- # TODO(mcgrathr): Perhaps restrict this to only affected code.
- # For now, safest to do it everywhere.
- "//build/config/fuchsia:zircon_asserts",
- ]
-}
-
-default_common_binary_configs += [ "//build/config/lto:default" ]
-
-# Add and remove configs specified by the variant.
-default_common_binary_configs += toolchain_variant.configs
-default_common_binary_configs -= toolchain_variant.remove_common_configs
-
-default_shared_library_configs = default_common_binary_configs + [
- "//build/config:shared_library_config",
- "//build/config:symbol_no_undefined",
- ]
-default_shared_library_configs -= toolchain_variant.remove_shared_configs
-
-default_executable_configs = default_common_binary_configs + [
- "//build/config:executable_config",
- "//build/config:default_libs",
- ]
-default_executable_deps = [ "//build/config/scudo:default_for_executable" ]
-
-if (toolchain_variant.is_pic_default) {
- default_common_binary_configs += [ "//build/config:shared_library_config" ]
-}
-
-# Apply that default list to the binary target types.
-set_defaults("source_set") {
- configs = default_common_binary_configs
-}
-set_defaults("static_library") {
- configs = default_common_binary_configs
-}
-set_defaults("shared_library") {
- configs = default_shared_library_configs
-}
-set_defaults("loadable_module") {
- configs = default_shared_library_configs
-}
-set_defaults("executable") {
- configs = default_executable_configs
-}
-
-if (is_fuchsia) {
- if (!toolchain_variant.is_pic_default) {
- # In the main toolchain, shared_library just redirects to the same
- # target in the -shared toolchain.
- template("shared_library") {
- group(target_name) {
- public_deps = [
- ":$target_name(${current_toolchain}-shared)",
- ]
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- # Mark all variables as not needed to suppress errors for unused
- # variables. The other variables normally passed to shared_library
- # are actually used by the shared_library instantiation in the
- # -shared toolchain, so any going truly unused will be caught there.
- not_needed(invoker, "*")
- }
- }
- } else {
- # In the -shared toolchain, shared_library is just its normal self,
- # but if the invoker constrained the visibility, we must make sure
- # the dependency from the main toolchain is still allowed.
- template("shared_library") {
- shared_library(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
- # for rationale on why this GN behavior is not considered a bug.
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker, "*", [ "visibility" ])
- if (defined(visibility)) {
- visibility += [ ":$target_name" ]
- }
- }
- }
- }
-}
-
-# This is the basic "asan" variant. Others start with this and modify.
-# See `known_variants` (below) for the meaning of fields in this scope.
-_asan_variant = {
- configs = [ "//build/config/sanitizers:asan" ]
- if (host_os != "fuchsia") {
- host_only = {
- # On most systems (not Fuchsia), the sanitizer runtimes are normally
- # linked statically and so `-shared` links do not include them.
- # Using `-shared --no-undefined` with sanitized code will get
- # undefined references for the sanitizer runtime calls generated by
- # the compiler. It shouldn't do much harm, since the non-variant
- # builds will catch the real undefined reference bugs.
- remove_shared_configs = [ "//build/config:symbol_no_undefined" ]
- }
- }
- toolchain_args = {
- # -fsanitize=scudo is incompatible with -fsanitize=address.
- use_scudo = false
- }
-}
-
-declare_args() {
- # List of variants that will form the basis for variant toolchains.
- # To make use of a variant, set [`select_variant`](#select_variant).
- #
- # Normally this is not set as a build argument, but it serves to
- # document the available set of variants.
- # See also [`universal_variants`](#universal_variants).
- # Only set this to remove all the default variants here.
- # To add more, set [`extra_variants`](#extra_variants) instead.
- #
- # Each element of the list is one variant, which is a scope defining:
- #
- # `configs` (optional)
- # [list of labels] Each label names a config that will be
- # automatically used by every target built in this variant.
- # For each config `${label}`, there must also be a target
- # `${label}_deps`, which each target built in this variant will
- # automatically depend on. The `variant()` template is the
- # recommended way to define a config and its `_deps` target at
- # the same time.
- #
- # `remove_common_configs` (optional)
- # `remove_shared_configs` (optional)
- # [list of labels] This list will be removed (with `-=`) from
- # the `default_common_binary_configs` list (or the
- # `default_shared_library_configs` list, respectively) after
- # all other defaults (and this variant's configs) have been
- # added.
- #
- # `deps` (optional)
- # [list of labels] Added to the deps of every target linked in
- # this variant (as well as the automatic `${label}_deps` for
- # each label in configs).
- #
- # `name` (required if configs is omitted)
- # [string] Name of the variant as used in
- # [`select_variant`](#select_variant) elements' `variant` fields.
- # It's a good idea to make it something concise and meaningful when
- # seen as e.g. part of a directory name under `$root_build_dir`.
- # If name is omitted, configs must be nonempty and the simple names
- # (not the full label, just the part after all `/`s and `:`s) of these
- # configs will be used in toolchain names (each prefixed by a "-"),
- # so the list of config names forming each variant must be unique
- # among the lists in `known_variants + extra_variants`.
- #
- # `toolchain_args` (optional)
- # [scope] Each variable defined in this scope overrides a
- # build argument in the toolchain context of this variant.
- #
- # `host_only` (optional)
- # `target_only` (optional)
- # [scope] This scope can contain any of the fields above.
- # These values are used only for host or target, respectively.
- # Any fields included here should not also be in the outer scope.
- #
- known_variants = [
- {
- configs = [ "//build/config/lto" ]
- },
- {
- configs = [ "//build/config/lto:thinlto" ]
- },
-
- {
- configs = [ "//build/config/profile" ]
- },
-
- {
- configs = [ "//build/config/scudo" ]
- },
-
- {
- configs = [ "//build/config/sanitizers:ubsan" ]
- },
- {
- configs = [
- "//build/config/sanitizers:ubsan",
- "//build/config/sanitizers:sancov",
- ]
- },
-
- _asan_variant,
- {
- forward_variables_from(_asan_variant, "*")
- configs += [ "//build/config/sanitizers:sancov" ]
- },
- {
- name = "asan_no_detect_leaks"
- forward_variables_from(_asan_variant, "*", [ "toolchain_args" ])
- toolchain_args = {
- forward_variables_from(_asan_variant.toolchain_args, "*")
- asan_default_options = "detect_leaks=0"
- }
- },
-
- # Fuzzer variants for various sanitizers, -fsanitize=fuzzer results
- # in undefined symbols in shared objects that are satisfied in the final,
- # statically linked fuzzer.
- {
- # TODO(aarongreen): TC-264: Clang emits new/new[]/delete/delete[] into
- # libfuzzer's static libc++. Remove this when fixed.
- forward_variables_from(_asan_variant, "*", [ "toolchain_args" ])
- toolchain_args = {
- forward_variables_from(_asan_variant.toolchain_args, "*")
- asan_default_options = "alloc_dealloc_mismatch=0"
- }
- configs += [ "//build/config/sanitizers:fuzzer" ]
- remove_shared_configs = [ "//build/config:symbol_no_undefined" ]
- },
- {
- configs = [
- "//build/config/sanitizers:ubsan",
- "//build/config/sanitizers:fuzzer",
- ]
- remove_shared_configs = [ "//build/config:symbol_no_undefined" ]
- },
- ]
-
- # Additional variant toolchain configs to support.
- # This is just added to [`known_variants`](#known_variants).
- extra_variants = []
-
- # List of "universal" variants, in addition to
- # [`known_variants`](#known_variants). Normally this is not set as a
- # build argument, but it serves to document the available set of
- # variants. These are treated just like
- # [`known_variants`](#known_variants), but as well as being variants by
- # themselves, these are also combined with each of
- # [`known_variants`](#known_variants) to form additional variants,
- # e.g. "asan-debug" or "ubsan-sancov-release".
- universal_variants = []
-
- # Only one of "debug" and "release" is really available as a universal
- # variant in any given build (depending on the global setting of
- # `is_debug`). But this gets evaluated separately in every toolchain, so
- # e.g. in the "release" toolchain the sense of `if (is_debug)` tests is
- # inverted and this would list only "debug" as an available variant. The
- # selection logic in `variant_target()` can only work if the value of
- # `universal_variants` it sees includes the current variant.
- if (is_debug) {
- universal_variants += [
- {
- name = "release"
- configs = []
- toolchain_args = {
- is_debug = false
- }
- },
- ]
- } else {
- universal_variants += [
- {
- name = "debug"
- configs = []
- toolchain_args = {
- is_debug = true
- }
- },
- ]
- }
-
- # List of short names for commonly-used variant selectors. Normally this
- # is not set as a build argument, but it serves to document the available
- # set of short-cut names for variant selectors. Each element of this list
- # is a scope where `.name` is the short name and `.select_variant` is a
- # a list that can be spliced into [`select_variant`](#select_variant).
- select_variant_shortcuts = [
- {
- name = "host_asan"
- select_variant = []
- select_variant = [
- {
- variant = "asan_no_detect_leaks"
- host = true
- dir = [
- # TODO(TO-565): The yasm host tools have leaks.
- "//third_party/yasm",
-
- # TODO(TO-666): replace futiltiy & cgpt with 1p tools
- "//third_party/vboot_reference",
- "//garnet/tools/vboot_reference",
- ]
- },
- {
- variant = "asan"
- host = true
- },
- ]
- },
-
- # TODO(TC-241): Remove this when TC-241 is fixed. For now, don't
- # apply ASan to drivers because all drivers (and nothing else)
- # use -static-libstdc++ and so hit the TC-241 problem.
- {
- name = "asan"
- select_variant = []
- select_variant = [
- {
- target_type = [ "driver_module" ]
- variant = false
- },
- {
- variant = "asan"
- host = false
- },
- ]
- },
- ]
-}
-
-# Now elaborate the fixed shortcuts with implicit shortcuts for
-# each known variant. The shortcut is just the name of the variant
-# and selects for `host=false`.
-_select_variant_shortcuts = select_variant_shortcuts
-foreach(variant, known_variants) {
- if (defined(variant.name)) {
- variant = variant.name
- } else {
- # This is how GN spells "let".
- foreach(configs, [ variant.configs ]) {
- variant = ""
- foreach(config, configs) {
- config = get_label_info(config, "name")
- if (variant == "") {
- variant = config
- } else {
- variant += "-$config"
- }
- }
- }
- }
- _select_variant_shortcuts += [
- {
- name = variant
- select_variant = []
- select_variant = [
- {
- variant = name
- host = false
- },
- ]
- },
- ]
- foreach(universal_variant, universal_variants) {
- _select_variant_shortcuts += [
- {
- name = "${variant}-${universal_variant.name}"
- select_variant = []
- select_variant = [
- {
- variant = name
- host = false
- },
- ]
- },
- ]
- }
-}
-foreach(variant, universal_variants) {
- variant = variant.name
- _select_variant_shortcuts += [
- {
- name = variant
- select_variant = []
- select_variant = [
- {
- variant = name
- host = false
- },
- ]
- },
- ]
-}
-
-declare_args() {
- # List of "selectors" to request variant builds of certain targets.
- # Each selector specifies matching criteria and a chosen variant.
- # The first selector in the list to match a given target determines
- # which variant is used for that target.
- #
- # Each selector is either a string or a scope. A shortcut selector is
- # a string; it gets expanded to a full selector. A full selector is a
- # scope, described below.
- #
- # A string selector can match a name in
- # [`select_variant_shortcuts`](#select_variant_shortcuts). If it's not a
- # specific shortcut listed there, then it can be the name of any variant
- # described in [`known_variants`](#known_variants) and
- # [`universal_variants`](#universal_variants) (and combinations thereof).
- # A `selector` that's a simple variant name selects for every binary
- # built in the target toolchain: `{ host=false variant=selector }`.
- #
- # If a string selector contains a slash, then it's `"shortcut/filename"`
- # and selects only the binary in the target toolchain whose `output_name`
- # matches `"filename"`, i.e. it adds `output_name=["filename"]` to each
- # selector scope that the shortcut's name alone would yield.
- #
- # The scope that forms a full selector defines some of these:
- #
- # variant (required)
- # [string or `false`] The variant that applies if this selector
- # matches. This can be `false` to choose no variant, or a string
- # that names the variant. See
- # [`known_variants`](#known_variants) and
- # [`universal_variants`](#universal_variants).
- #
- # The rest below are matching criteria. All are optional.
- # The selector matches if and only if all of its criteria match.
- # If none of these is defined, then the selector always matches.
- #
- # The first selector in the list to match wins and then the rest of
- # the list is ignored. So construct more complex rules by using a
- # "blacklist" selector with `variant=false` before a catch-all or
- # "whitelist" selector that names a variant.
- #
- # Each "[strings]" criterion is a list of strings, and the criterion
- # is satisfied if any of the strings matches against the candidate string.
- #
- # host
- # [boolean] If true, the selector matches in the host toolchain.
- # If false, the selector matches in the target toolchain.
- #
- # testonly
- # [boolean] If true, the selector matches targets with testonly=true.
- # If false, the selector matches in targets without testonly=true.
- #
- # target_type
- # [strings]: `"executable"`, `"loadable_module"`, or `"driver_module"`
- #
- # output_name
- # [strings]: target's `output_name` (default: its `target name`)
- #
- # label
- # [strings]: target's full label with `:` (without toolchain suffix)
- #
- # name
- # [strings]: target's simple name (label after last `/` or `:`)
- #
- # dir
- # [strings]: target's label directory (`//dir` for `//dir:name`).
- select_variant = []
-
- # *This should never be set as a build argument.*
- # It exists only to be set in `toolchain_args`.
- # See //build/toolchain/clang_toolchain.gni for details.
- select_variant_canonical = []
-}
-
-# Do this only once, in the default toolchain context. Then
-# clang_toolchain_suite will just pass the results through to every
-# other toolchain via toolchain_args so the work is not repeated.
-if (toolchain_variant.base == target_toolchain && current_cpu == target_cpu &&
- current_os == target_os && toolchain_variant.name == "" &&
- !toolchain_variant.is_pic_default) {
- assert(select_variant_canonical == [],
- "`select_variant_canonical` cannot be set as a build argument")
-
- foreach(selector, select_variant) {
- if (selector != "$selector") {
- # It's a scope, not a string. Just use it as is.
- select_variant_canonical += [ selector ]
- } else {
- # It's a string, not a scope. Expand the shortcut.
- # If there is a slash, this is "shortcut/output_name".
- # If not, it's just "shortcut".
- foreach(file, [ get_path_info(selector, "file") ]) {
- if (file == selector) {
- file = ""
- } else {
- selector = get_path_info(selector, "dir")
- }
- foreach(shortcut, _select_variant_shortcuts) {
- # file=true stands in for "break".
- if (file != true && selector == shortcut.name) {
- # Found the matching shortcut.
- if (file == "") {
- # It applies to everything, so just splice it in directly.
- select_variant_canonical += shortcut.select_variant
- } else {
- # Add each of the shortcut's clauses amended with the
- # output_name constraint.
- foreach(clause, shortcut.select_variant) {
- select_variant_canonical += [
- {
- forward_variables_from(clause, "*")
- output_name = [ file ]
- },
- ]
- }
- }
- file = true
- }
- }
- assert(file == true,
- "unknown shortcut `${selector}` used in `select_variant`")
- }
- }
- }
-}
-
-template("variant_target") {
- target_type = target_name
- target_name = invoker.target_name
- target_invoker = {
- # Explicitly forward visibility, implicitly forward everything else.
- # See comment in template("shared_library") above for details.
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker,
- "*",
- [
- "_target_type",
- "target_name",
- "visibility",
- ])
-
- if (!defined(output_name)) {
- output_name = target_name
- }
- }
-
- # target_type is the real GN target type that builds the thing.
- # selector_target_type is the name matched against target_type selectors.
- if (defined(invoker._target_type)) {
- selector_target_type = invoker._target_type
- } else {
- selector_target_type = target_type
- }
-
- target_label = get_label_info(":$target_name", "label_no_toolchain")
-
- # These are not actually used in all possible if branches below,
- # so defang GN's extremely sensitive "unused variable" errors.
- not_needed([
- "selector_target_type",
- "target_invoker",
- "target_label",
- "target_type",
- ])
-
- target_variant = false
- if (select_variant_canonical != []) {
- # See if there is a selector that matches this target.
- selected = false
- foreach(selector, select_variant_canonical) {
- # The first match wins.
- # GN's loops don't have "break", so do nothing on later iterations.
- if (!selected) {
- # Expand the selector so we don't have to do a lot of defined(...)
- # tests below.
- select = {
- }
- select = {
- target_type = []
- output_name = []
- label = []
- name = []
- dir = []
- forward_variables_from(selector, "*")
- }
-
- selected = true
- if (selected && defined(selector.host)) {
- selected = current_toolchain == host_toolchain == selector.host
- }
-
- if (selected && defined(selector.testonly)) {
- selected = (defined(target_invoker.testonly) &&
- target_invoker.testonly) == selector.testonly
- }
-
- if (selected && select.target_type != []) {
- selected = false
- candidate = selector_target_type
- foreach(try, select.target_type) {
- if (try == candidate) {
- selected = true
- }
- }
- }
-
- if (selected && select.output_name != []) {
- selected = false
- candidate = target_invoker.output_name
- foreach(try, select.output_name) {
- if (try == candidate) {
- selected = true
- }
- }
- }
-
- if (selected && select.label != []) {
- selected = false
- candidate = target_label
- foreach(try, select.label) {
- if (try == candidate) {
- selected = true
- }
- }
- }
-
- if (selected && select.name != []) {
- selected = false
- candidate = get_label_info(target_label, "name")
- foreach(try, select.name) {
- if (try == candidate) {
- selected = true
- }
- }
- }
-
- if (selected && select.dir != []) {
- selected = false
- candidate = get_label_info(target_label, "dir")
- foreach(try, select.dir) {
- if (try == candidate) {
- selected = true
- }
- }
- }
-
- if (selected && selector.variant != false) {
- target_variant = "-${selector.variant}"
- }
- }
- }
- }
- if (target_variant == false) {
- target_variant = ""
- }
-
- builder_toolchain = toolchain_variant.base + target_variant
- if (invoker._variant_shared) {
- builder_toolchain += "-shared"
- }
-
- if (current_toolchain == builder_toolchain) {
- # This is the toolchain selected to actually build this target.
- target(target_type, target_name) {
- deps = []
- forward_variables_from(target_invoker, "*")
- deps += toolchain_variant.deps
- foreach(config, toolchain_variant.configs) {
- # Expand the label so it always has a `:name` part.
- config = get_label_info(config, "label_no_toolchain")
- deps += [ "${config}_deps" ]
- }
- if (defined(visibility)) {
- # Other toolchains will define this target as a group or copy
- # rule that depends on this toolchain's definition. If the
- # invoker constrained the visibility, make sure those
- # dependencies from other toolchains are still allowed.
- visibility += [ ":${target_name}" ]
- }
- }
- } else if (current_toolchain == shlib_toolchain) {
- # Don't copy from a variant into a -shared toolchain, because nobody
- # looks for an executable or loadable_module there. Instead, just
- # forward any deps to the real target.
- group(target_name) {
- forward_variables_from(target_invoker,
- [
- "testonly",
- "visibility",
- ])
- if (defined(visibility)) {
- visibility += [ ":${target_name}" ]
- }
- deps = [
- ":${target_name}(${builder_toolchain})",
- ]
- }
- } else {
- # When some variant was selected, then this target in all other
- # toolchains is actually just this copy rule. The target is built in
- # the selected variant toolchain, but then copied to its usual name in
- # $root_out_dir so that things can find it there.
- copy_vars = {
- forward_variables_from(target_invoker,
- [
- "testonly",
- "visibility",
- ])
- if (defined(visibility)) {
- visibility += [ ":${target_name}" ]
- }
-
- deps = [
- ":${target_name}(${builder_toolchain})",
- ]
- variant_out_dir = get_label_info(deps[0], "root_out_dir")
-
- full_output_name = target_invoker.output_name
- if (defined(target_invoker.output_extension) &&
- target_invoker.output_extension != "") {
- full_output_name += ".${target_invoker.output_extension}"
- }
-
- sources = [
- "$variant_out_dir/$full_output_name",
- ]
- outputs = [
- "$root_out_dir/$full_output_name",
- ]
- }
-
- # In the host toolchain, make a symlink rather than a hard link
- # (which is what "copy" rules really do). Host tools are built with
- # an embedded shared library lookup path based on $ORIGIN on Linux
- # (//build/config/linux:compiler) and the equivalent @loader_path on
- # macOS (//build/config/mac:mac_dynamic_flags). The dynamic linker
- # translates this to "the directory containing the executable".
- # With hard links, this gets the directory used to invoke the
- # executable, which is host_toolchain's $root_out_dir. With
- # symlinks, it instead gets the directory containing the actual
- # executable file, which is builder_toolchain's $root_out_dir.
- # Hence the program uses the variant builds of shared libraries that
- # go with the variant build of the executable, rather using than the
- # vanilla host_toolchain builds with the variant executable.
- if (current_toolchain == host_toolchain) {
- action(target_name) {
- forward_variables_from(copy_vars, "*")
- script = "/bin/ln"
- args = [
- "-snf",
- rebase_path(sources[0], get_path_info(outputs[0], "dir")),
- rebase_path(outputs[0]),
- ]
- }
- } else {
- # For Fuchsia, //build/gn/variant.py depends on hard links to
- # identify the variants.
- copy(target_name) {
- forward_variables_from(copy_vars, "*")
- }
- }
- }
-}
-
-template("executable") {
- _executable_name = target_name
- _variant_shared = false
- variant_target("executable") {
- deps = []
- target_name = _executable_name
-
- # TODO(aarongreen): This shouldn't be required, but without it the
- # fuzzers fail to link. Investigate and remove when resolved.
- if (defined(invoker._target_type)) {
- _target_type = invoker._target_type
- }
-
- # Explicitly forward visibility, implicitly forward everything else.
- # See comment in template("shared_library") above for details.
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker, "*", [ "visibility" ])
-
- deps += default_executable_deps
- }
-}
-
-template("loadable_module") {
- _module_name = target_name
- _variant_shared = true
- variant_target("loadable_module") {
- target_name = _module_name
- if (defined(invoker._target_type)) {
- _target_type = invoker._target_type
- }
-
- # Explicitly forward visibility, implicitly forward everything else.
- # See comment in template("shared_library") above for details.
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker, "*", [ "visibility" ])
- if (!defined(output_extension)) {
- output_extension = "so"
- }
- }
-}
-
-# Some targets we share with Chromium declare themselves to be components,
-# which means they can build either as shared libraries or as static libraries.
-# We build them as static libraries.
-template("component") {
- 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.
- # See comment in template("shared_library") above for details.
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker, "*", [ "visibility" ])
- }
-}
-
-set_defaults("component") {
- configs = default_common_binary_configs
-}
diff --git a/config/arm.gni b/config/arm.gni
deleted file mode 100644
index 36dc838..0000000
--- a/config/arm.gni
+++ /dev/null
@@ -1,68 +0,0 @@
-# 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.
-
-if (current_cpu == "arm" || current_cpu == "arm64") {
- declare_args() {
- # Version of the ARM processor when compiling on ARM. Ignored on non-ARM
- # platforms.
- if (current_cpu == "arm") {
- arm_version = 7
- } else if (current_cpu == "arm64") {
- arm_version = 8
- } else {
- assert(false, "Unconfigured arm version")
- }
-
- # 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 = true
-
- # Whether to enable optional NEON code paths.
- arm_optionally_use_neon = false
- }
-
- assert(arm_float_abi == "" || arm_float_abi == "hard" ||
- arm_float_abi == "soft" || arm_float_abi == "softfp")
-
- if (arm_version == 6) {
- arm_arch = "armv6"
- if (arm_tune != "") {
- arm_tune = ""
- }
- if (arm_float_abi == "") {
- arm_float_abi = "softfp"
- }
- arm_fpu = "vfp"
-
- # Thumb is a reduced instruction set available on some ARM processors that
- # has increased code density.
- arm_use_thumb = false
- } else if (arm_version == 7) {
- arm_arch = "armv7-a"
- if (arm_tune == "") {
- arm_tune = "generic-armv7-a"
- }
-
- if (arm_float_abi == "") {
- arm_float_abi = "softfp"
- }
-
- arm_use_thumb = true
-
- if (arm_use_neon) {
- arm_fpu = "neon"
- } else {
- arm_fpu = "vfpv3-d16"
- }
- }
-}
diff --git a/config/clang/clang.gni b/config/clang/clang.gni
deleted file mode 100644
index 4945ee3..0000000
--- a/config/clang/clang.gni
+++ /dev/null
@@ -1,28 +0,0 @@
-# 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.
-
-declare_args() {
- # The default clang toolchain provided by the buildtools. This variable is
- # additionally consumed by the Go toolchain.
- clang_prefix =
- rebase_path("//buildtools/${host_platform}/clang/bin", root_build_dir)
-}
-
-if (current_cpu == "arm64") {
- clang_cpu = "aarch64"
-} else if (current_cpu == "x64") {
- clang_cpu = "x86_64"
-} else {
- assert(false, "CPU not supported")
-}
-
-if (is_fuchsia) {
- clang_target = "${clang_cpu}-fuchsia"
-} else if (is_linux) {
- clang_target = "${clang_cpu}-linux-gnu"
-} else if (is_mac) {
- clang_target = "${clang_cpu}-apple-darwin"
-} else {
- assert(false, "OS not supported")
-}
diff --git a/config/compiler.gni b/config/compiler.gni
deleted file mode 100644
index 7ec3b1f..0000000
--- a/config/compiler.gni
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2018 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.
-
-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.
- symbol_level = 2
-}
diff --git a/config/fuchsia/BUILD.gn b/config/fuchsia/BUILD.gn
deleted file mode 100644
index 4864667..0000000
--- a/config/fuchsia/BUILD.gn
+++ /dev/null
@@ -1,153 +0,0 @@
-# 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/config/fuchsia/zircon.gni")
-import("//build/config/sysroot.gni")
-import("//build/toolchain/ccache.gni")
-
-assert(current_os == "fuchsia")
-
-config("werror") {
- if (!use_ccache) {
- cflags = [
- "-Werror",
-
- # Declarations marked as deprecated should cause build failures, rather
- # they should emit warnings to notify developers about the use of
- # deprecated interfaces.
- "-Wno-error=deprecated-declarations",
-
- # Do not add additional -Wno-error to this config.
- ]
- }
-}
-
-config("icf") {
- # This changes C/C++ semantics and might be incompatible with third-party
- # code that relies on function pointers comparison.
- ldflags = [ "-Wl,--icf=all" ]
-}
-
-# ccache, at least in some configurations, caches preprocessed content. This
-# means that by the time the compiler sees it, macros are unrolled. A number
-# of gcc and clang diagnostics are conditioned on whether the source is part
-# of a macro or not. This is because a "reasonable" looking macro invocation
-# may end up doing something silly internally. This can mean self assignment
-# and tautological comparisons, since macros are not typed. Macros also tend
-# to over-parenthesize, and so on. This particular list of options was found
-# via trial and error, and might be the best way of keeping the build quiet.
-config("ccache") {
- cflags = [
- "-Wno-error",
- "-Qunused-arguments",
- "-Wno-parentheses-equality",
- "-Wno-self-assign",
- "-Wno-tautological-compare",
- "-Wno-unused-command-line-argument",
- ]
- asmflags = cflags
-}
-
-config("compiler") {
- cflags = []
- cflags_c = [ "-std=c11" ]
- cflags_cc = [ "-std=c++17" ]
- ldflags = [
- "-Wl,--threads",
- "-Wl,--pack-dyn-relocs=relr",
- ]
- configs = [
- ":compiler_sysroot",
- ":compiler_target",
- ":compiler_cpu",
- ":toolchain_version_stamp",
- ]
- if (use_ccache) {
- configs += [ ":ccache" ]
- }
- asmflags = cflags + cflags_c
-}
-
-config("toolchain_version_stamp") {
- # We want to force a recompile and relink of the world whenever our toolchain changes since
- # artifacts from an older version of the toolchain may or may not be compatible with newer ones.
- # To achieve this, we insert a synthetic define into the compile line.
- cipd_version = read_file(
- "//buildtools/${host_platform}/clang/.versions/clang.cipd_version",
- "json")
- defines = [ "TOOLCHAIN_VERSION=${cipd_version.instance_id}" ]
-}
-
-config("compiler_sysroot") {
- # The sysroot for Fuchsia is part of Zircon build which is pointed to by the sysroot variable.
- cflags = [ "--sysroot=${sysroot}" ]
- ldflags = cflags
- asmflags = cflags
-}
-
-config("compiler_target") {
- cflags = [ "--target=$clang_target" ]
- asmflags = cflags
- ldflags = cflags
-}
-
-config("compiler_cpu") {
- cflags = []
- if (current_cpu == "x64") {
- cflags += [
- "-march=x86-64",
- "-mcx16",
- ]
- }
- ldflags = cflags
- asmflags = cflags
-
- if (current_cpu == "arm64") {
- ldflags += [ "-Wl,--fix-cortex-a53-843419" ]
- }
-}
-
-config("shared_library_config") {
- cflags = [ "-fPIC" ]
-}
-
-config("fdio_config") {
- libs = [ "fdio" ]
-
- # TODO(pylaligand): find a better way to let executables link in fdio.
- # Ideally their dependencies should be set up in such a way that it would get
- # inherited from them.
- lib_dirs = [ "$zircon_build_dir/system/ulib/fdio" ]
-}
-
-config("executable_config") {
-}
-
-config("thread_safety_annotations") {
- cflags_cc = [ "-Wthread-safety" ]
- defines = [ "_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS" ]
-}
-
-config("enable_zircon_asserts") {
- defines = [ "ZX_DEBUGLEVEL=2" ]
-}
-
-declare_args() {
- zircon_asserts = is_debug
-}
-
-config("zircon_asserts") {
- if (zircon_asserts) {
- configs = [ ":enable_zircon_asserts" ]
- }
-}
-
-config("no_cpp_standard_library") {
- ldflags = [ "-nostdlib++" ]
-}
-
-config("static_cpp_standard_library") {
- ldflags = [ "-static-libstdc++" ]
-}
diff --git a/config/fuchsia/config.gni b/config/fuchsia/config.gni
deleted file mode 100644
index c3c815e..0000000
--- a/config/fuchsia/config.gni
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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.
-
-assert(current_os == "fuchsia")
-
-declare_args() {
- # Path to Fuchsia SDK.
- fuchsia_sdk = "//buildtools"
-}
diff --git a/config/fuchsia/rules.gni b/config/fuchsia/rules.gni
deleted file mode 100644
index 99b431d..0000000
--- a/config/fuchsia/rules.gni
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2017 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.
-
-assert(current_os == "fuchsia")
-
-# Declare a driver module target.
-#
-# This target allows you to create an object file that can be used as a driver
-# that is loaded at runtime.
-#
-# Flags: cflags, cflags_c, cflags_cc, asmflags, defines, include_dirs,
-# ldflags, lib_dirs, libs,
-# Deps: data_deps, deps, public_deps
-# Dependent configs: all_dependent_configs, public_configs
-# General: check_includes, configs, data, inputs, output_name,
-# output_extension, public, sources, testonly, visibility
-template("driver_module") {
- loadable_module(target_name) {
- _target_type = "driver_module"
-
- # Explicitly forward visibility, implicitly forward everything else.
- # See comment in //build/config/BUILDCONFIG.gn for details on this pattern.
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker, "*", [ "visibility" ])
- }
-}
-
-set_defaults("driver_module") {
- # Sets the default configs for driver_module, which can be modified later
- # by the invoker. This overrides the loadable_module default.
- configs = default_shared_library_configs
-
- # In general, drivers should not use the C++ standard library, and drivers
- # cannot dynamically link against it. This config tells the linker to not
- # link against the C++ standard library.
- # Drivers that do require standard library functionality should remove this
- # config line and add "//build/config/fuchsia:static_cpp_standard_library" to
- # statically link it into the driver.
- configs += [ "//build/config/fuchsia:no_cpp_standard_library" ]
-}
diff --git a/config/fuchsia/sdk.gni b/config/fuchsia/sdk.gni
deleted file mode 100644
index a138ee0..0000000
--- a/config/fuchsia/sdk.gni
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2017 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.
-
-declare_args() {
- # The directories to search for parts of the SDK.
- #
- # By default, we search the public directories for the various layers.
- # In the future, we'll search a pre-built SDK as well.
- sdk_dirs = [
- "//garnet/public",
- "//peridot/public",
- "//topaz/public",
- ]
-}
diff --git a/config/fuchsia/zbi.gni b/config/fuchsia/zbi.gni
deleted file mode 100644
index 0facf2a..0000000
--- a/config/fuchsia/zbi.gni
+++ /dev/null
@@ -1,148 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/fuchsia/zircon.gni")
-
-# Template for assembling a Zircon Boot Image file from various inputs.
-#
-# Parameters
-#
-# output_name (optional, default: target_name)
-# output_extension (optional, default: "zbi")
-# [string] These together determine the name of the output file.
-# If `output_name` is omitted, then the name of the target is
-# used. If `output_extension` is "" then `output_name` is the
-# file name; otherwise, `${output_name}.${output_extension}`;
-# the output file is always under `root_out_dir`.
-#
-# complete (optional, default: true)
-# [Boolean] If true, then the output is intended to be a complete ZBI.
-# That is, a single file that can be booted. This will make the tool
-# verify it has the necessary contents and finalize it appropriately.
-#
-# compress (optional, default: true)
-# [Boolean] If true, BOOTFS and RAMDISK payloads will be compressed.
-#
-# inputs (optional)
-# [list of files] Input files. Each can be either a ZBI format
-# file (e.g. from another `zbi` action, or the kernel ZBI), or a
-# manifest file or directory to generate a `BOOTFS` filesystem
-# embedded in the ZBI output.
-#
-# cmdline (optional)
-# [list of strings] Kernel command line text.
-#
-# cmdline_inputs (optional)
-# [list of files] Input files treated as kernel command line text.
-#
-# manifest (optional)
-# [list of string|scope] List of individual manifest entries.
-# Each entry can be a "TARGET=SOURCE" string, or it can be a scope
-# with `sources` and `outputs` in the style of a copy() target:
-# `outputs[0]` is used as `TARGET` (see `gn help source_expansion`).
-#
-# ramdisk_inputs (optional)
-# [list of files] Input files treated as raw RAM disk images.
-#
-# deps (usually required)
-# visibility (optional)
-# testonly (optional)
-# Same as for any GN `action` target. `deps` must list labels that
-# produce all the `inputs`, `cmdline_inputs`, and `ramdisk_inputs`
-# that are generated by the build (none are required for inputs that
-# are part of the source tree).
-#
-# Each of the various kinds of input is optional, but the action will
-# fail at build time (not at `gn gen` time) if there are is no input of
-# any kind.
-template("zbi") {
- if (defined(invoker.output_name)) {
- output_file = invoker.output_name
- } else {
- output_file = target_name
- }
-
- if (defined(invoker.output_extension)) {
- if (invoker.output_extension != "") {
- output_file += ".${invoker.output_extension}"
- }
- } else {
- output_file += ".zbi"
- }
-
- output_file = "$root_out_dir/$output_file"
-
- zircon_tool_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "visibility",
- "testonly",
- ])
- outputs = [
- output_file,
- ]
- depfile = "${output_file}.d"
- inputs = []
-
- tool = "zbi"
- args = [
- "--output=" + rebase_path(output_file, root_build_dir),
- "--depfile=" + rebase_path(depfile, root_build_dir),
- ]
-
- if (!defined(invoker.complete) || invoker.complete) {
- args += [ "--complete=" + current_cpu ]
- }
-
- if (defined(invoker.compress) && !invoker.compress) {
- args += [ "--uncompressed" ]
- }
-
- if (defined(invoker.inputs)) {
- args += rebase_path(invoker.inputs, root_build_dir)
- inputs += invoker.inputs
- }
-
- if (defined(invoker.manifest)) {
- foreach(entry, invoker.manifest) {
- if (entry == "$entry") {
- # It's a literal manifest entry string.
- args += [ "--entry=$entry" ]
- } else {
- # It's a manifest entry in the style of a copy() target.
- targets = entry.outputs
- assert(targets == [ targets[0] ],
- "manifest entry outputs list must have exactly one element")
- foreach(source, entry.sources) {
- inputs += [ source ]
- source_path = rebase_path(source, root_build_dir)
- foreach(target, process_file_template([ source ], targets)) {
- args += [ "--entry=${target}=${source_path}" ]
- }
- }
- }
- }
- }
-
- if (defined(invoker.ramdisk_inputs)) {
- args += [ "--type=ramdisk" ]
- args += rebase_path(invoker.ramdisk_inputs, root_build_dir)
- inputs += invoker.ramdisk_inputs
- }
-
- if (defined(invoker.cmdline) || defined(invoker.cmdline_inputs)) {
- args += [ "--type=cmdline" ]
- if (defined(invoker.cmdline)) {
- foreach(cmdline, invoker.cmdline) {
- args += [ "--entry=$cmdline" ]
- }
- }
- if (defined(invoker.cmdline_inputs)) {
- args += rebase_path(invoker.cmdline_inputs, root_build_dir)
- inputs += invoker.cmdline_inputs
- }
- }
- }
-}
diff --git a/config/fuchsia/zircon.gni b/config/fuchsia/zircon.gni
deleted file mode 100644
index 76df754..0000000
--- a/config/fuchsia/zircon.gni
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/clang/clang.gni")
-
-declare_args() {
- # Where to find Zircon's host-side tools that are run as part of the build.
- zircon_tools_dir = "//out/build-zircon/tools"
-
- # Zircon build directory for `target_cpu`, containing link-time `.so.abi`
- # files that GN `deps` on //zircon/public libraries will link against.
- # This should not be a sanitizer build.
- zircon_build_abi_dir = "//out/build-zircon/build-$target_cpu"
-
- # Zircon build directory for `target_cpu`, containing `.manifest` and
- # `.zbi` files for Zircon's BOOTFS and kernel. This provides the kernel
- # and Zircon components used in the boot image. It also provides the
- # Zircon shared libraries used at runtime in Fuchsia packages.
- #
- # If left `""` (the default), then this is computed from
- # [`zircon_build_abi_dir`](#zircon_build_abi_dir) and
- # [`zircon_use_asan`](#zircon_use_asan).
- zircon_build_dir = ""
-
- # Zircon `USE_ASAN=true` build directory for `target_cpu` containing
- # `bootfs.manifest` with libraries and `devhost.asan`.
- #
- # If left `""` (the default), then this is computed from
- # [`zircon_build_dir`](#zircon_build_dir) and
- # [`zircon_use_asan`](#zircon_use_asan).
- zircon_asan_build_dir = ""
-
- # Set this if [`zircon_build_dir`](#zircon_build_dir) was built with
- # `USE_ASAN=true`, e.g. `//scripts/build-zircon.sh -A`. This mainly
- # affects the defaults for [`zircon_build_dir`](#zircon_build_dir) and
- # [`zircon_build_abi_dir`](#zircon_build_abi_dir). It also gets noticed
- # by //scripts/fx commands that rebuild Zircon so that they use `-A`
- # again next time.
- zircon_use_asan = false
-
- # Path to `make` binary. By default, `make` is assumed to be in the
- # path. Used in the script that generates the Zircon build rules. N.B. this
- # path is *not* rebased, just used as is.
- zircon_make_path = "make"
-}
-
-if (zircon_build_dir == "") {
- zircon_build_dir = zircon_build_abi_dir
- if (zircon_use_asan) {
- zircon_build_dir += "-asan"
- }
-}
-
-# If zircon_use_asan is true, then zircon_build_dir has the ASan bits.
-# Otherwise, they need to be found elsewhere.
-if (zircon_asan_build_dir == "" && !zircon_use_asan) {
- zircon_asan_build_dir = "${zircon_build_dir}-asan"
-}
-
-# Template for running a Zircon host tool as part of the build.
-# This is a thin wrapper to define an `action()` target.
-#
-# Parameters
-#
-# tool (required)
-# [string] The name of the tool, like "mkbootfs".
-#
-# args (required)
-# [list of strings] The arguments to pass the tool.
-# The tool runs with `root_build_dir` as its current directory,
-# so any file names should be made either absolute or relative
-# to `root_build_dir` using `rebase_path()`.
-#
-# All other parameters are exactly as for `action()`, except
-# that `script` is replaced with `tool`.
-#
-template("zircon_tool_action") {
- assert(defined(invoker.tool), "zircon_tool_action() requires `tool`")
- assert(defined(invoker.args), "zircon_tool_action() requires `args`")
- _tool = "$zircon_tools_dir/${invoker.tool}"
- action(target_name) {
- inputs = []
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
- forward_variables_from(invoker,
- "*",
- [
- "args",
- "script",
- "tool",
- "testonly",
- "visibility",
- ])
- script = "//build/gn_run_binary.sh"
- inputs += [ _tool ]
- args = [
- clang_prefix,
- rebase_path(_tool, root_build_dir),
- ] + invoker.args
- }
-}
diff --git a/config/host_byteorder.gni b/config/host_byteorder.gni
deleted file mode 100644
index 7f711ce..0000000
--- a/config/host_byteorder.gni
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2017 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 header file defines the "host_byteorder" variable.
-declare_args() {
- host_byteorder = "undefined"
-}
-
-# Detect host byteorder
-if (host_cpu == "arm64" || host_cpu == "x64") {
- host_byteorder = "little"
-} else {
- assert(false, "Unsupported host CPU")
-}
diff --git a/config/linux/BUILD.gn b/config/linux/BUILD.gn
deleted file mode 100644
index 85906d7..0000000
--- a/config/linux/BUILD.gn
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/config/sysroot.gni")
-
-config("compiler") {
- cflags = []
- cflags_c = []
- cflags_cc = []
- ldflags = [
- "-static-libstdc++",
-
- # Generate build ID for all binaries so we can use the .build-id directory
- # scheme for debugging information. This flag is enabled by default for our
- # toolchain and many native host toolchains, but we set it explicitly to
- # support arbitrary host toolchains.
- "-Wl,--build-id",
-
- # Set rpath to find dynamically linked libraries placed next to executables
- # in the host build directory.
- "-Wl,-rpath=\$ORIGIN/",
- ]
- if (host_os == "mac") {
- # TODO(TC-325): When building binaries for Linux on macOS, we need to use
- # lld as a linker, hence this flag. This is not needed on Linux since our
- # Clang is configured to use lld as a default linker, but we cannot use the
- # same option on macOS since default linker is currently a per-toolchain,
- # not a per-target option and on macOS, Clang should default to ld64. We
- # should change Clang to make the default linker a per-target option.
- ldflags += [ "-fuse-ld=lld" ]
- }
- configs = [
- ":sysroot",
- ":target",
- ]
-
- # TODO(TC-74) The implicitly linked static libc++.a depends on these.
- libs = [
- "dl",
- "pthread",
- ]
- lib_dirs = [ rebase_path("//buildtools/${host_platform}/clang/lib") ]
- asmflags = cflags + cflags_c
-}
-
-config("sysroot") {
- cflags = [ "--sysroot=$sysroot" ]
- ldflags = cflags
- asmflags = cflags
-}
-
-config("target") {
- cflags = [ "--target=$clang_target" ]
- asmflags = cflags
- ldflags = cflags
-}
diff --git a/config/lto/BUILD.gn b/config/lto/BUILD.gn
deleted file mode 100644
index a654446..0000000
--- a/config/lto/BUILD.gn
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/config/lto/config.gni")
-import("//build/toolchain/variant.gni")
-
-# This config is added unconditionally by BUILDCONFIG.gn to pick up the
-# global `use_lto` build argument. For fine-grained control, leave
-# `use_lto=false` and use `select_variant` to choose the `lto` or `thinlto`
-# variant for some components.
-config("default") {
- if (use_lto) {
- if (use_thinlto) {
- configs = [ ":thinlto" ]
- } else {
- configs = [ ":lto" ]
- }
- }
-}
-
-variant("lto") {
- common_flags = [
- "-flto",
-
- # Enable whole-program devirtualization and virtual constant propagation.
- "-fwhole-program-vtables",
- ]
-}
-
-variant("thinlto") {
- common_flags = [ "-flto=thin" ]
- ldflags = [
- # The ThinLTO driver launches a number of threads in parallel whose
- # number is by default equivalent to the number of cores. We need
- # to limit the parallelism to avoid aggressive competition between
- # different linker jobs.
- "-Wl,--thinlto-jobs=$thinlto_jobs",
-
- # Set the ThinLTO cache directory which is used to cache native
- # object files for ThinLTO incremental builds. This directory is
- # not managed by Ninja and has to be cleaned manually, but it is
- # periodically garbage-collected by the ThinLTO driver.
- "-Wl,--thinlto-cache-dir=$thinlto_cache_dir",
- ]
-}
diff --git a/config/lto/config.gni b/config/lto/config.gni
deleted file mode 100644
index f439ada..0000000
--- a/config/lto/config.gni
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2017 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.
-
-declare_args() {
- # Use link time optimization (LTO).
- use_lto = false
-
- # Use ThinLTO variant of LTO if use_lto = true.
- use_thinlto = true
-
- # Number of parallel ThinLTO jobs.
- thinlto_jobs = 8
-
- # ThinLTO cache directory path.
- thinlto_cache_dir = rebase_path("$root_out_dir/thinlto-cache", root_build_dir)
-}
diff --git a/config/mac/BUILD.gn b/config/mac/BUILD.gn
deleted file mode 100644
index fd0686d..0000000
--- a/config/mac/BUILD.gn
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/config/sysroot.gni")
-
-config("compiler") {
- cflags_objcc = [
- "-std=c++14",
- "-stdlib=libc++",
- ]
- configs = [ ":sysroot" ]
-}
-
-config("sysroot") {
- cflags = [ "--sysroot=$sysroot" ]
- ldflags = cflags
- asmflags = cflags
-}
-
-# On Mac, this is used for everything except static libraries.
-config("mac_dynamic_flags") {
- ldflags = [
- "-Wl,-search_paths_first",
- "-L.",
-
- # 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/../../..",
- ]
-}
-
-# On Mac, this is used only for executables.
-config("mac_executable_flags") {
- ldflags = [ "-Wl,-pie" ] # Position independent.
-}
-
-# Standard libraries.
-config("default_libs") {
- libs = [
- "AppKit.framework",
- "ApplicationServices.framework",
- "Carbon.framework",
- "CoreFoundation.framework",
- "CoreVideo.framework",
- "Foundation.framework",
- "OpenGL.framework",
- "Security.framework",
- "IOKit.framework",
- ]
-}
diff --git a/config/mac/config.gni b/config/mac/config.gni
deleted file mode 100644
index c8d2ffd..0000000
--- a/config/mac/config.gni
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2017 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.
-
-assert(current_os == "mac")
-
-declare_args() {
- # Minimum supported version of Mac SDK.
- mac_sdk_min = "10.13"
-
- # Path to Mac SDK.
- mac_sdk_path = ""
-}
-
-find_sdk_args = [
- "--print-sdk-path",
- mac_sdk_min,
-]
-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]
-}
diff --git a/config/profile/BUILD.gn b/config/profile/BUILD.gn
deleted file mode 100644
index 2f1d14c..0000000
--- a/config/profile/BUILD.gn
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/toolchain/variant.gni")
-
-variant("profile") {
- common_flags = [
- "-fprofile-instr-generate",
- "-fcoverage-mapping",
- ]
-
- # The statically-linked profiling runtime depends on libzircon.
- libs = [ "zircon" ]
-}
diff --git a/config/sanitizers/BUILD.gn b/config/sanitizers/BUILD.gn
deleted file mode 100644
index 5749324..0000000
--- a/config/sanitizers/BUILD.gn
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/toolchain/variant.gni")
-
-config("frame_pointers") {
- cflags = [ "-fno-omit-frame-pointer" ]
- ldflags = cflags
-}
-
-declare_args() {
- # Default [AddressSanitizer](https://llvm.org/docs/AddressSanitizer.html)
- # options (before the `ASAN_OPTIONS` environment variable is read at
- # runtime). This can be set as a build argument to affect most "asan"
- # variants in `known_variants` (which see), or overridden in
- # toolchain_args in one of those variants. Note that setting this
- # nonempty may conflict with programs that define their own
- # `__asan_default_options` C function.
- asan_default_options = ""
-}
-
-variant("asan") {
- common_flags = [ "-fsanitize=address" ]
-
- # ASan wants frame pointers because it captures stack traces
- # on allocations and such, not just on errors.
- configs = [ ":frame_pointers" ]
-
- if (asan_default_options != "") {
- deps = [
- ":asan_default_options",
- ]
- }
-}
-
-if (asan_default_options != "") {
- source_set("asan_default_options") {
- visibility = [ ":*" ]
- sources = [
- "asan_default_options.c",
- ]
- defines = [ "ASAN_DEFAULT_OPTIONS=\"${asan_default_options}\"" ]
-
- # On Fuchsia, the ASan runtime is dynamically linked and needs to have
- # the __asan_default_options symbol exported. On systems where the
- # ASan runtime is statically linked, it doesn't matter either way.
- configs -= [ "//build/config:symbol_visibility_hidden" ]
- }
-}
-
-variant("ubsan") {
- common_flags = [ "-fsanitize=undefined" ]
-}
-
-variant("fuzzer") {
- common_flags = [ "-fsanitize=fuzzer" ]
-
- # TODO (TC-251): This shouldn't be necessary, but libzircon isn't currently
- # linked into libFuzzer on Fuchsia.
- if (is_fuchsia) {
- libs = [ "zircon" ]
- }
-}
-
-variant("sancov") {
- common_flags = [ "-fsanitize-coverage=trace-pc-guard" ]
-}
diff --git a/config/sanitizers/asan_default_options.c b/config/sanitizers/asan_default_options.c
deleted file mode 100644
index f8d9d3b..0000000
--- a/config/sanitizers/asan_default_options.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2017 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.
-
-#include <sanitizer/asan_interface.h>
-
-// This exists to be built into every executable selected to use the
-// asan_no_detect_leaks variant. ASan applies the options here before
-// looking at the ASAN_OPTIONS environment variable.
-const char* __asan_default_options(void) {
- // This macro is defined by BUILD.gn from the `asan_default_options` GN
- // build argument.
- return ASAN_DEFAULT_OPTIONS;
-}
diff --git a/config/scudo/BUILD.gn b/config/scudo/BUILD.gn
deleted file mode 100644
index 5e2ddf0..0000000
--- a/config/scudo/BUILD.gn
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/scudo/scudo.gni")
-import("//build/toolchain/variant.gni")
-
-# This group is added unconditionally by BUILDCONFIG.gn to pick up the
-# global `use_scudo` build argument. For fine-grained control, leave
-# `use_scudo=false` and use `select_variant` to choose the `scudo`
-# variant for some components.
-# This configuration will apply to the executable alone, and not any of its
-# deps. (So most code will not be compiled with Scudo, but executables will
-# be *linked* with it, which is the important thing.)
-# Enabling Scudo requires both a configuration change and an additional
-# dependency; we group them together here.
-group("default_for_executable") {
- if (use_scudo && is_fuchsia) {
- public_configs = [ ":scudo" ]
- deps = [
- ":scudo_default_options",
- ]
- }
-}
-
-# This defines the //build/config/scudo config that's used separately
-# when `use_scudo` is set, as well as making that config (along with
-# the deps to propagate `scudo_default_options`) into a variant.
-variant("scudo") {
- # The variant only works by linking Scudo in.
- # i.e., we don't support code that relies on `#if __has_feature(scudo)`.
- ldflags = [ "-fsanitize=scudo" ]
- deps = [
- ":scudo_default_options",
- ]
-}
-
-source_set("scudo_default_options") {
- visibility = [ ":*" ]
- if (scudo_default_options != []) {
- sources = [
- "scudo_default_options.c",
- ]
- options_string = ""
- foreach(option, scudo_default_options) {
- options_string += ":$option"
- }
- defines = [ "SCUDO_DEFAULT_OPTIONS=\"${options_string}\"" ]
-
- # The Scudo runtime is dynamically linked and needs to have
- # the __scudo_default_options symbol exported.
- configs -= [ "//build/config:symbol_visibility_hidden" ]
- }
-}
diff --git a/config/scudo/scudo.gni b/config/scudo/scudo.gni
deleted file mode 100644
index 7b3d586..0000000
--- a/config/scudo/scudo.gni
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2018 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.
-
-declare_args() {
- # Enable the [Scudo](https://llvm.org/docs/ScudoHardenedAllocator.html)
- # memory allocator.
- use_scudo = true
-
- # Default [Scudo](https://llvm.org/docs/ScudoHardenedAllocator.html)
- # options (before the `SCUDO_OPTIONS` environment variable is read at
- # runtime). *NOTE:* This affects only components using the `scudo`
- # variant (see GN build argument `select_variant`), and does not affect
- # anything when the `use_scudo` build flag is set instead.
- scudo_default_options = [
- "abort_on_error=1", # get stacktrace on error
- "QuarantineSizeKb=0", # disables quarantine
- "ThreadLocalQuarantineSizeKb=0", # disables quarantine
- "DeallocationTypeMismatch=false", # TODO(flowerhack) re-enable when US-495
- # is resolved
-
- "DeleteSizeMismatch=false", # TODO(flowerhack) re-enable when US-495
- # is resolved
-
- "allocator_may_return_null=true",
- ]
-}
diff --git a/config/scudo/scudo_default_options.c b/config/scudo/scudo_default_options.c
deleted file mode 100644
index 0fac868..0000000
--- a/config/scudo/scudo_default_options.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2018 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.
-
-#include <sanitizer/scudo_interface.h>
-
-// This exists to be built into every executable selected to use the
-// scudo variant. Scudo applies the options here before
-// looking at the SCUDO_OPTIONS environment variable.
-const char* __scudo_default_options(void) {
- // This macro is defined by BUILD.gn from the `scudo_default_options` GN
- // build argument.
- return SCUDO_DEFAULT_OPTIONS;
-}
diff --git a/config/sysroot.gni b/config/sysroot.gni
deleted file mode 100644
index 1595e84..0000000
--- a/config/sysroot.gni
+++ /dev/null
@@ -1,24 +0,0 @@
-# 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.
-
-declare_args() {
- # The absolute path of the sysroot that is used with the target toolchain.
- target_sysroot = ""
-}
-
-if (current_os == target_os && target_sysroot != "") {
- sysroot = target_sysroot
-} else if (is_fuchsia) {
- _out_dir =
- get_label_info("//zircon/public/sysroot(//build/zircon:zircon_toolchain)",
- "target_out_dir")
- sysroot = rebase_path("$_out_dir/sysroot")
-} else if (is_linux) {
- sysroot = rebase_path("//build/third_party/sysroot/${current_platform}")
-} else if (is_mac) {
- import("//build/config/mac/config.gni")
- sysroot = mac_sdk_path
-} else {
- sysroot = ""
-}
diff --git a/cpp/BUILD.gn b/cpp/BUILD.gn
deleted file mode 100644
index 5b5fb9b..0000000
--- a/cpp/BUILD.gn
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/fidl/toolchain.gni")
-
-# See fidl_cpp.gni:fidl_cpp. Its generated `source_set`s should be the
-# only users of this config (in their public_configs).
-config("fidl_gen_config") {
- fidl_root_gen_dir = get_label_info("//bogus($fidl_toolchain)", "root_gen_dir")
- include_dirs = [ fidl_root_gen_dir ]
-}
diff --git a/cpp/binaries.py b/cpp/binaries.py
deleted file mode 100755
index aa2e8f0..0000000
--- a/cpp/binaries.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import os
-import sys
-
-sys.path.append(os.path.join(
- os.path.dirname(__file__),
- os.pardir,
- "images",
-))
-import elfinfo
-
-
-def get_sdk_debug_path(binary):
- build_id = elfinfo.get_elf_info(binary).build_id
- return '.build-id/' + build_id[:2] + '/' + build_id[2:] + '.debug'
-
-
-# For testing.
-def main():
- print(get_sdk_debug_path(sys.argv[1]))
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/cpp/fidl_cpp.gni b/cpp/fidl_cpp.gni
deleted file mode 100644
index f236f36..0000000
--- a/cpp/fidl_cpp.gni
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/sdk/sdk_atom_alias.gni")
-
-# Generates some C++ bindings for a FIDL library.
-#
-# The parameters for this template are defined in //build/fidl/fidl.gni. The
-# relevant parameters in this template are:
-# - name;
-# - sources;
-# - cpp_legacy_callbacks.
-
-template("fidl_cpp_codegen") {
- not_needed(invoker, [ "sources" ])
-
- main_target_name = target_name
- generation_target_name = "${target_name}_cpp_generate"
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- fidl_root_gen_dir =
- get_label_info(":$target_name($fidl_toolchain)", "root_gen_dir")
-
- include_stem = string_replace(library_name, ".", "/") + "/cpp/fidl"
- file_stem = "$fidl_root_gen_dir/$include_stem"
-
- fidl_target_gen_dir =
- get_label_info(":$target_name($fidl_toolchain)", "target_gen_dir")
- json_representation = "$fidl_target_gen_dir/$target_name.fidl.json"
-
- fidl_root_gen_dir =
- get_label_info(":$target_name($fidl_toolchain)", "root_gen_dir")
-
- compiled_action(generation_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- visibility = [ ":$main_target_name" ]
-
- tool = "//garnet/go/src/fidl:fidlgen"
-
- inputs = [
- json_representation,
- ]
-
- outputs = [
- "$file_stem.h",
- "$file_stem.cc",
- ]
-
- args = [
- "--json",
- rebase_path(json_representation, root_build_dir),
- "--output-base",
- rebase_path(file_stem, root_build_dir),
- "--include-base",
- rebase_path(fidl_root_gen_dir, root_build_dir),
- "--generators",
- "cpp",
- ]
-
- if (defined(invoker.cpp_legacy_callbacks) && invoker.cpp_legacy_callbacks) {
- args += [ "--cpp-legacy-callbacks" ]
- }
-
- deps = [
- ":$main_target_name($fidl_toolchain)",
- ]
- }
-}
-
-template("fidl_cpp") {
- not_needed(invoker, "*")
-
- main_target_name = target_name
- generation_target_name = "${target_name}_cpp_generate"
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- fidl_root_gen_dir =
- get_label_info(":$target_name($fidl_toolchain)", "root_gen_dir")
-
- include_stem = string_replace(library_name, ".", "/") + "/cpp/fidl"
- file_stem = "$fidl_root_gen_dir/$include_stem"
-
- source_set(main_target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
-
- sources = [
- "$file_stem.cc",
- "$file_stem.h",
- ]
-
- # Let dependencies use `#include "$file_stem.h"`.
- public_configs = [ "//build/cpp:fidl_gen_config" ]
-
- public_deps = [
- ":$generation_target_name($fidl_toolchain)",
- ":$main_target_name($fidl_toolchain)",
- ":${main_target_name}_tables",
- ]
-
- if (is_fuchsia) {
- public_deps += [ "//garnet/public/lib/fidl/cpp" ]
- } else {
- public_deps += [ "//garnet/public/lib/fidl/cpp:cpp_base" ]
- }
-
- if (defined(invoker.public_deps)) {
- public_deps += invoker.public_deps
- }
- }
-
- if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded") {
- # Instead of depending on the generated bindings, set up a dependency on the
- # original library.
- sdk_target_name = "${main_target_name}_sdk"
- sdk_atom_alias(sdk_target_name) {
- atom = ":$sdk_target_name($fidl_toolchain)"
- }
- }
-}
diff --git a/cpp/fidlmerge_cpp.gni b/cpp/fidlmerge_cpp.gni
deleted file mode 100644
index 5529030..0000000
--- a/cpp/fidlmerge_cpp.gni
+++ /dev/null
@@ -1,146 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/fidl/toolchain.gni")
-
-# Declares a source_set that contains code generated by fidlmerge from a
-# template and a FIDL JSON file.
-#
-# Parameters
-#
-# fidl_target (required)
-# Specifies the fidl target from which to read fidl json. For example,
-# "//zircon/public/fidl/fuchsia-mem" for fuchsia.mem or
-# "//garnet/public/fidl/fuchsia.sys" for fuchsia.sys.
-#
-# template_path (required)
-# Specifies the template to use to generate the source code for the
-# source_set. For example, "//garnet/public/build/fostr/fostr.fidlmerge".
-#
-# generated_source_base (required)
-# The base file name from which the source_set's 'source' file names are
-# generated. For example, "formatting".
-#
-# generated_source_extensions (optional)
-# The list of extensions of source_set 'source' files that will be generated
-# and included in the source set. By default, this is [ ".cc", ".h" ]
-#
-# options (optional)
-# A single string with comma-separated key=value pairs.
-#
-# amendments_path (optional)
-# Specifies a JSON file that contains amendments to be made to the fidl
-# model before the template is applied. For example,
-# "//garnet/public/build/fostr/fidl/fuchsia.media/amendments.fidlmerge".
-# See the fidlmerge README for details.
-#
-# deps, public_deps, test_only, visibility (optional)
-# These parameters are forwarded to the source_set.
-#
-
-template("fidlmerge_cpp") {
- assert(defined(invoker.fidl_target),
- "fidlmerge_cpp requires parameter fidl_target.")
-
- assert(defined(invoker.template_path),
- "fidlmerge_cpp requires parameter template_path.")
-
- assert(defined(invoker.generated_source_base),
- "fidlmerge_cpp requires parameter generated_source_base.")
-
- fidl_target = invoker.fidl_target
- template_path = invoker.template_path
- source_base = invoker.generated_source_base
-
- if (defined(invoker.generated_source_extensions)) {
- generated_source_extensions = invoker.generated_source_extensions
- } else {
- generated_source_extensions = [
- ".cc",
- ".h",
- ]
- }
-
- main_target_name = target_name
- generation_target_name = "${target_name}_generate"
-
- fidl_target_gen_dir =
- get_label_info("$fidl_target($fidl_toolchain)", "target_gen_dir")
- fidl_target_name = get_path_info(fidl_target_gen_dir, "file")
- json_representation = "$fidl_target_gen_dir/$fidl_target_name.fidl.json"
-
- include_stem = string_replace(target_gen_dir, ".", "/")
- file_stem = "$include_stem/$source_base"
-
- compiled_action(generation_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- visibility = [ ":$main_target_name" ]
-
- tool = "//garnet/go/src/fidlmerge"
-
- inputs = [
- json_representation,
- template_path,
- ]
-
- outputs = []
- foreach(ext, generated_source_extensions) {
- outputs += [ "$file_stem$ext" ]
- }
-
- args = [
- "--template",
- rebase_path(template_path, root_build_dir),
- "--json",
- rebase_path(json_representation, root_build_dir),
- "--output-base",
- rebase_path(file_stem, root_build_dir),
- ]
-
- if (defined(invoker.options)) {
- args += [
- "--options",
- invoker.options,
- ]
- }
-
- if (defined(invoker.amendments_path)) {
- args += [
- "--amend",
- rebase_path(invoker.amendments_path, root_build_dir),
- ]
- }
-
- deps = [
- "$fidl_target($fidl_toolchain)",
- ]
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
- }
-
- source_set(main_target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
-
- sources = []
- foreach(ext, generated_source_extensions) {
- sources += [ "$file_stem$ext" ]
- }
-
- public_deps = [
- ":$generation_target_name",
- ]
- if (defined(invoker.public_deps)) {
- public_deps += invoker.public_deps
- }
- }
-}
diff --git a/cpp/gen_sdk_prebuilt_meta_file.py b/cpp/gen_sdk_prebuilt_meta_file.py
deleted file mode 100755
index cc9f47f..0000000
--- a/cpp/gen_sdk_prebuilt_meta_file.py
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-sys.path.append(os.path.join(
- os.path.dirname(__file__),
- os.pardir,
- "cpp",
-))
-import binaries
-
-
-def main():
- parser = argparse.ArgumentParser('Builds a metadata file')
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--name',
- help='Name of the library',
- required=True)
- parser.add_argument('--root',
- help='Root of the library in the SDK',
- required=True)
- parser.add_argument('--deps',
- help='Path to metadata files of dependencies',
- nargs='*')
- parser.add_argument('--headers',
- help='List of public headers',
- nargs='*')
- parser.add_argument('--include-dir',
- help='Path to the include directory',
- required=True)
- parser.add_argument('--arch',
- help='Name of the target architecture',
- required=True)
- parser.add_argument('--lib-link',
- help='Path to the link-time library in the SDK',
- required=True)
- parser.add_argument('--lib-dist',
- help='Path to the library to add to Fuchsia packages in the SDK',
- required=True)
- parser.add_argument('--lib-debug-file',
- help='Path to the source debug version of the library',
- required=True)
- parser.add_argument('--debug-mapping',
- help='Path to the file where to write the file mapping for the debug library',
- required=True)
- args = parser.parse_args()
-
- # The path of the debug file in the SDK depends on its build id.
- debug_path = binaries.get_sdk_debug_path(args.lib_debug_file)
- with open(args.debug_mapping, 'w') as mappings_file:
- mappings_file.write(debug_path + '=' + args.lib_debug_file + '\n')
-
- metadata = {
- 'type': 'cc_prebuilt_library',
- 'name': args.name,
- 'root': args.root,
- 'format': 'shared',
- 'headers': args.headers,
- 'include_dir': args.include_dir,
- }
- metadata['binaries'] = {
- args.arch: {
- 'link': args.lib_link,
- 'dist': args.lib_dist,
- 'debug': debug_path,
- },
- }
-
- deps = []
- fidl_deps = []
- for spec in args.deps:
- with open(spec, 'r') as spec_file:
- data = json.load(spec_file)
- type = data['type']
- name = data['name']
- # TODO(DX-498): verify that source libraries are header-only.
- if type == 'cc_source_library' or type == 'cc_prebuilt_library':
- deps.append(name)
- else:
- raise Exception('Unsupported dependency type: %s' % type)
- metadata['deps'] = deps
-
- with open(args.out, 'w') as out_file:
- json.dump(metadata, out_file, indent=2, sort_keys=True)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/cpp/gen_sdk_sources_meta_file.py b/cpp/gen_sdk_sources_meta_file.py
deleted file mode 100755
index 243573c..0000000
--- a/cpp/gen_sdk_sources_meta_file.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser('Builds a metadata file')
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--name',
- help='Name of the library',
- required=True)
- parser.add_argument('--root',
- help='Root of the library in the SDK',
- required=True)
- parser.add_argument('--deps',
- help='Path to metadata files of dependencies',
- nargs='*')
- parser.add_argument('--sources',
- help='List of library sources',
- nargs='+')
- parser.add_argument('--headers',
- help='List of public headers',
- nargs='*')
- parser.add_argument('--include-dir',
- help='Path to the include directory',
- required=True)
- args = parser.parse_args()
-
- metadata = {
- 'type': 'cc_source_library',
- 'name': args.name,
- 'root': args.root,
- 'sources': args.sources,
- 'headers': args.headers,
- 'include_dir': args.include_dir,
- }
-
- deps = []
- fidl_deps = []
- for spec in args.deps:
- with open(spec, 'r') as spec_file:
- data = json.load(spec_file)
- type = data['type']
- name = data['name']
- if type == 'cc_source_library' or type == 'cc_prebuilt_library':
- deps.append(name)
- elif type == 'fidl_library':
- fidl_deps.append(name)
- else:
- raise Exception('Unsupported dependency type: %s' % type)
- metadata['deps'] = deps
- metadata['fidl_deps'] = fidl_deps
-
- with open(args.out, 'w') as out_file:
- json.dump(metadata, out_file, indent=2, sort_keys=True)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/cpp/sdk_executable.gni b/cpp/sdk_executable.gni
deleted file mode 100644
index 85b1840..0000000
--- a/cpp/sdk_executable.gni
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/sdk/sdk_atom.gni")
-
-# An executable which can be bundled in an SDK.
-#
-# An equivalent to the built-in executable which adds an SDK atom declaration to
-# allow the resulting binary to be included in an SDK.
-#
-# category (required)
-# Publication level of the executable in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# sdk_deps (optional)
-# List of labels representing elements that should be added to SDKs
-# alongside the present binary.
-# Labels in the list must represent SDK-ready targets.
-
-template("sdk_executable") {
- assert(defined(invoker.category), "Must define an SDK category")
-
- main_target_name = target_name
-
- executable(main_target_name) {
- forward_variables_from(invoker, "*", [ "category" ])
- }
-
- output_name = target_name
- if (defined(invoker.output_name)) {
- output_name = invoker.output_name
- }
-
- if (!is_fuchsia) {
- file_base = "tools/$output_name"
-
- sdk_atom("${target_name}_sdk") {
- id = "sdk://tools/$output_name"
-
- category = invoker.category
-
- meta = {
- dest = "$file_base-meta.json"
- schema = "host_tool"
- value = {
- type = "host_tool"
- name = output_name
- root = "tools"
- files = [ file_base ]
- }
- }
-
- files = [
- {
- source = "$root_out_dir/$output_name"
- dest = file_base
- },
- ]
-
- if (defined(invoker.sdk_deps)) {
- deps = invoker.sdk_deps
- }
-
- non_sdk_deps = [ ":$main_target_name" ]
- }
- }
-}
diff --git a/cpp/sdk_shared_library.gni b/cpp/sdk_shared_library.gni
deleted file mode 100644
index 32cf233..0000000
--- a/cpp/sdk_shared_library.gni
+++ /dev/null
@@ -1,293 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/sdk/sdk_atom.gni")
-import("//build/sdk/sdk_atom_alias.gni")
-
-# A shared library that can be exported to an SDK in binary form.
-#
-# Parameters
-#
-# category (required)
-# Publication level of the library in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# no_headers (optional)
-# Whether to include the library's headers in the SDK.
-# Defaults to false.
-#
-# sdk_name (optional)
-# Name of the library in the SDK.
-# Defaults to the library's output name.
-#
-# include_base (optional)
-# Path to the root directory for includes.
-# Defaults to ".".
-#
-# runtime_deps (optional)
-# List of labels representing the library's runtime dependencies. This is
-# only needed for runtime dependencies inherited from private dependencies.
-# Note that these labels should represent SDK targets.
-
-# The defaults for a sdk_shared_library should match that of a shared_library.
-set_defaults("sdk_shared_library") {
- configs = default_shared_library_configs
-}
-
-template("sdk_shared_library") {
- assert(defined(invoker.category), "Must define an SDK category")
-
- main_target_name = target_name
- metadata_target_name = "${target_name}_sdk_metadata"
- manifest_target_name = "${target_name}_sdk_manifest"
- sdk_target_name = "${target_name}_sdk"
-
- shared_library(main_target_name) {
- forward_variables_from(invoker,
- "*",
- [
- "category",
- "include_base",
- "no_headers",
- "runtime_deps",
- "sdk_name",
- ])
-
- if (defined(visibility)) {
- visibility += [ ":$manifest_target_name" ]
- }
-
- # Prebuilt shared libraries are eligible for inclusion in the SDK. We do not
- # want to dynamically link against libc++.so because we let clients bring
- # their own toolchain, which might have a different C++ Standard Library or
- # a different C++ ABI entirely.
- #
- # Adding this linker flag keeps us honest about not commiting to a specific
- # C++ ABI. If this flag is causing your library to not to compile, consider
- # whether your library really ought to be in the SDK. If so, consider
- # including your library in the SDK as source rather than precompiled. If
- # you do require precompilation, you probably need to find a way not to
- # depend on dynamically linking C++ symbols because C++ does not have a
- # sufficiently stable ABI for the purposes of our SDK.
- # TODO(TC-46): statically link against libc++ if necessary.
- if (!defined(ldflags)) {
- ldflags = []
- }
- ldflags += [ "-nostdlib++" ]
-
- # Request that the runtime deps be written out to a file. This file will be
- # used later to verify that all runtime deps are available in the SDK.
- write_runtime_deps = "$target_out_dir/$target_name.runtime_deps"
- }
-
- output_name = target_name
- if (defined(invoker.output_name)) {
- output_name = invoker.output_name
- }
-
- if (defined(invoker.sdk_name)) {
- atom_name = invoker.sdk_name
- } else {
- atom_name = output_name
- }
-
- no_headers = defined(invoker.no_headers) && invoker.no_headers
-
- # Base path for source files of this library in SDKs.
- file_base = "pkg/$atom_name"
-
- # Base path for binaries of this library in SDKs.
- prebuilt_base = "arch/$target_cpu"
-
- # Identify dependencies and their metadata files.
- sdk_deps = []
- sdk_metas = []
-
- # If a prebuilt library is only provided for packaging purposes (by not
- # exposing headers) then its dependencies need not be included in an SDK.
- if (defined(invoker.public_deps) && !no_headers) {
- foreach(dep, invoker.public_deps) {
- full_label = get_label_info(dep, "label_no_toolchain")
- sdk_dep = "${full_label}_sdk"
- sdk_deps += [ sdk_dep ]
- }
- }
-
- # Runtime deps are already SDK targets.
- if (defined(invoker.runtime_deps)) {
- sdk_deps += invoker.runtime_deps
- }
- foreach(sdk_dep, sdk_deps) {
- gen_dir = get_label_info(sdk_dep, "target_gen_dir")
- name = get_label_info(sdk_dep, "name")
- sdk_metas += [ rebase_path("$gen_dir/$name.meta.json") ]
- }
-
- # Process headers.
- all_headers = []
- if ((defined(invoker.public) || defined(invoker.sources)) && !no_headers) {
- if (defined(invoker.public)) {
- all_headers += invoker.public
- } else {
- foreach(source_file, invoker.sources) {
- extension = get_path_info(source_file, "extension")
- if (extension == "h") {
- all_headers += [ source_file ]
- }
- }
- }
- }
- sdk_headers = []
- sdk_files = []
- foreach(header, all_headers) {
- include_base = "include"
- if (defined(invoker.include_base)) {
- include_base = invoker.include_base
- }
- destination = rebase_path(header, include_base)
- header_dest = "$file_base/include/$destination"
- sdk_headers += [ header_dest ]
- sdk_files += [
- {
- source = header
- dest = header_dest
- },
- ]
- }
-
- # Add binaries.
- shared_out_dir = get_label_info(":bogus($shlib_toolchain)", "root_out_dir")
- lib_name = "lib$output_name.so"
- link_lib = "$prebuilt_base/lib/$lib_name"
- dist_lib = "$prebuilt_base/dist/$lib_name"
- sdk_files += [
- {
- # TODO(TO-791): put ABI stubs under lib/, not the full thing.
- source = "$shared_out_dir/$lib_name"
- dest = link_lib
- },
- {
- source = "$shared_out_dir/$lib_name"
- dest = dist_lib
- },
- ]
-
- metadata_file = "$target_gen_dir/$metadata_target_name.sdk_meta.json"
- debug_mapping_file = "$target_gen_dir/$metadata_target_name.mappings.txt"
- debug_lib_file = "$shared_out_dir/lib.unstripped/$lib_name"
-
- action(metadata_target_name) {
- script = "//build/cpp/gen_sdk_prebuilt_meta_file.py"
-
- inputs = sdk_metas + [ debug_lib_file ]
-
- outputs = [
- debug_mapping_file,
- metadata_file,
- ]
-
- args = [
- "--out",
- rebase_path(metadata_file),
- "--name",
- atom_name,
- "--root",
- file_base,
- "--include-dir",
- "$file_base/include",
- "--deps",
- ] + sdk_metas + [ "--headers" ] + sdk_headers +
- [
- "--arch",
- target_cpu,
- "--lib-link",
- link_lib,
- "--lib-dist",
- dist_lib,
- "--lib-debug-file",
- rebase_path(debug_lib_file),
- "--debug-mapping",
- rebase_path(debug_mapping_file),
- ]
-
- deps = sdk_deps + [ ":$main_target_name" ]
- }
-
- sdk_atom(manifest_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- id = "sdk://pkg/$atom_name"
-
- category = invoker.category
-
- meta = {
- source = metadata_file
- dest = "$file_base/meta.json"
- schema = "cc_prebuilt_library"
- }
-
- files = sdk_files
-
- file_list = debug_mapping_file
-
- deps = sdk_deps
-
- non_sdk_deps = [
- ":$main_target_name",
- ":$metadata_target_name",
- ]
-
- # Explicitly add non-public dependencies, in case some of the source files
- # are generated.
- if (defined(invoker.deps)) {
- non_sdk_deps += invoker.deps
- }
- }
-
- shared_gen_dir = get_label_info(":bogus($shlib_toolchain)", "target_out_dir")
- runtime_deps_file = "$shared_gen_dir/$target_name.runtime_deps"
- sdk_manifest_file = "$target_gen_dir/$manifest_target_name.sdk"
- verify_target_name = "${target_name}_verify"
-
- # Verify that the SDK manifest for this target includes all of the expected
- # runtime dependencies.
- # TODO(DX-498): also check that everything in there is either prebuilt or
- # headers only.
- action(verify_target_name) {
- script = "//build/cpp/verify_runtime_deps.py"
-
- inputs = [
- sdk_manifest_file,
- runtime_deps_file,
- ]
-
- stamp_file = "$target_gen_dir/$target_name.stamp"
-
- outputs = [
- stamp_file,
- ]
-
- args = [
- "--stamp",
- rebase_path(stamp_file),
- "--manifest",
- rebase_path(sdk_manifest_file),
- "--runtime-deps-file",
- rebase_path(runtime_deps_file),
- "--root-out-dir",
- rebase_path(root_out_dir),
- ]
-
- deps = [
- ":$main_target_name",
- ":$manifest_target_name",
- ]
- }
-
- sdk_atom_alias(sdk_target_name) {
- atom = ":$manifest_target_name"
-
- non_sdk_deps = [ ":$verify_target_name" ]
- }
-}
diff --git a/cpp/sdk_source_set.gni b/cpp/sdk_source_set.gni
deleted file mode 100644
index 35ef4c4..0000000
--- a/cpp/sdk_source_set.gni
+++ /dev/null
@@ -1,178 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/sdk/sdk_atom.gni")
-
-# A source set that can be exported to an SDK.
-#
-# An equivalent to the built-in source_set which adds an SDK atom declaration to
-# allow the set to be included in an SDK as sources.
-#
-# Parameters
-#
-# category (required)
-# Publication level of the library in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# sdk_name (required)
-# Name of the library in the SDK.
-#
-# source_dir (optional)
-# If set, path to the base directory of the sources.
-# This is useful if the sources are generated and therefore not hosted
-# directly under the directory where the GN rules are declared.
-#
-# include_base (optional)
-# Path to the root directory for includes.
-# Defaults to "include".
-
-template("sdk_source_set") {
- assert(defined(invoker.category), "Must define an SDK category")
- assert(defined(invoker.sdk_name), "Must define an SDK name")
-
- main_target_name = target_name
- sdk_target_name = "${target_name}_sdk"
-
- source_set(main_target_name) {
- forward_variables_from(invoker,
- "*",
- [
- "category",
- "include_base",
- "sdk_name",
- "source_dir",
- ])
-
- if (defined(visibility)) {
- visibility += [ ":$sdk_target_name" ]
- }
- }
-
- # Identify dependencies and their metadata files.
- sdk_metas = []
- sdk_deps = []
- if (defined(invoker.public_deps)) {
- foreach(dep, invoker.public_deps) {
- full_label = get_label_info(dep, "label_no_toolchain")
- sdk_dep = "${full_label}_sdk"
- sdk_deps += [ sdk_dep ]
-
- gen_dir = get_label_info(sdk_dep, "target_gen_dir")
- name = get_label_info(sdk_dep, "name")
- sdk_metas += [ rebase_path("$gen_dir/$name.meta.json") ]
- }
- }
-
- # Sort headers vs. sources.
- all_headers = []
- all_sources = []
- source_headers_are_public = true
- if (defined(invoker.public)) {
- source_headers_are_public = false
- all_headers += invoker.public
- }
- if (defined(invoker.sources)) {
- foreach(source_file, invoker.sources) {
- extension = get_path_info(source_file, "extension")
- if (source_headers_are_public && extension == "h") {
- all_headers += [ source_file ]
- } else {
- all_sources += [ source_file ]
- }
- }
- } else {
- not_needed([ "source_headers_are_public" ])
- }
-
- # Determine destinations in the SDK for headers and sources.
- file_base = "pkg/${invoker.sdk_name}"
- sdk_headers = []
- sdk_sources = []
- sdk_files = []
- foreach(header, all_headers) {
- include_base = "include"
- if (defined(invoker.include_base)) {
- include_base = invoker.include_base
- }
- relative_destination = rebase_path(header, include_base)
- destination = "$file_base/include/$relative_destination"
- sdk_headers += [ destination ]
- sdk_files += [
- {
- source = header
- dest = destination
- },
- ]
- }
- foreach(source, all_sources) {
- sdk_sources += [ "$file_base/$source" ]
- sdk_files += [
- {
- source = source
- dest = "$file_base/$source"
- },
- ]
- }
-
- metadata_target_name = "${target_name}_sdk_metadata"
- metadata_file = "$target_gen_dir/$target_name.sdk_meta.json"
-
- action(metadata_target_name) {
- script = "//build/cpp/gen_sdk_sources_meta_file.py"
-
- inputs = sdk_metas
-
- outputs = [
- metadata_file,
- ]
-
- args = [
- "--out",
- rebase_path(metadata_file),
- "--name",
- invoker.sdk_name,
- "--root",
- file_base,
- "--include-dir",
- "$file_base/include",
- ]
- args += [ "--deps" ] + sdk_metas
- args += [ "--sources" ] + sdk_sources
- args += [ "--headers" ] + sdk_headers
-
- deps = sdk_deps
- }
-
- sdk_atom(sdk_target_name) {
- forward_variables_from(invoker,
- [
- "source_dir",
- "testonly",
- ])
-
- id = "sdk://pkg/${invoker.sdk_name}"
- category = invoker.category
-
- meta = {
- source = metadata_file
- dest = "$file_base/meta.json"
- schema = "cc_source_library"
- }
-
- files = sdk_files
-
- deps = sdk_deps
-
- non_sdk_deps = [
- ":$main_target_name",
- ":$metadata_target_name",
- ]
-
- # Explicitly add non-public dependencies, in case some of the source files
- # are generated.
- if (defined(invoker.deps)) {
- non_sdk_deps += invoker.deps
- }
- }
-}
diff --git a/cpp/verify_runtime_deps.py b/cpp/verify_runtime_deps.py
deleted file mode 100755
index 43d8088..0000000
--- a/cpp/verify_runtime_deps.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-
-def has_packaged_file(needed_file, deps):
- """Returns true if the given file could be found in the given deps."""
- for dep in deps:
- for file in dep['files']:
- if needed_file == os.path.normpath(file['source']):
- return True
- return False
-
-
-def has_missing_files(runtime_files, package_deps):
- """Returns true if a runtime file is missing from the given deps."""
- has_missing_files = False
- for file in runtime_files:
- # Some libraries are only known to GN as ABI stubs, whereas the real
- # runtime dependency is generated in parallel as a ".so.impl" file.
- if (not has_packaged_file(file, package_deps) and
- not has_packaged_file('%s.impl' % file, package_deps)):
- print('No package dependency generates %s' % file)
- has_missing_files = True
- return has_missing_files
-
-
-def main():
- parser = argparse.ArgumentParser(
- "Verifies a prebuilt library's runtime dependencies")
- parser.add_argument('--root-out-dir',
- help='Path to the root output directory',
- required=True)
- parser.add_argument('--runtime-deps-file',
- help='Path to the list of runtime deps',
- required=True)
- parser.add_argument('--manifest',
- help='Path to the target\'s SDK manifest file',
- required=True)
- parser.add_argument('--stamp',
- help='Path to the stamp file to generate',
- required=True)
- args = parser.parse_args()
-
- # Read the list of runtime dependencies generated by GN.
- def normalize_dep(dep):
- return os.path.normpath(os.path.join(args.root_out_dir, dep.strip()))
- with open(args.runtime_deps_file, 'r') as runtime_deps_file:
- runtime_files = map(normalize_dep, runtime_deps_file.readlines())
-
- # Read the list of package dependencies for the library's SDK incarnation.
- with open(args.manifest, 'r') as manifest_file:
- manifest = json.load(manifest_file)
- atom_id = manifest['ids'][0]
- def find_atom(id):
- return next(a for a in manifest['atoms'] if a['id'] == id)
- atom = find_atom(atom_id)
- deps = map(lambda a: find_atom(a), atom['deps'])
- deps += [atom]
-
- # Check whether all runtime files are available for packaging.
- if has_missing_files(runtime_files, deps):
- return 1
-
- with open(args.stamp, 'w') as stamp:
- stamp.write('Success!')
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/BUILD.gn b/dart/BUILD.gn
deleted file mode 100644
index fd21b52..0000000
--- a/dart/BUILD.gn
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/toolchain.gni")
-
-if (current_toolchain == dart_toolchain) {
- pool("dart_pool") {
- depth = dart_pool_depth
- }
-} else {
- import("//build/toolchain/clang_toolchain.gni")
-
- # A toolchain dedicated to processing and analyzing Dart packages.
- # The only targets in this toolchain are action() targets, so it
- # has no real tools. But every toolchain needs stamp and copy.
- toolchain("dartlang") {
- tool("stamp") {
- command = stamp_command
- description = stamp_description
- }
- tool("copy") {
- command = copy_command
- description = copy_description
- }
-
- toolchain_args = {
- toolchain_variant = {
- }
- toolchain_variant = {
- base = get_label_info(":dartlang", "label_no_toolchain")
- }
- }
- }
-}
diff --git a/dart/MAINTAINERS b/dart/MAINTAINERS
deleted file mode 100644
index 055197d..0000000
--- a/dart/MAINTAINERS
+++ /dev/null
@@ -1,2 +0,0 @@
-pylaligand@google.com
-zra@google.com
diff --git a/dart/dart.gni b/dart/dart.gni
deleted file mode 100644
index a4d7ff2..0000000
--- a/dart/dart.gni
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2018 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.
-
-declare_args() {
- # Directory containing prebuilt Dart SDK.
- # This must have in its `bin/` subdirectory `gen_snapshot.OS-CPU` binaries.
- # Set to empty for a local build.
- prebuilt_dart_sdk = "//topaz/tools/prebuilt-dart-sdk/${host_platform}"
-
- # Whether to use the prebuilt Dart SDK for everything.
- # When setting this to false, the preubilt Dart SDK will not be used in
- # situations where the version of the SDK matters, but may still be used as an
- # optimization where the version does not matter.
- use_prebuilt_dart_sdk = true
-}
-
-# For using the prebuilts even when use_prebuilt_dart_sdk is false.
-prebuilt_dart = "${prebuilt_dart_sdk}/bin/dart"
-prebuilt_gen_snapshot =
- "${prebuilt_dart_sdk}/bin/gen_snapshot.${current_os}-${current_cpu}"
-prebuilt_gen_snapshot_product =
- "${prebuilt_dart_sdk}/bin/gen_snapshot_product.${current_os}-${current_cpu}"
-
-if (use_prebuilt_dart_sdk) {
- dart_sdk = "${prebuilt_dart_sdk}"
- dart_sdk_deps = []
-
- gen_snapshot = prebuilt_gen_snapshot
- gen_snapshot_product = prebuilt_gen_snapshot_product
- gen_snapshot_deps = []
-} else {
- _dart_sdk_label = "//third_party/dart:create_sdk($host_toolchain)"
- dart_sdk = get_label_info(_dart_sdk_label, "root_out_dir") + "/dart-sdk"
- dart_sdk_deps = [ _dart_sdk_label ]
-
- _gen_snapshot_label =
- "//third_party/dart/runtime/bin:gen_snapshot($host_toolchain)"
- _gen_snapshot_product_label =
- "//third_party/dart/runtime/bin:gen_snapshot_product($host_toolchain)"
- gen_snapshot =
- get_label_info(_gen_snapshot_label, "root_out_dir") + "/gen_snapshot"
- gen_snapshot_product =
- get_label_info(_gen_snapshot_product_label, "root_out_dir") +
- "/gen_snapshot_product"
- gen_snapshot_deps = [
- _gen_snapshot_label,
- _gen_snapshot_product_label,
- ]
-}
diff --git a/dart/dart_fuchsia_test.gni b/dart/dart_fuchsia_test.gni
deleted file mode 100644
index 4cca90f..0000000
--- a/dart/dart_fuchsia_test.gni
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/toolchain.gni")
-import("//topaz/runtime/dart_runner/dart_app.gni")
-
-# Defines a device-side test binary
-#
-# Bundles a set of `package:test` tests into a single Fuchsia application
-# with generated helper code to invoke the tests appropriately.
-#
-# Parameters
-#
-# sources (optional)
-# The list of test sources. These sources must be within source_dir.
-#
-# source_dir (optional)
-# Directory containing the test sources.
-# Defaults to "test".
-#
-# deps (optional)
-# List of labels for Dart packages this package depends on.
-#
-# disable_analysis (optional)
-# Prevents analysis from being run on this target.
-#
-# package_only (optional)
-# Prevents creation of a sh file, which in turn prevents the test from
-# being run automatically.
-# Defaults to False.
-#
-# environments (optional)
-# Device environments this test should run in. Passed through to
-# package.tests.environments in //build/package.gni.
-#
-# Example of usage:
-#
-# dart_fuchsia_test("some_tests") {
-# tests = [ "test_foo.dart", "test_bar.dart" ]
-# }
-#
-# TODO:
-#
-# - Implement reporting so that tests can integrate into the waterfall / CQ.
-# - Support AOT and Flutter based tests.
-# - Get a public API into `package:test` for what we're doing.
-#
-template("dart_fuchsia_test") {
- if (defined(invoker.source_dir)) {
- test_source_dir = invoker.source_dir
- } else {
- test_source_dir = "test"
- }
-
- if (defined(invoker.package_only)) {
- test_package_only = invoker.package_only
- } else {
- test_package_only = false
- }
-
- generated_test_main_target = target_name + "__test_main"
-
- # The generated code needs to be installed under the Dart toolchain directory
- # so that it can be found by the dart_library target powering the JIT app.
- dart_gen_dir = get_label_info(":bogus($dart_toolchain)", "target_gen_dir")
- generated_test_main = "$dart_gen_dir/${target_name}__test_main.dart"
-
- action(generated_test_main_target) {
- script = "//build/dart/gen_fuchsia_test_main.py"
- outputs = [
- generated_test_main,
- ]
- args = [
- "--out=" + rebase_path(generated_test_main),
- "--source-dir=" + rebase_path(test_source_dir),
- ]
- }
-
- if (!test_package_only) {
- generated_run_test_sh_target = "${root_build_dir}/${target_name}"
-
- action(generated_run_test_sh_target) {
- script = "//build/dart/gen_run_sh.py"
- outputs = [
- generated_run_test_sh_target,
- ]
- args = [
- "--out=" + rebase_path(generated_run_test_sh_target),
- "--to_be_run=${invoker.target_name}",
- ]
- }
- }
-
- dart_jit_app(target_name) {
- forward_variables_from(invoker,
- [
- "disable_analysis",
- "sandbox",
- "meta",
- ])
- source_dir = test_source_dir
-
- testonly = true
-
- if (!test_package_only) {
- tests = [
- {
- name = generated_run_test_sh_target
- dest = target_name
- if (defined(invoker.environments)) {
- environments = invoker.environments
- }
- },
- ]
- }
-
- deps = [
- "//topaz/lib/fuchsia_test_helper",
- ]
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
-
- non_dart_deps = [ ":$generated_test_main_target($target_toolchain)" ]
- if (!test_package_only) {
- non_dart_deps += [ ":$generated_run_test_sh_target($target_toolchain)" ]
- }
-
- if (defined(invoker.non_dart_deps)) {
- non_dart_deps += invoker.non_dart_deps
- }
-
- main_dart = generated_test_main
-
- sources = []
- if (defined(invoker.sources)) {
- sources = invoker.sources
- }
- meta = []
- if (defined(invoker.meta)) {
- meta = invoker.meta
- }
- }
-}
diff --git a/dart/dart_library.gni b/dart/dart_library.gni
deleted file mode 100644
index b334109..0000000
--- a/dart/dart_library.gni
+++ /dev/null
@@ -1,400 +0,0 @@
-# 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.
-
-import("//build/config/fuchsia/sdk.gni")
-import("//build/dart/dart.gni")
-import("//build/dart/toolchain.gni")
-import("//build/sdk/sdk_atom.gni")
-import("//third_party/flutter/lib/ui/dart_ui.gni")
-import("//topaz/public/dart-pkg/fuchsia/sdk_ext.gni")
-import("//topaz/public/dart-pkg/zircon/sdk_ext.gni")
-import("//topaz/public/lib/ui/flutter/sdk_ext/sdk_ext.gni")
-
-# Defines a Dart library
-#
-# Parameters
-#
-# sources
-# The list of all sources in this library.
-# These sources must be within source_dir.
-#
-# package_root (optional)
-# Path to the directory hosting the library.
-# This is useful for generated content, and can be ignored otherwise.
-# Defaults to ".".
-#
-# package_name (optional)
-# Name of the Dart package. This is used as an identifier in code that
-# depends on this library.
-#
-# infer_package_name (optional)
-# Infer the package name based on the path to the package.
-#
-# NOTE: Exactly one of package_name or infer_package_name must be set.
-#
-# source_dir (optional)
-# Path to the directory containing the package sources, relative to
-# package_root.
-# Defaults to "lib".
-#
-# deps (optional)
-# List of labels for Dart libraries this library depends on.
-#
-# non_dart_deps (optional)
-# List of labels this library depends on that are not Dart libraries. This
-# includes things like actions that generate Dart code. It typically doesn't
-# need to be set.
-# Note that these labels *must* have an explicit toolchain attached.
-#
-# disable_analysis (optional)
-# Prevents analysis from being run on this target.
-#
-# sdk_category (optional)
-# Publication level of the library in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# extra_sources (optional)
-# Additional sources to consider for analysis.
-#
-# Example of usage:
-#
-# dart_library("baz") {
-# package_name = "foo.bar.baz"
-#
-# sources = [
-# "blah.dart",
-# ]
-#
-# deps = [
-# "//foo/bar/owl",
-# ]
-# }
-
-if (current_toolchain == dart_toolchain) {
- template("dart_library") {
- forward_variables_from(invoker, [ "testonly" ])
-
- if (defined(invoker.package_name)) {
- package_name = invoker.package_name
- } else if (defined(invoker.infer_package_name) &&
- invoker.infer_package_name) {
- # Compute a package name from the label:
- # //foo/bar --> foo.bar
- # //foo/bar:blah --> foo.bar._blah
- # //garnet/public/foo/bar --> foo.bar
- # Strip public directories.
- full_dir = get_label_info(":$target_name", "dir")
- foreach(sdk_dir, sdk_dirs) {
- full_dir = string_replace(full_dir, "$sdk_dir/", "")
- }
- package_name = full_dir
- package_name = string_replace(package_name, "//", "")
- package_name = string_replace(package_name, "/", ".")
-
- # If the last directory name does not match the target name, add the
- # target name to the resulting package name.
- name = get_label_info(":$target_name", "name")
- last_dir = get_path_info(full_dir, "name")
- if (last_dir != name) {
- package_name = "$package_name._$name"
- }
- } else {
- assert(false, "Must specify either a package_name or infer_package_name")
- }
-
- dart_deps = []
- if (defined(invoker.deps)) {
- foreach(dep, invoker.deps) {
- dart_deps += [ get_label_info(dep, "label_no_toolchain") ]
- }
- }
-
- package_root = "."
- if (defined(invoker.package_root)) {
- package_root = invoker.package_root
- }
-
- source_dir = "$package_root/lib"
- if (defined(invoker.source_dir)) {
- source_dir = "$package_root/${invoker.source_dir}"
- }
-
- assert(defined(invoker.sources), "Sources must be defined")
- source_file = "$target_gen_dir/$target_name.sources"
- rebased_sources = []
- foreach(source, invoker.sources) {
- rebased_source_dir = rebase_path(source_dir)
- rebased_sources += [ "$rebased_source_dir/$source" ]
- }
- if (defined(invoker.extra_sources)) {
- foreach(source, invoker.extra_sources) {
- rebased_sources += [ rebase_path(source) ]
- }
- }
- write_file(source_file, rebased_sources, "list lines")
-
- # Dependencies of the umbrella group for the targets in this file.
- group_deps = []
-
- dot_packages_file = "$target_gen_dir/$target_name.packages"
- dot_packages_target_name = "${target_name}_dot_packages"
- group_deps += [ ":$dot_packages_target_name" ]
-
- # Creates a .packages file listing dependencies of this library.
- action(dot_packages_target_name) {
- script = "//build/dart/gen_dot_packages.py"
-
- deps = []
- package_files = []
- foreach(dep, dart_deps) {
- deps += [ "${dep}_dot_packages" ]
- dep_gen_dir = get_label_info(dep, "target_gen_dir")
- dep_name = get_label_info(dep, "name")
- package_files += [ "$dep_gen_dir/$dep_name.packages" ]
- }
- if (defined(invoker.non_dart_deps)) {
- public_deps = invoker.non_dart_deps
- }
-
- sources = package_files + [
- # Require a manifest file, allowing the analysis service to identify the
- # package.
- "$package_root/pubspec.yaml",
- ]
-
- outputs = [
- dot_packages_file,
- ]
-
- args = [
- "--out",
- rebase_path(dot_packages_file),
- "--source-dir",
- rebase_path(source_dir),
- "--package-name",
- package_name,
- "--deps",
- ] + rebase_path(package_files)
- }
-
- # Don't run the analyzer if it is explicitly disabled or if we are using
- # a custom-built Dart SDK in a cross-build.
- with_analysis =
- (!defined(invoker.disable_analysis) || !invoker.disable_analysis) &&
- (use_prebuilt_dart_sdk || host_cpu == target_cpu)
- if (with_analysis) {
- options_file = "$package_root/analysis_options.yaml"
- invocation_file = "$target_gen_dir/$target_name.analyzer.sh"
- invocation_target_name = "${target_name}_analysis_runner"
- group_deps += [ ":$invocation_target_name" ]
-
- dart_analyzer_binary = "$dart_sdk/bin/dartanalyzer"
-
- # Creates a script which can be used to manually perform analysis.
- # TODO(BLD-256): remove this target.
- action(invocation_target_name) {
- script = "//build/dart/gen_analyzer_invocation.py"
-
- deps = dart_sdk_deps + [ ":$dot_packages_target_name" ]
-
- inputs = [
- dart_analyzer_binary,
- dot_packages_file,
- options_file,
- source_file,
- ]
-
- outputs = [
- invocation_file,
- ]
-
- args = [
- "--out",
- rebase_path(invocation_file),
- "--source-file",
- rebase_path(source_file),
- "--dot-packages",
- rebase_path(dot_packages_file),
- "--dartanalyzer",
- rebase_path(dart_analyzer_binary),
- "--dart-sdk",
- rebase_path(dart_sdk),
- "--options",
- rebase_path(options_file),
- "--package-name",
- package_name,
- ]
- }
-
- analysis_target_name = "${target_name}_analysis"
- group_deps += [ ":$analysis_target_name" ]
-
- # Runs analysis on the sources.
- action(analysis_target_name) {
- script = "//build/dart/run_analysis.py"
-
- depfile = "$target_gen_dir/$target_name.analysis.d"
-
- output_file = "$target_gen_dir/$target_name.analyzed"
-
- pool = "//build/dart:dart_pool($dart_toolchain)"
-
- inputs = [
- dart_analyzer_binary,
- dot_packages_file,
- options_file,
- source_file,
- ] + rebased_sources
-
- outputs = [
- output_file,
- ]
-
- args = [
- "--source-file",
- rebase_path(source_file),
- "--dot-packages",
- rebase_path(dot_packages_file),
- "--dartanalyzer",
- rebase_path(dart_analyzer_binary),
- "--dart-sdk",
- rebase_path(dart_sdk),
- "--options",
- rebase_path(options_file),
- "--stamp",
- rebase_path(output_file),
- "--depname",
- rebase_path(output_file, root_build_dir),
- "--depfile",
- rebase_path(depfile),
- ]
-
- deps = dart_sdk_deps + [ ":$dot_packages_target_name" ]
- }
- }
-
- group(target_name) {
- # dart_deps are added here to ensure they are fully built.
- # Up to this point, only the targets generating .packages had been
- # depended on.
- deps = dart_deps
-
- public_deps = group_deps
- }
-
- ################################################
- # SDK support
- #
-
- if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded") {
- assert(
- defined(invoker.package_name),
- "Dart libraries published in SDKs must have an explicit package name")
-
- assert(
- !defined(invoker.extra_sources),
- "Extra sources can not be included in SDKs: put them in source_dir")
-
- # Dependencies that should normally be included in any SDK containing this
- # target.
- sdk_deps = []
-
- # Path to SDK metadata files for first-party dependencies.
- sdk_metas = []
-
- # Path to Dart manifest files for third-party dependencies.
- third_party_pubspecs = []
- if (defined(invoker.deps)) {
- sorted_deps =
- exec_script("//build/dart/sdk/sort_deps.py", invoker.deps, "scope")
- foreach(dep, sorted_deps.local) {
- full_label = get_label_info(dep, "label_no_toolchain")
- sdk_dep = "${full_label}_sdk"
- sdk_deps += [ sdk_dep ]
-
- gen_dir = get_label_info(sdk_dep, "target_gen_dir")
- name = get_label_info(sdk_dep, "name")
- sdk_metas += [ rebase_path("$gen_dir/$name.meta.json") ]
- }
- foreach(dep, sorted_deps.third_party) {
- path = get_label_info(dep, "dir")
- third_party_pubspecs += [ rebase_path("$path/pubspec.yaml") ]
- }
- }
-
- file_base = "dart/${invoker.package_name}"
-
- sdk_sources = []
- sdk_source_mappings = []
- foreach(source, rebased_sources) {
- relative_source = rebase_path(source, source_dir)
- dest = "$file_base/lib/$relative_source"
- sdk_sources += [ dest ]
- sdk_source_mappings += [
- {
- source = source
- dest = dest
- },
- ]
- }
-
- metadata_target_name = "${target_name}_sdk_metadata"
- metadata_file = "$target_gen_dir/$target_name.sdk_meta.json"
- action(metadata_target_name) {
- script = "//build/dart/sdk/gen_meta_file.py"
-
- inputs = sdk_metas + third_party_pubspecs
-
- outputs = [
- metadata_file,
- ]
-
- args = [
- "--out",
- rebase_path(metadata_file),
- "--name",
- package_name,
- "--root",
- file_base,
- ]
- args += [ "--specs" ] + sdk_metas
- args += [ "--sources" ] + sdk_sources
- args += [ "--third-party-specs" ] + third_party_pubspecs
-
- deps = sdk_deps
- }
-
- sdk_atom("${target_name}_sdk") {
- id = "sdk://dart/${invoker.package_name}"
-
- category = invoker.sdk_category
-
- meta = {
- source = metadata_file
- dest = "$file_base/meta.json"
- schema = "dart_library"
- }
-
- deps = sdk_deps
-
- non_sdk_deps = [ ":$metadata_target_name" ]
- if (defined(invoker.non_dart_deps)) {
- non_sdk_deps += invoker.non_dart_deps
- }
-
- files = sdk_source_mappings
- }
- }
- }
-} else { # Not the Dart toolchain.
- template("dart_library") {
- group(target_name) {
- not_needed(invoker, "*")
-
- public_deps = [
- ":$target_name($dart_toolchain)",
- ]
- }
- }
-}
diff --git a/dart/dart_remote_test.gni b/dart/dart_remote_test.gni
deleted file mode 100644
index 5d96d1e..0000000
--- a/dart/dart_remote_test.gni
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/dart/dart.gni")
-import("//build/dart/dart_library.gni")
-import("//build/dart/toolchain.gni")
-
-# Defines a Dart test suite that requires connecting to a remote target.
-#
-# Parameters
-#
-# sources (required)
-# The list of test files, which must be within source_dir.
-#
-# source_dir (optional)
-# Directory containing the test sources. Defaults to "test".
-#
-# deps (optional)
-# List of labels for Dart libraries this suite depends on.
-#
-# disable_analysis (optional)
-# Prevents analysis from being run on this target.
-#
-# Example of usage:
-#
-# dart_host_to_target_test("baz_test") {
-# source_dir = "."
-# sources = [ "foo_bar_baz_test.dart" ]
-# deps = [
-# "//foo/baz",
-# "//third_party/dart-pkg/pub/test",
-# ]
-# }
-template("dart_remote_test") {
- main_target_name = target_name
- library_target_name = "${target_name}_library"
-
- sources_dir = "test"
- if (defined(invoker.source_dir)) {
- sources_dir = invoker.source_dir
- }
-
- dart_library(library_target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "disable_analysis",
- ])
-
- infer_package_name = true
-
- source_dir = sources_dir
-
- assert(defined(invoker.sources))
-
- sources = invoker.sources
- }
-
- dart_target_gen_dir =
- get_label_info(":bogus($dart_toolchain)", "target_gen_dir")
-
- dot_packages_file = "$dart_target_gen_dir/$library_target_name.packages"
-
- if (current_toolchain == host_toolchain) {
- invocation_file = "$root_out_dir/$target_name"
- } else {
- invocation_file = "$target_gen_dir/$target_name"
- }
-
- action(main_target_name) {
- script = "//build/dart/gen_remote_test_invocation.py"
-
- testonly = true
-
- outputs = [
- invocation_file,
- ]
-
- args = [
- "--out",
- rebase_path(invocation_file),
- "--sources",
- ] + rebase_path(invoker.sources, "", sources_dir) +
- [
- "--dot-packages",
- rebase_path(dot_packages_file),
- "--dart-binary",
- rebase_path(prebuilt_dart),
- ]
-
- deps = [
- ":$library_target_name",
- ]
- }
-}
diff --git a/dart/dart_tool.gni b/dart/dart_tool.gni
deleted file mode 100644
index d79aced..0000000
--- a/dart/dart_tool.gni
+++ /dev/null
@@ -1,200 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-import("//build/dart/toolchain.gni")
-
-# Defines a Dart application that can be run on the host
-#
-# Parameters
-#
-# sources (optional)
-# The list of public sources in this library, i.e. Dart files in lib/ but
-# not in lib/src/. These sources must be within lib/.
-#
-# package_name (optional)
-# Name of the dart package.
-#
-# main_dart (required)
-# File containing the main function of the application.
-#
-# deps (optional)
-# Dependencies of this application
-#
-# non_dart_deps (optional)
-# List of labels this package depends on that are not Dart packages. It
-# typically doesn't need to be set.
-#
-# output_name (optional)
-# Name of the output file to generate. Defaults to $target_name.
-#
-# disable_analysis (optional)
-# Prevents analysis from being run on this target.
-#
-# force_prebuilt_dart (optional)
-# Forces using the prebuilt Dart binary even when use_prebuilt_dart_sdk is
-# false. Defaults to true in a cross-build, and false otherwise.
-template("dart_tool") {
- assert(defined(invoker.main_dart), "Must specify main_dart file")
-
- dart_library_target_name = target_name + "_dart_library"
-
- if (defined(invoker.package_name)) {
- package_name = invoker.package_name
- } else if (!defined(invoker.infer_package_name) ||
- invoker.infer_package_name) {
- # Compute a package name from the label:
- # //foo/bar --> foo.bar
- # //foo/bar:blah --> foo.bar._blah
- # //garnet/public/foo/bar --> foo.bar
- # Strip public directories.
- full_dir = get_label_info(":$dart_library_target_name", "dir")
- foreach(sdk_dir, sdk_dirs) {
- full_dir = string_replace(full_dir, "$sdk_dir/", "")
- }
- package_name = full_dir
- package_name = string_replace(package_name, "//", "")
- package_name = string_replace(package_name, "/", ".")
-
- # If the last directory name does not match the target name, add the
- # target name to the resulting package name.
- name = get_label_info(":$dart_library_target_name", "name")
- last_dir = get_path_info(full_dir, "name")
- if (last_dir != name) {
- package_name = "$package_name._$name"
- }
- } else {
- assert(false, "Must specify either a package_name or infer_package_name")
- }
-
- package_root = "."
- if (defined(invoker.package_root)) {
- package_root = invoker.package_root
- }
-
- source_dir = "$package_root/lib"
- if (defined(invoker.source_dir)) {
- source_dir = "$package_root/${invoker.source_dir}"
- }
-
- dart_library(dart_library_target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "disable_analysis",
- ])
- package_name = package_name
- package_root = package_root
- source_dir = source_dir
-
- sources = []
- if (defined(invoker.sources)) {
- sources += invoker.sources
- }
- source_base = "lib"
- if (defined(invoker.source_dir)) {
- source_base = invoker.source_dir
- }
- sources += [ rebase_path(invoker.main_dart, source_base) ]
- }
-
- # Avoid using a custom-built Dart VM in a cross-build. The Dart VM would run
- # the Dart code and front-end in a simulator, and it would be prohibitively
- # slow.
- force_prebuilt_dart = host_cpu != target_cpu
- if (defined(invoker.force_prebuilt_dart)) {
- force_prebuilt_dart = invoker.force_prebuilt_dart
- }
- if (force_prebuilt_dart) {
- dart_binary = prebuilt_dart
- sdk_deps = []
- } else {
- dart_binary = "$dart_sdk/bin/dart"
- sdk_deps = dart_sdk_deps
- }
-
- snapshot_path = "$target_gen_dir/${target_name}.snapshot"
- depfile_path = "${snapshot_path}.d"
- dart_target_gen_dir =
- get_label_info(":bogus($dart_toolchain)", "target_gen_dir")
- packages_path = "$dart_target_gen_dir/$dart_library_target_name.packages"
-
- snapshot_target_name = target_name + "_snapshot"
-
- # Creates a snapshot file.
- # The main advantage of snapshotting is that it sets up source dependencies
- # via a depfile so that a Dart app gets properly rebuilt when one of its
- # sources is modified.
- action(snapshot_target_name) {
- if (defined(invoker.testonly)) {
- testonly = invoker.testonly
- }
-
- depfile = depfile_path
-
- outputs = [
- snapshot_path,
- ]
-
- script = dart_binary
-
- # The snapshot path needs to be rebased on top of the root build dir so
- # that the resulting depfile gets properly formatted.
- rebased_snapshot_path = rebase_path(snapshot_path, root_build_dir)
- rebased_depfile_path = rebase_path(depfile_path)
- rebased_packages_path = rebase_path(packages_path)
-
- main_uri = rebase_path(invoker.main_dart)
- package_relative = rebase_path(invoker.main_dart, source_dir)
-
- # Approximation for source_dir contains main_dart.
- if (get_path_info(get_path_info(package_relative, "dir"), "file") != "bin") {
- main_uri = "package:" + package_name + "/" + package_relative
- }
-
- args = [
- "--snapshot=$rebased_snapshot_path",
- "--snapshot-depfile=$rebased_depfile_path",
- "--packages=$rebased_packages_path",
- main_uri,
- ]
-
- deps = sdk_deps + [ ":$dart_library_target_name" ]
- }
-
- if (defined(invoker.output_name)) {
- app_name = invoker.output_name
- } else {
- app_name = target_name
- }
-
- # Builds a convenience script to invoke the app.
- action(target_name) {
- script = "//build/dart/gen_app_invocation.py"
-
- app_path = "$root_out_dir/dart-tools/$app_name"
-
- inputs = [
- dart_binary,
- snapshot_path,
- ]
- outputs = [
- app_path,
- ]
-
- args = [
- "--out",
- rebase_path(app_path),
- "--dart",
- rebase_path(dart_binary),
- "--snapshot",
- rebase_path(snapshot_path),
- ]
-
- deps = sdk_deps + [ ":$snapshot_target_name" ]
- if (defined(invoker.non_dart_deps)) {
- deps += invoker.non_dart_deps
- }
- }
-}
diff --git a/dart/empty_pubspec.yaml b/dart/empty_pubspec.yaml
deleted file mode 100644
index 5e04884..0000000
--- a/dart/empty_pubspec.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2018 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.
-
-# An empty manifest file used as a package marker.
diff --git a/dart/fidl_dart.gni b/dart/fidl_dart.gni
deleted file mode 100644
index e99f772..0000000
--- a/dart/fidl_dart.gni
+++ /dev/null
@@ -1,146 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/dart/dart_library.gni")
-import("//build/dart/toolchain.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/sdk/sdk_atom_alias.gni")
-
-# Generates some Dart bindings for a FIDL library.
-#
-# The parameters for this template are defined in //build/fidl/fidl.gni. The
-# relevant parameters in this template are:
-# - name;
-# - sdk_category.
-
-template("fidl_dart") {
- assert(current_toolchain == dart_toolchain,
- "This template can only be used in the $dart_toolchain toolchain.")
-
- not_needed(invoker, [ "sources" ])
-
- main_target_name = target_name
- generation_target_name = "${target_name}_dart_generate"
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
- root_dir = "$target_gen_dir/${library_name}_package"
- bindings_dir = "$root_dir/lib"
- bindings_file = "$bindings_dir/fidl.dart"
- async_bindings_file = "$bindings_dir/fidl_async.dart"
- test_bindings_file = "$bindings_dir/fidl_test.dart"
-
- fidl_target_gen_dir =
- get_label_info(":bogus($fidl_toolchain)", "target_gen_dir")
- json_representation = "$fidl_target_gen_dir/$target_name.fidl.json"
-
- compiled_action(generation_target_name) {
- visibility = [ ":*" ]
-
- tool = "//topaz/bin/fidlgen_dart"
-
- inputs = [
- json_representation,
- ]
-
- outputs = [
- bindings_file,
- async_bindings_file,
- test_bindings_file,
- ]
-
- args = [
- "--json",
- rebase_path(json_representation, root_build_dir),
- "--output-base",
- rebase_path(bindings_dir, root_build_dir),
- "--include-base",
- rebase_path(root_gen_dir, root_build_dir),
- ]
-
- # Don't run the formatter if we are using a custom-built Dart SDK in a
- # cross-build.
- deps = [
- ":$main_target_name($fidl_toolchain)",
- ]
- if (use_prebuilt_dart_sdk || host_cpu == target_cpu) {
- args += [
- "--dartfmt",
- rebase_path("$dart_sdk/bin/dartfmt"),
- ]
- deps += dart_sdk_deps
- }
- }
-
- copy_pubspec_target_name = "${target_name}_dart_pubspec"
- copy_options_target_name = "${target_name}_dart_options"
-
- copy(copy_pubspec_target_name) {
- sources = [
- "//build/dart/empty_pubspec.yaml",
- ]
-
- outputs = [
- "$root_dir/pubspec.yaml",
- ]
- }
-
- copy(copy_options_target_name) {
- sources = [
- "//topaz/tools/analysis_options.yaml",
- ]
-
- outputs = [
- "$root_dir/analysis_options.yaml",
- ]
- }
-
- dart_library(main_target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- package_root = root_dir
-
- package_name = "fidl_" + string_replace(library_name, ".", "_")
-
- sources = [
- rebase_path(bindings_file, bindings_dir),
- rebase_path(async_bindings_file, bindings_dir),
- rebase_path(test_bindings_file, bindings_dir),
- ]
-
- deps = [
- "//topaz/public/dart/fidl",
- "//topaz/public/dart/zircon",
- ]
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
- if (defined(invoker.public_deps)) {
- deps += invoker.public_deps
- }
-
- non_dart_deps = [
- ":$copy_options_target_name",
- ":$copy_pubspec_target_name",
- ":$generation_target_name",
- ]
- }
-
- if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded") {
- # Instead of depending on the generated bindings, set up a dependency on the
- # original library.
- sdk_target_name = "${main_target_name}_sdk"
- sdk_atom_alias(sdk_target_name) {
- atom = ":$sdk_target_name($fidl_toolchain)"
- }
- }
-}
diff --git a/dart/fidlmerge_dart.gni b/dart/fidlmerge_dart.gni
deleted file mode 100644
index ff546b9..0000000
--- a/dart/fidlmerge_dart.gni
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/dart/dart_library.gni")
-import("//build/fidl/toolchain.gni")
-
-# Declares a source_set that contains code generated by fidlmerge from a
-# template and a FIDL JSON file.
-#
-# Parameters
-#
-# fidl_target (required)
-# Specifies the fidl target from which to read fidl json. For example,
-# "//zircon/public/fidl/fuchsia-mem" for fuchsia.mem or
-# "//garnet/public/fidl/fuchsia.sys" for fuchsia.sys.
-#
-# template_path (required)
-# Specifies the template to use to generate the source code for the
-# source_set. For example, "//garnet/public/build/fostr/fostr.fidlmerge".
-#
-# generated_source_base (required)
-# The base file name from which the source_set's 'source' file names are
-# generated. For example, "formatting".
-#
-# options (optional)
-# A single string with comma-separated key=value pairs.
-#
-# amendments_path (optional)
-# Specifies a JSON file that contains amendments to be made to the fidl
-# model before the template is applied. For example,
-# "//garnet/public/build/fostr/fidl/fuchsia.media/amendments.fidlmerge".
-# See the fidlmerge README for details.
-#
-# deps, public_deps, test_only, visibility (optional)
-# These parameters are forwarded to the source_set.
-#
-
-template("fidlmerge_dart") {
- assert(defined(invoker.fidl_target),
- "fidlmerge_dart requires parameter fidl_target.")
-
- assert(defined(invoker.template_path),
- "fidlmerge_dart requires parameter template_path.")
-
- assert(defined(invoker.generated_source_base),
- "fidlmerge_dart requires parameter generated_source_base.")
-
- fidl_target = invoker.fidl_target
- template_path = invoker.template_path
- source_base = invoker.generated_source_base
-
- generation_target_name = "${target_name}_generate"
-
- fidl_target_gen_dir =
- get_label_info("$fidl_target($fidl_toolchain)", "target_gen_dir")
- fidl_target_name = get_path_info(fidl_target_gen_dir, "file")
- json_representation = "$fidl_target_gen_dir/$fidl_target_name.fidl.json"
-
- include_stem = string_replace(target_gen_dir, ".", "/")
- file_stem = "$include_stem/$source_base"
-
- compiled_action(generation_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
- visibility = [ ":*" ]
-
- tool = "//garnet/go/src/fidlmerge"
-
- inputs = [
- json_representation,
- template_path,
- ]
-
- outputs = [
- "$file_stem.dart",
- ]
-
- args = [
- "--template",
- rebase_path(template_path, root_build_dir),
- "--json",
- rebase_path(json_representation, root_build_dir),
- "--output-base",
- rebase_path(file_stem, root_build_dir),
- ]
-
- if (defined(invoker.options)) {
- args += [
- "--options",
- invoker.options,
- ]
- }
-
- if (defined(invoker.amendments_path)) {
- args += [
- "--amend",
- rebase_path(invoker.amendments_path, root_build_dir),
- ]
- }
-
- deps = [
- "$fidl_target($fidl_toolchain)",
- ]
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
- }
-
- copy_pubspec_target_name = "${target_name}_dart_pubspec"
- copy_options_target_name = "${target_name}_dart_options"
- copy_source_target_name = "${target_name}_dart_sources"
-
- library_name = target_name
- root_dir = "$target_gen_dir/${library_name}_package"
-
- copy(copy_pubspec_target_name) {
- sources = [
- "//build/dart/empty_pubspec.yaml",
- ]
-
- outputs = [
- "$root_dir/pubspec.yaml",
- ]
- }
-
- copy(copy_options_target_name) {
- sources = [
- "//topaz/tools/analysis_options.yaml",
- ]
-
- outputs = [
- "$root_dir/analysis_options.yaml",
- ]
- }
-
- copy(copy_source_target_name) {
- sources = [
- "$file_stem.dart",
- ]
- outputs = [
- "$root_dir/lib/$source_base.dart",
- ]
-
- deps = [
- ":$generation_target_name",
- ]
- }
-
- dart_library(library_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- package_root = root_dir
-
- package_name = "fidl_" + string_replace(library_name, ".", "_")
-
- sources = [
- "$source_base.dart",
- ]
-
- deps = []
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
- if (defined(invoker.public_deps)) {
- deps += invoker.public_deps
- }
-
- non_dart_deps = [
- ":$copy_options_target_name",
- ":$copy_pubspec_target_name",
- ":$copy_source_target_name",
- ]
- }
-}
diff --git a/dart/gen_analyzer_invocation.py b/dart/gen_analyzer_invocation.py
deleted file mode 100755
index 0dc059b..0000000
--- a/dart/gen_analyzer_invocation.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env python
-# 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.
-
-import argparse
-import os
-import stat
-import string
-import sys
-
-def main():
- parser = argparse.ArgumentParser(
- description='Generate a script that invokes the Dart analyzer')
- parser.add_argument('--out', help='Path to the invocation file to generate',
- required=True)
- parser.add_argument('--source-file', help='Path to the list of sources',
- required=True)
- parser.add_argument('--dot-packages', help='Path to the .packages file',
- required=True)
- parser.add_argument('--dartanalyzer',
- help='Path to the Dart analyzer executable',
- required=True)
- parser.add_argument('--dart-sdk', help='Path to the Dart SDK',
- required=True)
- parser.add_argument('--package-name', help='Name of the analyzed package',
- required=True)
- parser.add_argument('--options', help='Path to analysis options')
- args = parser.parse_args()
-
- with open(args.source_file, 'r') as source_file:
- sources = source_file.read().strip().split('\n')
-
- analyzer_file = args.out
- analyzer_path = os.path.dirname(analyzer_file)
- if not os.path.exists(analyzer_path):
- os.makedirs(analyzer_path)
-
- script_template = string.Template('''#!/bin/sh
-
-echo "Package : $package_name"
-$dartanalyzer \\
- --packages=$dot_packages \\
- --dart-sdk=$dart_sdk \\
- --fatal-warnings \\
- --fatal-hints \\
- --fatal-lints \\
- $options_argument \\
- $sources_argument \\
- "$$@"
-''')
- with open(analyzer_file, 'w') as file:
- file.write(script_template.substitute(
- args.__dict__,
- package_name = args.package_name,
- sources_argument = ' '.join(sources),
- options_argument = '--options='+args.options if args.options else ''))
- permissions = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
- stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
- stat.S_IROTH)
- os.chmod(analyzer_file, permissions)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/gen_app_invocation.py b/dart/gen_app_invocation.py
deleted file mode 100755
index 7c4c2d3..0000000
--- a/dart/gen_app_invocation.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import os
-import stat
-import string
-import sys
-
-def main():
- parser = argparse.ArgumentParser(
- description='Generate a script that invokes a Dart application')
- parser.add_argument('--out',
- help='Path to the invocation file to generate',
- required=True)
- parser.add_argument('--dart',
- help='Path to the Dart binary',
- required=True)
- parser.add_argument('--snapshot',
- help='Path to the app snapshot',
- required=True)
- args = parser.parse_args()
-
- app_file = args.out
- app_path = os.path.dirname(app_file)
- if not os.path.exists(app_path):
- os.makedirs(app_path)
-
- script_template = string.Template('''#!/bin/sh
-
-$dart \\
- $snapshot \\
- "$$@"
-''')
- with open(app_file, 'w') as file:
- file.write(script_template.substitute(args.__dict__))
- permissions = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
- stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
- stat.S_IROTH)
- os.chmod(app_file, permissions)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/gen_dot_packages.py b/dart/gen_dot_packages.py
deleted file mode 100755
index b87eb8f..0000000
--- a/dart/gen_dot_packages.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env python
-# 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.
-
-import argparse
-import os
-import string
-import sys
-
-def parse_dot_packages(dot_packages_path):
- deps = {}
- with open(dot_packages_path) as dot_packages:
- for line in dot_packages:
- if line.startswith('#'):
- continue
- delim = line.find(':file://')
- if delim == -1:
- continue
- name = line[:delim]
- path = os.path.abspath(line[delim + 8:].strip())
- if name in deps:
- raise Exception('%s contains multiple entries for package %s' %
- (dot_packages_path, name))
- deps[name] = path
- return deps
-
-
-def create_base_directory(file):
- path = os.path.dirname(file)
- if not os.path.exists(path):
- os.makedirs(path)
-
-
-def main():
- parser = argparse.ArgumentParser(
- description="Generate .packages file for dart package")
- parser.add_argument("--out", help="Path to .packages file to generate",
- required=True)
- parser.add_argument("--package-name", help="Name of this package",
- required=True)
- parser.add_argument("--source-dir", help="Path to package source",
- required=True)
- parser.add_argument("--deps", help="List of dependencies' package file",
- nargs="*")
- args = parser.parse_args()
-
- dot_packages_file = args.out
- create_base_directory(dot_packages_file)
-
- package_deps = {
- args.package_name: args.source_dir,
- }
-
- for dep in args.deps:
- dependent_packages = parse_dot_packages(dep)
- for name, path in dependent_packages.iteritems():
- if name in package_deps:
- if path != package_deps[name]:
- print "Error, conflicting entries for %s: %s and %s from %s" % (name,
- path, package_deps[name], dep)
- return 1
- else:
- package_deps[name] = path
-
- with open(dot_packages_file, "w") as dot_packages:
- names = package_deps.keys()
- names.sort()
- for name in names:
- dot_packages.write('%s:file://%s/\n' % (name, package_deps[name]))
-
- return 0
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/gen_fuchsia_test_main.py b/dart/gen_fuchsia_test_main.py
deleted file mode 100755
index d4df897..0000000
--- a/dart/gen_fuchsia_test_main.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import os
-import re
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser(
- sys.argv[0],
- description="Generate main file for Fuchsia dart test")
- parser.add_argument("--out",
- help="Path to .dart file to generate",
- required=True)
- parser.add_argument('--source-dir',
- help='Path to test sources',
- required=True)
- args = parser.parse_args()
-
- out_dir = os.path.dirname(args.out)
- test_files = []
- for root, dirs, files in os.walk(args.source_dir):
- for f in files:
- if not f.endswith('_test.dart'):
- continue
- test_files.append(os.path.relpath(os.path.join(root, f), out_dir))
-
- outfile = open(args.out, 'w')
- outfile.write('''// Generated by generate_test_main.py
-
- // ignore_for_file: directives_ordering
-
- import 'dart:async';
- import 'package:fuchsia_test_helper/fuchsia_test_helper.dart';
- ''')
-
- for i, path in enumerate(test_files):
- outfile.write("import '%s' as test_%d;\n" % (path, i))
-
- outfile.write('''
- Future<int> main(List<String> args) async {
- await runFuchsiaTests(<MainFunction>[
- ''')
-
- for i in range(len(test_files)):
- outfile.write('test_%d.main,\n' % i)
-
- outfile.write(''']);
-
- // Quit.
- exitFuchsiaTest(0);
- return 0;
- }
- ''')
-
- outfile.close()
-
-
-if __name__ == '__main__':
- main()
diff --git a/dart/gen_remote_test_invocation.py b/dart/gen_remote_test_invocation.py
deleted file mode 100755
index 15a2fcf..0000000
--- a/dart/gen_remote_test_invocation.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import os
-import stat
-import string
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser(
- description='Generate a script that invokes the Dart tester')
- parser.add_argument('--out',
- help='Path to the invocation file to generate',
- required=True)
- parser.add_argument('--sources',
- help='Path to test files',
- required=True,
- nargs='+')
- parser.add_argument('--dart-binary',
- help='Path to the dart binary.',
- required=True)
- parser.add_argument('--dot-packages',
- help='Path to the .packages file',
- required=True)
- args = parser.parse_args()
-
- test_file = args.out
- test_path = os.path.dirname(test_file)
- if not os.path.exists(test_path):
- os.makedirs(test_path)
-
- sources_string = ' '.join(args.sources)
- script_template = string.Template('''#!/bin/sh
-# This artifact was generated by //build/dart/gen_remote_test_invocation.py
-# Expects arg 1 to be the fuchsia remote address, and arg 2 to be the (optional)
-# SSH config path.
-
-set -e
-
-export FUCHSIA_DEVICE_URL="$$1"
-if [[ ! -z "$$2" ]]; then
- export FUCHSIA_SSH_CONFIG="$$2"
-fi
-
-for TEST in $sources_string; do
- $dart_binary --packages="$dot_packages" "$$TEST"
-done
-''')
- with open(test_file, 'w') as file:
- file.write(script_template.substitute(args.__dict__,
- sources_string=sources_string))
- permissions = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
- stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
- stat.S_IROTH)
- os.chmod(test_file, permissions)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/gen_run_sh.py b/dart/gen_run_sh.py
deleted file mode 100755
index d76c744..0000000
--- a/dart/gen_run_sh.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import os
-import stat
-import sys
-
-def main():
- parser = argparse.ArgumentParser(
- description='Generate a script that runs something')
- parser.add_argument('--out',
- help='Path to the file to generate',
- required=True)
- parser.add_argument('--to_be_run',
- help='The argument to `run`',
- required=True)
- args = parser.parse_args()
-
- script_file = args.out
- script_path = os.path.dirname(script_file)
- if not os.path.exists(script_path):
- os.makedirs(script_path)
-
- script = (
- '#!/boot/bin/sh\n\n'
- 'run %s\n' % args.to_be_run)
- with open(script_file, 'w') as file:
- file.write(script)
- permissions = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
- stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
- stat.S_IROTH)
- os.chmod(script_file, permissions)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/gen_test_invocation.py b/dart/gen_test_invocation.py
deleted file mode 100755
index 673c775..0000000
--- a/dart/gen_test_invocation.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import os
-import stat
-import string
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser(
- description='Generate a script that invokes the Dart tester')
- parser.add_argument('--out',
- help='Path to the invocation file to generate',
- required=True)
- parser.add_argument('--source-dir',
- help='Path to test sources',
- required=True)
- parser.add_argument('--dot-packages',
- help='Path to the .packages file',
- required=True)
- parser.add_argument('--test-runner',
- help='Path to the test runner',
- required=True)
- parser.add_argument('--flutter-shell',
- help='Path to the Flutter shell',
- required=True)
- args = parser.parse_args()
-
- test_file = args.out
- test_path = os.path.dirname(test_file)
- if not os.path.exists(test_path):
- os.makedirs(test_path)
-
- script_template = string.Template('''#!/bin/sh
-
-$test_runner \\
- --packages=$dot_packages \\
- --shell=$flutter_shell \\
- --test-directory=$source_dir \\
- "$$@"
-''')
- with open(test_file, 'w') as file:
- file.write(script_template.substitute(args.__dict__))
- permissions = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
- stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
- stat.S_IROTH)
- os.chmod(test_file, permissions)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/label_to_package_name.py b/dart/label_to_package_name.py
deleted file mode 100755
index ffe7734..0000000
--- a/dart/label_to_package_name.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env python
-# 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.
-
-import string
-import sys
-
-# TODO(abarth): Base these paths on the sdk_dirs variable in gn.
-_SDK_DIRS = [
- "garnet/public/",
- "peridot/public/",
- "topaz/public/",
-]
-
-
-# Strip the sdk dirs from the given label, if necessary.
-def _remove_sdk_dir(label):
- for prefix in _SDK_DIRS:
- if label.startswith(prefix):
- return label[len(prefix):]
- return label
-
-
-# For target //foo/bar:blah, the package name will be foo.bar._blah.
-# For default targets //foo/bar:bar, the package name will be foo.bar.
-def convert(label):
- if not label.startswith("//"):
- sys.stderr.write("expected label to start with //, got %s\n" % label)
- return 1
- base = _remove_sdk_dir(label[2:])
- separator_index = string.rfind(base, ":")
- if separator_index < 0:
- sys.stderr.write("could not find target name in label %s\n" % label)
- return 1
- path = base[:separator_index].split("/")
- name = base[separator_index+1:]
- if path[-1] == name:
- return ".".join(path)
- else:
- return "%s._%s" % (".".join(path), name)
-
-
-def main():
- print convert(sys.argv[1])
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/run_analysis.py b/dart/run_analysis.py
deleted file mode 100755
index 0b18281..0000000
--- a/dart/run_analysis.py
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import os
-import subprocess
-import sys
-
-FUCHSIA_ROOT = os.path.dirname( # $root
- os.path.dirname( # build
- os.path.dirname( # dart
- os.path.abspath(__file__))))
-
-sys.path += [os.path.join(FUCHSIA_ROOT, 'third_party', 'pyyaml', 'lib')]
-import yaml
-
-def main():
- parser = argparse.ArgumentParser('Runs analysis on a given package')
- parser.add_argument('--source-file', help='Path to the list of sources',
- required=True)
- parser.add_argument('--dot-packages', help='Path to the .packages file',
- required=True)
- parser.add_argument('--dartanalyzer',
- help='Path to the Dart analyzer executable',
- required=True)
- parser.add_argument('--dart-sdk', help='Path to the Dart SDK',
- required=True)
- parser.add_argument('--options', help='Path to analysis options',
- required=True)
- parser.add_argument('--stamp', help='File to touch when analysis succeeds',
- required=True)
- parser.add_argument('--depname', help='Name of the depfile target',
- required=True)
- parser.add_argument('--depfile', help='Path to the depfile to generate',
- required=True)
- args = parser.parse_args()
-
- with open(args.source_file, 'r') as source_file:
- sources = source_file.read().strip().split('\n')
-
- with open(args.depfile, 'w') as depfile:
- depfile.write('%s: ' % args.depname)
- def add_dep(path):
- depfile.write('%s ' % path)
- options = args.options
- while True:
- if not os.path.isabs(options):
- print('Expected absolute path, got %s' % options)
- return 1
- if not os.path.exists(options):
- print('Could not find options file: %s' % options)
- return 1
- add_dep(options)
- with open(options, 'r') as options_file:
- content = yaml.safe_load(options_file)
- if not 'include' in content:
- break
- included = content['include']
- if not os.path.isabs(included):
- included = os.path.join(os.path.dirname(options), included)
- options = included
-
- call_args = [
- args.dartanalyzer,
- '--packages=%s' % args.dot_packages,
- '--dart-sdk=%s' % args.dart_sdk,
- '--options=%s' % args.options,
- '--fatal-warnings',
- '--fatal-hints',
- '--fatal-lints',
- ] + sources
-
- call = subprocess.Popen(call_args, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- stdout, stderr = call.communicate()
- if call.returncode:
- print(stdout + stderr)
- return 1
-
- with open(args.stamp, 'w') as stamp:
- stamp.write('Success!')
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/sdk/gen_meta_file.py b/dart/sdk/gen_meta_file.py
deleted file mode 100755
index 95d74ed..0000000
--- a/dart/sdk/gen_meta_file.py
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-FUCHSIA_ROOT = os.path.dirname( # $root
- os.path.dirname( # build
- os.path.dirname( # dart
- os.path.dirname( # sdk
- os.path.abspath(__file__)))))
-
-sys.path += [os.path.join(FUCHSIA_ROOT, 'third_party', 'pyyaml', 'lib')]
-import yaml
-
-
-# The list of packages that should be pulled from a Flutter SDK instead of pub.
-FLUTTER_PACKAGES = [
- 'flutter',
- 'flutter_driver',
- 'flutter_test',
- 'flutter_tools',
-]
-
-
-def main():
- parser = argparse.ArgumentParser('Builds a metadata file')
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--name',
- help='Name of the original package',
- required=True)
- parser.add_argument('--root',
- help='Root of the package in the SDK',
- required=True)
- parser.add_argument('--specs',
- help='Path to spec files of dependencies',
- nargs='*')
- parser.add_argument('--third-party-specs',
- help='Path to pubspec files of 3p dependencies',
- nargs='*')
- parser.add_argument('--sources',
- help='List of library sources',
- nargs='+')
- args = parser.parse_args()
-
- metadata = {
- 'type': 'dart_library',
- 'name': args.name,
- 'root': args.root,
- 'sources': args.sources,
- 'files': args.sources,
- }
-
- third_party_deps = []
- for spec in args.third_party_specs:
- with open(spec, 'r') as spec_file:
- manifest = yaml.safe_load(spec_file)
- name = manifest['name']
- dep = {
- 'name': name,
- }
- if name in FLUTTER_PACKAGES:
- dep['version'] = 'flutter_sdk'
- else:
- if 'version' not in manifest:
- raise Exception('%s does not specify a version.' % spec)
- dep['version'] = manifest['version']
- third_party_deps.append(dep)
- metadata['third_party_deps'] = third_party_deps
-
- deps = []
- fidl_deps = []
- for spec in args.specs:
- with open(spec, 'r') as spec_file:
- data = json.load(spec_file)
- type = data['type']
- name = data['name']
- if type == 'dart_library':
- deps.append(name)
- elif type == 'fidl_library':
- fidl_deps.append(name)
- else:
- raise Exception('Unsupported dependency type: %s' % type)
- metadata['deps'] = deps
- metadata['fidl_deps'] = fidl_deps
-
- with open(args.out, 'w') as out_file:
- json.dump(metadata, out_file, indent=2, sort_keys=True)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/sdk/sort_deps.py b/dart/sdk/sort_deps.py
deleted file mode 100755
index 8699e28..0000000
--- a/dart/sdk/sort_deps.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import sys
-
-
-def print_list(name, content):
- quoted = map(lambda c: '"%s"' % c, content)
- print('%s = [%s]' % (name, ', '.join(quoted)))
-
-def main():
- deps = sys.argv[1:]
- def is_3p(dep):
- return dep.startswith('//third_party')
- print_list('third_party', filter(is_3p, deps))
- print_list('local', filter(lambda d: not is_3p(d), deps))
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/dart/toolchain.gni b/dart/toolchain.gni
deleted file mode 100644
index 1d015f7..0000000
--- a/dart/toolchain.gni
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2017 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.
-
-declare_args() {
- # Maximum number of Dart processes to run in parallel.
- #
- # Dart analyzer uses a lot of memory which may cause issues when building
- # with many parallel jobs e.g. when using goma. To avoid out-of-memory
- # errors we explicitly reduce the number of jobs.
- dart_pool_depth = 16
-}
-
-dart_toolchain = "//build/dart:dartlang"
-
-dart_root_gen_dir = get_label_info("//bogus($dart_toolchain)", "root_gen_dir")
-# In order to access the target_gen_dir in the Dart toolchain from some location
-# in the source tree, use the following:
-# dart_target_gen_dir = get_label_info(":bogus($dart_toolchain)", "target_gen_dir")
diff --git a/deprecated_bare_package_url b/deprecated_bare_package_url
deleted file mode 100644
index 7c2f38a..0000000
--- a/deprecated_bare_package_url
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "deprecated-bare-package-url": true
-}
diff --git a/development.key b/development.key
deleted file mode 100644
index 3aa7e16..0000000
--- a/development.key
+++ /dev/null
Binary files differ
diff --git a/dot_gn_symlink.sh b/dot_gn_symlink.sh
deleted file mode 100755
index b756a0e..0000000
--- a/dot_gn_symlink.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-# Copyright 2018 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.
-
-FUCHSIA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
-
-exec ln -snf build/gn/dotfile.gn "${FUCHSIA_DIR}/.gn"
diff --git a/fidl/BUILD.gn b/fidl/BUILD.gn
deleted file mode 100644
index 54f86b4..0000000
--- a/fidl/BUILD.gn
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/toolchain/clang_toolchain.gni")
-
-# A toolchain dedicated to processing FIDL libraries.
-# The only targets in this toolchain are action() targets, so it
-# has no real tools. But every toolchain needs stamp and copy.
-toolchain("fidling") {
- tool("stamp") {
- command = stamp_command
- description = stamp_description
- }
- tool("copy") {
- command = copy_command
- description = copy_description
- }
-
- toolchain_args = {
- toolchain_variant = {
- }
- toolchain_variant = {
- base = get_label_info(":fidling", "label_no_toolchain")
- }
- }
-}
diff --git a/fidl/fidl.gni b/fidl/fidl.gni
deleted file mode 100644
index 195d0b5..0000000
--- a/fidl/fidl.gni
+++ /dev/null
@@ -1,132 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/cpp/fidl_cpp.gni")
-import("//build/dart/toolchain.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/go/toolchain.gni")
-import("//build/rust/toolchain.gni")
-
-# Declares a FIDL library.
-#
-# Depending on the toolchain in which this targets is expanded, it will yield
-# different results:
-# - in the FIDL toolchain, it will compile its source files into an
-# intermediate representation consumable by language bindings generators;
-# - in the target or shared toolchain, this will produce a source_set
-# containing C++ bindings.
-#
-# Parameters
-#
-# sources (required)
-# List of paths to library source files.
-#
-# name (optional)
-# Name of the library.
-# Defaults to the target's name.
-#
-# sdk_category (optional)
-# Publication level of the library in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# cpp_legacy_callbacks (optional)
-# If true, uses std::function instead of fit::function.
-# Defaults to true while migration is in progress.
-
-template("fidl") {
- if (defined(invoker.sdk_category)) {
- not_needed(invoker, [ "sdk_category" ])
- }
- if (defined(invoker.cpp_legacy_callbacks)) {
- not_needed(invoker, [ "cpp_legacy_callbacks" ])
- }
-
- if (current_toolchain == fidl_toolchain) {
- import("//build/fidl/fidl_library.gni")
-
- fidl_library(target_name) {
- forward_variables_from(invoker, "*")
- }
-
- fidl_cpp_codegen(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else if (current_toolchain == dart_toolchain) {
- import("//build/dart/fidl_dart.gni")
-
- fidl_dart(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else if (current_toolchain == rust_toolchain) {
- import("//build/rust/fidl_rust.gni")
-
- fidl_rust(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else if (current_toolchain == go_toolchain) {
- import("//build/go/fidl_go.gni")
-
- fidl_go(target_name) {
- forward_variables_from(invoker, "*")
- }
- } else if (is_fuchsia) {
- import("//build/c/fidl_c.gni")
- import("//build/rust/fidl_rust_library.gni")
-
- fidl_tables(target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
- }
-
- # TODO(cramertj): remove pending TC-81.
- fidl_rust_library(target_name) {
- forward_variables_from(invoker, "*")
- }
-
- fidl_cpp(target_name) {
- forward_variables_from(invoker, "*")
- }
-
- fidl_c_client(target_name) {
- forward_variables_from(invoker, "*")
- }
-
- fidl_c_server(target_name) {
- forward_variables_from(invoker, "*")
- }
-
- group("${target_name}_c") {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- public_deps = [
- ":${target_name}_client",
- ":${target_name}_server",
- ]
- }
- } else {
- # TODO(ctiller): this case is for host-side FIDL, and ultimately
- # should be identical to the previous case (once C & Rust are usable from
- # host)
- import("//build/c/fidl_c.gni")
-
- fidl_tables(target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
- }
-
- fidl_cpp(target_name) {
- forward_variables_from(invoker, "*")
- }
- }
-}
diff --git a/fidl/fidl_library.gni b/fidl/fidl_library.gni
deleted file mode 100644
index 1ca02c7..0000000
--- a/fidl/fidl_library.gni
+++ /dev/null
@@ -1,250 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/json/validate_json.gni")
-import("//build/sdk/sdk_atom.gni")
-
-# Generates some representation of a FIDL library that's consumable by Language
-# bindings generators.
-#
-# The parameters for this template are defined in //build/fidl/fidl.gni. The
-# relevant parameters in this template are:
-# - name;
-# - sdk_category;
-# - sources.
-
-template("fidl_library") {
- assert(
- current_toolchain == fidl_toolchain,
- "This template can only be used in the FIDL toolchain $fidl_toolchain.")
-
- assert(defined(invoker.sources), "A FIDL library requires some sources.")
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- response_file = "$target_gen_dir/$target_name.args"
- fidl_stem = "$target_gen_dir/$target_name.fidl"
- json_representation = "$fidl_stem.json"
- c_stem = string_replace(library_name, ".", "/") + "/c/fidl"
- c_client = "$root_gen_dir/$c_stem.client.c"
- c_header = "$root_gen_dir/$c_stem.h"
- c_server = "$root_gen_dir/$c_stem.server.c"
- coding_tables = "$fidl_stem.tables.cc"
-
- main_target_name = target_name
- response_file_target_name = "${target_name}_response_file"
- compilation_target_name = "${target_name}_compile"
- verification_target_name = "${target_name}_verify"
-
- all_deps = []
- if (defined(invoker.deps)) {
- all_deps += invoker.deps
- }
- if (defined(invoker.public_deps)) {
- all_deps += invoker.public_deps
- }
-
- action(response_file_target_name) {
- visibility = [ ":*" ]
-
- script = "//build/fidl/gen_response_file.py"
-
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "sources",
- "testonly",
- ])
-
- libraries = "$target_gen_dir/$main_target_name.libraries"
-
- outputs = [
- response_file,
- libraries,
- ]
-
- args = [
- "--out-response-file",
- rebase_path(response_file, root_build_dir),
- "--out-libraries",
- rebase_path(libraries, root_build_dir),
- "--json",
- rebase_path(json_representation, root_build_dir),
- "--c-client",
- rebase_path(c_client, root_build_dir),
- "--c-header",
- rebase_path(c_header, root_build_dir),
- "--c-server",
- rebase_path(c_server, root_build_dir),
- "--tables",
- rebase_path(coding_tables, root_build_dir),
- "--name",
- library_name,
- "--sources",
- ] + rebase_path(sources, root_build_dir)
-
- if (all_deps != []) {
- dep_libraries = []
-
- foreach(dep, all_deps) {
- gen_dir = get_label_info(dep, "target_gen_dir")
- name = get_label_info(dep, "name")
- dep_libraries += [ "$gen_dir/$name.libraries" ]
- }
-
- inputs = dep_libraries
-
- args += [ "--dep-libraries" ] + rebase_path(dep_libraries, root_build_dir)
- }
- }
-
- compiled_action(compilation_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- visibility = [ ":*" ]
-
- tool = "//zircon/public/tool/fidlc"
-
- inputs = [
- response_file,
- ]
-
- outputs = [
- c_client,
- c_header,
- c_server,
- coding_tables,
- json_representation,
- ]
-
- rebased_response_file = rebase_path(response_file, root_build_dir)
-
- args = [ "@$rebased_response_file" ]
-
- deps = [
- ":$response_file_target_name",
- ]
- }
-
- validate_json(verification_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
- visibility = [ ":*" ]
- data = json_representation
- schema = "//zircon/system/host/fidl/schema.json"
- deps = [
- ":$compilation_target_name",
- ]
- }
-
- group(main_target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- public_deps = [
- ":$compilation_target_name",
- ":$response_file_target_name",
- ]
-
- deps = [
- ":$verification_target_name",
- ]
- }
-
- if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded") {
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- # Process sources.
- file_base = "fidl/$library_name"
- all_files = []
- sdk_sources = []
- foreach(source, invoker.sources) {
- relative_source = rebase_path(source, ".")
- if (string_replace(relative_source, "..", "bogus") != relative_source) {
- # If the source file is not within the same directory, just use the file
- # name.
- relative_source = get_path_info(source, "file")
- }
- destination = "$file_base/$relative_source"
- sdk_sources += [ destination ]
- all_files += [
- {
- source = rebase_path(source)
- dest = destination
- },
- ]
- }
-
- # Identify metadata for dependencies.
- sdk_metas = []
- sdk_deps = []
- foreach(dep, all_deps) {
- full_label = get_label_info(dep, "label_no_toolchain")
- sdk_dep = "${full_label}_sdk"
- sdk_deps += [ sdk_dep ]
- gen_dir = get_label_info(sdk_dep, "target_gen_dir")
- name = get_label_info(sdk_dep, "name")
- sdk_metas += [ rebase_path("$gen_dir/$name.meta.json") ]
- }
-
- # Generate the library metadata.
- meta_file = "$target_gen_dir/${target_name}.sdk_meta.json"
- meta_target_name = "${target_name}_meta"
-
- action(meta_target_name) {
- script = "//build/fidl/gen_sdk_meta.py"
-
- inputs = sdk_metas
-
- outputs = [
- meta_file,
- ]
-
- args = [
- "--out",
- rebase_path(meta_file),
- "--name",
- library_name,
- "--root",
- file_base,
- "--specs",
- ] + sdk_metas + [ "--sources" ] + sdk_sources
-
- deps = sdk_deps
- }
-
- sdk_atom("${target_name}_sdk") {
- id = "sdk://fidl/$library_name"
-
- category = invoker.sdk_category
-
- meta = {
- source = meta_file
- dest = "$file_base/meta.json"
- schema = "fidl_library"
- }
-
- files = all_files
-
- non_sdk_deps = [ ":$meta_target_name" ]
-
- deps = []
- foreach(dep, all_deps) {
- label = get_label_info(dep, "label_no_toolchain")
- deps += [ "${label}_sdk" ]
- }
- }
- }
-}
diff --git a/fidl/gen_response_file.py b/fidl/gen_response_file.py
deleted file mode 100755
index 582a58b..0000000
--- a/fidl/gen_response_file.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import os
-import string
-import sys
-
-
-def read_libraries(libraries_path):
- with open(libraries_path) as f:
- lines = f.readlines()
- return [l.rstrip("\n") for l in lines]
-
-
-def write_libraries(libraries_path, libraries):
- directory = os.path.dirname(libraries_path)
- if not os.path.exists(directory):
- os.makedirs(directory)
- with open(libraries_path, "w+") as f:
- for library in libraries:
- f.write(library)
- f.write("\n")
-
-
-def main():
- parser = argparse.ArgumentParser(description="Generate response file for FIDL frontend")
- parser.add_argument("--out-response-file", help="The path for for the response file to generate", required=True)
- parser.add_argument("--out-libraries", help="The path for for the libraries file to generate", required=True)
- parser.add_argument("--json", help="The path for the JSON file to generate, if any")
- parser.add_argument("--tables", help="The path for the tables file to generate, if any")
- parser.add_argument("--c-client", help="The path for the C simple client file to generate, if any")
- parser.add_argument("--c-header", help="The path for the C header file to generate, if any")
- parser.add_argument("--c-server", help="The path for the C simple server file to generate, if any")
- parser.add_argument("--name", help="The name for the generated FIDL library, if any")
- parser.add_argument("--sources", help="List of FIDL source files", nargs="*")
- parser.add_argument("--dep-libraries", help="List of dependent libraries", nargs="*")
- args = parser.parse_args()
-
- target_libraries = []
-
- for dep_libraries_path in args.dep_libraries or []:
- dep_libraries = read_libraries(dep_libraries_path)
- for library in dep_libraries:
- if library in target_libraries:
- continue
- target_libraries.append(library)
-
- target_libraries.append(" ".join(sorted(args.sources)))
- write_libraries(args.out_libraries, target_libraries)
-
- response_file = []
-
- if args.json:
- response_file.append("--json %s" % args.json)
-
- if args.tables:
- response_file.append("--tables %s" % args.tables)
-
- if args.c_client:
- response_file.append("--c-client %s" % args.c_client)
-
- if args.c_header:
- response_file.append("--c-header %s" % args.c_header)
-
- if args.c_server:
- response_file.append("--c-server %s" % args.c_server)
-
- if args.name:
- response_file.append("--name %s" % args.name)
-
- response_file.extend(["--files %s" % library for library in target_libraries])
-
- with open(args.out_response_file, "w+") as f:
- f.write(" ".join(response_file))
- f.write("\n")
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/fidl/gen_sdk_meta.py b/fidl/gen_sdk_meta.py
deleted file mode 100755
index 86bf26b..0000000
--- a/fidl/gen_sdk_meta.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser('Builds a metadata file')
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--name',
- help='Name of the library',
- required=True)
- parser.add_argument('--root',
- help='Root of the library in the SDK',
- required=True)
- parser.add_argument('--specs',
- help='Path to spec files of dependencies',
- nargs='*')
- parser.add_argument('--sources',
- help='List of library sources',
- nargs='+')
- args = parser.parse_args()
-
- metadata = {
- 'type': 'fidl_library',
- 'name': args.name,
- 'root': args.root,
- 'sources': args.sources,
- 'files': args.sources,
- }
-
- deps = []
- for spec in args.specs:
- with open(spec, 'r') as spec_file:
- data = json.load(spec_file)
- type = data['type']
- name = data['name']
- if type == 'fidl_library':
- deps.append(name)
- else:
- raise Exception('Unsupported dependency type: %s' % type)
- metadata['deps'] = deps
-
- with open(args.out, 'w') as out_file:
- json.dump(metadata, out_file, indent=2, sort_keys=True)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/fidl/toolchain.gni b/fidl/toolchain.gni
deleted file mode 100644
index aedf348..0000000
--- a/fidl/toolchain.gni
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2018 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.
-
-fidl_toolchain = "//build/fidl:fidling"
diff --git a/fuzzing/BUILD.gn b/fuzzing/BUILD.gn
deleted file mode 100644
index 6554929..0000000
--- a/fuzzing/BUILD.gn
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright 2018 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.
-
-config("fuzzing_build_mode_unsafe_for_production") {
- defines = [ "FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" ]
-}
diff --git a/fuzzing/fuzzer.gni b/fuzzing/fuzzer.gni
deleted file mode 100644
index d37f35b..0000000
--- a/fuzzing/fuzzer.gni
+++ /dev/null
@@ -1,370 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/package.gni")
-
-# Declare a fuzzed executable target.
-#
-# Creates an instrumented executable file for fuzzing with a sanitizer. Do not
-# use directly; instead, use `fuzz_target` with an associated `fuzz_package`
-# specifying the supported sanitizers.
-#
-# Takes all the same parameters as executable().
-template("_fuzzed_executable") {
- executable(target_name) {
- _target_type = "fuzzed_executable"
-
- # Explicitly forward visibility, implicitly forward everything else.
- # See comment in //build/config/BUILDCONFIG.gn for details on this pattern.
- forward_variables_from(invoker, [ "visibility" ])
- forward_variables_from(invoker,
- "*",
- [
- "visibility",
- "_target_type",
- ])
- }
-}
-
-# Declares a resource needed by the fuzzer.
-#
-# Creates a (potentially empty) resource file for use by a `fuzz_target`. Do
-# not use directly; instead, use `fuzz_target` with an associated
-# `fuzz_package` specifying the supported sanitizers.
-#
-# Parameters:
-#
-# fuzz_name (required)
-# [string] Name of the associated `fuzz_target`.
-#
-# resource (required)
-# [string] Base file name of the resource to produce.
-#
-# script (optional)
-# [file] Script that produces the resources. Defaults to
-# //build/fuzzing/gen_fuzzer_resource.py
-#
-# args (optional)
-# [list of strings] Additional arguments to append to the script command
-# line.
-#
-template("_fuzz_resource") {
- assert(defined(invoker.fuzz_name),
- "`fuzz_name` must be defined for $target_name")
- assert(defined(invoker.resource),
- "`resource` must be defined for $target_name")
- action(target_name) {
- if (defined(invoker.script)) {
- script = invoker.script
- } else {
- script = "//build/fuzzing/gen_fuzzer_resource.py"
- }
- output = "${target_gen_dir}/${invoker.fuzz_name}/${invoker.resource}"
- outputs = [
- output,
- ]
- args = [
- "--out",
- rebase_path(output),
- ]
- if (defined(invoker.args)) {
- args += invoker.args
- }
- }
-}
-
-# Defines a fuzz target binary
-#
-# The fuzz_target template is used to create binaries which leverage LLVM's
-# libFuzzer to perform fuzz testing.
-#
-# Parameters
-#
-# options (optional)
-# [list of strings] Each option is of the form "key=value" and indicates
-# command line options that the fuzzer should be invoked with. Valid keys
-# are libFuzzer options (https://llvm.org/docs/LibFuzzer.html#options).
-#
-# dictionary (optional)
-# [file] If specified, a file containing inputs, one per line, that the
-# fuzzer will use to generate new mutations.
-#
-# corpora (optional)
-# [list of strings] One or more locations from which to get a fuzzing
-# corpus, e.g. a project path to a directory of artifacts, a project
-# path to a CIPD ensure file, or a GCS URL.
-#
-# sources (optional)
-# [list of files] The C++ sources required to build the fuzzer binary. With
-# the exception of the "zircon_fuzzers" targets, this list must be present
-# and include a file defining `LLVMFuzzerTestOneInput`. It will typically
-# be a single file (with deps including the software under test).
-#
-template("fuzz_target") {
- assert(defined(invoker.sources), "`sources` must be defined for $target_name")
- _fuzzed_executable(target_name) {
- forward_variables_from(invoker,
- "*",
- [
- "corpora",
- "dictionary",
- "options",
- "output_name",
- ])
- testonly = true
- }
-
- # The following rules ensure the fuzzer resources are present (even if empty)
- # and in known locations. This is needed as the fuzz_package has no way of
- # knowing the original file names when building the package manifest. These
- # files only need to be written once, so only do it in the base toolchain.
- if (current_toolchain == toolchain_variant.base) {
- fuzz_name = target_name
-
- # Copy the corpora available for the fuzzer
- _fuzz_resource("${fuzz_name}_corpora") {
- resource = "corpora"
- if (defined(invoker.corpora)) {
- args = invoker.corpora
- }
- }
-
- # Copy the fuzzer dictionary
- _fuzz_resource("${fuzz_name}_dictionary") {
- resource = "dictionary"
- if (defined(invoker.dictionary)) {
- args = read_file(invoker.dictionary, "list lines")
- }
- }
-
- # Copy the options the fuzzer should be invoked with
- _fuzz_resource("${fuzz_name}_options") {
- resource = "options"
- if (defined(invoker.options)) {
- args = invoker.options
- }
- }
-
- # Create a component manifest
- _fuzz_resource("${fuzz_name}_cmx") {
- script = "//build/fuzzing/gen_fuzzer_manifest.py"
- resource = "${fuzz_name}.cmx"
- args = [
- "--bin",
- "${fuzz_name}",
- ]
- if (defined(invoker.cmx)) {
- args += [
- "--cmx",
- rebase_path(invoker.cmx),
- ]
- }
- }
- } else {
- not_needed(invoker, "*")
- }
-}
-
-set_defaults("fuzz_target") {
- configs = default_executable_configs +
- [ "//build/fuzzing:fuzzing_build_mode_unsafe_for_production" ]
-}
-
-# Defines a package of fuzz target binaries
-#
-# The fuzz_package template is used to bundle several fuzz_targets and their
-# associated data into a single Fuchsia package.
-#
-# Parameters
-#
-# targets (required)
-# [list of labels] The fuzz_target() targets to include in this package.
-#
-# sanitizers (required)
-# [list of variants] A set of sanitizer variants. The resulting package
-# will contain binaries for each sanitizer/target combination.
-#
-# binaries (optional)
-# data_deps (optional)
-# deps (optional)
-# public_deps (optional)
-# extra (optional)
-# loadable_modules (optional)
-# meta (optional)
-# resources (optional)
-# Passed through to the normal package template.
-#
-# fuzz_host (optional)
-# [boolean] Indicates whether to also build fuzzer binaries on host.
-# Defaults to false.
-#
-# omit_binaries (optional)
-# [bool] If true, indicates the fuzz target binaries will be provided by
-# a non-GN build, e.g. the Zircon build. The package will contain the
-# resources needed by the fuzzer, but no binaries or component manifests.
-# Defaults to false.
-#
-template("fuzz_package") {
- assert(defined(invoker.targets), "targets must be defined for $target_name}")
- assert(defined(invoker.sanitizers),
- "sanitizers must be defined for $target_name")
-
- # Only assemble the package once; handle the specific sanitizers in the loop below
- if (current_toolchain == toolchain_variant.base) {
- fuzz = {
- binaries = []
- deps = []
- resources = []
- meta = []
- host = false
- host_binaries = []
- omit_binaries = false
- forward_variables_from(invoker,
- [
- "binaries",
- "data_deps",
- "deps",
- "public_deps",
- "extra",
- "loadable_modules",
- "meta",
- "resources",
- "targets",
- "sanitizers",
- ])
- }
- if (defined(invoker.fuzz_host)) {
- fuzz.host = invoker.fuzz_host
- }
- if (defined(invoker.omit_binaries)) {
- fuzz.omit_binaries = invoker.omit_binaries
- }
-
- # It's possible (although unusual) that targets could be empty, e.g. a placeholder package
- if (fuzz.targets == []) {
- not_needed(fuzz, [ "sanitizers" ])
- }
-
- foreach(fuzz_target, fuzz.targets) {
- fuzz_name = get_label_info(fuzz_target, "name")
-
- # Find the executable variant for the sanitized fuzzer
- selected = false
- sanitized_target = ""
- host_target = ""
- foreach(sanitizer, fuzz.sanitizers) {
- if (!selected) {
- foreach(selector, select_variant_canonical) {
- if (selector.variant == "${sanitizer}-fuzzer") {
- if (defined(selector.target_type)) {
- selector_target_type = []
- selector_target_type = selector.target_type
- if (selector_target_type[0] == "fuzzed_executable") {
- selected = true
- }
- }
- if (defined(selector.name)) {
- selector_name = []
- selector_name = selector.name
- if (selector_name[0] == fuzz_name) {
- selected = true
- }
- }
- if (defined(selector.output_name)) {
- selector_output_name = []
- selector_output_name = selector.output_name
- if (selector_output_name[0] == fuzz_name) {
- selected = true
- }
- }
- if (selected) {
- sanitized_target = "${fuzz_target}(${toolchain_variant.base}-${sanitizer}-fuzzer)"
- host_target =
- "${fuzz_target}(${host_toolchain}-${sanitizer}-fuzzer)"
- }
- }
- }
- }
- }
-
- # If enabled, add fuzz target to package
- if (sanitized_target != "") {
- fuzz_label = get_label_info(sanitized_target, "label_no_toolchain")
- fuzz_gen_dir =
- get_label_info(fuzz_target, "target_gen_dir") + "/${fuzz_name}"
-
- if (!fuzz.omit_binaries) {
- fuzz.deps += [ sanitized_target ]
- fuzz_out_dir = get_label_info(sanitized_target, "root_out_dir")
- fuzz.binaries += [
- {
- name = fuzz_name
- source = "${fuzz_out_dir}/${fuzz_name}"
- dest = fuzz_name
- },
- ]
-
- fuzz.deps += [ "${fuzz_label}_cmx(${toolchain_variant.base})" ]
- fuzz.meta += [
- {
- path = "${fuzz_gen_dir}/${fuzz_name}.cmx"
- dest = "${fuzz_name}.cmx"
- },
- ]
-
- fuzz.host_binaries += [ "$host_target" ]
- }
-
- fuzz.deps += [
- "${fuzz_label}_corpora(${toolchain_variant.base})",
- "${fuzz_label}_dictionary(${toolchain_variant.base})",
- "${fuzz_label}_options(${toolchain_variant.base})",
- ]
- fuzz.resources += [
- {
- path = "${fuzz_gen_dir}/corpora"
- dest = "${fuzz_name}/corpora"
- },
- {
- path = "${fuzz_gen_dir}/dictionary"
- dest = "${fuzz_name}/dictionary"
- },
- {
- path = "${fuzz_gen_dir}/options"
- dest = "${fuzz_name}/options"
- },
- ]
- } else {
- not_needed([
- "fuzz_name",
- "host_target",
- ])
- not_needed(fuzz, "*")
- }
- }
-
- group("host_${target_name}") {
- testonly = true
- if (fuzz.host) {
- deps = fuzz.host_binaries
- }
- }
-
- # Build the actual package
- package(target_name) {
- testonly = true
- forward_variables_from(fuzz,
- "*",
- [
- "targets",
- "sanitizers",
- "host",
- "host_binaries",
- "omit_binaries",
- ])
- }
- } else {
- not_needed(invoker, "*")
- }
-}
diff --git a/fuzzing/gen_fuzzer_manifest.py b/fuzzing/gen_fuzzer_manifest.py
deleted file mode 100755
index 5812273..0000000
--- a/fuzzing/gen_fuzzer_manifest.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import sys
-from collections import defaultdict
-
-
-def main():
- parser = argparse.ArgumentParser("Creates a component manifest for a fuzzer")
- parser.add_argument("--out", help="Path to the output file", required=True)
- parser.add_argument(
- "--bin", help="Package relative path to the binary", required=True)
- parser.add_argument("--cmx", help="Optional starting manifest")
- args = parser.parse_args()
-
- cmx = defaultdict(dict)
- if args.cmx:
- with open(args.cmx, "r") as f:
- cmx = json.load(f)
-
- cmx["program"]["binary"] = "bin/" + args.bin
-
- if "services" not in cmx["sandbox"]:
- cmx["sandbox"]["services"] = []
- cmx["sandbox"]["services"].append("fuchsia.process.Launcher")
-
- if "features" not in cmx["sandbox"]:
- cmx["sandbox"]["features"] = []
- if "persistent-storage" not in cmx["sandbox"]["features"]:
- cmx["sandbox"]["features"].append("persistent-storage")
-
- with open(args.out, "w") as f:
- f.write(json.dumps(cmx, sort_keys=True, indent=4))
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/fuzzing/gen_fuzzer_resource.py b/fuzzing/gen_fuzzer_resource.py
deleted file mode 100755
index 4820ebc..0000000
--- a/fuzzing/gen_fuzzer_resource.py
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import sys
-
-def main():
- parser = argparse.ArgumentParser("Creates a resource file for a fuzzer")
- parser.add_argument("--out", help="Path to the output file", required=True)
- args, extra = parser.parse_known_args()
-
- with open(args.out, "w") as f:
- for item in extra:
- f.write(item)
- f.write("\n")
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
deleted file mode 100644
index 678bcaa..0000000
--- a/gn/BUILD.gn
+++ /dev/null
@@ -1,233 +0,0 @@
-# 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.
-
-import("//build/compiled_action.gni")
-import("//build/config/fuchsia/zircon.gni")
-import("//build/gn/packages.gni")
-import("//build/package.gni")
-import("//build/testing/platforms.gni")
-import("//build/toolchain/goma.gni")
-
-# Permit dependencies on testonly targets from packages.
-testonly = true
-
-group("packages") {
- deps = available_packages
- data_deps = package_data_deps
-}
-
-group("default") {
- deps = [
- ":host_tests",
- ":packages",
- ]
- if (preinstall_packages != [] || monolith_packages != []) {
- deps += [ "//build/images" ]
- }
- if (available_packages != []) {
- deps += [ "//build/images:updates" ]
- }
-}
-
-# Instantiate the packages synthesized from the build argument.
-foreach(pkg, synthesize_packages) {
- package(pkg.name) {
- forward_variables_from(pkg, "*", [ "name" ])
- }
-}
-
-# Copy host test binaries to $root_build_dir/host_tests.
-# TODO(IN-819): Delete this copy target once host tests are no longer run out
-# of a single directory.
-if (package_host_tests != []) {
- copy("host_tests") {
- deps = []
- sources = []
- bindir = get_label_info("//anything($host_toolchain)", "root_out_dir")
-
- # package_host_tests may contain duplicate entries. Those entries must be
- # de-duplicated here to avoid output collisions.
- foreach(label, package_host_tests) {
- _full_label = "$label($host_toolchain)"
- deps += [ _full_label ]
- binary = get_label_info(label, "name")
- sources += [ "$bindir/$binary" ]
- }
-
- outputs = [
- "$root_build_dir/host_tests/{{source_file_part}}",
- ]
- }
-} else {
- group("host_tests") {
- }
-}
-
-# Write a JSON metadata file about the host tests in the build.
-host_tests = []
-foreach(label, package_host_tests) {
- host_label = "$label($host_toolchain)"
- host_tests += [
- {
- dir = get_label_info(host_label, "dir")
- name = get_label_info(host_label, "name")
- build_dir = rebase_path(get_label_info(host_label, "target_out_dir"),
- root_build_dir)
- },
- ]
-}
-write_file("$root_build_dir/host_tests.json", host_tests, "json")
-
-# Collect the source files that are dependencies of the create_gn_rules.py
-# script, below. Unfortunately, exec_script cannot use a depfile produced
-# by the script and only supports a separately computed list of dependencies.
-zircon_files =
- exec_script("//build/zircon/list_source_files.py", [], "list lines")
-
-supporting_templates = [
- "//build/zircon/boards.mako",
- "//build/zircon/header.mako",
- "//build/zircon/host_tool.mako",
- "//build/zircon/main.mako",
- "//build/zircon/shared_library.mako",
- "//build/zircon/source_library.mako",
- "//build/zircon/static_library.mako",
- "//build/zircon/sysroot.mako",
-]
-
-# The following script generates GN build files for Zircon objects. It is
-# placed before everything else so that //zircon targets are available in
-# due time. See //build/zircon/README.md for more details.
-exec_script("//build/zircon/create_gn_rules.py",
- [
- "--out",
- rebase_path("//zircon/public"),
- "--staging",
- rebase_path("$root_out_dir/zircon-gn"),
- "--zircon-user-build",
- rebase_path(zircon_build_abi_dir),
- "--zircon-tool-build",
- rebase_path("$zircon_tools_dir/.."),
- "--make",
- zircon_make_path,
- ],
- "",
- zircon_files + supporting_templates)
-
-# Write a file that can be sourced by `fx`. This file is produced
-# by `gn gen` and is not known to Ninja at all, so it has nothing to
-# do with the build itself. Its sole purpose is to leave bread
-# crumbs about the settings `gn gen` used for `fx` to use later.
-_relative_build_dir = rebase_path(root_build_dir, "//", "//")
-_fx_config_lines = [
- "# Generated by `gn gen`.",
- "FUCHSIA_BUILD_DIR='${_relative_build_dir}'",
- "FUCHSIA_ARCH='${target_cpu}'",
-]
-if (use_goma) {
- _fx_config_lines += [
- "# This will affect Zircon's make via //scripts/build-zircon.sh.",
- "export GOMACC='${goma_dir}/gomacc'",
- ]
-}
-_fx_build_zircon_args = ""
-if (zircon_use_asan) {
- _fx_build_zircon_args += " -A"
-}
-foreach(selector, select_variant) {
- if (selector == "host_asan") {
- _fx_build_zircon_args += " -H"
- }
-}
-if (_fx_build_zircon_args != "") {
- _fx_config_lines += [ "FUCHSIA_BUILD_ZIRCON_ARGS=($_fx_build_zircon_args)" ]
-}
-write_file("$root_build_dir/fx.config", _fx_config_lines)
-
-# Generates breakpad symbol data for unstripped binaries.
-#
-# This symbol data is consumed by infrastructure tools and uploaded to Crash
-# servers to enable crash reporting. These files are uniquely important for
-# release builds and this step may take a few minutes to complete, so it is
-# not recommended that this be included in the default build.
-action("breakpad_symbols") {
- testonly = true
- script = "//buildtools/${host_platform}/dump_breakpad_symbols"
-
- deps = [
- "//build/images:ids.txt",
- ]
-
- inputs = [
- "//buildtools/${host_platform}/dump_syms/dump_syms",
- ]
- sources = [
- "$root_out_dir/ids.txt",
- ]
-
- # This action generates a single xxx.sym file for each binary in the ids file
- # and produces an archived output of them all.
- outputs = [
- "$root_out_dir/breakpad_symbols/breakpad_symbols.tar.gz",
- ]
-
- depfile = "${outputs[0]}.d"
-
- args = [
- "-out-dir",
- rebase_path("$root_out_dir/breakpad_symbols"),
- "-dump-syms-path",
- rebase_path("//buildtools/${host_platform}/dump_syms/dump_syms"),
- "-depfile",
- rebase_path(depfile, root_build_dir),
- "-tar-file",
- rebase_path(outputs[0], root_build_dir),
- ] + rebase_path(sources, root_build_dir)
-}
-
-# Generates an archive of package metadata.
-amber_files = rebase_path("$root_build_dir/amber-files")
-host_out_dir = get_label_info("//anything($host_toolchain)", "root_out_dir")
-pm_tool = rebase_path("$host_out_dir/pm")
-pkg_archive_contents = [
- "amber-files/repository=$amber_files/repository",
- # TODO(IN-915): this should never contain the root key. In the future, this
- # should contain no keys, once infra is managing key material itself.
- # These keys are consumed by the infra train promote scripts.
- "amber-files/keys=$amber_files/keys",
- "pm=$pm_tool",
-]
-pkg_archive_manifest = "$target_gen_dir/package_archive_manifest"
-write_file(pkg_archive_manifest, pkg_archive_contents)
-
-pkg_archive = "$root_build_dir/packages.tar.gz"
-compiled_action("package_archive") {
- testonly = true
- tool = "//build/tools/tar_maker"
- inputs = [
- pkg_archive_manifest,
- ]
- outputs = [
- pkg_archive,
- ]
- args = [
- "-manifest",
- rebase_path(pkg_archive_manifest),
- "-output",
- rebase_path(pkg_archive),
- ]
- deps = [
- "//build/images:updates",
- ]
-}
-
-# Generates a JSON manifest of the platforms available for testing, along with
-# their properties.
-target_platforms = []
-foreach(platform, test_platforms) {
- if (!defined(platform.cpu) || platform.cpu == current_cpu) {
- target_platforms += [ platform ]
- }
-}
-write_file("$root_build_dir/platforms.json", target_platforms, "json")
diff --git a/gn/check-layer-dependencies.py b/gn/check-layer-dependencies.py
deleted file mode 100755
index 8d40019..0000000
--- a/gn/check-layer-dependencies.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import os
-import subprocess
-import sys
-
-FUCHSIA_ROOT = os.path.dirname( # $root
- os.path.dirname( # build
- os.path.dirname( # gn
- os.path.abspath(__file__))))
-GN = os.path.join(FUCHSIA_ROOT, "buildtools", "gn")
-
-# The layers of the Fuchsia cake
-# Note that these must remain ordered by increasing proximity to the silicon.
-LAYERS = [
- 'topaz',
- 'peridot',
- 'garnet',
- 'zircon',
-]
-
-def main():
- parser = argparse.ArgumentParser('check-layer-dependencies',
- formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser.add_argument('--layer',
- help='[required] Name of the layer to inspect',
- choices=LAYERS)
- parser.add_argument('--out',
- help='Build output directory',
- default='out/debug-x64')
- args = parser.parse_args()
- layer = args.layer
- out = args.out
- if not layer:
- parser.print_help()
- return 1
-
- layer_index = LAYERS.index(layer)
- create_labels = lambda layers: list(map(lambda l: '//%s' % l, layers))
- upper_layers = create_labels(LAYERS[0:layer_index])
- lower_layers = create_labels(LAYERS[layer_index:])
- public_labels = subprocess.check_output(
- [GN, 'ls', out, '//%s/public/*' % layer]).splitlines()
- is_valid = True
-
- for label in public_labels:
- deps = subprocess.check_output(
- [GN, 'desc', out, label, 'deps']).splitlines()
- for dep in deps:
- # We should never depend on upper layers.
- for upper_layer in upper_layers:
- if dep.startswith(upper_layer):
- is_valid = False
- print('Upper layer violation')
- print(' Label %s' % label)
- print(' Dep %s' % dep)
- # If we depend on the same layer or a layer below, that dependency
- # should be located in its layer's public directory.
- for lower_layer in lower_layers:
- if (dep.startswith(lower_layer)
- and not dep.startswith('%s/public' % lower_layer)):
- is_valid = False
- print('Lower layer violation')
- print(' Label %s' % label)
- print(' Dep %s' % dep)
- return 0 if is_valid else 1
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/gn/dotfile.gn b/gn/dotfile.gn
deleted file mode 100644
index 4eec209..0000000
--- a/gn/dotfile.gn
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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 lives at //build/gn/dotfile.gn for maintenance purposes.
-# It's actually used by GN via a symlink at //.gn, which is installed
-# by a jiri hook. 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/"
-
-# The source root location.
-root = "//build/gn"
-
-# The executable used to execute scripts in action and exec_script.
-script_executable = "/usr/bin/env"
-
-# These arguments override the default values for items in a declare_args
-# block. "gn args" in turn can override these.
-default_args = {
- # Disable Skia settings not needed for host builds.
- skia_enable_flutter_defines = true
- skia_enable_pdf = false
- skia_use_dng_sdk = false
- skia_use_expat = false
- skia_use_fontconfig = false
- skia_use_libwebp = false
- skia_use_sfntly = false
- skia_use_x11 = false
-}
-
-# Enable checking for the layers.
-check_targets = [
- "//garnet/*",
- "//peridot/*",
- "//topaz/*",
- "//vendor/*",
- "//zircon/*",
-]
diff --git a/gn/gen_persistent_log_config.py b/gn/gen_persistent_log_config.py
deleted file mode 100755
index 198c518..0000000
--- a/gn/gen_persistent_log_config.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser('Generate a sysmgr config to persist logs')
- parser.add_argument('name', help='Name of the config')
- parser.add_argument('path', help='Path to the package file')
- parser.add_argument('--tags', help='Tag to filter for', nargs='+')
- parser.add_argument('--ignore-tags', help='Tag to ignore', nargs='+')
- parser.add_argument('--file-capacity', help='max allowed disk usage',
- type=int)
- args = parser.parse_args()
-
- tag_args = []
- if args.tags:
- for t in args.tags:
- tag_args += [ '--tag', t ]
-
- ignore_tag_args = []
- if args.ignore_tags:
- for t in args.ignore_tags:
- ignore_tag_args += [ '--ignore-tag', t ]
-
- file_cap_args = []
- if args.file_capacity != None:
- file_cap_args = [ '--file_capacity', str(args.file_capacity) ]
-
- with open(args.path, 'w') as f:
- json.dump({'apps':[["fuchsia-pkg://fuchsia.com/log_listener#meta/log_listener.cmx", "--file", "/data/logs."+args.name] +
- file_cap_args + tag_args + ignore_tag_args] }, f)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/gn/guess_layer.py b/gn/guess_layer.py
deleted file mode 100755
index 70b1b74..0000000
--- a/gn/guess_layer.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-# TOOD(TO-908): This script should be replaced with a jiri feature:
-# `jiri import -json-output` to yield imports in some JSON schema.
-# That could be parsed directly from GN.
-
-from __future__ import absolute_import
-from __future__ import print_function
-
-import argparse
-import os
-import re
-import sys
-import xml.etree.ElementTree
-
-
-LAYERS_RE = re.compile('^(garnet|peridot|topaz|vendor/.*)$')
-
-
-# Returns True iff LAYERS_RE matches name.
-def print_if_layer_name(name):
- if LAYERS_RE.match(name):
- print(name)
- return True
- return False
-
-
-def main():
- parser = argparse.ArgumentParser(
- description='Guess the current cake layer from the Jiri manifest file',
- formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser.add_argument(
- 'manifest', type=argparse.FileType('r'), nargs='?',
- default=os.path.normpath(
- os.path.join(os.path.dirname(__file__),
- os.path.pardir, os.path.pardir, '.jiri_manifest')))
- args = parser.parse_args()
-
- tree = xml.etree.ElementTree.parse(args.manifest)
-
- if tree.find('overrides') is None:
- sys.stderr.write('found no overrides. guessing project from imports\n')
- for elt in tree.iter('import'):
- # manifest can be something like garnet/garnet in which case we want
- # garnet or internal/vendor/foo/bar in which case we want vendor/foo.
- head, name = os.path.split(elt.attrib['manifest'])
- if 'vendor/' in head:
- head, name = os.path.split(head)
- name = os.path.join('vendor', name)
- if print_if_layer_name(name):
- return 0
-
- # Guess the layer from the name of the <project> that is overriden in the
- # current manifest.
- for elt in tree.iter('overrides'):
- for project in elt.findall('project'):
- if print_if_layer_name(project.attrib.get('name', '')):
- return 0
-
- sys.stderr.write("ERROR: Could not guess petal from %s. "
- "Ensure 'boards' and either 'products' or 'packages' is set.\n"
- % args.manifest.name)
-
- return 2
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/gn/packages.gni b/gn/packages.gni
deleted file mode 100644
index ebc715f..0000000
--- a/gn/packages.gni
+++ /dev/null
@@ -1,148 +0,0 @@
-# Copyright 2017 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.
-
-declare_args() {
- # If a package is referenced in monolith and in preinstall, monolith takes
- # priority, and the package will be added to OTA images as part of the
- # verified boot set of static packages.
-
- # These arguments should be set by the product definition gni file.
-
- # a list of packages included in OTA images, base system images, and the
- # distribution repository.
- monolith = []
-
- # a list of packages pre-installed on the system (also added to the
- # distribution repository)
- preinstall = []
-
- # a list of packages only added to the distribution repository)
- available = []
-
- # These arguments should be set by the board definition gni file.
-
- # A list of packages included in the monolith from the board definition.
- # This list is appended with the list from the product definition and any
- # additional specified packages
- board_packages = []
-
- # List of packages (a GN list of strings).
- # This list of packages is currently added to the set of "monolith" packages,
- # see `products` for more information; in the future, these packages will be
- # added to the "preinstall".
- # If unset, layer will be guessed using //.jiri_manifest and
- # //{layer}/products/default.gni will be used.
- fuchsia_packages = []
-
- # Legacy product definitions.
- fuchsia_products = []
-
- # List of extra packages to synthesize on the fly. This is only for
- # things that do not appear normally in the source tree. Synthesized
- # packages can contain build artifacts only if they already exist in some
- # part of the build. They can contain arbitrary verbatim files.
- # Synthesized packages can't express dependencies on other packages.
- #
- # Each element of this list is a scope that is very much like the body of
- # a package() template invocation (see //build/package.gni). That scope
- # must set `name` to the string naming the package, as would be the name
- # in the package() target written in a GN file. This must be unique
- # among all package names.
- synthesize_packages = []
-}
-
-monolith += board_packages
-monolith += fuchsia_packages
-
-# Print a warning message if the legacy fuchsia_products field is set.
-# Only print in the default toolchain so the warning only shows up once.
-if (fuchsia_products != [] && current_toolchain == default_toolchain) {
- print("WARNING! Deprecated fuchsia product specification detected")
- print("Please re-run 'fx set' to update your build configuration")
- print("See https://fuchsia.googlesource.com/docs/+/master/development/build/")
- print("or BLD-240 for more details")
-}
-
-if (monolith == [] && preinstall == [] && available == [] &&
- fuchsia_packages == []) {
- _jiri_manifest = "//.jiri_manifest"
- _layers = exec_script("//build/gn/guess_layer.py",
- [ rebase_path(_jiri_manifest) ],
- "list lines",
- [ _jiri_manifest ])
- foreach(layer, _layers) {
- import("//$layer/products/default.gni")
- }
-}
-
-# Resolve all the `fuchsia_products` JSON files and their dependencies
-# into lists of GN labels:
-# monolith - package labels for base system and verified boot image
-# preinstall - package labels for preinstall, but not OTA
-# available - package labels for the install and update repository
-# host_tests - labels for host tests
-# data_deps - labels for host tools and non-package build targets
-_preprocessed_products = exec_script("preprocess_products.py",
- [
- # A list of strings in GN syntax is
- # valid JSON too.
- "--monolith=$monolith",
- "--preinstall=$preinstall",
- "--available=$available",
- "--legacy-products=$fuchsia_products",
- ],
- "json")
-
-# Tell GN that the files preprocess_products.py ran are inputs to the
-# generation step, by declaring them as file inputs to a (silly) exec_script
-# invocation.
-exec_script("/bin/sh",
- [
- "-c",
- ":",
- ],
- "",
- _preprocessed_products.files_read)
-
-monolith_packages = []
-foreach(pkg, _preprocessed_products.monolith) {
- monolith_packages += [ get_label_info(pkg, "label_no_toolchain") ]
-}
-preinstall_packages = []
-foreach(pkg, _preprocessed_products.preinstall) {
- preinstall_packages += [ get_label_info(pkg, "label_no_toolchain") ]
-}
-available_packages = []
-foreach(pkg, _preprocessed_products.available) {
- available_packages += [ get_label_info(pkg, "label_no_toolchain") ]
-}
-
-# Every extra GN target the package JSON requests be built on the side.
-# This is for things like install_host_tools() targets whose output should
-# be on hand for a developer to use in conjuction with a Fuchsia package.
-package_data_deps = []
-foreach(pkg, _preprocessed_products.data_deps) {
- package_data_deps += [ get_label_info(pkg, "label_no_toolchain") ]
-}
-
-# Labels of test() targets to be copied into $root_build_dir/host_tests.
-package_host_tests = []
-foreach(label, _preprocessed_products.host_tests) {
- package_host_tests += [ get_label_info(label, "label_no_toolchain") ]
-}
-
-# Synthesized packages are instantiated in //build/gn/BUILD.gn,
-# so the package() target is //build/gn:package_name.
-_synthesized_packages = []
-foreach(pkg, synthesize_packages) {
- pkg = "//build/gn:${pkg.name}"
- _synthesized_packages += [ get_label_info(pkg, "label_no_toolchain") ]
-}
-
-# Note: currently the infrastructure recipes require infra synthesized
-# packages to become members of the monolith set. The +,-,+ dance is to ensure
-# the list contains no duplicates.
-monolith_packages += _synthesized_packages
-monolith_packages -= _synthesized_packages
-monolith_packages += _synthesized_packages
diff --git a/gn/paths.py b/gn/paths.py
deleted file mode 100644
index a50d9eb..0000000
--- a/gn/paths.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env python
-# 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.
-
-import os
-import platform
-
-SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
-FUCHSIA_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir))
-GN_PATH = os.path.join(FUCHSIA_ROOT, "buildtools", "gn")
-BUILDTOOLS_PATH = os.path.join(FUCHSIA_ROOT, "buildtools", '%s-%s' % (
- platform.system().lower().replace('darwin', 'mac'),
- {
- 'x86_64': 'x64',
- 'aarch64': 'arm64',
- }[platform.machine()],
-))
-DEBUG_OUT_DIR = os.path.join(FUCHSIA_ROOT, "out", "debug-x64")
-RELEASE_OUT_DIR = os.path.join(FUCHSIA_ROOT, "out", "release-x64")
-
-_BUILD_TOOLS = {}
-
-def build_tool(package, tool):
- """Return the full path of TOOL binary in PACKAGE.
-
- This will raise an assertion failure if the binary doesn't exist.
- This function memoizes its results, so there's not much need to
- cache its results in calling code.
- """
-
- path = _BUILD_TOOLS.get((package, tool))
- if path is None:
- path = os.path.join(BUILDTOOLS_PATH, package, 'bin', tool)
- assert os.path.exists(path), "No '%s' tool in '%s'" % (tool, package)
- _BUILD_TOOLS[package, tool] = path
- return path
diff --git a/gn/prepreprocess_build_packages.py b/gn/prepreprocess_build_packages.py
deleted file mode 100755
index 287efa3..0000000
--- a/gn/prepreprocess_build_packages.py
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import json
-import os.path
-import paths
-import sys
-
-
-class PackageImportsResolver:
- """Recursively resolves imports in build packages. See
- https://fuchsia.googlesource.com/docs/+/master/development/build/packages.md
- for more information about build packages.
-
- An observer may be used to perform additional work whenever an
- import is resolved. This observer needs to implement a method with this
- signature:
-
- def import_resolved(self, config, config_path)
-
- where config is the JSON file representing the build package.
-
- If there was an error reading some of the input files, `None` will be
- returned.
- """
-
- def __init__(self, observer=None):
- self.observer = observer
- self._errored = False
-
- def resolve(self, imports):
- return self.resolve_imports(imports)
-
- def errored(self):
- return self._errored
-
- def resolve_imports(self, import_queue):
-
- def detect_duplicate_keys(pairs):
- keys = set()
- result = {}
- for k, v in pairs:
- if k in keys:
- raise Exception("Duplicate key %s" % k)
- keys.add(k)
- result[k] = v
- return result
-
- imported = set(import_queue)
- while import_queue:
- config_name = import_queue.pop()
- config_path = os.path.join(paths.FUCHSIA_ROOT, config_name)
- try:
- with open(config_path) as f:
- try:
- config = json.load(f,
- object_pairs_hook=detect_duplicate_keys)
- self.observer.import_resolved(config, config_path)
- for i in config.get("imports", []):
- if i not in imported:
- import_queue.append(i)
- imported.add(i)
- except Exception as e:
- import traceback
- traceback.print_exc()
- sys.stderr.write(
- "Failed to parse config %s, error %s\n" %
- (config_path, str(e)))
- self._errored = True
- return None
- except IOError, e:
- self._errored = True
- sys.stderr.write("Failed to read package '%s' from '%s'.\n" %
- (config_name, config_path))
- if "/" not in config_name:
- sys.stderr.write("""
-Package names are relative to the root of the source tree but the requested
-path did not contain a '/'. Did you mean 'build/gn/%s' instead?
- """ % config_name)
- return None
- return imported
-
-
-class PackageLabelObserver:
- def __init__(self):
- self.json_result = {
- 'targets': [],
- 'data_deps': [],
- 'host_tests': [],
- 'files_read': [],
- }
-
- def import_resolved(self, config, config_path):
- self.json_result['targets'] += config.get('packages', [])
- self.json_result['data_deps'] += config.get('labels', [])
- self.json_result['host_tests'] += config.get('host_tests', [])
- self.json_result['files_read'].append(config_path)
-
-
-def main():
- parser = argparse.ArgumentParser(description='''
-Determine labels and Fuchsia packages included in the current build.
-''')
- parser.add_argument('--packages',
- help='JSON list of packages',
- required=True)
- args = parser.parse_args()
-
- observer = PackageLabelObserver()
- imports_resolver = PackageImportsResolver(observer)
- imported = imports_resolver.resolve_imports(json.loads(args.packages))
-
- if imported == None:
- return 1
-
- json.dump(observer.json_result, sys.stdout, sort_keys=True)
-
- return 0
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/gn/preprocess_products.py b/gn/preprocess_products.py
deleted file mode 100755
index 57297fc..0000000
--- a/gn/preprocess_products.py
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os.path
-import paths
-import sys
-from prepreprocess_build_packages import PackageImportsResolver, PackageLabelObserver
-
-def parse_product(product, build_packages):
- """
- product - a path to a JSON product file to parse
- build_packages - a dict that collects merged sets
- """
- product = os.path.join(paths.FUCHSIA_ROOT, product)
- build_packages["files_read"].add(product)
-
- with open(product) as f:
- for k, v in json.load(f).items():
- if k == "monolith":
- build_packages[k].update(v)
- continue
- if k == "preinstall":
- build_packages[k].update(v)
- continue
- if k == "available":
- build_packages[k].update(v)
- continue
- sys.stderr.write("Invalid product key in %s: %s\n" % (product, k))
-
-
-def preprocess_packages(packages):
- observer = PackageLabelObserver()
- imports_resolver = PackageImportsResolver(observer)
- imported = imports_resolver.resolve_imports(packages)
-
- if imports_resolver.errored():
- raise ImportError
-
- if imported == None:
- return None
-
- return observer.json_result
-
-
-def main():
- parser = argparse.ArgumentParser(description="""
-Merge a list of product definitions to unique lists of GN labels:
-
-monolith - the list of packages included in the base system images
-preinstall - the list of packages preinstall, but not part of OTA
-available - the list of packages installable and updatable
-host_tests - host tests collected from all above package sets
-data_deps - additional labels to build, such as host tools
-files_read - a list of files used to compute all of the above
-""")
- parser.add_argument("--monolith",
- help="List of package definitions for the monolith",
- required=True)
- parser.add_argument("--preinstall",
- help="List of package definitions for preinstalled packages",
- required=True)
- parser.add_argument("--available",
- help="List of package definitions for available packages",
- required=True)
- parser.add_argument("--legacy-products",
- help="List of legacy product definitions",
- required=False)
- args = parser.parse_args()
-
- build_packages = {
- "monolith": set(),
- "preinstall": set(),
- "available": set(),
- "files_read": set(),
- }
-
-
- # Parse monolith, preinstall, and available sets.
- build_packages["monolith"].update(json.loads(args.monolith))
- build_packages["preinstall"].update(json.loads(args.preinstall))
- build_packages["available"].update(json.loads(args.available))
-
- # Merge in the legacy product configurations, if set
- [parse_product(product, build_packages) for product in
- json.loads(args.legacy_products)]
-
- try:
- monolith_results = preprocess_packages(list(build_packages["monolith"]))
- preinstall_results = preprocess_packages(list(build_packages["preinstall"]))
- available_results = preprocess_packages(list(build_packages["available"]))
- except ImportError:
- return 1
-
- host_tests = set()
- data_deps = set()
- for res in (monolith_results, preinstall_results, available_results):
- if res is None:
- continue
- if res["host_tests"]:
- host_tests.update(res["host_tests"])
- if res["data_deps"]:
- data_deps.update(res["data_deps"])
- if res["files_read"]:
- build_packages["files_read"].update(res["files_read"])
-
- monolith_targets = set(monolith_results["targets"] if monolith_results else ())
- preinstall_targets = set(preinstall_results["targets"] if preinstall_results else ())
- available_targets = set(available_results["targets"] if available_results else ())
-
- # preinstall_targets must not include monolith targets
- preinstall_targets -= monolith_targets
-
- # available_targets must include monolith and preinstall targets
- available_targets |= monolith_targets | preinstall_targets
-
- print(json.dumps({
- "monolith": list(monolith_targets),
- "preinstall": list(preinstall_targets),
- "available": list(available_targets),
- "host_tests": list(host_tests),
- "data_deps": list(data_deps),
- "files_read": list(build_packages["files_read"]),
- }))
-
- return 0
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/gn/write_package_json.py b/gn/write_package_json.py
deleted file mode 100755
index 7f90a5d..0000000
--- a/gn/write_package_json.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser('Write a package file')
- parser.add_argument('--name', help='Package name', required=True)
- parser.add_argument('--version', help='Package version', required=True)
- parser.add_argument('path', help='Path to the package file')
- args = parser.parse_args()
-
- with open(args.path, 'w') as f:
- json.dump({'name': args.name, 'version': args.version}, f)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/gn_helpers.py b/gn_helpers.py
deleted file mode 100644
index 1beee6f..0000000
--- a/gn_helpers.py
+++ /dev/null
@@ -1,351 +0,0 @@
-# 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.
-
-"""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/gn_run_binary.sh b/gn_run_binary.sh
deleted file mode 100755
index ae932cc..0000000
--- a/gn_run_binary.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-# Helper script to run an arbitrary binary produced by the current build.
-# The first argument is the bin directory of the toolchain, where
-# llvm-symbolizer can be found. The second argument is the binary to run,
-# and remaining arguments are passed to that binary.
-
-clang_bindir="$1"
-shift
-
-binary="$1"
-shift
-
-case "$binary" in
-/*) ;;
-*) binary="./$binary" ;;
-esac
-
-# Make sure any sanitizer runtimes that might be included in the binary
-# can find llvm-symbolizer.
-symbolizer="${clang_bindir}/llvm-symbolizer"
-export ASAN_SYMBOLIZER_PATH="$symbolizer"
-export LSAN_SYMBOLIZER_PATH="$symbolizer"
-export MSAN_SYMBOLIZER_PATH="$symbolizer"
-export UBSAN_SYMBOLIZER_PATH="$symbolizer"
-export TSAN_OPTIONS="$TSAN_OPTIONS external_symbolizer_path=$symbolizer"
-
-exec "$binary" ${1+"$@"}
diff --git a/go/BUILD.gn b/go/BUILD.gn
deleted file mode 100644
index a7102d1..0000000
--- a/go/BUILD.gn
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/toolchain/clang_toolchain.gni")
-
-# A toolchain dedicated to processing Go code.
-# The only targets in this toolchain are action() targets, so it
-# has no real tools. But every toolchain needs stamp and copy.
-toolchain("gopher") {
- tool("stamp") {
- command = stamp_command
- description = stamp_description
- }
- tool("copy") {
- command = copy_command
- description = copy_description
- }
-}
diff --git a/go/build.py b/go/build.py
deleted file mode 100755
index e892d3b..0000000
--- a/go/build.py
+++ /dev/null
@@ -1,187 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-# Build script for a Go app.
-
-import argparse
-import os
-import subprocess
-import sys
-import string
-import shutil
-import errno
-
-from gen_library_metadata import get_sources
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--godepfile', help='Path to godepfile tool', required=True)
- parser.add_argument('--root-out-dir', help='Path to root of build output',
- required=True)
- parser.add_argument('--sysroot', help='The sysroot to use',
- required=False)
- parser.add_argument('--depfile', help='The path to the depfile',
- required=True)
- parser.add_argument('--current-cpu', help='Target architecture.',
- choices=['x64', 'arm64'], required=True)
- parser.add_argument('--current-os', help='Target operating system.',
- choices=['fuchsia', 'linux', 'mac', 'win'], required=True)
- parser.add_argument('--go-root', help='The go root to use for builds.', required=True)
- parser.add_argument('--go-cache', help='Cache directory to use for builds.',
- required=False)
- parser.add_argument('--is-test', help='True if the target is a go test',
- default=False)
- parser.add_argument('--go-dep-files',
- help='List of files describing library dependencies',
- nargs='*',
- default=[])
- parser.add_argument('--binname', help='Output file', required=True)
- parser.add_argument('--unstripped-binname', help='Unstripped output file')
- parser.add_argument('--toolchain-prefix', help='Path to toolchain binaries',
- required=False)
- parser.add_argument('--verbose', help='Tell the go tool to be verbose about what it is doing',
- action='store_true')
- parser.add_argument('--package', help='The package name', required=True)
- parser.add_argument('--shared-libs-root', help='Path to the build shared libraries',
- required=False)
- parser.add_argument('--fdio-include', help='Path to the FDIO include directory',
- required=False)
- parser.add_argument('--vet', help='Run go vet',
- action='store_true')
- args = parser.parse_args()
-
- try:
- os.makedirs(args.go_cache)
- except OSError as e:
- if e.errno == errno.EEXIST and os.path.isdir(args.go_cache):
- pass
- else:
- raise
-
- goarch = {
- 'x64': 'amd64',
- 'arm64': 'arm64',
- }[args.current_cpu]
- goos = {
- 'fuchsia': 'fuchsia',
- 'linux': 'linux',
- 'mac': 'darwin',
- 'win': 'windows',
- }[args.current_os]
-
- output_name = os.path.join(args.root_out_dir, args.binname)
- build_id_dir = os.path.join(args.root_out_dir, '.build-id')
- depfile_output = output_name
- if args.unstripped_binname:
- stripped_output_name = output_name
- output_name = os.path.join(args.root_out_dir, 'exe.unstripped',
- args.binname)
-
- # Project path is a package specific gopath, also known as a "project" in go parlance.
- project_path = os.path.join(args.root_out_dir, 'gen', 'gopaths', args.binname)
-
- # Clean up any old project path to avoid leaking old dependencies
- shutil.rmtree(os.path.join(project_path, 'src'), ignore_errors=True)
- os.makedirs(os.path.join(project_path, 'src'))
-
- if args.go_dep_files:
- # Create a gopath for the packages dependency tree
- for dst, src in get_sources(args.go_dep_files).items():
- dstdir = os.path.join(project_path, 'src', os.path.dirname(dst))
- try:
- os.makedirs(dstdir)
- except OSError as e:
- # EEXIST occurs if two gopath entries share the same parent name
- if e.errno != errno.EEXIST:
- raise
- # TODO(BLD-228): the following check might not be necessary anymore.
- tgt = os.path.join(dstdir, os.path.basename(dst))
- # The source tree is effectively read-only once the build begins.
- # Therefore it is an error if tgt is in the source tree. At first
- # glance this may seem impossible, but it can happen if dst is foo/bar
- # and foo is a symlink back to the source tree.
- canon_root_out_dir = os.path.realpath(args.root_out_dir)
- canon_tgt = os.path.realpath(tgt)
- if not canon_tgt.startswith(canon_root_out_dir):
- raise ValueError("Dependency destination not in --root-out-dir: provided=%s, path=%s, realpath=%s" % (dst, tgt, canon_tgt))
- os.symlink(os.path.relpath(src, os.path.dirname(tgt)), tgt)
-
- gopath = os.path.abspath(project_path)
- build_goroot = os.path.abspath(args.go_root)
-
- env = {}
- env['GOARCH'] = goarch
- env['GOOS'] = goos
- env['GOPATH'] = gopath
- # Some users have GOROOT set in their parent environment, which can break
- # things, so it is always set explicitly here.
- env['GOROOT'] = build_goroot
- env['GOCACHE'] = args.go_cache
- env['CGO_CFLAGS'] = "--sysroot=" + args.sysroot
-
- if goos == 'fuchsia':
- env['CGO_ENABLED'] = '1'
- env['CC'] = os.path.join(build_goroot, 'misc', 'fuchsia', 'clangwrap.sh')
-
- # These are used by clangwrap.sh
- env['FUCHSIA_SHARED_LIBS'] = args.shared_libs_root
- env['CLANG_PREFIX'] = args.toolchain_prefix
- env['FDIO_INCLUDE'] = args.fdio_include
- env['ZIRCON_SYSROOT'] = args.sysroot
-
- # /usr/bin:/bin are required for basic things like bash(1) and env(1), but
- # preference the toolchain path. Note that on Mac, ld is also found from
- # /usr/bin.
- env['PATH'] = args.toolchain_prefix + ":/usr/bin:/bin"
-
- go_tool = os.path.join(build_goroot, 'bin/go')
-
- if args.vet:
- retcode = subprocess.call([go_tool, 'vet', args.package], env=env)
- if retcode != 0:
- return retcode
-
- cmd = [go_tool]
- if args.is_test:
- cmd += ['test', '-c']
- else:
- cmd += ['build']
- if args.verbose:
- cmd += ['-x']
- cmd += ['-pkgdir', os.path.join(project_path, 'pkg'), '-o',
- output_name, args.package]
- retcode = subprocess.call(cmd, env=env)
-
- if retcode == 0 and args.unstripped_binname:
- if args.current_os == 'mac':
- retcode = subprocess.call(['xcrun', 'strip', '-x', output_name,
- '-o', stripped_output_name],
- env=env)
- else:
- retcode = subprocess.call([os.path.join(args.toolchain_prefix,
- 'llvm-objcopy'),
- '--strip-sections',
- '--build-id-link-dir=%s' % build_id_dir,
- '--build-id-link-input=.debug',
- '--build-id-link-output=',
- output_name,
- stripped_output_name],
- env=env)
-
- if retcode == 0:
- if args.depfile is not None:
- with open(args.depfile, "wb") as out:
- godepfile_args = [args.godepfile, '-o', depfile_output]
- if args.is_test:
- godepfile_args += [ '-test']
- godepfile_args += [args.package]
- subprocess.Popen(godepfile_args, stdout=out, env=env)
-
- return retcode
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/go/fidl_go.gni b/go/fidl_go.gni
deleted file mode 100644
index 4fb36fd..0000000
--- a/go/fidl_go.gni
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/go/go_library.gni")
-import("//build/go/toolchain.gni")
-
-# Generates some Go bindings for a FIDL library.
-#
-# The parameters for this template are defined in //build/fidl/fidl.gni. The
-# relevant parameters in this template are:
-# - name.
-
-template("fidl_go") {
- assert(current_toolchain == go_toolchain,
- "This template can only be used in $go_toolchain.")
-
- not_needed(invoker, [ "sources" ])
-
- main_target_name = target_name
- generation_target_name = "${target_name}_go_generate"
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- fidl_target_gen_dir =
- get_label_info(":$target_name($fidl_toolchain)", "target_gen_dir")
- file_stem = "$fidl_target_gen_dir/$library_name.fidl"
- json_representation = "$fidl_target_gen_dir/$target_name.fidl.json"
-
- compiled_action(generation_target_name) {
- visibility = [ ":*" ]
-
- tool = "//garnet/go/src/fidl:fidlgen"
-
- inputs = [
- json_representation,
- ]
-
- outputs = [
- "$file_stem/impl.go",
- "$file_stem/pkg_name",
- ]
-
- args = [
- "--json",
- rebase_path(json_representation, root_build_dir),
- "--output-base",
- rebase_path(file_stem, root_build_dir),
- "--include-base",
- rebase_path(root_gen_dir, root_build_dir),
- "--generators",
- "go",
- ]
-
- deps = [
- ":$main_target_name($fidl_toolchain)",
- ]
- }
-
- go_library(main_target_name) {
- name_file = "$file_stem/pkg_name"
-
- source_dir = file_stem
-
- sources = [
- "impl.go",
- ]
-
- non_go_deps = [ ":$generation_target_name" ]
-
- deps = []
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
- if (defined(invoker.public_deps)) {
- deps += invoker.public_deps
- }
- }
-}
diff --git a/go/gen_library_metadata.py b/go/gen_library_metadata.py
deleted file mode 100755
index 325c82d..0000000
--- a/go/gen_library_metadata.py
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-
-class Source(object):
-
- def __init__(self, name, path, file):
- self.name = name
- self.path = path
- self.file = file
-
- def __str__(self):
- return '%s[%s]' % (self.name, self.path)
-
- def __hash__(self):
- return hash((self.name, self.path))
-
- def __eq__(self, other):
- return self.name == other.name and self.path == other.path
-
-
-def get_sources(dep_files, extra_sources=None):
- # Aggregate source data from dependencies.
- sources = set()
- if extra_sources:
- sources.update(extra_sources)
- for dep in dep_files:
- with open(dep, 'r') as dep_file:
- for name, path in json.load(dep_file).iteritems():
- sources.add(Source(name, path, dep))
-
- # Verify duplicates.
- sources_by_name = {}
- for src in sources:
- sources_by_name.setdefault(src.name, []).append(src)
- for name, srcs in sources_by_name.iteritems():
- if len(srcs) <= 1:
- continue
- print('Error: source "%s" has multiple paths.' % name)
- for src in srcs:
- print(' - %s (%s)' % (src.path, src.file))
- raise Exception('Could not aggregate sources')
-
- return dict([(s.name, s.path) for s in sources])
-
-
-def main():
- parser = argparse.ArgumentParser()
- name_group = parser.add_mutually_exclusive_group(required=True)
- name_group.add_argument('--name',
- help='Name of the current library')
- name_group.add_argument('--name-file',
- help='Path to a file containing the name of the current library')
- parser.add_argument('--source-dir',
- help='Path to the library\'s source directory',
- required=True)
- parser.add_argument('--sources',
- help='List of source files',
- nargs='*')
- parser.add_argument('--output',
- help='Path to the file to generate',
- required=True)
- parser.add_argument('--deps',
- help='Dependencies of the current library',
- nargs='*')
- args = parser.parse_args()
- if args.name:
- name = args.name
- elif args.name_file:
- with open(args.name_file, 'r') as name_file:
- name = name_file.read()
-
- current_sources = []
- if args.sources:
- # TODO(BLD-228): verify that the sources are in a single folder.
- for source in args.sources:
- current_sources.append(Source(os.path.join(name, source),
- os.path.join(args.source_dir, source),
- args.output))
- else:
- current_sources.append(Source(name, args.source_dir, args.output))
- result = get_sources(args.deps, extra_sources=current_sources)
- with open(args.output, 'w') as output_file:
- json.dump(result, output_file, indent=2, sort_keys=True)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/go/go_binary.gni b/go/go_binary.gni
deleted file mode 100644
index 5c84c91..0000000
--- a/go/go_binary.gni
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/go/go_build.gni")
-
-# A template for an action that creates a Fuchsia Go binary.
-#
-# Parameters
-#
-# sdk_category (optional)
-# Publication level of the library in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# sdk_deps (optional)
-# List of labels representing elements that should be added to SDKs
-# alongside the present binary.
-# Labels in the list must represent SDK-ready targets.
-
-template("go_binary") {
- go_build(target_name) {
- forward_variables_from(invoker, "*")
- }
-}
diff --git a/go/go_build.gni b/go/go_build.gni
deleted file mode 100644
index 28f9c1b..0000000
--- a/go/go_build.gni
+++ /dev/null
@@ -1,207 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/config/sysroot.gni")
-import("//build/host.gni")
-import("//build/sdk/sdk_atom.gni")
-import("//build/testing/test_spec.gni")
-
-declare_args() {
- # gocache_dir
- # Directory GOCACHE environment variable will be set to. This directory
- # will have build and test results cached, and is safe to be written to
- # concurrently. If overridden, this directory must be a full path.
- gocache_dir = rebase_path("$root_out_dir/.gocache")
-
- # go_vet_enabled
- # [bool] if false, go vet invocations are disabled for all builds.
- go_vet_enabled = false
-}
-
-# A template for an action that builds a Go binary. Users should instead use the
-# go_binary or go_test rules.
-#
-# Parameters
-#
-# sdk_category (optional)
-# Publication level of the library in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# deps (optional)
-# List of labels representing go_library targets this target depends on.
-#
-# non_go_deps (optional)
-# List of labels this target depends on that are not Go libraries.
-#
-# skip_vet (optional)
-# Whether to skip running go vet for this target. This flag should _only_
-# be used for packages in the Go source tree itself that otherwise match
-# whitelist entries in go vet all. Go vet is only run if go_vet_enabled is
-# true.
-
-template("go_build") {
- assert(defined(invoker.gopackage),
- "gopackage must be defined for $target_name")
-
- main_target_name = target_name
-
- output_name = target_name
- if (defined(invoker.output_name)) {
- output_name = invoker.output_name
- }
- output_path = "${root_out_dir}/${output_name}"
-
- action(main_target_name) {
- deps = []
- if (defined(invoker.non_go_deps)) {
- deps += invoker.non_go_deps
- }
-
- use_strip = is_fuchsia
-
- outputs = [
- output_path,
- ]
-
- if (use_strip) {
- unstripped_output_path = "${root_out_dir}/exe.unstripped/${output_name}"
- outputs += [ unstripped_output_path ]
- }
-
- script = "//build/go/build.py"
- depfile = "${output_path}.d"
-
- sources = [
- "//build/go/gen_library_metadata.py",
- ]
-
- godepfile = "//buildtools/${host_platform}/godepfile"
- inputs = [
- godepfile,
- ]
-
- args = [
- "--godepfile",
- rebase_path(godepfile, "", root_build_dir),
- "--root-out-dir",
- rebase_path(root_out_dir, root_build_dir),
- "--depfile",
- rebase_path(depfile),
- "--current-cpu",
- current_cpu,
- "--current-os",
- current_os,
- "--binname",
- output_name,
- "--toolchain-prefix",
- rebase_path(clang_prefix, "", root_build_dir),
- "--shared-libs-root",
- rebase_path(
- get_label_info("//default($shlib_toolchain)", "root_out_dir")),
- "--sysroot",
- sysroot,
- "--go-cache",
- gocache_dir,
- ]
-
- if (defined(invoker.skip_vet) && !invoker.skip_vet && go_vet_enabled) {
- args += [ "--vet" ]
- }
-
- if (is_fuchsia) {
- deps += [ "//third_party/go:go_runtime" ]
-
- deps += [
- "//garnet/public/sdk:zircon_sysroot_export",
- "//zircon/public/lib/fdio",
- ]
-
- # GN provides no way to propagate include paths like this, so, this is brittle:
- fdio_include = rebase_path("//zircon/system/ulib/fdio/include")
-
- args += [
- "--fdio-include",
- fdio_include,
- "--go-root",
- rebase_path("$host_tools_dir/goroot"),
- ]
- } else {
- args += [
- "--go-root",
- rebase_path("//buildtools/${host_platform}/go"),
- ]
- }
-
- if (use_strip) {
- args += [
- "--unstripped-binname",
- "exe.unstripped/${output_name}",
- ]
- }
-
- if (defined(invoker.test) && invoker.test) {
- args += [ "--is-test=true" ]
- }
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- args += [ "--go-dep-files" ]
- foreach(dep, invoker.deps) {
- gen_dir = get_label_info(dep, "target_gen_dir")
- name = get_label_info(dep, "name")
- args += [ rebase_path("$gen_dir/$name.go_deps") ]
- }
- }
-
- args += [
- "--package",
- invoker.gopackage,
- ]
- }
-
- # For linux and mac tests, record metadata for testing instruction.
- if (is_linux || is_mac) {
- test_spec("${target_name}_spec") {
- name = invoker.target_name
- location = output_path
- }
- }
-
- # Allow host binaries to be published in SDKs.
- if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded" &&
- !is_fuchsia && (!defined(invoker.test) || !invoker.test)) {
- file_base = "tools/$output_name"
-
- sdk_atom("${target_name}_sdk") {
- id = "sdk://tools/$output_name"
-
- category = invoker.sdk_category
-
- meta = {
- dest = "$file_base-meta.json"
- schema = "host_tool"
- value = {
- type = "host_tool"
- name = output_name
- root = "tools"
- files = [ file_base ]
- }
- }
-
- files = [
- {
- source = output_path
- dest = file_base
- },
- ]
-
- if (defined(invoker.sdk_deps)) {
- deps = invoker.sdk_deps
- }
-
- non_sdk_deps = [ ":$main_target_name" ]
- }
- }
-}
diff --git a/go/go_library.gni b/go/go_library.gni
deleted file mode 100644
index 042f7ac..0000000
--- a/go/go_library.gni
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright 2018 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.
-
-# Defines a set of Go code that can be used by other Go targets
-#
-# Parameters
-#
-# name (optional)
-# Name of the Go package.
-# Defaults to the target name.
-#
-# name_file (optional)
-# Path to a file containing the name of the Go package..
-# This should be used when the package's name requires some computation in
-# its own build target.
-#
-# NOTE: Exactly one of `name` or `name_file` may be set, but not both.
-# If neither is set, then the target name is used.
-#
-# source_dir (optional)
-# Path to the root of the sources for the package.
-# Defaults to the current directory.
-#
-# sources (optional)
-# List of source files, relative to source_dir.
-# TODO(BLD-228): make this attribute required.
-#
-# deps (optional)
-# List of labels for Go libraries this target depends on.
-#
-# non_go_deps (optional)
-# List of labels for non-Go targets this library depends on.
-
-template("go_library") {
- assert(!(defined(invoker.name) && defined(invoker.name_file)),
- "Defining both name and name_file is not allowed")
- if (defined(invoker.name)) {
- name_args = [
- "--name",
- invoker.name,
- ]
- } else if (defined(invoker.name_file)) {
- # Make name_file a system-absolute path and add it to args.
- name_args = [
- "--name-file",
- rebase_path(invoker.name_file, ""),
- ]
- } else {
- name_args = [
- "--name",
- target_name,
- ]
- }
-
- source_dir = "."
- if (defined(invoker.source_dir)) {
- source_dir = invoker.source_dir
- }
-
- go_sources = []
- if (defined(invoker.sources)) {
- go_sources = invoker.sources
- }
-
- action(target_name) {
- script = "//build/go/gen_library_metadata.py"
-
- library_file = "$target_gen_dir/$target_name.go_deps"
-
- outputs = [
- library_file,
- ]
-
- deps = []
- dependent_libraries = []
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- foreach(dep, invoker.deps) {
- gen_dir = get_label_info(dep, "target_gen_dir")
- name = get_label_info(dep, "name")
- dependent_libraries += [ "$gen_dir/$name.go_deps" ]
- }
- }
-
- if (defined(invoker.non_go_deps)) {
- deps += invoker.non_go_deps
- }
-
- inputs = dependent_libraries
-
- args = name_args + [
- "--source-dir",
- rebase_path(source_dir),
- "--sources",
- ] + go_sources +
- [
- "--output",
- rebase_path(library_file),
- "--deps",
- ] + rebase_path(dependent_libraries)
- }
-}
diff --git a/go/go_test.gni b/go/go_test.gni
deleted file mode 100644
index 147c692..0000000
--- a/go/go_test.gni
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2017 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.
-
-# A template for an action that creates a Fuchsia Go test binary.
-
-import("//build/go/go_build.gni")
-
-template("go_test") {
- go_build(target_name) {
- forward_variables_from(invoker, "*")
- test = true
- }
-}
diff --git a/go/toolchain.gni b/go/toolchain.gni
deleted file mode 100644
index 5f33282..0000000
--- a/go/toolchain.gni
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2018 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.
-
-go_toolchain = "//build/go:gopher"
diff --git a/gypi_to_gn.py b/gypi_to_gn.py
deleted file mode 100755
index bbb05b1..0000000
--- a/gypi_to_gn.py
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env python
-# 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.
-
-"""Converts a given gypi file to a python scope and writes the result to stdout.
-
-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/host.gni b/host.gni
deleted file mode 100644
index 559a23d..0000000
--- a/host.gni
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2017 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.
-
-declare_args() {
- # This is the directory where host tools intended for manual use by
- # developers get installed. It's something a developer might put
- # into their shell's $PATH. Host tools that are just needed as part
- # of the build do not get copied here. This directory is only for
- # things that are generally useful for testing or debugging or
- # whatnot outside of the GN build itself. These are only installed
- # by an explicit install_host_tools() rule (see //build/host.gni).
- host_tools_dir = "$root_build_dir/tools"
-}
-
-# This declares that a host tool (a target built in host_toolchain)
-# should be installed in host_tools_dir. This target can be used in
-# any toolchain, and it will forward to host_toolchain.
-#
-# Parameters
-#
-# outputs (required)
-# [files list] Simple file name of each tool, should be the
-# same as the output_name in the executable() or similar rule
-# (which is usually just that target's name).
-#
-# deps (recommended)
-# [label list] Should list each target that actually builds each output.
-# It does not need to use explicit toolchain suffixes; the only target
-# using the deps will be instantiated only in host_toolchain.
-#
-# testonly (optional)
-# visibility (optional)
-# Standard GN meaning.
-#
-# Example of usage:
-#
-# executable("frob") { ... }
-# install_host_tools("fiddlers") {
-# deps = [ ":frob", "//some/other/dir:twiddle" ]
-# outputs = [ "frob", "twiddle" ]
-# }
-template("install_host_tools") {
- assert(defined(invoker.outputs), "install_host_tools() must define outputs")
-
- # There is more than one host_toolchain when variants are involved,
- # but all those copy their executables to the base host_toolchain
- # (which toolchain_variant.base points to in every host_toolchain).
- if (current_toolchain == host_toolchain &&
- current_toolchain == toolchain_variant.base) {
- copy(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
- if (defined(visibility)) {
- visibility += [ ":$target_name" ]
- }
- outputs = [
- "$host_tools_dir/{{source_file_part}}",
- ]
- sources = []
- foreach(output_name, invoker.outputs) {
- sources += [ "$root_out_dir/$output_name" ]
- }
- }
- } else {
- # Redirect to the base host_toolchain, where the copy rule above is.
- # In a variant host_toolchain context, toolchain_variant.base points
- # there, while host_toolchain always matches current_toolchain.
- group(target_name) {
- if (current_toolchain == host_toolchain) {
- toolchain = toolchain_variant.base
- } else {
- toolchain = host_toolchain
- }
- deps = [
- ":$target_name($toolchain)",
- ]
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
- not_needed(invoker,
- [
- "deps",
- "outputs",
- ])
- }
- }
-}
diff --git a/images/BUILD.gn b/images/BUILD.gn
deleted file mode 100644
index 7e7a214..0000000
--- a/images/BUILD.gn
+++ /dev/null
@@ -1,1679 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/config/fuchsia/zbi.gni")
-import("//build/config/fuchsia/zircon.gni")
-import("//build/gn/packages.gni")
-import("//build/images/boot.gni")
-import("//build/images/custom_signing.gni")
-import("//build/images/fvm.gni")
-import("//build/images/json.gni")
-import("//build/images/manifest.gni")
-import("//build/images/max_fvm_size.gni")
-import("//build/package.gni")
-import("//build/sdk/sdk_atom.gni")
-import("//build/sdk/sdk_molecule.gni")
-import("//garnet/build/pkgfs.gni")
-import("//garnet/go/src/pm/pm.gni")
-
-declare_args() {
- # Groups to include from the Zircon /boot manifest into /boot.
- # This is either "all" or a comma-separated list of one or more of:
- # core -- necessary to boot
- # misc -- utilities in /bin
- # test -- test binaries in /bin and /test
- zircon_boot_groups = "core"
-
- # Path to manifest file containing data to place into the initial /data
- # partition.
- data_partition_manifest = ""
-}
-
-declare_args() {
- # Groups to include from the Zircon /boot manifest into /system
- # (instead of into /boot like Zircon's own bootdata.bin does).
- # Should not include any groups that are also in zircon_boot_groups,
- # which see. If zircon_boot_groups is "all" then this should be "".
- # **TODO(mcgrathr)**: _Could default to "" for `!is_debug`, or "production
- # build". Note including `"test"` here places all of Zircon's tests into
- # `/system/test`, which means that Fuchsia bots run those tests too._
- zircon_system_groups = "misc,test"
- if (zircon_boot_groups == "all") {
- zircon_system_groups = ""
- }
-}
-
-if (zircon_boot_groups == "all") {
- assert(zircon_system_groups == "",
- "zircon_boot_groups already has everything")
-} else {
- assert(zircon_system_groups != "all" && zircon_system_groups != "core",
- "zircon_system_groups cannot include core (or all)")
-}
-
-# This will collect a list of scopes describing each image exported.
-# See json.gni.
-images = [
- {
- sources = [
- "$root_build_dir/args.gn",
- ]
- json = {
- name = "buildargs"
- type = "gn"
- archive = true
- }
- deps = []
- },
- {
- sources = [
- "//.jiri_root/update_history/latest",
- ]
- json = {
- name = "jiri_snapshot"
- type = "xml"
- archive = true
- }
- deps = []
- },
- {
- json = {
- name = "bootserver"
- type = "exe.$host_platform"
- archive = true
- }
- sources = [
- "$zircon_tools_dir/bootserver",
- ]
- deps = []
- },
-]
-
-# Write a JSON metadata file about the packages in the build.
-_packages_json = {
- _all = []
- monolith = []
- foreach(pkg, monolith_packages) {
- monolith += [ get_label_info(pkg, "name") ]
- _all += [ pkg ]
- _all -= [ pkg ]
- _all += [ pkg ]
- }
- preinstall = []
- foreach(pkg, preinstall_packages) {
- preinstall += [ get_label_info(pkg, "name") ]
- _all += [ pkg ]
- _all -= [ pkg ]
- _all += [ pkg ]
- }
- available = []
- foreach(pkg, available_packages) {
- available += [ get_label_info(pkg, "name") ]
- _all += [ pkg ]
- _all -= [ pkg ]
- _all += [ pkg ]
- }
- packages = []
- foreach(pkg, _all) {
- packages += [
- {
- dir = get_label_info(pkg, "dir")
- name = get_label_info(pkg, "name")
- build_dir =
- rebase_path(get_label_info(pkg, "target_out_dir"), root_build_dir)
- },
- ]
- }
-}
-write_file("$root_build_dir/packages.json",
- {
- forward_variables_from(_packages_json, "*", [ "_all" ])
- },
- "json")
-
-###
-### shell-commands package
-###
-### TODO(CF-223)
-### shell-commands is a Fuchsia package that aggregates all binaries from all
-### "available" Fuchsia packages producing "#!resolve URI" trampolines. This
-### package is a solution to enable the shell to resolve command line
-### programs out of ephemeral packages.
-
-# create-shell-commands performs two actions:
-# - create trampoline scripts ("#!resolve COMMAND-URI") for each command.
-# - produce a manifest that contains references to all of the trampolines.
-action("create-shell-commands") {
- testonly = true
- script = "create-shell-commands.py"
- outputs = [
- "$target_out_dir/shell-commands-extra.manifest",
- ]
- args = [
- "--trampoline-dir",
- rebase_path(target_out_dir + "/commands", root_build_dir),
- "--output-manifest",
- rebase_path(outputs[0], root_build_dir),
- ]
- deps = []
- sources = []
-
- foreach(pkg_label, available_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- if (pkg_target_name != "shell-commands") {
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- cmd_rspfile = "$pkg_target_out_dir/${pkg_target_name}.shell_commands.rsp"
- deps += [ "${pkg_label}.shell_commands.rsp" ]
- sources += [ cmd_rspfile ]
- args += [ "@" + rebase_path(cmd_rspfile, root_build_dir) ]
- }
- }
-}
-
-package("shell-commands") {
- testonly = true
- extra = get_target_outputs(":create-shell-commands")
- deps = [
- ":create-shell-commands",
- ]
-}
-
-###
-### Fuchsia system image. This aggregates contributions from all the
-### package() targets enabled in the build.
-###
-
-pm_binary_label = "//garnet/go/src/pm:pm_bin($host_toolchain)"
-pm_out_dir = get_label_info(pm_binary_label, "root_out_dir")
-pm_binary = "$pm_out_dir/pm"
-
-# This just runs `pm -k $system_package_key genkey` if the file doesn't exist.
-# Every package() target depends on this.
-action("system_package_key_check") {
- visibility = [ "*" ]
- deps = [
- pm_binary_label,
- ]
- outputs = [
- "$target_out_dir/system_package_key_check_ok.stamp",
- ]
- script = "//build/gn_run_binary.sh"
- inputs = [
- "system_package_key_check.py",
- pm_binary,
- ]
- args =
- [ clang_prefix ] + rebase_path(inputs + outputs + [ system_package_key ])
-}
-
-# The pkgsvr index is a manifest mapping `package_name/package_version` to
-# the merkleroot of the package's meta.far file.
-pkgsvr_index = "$target_out_dir/pkgsvr_index"
-
-action("pkgsvr_index") {
- visibility = [
- ":system_image.manifest",
- ":update_packages.manifest",
- ]
- testonly = true
-
- script = "manifest.py"
- args = [ "--contents" ]
- outputs = [
- "$target_out_dir/$target_name",
- ]
- args += [ "--output=" + rebase_path(outputs[0], root_build_dir) ]
- sources = []
- deps = []
- foreach(pkg_label, monolith_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.pkgsvr_index.rsp"
- deps += [ "${pkg_label}.pkgsvr_index.rsp" ]
- sources += [ pkg_rspfile ]
- args += [ "@" + rebase_path(pkg_rspfile, root_build_dir) ]
- }
-}
-
-# preinstall.manifest is a manifest of files that are a pkgfs "dynamic index"
-# populated inside /pkgfs/packages that are {name}/{version} containing the
-# merkleroot of the meta.far of that package.
-action("preinstall.manifest") {
- visibility = [ ":data.blk" ]
- testonly = true
-
- script = "manifest.py"
- args = [ "--rewrite=*=pkgfs_index/packages/{target}={source}" ]
- outputs = [
- # The output is in the root build dir in order to avoid a complex rewrite
- # of the source path. The minfs tool this is passed to interprets source
- # locations relative to the manifest.
- "$root_build_dir/$target_name",
- ]
- args += [ "--output=" + rebase_path(outputs[0], root_build_dir) ]
- sources = []
- deps = []
- foreach(pkg_label, preinstall_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.pkgsvr_index.rsp"
- deps += [ "${pkg_label}.pkgsvr_index.rsp" ]
- sources += [ pkg_rspfile ]
- args += [ "@" + rebase_path(pkg_rspfile, root_build_dir) ]
- }
-
- update_meta_dir =
- get_label_info(":update.meta", "target_out_dir") + "/update.meta"
- update_meta_far_merkle = update_meta_dir + "/meta.far.merkle"
- args += [
- "--entry",
- "update/0=" + rebase_path(update_meta_far_merkle, root_build_dir),
- ]
- deps += [ ":update.meta" ]
-}
-
-# The /boot and /system manifests have to be generated in concert. Things
-# like drivers going into /system can affect what needs to go into /boot.
-boot_manifest = "$target_out_dir/boot.manifest"
-
-# The system_image "package" manifest is everything that appears in /system.
-generate_manifest("system_image.manifest") {
- visibility = [ ":*" ]
- testonly = true
-
- # Create the /boot manifest that gets packed into BOOTFS in the ZBI.
- # /system manifest files can assume that the /boot files are visible at
- # runtime, so dependencies already in /boot won't be copied into /system.
- bootfs_manifest = boot_manifest
- bootfs_zircon_groups = zircon_boot_groups
-
- # Collect whatever we want from Zircon that didn't go into /boot.
- zircon_groups = zircon_system_groups
-
- # Now each package() target in the build contributes manifest entries.
- # For system_image packages, these contain binaries that need their
- # references resolved from the auxiliary manifests or /boot (above).
- args = []
- deps = []
- sources = []
- foreach(pkg_label, monolith_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_system_rsp = "$pkg_target_out_dir/${pkg_target_name}.system.rsp"
- deps += [ pkg_label ]
- sources += [ pkg_system_rsp ]
- args += [ "@" + rebase_path(pkg_system_rsp, root_build_dir) ]
- }
-
- args += [ "--entry-manifest=" +
- get_label_info(":$target_name", "label_no_toolchain") ]
-
- # Add the meta/package JSON file that makes this the "system_image" package.
- json = "system_meta_package.json"
- sources += [ json ]
- args += [ "--entry=meta/package=" + rebase_path(json, root_build_dir) ]
-
- # Add the static packages (pkgsvr) index.
- deps += [ ":pkgsvr_index" ]
- sources += [ pkgsvr_index ]
- args += [ "--entry=data/static_packages=" +
- rebase_path(pkgsvr_index, root_build_dir) ]
-}
-
-system_manifest_outputs = get_target_outputs(":system_image.manifest")
-assert(boot_manifest == system_manifest_outputs[2])
-system_build_id_map = system_manifest_outputs[1]
-
-# Generate, sign, and seal the system_image package file.
-pm_build_package("system_image.meta") {
- visibility = [ ":*" ]
- testonly = true
- manifest = ":system_image.manifest"
-}
-
-# Now generate the blob manifest. This lists all the source files
-# that need to go into the blobfs image. That is everything from the
-# system_image manifest, everything from each package manifest, and
-# all the synthesized meta.far files.
-blob_manifest = "$root_build_dir/blob.manifest"
-
-action("blob.manifest") {
- visibility = [ ":*" ]
- testonly = true
- outputs = [
- blob_manifest,
- ]
- depfile = blob_manifest + ".d"
- deps = [
- ":system_image.meta",
- ":update.meta",
- ]
- inputs = []
- script = "blob_manifest.py"
- args = [ "@{{response_file_name}}" ]
-
- response_file_contents = [
- "--output=" + rebase_path(blob_manifest, root_build_dir),
- "--depfile=" + rebase_path(depfile, root_build_dir),
- "--input=" + rebase_path("$target_out_dir/system_image.meta/blobs.json",
- root_build_dir),
- "--input=" +
- rebase_path("$target_out_dir/update.meta/blobs.json", root_build_dir),
- ]
- foreach(pkg_label, monolith_packages + preinstall_packages) {
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_blobs_rsp = "${pkg_target_out_dir}/${pkg_target_name}.blobs.rsp"
- deps += [ "${pkg_label}.blobs.rsp" ]
- inputs += [ pkg_blobs_rsp ]
- response_file_contents +=
- [ "@" + rebase_path(pkg_blobs_rsp, root_build_dir) ]
- }
-}
-
-# Pack up all the blobs!
-zircon_tool_action("blob.blk") {
- visibility = [ ":*" ]
- testonly = true
- deps = [
- ":blob.manifest",
- ]
- blob_image_path = "$target_out_dir/$target_name"
- blob_size_list = "$root_build_dir/blob.sizes"
- outputs = [
- blob_image_path,
- # This should be an output too, but the generate_fvm template assumes that all
- # outputs of these actions are inputs to the fvm tool.
- # blob_size_list
- ]
- depfile = blob_image_path + ".d"
- inputs = [
- blob_manifest,
- ]
- tool = "blobfs"
- args = [
- "--depfile",
- "--sizes",
- rebase_path(blob_size_list, root_build_dir),
- "--compress",
- rebase_path(blob_image_path, root_build_dir),
- "create",
- "--manifest",
- rebase_path(blob_manifest, root_build_dir),
- ]
-}
-images += [
- {
- deps = [
- ":blob.blk",
- ]
- public = [
- "IMAGE_BLOB_RAW",
- ]
- json = {
- name = "blob"
- type = "blk"
- }
- },
-]
-
-###
-### Zircon Boot Images
-###
-
-declare_args() {
- # List of arguments to add to /boot/config/devmgr.
- # These come after synthesized arguments to configure blobfs and pkgfs.
- devmgr_config = []
-
- # List of kernel command line arguments to bake into the boot image.
- # See also //zircon/docs/kernel_cmdline.md and
- # [`devmgr_config`](#devmgr_config).
- kernel_cmdline_args = []
-
- # Files containing additional kernel command line arguments to bake into
- # the boot image. The contents of these files (in order) come after any
- # arguments directly in [`kernel_cmdline_args`](#kernel_cmdline_args).
- # These can be GN `//` source pathnames or absolute system pathnames.
- kernel_cmdline_files = []
-
- # List of extra manifest entries for files to add to the BOOTFS.
- # Each entry can be a "TARGET=SOURCE" string, or it can be a scope
- # with `sources` and `outputs` in the style of a copy() target:
- # `outputs[0]` is used as `TARGET` (see `gn help source_expansion`).
- bootfs_extra = []
-
- # List of kernel images to include in the update (OTA) package.
- # If no list is provided, all built kernels are included. The names in the
- # list are strings that must match the filename to be included in the update
- # package.
- update_kernels = []
-}
-
-images += [
- {
- # This is the file to give QEMU's `-kernel` switch with a complete
- # ZBI (some `IMAGE_*_ZBI` file) for its `-initrd` switch.
- public = [
- "IMAGE_QEMU_KERNEL_RAW",
- ]
- json = {
- name = "qemu-kernel"
- type = "kernel"
- }
- sdk = "qemu-kernel.bin"
- deps = []
- if (current_cpu == "arm64") {
- sources = [
- "$zircon_build_dir/qemu-boot-shim.bin",
- ]
- } else if (current_cpu == "x64") {
- sources = [
- "$zircon_build_dir/multiboot.bin",
- ]
- }
- },
-]
-
-# Generate the /boot/config/devmgr file. This looks like a kernel command
-# line file, but is read by devmgr (in addition to kernel command line
-# arguments), not by the kernel or boot loader.
-action("devmgr_config.txt") {
- visibility = [ ":fuchsia" ]
- testonly = true
-
- script = "manifest.py"
- outputs = [
- "$target_out_dir/$target_name",
- ]
-
- pkgfs = "bin/" + pkgfs_binary_name
- pkgfs_label = pkgfs_package_label + ".meta"
- pkgfs_pkg_out_dir = get_label_info(pkgfs_label, "target_out_dir") + "/" +
- get_label_info(pkgfs_label, "name")
- pkgfs_blob_manifest = "$pkgfs_pkg_out_dir/meta/contents"
- system_image_merkleroot = "$target_out_dir/system_image.meta/meta.far.merkle"
-
- deps = [
- ":system_image.meta",
- pkgfs_label,
- ]
- sources = [
- pkgfs_blob_manifest,
- system_image_merkleroot,
- ]
-
- args = [
- "--output=" + rebase_path(outputs[0], root_build_dir),
-
- # Start with the fixed options.
- "--entry=devmgr.require-system=true",
- ]
-
- # Add the pkgfs command line, embedding the merkleroot of the system image.
- args += [
- "--contents",
- "--rewrite=*=zircon.system.pkgfs.cmd={target}+{source}",
- "--entry=${pkgfs}=" + rebase_path(system_image_merkleroot, root_build_dir),
- "--no-contents",
- "--reset-rewrite",
- ]
-
- # Embed the pkgfs blob manifest with the "zircon.system.pkgfs.file."
- # prefix on target file names.
- args += [
- "--rewrite=*=zircon.system.pkgfs.file.{target}={source}",
- "--manifest=" + rebase_path(pkgfs_blob_manifest, root_build_dir),
- "--reset-rewrite",
- ]
-
- foreach(entry, devmgr_config) {
- args += [ "--entry=$entry" ]
- }
-
- # If there were any ASan drivers in the build, bin/devhost.asan
- # should have been brought into the boot manifest. devmgr needs to
- # be told to use it in case there are ASan drivers in /system but
- # none in /boot. If there were any non-ASan drivers in the build,
- # bin/devhost.asan will load them and needs to know to moderate the
- # checking for interacting with uninstrumented code.
- deps += [ ":system_image.manifest" ]
- sources += [ boot_manifest ]
- args += [
- "--include=bin/devhost.asan",
- "--include=bin/devhost",
- "--rewrite=bin/devhost.asan=devmgr.devhost.asan=true",
- "--rewrite=bin/devhost=devhost.asan.strict=false",
- "--manifest=" + rebase_path(boot_manifest, root_build_dir),
- ]
-}
-
-# The main bootable image, which requires `blob.blk` to appear on some
-# attached storage device at runtime.
-zbi("fuchsia") {
- testonly = true
- deps = [
- ":devmgr_config.txt",
- ":system_image.manifest",
- ]
- inputs = [
- "${zircon_build_dir}/kernel.zbi",
- boot_manifest,
- ]
- manifest = [
- {
- outputs = [
- "config/devmgr",
- ]
- sources = get_target_outputs(":devmgr_config.txt")
- },
- ]
- cmdline = kernel_cmdline_args
- cmdline_inputs = kernel_cmdline_files
- manifest += bootfs_extra
-}
-images += [
- {
- deps = [
- ":fuchsia",
- ]
- sdk = "fuchsia.zbi"
- updater = "zbi"
- json = {
- name = "zircon-a"
- type = "zbi"
-
- # TODO(IN-892): Although we wish to minimize the usage of mexec (ZX-2069),
- # the infrastructure currently requires it for vim2 lifecycle management.
- # (`fastboot continue` does not continue back to fuchsia after paving and
- # rebooting in the case we do not mexec a kernel.)
- bootserver_pave = [ "--boot" ]
-
- if (custom_signing_script == "") {
- bootserver_pave += [
- "--zircona",
- # TODO(ZX-2625): `dm reboot-recovery` boots from zircon-b instead of
- # zircon-r, so for now zedboot is being paved to this slot.
- # "--zirconb",
- ]
- }
- }
- public = [
- "IMAGE_ZIRCONA_ZBI",
-
- # TODO(mcgrathr): The complete ZBI can be used with a separate
- # kernel too, the kernel image in it will just be ignored. So
- # just use the primary ZBI for this until all uses are
- # converted to using the ZBI alone. Then remove this as
- # IMAGE_BOOT_RAM variable should no longer be in use.
- "IMAGE_BOOT_RAM",
- ]
- },
-]
-
-if (custom_signing_script != "") {
- custom_signed_zbi("signed") {
- output_name = "fuchsia.zbi"
- testonly = true
- deps = [
- ":fuchsia",
- ]
- zbi = get_target_outputs(":fuchsia")
- }
- images += [
- {
- deps = [
- ":signed",
- ]
- sdk = "fuchsia.zbi.signed"
- updater = "zbi.signed"
- json = {
- name = "zircon-a.signed"
- type = "zbi.signed"
- bootserver_pave = [ "--zircona" ]
- }
- public = [
- "IMAGE_ZIRCONA_SIGNEDZBI",
- ]
- },
- ]
- if (use_vbmeta) {
- images += [
- {
- deps = [
- ":signed",
- ]
- sources = [
- "$root_out_dir/fuchsia.zbi.vbmeta",
- ]
- json = {
- name = "zircon-a.vbmeta"
- type = "vbmeta"
- bootserver_pave = [ "--vbmetaa" ]
- }
- public = [
- "IMAGE_VBMETAA_RAW",
- ]
- },
- ]
- }
-}
-
-# The updater also wants the zedboot zbi as recovery.
-images += [
- {
- deps = [
- "zedboot:zbi",
- ]
- sources = [
- "$root_out_dir/zedboot.zbi",
- ]
- updater = "zedboot"
- },
-]
-
-if (custom_signing_script != "") {
- images += [
- {
- deps = [
- "zedboot:signed",
- ]
- sources = [
- "$root_out_dir/zedboot.zbi.signed",
- ]
- updater = "zedboot.signed"
- },
- ]
-}
-
-###
-### Complete images for booting and installing the whole system.
-###
-
-declare_args() {
- # Build boot images that prefer Zedboot over local boot (only for EFI).
- always_zedboot = false
-}
-
-# data.blk creates minfs data partition containing the preinstall package
-# index. The partition is included in fvm.blk and fvm.sparse.blk.
-# To increase the size of the data partition, increase the total size of the
-# fvm images using |fvm_image_size|.
-zircon_tool_action("data.blk") {
- testonly = true
- tool = "minfs"
- data_image_path = "$target_out_dir/$target_name"
- outputs = [
- data_image_path,
- ]
- depfile = data_image_path + ".d"
- deps = [
- ":preinstall.manifest",
- ]
- preinstall_manifest = get_target_outputs(deps[0])
- args = [
- "--depfile",
- rebase_path(data_image_path, root_build_dir),
- "create",
- "--manifest",
- rebase_path(preinstall_manifest[0], root_build_dir),
- ]
- if (data_partition_manifest != "") {
- args += [
- "--manifest",
- rebase_path(data_partition_manifest),
- ]
- }
-}
-images += [
- {
- public = [
- "IMAGE_DATA_RAW",
- ]
- json = {
- name = "data"
- type = "blk"
- }
- deps = [
- ":data.blk",
- ]
- },
-]
-
-# Record the maximum allowable FVM size in the build directory for later steps
-# to check against.
-max_fvm_size_file = "$root_build_dir/max_fvm_size.txt"
-write_file(max_fvm_size_file, max_fvm_size)
-
-# fvm.blk creates an FVM partition image containing the blob partition produced
-# by blob.blk and the data partition produced by data.blk. fvm.blk is primarily
-# invoked and used by the qemu run, via `fx run`.
-generate_fvm("fvm.blk") {
- testonly = true
- output_name = "$target_out_dir/fvm.blk"
- args = fvm_create_args
- if (fvm_image_size != "") {
- args += [
- "--length",
- fvm_image_size,
- ]
- }
- partitions = [
- {
- type = "blob"
- dep = ":blob.blk"
- },
- {
- type = "data"
- dep = ":data.blk"
- },
- ]
-}
-images += [
- {
- deps = [
- ":fvm.blk",
- ]
- json = {
- name = "storage-full"
- type = "blk"
- }
- sdk = "fvm.blk"
- public = [
- "IMAGE_FVM_RAW",
- ]
- },
-]
-
-# fvm.sparse.blk creates a sparse FVM partition image containing the blob
-# partition produced by blob.blk and the data partition produced by data.blk.
-# fvm.sparse.blk is primarily invoked and used by the paver boot, via `fx
-# pave`.
-generate_fvm("fvm.sparse.blk") {
- testonly = true
- output_name = "$target_out_dir/fvm.sparse.blk"
- deps = [
- ":blob.blk",
- ":data.blk",
- ]
- args = fvm_sparse_args
- partitions = [
- {
- type = "blob"
- dep = ":blob.blk"
- },
- {
- type = "data"
- dep = ":data.blk"
- },
- ]
-}
-images += [
- {
- deps = [
- ":fvm.sparse.blk",
- ]
- json = {
- name = "storage-sparse"
- type = "blk"
- bootserver_pave = [ "--fvm" ]
- }
- installer = "fvm.sparse.blk"
- sdk = "fvm.sparse.blk"
- public = [
- "IMAGE_FVM_SPARSE",
- ]
- },
-]
-
-# This rolls the primary ZBI together with a compressed RAMDISK image of
-# fvm.blk into a fat ZBI that boots the full system without using any real
-# storage. The system decompresses the fvm.blk image into memory and then
-# sees that RAM disk just as if it were a real disk on the device.
-zbi("netboot") {
- testonly = true
- deps = [
- ":fuchsia",
- ":fvm.blk",
- ]
- inputs = get_target_outputs(":fuchsia")
- ramdisk_inputs = get_target_outputs(":fvm.blk")
-}
-images += [
- {
- default = false
- json = {
- bootserver_netboot = [ "--boot" ]
- name = "netboot"
- type = "zbi"
- }
- public = [
- "IMAGE_NETBOOT_ZBI",
-
- # TODO(mcgrathr): The complete ZBI can be used with a separate kernel
- # too, the kernel image in it will just be ignored. So just use the
- # primary ZBI for this until all uses are converted to using the ZBI
- # alone. Then remove this as IMAGE_BOOT_RAM variable should no
- # longer be in use.
- "IMAGE_NETBOOT_RAM",
- ]
- deps = [
- ":netboot",
- ]
- },
-]
-
-if (target_cpu != "arm64") {
- # ChromeOS vboot images.
- vboot("vboot") {
- testonly = true
- output_name = "fuchsia"
- deps = [
- ":fuchsia",
- ]
- }
- images += [
- {
- json = {
- name = "zircon-vboot"
- type = "vboot"
- bootserver_pave = [ "--kernc" ]
- }
- deps = [
- ":vboot",
- ]
- installer = "zircon.vboot"
- sdk = "zircon.vboot"
- updater = "kernc"
- public = [
- "IMAGE_ZIRCON_VBOOT",
- ]
- },
- ]
-
- # The installer also wants the zedboot vboot image.
- images += [
- {
- deps = [
- "zedboot:vboot",
- ]
- sources = [
- "$root_out_dir/zedboot.vboot",
- ]
- installer = "zedboot.vboot"
- },
- ]
-
- # EFI ESP images.
- esp("esp") {
- output_name = "fuchsia"
- testonly = true
- if (always_zedboot) {
- cmdline = "zedboot/efi_cmdline.txt"
- } else {
- cmdline = "efi_local_cmdline.txt"
- }
- }
- images += [
- {
- deps = [
- ":esp",
- ]
- json = {
- name = "efi"
- type = "blk"
- bootserver_pave = [ "--efi" ]
- }
- installer = "local.esp.blk"
- sdk = "local.esp.blk"
- updater = "efi"
- public = [
- "IMAGE_ESP_RAW",
- ]
- },
- {
- deps = [
- "zedboot:esp",
- ]
- sources = [
- "$root_out_dir/zedboot.esp.blk",
- ]
- installer = "zedboot.esp.blk"
- },
- ]
-}
-
-installer_label = "//garnet/bin/installer:install-fuchsia"
-installer_out_dir = get_label_info(installer_label, "root_out_dir")
-installer_path = "$installer_out_dir/install-fuchsia"
-
-action("installer.manifest") {
- script = "manifest.py"
- outputs = [
- "$target_out_dir/installer.manifest",
- ]
- args = [
- "--output=" + rebase_path(outputs[0], root_build_dir),
- "--output-cwd=" + rebase_path(target_out_dir, root_build_dir),
- "--entry=install-fuchsia=" + rebase_path(installer_path, root_build_dir),
- ]
- foreach(image, images) {
- if (defined(image.installer)) {
- image_sources = []
- if (defined(image.sources)) {
- image_sources += image.sources
- } else {
- foreach(label, image.deps) {
- image_sources += get_target_outputs(label)
- }
- }
- assert(image_sources == [ image_sources[0] ])
- args += [ "--entry=${image.installer}=" +
- rebase_path(image_sources[0], root_build_dir) ]
- }
- }
-}
-
-# installer.blk is a minfs partition image that includes all of the
-# images required to install a Fuchsia build.
-zircon_tool_action("installer") {
- testonly = true
- tool = "minfs"
- deps = [
- ":installer.manifest",
- installer_label,
- ]
- outputs = [
- "$target_out_dir/installer.blk",
- ]
- sources = []
- foreach(image, images) {
- if (defined(image.installer)) {
- deps += image.deps
- if (defined(image.sources)) {
- sources += image.sources
- } else {
- foreach(label, image.deps) {
- sources += get_target_outputs(label)
- }
- }
- }
- }
- depfile = "$target_out_dir/installer.blk.d"
- args = [
- "--depfile",
- rebase_path(outputs[0], root_build_dir),
- "create",
- "--manifest",
- ]
- args += rebase_path(get_target_outputs(deps[0]), root_build_dir)
-}
-images += [
- {
- default = false
- public = [
- "IMAGE_INSTALLER_RAW",
- ]
- deps = [
- ":installer",
- ]
- },
-]
-
-group("images") {
- testonly = true
- deps = [
- ":ids.txt",
- ":paver-script",
- "zedboot",
- ]
-}
-
-group("default-images") {
- testonly = true
- deps = []
- foreach(image, images) {
- if (!defined(image.default) || image.default) {
- deps += image.deps
- }
- }
-}
-
-###
-### Paver script and archives using those images and zedboot's images.
-###
-
-paver_targets = [
- {
- name = "paver-script"
- outputs = [
- "$root_build_dir/pave.sh",
- ]
- switch = "--pave="
- json = {
- name = "pave"
- type = "sh"
- }
- },
- {
- name = "netboot-script"
- outputs = [
- "$root_build_dir/netboot.sh",
- ]
- switch = "--netboot="
- json = {
- name = "netboot"
- type = "sh"
- }
- },
-]
-foreach(format,
- [
- "tgz",
- "zip",
- ]) {
- paver_targets += [
- {
- name = "archive-$format"
- outputs = [
- "$root_build_dir/build-archive.$format",
- ]
- switch = "--archive="
- json = {
- name = "archive"
- type = "$format"
- }
- },
- {
- name = "symbol-archive-$format"
- outputs = [
- "$root_build_dir/symbol-archive.$format",
- ]
- switch = "--symbol-archive="
- json = {
- name = "symbol-archive"
- type = "$format"
- }
- },
- ]
-}
-
-foreach(target, paver_targets) {
- images += [
- {
- path = rebase_path(target.outputs, root_build_dir)
- path = path[0]
- json = target.json
- deps = [
- ":${target.name}",
- ]
- },
- ]
- action(target.name) {
- deps = [
- ":default-images",
- ":netboot",
- "zedboot",
- ]
- testonly = true
- sources = [
- "$root_build_dir/images.json",
- "$root_build_dir/zedboot_images.json",
- ]
- outputs = target.outputs
- depfile = "${outputs[0]}.d"
- script = "pack-images.py"
- args = [
- "--depfile=" + rebase_path(depfile, root_build_dir),
- target.switch + rebase_path(outputs[0], root_build_dir),
- ]
- args += rebase_path(sources, root_build_dir)
- }
-}
-
-###
-### Amber updates.
-###
-
-# update_packages.manifest contains the same entries as the pkgsvr_index but
-# additionally includes the system_image package.
-action("update_packages.manifest") {
- visibility = [ ":update.manifest" ]
- testonly = true
-
- script = "manifest.py"
- outputs = [
- "$target_out_dir/$target_name",
- ]
- args = [
- "--contents",
- "--output",
- rebase_path(outputs[0], root_build_dir),
- ]
- deps = []
- sources = []
-
- deps += [ ":system_image.meta" ]
- args += [ "--entry=system_image/0=" +
- rebase_path("$target_out_dir/system_image.meta/meta.far.merkle",
- root_build_dir) ]
-
- foreach(pkg_label, monolith_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.pkgsvr_index.rsp"
- deps += [ "${pkg_label}.pkgsvr_index.rsp" ]
- sources += [ pkg_rspfile ]
- args += [ "@" + rebase_path(pkg_rspfile, root_build_dir) ]
- }
-}
-
-# The update package manifest contains the pkgsvr_index and the target
-# system kernel images.
-action("update.manifest") {
- visibility = [ ":*" ]
- testonly = true
-
- update_manifest = [
- {
- target = "packages"
- deps = [
- ":update_packages.manifest",
- ]
- },
-
- # Add the meta/package JSON file that makes this the "update" package.
- {
- target = "meta/package"
- sources = [
- "update_package.json",
- ]
- },
- ]
-
- foreach(image, images) {
- if (defined(image.updater)) {
- if (update_kernels == []) {
- update_manifest += [
- {
- target = image.updater
- forward_variables_from(image,
- [
- "deps",
- "sources",
- ])
- },
- ]
- } else {
- foreach(kernel, update_kernels) {
- if (image.updater == kernel) {
- update_manifest += [
- {
- target = image.updater
- forward_variables_from(image,
- [
- "deps",
- "sources",
- ])
- },
- ]
- }
- }
- }
- }
- }
-
- script = "manifest.py"
-
- outputs = [
- "$target_out_dir/$target_name",
- ]
-
- args = [ "--output=" + rebase_path(outputs[0], root_build_dir) ]
- sources = []
- deps = []
-
- foreach(entry, update_manifest) {
- entry_source = ""
- if (defined(entry.deps)) {
- deps += entry.deps
- }
-
- if (defined(entry.sources)) {
- # TODO(BLD-354): We should only have single source
- sources = []
- sources += entry.sources
- entry_source = sources[0]
- } else if (defined(entry.deps)) {
- foreach(label, entry.deps) {
- # TODO(BLD-354): We should only have single output
- dep_outputs = []
- dep_outputs += get_target_outputs(label)
- entry_source = dep_outputs[0]
- }
- }
- entry_source = rebase_path(entry_source, root_build_dir)
- args += [ "--entry=${entry.target}=${entry_source}" ]
- }
-}
-
-pm_build_package("update.meta") {
- visibility = [ ":*" ]
- testonly = true
- manifest = ":update.manifest"
-}
-
-# XXX(raggi): The following manifests retain the "meta/" files, resulting in
-# them being added as blobs, which they should not be. A likely better solution
-# here is to teach pm_build_package to produce either a blob manifest or a
-# manifest.py --contents compatible response file that excludes these files.
-
-action("update.sources.manifest") {
- visibility = [ ":*" ]
- testonly = true
- script = "manifest.py"
- deps = [
- ":update.manifest",
- ]
- outputs = [
- "$target_out_dir/update.sources.manifest",
- ]
- update_manifests = get_target_outputs(deps[0])
- args = [
- "--sources",
- "--output=" + rebase_path(outputs[0], root_build_dir),
- "--manifest=" + rebase_path(update_manifests[0]),
- ]
-}
-
-# The amber index is the index of all requested packages, naming each meta.far
-# file instead of its merkleroot. Additionally the amber_index has the system
-# package itself, and the system update package.
-amber_index = "$target_out_dir/amber_index"
-
-action("amber_index") {
- visibility = [ ":amber_publish_index" ]
- testonly = true
-
- script = "manifest.py"
- args = [ "--absolute" ]
- outputs = [
- "$target_out_dir/$target_name",
- ]
- args += [ "--output=" + rebase_path(outputs[0], root_build_dir) ]
- sources = []
- deps = []
- foreach(pkg_label, available_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.amber_index.rsp"
- deps += [ "${pkg_label}.amber_index.rsp" ]
- sources += [ pkg_rspfile ]
- args += [ "@" + rebase_path(pkg_rspfile, root_build_dir) ]
- }
-
- system_image_meta_dir =
- get_label_info(":system_image.meta", "target_out_dir") +
- "/system_image.meta"
- system_image_meta_far = system_image_meta_dir + "/meta.far"
- args += [
- "--entry",
- "system_image/0=" + rebase_path(system_image_meta_far, root_build_dir),
- ]
- deps += [ ":system_image.meta" ]
-
- update_meta_dir =
- get_label_info(":update.meta", "target_out_dir") + "/update.meta"
- update_meta_far = update_meta_dir + "/meta.far"
- args += [
- "--entry",
- "update/0=" + rebase_path(update_meta_far, root_build_dir),
- ]
- deps += [ ":update.meta" ]
-}
-
-# The system index is the index of all available packages, naming each blobs.json
-# file instead of its merkleroot, and including a tag of the package set the
-# package is a part of (monolith/preinstall/available). Additionally the
-# system_index has the system package itself, and the system update package.
-system_index = "$target_out_dir/system_index"
-
-action("system_index") {
- visibility = [ ":system_snapshot" ]
- testonly = true
-
- script = "manifest.py"
- args = [ "--absolute" ]
- outputs = [
- "$target_out_dir/$target_name",
- ]
- args += [ "--output=" + rebase_path(outputs[0], root_build_dir) ]
- sources = []
- deps = []
- foreach(pkg_label, available_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.system_index.rsp"
- deps += [ "${pkg_label}.system_index.rsp" ]
- sources += [ pkg_rspfile ]
- args += [ "@" + rebase_path(pkg_rspfile, root_build_dir) ]
- }
-
- system_image_meta_dir =
- get_label_info(":system_image.meta", "target_out_dir") +
- "/system_image.meta"
- system_image_blobs_json = system_image_meta_dir + "/blobs.json"
- args += [
- "--entry",
- "system_image/0#monolith=" +
- rebase_path(system_image_blobs_json, root_build_dir),
- ]
- deps += [ ":system_image.meta" ]
-
- update_meta_dir =
- get_label_info(":update.meta", "target_out_dir") + "/update.meta"
- update_blobs_json = update_meta_dir + "/blobs.json"
- args += [
- "--entry",
- "update/0#monolith=" + rebase_path(update_blobs_json, root_build_dir),
- ]
- deps += [ ":update.meta" ]
-}
-
-compiled_action("system_snapshot") {
- tool = "//garnet/go/src/pm:pm_bin"
- tool_output_name = "pm"
-
- visibility = [ ":updates" ]
- testonly = true
-
- deps = [
- ":system_index",
- ]
-
- inputs = [
- system_index,
- ]
-
- outputs = [
- "$target_out_dir/system.snapshot",
- ]
-
- args = [
- "snapshot",
- "--manifest",
- rebase_path(inputs[0], root_build_dir),
- "--output",
- rebase_path(outputs[0], root_build_dir),
- ]
-}
-
-# Available blob manifest is a manifest of merkleroot=source_path for all blobs
-# in all packages produced by the build, including the system image and the
-# update package.
-available_blob_manifest = "$root_build_dir/available_blobs.manifest"
-action("available_blobs.manifest") {
- visibility = [ ":*" ]
- testonly = true
- outputs = [
- available_blob_manifest,
- ]
- depfile = available_blob_manifest + ".d"
- deps = [
- ":system_image.meta",
- ":update.meta",
- ]
- inputs = []
- script = "blob_manifest.py"
- args = [ "@{{response_file_name}}" ]
-
- response_file_contents = [
- "--output=" + rebase_path(available_blob_manifest, root_build_dir),
- "--depfile=" + rebase_path(depfile, root_build_dir),
- "--input=" + rebase_path("$target_out_dir/system_image.meta/blobs.json",
- root_build_dir),
- "--input=" +
- rebase_path("$target_out_dir/update.meta/blobs.json", root_build_dir),
- ]
- foreach(pkg_label, available_packages) {
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_blobs_rsp = "${pkg_target_out_dir}/${pkg_target_name}.blobs.rsp"
- deps += [ "${pkg_label}.blobs.rsp" ]
- inputs += [ pkg_blobs_rsp ]
- response_file_contents +=
- [ "@" + rebase_path(pkg_blobs_rsp, root_build_dir) ]
- }
-}
-
-# Populate the repository directory with content ID-named copies.
-action("amber_publish_blobs") {
- testonly = true
- outputs = [
- "$amber_repository_dir.stamp",
- ]
- deps = [
- ":available_blobs.manifest",
- ]
- inputs = []
- foreach(dep, deps) {
- inputs += get_target_outputs(dep)
- }
- script = "manifest.py"
- args = [
- "--copy-contentaddr",
- "--output=" + rebase_path(amber_repository_blobs_dir),
- "--stamp=" + rebase_path("$amber_repository_dir.stamp"),
- ]
- foreach(manifest, inputs) {
- args += [ "--manifest=" + rebase_path(manifest, root_build_dir) ]
- }
-}
-
-# Sign and publish the package index.
-pm_publish("amber_publish_index") {
- testonly = true
- deps = [
- ":amber_index",
- ]
- inputs = [
- amber_index,
- ]
-}
-
-group("updates") {
- testonly = true
- deps = [
- ":amber_publish_blobs",
- ":amber_publish_index",
- ":ids.txt",
- ":system_snapshot",
- ]
-}
-
-###
-### Build ID maps.
-###
-
-# Combine the /boot, /system, and package build ID maps into one.
-# Nothing in the build uses this, but top-level targets always update
-# it so that debugging tools can rely on it.
-action("ids.txt") {
- testonly = true
-
- deps = [
- ":kernel-ids.txt",
- ":system_image.manifest",
- ":zircon-asan-build-id",
- ":zircon-build-id",
- ]
- sources = [
- "$target_out_dir/kernel-ids.txt",
- system_build_id_map,
- ]
-
- foreach(pkg_label, available_packages) {
- # Find the ids.txt file written by package().
- manifest = get_label_info(pkg_label, "label_no_toolchain") +
- ".final.manifest.ids.txt"
- manifest_target_name = get_label_info(manifest, "name")
- manifest_target_out_dir = get_label_info(manifest, "target_out_dir")
- deps += [ manifest ]
- sources += [ "$manifest_target_out_dir/${manifest_target_name}" ]
- }
-
- script = "/usr/bin/sort"
- outputs = [
- "$root_out_dir/ids.txt",
- ]
- args = [
- "-u",
- "-o",
- ] + rebase_path(outputs + sources, root_build_dir)
-}
-
-# The vDSO doesn't appear in any package and so doesn't get into any
-# ids.txt file produced by generate_manifest(). But it appears in memory
-# at runtime and in backtraces, so it should be in the aggregated ids.txt
-# for symbolization. The vDSO doesn't appear in zircon_boot_manifests, so
-# fetching it out of Zircon's own ids.txt by name is the only thing to do.
-# Likewise for the kernel itself, whose build ID is useful to have in the map.
-action("kernel-ids.txt") {
- script = "manifest.py"
- sources = [
- "$zircon_build_dir/ids.txt",
- ]
- outputs = [
- "$target_out_dir/kernel-ids.txt",
- ]
- args = [
- "--separator= ",
- "--output=" + rebase_path(outputs[0], root_build_dir),
- "--include-source=*/libzircon.so",
- "--include-source=*/zircon.elf",
- "--manifest=" + rebase_path(sources[0], root_build_dir),
- ]
-}
-
-# TODO(TC-303): This is a temporary hack to get all of Zircon's debug files
-# into the $root_build_dir/.build-id hierarchy. The Zircon build produces
-# its own .build-id hierarchy under $zircon_build_dir, but using its ids.txt
-# is the simpler way to populate the one in this build. When ids.txt is fully
-# obsolete, hopefully Zircon will be in the unified build anyway.
-foreach(target,
- [
- {
- name = "zircon-build-id"
- sources = [
- "$zircon_build_dir/ids.txt",
- ]
- },
- {
- name = "zircon-asan-build-id"
- sources = [
- "$zircon_asan_build_dir/ids.txt",
- ]
- },
- ]) {
- action(target.name) {
- visibility = [ ":ids.txt" ]
- script = "//scripts/build_id_conv.py"
- sources = target.sources
- outputs = [
- "$root_build_dir/${target_name}.stamp",
- ]
- args =
- [ "--stamp=" + rebase_path(outputs[0], root_build_dir) ] +
- rebase_path(sources + [ "$root_build_dir/.build-id" ], root_build_dir)
- }
-}
-
-images += [
- {
- deps = [
- ":ids.txt",
- ]
- json = {
- name = "build-id"
- type = "txt"
- }
- },
-]
-
-write_images_manifest("images-manifest") {
- outputs = [
- "$root_build_dir/images.json",
- "$root_build_dir/image_paths.sh",
- ]
-}
-
-###
-### SDK
-###
-
-sdk_images = []
-
-foreach(image, images) {
- if (defined(image.sdk)) {
- image_target_name = "${image.sdk}_sdk"
- sdk_images += [ ":$image_target_name" ]
- sdk_atom(image_target_name) {
- id = "sdk://images/${image.sdk}"
- category = "partner"
- testonly = true
-
- file_content = "target/$target_cpu/${image.sdk}"
- meta = {
- dest = "images/${image.sdk}-meta.json"
- schema = "image"
- value = {
- type = "image"
- name = "${image.sdk}"
- root = "images"
- file = {
- if (target_cpu == "x64") {
- x64 = file_content
- } else if (target_cpu == "arm64") {
- arm64 = file_content
- } else {
- assert(false, "Unsupported target architecture: $target_cpu")
- }
- }
- }
- }
-
- image_sources = []
- if (defined(image.sources)) {
- image_sources += image.sources
- } else {
- foreach(label, image.deps) {
- image_sources += get_target_outputs(label)
- }
- }
-
- files = [
- {
- source = image_sources[0]
- dest = "target/$target_cpu/${image.sdk}"
- },
- ]
-
- non_sdk_deps = image.deps
- }
- }
-}
-
-sdk_molecule("images_sdk") {
- testonly = true
-
- deps = sdk_images
-}
diff --git a/images/blob_manifest.py b/images/blob_manifest.py
deleted file mode 100755
index ebcf25b..0000000
--- a/images/blob_manifest.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import sys
-import shlex
-
-def main():
- parser = argparse.ArgumentParser(
- description='Product a blobfs manifest from a set of blobs.json',
- fromfile_prefix_chars='@')
- parser.convert_arg_line_to_args = shlex.split
- parser.add_argument('--output', required=True,
- help='Output manifest path')
- parser.add_argument('--depfile', required=True,
- help='Dependency file output path')
- parser.add_argument('--input', action='append', default=[],
- help='Input blobs.json, repeated')
-
- args = parser.parse_args()
-
- all_blobs = dict()
-
- with open(args.depfile, 'w') as depfile:
- depfile.write(args.output)
- depfile.write(':')
- for path in args.input:
- depfile.write(' ' + path)
- with open(path) as input:
- blobs = json.load(input)
- for blob in blobs:
- src = blob['source_path']
- all_blobs[blob['merkle']] = src
- depfile.write(' ' + src)
-
- with open(args.output, 'w') as output:
- for merkle, src in all_blobs.items():
- output.write('%s=%s\n' % (merkle, src))
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/images/boot.gni b/images/boot.gni
deleted file mode 100644
index f66f0e8..0000000
--- a/images/boot.gni
+++ /dev/null
@@ -1,193 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/config/clang/clang.gni")
-import("//build/config/fuchsia/zircon.gni")
-
-# Build a "kernel partition" target for ChromeOS targets.
-#
-# Parameters
-#
-# deps (required)
-# [list of one label] Must be a `zbi()` target defined earlier in the file.
-#
-# output_name (optional, default: `target_name`)
-# output_extension (optional, default: `".vboot"`)
-# [string] Determines the file name, in `root_out_dir`.
-#
-template("vboot") {
- if (defined(invoker.output_name)) {
- output_file = invoker.output_name
- } else {
- output_file = target_name
- }
- if (defined(invoker.output_extension)) {
- if (invoker.output_extension != "") {
- output_file += ".${invoker.output_extension}"
- }
- } else {
- output_file += ".vboot"
- }
- output_file = "$root_out_dir/$output_file"
-
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
-
- tool = "//garnet/tools/vboot_reference:futility"
- outputs = [
- output_file,
- ]
-
- vboot_dir = "//third_party/vboot_reference"
- kernel_keyblock = "$vboot_dir/tests/devkeys/kernel.keyblock"
- private_keyblock = "$vboot_dir/tests/devkeys/kernel_data_key.vbprivk"
- inputs = [
- kernel_keyblock,
- private_keyblock,
- ]
-
- assert(defined(deps), "vboot() requires deps")
- zbi = []
- foreach(label, deps) {
- zbi += get_target_outputs(label)
- }
- inputs += zbi
- assert(zbi == [ zbi[0] ], "vboot() requires exactly one zbi() in deps")
-
- # The CrOS bootloader supports Multiboot (with `--flags 0x2` below).
- # The Multiboot trampoline is the "kernel" (`--vmlinuz` switch) and the
- # ZBI is the RAM disk (`--bootloader` switch).
- assert(current_cpu == "x64")
- kernel = "${zircon_build_dir}/multiboot.bin"
- inputs += [ kernel ]
-
- args = [
- "vbutil_kernel",
- "--pack",
- rebase_path(output_file),
- "--keyblock",
- rebase_path(kernel_keyblock),
- "--signprivate",
- rebase_path(private_keyblock),
- "--bootloader",
- rebase_path(zbi[0]),
- "--vmlinuz",
- rebase_path(kernel),
- "--version",
- "1",
- "--flags",
- "0x2",
- ]
- }
-}
-
-# Build an "EFI System Partition" target for EFI targets.
-#
-# Parameters
-#
-# deps (optional)
-# [list of labels] Targets that generate the other inputs.
-#
-# output_name (optional, default: `target_name`)
-# output_extension (optional, default: `".esp.blk"`)
-# [string] Determines the file name, in `root_out_dir`.
-#
-# bootdata_bin (optional)
-# [path] Must be a ramdisk that compliments zircon_bin.
-#
-# zircon_bin (optional)
-# [path] A zircon kernel.
-#
-# zedboot (optional)
-# [label] A Zedboot `zbi()` target.
-#
-# cmdline (optional)
-# [path] A bootloader (Gigaboot) cmdline file to include in the EFI root.
-#
-template("esp") {
- if (defined(invoker.output_name)) {
- output_file = invoker.output_name
- } else {
- output_file = target_name
- }
- if (defined(invoker.output_extension)) {
- if (invoker.output_extension != "") {
- output_file += ".${invoker.output_extension}"
- }
- } else {
- output_file += ".esp.blk"
- }
- output_file = "$root_out_dir/$output_file"
-
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- "visibility",
- ])
-
- tool = "//garnet/go/src/make-efi"
- mkfs_msdosfs_bin = "$zircon_tools_dir/mkfs-msdosfs"
-
- outputs = [
- output_file,
- ]
- inputs = [
- mkfs_msdosfs_bin,
- ]
- args = [
- "--output",
- rebase_path(output_file),
- "--mkfs",
- rebase_path(mkfs_msdosfs_bin),
- ]
-
- if (defined(invoker.zircon_bin)) {
- args += [
- "--zircon",
- rebase_path(invoker.zircon_bin),
- ]
- inputs += [ invoker.zircon_bin ]
- }
-
- if (defined(invoker.bootdata_bin)) {
- args += [
- "--bootdata",
- rebase_path(invoker.bootdata_bin),
- ]
- inputs += [ invoker.bootdata_bin ]
- }
-
- if (defined(invoker.zedboot)) {
- args += [
- "--zedboot",
- rebase_path(invoker.zedboot),
- ]
- inputs += [ invoker.zedboot ]
- }
-
- if (defined(invoker.cmdline)) {
- args += [
- "--cmdline",
- rebase_path(invoker.cmdline),
- ]
- }
-
- if (target_cpu == "x64") {
- gigaboot_bin = "${zircon_build_dir}/bootloader/bootx64.efi"
- args += [
- "--efi-bootloader",
- rebase_path(gigaboot_bin),
- ]
- inputs += [ gigaboot_bin ]
- }
- }
-}
diff --git a/images/create-shell-commands.py b/images/create-shell-commands.py
deleted file mode 100755
index 0b05d25..0000000
--- a/images/create-shell-commands.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import sys
-import os
-import shlex
-
-
-def main():
- parser = argparse.ArgumentParser(
- description='Create trampolines and a manifest for a set of shell commands',
- fromfile_prefix_chars='@')
- parser.convert_arg_line_to_args = shlex.split
- parser.add_argument('--trampoline-dir', required=True,
- help='Directory in which to create trampolines')
- parser.add_argument('--output-manifest', required=True,
- help='Output manifest path')
- parser.add_argument('--uri', action='append', default=[],
- help='A command URI to create an entry for')
-
- args = parser.parse_args()
-
- if not os.path.exists(args.trampoline_dir):
- os.makedirs(args.trampoline_dir)
-
- commands = dict()
-
- for uri in args.uri:
- name = uri.split('#')[-1]
- name = os.path.split(name)[-1]
- if name in commands:
- sys.stderr.write('Duplicate shell command name: %s\n' % name)
- return 1
- path = os.path.join(args.trampoline_dir, name)
- with open(path, 'w') as f:
- f.write('#!resolve %s\n' % uri)
- commands[name] = path
-
- with open(args.output_manifest, 'w') as output:
- for name, path in commands.items():
- output.write('bin/%s=%s\n' % (name, path))
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/images/custom_signing.gni b/images/custom_signing.gni
deleted file mode 100644
index 6a895a4..0000000
--- a/images/custom_signing.gni
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/fuchsia/zircon.gni")
-
-declare_args() {
- # If non-empty, the given script will be invoked to produce a signed ZBI
- # image. The given script must accept -z for the input zbi path, and -o for
- # the output signed zbi path. The path must be in GN-label syntax (i.e.
- # starts with //).
- custom_signing_script = ""
-
- # If true, then the paving script will pave vbmeta images to the target device.
- # It is assumed that the vbmeta image will be created by the custom_signing_script.
- use_vbmeta = false
-}
-
-# Template for producing signed ZBI images given a custom signing script.
-# The signing script is required to accept two parameters:
-# -z the path to the ZBI image to be signed
-# -o the path to the image file to be output
-# -v the path to the vbmeta file to be output (scripts not using AVB may ignore this)
-# -B the path to the zircon build directory
-#
-# TODO(BLD-323): add flags for producing depfiles
-# TODO(raggi): add support for custom flags (e.g. to switch keys)
-#
-# Paramters
-#
-# output_name (optional, default: target_name)
-# output_extension (optional, default: signed)
-# [string] These together determine the name of the output file.
-# If `output_name` is omitted, then the name of the target is
-# used. If `output_extension` is "" then `output_name` is the
-# file name; otherwise, `${output_name}.${output_extension}`;
-# the output file is always under `root_out_dir`.
-#
-# zbi (required)
-# [list-of-strings] path to a ZBI image to be signed. Must only
-# contain a single entry.
-#
-# deps (usually required)
-# visibility (optional)
-# testonly (optional)
-# Same as for any GN `action` target. `deps` must list labels that
-# produce all the `inputs`, `cmdline_inputs`, and `ramdisk_inputs`
-# that are generated by the build (none are required for inputs that
-# are part of the source tree).
-template("custom_signed_zbi") {
- if (defined(invoker.output_name)) {
- output_file = invoker.output_name
- } else {
- output_file = target_name
- }
-
- vbmeta_file = output_file + ".vbmeta"
-
- if (defined(invoker.output_extension)) {
- if (invoker.output_extension != "") {
- output_file += ".${invoker.output_extension}"
- }
- } else {
- output_file += ".signed"
- }
-
- forward_variables_from(invoker,
- [
- "testonly",
- "deps",
- "zbi",
- ])
-
- assert([ zbi[0] ] == zbi, "zbi parameter must contain a single entry")
-
- output_file = "$root_out_dir/$output_file"
- vbmeta_file = "$root_out_dir/$vbmeta_file"
- action(target_name) {
- script = custom_signing_script
-
- inputs = zbi
- outputs = [
- output_file,
- ]
- if (use_vbmeta) {
- outputs += [ vbmeta_file ]
- }
- args = [
- "-z",
- rebase_path(inputs[0], root_build_dir),
- "-o",
- rebase_path(outputs[0], root_build_dir),
- "-v",
- rebase_path(vbmeta_file, root_build_dir),
- "-B",
- rebase_path(zircon_build_dir, root_build_dir),
- ]
- }
-}
diff --git a/images/efi_local_cmdline.txt b/images/efi_local_cmdline.txt
deleted file mode 100644
index 2482a4b..0000000
--- a/images/efi_local_cmdline.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-bootloader.default=local
-bootloader.timeout=1
diff --git a/images/elfinfo.py b/images/elfinfo.py
deleted file mode 100755
index 3aa4806..0000000
--- a/images/elfinfo.py
+++ /dev/null
@@ -1,589 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-from contextlib import contextmanager
-from collections import namedtuple
-import mmap
-import os
-import struct
-
-
-# Standard ELF constants.
-ELFMAG = '\x7fELF'
-EI_CLASS = 4
-ELFCLASS32 = 1
-ELFCLASS64 = 2
-EI_DATA = 5
-ELFDATA2LSB = 1
-ELFDATA2MSB = 2
-EM_386 = 3
-EM_ARM = 40
-EM_X86_64 = 62
-EM_AARCH64 = 183
-PT_LOAD = 1
-PT_DYNAMIC = 2
-PT_INTERP = 3
-PT_NOTE = 4
-DT_NEEDED = 1
-DT_STRTAB = 5
-DT_SONAME = 14
-NT_GNU_BUILD_ID = 3
-SHT_SYMTAB = 2
-
-
-class elf_note(
- namedtuple('elf_note', [
- 'name',
- 'type',
- 'desc',
- ])):
-
- # An ELF note is identified by (name_string, type_integer).
- def ident(self):
- return (self.name, self.type)
-
- def is_build_id(self):
- return self.ident() == ('GNU\0', NT_GNU_BUILD_ID)
-
- def build_id_hex(self):
- if self.is_build_id():
- return ''.join(('%02x' % ord(byte)) for byte in self.desc)
- return None
-
- def __repr__(self):
- return ('elf_note(%r, %#x, <%d bytes>)' %
- (self.name, self.type, len(self.desc)))
-
-
-def gen_elf():
- # { 'Struct1': (ELFCLASS32 fields, ELFCLASS64 fields),
- # 'Struct2': fields_same_for_both, ... }
- elf_types = {
- 'Ehdr': ([
- ('e_ident', '16s'),
- ('e_type', 'H'),
- ('e_machine', 'H'),
- ('e_version', 'I'),
- ('e_entry', 'I'),
- ('e_phoff', 'I'),
- ('e_shoff', 'I'),
- ('e_flags', 'I'),
- ('e_ehsize', 'H'),
- ('e_phentsize', 'H'),
- ('e_phnum', 'H'),
- ('e_shentsize', 'H'),
- ('e_shnum', 'H'),
- ('e_shstrndx', 'H'),
- ], [
- ('e_ident', '16s'),
- ('e_type', 'H'),
- ('e_machine', 'H'),
- ('e_version', 'I'),
- ('e_entry', 'Q'),
- ('e_phoff', 'Q'),
- ('e_shoff', 'Q'),
- ('e_flags', 'I'),
- ('e_ehsize', 'H'),
- ('e_phentsize', 'H'),
- ('e_phnum', 'H'),
- ('e_shentsize', 'H'),
- ('e_shnum', 'H'),
- ('e_shstrndx', 'H'),
- ]),
- 'Phdr': ([
- ('p_type', 'I'),
- ('p_offset', 'I'),
- ('p_vaddr', 'I'),
- ('p_paddr', 'I'),
- ('p_filesz', 'I'),
- ('p_memsz', 'I'),
- ('p_flags', 'I'),
- ('p_align', 'I'),
- ], [
- ('p_type', 'I'),
- ('p_flags', 'I'),
- ('p_offset', 'Q'),
- ('p_vaddr', 'Q'),
- ('p_paddr', 'Q'),
- ('p_filesz', 'Q'),
- ('p_memsz', 'Q'),
- ('p_align', 'Q'),
- ]),
- 'Shdr': ([
- ('sh_name', 'L'),
- ('sh_type', 'L'),
- ('sh_flags', 'L'),
- ('sh_addr', 'L'),
- ('sh_offset', 'L'),
- ('sh_size', 'L'),
- ('sh_link', 'L'),
- ('sh_info', 'L'),
- ('sh_addralign', 'L'),
- ('sh_entsize', 'L'),
- ], [
- ('sh_name', 'L'),
- ('sh_type', 'L'),
- ('sh_flags', 'Q'),
- ('sh_addr', 'Q'),
- ('sh_offset', 'Q'),
- ('sh_size', 'Q'),
- ('sh_link', 'L'),
- ('sh_info', 'L'),
- ('sh_addralign', 'Q'),
- ('sh_entsize', 'Q'),
- ]),
- 'Dyn': ([
- ('d_tag', 'i'),
- ('d_val', 'I'),
- ], [
- ('d_tag', 'q'),
- ('d_val', 'Q'),
- ]),
- 'Nhdr': [
- ('n_namesz', 'I'),
- ('n_descsz', 'I'),
- ('n_type', 'I'),
- ],
- 'dwarf2_line_header': [
- ('unit_length', 'L'),
- ('version', 'H'),
- ('header_length', 'L'),
- ('minimum_instruction_length', 'B'),
- ('default_is_stmt', 'B'),
- ('line_base', 'b'),
- ('line_range', 'B'),
- ('opcode_base', 'B'),
- ],
- 'dwarf4_line_header': [
- ('unit_length', 'L'),
- ('version', 'H'),
- ('header_length', 'L'),
- ('minimum_instruction_length', 'B'),
- ('maximum_operations_per_instruction', 'B'),
- ('default_is_stmt', 'B'),
- ('line_base', 'b'),
- ('line_range', 'b'),
- ('opcode_base', 'B'),
- ],
- }
-
- # There is an accessor for each struct, e.g. Ehdr.
- # Ehdr.read is a function like Struct.unpack_from.
- # Ehdr.size is the size of the struct.
- elf_accessor = namedtuple('elf_accessor',
- ['size', 'read', 'write', 'pack'])
-
- # All the accessors for a format (class, byte-order) form one elf,
- # e.g. use elf.Ehdr and elf.Phdr.
- elf = namedtuple('elf', elf_types.keys())
-
- def gen_accessors(is64, struct_byte_order):
- def make_accessor(type, decoder):
- return elf_accessor(
- size=decoder.size,
- read=lambda buffer, offset=0: type._make(
- decoder.unpack_from(buffer, offset)),
- write=lambda buffer, offset, x: decoder.pack_into(
- buffer, offset, *x),
- pack=lambda x: decoder.pack(*x))
- for name, fields in elf_types.iteritems():
- if isinstance(fields, tuple):
- fields = fields[1 if is64 else 0]
- type = namedtuple(name, [field_name for field_name, fmt in fields])
- decoder = struct.Struct(struct_byte_order +
- ''.join(fmt for field_name, fmt in fields))
- yield make_accessor(type, decoder)
-
- for elfclass, is64 in [(ELFCLASS32, False), (ELFCLASS64, True)]:
- for elf_bo, struct_bo in [(ELFDATA2LSB, '<'), (ELFDATA2MSB, '>')]:
- yield ((chr(elfclass), chr(elf_bo)),
- elf(*gen_accessors(is64, struct_bo)))
-
-# e.g. ELF[file[EI_CLASS], file[EI_DATA]].Ehdr.read(file).e_phnum
-ELF = dict(gen_elf())
-
-def get_elf_accessor(file):
- # If it looks like an ELF file, whip out the decoder ring.
- if file[:len(ELFMAG)] == ELFMAG:
- return ELF[file[EI_CLASS], file[EI_DATA]]
- return None
-
-
-def gen_phdrs(file, elf, ehdr):
- for pos in xrange(0, ehdr.e_phnum * elf.Phdr.size, elf.Phdr.size):
- yield elf.Phdr.read(file, ehdr.e_phoff + pos)
-
-
-def gen_shdrs(file, elf, ehdr):
- for pos in xrange(0, ehdr.e_shnum * elf.Shdr.size, elf.Shdr.size):
- yield elf.Shdr.read(file, ehdr.e_shoff + pos)
-
-
-cpu = namedtuple('cpu', [
- 'e_machine', # ELF e_machine int
- 'llvm', # LLVM triple CPU component
- 'gn', # GN target_cpu
-])
-
-ELF_MACHINE_TO_CPU = {elf: cpu(elf, llvm, gn) for elf, llvm, gn in [
- (EM_386, 'i386', 'x86'),
- (EM_ARM, 'arm', 'arm'),
- (EM_X86_64, 'x86_64', 'x64'),
- (EM_AARCH64, 'aarch64', 'arm64'),
-]}
-
-
-@contextmanager
-def mmapper(filename):
- """A context manager that yields (fd, file_contents) given a file name.
-This ensures that the mmap and file objects are closed at the end of the
-'with' statement."""
- fileobj = open(filename, 'rb')
- fd = fileobj.fileno()
- if os.fstat(fd).st_size == 0:
- # mmap can't handle empty files.
- try:
- yield fd, ''
- finally:
- fileobj.close()
- else:
- mmapobj = mmap.mmap(fd, 0, access=mmap.ACCESS_READ)
- try:
- yield fd, mmapobj
- finally:
- mmapobj.close()
- fileobj.close()
-
-
-# elf_info objects are only created by `get_elf_info` or the `copy` or
-# `rename` methods.
-class elf_info(
- namedtuple('elf_info', [
- 'filename',
- 'cpu', # cpu tuple
- 'notes', # list of (ident, desc): selected notes
- 'build_id', # string: lowercase hex
- 'stripped', # bool: Has no symbols or .debug_* sections
- 'interp', # string or None: PT_INTERP (without \0)
- 'soname', # string or None: DT_SONAME
- 'needed', # list of strings: DT_NEEDED
- ])):
-
- def rename(self, filename):
- assert os.path.samefile(self.filename, filename)
- # Copy the tuple.
- clone = self.__class__(filename, *self[1:])
- # Copy the lazy state.
- clone.elf = self.elf
- if self.get_sources == clone.get_sources:
- raise Exception("uninitialized elf_info object!")
- clone.get_sources = self.get_sources
- return clone
-
- def copy(self):
- return self.rename(self.filename)
-
- # This is replaced with a closure by the creator in get_elf_info.
- def get_sources(self):
- raise Exception("uninitialized elf_info object!")
-
- def strip(self, stripped_filename):
- """Write stripped output to the given file unless it already exists
-with identical contents. Returns True iff the file was changed."""
- with mmapper(self.filename) as mapped:
- fd, file = mapped
- ehdr = self.elf.Ehdr.read(file)
-
- stripped_ehdr = ehdr._replace(e_shoff=0, e_shnum=0, e_shstrndx=0)
- stripped_size = max(phdr.p_offset + phdr.p_filesz
- for phdr in gen_phdrs(file, self.elf, ehdr)
- if phdr.p_type == PT_LOAD)
- assert ehdr.e_phoff + (ehdr.e_phnum *
- ehdr.e_phentsize) <= stripped_size
-
- def gen_stripped_contents():
- yield self.elf.Ehdr.pack(stripped_ehdr)
- yield file[self.elf.Ehdr.size:stripped_size]
-
- def old_file_matches():
- old_size = os.path.getsize(stripped_filename)
- new_size = sum(len(x) for x in gen_stripped_contents())
- if old_size != new_size:
- return False
- with open(stripped_filename, 'rb') as f:
- for chunk in gen_stripped_contents():
- if f.read(len(chunk)) != chunk:
- return False
- return True
-
- if os.path.exists(stripped_filename):
- if old_file_matches():
- return False
- else:
- os.remove(stripped_filename)
-
- # Create the new file with the same mode as the original.
- with os.fdopen(os.open(stripped_filename,
- os.O_WRONLY | os.O_CREAT | os.O_EXCL,
- os.fstat(fd).st_mode & 0777),
- 'wb') as stripped_file:
- stripped_file.write(self.elf.Ehdr.pack(stripped_ehdr))
- stripped_file.write(file[self.elf.Ehdr.size:stripped_size])
- return True
-
-def get_elf_info(filename, match_notes=False):
- file = None
- elf = None
- ehdr = None
- phdrs = None
-
- # Yields an elf_note for each note in any PT_NOTE segment.
- def gen_notes():
- def round_up_to(size):
- return ((size + 3) / 4) * 4
- for phdr in phdrs:
- if phdr.p_type == PT_NOTE:
- pos = phdr.p_offset
- while pos < phdr.p_offset + phdr.p_filesz:
- nhdr = elf.Nhdr.read(file, pos)
- pos += elf.Nhdr.size
- name = file[pos:pos + nhdr.n_namesz]
- pos += round_up_to(nhdr.n_namesz)
- desc = file[pos:pos + nhdr.n_descsz]
- pos += round_up_to(nhdr.n_descsz)
- yield elf_note(name, nhdr.n_type, desc)
-
- def gen_sections():
- shdrs = list(gen_shdrs(file, elf, ehdr))
- if not shdrs:
- return
- strtab_shdr = shdrs[ehdr.e_shstrndx]
- for shdr, i in zip(shdrs, xrange(len(shdrs))):
- if i == 0:
- continue
- assert shdr.sh_name < strtab_shdr.sh_size, (
- "%s: invalid sh_name" % filename)
- yield (shdr,
- extract_C_string(strtab_shdr.sh_offset + shdr.sh_name))
-
- # Generates '\0'-terminated strings starting at the given offset,
- # until an empty string.
- def gen_strings(start):
- while True:
- end = file.find('\0', start)
- assert end >= start, (
- "%s: Unterminated string at %#x" % (filename, start))
- if start == end:
- break
- yield file[start:end]
- start = end + 1
-
- def extract_C_string(start):
- for string in gen_strings(start):
- return string
- return ''
-
- # Returns a string of hex digits (or None).
- def get_build_id():
- build_id = None
- for note in gen_notes():
- # Note that the last build_id note needs to be used due to TO-442.
- possible_build_id = note.build_id_hex()
- if possible_build_id:
- build_id = possible_build_id
- return build_id
-
- # Returns a list of elf_note objects.
- def get_matching_notes():
- if isinstance(match_notes, bool):
- if match_notes:
- return list(gen_notes())
- else:
- return []
- # If not a bool, it's an iterable of ident pairs.
- return [note for note in gen_notes() if note.ident() in match_notes]
-
- # Returns a string (without trailing '\0'), or None.
- def get_interp():
- # PT_INTERP points directly to a string in the file.
- for interp in (phdr for phdr in phdrs if phdr.p_type == PT_INTERP):
- interp = file[interp.p_offset:interp.p_offset + interp.p_filesz]
- if interp[-1:] == '\0':
- interp = interp[:-1]
- return interp
- return None
-
- # Returns a set of strings.
- def get_soname_and_needed():
- # Each DT_NEEDED or DT_SONAME points to a string in the .dynstr table.
- def GenDTStrings(tag):
- return (extract_C_string(strtab_offset + dt.d_val)
- for dt in dyn if dt.d_tag == tag)
-
- # PT_DYNAMIC points to the list of ElfNN_Dyn tags.
- for dynamic in (phdr for phdr in phdrs if phdr.p_type == PT_DYNAMIC):
- dyn = [elf.Dyn.read(file, dynamic.p_offset + dyn_offset)
- for dyn_offset in xrange(0, dynamic.p_filesz, elf.Dyn.size)]
-
- # DT_STRTAB points to the string table's vaddr (.dynstr).
- [strtab_vaddr] = [dt.d_val for dt in dyn if dt.d_tag == DT_STRTAB]
-
- # Find the PT_LOAD containing the vaddr to compute the file offset.
- [strtab_offset] = [
- strtab_vaddr - phdr.p_vaddr + phdr.p_offset
- for phdr in phdrs
- if (phdr.p_type == PT_LOAD and
- phdr.p_vaddr <= strtab_vaddr and
- strtab_vaddr - phdr.p_vaddr < phdr.p_filesz)
- ]
-
- soname = None
- for soname in GenDTStrings(DT_SONAME):
- break
-
- return soname, set(GenDTStrings(DT_NEEDED))
- return None, set()
-
- def get_stripped():
- return all(
- shdr.sh_type != SHT_SYMTAB and not name.startswith('.debug_')
- for shdr, name in gen_sections())
-
- def get_cpu():
- return ELF_MACHINE_TO_CPU.get(ehdr.e_machine)
-
- def gen_source_files():
- # Given the file position of a CU header (starting with the
- # beginning of the .debug_line section), return the position
- # of the include_directories portion and the position of the
- # next CU header.
- def read_line_header(pos):
- # Decode DWARF .debug_line per-CU header.
- hdr_type = elf.dwarf2_line_header
- hdr = hdr_type.read(file, pos)
- assert hdr.unit_length < 0xfffffff0, (
- "%s: 64-bit DWARF" % filename)
- assert hdr.version in [2,3,4], (
- "%s: DWARF .debug_line version %r" %
- (filename, hdr.version))
- if hdr.version == 4:
- hdr_type = elf.dwarf4_line_header
- hdr = hdr_type.read(file, pos)
- return (pos + hdr_type.size + hdr.opcode_base - 1,
- pos + 4 + hdr.unit_length)
-
- # Decode include_directories portion of DWARF .debug_line format.
- def read_include_dirs(pos):
- include_dirs = list(gen_strings(pos))
- pos += sum(len(dir) + 1 for dir in include_dirs) + 1
- return pos, include_dirs
-
- # Decode file_paths portion of DWARF .debug_line format.
- def gen_file_paths(start, limit):
- while start < limit:
- end = file.find('\0', start, limit)
- assert end >= start, (
- "%s: Unterminated string at %#x" % (filename, start))
- if start == end:
- break
- name = file[start:end]
- start = end + 1
- # Decode 3 ULEB128s to advance start, but only use the first.
- for i in range(3):
- value = 0
- bits = 0
- while start < limit:
- byte = ord(file[start])
- start += 1
- value |= (byte & 0x7f) << bits
- if (byte & 0x80) == 0:
- break
- bits += 7
- if i == 0:
- include_idx = value
- # Ignore the fake file names the compiler leaks into the DWARF.
- if name not in ['<stdin>', '<command-line>']:
- yield name, include_idx
-
- for shdr, name in gen_sections():
- if name == '.debug_line':
- next = shdr.sh_offset
- while next < shdr.sh_offset + shdr.sh_size:
- pos, next = read_line_header(next)
-
- pos, include_dirs = read_include_dirs(pos)
- assert pos <= next
-
- # 0 means relative to DW_AT_comp_dir, which should be ".".
- # Indices into the actual table start at 1.
- include_dirs.insert(0, '')
-
- # Decode file_paths and apply include directories.
- for name, i in gen_file_paths(pos, next):
- name = os.path.join(include_dirs[i], name)
- yield os.path.normpath(name)
-
- # This closure becomes the elf_info object's `get_sources` method.
- def lazy_get_sources():
- # Run the generator and cache its results as a set.
- sources_cache = set(gen_source_files())
- # Replace the method to just return the cached set next time.
- info.get_sources = lambda: sources_cache
- return sources_cache
-
- # Map in the whole file's contents and use it as a string.
- with mmapper(filename) as mapped:
- fd, file = mapped
- elf = get_elf_accessor(file)
- if elf is not None:
- # ELF header leads to program headers.
- ehdr = elf.Ehdr.read(file)
- assert ehdr.e_phentsize == elf.Phdr.size, (
- "%s: invalid e_phentsize" % filename)
- phdrs = list(gen_phdrs(file, elf, ehdr))
- info = elf_info(filename,
- get_cpu(),
- get_matching_notes(),
- get_build_id(),
- get_stripped(),
- get_interp(),
- *get_soname_and_needed())
- info.elf = elf
- info.get_sources = lazy_get_sources
- return info
-
- return None
-
-
-# Module public API.
-__all__ = ['cpu', 'elf_info', 'elf_note', 'get_elf_accessor', 'get_elf_info']
-
-
-def test_main_strip(filenames):
- for filename in filenames:
- info = get_elf_info(filename)
- print info
- stripped_filename = info.filename + '.ei-strip'
- info.strip(stripped_filename)
- print '\t%s: %u -> %u' % (stripped_filename,
- os.stat(filename).st_size,
- os.stat(stripped_filename).st_size)
-
-
-def test_main_get_info(filenames):
- for filename in filenames:
- info = get_elf_info(filename)
- print info
- for source in info.get_sources():
- print '\t' + source
-
-
-# For manual testing.
-if __name__ == "__main__":
- import sys
- if sys.argv[1] == '-strip':
- test_main_strip(sys.argv[2:])
- else:
- test_main_get_info(sys.argv[1:])
diff --git a/images/finalize_manifests.py b/images/finalize_manifests.py
deleted file mode 100755
index cb05b79..0000000
--- a/images/finalize_manifests.py
+++ /dev/null
@@ -1,440 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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 tool takes in multiple manifest files:
- * system image and archive manifest files from each package
- * Zircon's bootfs.manifest, optionally using a subset selected by the
- "group" syntax (e.g. could specify just "core", or "core,misc" or
- "core,misc,test").
- * "auxiliary" manifests
- ** one from the toolchain for the target libraries (libc++ et al)
- ** one from the build-zircon/*-ulib build, which has the Zircon ASan libraries
- ** the unselected parts of the "main" manifests (i.e. Zircon)
-
-It emits final /boot and /system manifests used to make the actual images,
-final archive manifests used to make each package, and the build ID map.
-
-The "auxiliary" manifests just supply a pool of files that might be used to
-satisfy dependencies; their files are not included in the output a priori.
-
-The tool examines each file in its main input manifests. If it's not an
-ELF file, it just goes into the appropriate output manifest. If it's an
-ELF file, then the tool figures out what "variant" it is (if any), such as
-"asan" and what other ELF files it requires via PT_INTERP and DT_NEEDED.
-It then finds those dependencies and includes them in the output manifest,
-and iterates on their dependencies. Each dependency is found either in the
-*-shared/ toolchain $root_out_dir for the same variant toolchain that built
-the root file, or among the files in auxiliary manifests (i.e. toolchain
-and Zircon libraries). For things built in the asan variant, it finds the
-asan versions of the toolchain/Zircon libraries.
-"""
-
-from collections import namedtuple
-import argparse
-import fnmatch
-import itertools
-import manifest
-import os
-import sys
-import variant
-
-
-binary_info = variant.binary_info
-
-# An entry for a binary is (manifest.manifest_entry, elfinfo.elf_info).
-binary_entry = namedtuple('binary_entry', ['entry', 'info'])
-
-# In recursions of CollectBinaries.AddBinary, this is the type of the
-# context argument.
-binary_context = namedtuple('binary_context', [
- 'variant',
- 'soname_map',
- 'root_dependent',
-])
-
-# Each --output argument yields an output_manifest tuple.
-output_manifest = namedtuple('output_manifest', ['file', 'manifest'])
-
-# Each --binary argument yields a input_binary tuple.
-input_binary = namedtuple('input_binary', ['target_pattern', 'output_group'])
-
-
-# Collect all the binaries from auxiliary manifests into
-# a dictionary mapping entry.target to binary_entry.
-def collect_auxiliaries(manifest, examined):
- aux_binaries = {}
- for entry in manifest:
- examined.add(entry.source)
- info = binary_info(entry.source)
- if info:
- new_binary = binary_entry(entry, info)
- binary = aux_binaries.setdefault(entry.target, new_binary)
- if binary.entry.source != new_binary.entry.source:
- raise Exception(
- "'%s' in both %r and %r" %
- (entry.target, binary.entry, entry))
- return aux_binaries
-
-
-# Return an iterable of binary_entry for all the binaries in `manifest` and
-# `input_binaries` and their dependencies from `aux_binaries`, and an
-# iterable of manifest_entry for all the other files in `manifest`.
-def collect_binaries(manifest, input_binaries, aux_binaries, examined):
- # As we go, we'll collect the actual binaries for the output
- # in this dictionary mapping entry.target to binary_entry.
- binaries = {}
-
- # We'll collect entries in the manifest that aren't binaries here.
- nonbinaries = []
-
- # This maps GN toolchain (from variant.shared_toolchain) to a
- # dictionary mapping DT_SONAME string to binary_entry.
- soname_map_by_toolchain = {}
-
- def rewrite_binary_group(old_binary, group_override):
- return binary_entry(
- old_binary.entry._replace(group=group_override),
- old_binary.info)
-
- def add_binary(binary, context=None, auxiliary=False):
- # Add a binary by target name.
- def add_auxiliary(target, required, group_override=None):
- if group_override is None:
- group_override = binary.entry.group
- aux_context = context
- else:
- aux_context = None
- # Look for the target in auxiliary manifests.
- aux_binary = aux_binaries.get(target)
- if required:
- assert aux_binary, (
- "'%s' not in auxiliary manifests, needed by %r via %r" %
- (target, binary.entry, context.root_dependent))
- if aux_binary:
- add_binary(rewrite_binary_group(aux_binary, group_override),
- aux_context, True)
- return True
- return False
-
- existing_binary = binaries.get(binary.entry.target)
- if existing_binary is not None:
- if existing_binary.entry.source != binary.entry.source:
- raise Exception("%r in both %r and %r" %
- (binary.entry.target, existing_binary, binary))
- # If the old record was in a later group, we still need to
- # process all the dependencies again to promote them to
- # the new group too.
- if existing_binary.entry.group <= binary.entry.group:
- return
-
- examined.add(binary.entry.source)
-
- # If we're not part of a recursion, discover the binary's context.
- if context is None:
- binary_variant, variant_file = variant.find_variant(binary.info)
- if variant_file is not None:
- # This is a variant that was actually built in a different
- # place than its original name says. Rewrite everything to
- # refer to the "real" name.
- binary = binary_entry(binary.entry._replace(source=variant_file),
- binary.info.rename(variant_file))
- examined.add(variant_file)
- context = binary_context(binary_variant,
- soname_map_by_toolchain.setdefault(
- binary_variant.shared_toolchain, {}),
- binary)
-
- binaries[binary.entry.target] = binary
- assert binary.entry.group is not None, binary
-
- if binary.info.soname:
- # This binary has a SONAME, so record it in the map.
- soname_binary = context.soname_map.setdefault(binary.info.soname,
- binary)
- if soname_binary.entry.source != binary.entry.source:
- raise Exception(
- "SONAME '%s' in both %r and %r" %
- (binary.info.soname, soname_binary, binary))
- if binary.entry.group < soname_binary.entry.group:
- # Update the record to the earliest group.
- context.soname_map[binary.info.soname] = binary
-
- # The PT_INTERP is implicitly required from an auxiliary manifest.
- if binary.info.interp:
- add_auxiliary('lib/' + binary.info.interp, True)
-
- # The variant might require other auxiliary binaries too.
- for variant_aux, variant_aux_group in context.variant.aux:
- add_auxiliary(variant_aux, True, variant_aux_group)
-
- # Handle the DT_NEEDED list.
- for soname in binary.info.needed:
- # The vDSO is not actually a file.
- if soname == 'libzircon.so':
- continue
-
- lib = context.soname_map.get(soname)
- if lib and lib.entry.group <= binary.entry.group:
- # Already handled this one in the same or earlier group.
- continue
-
- # The DT_SONAME is libc.so, but the file is ld.so.1 on disk.
- if soname == 'libc.so':
- soname = 'ld.so.1'
-
- # Translate the SONAME to a target file name.
- target = ('lib/' +
- ('' if soname == context.variant.runtime
- else context.variant.libprefix) +
- soname)
- if add_auxiliary(target, auxiliary):
- # We found it in an existing manifest.
- continue
-
- # An auxiliary's dependencies must all be auxiliaries too.
- assert not auxiliary, (
- "missing '%s' needed by auxiliary %r via %r" %
- (target, binary, context.root_dependent))
-
- # It must be in the shared_toolchain output directory.
- # Context like group is inherited from the dependent.
- lib_entry = binary.entry._replace(
- source=os.path.join(context.variant.shared_toolchain, soname),
- target=target)
-
- assert os.path.exists(lib_entry.source), (
- "missing %r needed by %r via %r" %
- (lib_entry, binary, context.root_dependent))
-
- # Read its ELF info and sanity-check.
- lib = binary_entry(lib_entry, binary_info(lib_entry.source))
- assert lib.info and lib.info.soname == soname, (
- "SONAME '%s' expected in %r, needed by %r via %r" %
- (soname, lib, binary, context.root_dependent))
-
- # Recurse.
- add_binary(lib, context)
-
- for entry in manifest:
- try:
- info = None
- # Don't inspect data resources in the manifest. Regardless of the
- # bits in these files, we treat them as opaque data.
- if not entry.target.startswith('data/'):
- info = binary_info(entry.source)
- except IOError as e:
- raise Exception('%s from %s' % (e, entry))
- if info:
- add_binary(binary_entry(entry, info))
- else:
- nonbinaries.append(entry)
-
- matched_binaries = set()
- for input_binary in input_binaries:
- matches = fnmatch.filter(aux_binaries.iterkeys(),
- input_binary.target_pattern)
- assert matches, (
- "--input-binary='%s' did not match any binaries" %
- input_binary.target_pattern)
- for target in matches:
- assert target not in matched_binaries, (
- "'%s' matched by multiple --input-binary patterns" % target)
- matched_binaries.add(target)
- add_binary(rewrite_binary_group(aux_binaries[target],
- input_binary.output_group),
- auxiliary=True)
-
- return binaries.itervalues(), nonbinaries
-
-
-# Take an iterable of binary_entry, and return list of binary_entry (all
-# stripped files), a list of binary_info (all debug files), and a boolean
-# saying whether any new stripped output files were written in the process.
-def strip_binary_manifest(manifest, stripped_dir, examined):
- new_output = False
-
- def find_debug_file(filename):
- # In the Zircon makefile build, the file to be installed is called
- # foo.strip and the unstripped file is called foo. In the GN build,
- # the file to be installed is called foo and the unstripped file has
- # the same name in the exe.unstripped or lib.unstripped subdirectory.
- if filename.endswith('.strip'):
- debugfile = filename[:-6]
- else:
- dir, file = os.path.split(filename)
- if file.endswith('.so') or '.so.' in file:
- subdir = 'lib.unstripped'
- else:
- subdir = 'exe.unstripped'
- debugfile = os.path.join(dir, subdir, file)
- while not os.path.exists(debugfile):
- # For dir/foo/bar, if dir/foo/exe.unstripped/bar
- # didn't exist, try dir/exe.unstripped/foo/bar.
- parent, dir = os.path.split(dir)
- if not parent or not dir:
- return None
- dir, file = parent, os.path.join(dir, file)
- debugfile = os.path.join(dir, subdir, file)
- if not os.path.exists(debugfile):
- debugfile = os.path.join(subdir, filename)
- if not os.path.exists(debugfile):
- return None
- debug = binary_info(debugfile)
- assert debug, ("Debug file '%s' for '%s' is invalid" %
- (debugfile, filename))
- examined.add(debugfile)
- return debug
-
- # The toolchain-supplied shared libraries, and Go binaries, are
- # delivered unstripped. For these, strip the binary right here and
- # update the manifest entry to point to the stripped file.
- def make_debug_file(entry, info):
- debug = info
- stripped = os.path.join(stripped_dir, entry.target)
- dir = os.path.dirname(stripped)
- if not os.path.isdir(dir):
- os.makedirs(dir)
- if info.strip(stripped):
- new_output = True
- info = binary_info(stripped)
- assert info, ("Stripped file '%s' for '%s' is invalid" %
- (stripped, debug.filename))
- examined.add(debug.filename)
- examined.add(stripped)
- return entry._replace(source=stripped), info, debug
-
- stripped_manifest = []
- debug_list = []
- for entry, info in manifest:
- assert entry.source == info.filename
- if info.stripped:
- debug = find_debug_file(info.filename)
- else:
- entry, info, debug = make_debug_file(entry, info)
- stripped_manifest.append(binary_entry(entry, info))
- if debug is None:
- print 'WARNING: no debug file found for %s' % info.filename
- continue
- assert debug.build_id, "'%s' has no build ID" % debug.filename
- assert not debug.stripped, "'%s' is stripped" % debug.filename
- assert info == debug._replace(filename=info.filename, stripped=True), (
- "Debug file mismatch: %r vs %r" % (info, debug))
- debug_list.append(debug)
-
- return stripped_manifest, debug_list, new_output
-
-
-def emit_manifests(args, selected, unselected, input_binaries):
- def update_file(file, contents, force=False):
- if (not force and
- os.path.exists(file) and
- os.path.getsize(file) == len(contents)):
- with open(file, 'r') as f:
- if f.read() == contents:
- return
- with open(file, 'w') as f:
- f.write(contents)
-
- # The name of every file we examine to make decisions goes into this set.
- examined = set(args.manifest)
-
- # Collect all the inputs and reify.
- aux_binaries = collect_auxiliaries(unselected, examined)
- binaries, nonbinaries = collect_binaries(selected, input_binaries,
- aux_binaries, examined)
-
- # Prepare to collate groups.
- outputs = [output_manifest(file, []) for file in args.output]
-
- # Finalize the output binaries. If stripping wrote any new/changed files,
- # then force an update of the manifest file even if it's identical. The
- # manifest file's timestamp is what GN/Ninja sees as running this script
- # having touched any of its outputs, and GN/Ninja doesn't know that the
- # stripped files are implicit outputs (there's no such thing as a depfile
- # for outputs, only for inputs).
- binaries, debug_files, force_update = strip_binary_manifest(
- binaries, args.stripped_dir, examined)
-
- # Collate groups.
- for entry in itertools.chain((binary.entry for binary in binaries),
- nonbinaries):
- outputs[entry.group].manifest.append(entry._replace(group=None))
-
- all_binaries = {binary.info.build_id: binary.entry for binary in binaries}
- all_debug_files = {info.build_id: info for info in debug_files}
-
- # Emit each primary manifest.
- for output in outputs:
- depfile_output = output.file
- # Sort so that functionally identical output is textually
- # identical.
- output.manifest.sort(key=lambda entry: entry.target)
- update_file(output.file,
- manifest.format_manifest_file(output.manifest),
- force_update)
-
- # Emit the build ID list.
- # Sort so that functionally identical output is textually identical.
- debug_files = sorted(all_debug_files.itervalues(),
- key=lambda info: info.build_id)
- update_file(args.build_id_file, ''.join(
- info.build_id + ' ' + os.path.abspath(info.filename) + '\n'
- for info in debug_files))
-
- # Emit the depfile.
- if args.depfile:
- with open(args.depfile, 'w') as f:
- f.write(depfile_output + ':')
- for file in sorted(examined):
- f.write(' ' + file)
- f.write('\n')
-
-
-class input_binary_action(argparse.Action):
- def __call__(self, parser, namespace, values, option_string=None):
- binaries = getattr(namespace, self.dest, None)
- if binaries is None:
- binaries = []
- setattr(namespace, self.dest, binaries)
- outputs = getattr(namespace, 'output', None)
- output_group = len(outputs) - 1
- binaries.append(input_binary(values, output_group))
-
-
-def parse_args():
- parser = argparse.ArgumentParser(description='''
-Massage manifest files from the build to produce images.
-''',
- epilog='''
-The --cwd and --group options apply to subsequent --manifest arguments.
-Each input --manifest is assigned to the preceding --output argument file.
-Any input --manifest that precedes all --output arguments
-just supplies auxiliary files implicitly required by other (later) input
-manifests, but does not add all its files to any --output manifest. This
-is used for shared libraries and the like.
-''')
- parser.add_argument('--build-id-file', required=True,
- metavar='FILE',
- help='Output build ID list')
- parser.add_argument('--depfile',
- metavar='DEPFILE',
- help='Ninja depfile to write')
- parser.add_argument('--binary', action=input_binary_action, default=[],
- metavar='PATH',
- help='Take matching binaries from auxiliary manifests')
- parser.add_argument('--stripped-dir', required=True,
- metavar='STRIPPED_DIR',
- help='Directory to hold stripped copies when needed')
- return manifest.common_parse_args(parser)
-
-
-def main():
- args = parse_args()
- emit_manifests(args, args.selected, args.unselected, args.binary)
-
-
-if __name__ == "__main__":
- main()
diff --git a/images/fvm.gni b/images/fvm.gni
deleted file mode 100644
index 675a6f9..0000000
--- a/images/fvm.gni
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/fuchsia/zircon.gni")
-
-declare_args() {
- # The size in bytes of the FVM partition image to create. Normally this is
- # computed to be just large enough to fit the blob and data images. The
- # default value is "", which means to size based on inputs. Specifying a size
- # that is too small will result in build failure.
- fvm_image_size = ""
-
- # The size of the FVM partition images "slice size". The FVM slice size is a
- # minimum size of a particular chunk of a partition that is stored within
- # FVM. A very small slice size may lead to decreased throughput. A very large
- # slice size may lead to wasted space. The selected default size of 8mb is
- # selected for conservation of space, rather than performance.
- fvm_slice_size = "8388608"
-}
-
-# Build an FVM partition
-#
-# Parameters
-#
-# args (optional)
-# [list of strings] Additional arguments to pass to the FVM tool.
-#
-# output_name (required)
-# [string] The filename to produce.
-#
-# partitions (required)
-# [list of scopes] a list of partitions to be included
-# dep (required)
-# [label] The label must be defined earlier in the same file.
-# type (required)
-# [string] A partition type accepted by fvm (e.g. blob, data, data-unsafe)
-#
-# deps (optional)
-# testonly (optional)
-# visibility (optional)
-# Same as for any GN `action()` target.
-template("generate_fvm") {
- zircon_tool_action(target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "deps",
- "visibility",
- ])
- tool = "fvm"
- outputs = [
- invoker.output_name,
- ]
- args = rebase_path(outputs, root_build_dir)
- if (defined(invoker.args)) {
- args += invoker.args
- }
- sources = []
- if (!defined(deps)) {
- deps = []
- }
- foreach(part, invoker.partitions) {
- args += [ "--${part.type}" ]
- deps += [ part.dep ]
- sources += get_target_outputs(part.dep)
- args += rebase_path(get_target_outputs(part.dep), root_build_dir)
- }
- }
-}
-
-fvm_slice_args = [
- "--slice",
- fvm_slice_size,
-]
-
-fvm_create_args = [ "create" ] + fvm_slice_args
-
-fvm_sparse_args = [
- "sparse",
- "--compress",
- "lz4",
- ] + fvm_slice_args
diff --git a/images/guest/BUILD.gn b/images/guest/BUILD.gn
deleted file mode 100644
index 6812232..0000000
--- a/images/guest/BUILD.gn
+++ /dev/null
@@ -1,241 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/fuchsia/zbi.gni")
-import("//build/config/fuchsia/zircon.gni")
-import("//build/images/manifest.gni")
-import("//build/package.gni")
-import("//garnet/build/pkgfs.gni")
-
-guest_packages = [
- get_label_info("//build/images:shell-commands", "label_no_toolchain"),
- get_label_info("//garnet/bin/appmgr", "label_no_toolchain"),
- get_label_info("//garnet/bin/guest/integration:guest_integration_tests_utils",
- "label_no_toolchain"),
- get_label_info("//garnet/bin/guest/pkg/zircon_guest:services_config",
- "label_no_toolchain"),
- get_label_info("//garnet/bin/run", "label_no_toolchain"),
- get_label_info("//garnet/bin/sysmgr", "label_no_toolchain"),
- get_label_info("//garnet/bin/trace", "label_no_toolchain"),
- get_label_info("//garnet/bin/vsock_service:vsock_service",
- "label_no_toolchain"),
- get_label_info(pkgfs_package_label, "label_no_toolchain"),
-]
-
-# The pkgsvr index is a manifest mapping `package_name/package_version` to
-# the merkleroot of the package's meta.far file.
-action("pkgsvr_index") {
- visibility = [ ":*" ]
- testonly = true
- script = "//build/images/manifest.py"
- args = [ "--contents" ]
- outputs = [
- "$target_out_dir/$target_name",
- ]
- args += [ "--output=" + rebase_path(outputs[0], root_build_dir) ]
- sources = []
- deps = []
- foreach(pkg_label, guest_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.pkgsvr_index.rsp"
- deps += [ "${pkg_label}.pkgsvr_index.rsp" ]
- sources += [ pkg_rspfile ]
- args += [ "@" + rebase_path(pkg_rspfile, root_build_dir) ]
- }
-}
-
-boot_manifest = "$target_out_dir/boot.manifest"
-generate_manifest("guest.manifest") {
- visibility = [ ":*" ]
- testonly = true
-
- bootfs_manifest = boot_manifest
- bootfs_zircon_groups = "misc,test"
-
- args = []
- deps = []
- sources = []
- foreach(pkg_label, guest_packages) {
- # Find the response file written by package().
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_system_rsp = "$pkg_target_out_dir/${pkg_target_name}.system.rsp"
- deps += [ pkg_label ]
- sources += [ pkg_system_rsp ]
- args += [ "@" + rebase_path(pkg_system_rsp, root_build_dir) ]
- }
-
- json = "guest_meta_package.json"
- sources += [ json ]
- args += [ "--entry=meta/package=" + rebase_path(json, root_build_dir) ]
-
- # Add the static packages (pkgsvr) index.
- deps += [ ":pkgsvr_index" ]
- pkgsvr_index = "$target_out_dir/pkgsvr_index"
- sources += [ pkgsvr_index ]
- args += [ "--entry=data/static_packages=" +
- rebase_path(pkgsvr_index, root_build_dir) ]
-}
-
-# Generate, sign, and seal the package file.
-pm_build_package("guest.meta") {
- visibility = [ ":*" ]
- testonly = true
- manifest = ":guest.manifest"
-}
-
-guest_blob_manifest = "$root_build_dir/guest_blob.manifest"
-action("guest_blob.manifest") {
- visibility = [ ":*" ]
- testonly = true
- deps = [
- ":guest.manifest",
- ":guest.meta",
- ]
- outputs = [
- guest_blob_manifest,
- ]
- depfile = guest_blob_manifest + ".d"
- guest_manifest_outputs = get_target_outputs(":guest.manifest")
- guest_manifest = guest_manifest_outputs[0]
- inputs = [
- guest_manifest,
- ]
- script = "//build/images/blob_manifest.py"
- args = [ "@{{response_file_name}}" ]
- response_file_contents = [
- "--depfile=" + rebase_path(depfile, root_build_dir),
- "--output=" + rebase_path(guest_blob_manifest, root_build_dir),
- "--input=" +
- rebase_path("$target_out_dir/guest.meta/blobs.json", root_build_dir),
- ]
- foreach(pkg_label, guest_packages) {
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_blobs_rsp = "$pkg_target_out_dir/${pkg_target_name}.blobs.rsp"
- deps += [ "${pkg_label}.blobs.rsp" ]
- inputs += [ pkg_blobs_rsp ]
- response_file_contents +=
- [ "@" + rebase_path(pkg_blobs_rsp, root_build_dir) ]
- }
-}
-
-zircon_tool_action("guest_blob.blk") {
- visibility = [ ":*" ]
- testonly = true
- deps = [
- ":guest_blob.manifest",
- ]
- blob_image_path = "$target_out_dir/$target_name"
- outputs = [
- blob_image_path,
- ]
- depfile = blob_image_path + ".d"
- inputs = [
- guest_blob_manifest,
- ]
- tool = "blobfs"
- args = [
- "--depfile",
- rebase_path(blob_image_path, root_build_dir),
- "create",
- "--manifest",
- rebase_path(guest_blob_manifest, root_build_dir),
- ]
-}
-
-zircon_tool_action("guest_fvm") {
- testonly = true
- fvm = "$root_out_dir/guest_fvm.blk"
- outputs = [
- fvm,
- ]
- tool = "fvm"
- sources = []
- deps = [
- ":guest_blob.blk",
- ]
- foreach(label, deps) {
- sources += get_target_outputs(label)
- }
- args = [
- rebase_path(fvm, root_build_dir),
- "create",
- "--blob",
- ] + rebase_path(sources, root_build_dir)
-}
-
-# Generate the /boot/config/devmgr file.
-action("devmgr_config.txt") {
- visibility = [ ":*" ]
- testonly = true
- script = "//build/images/manifest.py"
- outputs = [
- "$target_out_dir/$target_name",
- ]
- pkgfs = "bin/" + pkgfs_binary_name
- pkgfs_label = pkgfs_package_label + ".meta"
- pkgfs_pkg_out_dir = get_label_info(pkgfs_label, "target_out_dir") + "/" +
- get_label_info(pkgfs_label, "name")
- pkgfs_blob_manifest = "$pkgfs_pkg_out_dir/meta/contents"
- system_image_merkleroot = "$target_out_dir/guest.meta/meta.far.merkle"
-
- deps = [
- ":guest.manifest",
- ":guest.meta",
- pkgfs_label,
- ]
- sources = [
- boot_manifest,
- pkgfs_blob_manifest,
- system_image_merkleroot,
- ]
-
- args = [
- "--output=" + rebase_path(outputs[0], root_build_dir),
-
- # Start with the fixed options.
- "--entry=devmgr.require-system=true",
-
- # Add the pkgfs command line, embedding the merkleroot of the system image.
- "--contents",
- "--rewrite=*=zircon.system.pkgfs.cmd={target}+{source}",
- "--entry=${pkgfs}=" + rebase_path(system_image_merkleroot, root_build_dir),
- "--no-contents",
- "--reset-rewrite",
-
- # Embed the pkgfs blob manifest with the "zircon.system.pkgfs.file."
- # prefix on target file names.
- "--rewrite=*=zircon.system.pkgfs.file.{target}={source}",
- "--manifest=" + rebase_path(pkgfs_blob_manifest, root_build_dir),
- "--reset-rewrite",
- "--include=bin/devhost",
- "--rewrite=bin/devhost=devhost.asan.strict=false",
- "--manifest=" + rebase_path(boot_manifest, root_build_dir),
- ]
-}
-
-zbi("guest") {
- testonly = true
- deps = [
- ":devmgr_config.txt",
- ":guest.manifest",
- ]
- inputs = [
- "${zircon_build_dir}/zircon.zbi",
- boot_manifest,
- ]
- manifest = [
- {
- outputs = [
- "config/devmgr",
- ]
- sources = get_target_outputs(":devmgr_config.txt")
- },
- ]
- cmdline = []
- cmdline_inputs = []
-}
diff --git a/images/guest/guest_meta_package.json b/images/guest/guest_meta_package.json
deleted file mode 100644
index 90415a1..0000000
--- a/images/guest/guest_meta_package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name": "guest_image", "version": "0"}
diff --git a/images/json.gni b/images/json.gni
deleted file mode 100644
index 4b18920..0000000
--- a/images/json.gni
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2018 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.
-
-# Write an image manfiest at `gn gen` time.
-#
-# Parameters
-#
-# outputs (required)
-# [list of two files] The first output is JSON, the second sh variables.
-#
-# images (required)
-# [list of scopes] See below.
-#
-# Each scope in $images contains:
-#
-# default (optional)
-# [bool] Include image in the default group (default: true).
-# It is preferred that very large images that are rarely used are not
-# in the default group. Absence of a value is equivalent to true.
-#
-# deps (required)
-# [list of labels] Target that generates the image file.
-# If `sources` is not specified, this must be an action in this file,
-# and that action must produce a valid ZBI as the first declared output.
-#
-# installer (optional)
-# [string] Put this image into the installer image under this name.
-#
-# public (optional)
-# [list of strings] Each is "IMAGE_{NAME}_{TYPE}" where `TYPE` can be:
-# `SPARSE` (sparse FVM), `RAW` (block image for any FS), `ZBI`
-# (bootable zircon image), `RAM` (ramdisk without kernel--obsolete),
-# `VBOOT` (ZBI in a vboot container). "IMAGE_{NAME}_{TYPE}={FILE}"
-# will be written out (with `FILE` relative to `root_build_dir`), to be
-# consumed by //scripts and various tools to find the relevant images.
-#
-# json (optional)
-# [scope] Content for images.json; `path` is added automatically.
-# Other fields should match TODO(mcgrathr): some JSON schema.
-# Standard fields not properly documented in a schema yet:
-# path (required)
-# [file] Path relative to $root_build_dir where the image is found.
-# Also serves as the Ninja command-line target argument to build it.
-# name (required)
-# [string] A simple identifier for the image.
-# type (required)
-# [string] Type of image: "zbi", "blk", "kernel", "vboot"
-# bootserver_pave (optional)
-# [string] The command-line switch to `bootserver` that should
-# precede this file's name. The presence of this field implies
-# that this image is needed for paving via Zedboot. The value ""
-# means this image is the primary ZBI, which is not preceded by a
-# switch on the `bootserver` command line.
-# bootserver_netboot (optional)
-# [string] The command-line switch to `bootserver` that should
-# precede this file's name. The presence of this field implies
-# that this image is needed for netbooting via Zedboot. The value ""
-# means this image is the primary ZBI, which is not preceded by a
-# switch on the `bootserver` command line.
-# archive (optional; default: false)
-# [boolean] This image should be included in a build archive.
-# Implied by the presence of `bootserver`.
-#
-# sdk (optional)
-# [string] Put this image into the SDK under this name.
-#
-# sources (optional)
-# [list of files] The image file.
-#
-# updater (optional)
-# [string] Put this image into the update manifest under this name.
-#
-template("write_images_manifest") {
- not_needed([ "target_name" ]) # Seriously.
- images_json = []
- image_paths = []
- foreach(image, invoker.images) {
- image_sources = []
- if (defined(image.sources)) {
- image_sources += image.sources
- } else {
- foreach(label, image.deps) {
- image_sources += get_target_outputs(label)
- }
- }
- image_file = rebase_path(image_sources[0], root_build_dir)
-
- if (defined(image.json)) {
- images_json += [
- {
- forward_variables_from(image.json, "*")
- path = image_file
- },
- ]
- }
-
- if (defined(image.public)) {
- foreach(name, image.public) {
- image_paths += [ "${name}=${image_file}" ]
- }
- }
- }
-
- outputs = invoker.outputs
- assert(outputs == [
- outputs[0],
- outputs[1],
- ])
- write_file(outputs[0], images_json, "json")
- write_file(outputs[1], image_paths)
-}
diff --git a/images/manifest.gni b/images/manifest.gni
deleted file mode 100644
index e13f2cf..0000000
--- a/images/manifest.gni
+++ /dev/null
@@ -1,261 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/config/fuchsia/zircon.gni")
-
-declare_args() {
- # Manifest files describing target libraries from toolchains.
- # Can be either // source paths or absolute system paths.
- toolchain_manifests = [
- # clang_prefix is relative to root_build_dir.
- rebase_path("${clang_prefix}/../lib/${clang_target}.manifest",
- "",
- root_build_dir),
- ]
-
- # Manifest files describing extra libraries from a Zircon build
- # not included in `zircon_boot_manifests`, such as an ASan build.
- # Can be either // source paths or absolute system paths.
- #
- # Since Zircon manifest files are relative to a Zircon source directory
- # rather than to the directory containing the manifest, these are assumed
- # to reside in a build directory that's a direct subdirectory of the
- # Zircon source directory and thus their contents can be taken as
- # relative to `get_path_info(entry, "dir") + "/.."`.
- # TODO(mcgrathr): Make Zircon manifests self-relative too and then
- # merge this and toolchain_manifests into generic aux_manifests.
- if (zircon_use_asan) {
- zircon_aux_manifests = [ "$zircon_build_abi_dir/bootfs.manifest" ]
- } else {
- zircon_aux_manifests = [ "$zircon_asan_build_dir/bootfs.manifest" ]
- }
-
- # Manifest files describing files to go into the `/boot` filesystem.
- # Can be either // source paths or absolute system paths.
- # `zircon_boot_groups` controls which files are actually selected.
- #
- # Since Zircon manifest files are relative to a Zircon source directory
- # rather than to the directory containing the manifest, these are assumed
- # to reside in a build directory that's a direct subdirectory of the
- # Zircon source directory and thus their contents can be taken as
- # relative to `get_path_info(entry, "dir") + "/.."`.
- zircon_boot_manifests = [ "$zircon_build_dir/bootfs.manifest" ]
-
- # Extra args to globally apply to the manifest generation script.
- extra_manifest_args = []
-}
-
-# Action target that generates a response file in GN's "shlex" format.
-#
-# Parameters
-#
-# output_name (optional, default: target_name)
-# [path] Response file to write (if relative, relative to target_out_dir).
-#
-# response_file_contents (required)
-# data_deps (optional)
-# deps (optional)
-# public_deps (optional)
-# testonly (optional)
-# visibility (optional)
-# Same as for any GN `action()` target.
-#
-template("generate_response_file") {
- action(target_name) {
- forward_variables_from(invoker,
- [
- "data_deps",
- "deps",
- "public_deps",
- "output_name",
- "response_file_contents",
- "testonly",
- "visibility",
- ])
- if (!defined(output_name)) {
- output_name = target_name
- }
- outputs = [
- "$target_out_dir/$output_name",
- ]
- assert(
- defined(response_file_contents),
- "generate_response_file(\"${target_name}\") must define response_file_contents")
-
- if (response_file_contents == []) {
- # GN doesn't allow an empty response file.
- script = "/bin/cp"
- args = [
- "-f",
- "/dev/null",
- ]
- } else {
- script = "/bin/ln"
- args = [
- "-f",
- "{{response_file_name}}",
- ]
- }
- args += rebase_path(outputs, root_build_dir)
- }
-}
-
-# Action target that generates a manifest file in the `target=/abs/file`
-# format used by `zbi`, `blobfs`, etc. ELF files in the manifest have
-# their dynamic linking details examined and other necessary ELF files
-# implicitly added to the manifest. All such files have their build IDs
-# and unstripped files recorded in a build ID map (`ids.txt` file).
-# Outputs: $target_out_dir/$target_name, $target_out_dir/$target_name.ids.txt
-#
-# Parameters
-#
-# args (required)
-# [list of strings] Additional arguments to finalize_manifests.py;
-# `sources` should list any files directly referenced.
-#
-# bootfs_manifest (optional)
-# [string] Output a separate manifest file for the Zircon BOOTFS. This
-# manifest will get the `bootfs_zircon_groups` selections, while the
-# main manifest will get `zircon_groups` and the other entries
-# indicated by `args`. The main output manifest will assume that
-# libraries from the BOOTFS are available and not duplicate them.
-#
-# bootfs_zircon_groups (required with `bootfs_manifest`)
-# [string] Comma-separated list of Zircon manifest groups to include
-# in `bootfs_manifest`.
-#
-# zircon_groups (optional, default: "")
-# [string] Comma-separated list of Zircon manifest groups to include.
-# If this is "", then the Zircon manifest only provides binaries
-# to satisfy dependencies.
-#
-# deps (optional)
-# sources (optional)
-# testonly (optional)
-# visibility (optional)
-# Same as for any GN `action()` target.
-#
-template("generate_manifest") {
- assert(defined(invoker.args),
- "generate_manifest(\"${target_name}\") requires args")
- action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "sources",
- "testonly",
- "visibility",
- "zircon_groups",
- ])
- if (!defined(sources)) {
- sources = []
- }
- if (!defined(zircon_groups)) {
- zircon_groups = ""
- }
- manifest_file = "$target_out_dir/$target_name"
- depfile = "${manifest_file}.d"
- build_id_file = "${manifest_file}.ids.txt"
- stripped_dir = "${manifest_file}.stripped"
-
- script = "//build/images/finalize_manifests.py"
- inputs = rebase_path([
- "elfinfo.py",
- "manifest.py",
- "variant.py",
- ],
- "",
- "//build/images")
- outputs = [
- manifest_file,
- build_id_file,
- ]
- args = extra_manifest_args + [
- "--depfile=" + rebase_path(depfile, root_build_dir),
- "--build-id-file=" + rebase_path(build_id_file, root_build_dir),
- "--stripped-dir=" + rebase_path(stripped_dir, root_build_dir),
- "@{{response_file_name}}",
- ]
- response_file_contents = []
-
- # First the toolchain and Zircon manifests are pure auxiliaries:
- # they just supply libraries that might satisfy dependencies.
- sources += toolchain_manifests
- foreach(manifest, toolchain_manifests) {
- manifest_cwd = get_path_info(rebase_path(manifest), "dir")
- response_file_contents += [
- "--cwd=$manifest_cwd",
- "--manifest=" + rebase_path(manifest),
- ]
- }
- sources += zircon_aux_manifests + zircon_boot_manifests
- foreach(manifest, zircon_aux_manifests + zircon_boot_manifests) {
- manifest_cwd = get_path_info(rebase_path(manifest), "dir") + "/.."
- response_file_contents += [
- "--cwd=$manifest_cwd",
- "--manifest=" + rebase_path(manifest),
- ]
- }
-
- manifests = []
-
- if (defined(invoker.bootfs_manifest)) {
- assert(
- defined(invoker.bootfs_zircon_groups),
- "generate_manifest with bootfs_manifest needs bootfs_zircon_groups")
- outputs += [ invoker.bootfs_manifest ]
- manifests += [
- {
- output = invoker.bootfs_manifest
- groups = invoker.bootfs_zircon_groups
- },
- ]
-
- # Elide both devhost variants from the Zircon input manifest.
- # Each variant will be included if there is a driver that needs it.
- # That way we can tell whether both variants are actually in use.
- response_file_contents += [
- "--exclude=bin/devhost",
- "--exclude=bin/devhost.asan",
- ]
- }
-
- manifests += [
- {
- output = manifest_file
- groups = zircon_groups
- },
- ]
-
- foreach(manifest, manifests) {
- response_file_contents +=
- [ "--output=" + rebase_path(manifest.output, root_build_dir) ]
- if (manifest.groups != "") {
- # The boot manifests were already listed as auxiliaries, but now
- # list them again with selected groups to go in the output. This
- # means the script processes these manifests twice, but we can't
- # just omit them as auxiliaries because dependencies from the
- # binaries selected here have to be found by target name in a
- # previously-processed manifest.
- response_file_contents += [ "--groups=${manifest.groups}" ]
- sources += zircon_boot_manifests
- foreach(manifest, zircon_boot_manifests) {
- manifest_cwd = get_path_info(rebase_path(manifest), "dir") + "/.."
- response_file_contents += [
- "--cwd=$manifest_cwd",
- "--manifest=" + rebase_path(manifest),
- ]
- }
- }
- }
-
- response_file_contents += [ "--groups=all" ]
-
- # Now further `--manifest` or `--entry` arguments in invoker.args will
- # contribute to the output manifest.
- response_file_contents += [ "--cwd=." ] + invoker.args
- }
-}
diff --git a/images/manifest.py b/images/manifest.py
deleted file mode 100755
index 23a132e..0000000
--- a/images/manifest.py
+++ /dev/null
@@ -1,336 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-from collections import namedtuple
-import argparse
-import os
-import errno
-import fnmatch
-import shlex
-import shutil
-import sys
-
-
-manifest_entry = namedtuple('manifest_entry', [
- 'group',
- 'target',
- 'source',
- 'manifest',
-])
-
-
-def format_manifest_entry(entry):
- return (('' if entry.group is None else '{' + entry.group + '}') +
- entry.target + '=' + entry.source)
-
-
-def format_manifest_file(manifest):
- return ''.join(format_manifest_entry(entry) + '\n' for entry in manifest)
-
-
-def read_manifest_lines(sep, lines, title, manifest_cwd, result_cwd):
- for line in lines:
- # Remove the trailing newline.
- assert line.endswith('\n'), 'Unterminated manifest line: %r' % line
- line = line[:-1]
-
- # Grok {group}... syntax.
- group = None
- if line.startswith('{'):
- end = line.find('}')
- assert end > 0, 'Unterminated { in manifest line: %r' % line
- group = line[1:end]
- line = line[end + 1:]
-
- # Grok target=source syntax.
- [target_file, build_file] = line.split(sep, 1)
-
- if manifest_cwd != result_cwd:
- # Expand the path based on the cwd presumed in the manifest.
- build_file = os.path.normpath(os.path.join(manifest_cwd,
- build_file))
- # Make it relative to the cwd we want to work from.
- build_file = os.path.relpath(build_file, result_cwd)
-
- # TODO(mcgrathr): Dismal kludge to avoid pulling in asan runtime
- # libraries from the zircon ulib bootfs.manifest because their source
- # file names don't match the ones in the toolchain manifest.
- if 'prebuilt/downloads/clang/lib/' in build_file:
- continue
-
- yield manifest_entry(group, target_file, build_file, title)
-
-
-def partition_manifest(manifest, select, selected_group, unselected_group):
- selected = []
- unselected = []
- for entry in manifest:
- if select(entry.group):
- selected.append(entry._replace(group=selected_group))
- else:
- unselected.append(entry._replace(group=unselected_group))
- return selected, unselected
-
-
-def ingest_manifest_lines(sep, lines, title, in_cwd, groups, out_cwd, output_group):
- groups_seen = set()
- def select(group):
- groups_seen.add(group)
- if isinstance(groups, bool):
- return groups
- return group in groups
- selected, unselected = partition_manifest(
- read_manifest_lines(sep, lines, title, in_cwd, out_cwd),
- select, output_group, None)
- return selected, unselected, groups_seen
-
-
-def apply_source_rewrites(rewrites, entry):
- for rewrite in rewrites:
- if entry.source == rewrite.source:
- return entry._replace(source=rewrite.target)
- return entry
-
-
-def apply_rewrites(sep, rewrites, entry):
- for pattern, line in rewrites:
- if fnmatch.fnmatchcase(entry.target, pattern):
- [new_entry] = read_manifest_lines(
- sep,
- [line.format(**entry._asdict()) + '\n'], entry.manifest,
- os.path.dirname(entry.manifest),
- os.path.dirname(entry.manifest))
- entry = new_entry._replace(group=entry.group)
- return entry
-
-
-def contents_entry(entry):
- with open(entry.source) as file:
- [line] = file.read().splitlines()
- return entry._replace(source=line)
-
-
-class input_action_base(argparse.Action):
- def __init__(self, *args, **kwargs):
- super(input_action_base, self).__init__(*args, **kwargs)
-
- def __call__(self, parser, namespace, values, option_string=None):
- outputs = getattr(namespace, 'output', None)
-
- all_selected = getattr(namespace, 'selected', None)
- if all_selected is None:
- all_selected = []
- setattr(namespace, 'selected', all_selected)
- all_unselected = getattr(namespace, 'unselected', None)
- if all_unselected is None:
- all_unselected = []
- setattr(namespace, 'unselected', all_unselected)
-
- if namespace.groups is None or outputs is None:
- groups = False
- elif namespace.groups == 'all':
- groups = True
- else:
- groups = set(group if group else None
- for group in namespace.groups.split(','))
-
- cwd = getattr(namespace, 'cwd', '')
-
- if outputs is not None:
- output_group = len(outputs) - 1
- else:
- output_group = None
-
- selected, unselected, groups_seen = self.get_manifest_lines(
- namespace, values, cwd, groups, namespace.output_cwd, output_group)
-
- include = getattr(namespace, 'include', [])
- include_source = getattr(namespace, 'include_source', [])
- exclude = getattr(namespace, 'exclude', [])
- if include or exclude or include_source:
- def included(entry):
- def matches(file, patterns):
- return any(fnmatch.fnmatch(file, pattern)
- for pattern in patterns)
- if matches(entry.target, exclude):
- return False
- if include and not matches(entry.target, include):
- return False
- return (not include_source or
- matches(entry.source, include_source))
- unselected += filter(lambda entry: not included(entry), selected)
- selected = filter(included, selected)
-
- if getattr(namespace, 'contents', False):
- selected = map(contents_entry, selected);
- unselected = map(contents_entry, unselected);
-
- sep = getattr(namespace, 'separator', '=')
- rewrites = [entry.split('=', 1)
- for entry in getattr(namespace, 'rewrite', [])]
- selected = [apply_rewrites(sep, rewrites, entry) for entry in selected]
- unselected = [apply_rewrites(sep, rewrites, entry) for entry in unselected]
-
- if not isinstance(groups, bool):
- unused_groups = groups - groups_seen - set([None])
- if unused_groups:
- raise Exception(
- '%s not found in %r; try one of: %s' %
- (', '.join(map(repr, unused_groups)), values,
- ', '.join(map(repr, groups_seen - groups))))
-
- all_selected += selected
- all_unselected += unselected
-
-
-class input_manifest_action(input_action_base):
- def __init__(self, *args, **kwargs):
- super(input_manifest_action, self).__init__(*args, **kwargs)
-
- def get_manifest_lines(self, namespace, filename, *args):
- all_inputs = getattr(namespace, 'manifest', None)
- if all_inputs is None:
- all_inputs = []
- setattr(namespace, 'manifest', all_inputs)
- all_inputs.append(filename)
- with open(filename, 'r') as file:
- return ingest_manifest_lines(getattr(namespace, 'separator', '='),
- file, file.name, *args)
-
-
-class input_entry_action(input_action_base):
- def __init__(self, *args, **kwargs):
- super(input_entry_action, self).__init__(*args, **kwargs)
-
- def get_manifest_lines(self, namespace, entry, *args):
- return ingest_manifest_lines(
- getattr(namespace, 'separator', '='),
- [entry + '\n'], namespace.entry_manifest, *args)
-
-
-def common_parse_args(parser):
- parser.fromfile_prefix_chars='@'
- parser.convert_arg_line_to_args = shlex.split
- parser.add_argument('--output', action='append', required=True,
- metavar='FILE',
- help='Output file')
- parser.add_argument('--output-cwd', default='',
- metavar='DIRECTORY',
- help='Emit source paths relative to DIRECTORY')
- parser.add_argument('--absolute', action='store_true', default=False,
- help='Output source file names as absolute paths')
- parser.add_argument('--cwd', default='',
- metavar='DIRECTORY',
- help='Input entries are relative to this directory')
- parser.add_argument('--groups', default='all',
- metavar='GROUP_LIST',
- help='"all" or comma-separated groups to include')
- parser.add_argument('--manifest', action=input_manifest_action,
- metavar='FILE', default=[],
- help='Input manifest file (must exist)')
- parser.add_argument('--entry', action=input_entry_action,
- metavar='PATH=FILE',
- help='Add a single entry as if from an input manifest')
- parser.add_argument('--entry-manifest', default='<command-line --entry>',
- metavar='TITLE',
- help=('Title in lieu of manifest file name for' +
- ' subsequent --entry arguments'))
- parser.add_argument('--include', action='append', default=[],
- metavar='TARGET',
- help='Include only input entries matching TARGET'),
- parser.add_argument('--include-source', action='append', default=[],
- metavar='SOURCE',
- help='Include only input entries matching SOURCE'),
- parser.add_argument('--reset-include',
- action='store_const', const=[], dest='include',
- help='Reset previous --include')
- parser.add_argument('--exclude', action='append', default=[],
- metavar='TARGET',
- help='Ignore input entries matching TARGET'),
- parser.add_argument('--reset-exclude',
- action='store_const', const=[], dest='exclude',
- help='Reset previous --exclude')
- parser.add_argument('--separator', default='=',
- metavar='SEP',
- help='Use SEP between TARGET and SOURCE in entries')
- return parser.parse_args()
-
-
-def parse_args():
- parser = argparse.ArgumentParser(description='Read manifest files.')
- parser.add_argument('--copy-contentaddr', action='store_true', default=False,
- help='Copy to content-addressed targets, not manifest')
- parser.add_argument('--sources', action='store_true', default=False,
- help='Write source file per line, not manifest entry')
- parser.add_argument('--contents',
- action='store_true', default=False,
- help='Replace each source file name with its contents')
- parser.add_argument('--no-contents',
- action='store_false', dest='contents',
- help='Reset previous --contents')
- parser.add_argument(
- '--rewrite', action='append', default=[],
- metavar='PATTERN=ENTRY',
- help='Replace entries whose target matches PATTERN with ENTRY,'
- ' which can use {source} and {target} substitutions'),
- parser.add_argument('--reset-rewrite', dest='rewrite',
- action='store_const', const=[],
- help='Reset previous --rewrite')
- parser.add_argument('--unique',
- action='store_true', default=False,
- help='Elide duplicates even with different sources')
- parser.add_argument('--stamp',
- metavar='FILE',
- help='Touch FILE at the end.')
- args = common_parse_args(parser)
- if args.copy_contentaddr:
- if args.contents:
- parser.error('--copy-contentaddr is incompatible with --contents')
- args.unique = True
- args.sources = True
- return args
-
-
-def main():
- args = parse_args()
- output_sets = [(dict() if args.unique else set()) for file in args.output]
- for entry in getattr(args, 'selected', []):
- assert entry.group is not None, entry
- if args.absolute:
- line = os.path.abspath(entry.source)
- else:
- line = entry.source
- if not args.sources:
- line = entry.target + args.separator + line
- if args.unique:
- output_sets[entry.group][entry.target] = line
- else:
- output_sets[entry.group].add(line)
- for output_filename, output_set in zip(args.output, output_sets):
- if args.copy_contentaddr:
- created_dirs = set()
- for target, source in output_set.iteritems():
- target_path = os.path.join(output_filename, target)
- if os.path.exists(target_path):
- continue
- target_dir = os.path.dirname(target_path)
- if target_dir not in created_dirs:
- if not os.path.exists(target_dir):
- os.makedirs(target_dir)
- created_dirs.add(target_dir)
- shutil.copyfile(source, target_path)
- else:
- with open(output_filename, 'w') as file:
- file.write(''.join(sorted(
- line + '\n' for line in
- (output_set.itervalues() if args.unique else output_set))))
- if args.stamp:
- with open(args.stamp, 'w') as file:
- os.utime(file.name, None)
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/images/max_fvm_size.gni b/images/max_fvm_size.gni
deleted file mode 100644
index b6a10c5..0000000
--- a/images/max_fvm_size.gni
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2019 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.
-
-declare_args() {
- # Maximum allowable size for the FVM in a release mode build
- # Zero means no limit
- max_fvm_size = "0"
-}
diff --git a/images/pack-images.py b/images/pack-images.py
deleted file mode 100755
index 343d49c..0000000
--- a/images/pack-images.py
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import StringIO
-import argparse
-import functools
-import json
-import operator
-import os
-import sys
-import tarfile
-import time
-import zipfile
-
-
-def generate_script(images, type):
- # The bootserver must be in there or we lose.
- # TODO(mcgrathr): Multiple bootservers for different platforms
- # and switch in the script.
- [bootserver] = [image['path'] for image in images
- if image['name'] == 'bootserver']
- script = '''\
-#!/bin/sh
-dir="$(dirname "$0")"
-set -x
-'''
- switches = dict((switch, '"$dir/%s"' % image['path'])
- for image in images if type in image
- for switch in image[type])
- cmd = ['exec', '"$dir/%s"' % bootserver]
- for switch, path in sorted(switches.iteritems()):
- cmd += [switch, path]
- cmd.append('"$@"')
- script += ' '.join(cmd) + '\n'
- return script
-
-
-class TGZArchiver(object):
- """Public interface needs to match ZipArchiver."""
-
- def __init__(self, outfile):
- self._archive = tarfile.open(outfile, 'w:gz', dereference=True)
-
- def __enter__(self):
- return self
-
- def __exit__(self, unused_type, unused_value, unused_traceback):
- self._archive.close()
-
- @staticmethod
- def _sanitize_tarinfo(executable, info):
- assert info.isfile()
- info.mode = 0o555 if executable else 0o444
- info.uid = 0
- info.gid = 0
- info.uname = ''
- info.gname = ''
- return info
-
- def add_path(self, path, name, executable):
- self._archive.add(
- path,
- name,
- filter=functools.partial(self._sanitize_tarinfo, executable))
-
- def add_contents(self, contents, name, executable):
- info = self._sanitize_tarinfo(executable, tarfile.TarInfo(name))
- info.size = len(contents)
- info.mtime = time.time()
- self._archive.addfile(info, StringIO.StringIO(contents))
-
-
-class ZipArchiver(object):
- """Public interface needs to match TGZArchiver."""
-
- def __init__(self, outfile):
- self._archive = zipfile.ZipFile(outfile, 'w', zipfile.ZIP_DEFLATED)
- self._archive.comment = 'Fuchsia build archive'
-
- def __enter__(self):
- return self
-
- def __exit__(self, unused_type, unused_value, unused_traceback):
- self._archive.close()
-
- def add_path(self, path, name, unused_executable):
- self._archive.write(path, name)
-
- def add_contents(self, contents, name, unused_executable):
- self._archive.writestr(name, contents)
-
-
-def format_archiver(outfile, format):
- return {'tgz': TGZArchiver, 'zip': ZipArchiver}[format](outfile)
-
-
-def write_archive(outfile, format, images):
- # Synthesize a sanitized form of the input.
- path_images = []
- for image in images:
- path = image['path']
- if 'archive' in image:
- del image['archive']
- image['path'] = image['name'] + '.' + image['type']
- path_images.append((path, image))
-
- # Generate scripts that use the sanitized file names.
- content_images = [
- (generate_script([image for path, image in path_images],
- 'bootserver_pave'), {
- 'name': 'pave',
- 'type': 'sh',
- 'path': 'pave.sh'
- }),
- (generate_script([image for path, image in path_images],
- 'bootserver_netboot'), {
- 'name': 'netboot',
- 'type': 'sh',
- 'path': 'netboot.sh'
- })
- ]
-
- # Self-reference.
- content_images.append(
- (json.dumps([image for _, image in (path_images + content_images)],
- indent=2, sort_keys=True),
- {
- 'name': 'images',
- 'type': 'json',
- 'path': 'images.json',
- }))
-
- # Canonicalize the order of the files in the archive.
- path_images = sorted(path_images, key=lambda pair: pair[1]['path'])
- content_images = sorted(content_images, key=lambda pair: pair[1]['path'])
-
- def is_executable(image):
- return image['type'] == 'sh' or image['type'].startswith('exe')
-
- with format_archiver(outfile, format) as archiver:
- for path, image in path_images:
- archiver.add_path(path, image['path'], is_executable(image))
- for contents, image in content_images:
- archiver.add_contents(contents, image['path'], is_executable(image))
-
-
-
-def write_symbol_archive(outfile, format, ids_file, files_read):
- files_read.add(ids_file)
- with open(ids_file, 'r') as f:
- ids = [line.split() for line in f]
- out_ids = ''
- with format_archiver(outfile, format) as archiver:
- for id, file in ids:
- file = os.path.relpath(file)
- files_read.add(file)
- name = os.path.relpath(file, '../..')
- archiver.add_path(file, name, False)
- out_ids += '%s %s\n' % (id, name)
- archiver.add_contents(out_ids, 'ids.txt', False)
-
-
-def archive_format(args, outfile):
- if args.format:
- return args.format
- if outfile.endswith('.zip'):
- return 'zip'
- if outfile.endswith('.tgz') or outfile.endswith('.tar.gz'):
- return 'tgz'
- sys.stderr.write('''\
-Cannot guess archive format from file name %r; use --format.
-''' % outfile)
- sys.exit(1)
-
-
-def main():
- parser = argparse.ArgumentParser(description='Pack Fuchsia build images.')
- parser.add_argument('--depfile',
- metavar='FILE',
- help='Write Ninja dependencies file')
- parser.add_argument('json', nargs='+',
- metavar='FILE',
- help='Read JSON image list from FILE')
- parser.add_argument('--pave',
- metavar='FILE',
- help='Write paving bootserver script to FILE')
- parser.add_argument('--netboot',
- metavar='FILE',
- help='Write netboot bootserver script to FILE')
- parser.add_argument('--archive',
- metavar='FILE',
- help='Write archive to FILE')
- parser.add_argument('--symbol-archive',
- metavar='FILE',
- help='Write symbol archive to FILE')
- parser.add_argument('--format', choices=['tgz', 'zip'],
- help='Archive format (default: from FILE suffix)')
- args = parser.parse_args()
-
- # Keep track of every input file for the depfile.
- files_read = set()
- def read_json_file(filename):
- files_read.add(filename)
- with open(filename, 'r') as f:
- return json.load(f)
-
- images = reduce(operator.add,
- (read_json_file(file) for file in args.json),
- [])
-
- outfile = None
-
- # Write an executable script into outfile for the given bootserver mode.
- def write_script_for(outfile, mode):
- with os.fdopen(os.open(outfile, os.O_CREAT | os.O_TRUNC | os.O_WRONLY,
- 0o777),
- 'w') as script_file:
- script_file.write(generate_script(images, mode))
-
- # First write the local scripts that work relative to the build directory.
- if args.pave:
- outfile = args.pave
- write_script_for(args.pave, 'bootserver_pave')
- if args.netboot:
- outfile = args.netboot
- write_script_for(args.netboot, 'bootserver_netboot')
-
- if args.archive:
- outfile = args.archive
- archive_images = [image for image in images
- if (image.get('archive', False) or
- 'bootserver_pave' in image or
- 'bootserver_netboot' in image)]
- files_read |= set(image['path'] for image in archive_images)
- write_archive(outfile, archive_format(args, outfile), archive_images)
-
- if args.symbol_archive:
- outfile = args.symbol_archive
- [ids_file] = [image['path'] for image in images
- if image['name'] == 'build-id' and image['type'] == 'txt']
- write_symbol_archive(outfile, archive_format(args, outfile),
- ids_file, files_read)
-
- if outfile and args.depfile:
- with open(args.depfile, 'w') as depfile:
- depfile.write('%s: %s\n' % (outfile, ' '.join(sorted(files_read))))
-
-
-if __name__ == "__main__":
- main()
diff --git a/images/system_meta_package.json b/images/system_meta_package.json
deleted file mode 100644
index 9917831..0000000
--- a/images/system_meta_package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name": "system_image", "version": "0"}
diff --git a/images/system_package_key_check.py b/images/system_package_key_check.py
deleted file mode 100755
index a29706c..0000000
--- a/images/system_package_key_check.py
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import os
-import subprocess
-import sys
-
-def main(pm_binary, stamp_file, key_file):
- if not os.path.exists(key_file):
- subprocess.check_call([pm_binary, '-k', key_file, 'genkey'])
- with open(stamp_file, 'w') as f:
- f.write('OK\n')
- return 0
-
-if __name__ == '__main__':
- sys.exit(main(*sys.argv[1:]))
diff --git a/images/update_package.json b/images/update_package.json
deleted file mode 100644
index de37794..0000000
--- a/images/update_package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name": "update", "version": "0"}
diff --git a/images/variant.py b/images/variant.py
deleted file mode 100755
index be92199..0000000
--- a/images/variant.py
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-from collections import namedtuple
-import elfinfo
-import glob
-import os
-
-
-# Copied from //zircon/system/public/zircon/driver/binding.h, which see.
-ZIRCON_NOTE_DRIVER = 0x31565244 # DRV1
-ZIRCON_DRIVER_IDENT = ('Zircon\0', ZIRCON_NOTE_DRIVER)
-
-
-def binary_info(filename):
- return elfinfo.get_elf_info(filename, [ZIRCON_DRIVER_IDENT])
-
-def is_driver(info):
- return bool(info.notes)
-
-
-class variant(
- namedtuple('variant', [
- 'shared_toolchain', # GN toolchain (and thus build dir subdirectory).
- 'libprefix', # Prefix on DT_SONAME string.
- 'runtime', # SONAME of runtime, does not use libprefix.
- 'aux', # List of (file, group) required if this is used.
- ])):
-
- def matches(self, info, assume=False):
- if self.libprefix and info.interp:
- return info.interp.startswith(self.libprefix)
- if self.runtime:
- return self.runtime in info.needed
- return assume
-
-
-def make_variant(name, info):
- libprefix = ''
- runtime = None
- # All drivers need devhost; it must be in /boot (group 0).
- aux = [('bin/devhost', 0)] if is_driver(info) else []
- if name is None:
- tc = '%s-shared' % info.cpu.gn
- else:
- tc = '%s-%s-shared' % (info.cpu.gn, name)
- if name in ('asan', 'asan-sancov'):
- libprefix = 'asan/'
- runtime = 'libclang_rt.asan.so'
- # ASan drivers need devhost.asan.
- aux = [(file + '.asan', group) for file, group in aux]
- return variant(tc, libprefix, runtime, aux)
-
-
-def find_variant(info, build_dir=os.path.curdir):
- variant = None
- variant_file = None
- abs_build_dir = os.path.abspath(build_dir)
- abs_filename = os.path.abspath(info.filename)
- if abs_filename.startswith(os.path.join(abs_build_dir, '')):
- # It's in the build directory. If it's a variant, it's a hard link
- # into the variant toolchain root_out_dir.
- file_stat = os.stat(info.filename)
- if file_stat.st_nlink > 1:
- # Figure out which variant it's linked to. Non-variant drivers
- # are linked to the -shared toolchain. We match those as well
- # as actual variants so we'll replace the unadorned filename
- # with its -shared/ version, which is where the lib.unstripped/
- # subdirectory is found. Below, we'll change the name but not
- # call it a variant.
- rel_filename = os.path.relpath(abs_filename, abs_build_dir)
- variant_prefix = info.cpu.gn + '-'
- subdirs = [subdir
- for subdir in os.listdir(build_dir)
- if (subdir.startswith(variant_prefix) and
- os.path.exists(os.path.join(subdir, rel_filename)))]
- files = [os.path.join(subdir, rel_filename) for subdir in subdirs]
- assert all(os.path.samestat(os.stat(file), file_stat)
- for file in files), (
- "Not all %r matches are hard links: %r" % (info, files))
- # Rust binaries have multiple links but are not variants.
- # So just ignore a multiply-linked file with no matches.
- if files:
- # A variant loadable_module (or driver_module) is actually
- # built in the variant's -shared toolchain but is also
- # linked to other variant toolchains.
- if (len(subdirs) > 1 and
- sum(subdir.endswith('-shared') for subdir in subdirs) == 1):
- [subdir] = [subdir for subdir in subdirs
- if subdir.endswith('-shared')]
- else:
- assert len(files) == 1, (
- "Multiple hard links to %r: %r" % (info, files))
- [subdir] = subdirs
- name = subdir[len(variant_prefix):]
- variant_file = os.path.relpath(
- os.path.join(subdir, rel_filename), build_dir)
- if name != 'shared':
- # loadable_module and driver_module targets are linked
- # to the variant-shared toolchain.
- if name[-7:] == '-shared':
- name = name[:-7]
- variant = make_variant(name, info)
- else:
- # It's from an auxiliary.
- asan = make_variant('asan', info)
- if asan.matches(info):
- variant = asan
- if variant:
- assert variant.matches(info, True), "%r vs %r" % (variant, info)
- return variant, variant_file
- return make_variant(None, info), variant_file
-
-
-# Module public API.
-__all__ = ['binary_info', 'find_variant', 'variant']
-
-
-def test_main(build_dir, filenames):
- for filename in filenames:
- info = binary_info(filename)
- print info
- print ' Driver: %r' % is_driver(info)
- print ' %r' % (find_variant(info, build_dir),)
-
-
-# For manual testing.
-if __name__ == "__main__":
- import sys
- test_main(sys.argv[1], sys.argv[2:])
diff --git a/images/zedboot/BUILD.gn b/images/zedboot/BUILD.gn
deleted file mode 100644
index 1bb2a68..0000000
--- a/images/zedboot/BUILD.gn
+++ /dev/null
@@ -1,238 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/fuchsia/zbi.gni")
-import("//build/images/boot.gni")
-import("//build/images/custom_signing.gni")
-import("//build/images/json.gni")
-import("//build/images/manifest.gni")
-
-declare_args() {
- # List of kernel command line arguments to bake into the Zedboot image.
- # See //zircon/docs/kernel_cmdline.md and
- # [`zedboot_devmgr_config`](#zedboot_devmgr_config).
- zedboot_cmdline_args = []
-
- # Files containing additional kernel command line arguments to bake into
- # the Zedboot image. The contents of these files (in order) come after any
- # arguments directly in [`zedboot_cmdline_args`](#zedboot_cmdline_args).
- # These can be GN `//` source pathnames or absolute system pathnames.
- zedboot_cmdline_files = []
-
- # List of arguments to populate /boot/config/devmgr in the Zedboot image.
- zedboot_devmgr_config = [ "netsvc.netboot=true" ]
-}
-
-# This parallels the `images` list in //build/images/BUILD.gn, which see.
-zedboot_images = []
-
-# Construct a minimal manifest containing only the few user binaries
-# that constitute zedboot, and the libraries they depend on.
-# TODO(mcgrathr): This could be made smaller by constraining the drivers
-# included, but we don't currently have a good way to determine the
-# subset that is useful to Zedboot.
-zedboot_binary_patterns = [
- # These are the core things needed for booting (local and netboot).
- "bin/bootsvc",
- "bin/devmgr",
- "bin/dlog",
- "bin/fshost",
- "bin/netsvc",
- "bin/pwrbtn-monitor",
- "bin/svchost",
- "bin/virtual-console",
- "driver/*", # Drivers automagically cause devhost to be brought in.
-
- # These are needed for installer runs.
- "bin/blobfs",
- "bin/install-disk-image",
- "bin/minfs",
- "bin/mount",
-
- # These are useful for debugging.
- "bin/dd",
- "bin/driverctl",
- "bin/fsck*",
- "bin/gpt",
- "bin/killall",
- "bin/lsblk",
- "bin/lsdev",
- "bin/lsusb",
- "bin/mkfs*",
- "bin/nand-util",
- "bin/netdump",
- "bin/ping",
- "bin/ps",
- "bin/sh",
- "bin/umount",
- "bin/unbind",
-]
-
-generate_manifest("zedboot.manifest") {
- visibility = [ ":*" ]
- args = []
- foreach(pattern, zedboot_binary_patterns) {
- args += [ "--binary=" + pattern ]
- }
-}
-manifest_outputs = get_target_outputs(":zedboot.manifest")
-manifest_file = manifest_outputs[0]
-
-action("devmgr_config.txt") {
- visibility = [ ":zbi" ]
-
- script = "../manifest.py"
- outputs = [
- "$target_out_dir/$target_name",
- ]
-
- args = [ "--output=" + rebase_path(outputs[0], root_build_dir) ]
- foreach(entry, zedboot_devmgr_config) {
- args += [ "--entry=$entry" ]
- }
-}
-
-zbi("zbi") {
- output_name = "zedboot"
- deps = [
- ":devmgr_config.txt",
- ":zedboot.manifest",
- ]
- inputs = [
- "${zircon_build_dir}/kernel.zbi",
- manifest_file,
- ]
- manifest = [
- {
- outputs = [
- "config/devmgr",
- ]
- sources = get_target_outputs(":devmgr_config.txt")
- },
- ]
- cmdline = zedboot_cmdline_args
- cmdline_inputs = zedboot_cmdline_files
-}
-
-zedboot_images += [
- {
- deps = [
- ":zbi",
- ]
- public = [
- "IMAGE_ZEDBOOT_ZBI",
- "IMAGE_ZIRCONR_ZBI",
- ]
- json = {
- name = "zircon-r"
- type = "zbi"
- if (custom_signing_script == "") {
- bootserver_pave = [ "--zirconr" ]
- }
- }
- },
-]
-
-if (custom_signing_script != "") {
- custom_signed_zbi("signed") {
- output_name = "zedboot.zbi"
- deps = [
- ":zbi",
- ]
- zbi = get_target_outputs(":zbi")
- }
-
- zedboot_images += [
- {
- deps = [
- ":signed",
- ]
- public = [
- "IMAGE_ZIRCONR_SIGNEDZBI",
- ]
- json = {
- name = "zircon-r.signed"
- type = "zbi.signed"
- bootserver_pave = [
- "--zirconr",
-
- # TODO(ZX-2625): `dm reboot-recovery` boots from
- # zircon-b instead of zircon-r, so put it there too.
- "--zirconb",
- ]
- }
- },
- ]
-}
-
-if (target_cpu != "arm64") {
- vboot("vboot") {
- output_name = "zedboot"
- deps = [
- ":zbi",
- ]
- }
-
- zedboot_images += [
- {
- deps = [
- ":vboot",
- ]
- public = [
- "IMAGE_ZEDBOOT_VBOOT",
- ]
- json = {
- name = "zedboot"
- type = "vboot"
- }
- },
- ]
-
- esp("esp") {
- output_name = "zedboot"
- cmdline = "efi_cmdline.txt"
- deps = [
- ":zbi",
- ]
- zedboot_zbi_outputs = get_target_outputs(":zbi")
- zedboot = zedboot_zbi_outputs[0]
- }
- zedboot_images += [
- {
- deps = [
- ":esp",
- ]
- public = [
- "IMAGE_ZEDBOOT_ESP",
- ]
- json = {
- name = "zedboot-efi"
- type = "blk"
- }
- },
- ]
-}
-
-group("zedboot") {
- deps = [
- ":zbi",
- ]
- if (target_cpu != "arm64") {
- deps += [
- ":esp",
- ":vboot",
- ]
- }
- if (custom_signing_script != "") {
- deps += [ ":signed" ]
- }
-}
-
-write_images_manifest("zedboot-manifest") {
- images = zedboot_images
- outputs = [
- "$root_build_dir/zedboot_images.json",
- "$root_build_dir/zedboot_image_paths.sh",
- ]
-}
diff --git a/images/zedboot/efi_cmdline.txt b/images/zedboot/efi_cmdline.txt
deleted file mode 100644
index 5b5efe9..0000000
--- a/images/zedboot/efi_cmdline.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-bootloader.default=zedboot
-bootloader.timeout=1
diff --git a/json/validate_json.gni b/json/validate_json.gni
deleted file mode 100644
index 9bcb919..0000000
--- a/json/validate_json.gni
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-
-# Validate a JSON file against a JSON schema.
-#
-# data (required)
-# [file] JSON file to validate.
-# If this file is not valid JSON, or does not meet the schema, then this
-# target will fail to build.
-#
-# schema (required)
-# [file] Schema to use for validation.
-#
-# sources (optional)
-# [list of files] Additional schema files referenced by schema.
-# Additional schema files used by the original schema file must be listed
-# here for validation to be re-run when they change.
-#
-# deps (optional)
-# public_deps (optional)
-# testonly (optional)
-# visibility (optional)
-# Standard GN meaning.
-#
-# Example of usage:
-#
-# validate_json("validate_my_json") {
-# data = "my_file.json"
-# schema = "my_schema.json"
-# }
-template("validate_json") {
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "sources",
- "public_deps",
- "testonly",
- "visibility",
- ])
-
- tool = "//build/tools/json_validator"
-
- stamp_file = "$target_gen_dir/$target_name.verified"
-
- inputs = [
- invoker.data,
- invoker.schema,
- ]
-
- outputs = [
- stamp_file,
- ]
-
- args = [
- rebase_path(invoker.schema),
- rebase_path(invoker.data),
- rebase_path(stamp_file),
- ]
- }
-}
diff --git a/mac/find_sdk.py b/mac/find_sdk.py
deleted file mode 100755
index 0ce1e64..0000000
--- a/mac/find_sdk.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-"""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.12
-"""
-
-import argparse
-import os
-import re
-import subprocess
-import sys
-
-
-def parse_version(version_str):
- """'10.6' => [10, 6]"""
- return map(int, re.findall(r'(\d+)', version_str))
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument("--print-sdk-path",
- action="store_true", dest="print_sdk_path", default=False,
- help="Print the path to the SDK")
- parser.add_argument("--developer-dir", help='Path to Xcode')
- parser.add_argument("min_sdk_version", help="Minimum SDK version")
- args = parser.parse_args()
-
- if args.developer_dir:
- os.environ['DEVELOPER_DIR'] = args.developer_dir
-
- # 'xcrun' always returns the latest available SDK
- version = subprocess.check_output(['xcrun', '--sdk', 'macosx',
- '--show-sdk-version']).strip()
- if parse_version(version) < parse_version(args.min_sdk_version):
- raise Exception('SDK version %s is before minimum version %s'
- % (version, args.min_sdk_version))
- if args.print_sdk_path:
- print subprocess.check_output(['xcrun', '--sdk', 'macosx',
- '--show-sdk-path']).strip()
- print version
-
- return 0
-
-
-if __name__ == '__main__':
- if sys.platform != 'darwin':
- raise Exception("This script only runs on Mac")
- sys.exit(main())
diff --git a/make_map.py b/make_map.py
deleted file mode 100755
index 6f0ba96..0000000
--- a/make_map.py
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-
-"""Make a mapping of dependencies for fidl files.
-
-The map contains one line per mapping, each of which is from a fidl file location
-to a sequence of GN build targets. If the mapping is public (ie directly from the
-source or through a public_deps dependency) then it is prepended with "pub ".
-
-The sequence of targets has length greater than 1 if the file can be referenced
-from this module through a sequence of dependencies.
-
-An example entry is:
-
-pub //garnet/public/lib/ui/views/fidl/views.fidl: //garnet/public/lib/media/fidl:services //apps/mozart/services/views:views
-"""
-
-import ast
-import optparse
-import os
-import sys
-import zipfile
-
-# for some reason, gn seems to tack on an extra element in the directory
-def fix_label(label):
- split_tag = label.split(':')
- split_label = split_tag[0].split('/')
- split_label.pop()
- split_tag[0] = '/'.join(split_label)
- return ':'.join(split_tag)
-
-def rel_label(label, relpath):
- split_label = label.split(':')[0].split('/')
- for el in relpath.split('/'):
- if el == '..':
- split_label.pop()
- else:
- split_label.append(el)
- return '/'.join(split_label)
-
-def handle_map_deps(o, depsmap, covered, target, is_public):
- #o.write('#pass-through from %s (public %s)\n' % (depsmap, is_public))
- for dep in file(depsmap):
- parts = dep.split()
- if parts[0] != 'pub': continue
- fileref = parts[1].rstrip(':')
- if fileref in covered: continue
- pubstr = 'pub ' if is_public else ''
- o.write('%s%s: %s %s\n' % (pubstr, fileref, target, ' '.join(parts[2:])))
-
-
-def make_map(output, sources, map_deps, map_public_deps, target):
- target = fix_label(target)
- o = file(output, 'w')
- covered = set()
- for i in sources:
- covered.add(i)
- new_path = rel_label(target, i)
- o.write('pub %s: %s\n' % (new_path, target))
- for m in map_deps:
- handle_map_deps(o, m, covered, target, False)
- for m in map_public_deps:
- handle_map_deps(o, m, covered, target, True)
-
-def main():
- parser = optparse.OptionParser()
-
- parser.add_option('--sources', help='List of source files.')
- parser.add_option('--target', help='Name of current target.')
- parser.add_option('--map-deps', help='List of map files of deps to aggregate.')
- parser.add_option('--map-public-deps', help='List of map files of public deps to aggregate.')
- parser.add_option('--output', help='Path to output archive.')
-
- options, _ = parser.parse_args()
-
- sources = []
- if (options.sources):
- sources = ast.literal_eval(options.sources)
- map_deps = []
- if options.map_deps:
- map_deps = ast.literal_eval(options.map_deps)
- map_public_deps = []
- if options.map_public_deps:
- map_public_deps = ast.literal_eval(options.map_public_deps)
- output = options.output
- target = options.target
-
- make_map(output, sources, map_deps, map_public_deps, target)
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/manifest/build b/manifest/build
deleted file mode 100644
index 188d676..0000000
--- a/manifest/build
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<manifest>
- <imports>
- <localimport file="minimal"/>
- <localimport file="third_party"/>
- </imports>
-</manifest>
diff --git a/manifest/minimal b/manifest/minimal
deleted file mode 100644
index 84d4f22..0000000
--- a/manifest/minimal
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<manifest>
- <projects>
- <project name="build"
- path="build"
- remote="https://fuchsia.googlesource.com/build"
- gerrithost="https://fuchsia-review.googlesource.com"/>
- </projects>
- <hooks>
- <hook name="symlink-.gn"
- project="build"
- action="dot_gn_symlink.sh"/>
- </hooks>
-</manifest>
diff --git a/manifest/third_party b/manifest/third_party
deleted file mode 100644
index c930953..0000000
--- a/manifest/third_party
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<manifest>
- <imports>
- <localimport file="minimal"/>
- </imports>
- <projects>
- <project name="third_party/mako"
- path="third_party/mako"
- remote="https://fuchsia.googlesource.com/third_party/mako"
- gerrithost="https://fuchsia-review.googlesource.com"
- revision="e6b41d232315660de544a7a692e58acddd2e612c"/>
- <project name="third_party/python/mock"
- path="third_party/python/mock"
- remote="https://fuchsia.googlesource.com/third_party/python/testing-cabal/mock"
- gerrithost="https://fuchsia-review.googlesource.com"
- revision="8c19ef6c95004524cb9f0b170a1aff6f47ade764"/>
- <project name="third_party/pytoml"
- path="third_party/pytoml"
- remote="https://fuchsia.googlesource.com/third_party/pytoml"
- gerrithost="https://fuchsia-review.googlesource.com"
- revision="8641351699f44401232786cd9f320ac373c3a02e"/>
- <project name="third_party/pyyaml"
- path="third_party/pyyaml"
- remote="https://fuchsia.googlesource.com/third_party/pyyaml"
- gerrithost="https://fuchsia-review.googlesource.com"
- revision="7f118278ff09fc2deea32b429cffc38856bf6992"/>
- <project name="third_party/rapidjson"
- path="third_party/rapidjson"
- remote="https://fuchsia.googlesource.com/third_party/rapidjson"
- revision="32d07c55db1bb6c2ae17cba4033491a667647753"
- gerrithost="https://fuchsia-review.googlesource.com"/>
- </projects>
-</manifest>
diff --git a/module_args/dart.gni b/module_args/dart.gni
deleted file mode 100644
index d174721..0000000
--- a/module_args/dart.gni
+++ /dev/null
@@ -1,6 +0,0 @@
-# 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 variable should point to the Dart SDK.
-dart_sdk_root = "///third_party/dart/sdk"
diff --git a/package.gni b/package.gni
deleted file mode 100644
index 837b37e..0000000
--- a/package.gni
+++ /dev/null
@@ -1,844 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/assert_cmx.gni")
-import("//build/cmx/cmx.gni")
-import("//build/compiled_action.gni")
-import("//build/gn/packages.gni")
-import("//build/images/manifest.gni")
-import("//build/json/validate_json.gni")
-import("//build/package/component.gni")
-import("//build/packages/package_internal.gni")
-import("//build/testing/test_spec.gni")
-
-declare_args() {
- # The package key to use for signing Fuchsia packages made by the
- # `package()` template (and the `system_image` packge). If this
- # doesn't exist yet when it's needed, it will be generated. New
- # keys can be generated with the `pm -k FILE genkey` host command.
- system_package_key = "//build/development.key"
-}
-
-# Generate a signed, sealed package file from a manifest.
-#
-# Parameters
-#
-# manifest (required)
-# [label] A generate_manifest() target defined earlier in the same file.
-# This provides the contents for the package.
-#
-# deps (optional)
-# test (optional)
-# visibility (optional)
-# Same as for any GN `action()` target.
-
-template("pm_build_package") {
- compiled_action(target_name) {
- tool = "//garnet/go/src/pm:pm_bin"
- tool_output_name = "pm"
-
- deps = []
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "testonly",
- "visibility",
- ])
- pkg_manifest_outputs = get_target_outputs(invoker.manifest)
- pkg_manifest_file = pkg_manifest_outputs[0]
- pkg_out_dir = "$target_out_dir/$target_name"
-
- deps += [
- "//build/images:system_package_key_check",
- invoker.manifest,
- ]
-
- inputs = [
- pkg_manifest_file,
- system_package_key,
- ]
-
- depfile = "$pkg_out_dir/meta.far.d"
-
- outputs = [
- # produced by seal, must be listed first because of depfile rules.
- "$pkg_out_dir/meta.far",
-
- # update
- "$pkg_out_dir/meta/contents",
-
- # sign
- "$pkg_out_dir/meta/pubkey",
- "$pkg_out_dir/meta/signature",
-
- # seal
- "$pkg_out_dir/meta.far.merkle",
-
- # package blob manifest
- "$pkg_out_dir/blobs.json",
- ]
-
- args = [
- "-k",
- rebase_path(system_package_key, root_build_dir),
- "-o",
- rebase_path(pkg_out_dir, root_build_dir),
- "-m",
- rebase_path(pkg_manifest_file, root_build_dir),
- "build",
- "-depfile",
- "-blobsfile",
- ]
- }
-}
-
-# Defines a package
-#
-# The package template is used to define a unit of related code and data.
-# A package always has a name (defaulting to the target name) and lists of
-# scopes describing the components of the package.
-#
-# Parameters
-#
-# deprecated_system_image (optional, default `false`)
-# [bool] If true, the package is stored in the /system filesystem image
-# rather than in a Fuchsia package.
-#
-# TODO(PKG-46): Will be removed entirely eventually.
-#
-# If this package uses the `drivers` parameter,
-# `deprecated_system_image` must be set to `true` because we are not
-# yet sophisticated enough to load drivers out of packages.
-#
-# meta (optional)
-# [list of scopes] Defines the metadata entries in the package. A metadata
-# entry is typically a source file and is placed in the `meta/` directory of
-# the assembled package.
-#
-# Requires `deprecated_system_image` to be `false`.
-#
-# Entries in a scope in the meta list:
-#
-# path (required)
-# [path] Location of entry in source or build directory. If the
-# resource is checked in, this will typically be specified as a
-# path relative to the BUILD.gn file containing the `package()`
-# target. If the resource is generated, this will typically be
-# specified relative to `$target_gen_dir`.
-#
-# dest (required)
-# [path] Location the resource will be placed within `meta/`.
-#
-# binary (optional, *DEPRECATED*)
-# [string] The path to the the primary binary for the package, relative to
-# `$root_out_dir`. The binary will be placed in the assembled package at
-# `bin/app` and will be executed by default when running the package.
-#
-# Requires `deprecated_system_image` to be `false`.
-#
-# binaries (optional)
-# [list of scopes] Defines the binaries in the package. A binary is
-# typically produced by the build system and is placed in the `bin/`
-# directory of the assembled package.
-#
-# Entries in a scope in the binaries list:
-#
-# name (required)
-# [string] Name of the binary.
-#
-# source (optional)
-# [path] Location of the binary in the build directory if it is not
-# at `$root_out_dir/$name`.
-#
-# dest (optional)
-# [path] Location the binary will be placed within `bin/`.
-#
-# shell (optional)
-# [boolean] (default: false) When true, the binary is runnable from the shell.
-# Shell binaries are run in the shell namespace and are not run as components.
-#
-# components (optional)
-# [list of fuchsia_component targets] Defines all the components this
-# package should include in assembled package.
-#
-# Requires `deprecated_system_image` to be `false`.
-#
-# tests (optional)
-# [list of scopes] Defines the test binaries in the package. A test is
-# typically produced by the build system and is placed in the `test/`
-# directory of the assembled package.
-#
-# Entries in a scope in the tests list:
-#
-# name (required)
-# [string] Name of the test.
-#
-# dest (optional)
-# [path] Location the binary will be placed within `test/`.
-#
-# disabled (optional)
-# [bool] Whether to disable the test on continuous integration
-# jobs. This can be used when a test is temporarily broken, or if
-# it is too flaky or slow for CI. The test will also be skipped by
-# the `runtests` command.
-#
-# environments (optional, default: [ { dimensions = { device_type = "QEMU" } } ])
-# [list of scopes] Device environments in which the test should run.
-#
-# Each scope in $environments contains:
-#
-# dimensions (required)
-# [scope] Dimensions of bots to target. Valid dimensions are
-# element-wise subsets of the test platform entries defined in
-# //build/testing/platforms.gni.
-#
-# label (optional)
-# [string] A key on which tests may be grouped. Tests with a given
-# label will be run (1) together, and (2) only with support from
-# the Infrastructure team. Labels are used as an escape hatch from
-# the default testing pipeline for special tests or environments.
-#
-# drivers (optional)
-# [list of scopes] Defines the drivers in the package. A driver is
-# typically produced by the build system and is placed in the `driver/`
-# directory of the assembled package.
-#
-# Requires `deprecated_system_image` to be `true`.
-#
-# Entries in a scope in the drivers list:
-#
-# name (required)
-# [string] Name of the driver.
-#
-# loadable_modules (optional)
-# [list of scopes] Defines the loadable modules in the package. These
-# are produced by `loadable_module()` GN targets, and are typically
-# placed in the `lib/` directory of the assembled packaged.
-#
-# Entries in a scope in the loadable_modules list:
-#
-# name (required)
-# [string] Name of the loadable_module.
-#
-# dest (optional, default: "lib")
-# [string] Location the binary will be placed in the package.
-#
-# libraries (optional, *DEPRECATED*)
-# [list of scopes] Defines the (shared) libraries in the package. A library
-# is placed in the `lib/` directory of the assembled package.
-#
-# This is deprecated but is necessary in some `system_image` packages
-# that install libraries used by things that don't properly isolate
-# their dependencies. Do not use it unless you are sure you have to.
-#
-# Entries in a scope in the libraries list:
-#
-# name (required)
-# [string] Name of the library
-#
-# source (optional)
-# [path] Location of the binary in the build directory if it is not at
-# `$root_out_dir/$name`
-#
-# dest (optional)
-# [path] Location the binary will be placed within `lib/`
-#
-# resources (optional)
-# [list of scopes] Defines the resources in the package. A resource is a
-# data file that may be produced by the build system, checked in to a
-# source repository, or produced by another system that runs before the
-# build. Resources are placed in the `data/` directory of the assembled
-# package.
-#
-# Entries in a scope in the resources list:
-#
-# path (required)
-# [path] Location of resource in source or build directory. If the
-# resource is checked in, this will typically be specified as a
-# path relative to the BUILD.gn file containing the `package()`
-# target. If the resource is generated, this will typically be
-# specified relative to `$target_gen_dir`.
-#
-# dest (required)
-# [path] Location the resource will be placed within `data/`.
-#
-# extra (optional)
-# [list of paths] Manifest files containing extra entries, which
-# might be generated by the build.
-#
-# deps (optional)
-# public_deps (optional)
-# data_deps (optional)
-# testonly (optional)
-# Usual GN meanings.
-#
-template("package") {
- if (current_toolchain == target_toolchain) {
- forward_variables_from(invoker, [ "testonly" ])
- pkg_target_name = target_name
- pkg = {
- package_version = "0" # placeholder
- forward_variables_from(invoker,
- [
- "binaries",
- "binary",
- "components",
- "data_deps",
- "deprecated_system_image",
- "deprecated_bare_package_url",
- "deps",
- "public_deps",
- "drivers",
- "extra",
- "libraries",
- "loadable_modules",
- "meta",
- "package_name",
- "resources",
- "visibility",
- "tests",
- ])
- if (!defined(binaries)) {
- binaries = []
- }
- if (!defined(deprecated_system_image)) {
- deprecated_system_image = false
- }
- if (!defined(deps)) {
- deps = []
- }
- if (!defined(components)) {
- components = []
- }
- if (!defined(data_deps)) {
- data_deps = []
- }
- if (!defined(public_deps)) {
- public_deps = []
- }
- if (!defined(extra)) {
- extra = []
- }
- if (!defined(drivers)) {
- drivers = []
- }
- if (!defined(loadable_modules)) {
- loadable_modules = []
- }
- if (!defined(libraries)) {
- libraries = []
- }
- if (!defined(meta)) {
- meta = []
- }
- if (!defined(package_name)) {
- package_name = pkg_target_name
- }
- if (defined(deprecated_bare_package_url)) {
- deps += [ "${deprecated_bare_package_url}:bare_package_url_whitelist" ]
- }
- if (components == []) {
- assert_cmx(package_name) {
- forward_variables_from(invoker, "*")
- }
- }
- foreach(component, components) {
- deps += [ component ]
- }
- if (!defined(resources)) {
- resources = []
- }
- if (!defined(tests)) {
- tests = []
- }
- package_set = ""
- }
-
- pkg_label = get_label_info(":$pkg_target_name", "label_no_toolchain")
- pkg_desc = "Package ${pkg_label} (${pkg.package_name}):"
- if (pkg.deprecated_system_image) {
- assert(pkg.meta == [],
- "$pkg_desc deprecated_system_image incompatible with meta")
- assert(pkg.components == [],
- "$pkg_desc deprecated_system_image incompatible with components")
- assert(!defined(pkg.binary),
- "$pkg_desc deprecated_system_image incompatible with binary")
- } else {
- assert(pkg.drivers == [],
- "$pkg_desc drivers requires deprecated_system_image")
- assert(pkg.libraries == [],
- "$pkg_desc libraries requires deprecated_system_image")
- if (defined(pkg.binary)) {
- pkg.binaries += [
- {
- name = "app"
- source = pkg.binary
- },
- ]
- }
- }
-
- # Validate .cmx files
- foreach(meta, pkg.meta) {
- if (get_path_info(meta.dest, "extension") == "cmx") {
- validate = "validate_" + pkg_target_name + "_" +
- get_path_info(meta.dest, "file")
- cmx_validate(validate) {
- data = meta.path
-
- # the cmx file may be generated by one of this package's dependencies,
- # but we don't know which one, so depend on all package deps here.
- deps = pkg.deps
- }
- pkg.deps += [ ":$validate" ]
- }
- }
-
- # cmx_format will minify cmx files in non-debug builds, and pretty-print cmx
- # files in debug builds
- meta_with_formatted_cmx = []
- foreach(meta, pkg.meta) {
- if (get_path_info(meta.dest, "extension") == "cmx") {
- format =
- "format_" + pkg_target_name + "_" + get_path_info(meta.dest, "file")
-
- # TODO(CF-156): Remove this logic once all URLs are fuchsia-pkg.
- if (defined(pkg.deprecated_bare_package_url)) {
- merged_deprecated_bare_package_url =
- "merged_deprecated_bare_package_url_" + pkg_target_name + "_" +
- get_path_info(meta.dest, "file")
- cmx_merge(merged_deprecated_bare_package_url) {
- sources = [
- meta.path,
- rebase_path("//build/deprecated_bare_package_url"),
- ]
- deps = pkg.deps
- }
- merged_deprecated_bare_package_url_outputs = []
- merged_deprecated_bare_package_url_outputs =
- get_target_outputs(":$merged_deprecated_bare_package_url")
- merged_deprecated_bare_package_url_path =
- merged_deprecated_bare_package_url_outputs[0]
- pkg.deps += [ ":$merged_deprecated_bare_package_url" ]
- cmx_format(format) {
- data = rebase_path(merged_deprecated_bare_package_url_path)
- deps = pkg.deps
- }
- } else {
- cmx_format(format) {
- data = rebase_path(meta.path)
- deps = pkg.deps
- }
- }
- formatted_outputs = []
- formatted_outputs = get_target_outputs(":$format")
- meta.path = formatted_outputs[0]
- pkg.deps += [ ":$format" ]
- }
- meta_with_formatted_cmx += [ meta ]
- }
-
- shell_binaries = []
-
- # Collect the package's primary manifest. For a system_image package,
- # this is its contributions to the /system manifest. For an isolated
- # package, this is the manifest for the package's `pkg/` filesystem.
- pkg_manifest = []
- foreach(meta, meta_with_formatted_cmx) {
- pkg_manifest += [
- {
- dest = "meta/${meta.dest}"
- source = rebase_path(meta.path)
- },
- ]
- }
- foreach(binary, pkg.binaries) {
- if (defined(binary.dest)) {
- dest = binary.dest
- } else {
- dest = binary.name
- }
- dest = "bin/${dest}"
- if (defined(binary.shell) && binary.shell) {
- shell_binaries += [ dest ]
- }
-
- pkg_manifest += [
- {
- dest = dest
-
- if (defined(binary.source)) {
- source = binary.source
- } else {
- source = binary.name
- }
- source = rebase_path(source, "", root_out_dir)
- },
- ]
- }
- foreach(test, pkg.tests) {
- is_disabled = defined(test.disabled) && test.disabled
- pkg_manifest += [
- {
- if (defined(test.dest)) {
- dest = test.dest
- } else {
- dest = test.name
- }
- if (is_disabled) {
- dest = "disabled/${dest}"
- }
- dest = "test/${dest}"
- source = rebase_path(test.name, "", root_out_dir)
-
- if (!is_disabled) {
- test_spec("${test.name}.spec") {
- name = test.name
- if (pkg.deprecated_system_image) {
- location = "/system/$dest"
- } else {
- location = "/pkgfs/packages/${pkg.package_name}/${pkg.package_version}/$dest"
- }
-
- # Encode the package name in the output directory to disambiguate
- # during post-processing - cross-referencing with packages.json -
- # whether a given test spec came from a package that was actually
- # included in the build.
- output_dir = "$target_out_dir/$pkg_target_name"
-
- forward_variables_from(test, [ "environments" ])
- }
- }
- },
- ]
- }
- foreach(module, pkg.loadable_modules) {
- pkg_manifest += [
- {
- if (defined(module.dest)) {
- dest = module.dest
- } else {
- dest = "lib"
- }
- dest += "/${module.name}"
- source = rebase_path(module.name, "", root_out_dir)
- },
- ]
- }
- foreach(driver, pkg.drivers) {
- pkg_manifest += [
- {
- dest = "driver/${driver.name}"
- source = rebase_path(driver.name, "", root_out_dir)
- },
- ]
- }
- foreach(resource, pkg.resources) {
- pkg_manifest += [
- {
- dest = "data/${resource.dest}"
- source = rebase_path(resource.path)
- },
- ]
- }
-
- # TODO(mcgrathr): Remove this when we can! Packages installing
- # libraries in the system image is all kinds of wrong.
- foreach(library, pkg.libraries) {
- pkg_manifest += [
- {
- if (defined(library.dest)) {
- dest = library.dest
- } else {
- dest = library.name
- }
- dest = "lib/${dest}"
- if (defined(library.source)) {
- source = library.source
- } else {
- # TODO(mcgrathr): This breaks when everything is a variant so
- # that only this here is using the non-variant shlib build.
- source = get_label_info(shlib_toolchain, "name")
- source += "/${library.name}"
- }
- source = rebase_path(source, "", root_out_dir)
- },
- ]
- }
-
- # Collect all the arguments describing input manifest files
- # and all the entries we've just synthesized in `pkg_manifest`.
- manifest_sources = pkg.extra
- manifest_args = []
- foreach(manifest_file, pkg.extra) {
- manifest_file = rebase_path(manifest_file, root_build_dir)
- manifest_args += [ "--manifest=${manifest_file}" ]
- }
- manifest_args += [ "--entry-manifest=${pkg_label}" ]
- foreach(entry, pkg_manifest) {
- manifest_sources += [ entry.source ]
- manifest_args += [ "--entry=${entry.dest}=${entry.source}" ]
- }
-
- # An empty package() target doesn't actually generate a package at all.
- # Conveniently, an empty system_image package has exactly that effect.
- if (manifest_sources == [] && pkg.components == []) {
- pkg.deprecated_system_image = true
- }
-
- if (pkg.deprecated_system_image) {
- # Dummy target to deposit an empty ids.txt file for
- # //build/images:ids.txt to collect.
- action("${pkg_target_name}.final.manifest.ids.txt") {
- script = "/bin/cp"
-
- # Add sources and deps so that the package gets rebuilt whenever they
- # change.
- sources = manifest_sources
- data_deps = pkg.data_deps
- deps = pkg.deps
- public_deps = pkg.public_deps
- outputs = [
- "$target_out_dir/${target_name}",
- ]
- args = [
- "-f",
- "/dev/null",
- ] + rebase_path(outputs, root_build_dir)
- }
- } else {
- # Synthesize the meta/package file.
- pkg_meta_package = "${pkg_target_name}_meta_package.json"
- action(pkg_meta_package) {
- visibility = [ ":${pkg_target_name}.manifest" ]
- script = "//build/gn/write_package_json.py"
- outputs = [
- "$target_out_dir/$pkg_meta_package",
- ]
- args = [
- "--name",
- pkg.package_name,
- "--version",
- pkg.package_version,
- rebase_path(pkg_meta_package, root_build_dir, target_out_dir),
- ]
- }
-
- generate_manifest("${pkg_target_name}.manifest") {
- sources = manifest_sources + get_target_outputs(":$pkg_meta_package")
- args = manifest_args +
- [ "--entry=meta/package=" +
- rebase_path(pkg_meta_package, "", target_out_dir) ]
- deps = pkg.deps + [ ":$pkg_meta_package" ]
- public_deps = pkg.public_deps
- }
-
- final_manifest = "${pkg_target_name}.final.manifest"
- final_manifest_ids = "${final_manifest}.ids.txt"
-
- # TODO(CF-224): clean this up when gn has metadata support for templates
- # merge all package ids and component ids in a single file.
- action(final_manifest_ids) {
- script = "/usr/bin/sort"
- output_name = "${target_out_dir}/${final_manifest_ids}"
- outputs = [
- output_name,
- ]
- manifest_id = "$target_out_dir/${pkg_target_name}.manifest.ids.txt"
- args = [
- "-u",
- "-o",
- rebase_path(output_name),
- rebase_path(manifest_id),
- ]
- inputs = [
- manifest_id,
- ]
- deps = [
- ":${pkg_target_name}.manifest",
- ]
-
- foreach(component, pkg.components) {
- deps += [ component ]
- component_name = get_label_info(component, "name")
- dir = get_label_info(component, "target_out_dir")
- manifest_file = "${dir}/${component_name}.manifest.ids.txt"
- inputs += [ manifest_file ]
- args += [ rebase_path(manifest_file) ]
- }
- }
-
- # Merge all component and package manifests in single file
- action(final_manifest) {
- script = "//build/cat.py"
- output_name = "${target_out_dir}/${final_manifest}"
- outputs = [
- output_name,
- ]
- visibility = [ "*" ]
-
- pmx = "$target_out_dir/${pkg_target_name}.manifest"
- args = [
- "-o",
- rebase_path(output_name),
- "-i",
- rebase_path("$target_out_dir/${pkg_target_name}.manifest"),
- ]
- inputs = [
- pmx,
- ]
- deps = [
- ":${final_manifest_ids}",
- ":${pkg_target_name}.manifest",
- ]
-
- foreach(component, pkg.components) {
- deps += [ component ]
- component_name = get_label_info(component, "name")
- dir = get_label_info(component, "target_out_dir")
- manifest_file = "${dir}/${component_name}.manifest"
- inputs += [ manifest_file ]
- args += [
- "-i",
- rebase_path(manifest_file),
- ]
- }
- }
-
- # Next generate a signed, sealed package file.
- pm_build_package("${pkg_target_name}.meta") {
- manifest = ":$final_manifest"
- }
-
- # Clear it so we don't put anything into the system image.
- manifest_args = []
- }
-
- generate_response_file(pkg_target_name) {
- if (defined(pkg.visibility)) {
- visibility = pkg.visibility + [
- "//build/gn:packages",
- "//build/images:system_image.manifest",
- ]
- }
- if (pkg.deprecated_system_image) {
- deps = pkg.deps + [ ":${pkg_target_name}.final.manifest.ids.txt" ]
- } else {
- deps = pkg.deps + [ ":${pkg_target_name}.final.manifest" ]
- }
- data_deps = pkg.data_deps
- public_deps = pkg.public_deps
- output_name = "${pkg_target_name}.system.rsp"
- response_file_contents = manifest_args
- }
-
- # TODO(raggi): once /system is removed, the blobs rsp's can be removed, as
- # all packages would produce a blobs.json.
- generate_response_file("${pkg_target_name}.blobs.rsp") {
- if (pkg.deprecated_system_image) {
- # A system_image package has no blobs of its own.
- response_file_contents = []
- } else {
- # A real package needs blobs for all its contents and for its
- # synthesized meta.far file.
- deps = [
- ":${pkg_target_name}.meta",
- ]
- response_file_contents = [
- "--input",
- rebase_path("${pkg_target_name}.meta/blobs.json",
- root_build_dir,
- target_out_dir),
- ]
- }
- }
-
- generate_response_file("${pkg_target_name}.shell_commands.rsp") {
- response_file_contents = []
-
- foreach(binary, shell_binaries) {
- response_file_contents += [
- # TODO(CF-105): fuchsia-pkg URIs should always have a variant (add /${pkg.package_version}).
- "--uri",
- "fuchsia-pkg://fuchsia.com/${pkg.package_name}#${binary}",
- ]
- }
- }
-
- # Determine why this package is being built.
- if (!pkg.deprecated_system_image) {
- foreach(name, available_packages) {
- if (name == pkg_label) {
- pkg.package_set = "available"
- }
- }
- foreach(name, preinstall_packages) {
- if (name == pkg_label) {
- pkg.package_set = "preinstall"
- }
- }
- foreach(name, monolith_packages) {
- if (name == pkg_label) {
- pkg.package_set = "monolith"
- }
- }
- }
-
- generate_system_index("${pkg_target_name}.system_index.rsp") {
- deprecated_system_image = pkg.deprecated_system_image
- meta_target = ":${pkg_target_name}.meta"
- package_set = pkg.package_set
- package_name = pkg.package_name
- package_version = pkg.package_version
- blobs_json = "${pkg_target_name}.meta/blobs.json"
- }
-
- # A real package needs has a pkgsvr index entry mapping its package
- # name and version to its meta.far file's merkleroot.
- # The amber index is the same, but needs the meta.far filename
- # in the build, rather than its merkleroot.
- # TODO(mcgrathr): Make amber publish use pkgsvr index directly.
- foreach(index,
- [
- {
- name = "pkgsvr_index"
- file = "meta.far.merkle"
- },
- {
- name = "amber_index"
- file = "meta.far"
- },
- ]) {
- generate_index("${pkg_target_name}.${index.name}.rsp") {
- deprecated_system_image = pkg.deprecated_system_image
- if (!deprecated_system_image) {
- deps = [
- ":${pkg_target_name}.manifest",
- ":${pkg_target_name}.meta",
- ]
- }
- index_file = "${pkg_target_name}.meta/${index.file}"
- package_name = pkg.package_name
- package_version = pkg.package_version
- pkg_label = pkg_label
- if (defined(testonly)) {
- testonly = testonly
- }
- }
- }
- } else {
- group(target_name) {
- forward_variables_from(invoker,
- [
- "public_deps",
- "deps",
- "testonly",
- ])
- }
-
- # Suppress unused variable warnings.
- not_needed(invoker, "*")
- }
-}
diff --git a/package/component.gni b/package/component.gni
deleted file mode 100644
index aa1c7d2..0000000
--- a/package/component.gni
+++ /dev/null
@@ -1,307 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/cmx/cmx.gni")
-import("//build/images/manifest.gni")
-
-# Defines a fuchsia component.
-#
-# This template is used to define a unit of component.
-# A component always has a manifest defining that component.
-#
-# Parameters
-#
-# manifest (required)
-# [path] Defines the manifest source path for this component.
-#
-# manifest_dest (optional)
-# [path] Defines the destination of the component manifest within the assembled package.
-#
-# If not provided, defaults to "meta/<manifest>.cmx" if manifest was .cmx, and "meta/<manifest>.cm" if manfiest was .cml.
-#
-# binary (required)
-# [path] The path to the the primary binary for the component.
-#
-# loadable_modules (optional)
-# [list of scopes] Defines the loadable modules in the package. These
-# are produced by `loadable_module()` GN targets, and are typically
-# placed in the `lib/` directory of the assembled packaged.
-#
-# Entries in a scope in the loadable_modules list:
-#
-# name (required)
-# [string] Name of the loadable_module.
-#
-# dest (optional, default: "lib")
-# [string] Location the lib will be placed in the package.
-#
-# resources (optional)
-# [list of scopes] Defines the resources for this component. A resource is a
-# data file that may be produced by the build system, checked in to a
-# source repository, or produced by another system that runs before the
-# build. Resources are placed in the `data/` directory of the assembled
-# package.
-#
-# Entries in a scope in the resources list:
-#
-# path (required)
-# [path] Location of resource in source or build directory. If the
-# resource is checked in, this will typically be specified as a
-# path relative to the BUILD.gn file containing the `package()`
-# target. If the resource is generated, this will typically be
-# specified relative to `$target_gen_dir`.
-#
-# dest (required)
-# [path] Location the resource will be placed within `data/`.
-#
-# test (optional)
-# [bool] Should be true if this component is test.
-#
-# deps (optional)
-# public_deps (optional)
-# data_deps (optional)
-# visibility (optional)
-# testonly (optional)
-# Usual GN meanings.
-#
-template("fuchsia_component") {
- if (current_toolchain == target_toolchain) {
- component_label = get_label_info(":$target_name", "label_with_toolchain")
- forward_variables_from(invoker, [ "testonly" ])
- component = {
- forward_variables_from(invoker,
- [
- "binary",
- "data_deps",
- "deps",
- "public_deps",
- "loadable_modules",
- "resources",
- "visibility",
- "manifest",
- "manifest_dest",
- "test",
- ])
- assert(defined(manifest),
- "Component $component_label should define manifest")
- manifest_extension = get_path_info(manifest, "extension")
- assert(
- manifest_extension == "cmx" || manifest_extension == "cml",
- "Component $component_label's manifest $manifest should have extension .cmx or .cml")
- if (!defined(manifest_dest)) {
- if (manifest_extension == "cmx") {
- manifest_dest = "meta/" + get_path_info(manifest, "file")
- } else {
- manifest_dest = "meta/" + get_path_info(manifest, "name") + ".cm"
- }
- } else {
- manifest_dest_extension = get_path_info(manifest_dest, "extension")
- if (manifest_extension == "cmx") {
- assert(
- manifest_dest_extension == "cmx",
- "Component $component_label's manifest_dest $manifest_dest should have extension .cmx")
- } else {
- assert(
- manifest_dest_extension == "cm",
- "Component $component_label's manifest_dest $manifest_dest should have extension .cm")
- }
- }
-
- # remove this check once we support dart and flutter
- assert(defined(binary), "Component $component_label should define binary")
- if (!defined(deps)) {
- deps = []
- }
- if (!defined(data_deps)) {
- data_deps = []
- }
- if (!defined(public_deps)) {
- public_deps = []
- }
- if (!defined(test)) {
- test = false
- }
- if (!defined(loadable_modules)) {
- loadable_modules = []
- }
- if (!defined(manifest)) {
- manifest = rebase_path("meta/${name}.cmx")
- }
- if (!defined(resources)) {
- resources = []
- }
- }
-
- component_manifest = []
- if (get_path_info(component.manifest, "extension") == "cmx") {
- validate = "validate_" + target_name + "_" +
- get_path_info(component.manifest_dest, "file")
-
- cmx_validate(validate) {
- data = component.manifest
-
- # the cmx file may be generated by one of this component's dependencies,
- # but we don't know which one, so depend on all package deps here.
- deps = component.deps
- public_deps = component.public_deps
- }
- component.deps += [ ":$validate" ]
-
- # Collect the component's primary manifest.
- component_manifest += [
- {
- dest = component.manifest_dest
- source = rebase_path(component.manifest)
- },
- ]
- } else if (get_path_info(component.manifest, "extension") == "cml") {
- compiled = "compiled_" + target_name + "_" +
- get_path_info(component.manifest_dest, "file")
-
- cm_compile(compiled) {
- data = component.manifest
-
- # the cm file may be generated by one of this component's dependencies,
- # but we don't know which one, so depend on all package deps here.
- deps = component.deps
- public_deps = component.public_deps
- }
- component.deps += [ ":$compiled" ]
- compiled_outputs = get_target_outputs(":$compiled")
-
- # Collect the component's primary manifest.
- component_manifest += [
- {
- dest = component.manifest_dest
- source = rebase_path(compiled_outputs[0])
- },
- ]
- }
-
- bin_dir = "bin/"
- if (component.test) {
- bin_dir = "test/"
- }
- component_manifest += [
- {
- dest = bin_dir + get_path_info(component.binary, "file")
- source = rebase_path(component.binary, "", root_out_dir)
- },
- ]
- foreach(module, component.loadable_modules) {
- component_manifest += [
- {
- if (defined(module.dest)) {
- dest = module.dest
- } else {
- dest = "lib"
- }
- dest += "/${module.name}"
- source = rebase_path(module.name, "", root_out_dir)
- },
- ]
- }
- foreach(resource, component.resources) {
- component_manifest += [
- {
- dest = "data/${resource.dest}"
- source = rebase_path(resource.path)
- },
- ]
- }
-
- # Collect all the arguments describing input manifest files
- # and all the entries we've just synthesized in `component_manifest`.
- manifest_sources = []
- manifest_args = []
- foreach(entry, component_manifest) {
- manifest_sources += [ entry.source ]
- manifest_args += [ "--entry=${entry.dest}=${entry.source}" ]
- }
-
- # Generate component build manifest with all its dynamically linked libraries
- # resolved.
- generate_manifest("${target_name}.manifest") {
- sources = manifest_sources
- args = manifest_args
- deps = component.deps
- public_deps = component.public_deps
- }
-
- group(target_name) {
- public_deps = [
- ":${target_name}.manifest",
- ]
- }
- } else {
- group(target_name) {
- forward_variables_from(invoker,
- [
- "public_deps",
- "deps",
- "testonly",
- ])
- }
-
- # Suppress unused variable warnings.
- not_needed(invoker, "*")
- }
-}
-
-# Defines fuchsia test component.
-#
-# This template is used to define a unit of test component.
-# A component always has a manifest defining that component.
-#
-# Parameters
-#
-# binary (required)
-# [path] The path to the the primary binary for the component.
-# This is also be used to infer your manifest source and
-# destination path.
-#
-# manifest (optional)
-# see fuchsia_component()
-# Would be infered from binary name if not specified.
-#
-#
-# loadable_modules (optional)
-# see fuchsia_component()
-#
-# resources (optional)
-# see fuchsia_component()
-#
-# deps (optional)
-# public_deps (optional)
-# data_deps (optional)
-# visibility (optional)
-# Usual GN meanings.
-#
-template("fuchsia_test_component") {
- forward_variables_from(invoker,
- [
- "binary",
- "manifest",
- ])
-
- # remove this check once we support dart and flutter
- assert(defined(binary), "Component $target_name should define binary")
- fuchsia_component(target_name) {
- testonly = true
- test = true
- name = get_path_info(binary, "file")
- if (!defined(manifest)) {
- manifest = rebase_path("meta/${name}.cmx")
- }
- forward_variables_from(invoker,
- [
- "data_deps",
- "deps",
- "public_deps",
- "loadable_modules",
- "resources",
- "visibility",
- ])
- }
-}
diff --git a/package_group.gni b/package_group.gni
deleted file mode 100644
index 576c0cf..0000000
--- a/package_group.gni
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 2018 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.
-
-# Generate a group of packages
-#
-# Parameters
-# deps (required)
-# List of packages or package_groups to depend on.
-#
-# testonly (optional)
-# visibilty (optional)
-
-template("package_group") {
- pkg_target_name = target_name
-
- response_files = [
- "system",
- "blob",
- "pkgsvr_index",
- "amber_index",
- ]
-
- intermediate_targets = []
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- foreach(rsp, response_files) {
- rsp_name = "${pkg_target_name}.${rsp}.rsp"
- action(rsp_name) {
- visibility = [
- ":$pkg_target_name",
- "//build/images:$rsp",
- "//build/images:$rsp.manifest",
- "//build/images:update_packages.manifest",
- ]
- script = "//build/cat.sh"
- output_name = "${target_out_dir}/${rsp_name}"
- outputs = [
- output_name,
- ]
- args = [ rebase_path(output_name) ]
- inputs = []
- deps = []
-
- foreach(pkg_label, invoker.deps) {
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.${rsp}.rsp"
- args += [ rebase_path(pkg_rspfile) ]
- inputs += [ pkg_rspfile ]
- if (rsp == "system") {
- deps += [ pkg_label ]
- } else {
- deps += [ get_label_info(pkg_label, "dir") +
- ":${pkg_target_name}.${rsp}.rsp" ]
- }
- }
- }
-
- intermediate_targets += [ ":${rsp_name}" ]
- }
-
- manifest_target_name = pkg_target_name + ".manifest"
-
- action(manifest_target_name) {
- visibility = [
- ":$pkg_target_name",
- "//build/images:ids.txt",
- ]
- script = "//build/cat.sh"
- output_name = "${target_out_dir}/${manifest_target_name}.ids.txt"
- args = [ rebase_path(output_name) ]
- inputs = []
- deps = []
-
- foreach(pkg_label, invoker.deps) {
- pkg_target_name = get_label_info(pkg_label, "name")
- pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
- pkg_ids = "$pkg_target_out_dir/${pkg_target_name}.manifest.ids.txt"
- args += [ rebase_path(pkg_ids) ]
- inputs += [ pkg_ids ]
- deps +=
- [ get_label_info(pkg_label, "dir") + ":${pkg_target_name}.manifest" ]
- }
- outputs = [
- output_name,
- ]
- }
- intermediate_targets += [ ":${manifest_target_name}" ]
-
- group(pkg_target_name) {
- public_deps = intermediate_targets
- }
-}
diff --git a/packages/install b/packages/install
deleted file mode 100644
index ece8a6f..0000000
--- a/packages/install
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "labels": [
- "//build/gn:install"
- ]
-}
diff --git a/packages/json_merge b/packages/json_merge
deleted file mode 100644
index 11243e3..0000000
--- a/packages/json_merge
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "labels": [
- "//build/tools/json_merge:install"
- ],
- "host_tests": [
- "//build/tools/json_merge:json_merge_test"
- ]
-}
diff --git a/packages/json_validator b/packages/json_validator
deleted file mode 100644
index eada0b0..0000000
--- a/packages/json_validator
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "labels": [
- "//build/tools/json_validator:install"
- ]
-}
diff --git a/packages/netboot b/packages/netboot
deleted file mode 100644
index 6f19a7e..0000000
--- a/packages/netboot
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "labels": [
- "//build/images:netboot",
- "//build/images:netboot-script"
- ]
-}
diff --git a/packages/package_internal.gni b/packages/package_internal.gni
deleted file mode 100644
index 008a0c6..0000000
--- a/packages/package_internal.gni
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/images/manifest.gni")
-
-# This contains templates and implementation details for package rules.
-
-template("generate_system_index") {
- generate_response_file(target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- if (invoker.deprecated_system_image) {
- # A system_image package will be included directly in the system package.
- response_file_contents = []
- not_needed(invoker, "*")
- } else {
- forward_variables_from(invoker,
- [
- "blobs_json",
- "meta_target",
- "package_name",
- "package_set",
- "package_version",
- ])
-
- deps = [
- "${meta_target}",
- ]
- if (package_set == "") {
- package_tags = ""
- } else {
- package_tags = "#${package_set}"
- }
- response_file_contents =
- [ "--entry=${package_name}/${package_version}${package_tags}=" +
- rebase_path(blobs_json, root_build_dir, target_out_dir) ]
- }
- }
-}
-
-template("generate_index") {
- generate_response_file(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- ])
- if (invoker.deprecated_system_image) {
- # A system_image package has no index entry.
- response_file_contents = []
- not_needed(invoker, "*")
- } else {
- forward_variables_from(invoker,
- [
- "index_file",
- "package_name",
- "package_version",
- "pkg_label",
- ])
- response_file_contents = [
- "--entry-manifest=${pkg_label}",
- "--entry=${package_name}/${package_version}=" +
- rebase_path(index_file, root_build_dir, target_out_dir),
- ]
- }
- }
-}
diff --git a/packages/prebuilt_package.gni b/packages/prebuilt_package.gni
deleted file mode 100644
index 477edeb..0000000
--- a/packages/prebuilt_package.gni
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/fuchsia/zircon.gni")
-import("//build/gn/packages.gni")
-import("//build/images/manifest.gni")
-import("//build/packages/package_internal.gni")
-
-# Generate a signed, sealed package file from a prebuilt archive.
-#
-# Parameters
-#
-# archive (required)
-# Path to archive containing a package.
-#
-# package_name (optional)
-# Name of the package.
-# Defaults to the target's name.
-#
-# testonly (optional)
-# visibility (optional)
-# Usual GN meanings.
-#
-template("prebuilt_package") {
- pkg_target_name = target_name
- pkg_label = get_label_info(":$pkg_target_name", "label_no_toolchain")
- pkg_name = target_name
- if (defined(invoker.package_name)) {
- pkg_name = invoker.package_name
- }
-
- meta_dir = target_out_dir + "/" + pkg_name + ".meta"
- blobs_json = "$meta_dir/blobs.json"
-
- action(target_name) {
- forward_variables_from(invoker,
- [
- "testonly",
- "visibility",
- ])
-
- archive = invoker.archive
-
- script = "//build/packages/prebuilt_package.py"
-
- manifest = "$target_out_dir/$pkg_name.manifest"
- system_rsp = "$target_out_dir/$pkg_name.system.rsp"
- ids_txt = "$target_out_dir/$pkg_name.final.manifest.ids.txt"
- meta_merkle = "$meta_dir/meta.far.merkle"
-
- args = [
- "--pm-tool",
- rebase_path("$root_out_dir/host_$host_cpu/pm"),
- "--name",
- pkg_name,
- "--archive",
- rebase_path(archive),
- "--workdir",
- rebase_path(meta_dir, root_build_dir),
- "--manifest",
- rebase_path(manifest, root_build_dir),
- "--system-rsp",
- rebase_path(system_rsp, root_build_dir),
- "--ids-txt",
- rebase_path(ids_txt, root_build_dir),
- ]
- inputs = [
- archive,
- ]
- outputs = [
- manifest,
- ids_txt,
- system_rsp,
- blobs_json,
- meta_merkle,
- ]
-
- deps = [
- "//garnet/go/src/pm:pm_bin($host_toolchain)",
- ]
- }
-
- group(target_name + ".manifest") {
- public_deps = [
- ":$pkg_target_name",
- ]
- }
-
- group(target_name + ".final.manifest.ids.txt") {
- public_deps = [
- ":$pkg_target_name",
- ]
- }
-
- generate_response_file("${pkg_target_name}.blobs.rsp") {
- response_file_contents = ["--input=" + rebase_path(blobs_json, root_build_dir)]
- }
-
- pkg = {
- package_name = target_name
- package_version = 0
- }
-
- generate_system_index(target_name + ".system_index.rsp") {
- deprecated_system_image = false
- meta_target = ":$pkg_target_name"
-
- foreach(name, available_packages) {
- if (name == pkg_label) {
- package_set = "available"
- }
- }
- foreach(name, preinstall_packages) {
- if (name == pkg_label) {
- package_set = "preinstall"
- }
- }
- foreach(name, monolith_packages) {
- if (name == pkg_label) {
- package_set = "monolith"
- }
- }
-
- package_name = pkg.package_name
- package_version = pkg.package_version
- blobs_json = blobs_json
- }
-
- generate_response_file("${pkg_target_name}.shell_commands.rsp") {
- response_file_contents = []
- }
-
- foreach(index,
- [
- {
- name = "pkgsvr_index"
- file = "meta.far.merkle"
- },
- {
- name = "amber_index"
- file = "meta.far"
- },
- ]) {
- generate_index("${pkg_target_name}.${index.name}.rsp") {
- deprecated_system_image = false
- index_file = "${meta_dir}/${index.file}"
- package_name = pkg.package_name
- package_version = pkg.package_version
- pkg_label = pkg_label
- deps = [
- ":$pkg_target_name",
- ]
- }
- }
-}
diff --git a/packages/prebuilt_package.py b/packages/prebuilt_package.py
deleted file mode 100755
index 377c931..0000000
--- a/packages/prebuilt_package.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import shutil
-import subprocess
-import sys
-
-def extract(pm, far_path, workdir):
- if not os.path.exists(workdir):
- os.makedirs(workdir)
- args = [pm, 'expand', far_path]
- subprocess.check_output(args, stderr=subprocess.STDOUT, cwd=workdir)
-
-
-def findblobs(workdir):
- bloblist = []
- srcdir = os.path.join(workdir, 'blobs')
- for blob in os.listdir(srcdir):
- path = os.path.join(srcdir, blob)
- bloblist.append({'name': blob,
- 'path': path,
- 'size': os.stat(path).st_size})
- return bloblist
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--pm-tool', help='Path to pm tool')
- parser.add_argument('--name', help='Name of prebuilt package')
- parser.add_argument('--archive', help='Path to archive containing prebuilt package')
- parser.add_argument('--workdir', help='Path to working directory')
- parser.add_argument('--manifest', help='Manifest file to generate')
- parser.add_argument('--system-rsp', help='System response file to generate')
- parser.add_argument('--ids-txt', help='ids.txt file to generate')
-
- args = parser.parse_args()
-
- extract(args.pm_tool, args.archive, args.workdir)
-
- bloblist = findblobs(args.workdir)
-
- with open(args.manifest, 'w') as f:
- for blob in bloblist:
- f.write('%s=%s/blobs/%s\n' % (blob['name'], args.workdir,
- blob['name']))
-
- with open(args.system_rsp, 'w') as f:
- f.truncate(0)
-
- with open(args.ids_txt, 'w') as f:
- f.truncate(0)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/packages/shell-commands b/packages/shell-commands
deleted file mode 100644
index 4bf8dd9..0000000
--- a/packages/shell-commands
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "packages": [
- "//build/images:shell-commands"
- ]
-}
diff --git a/persist_logs.gni b/persist_logs.gni
deleted file mode 100644
index be8b8e1..0000000
--- a/persist_logs.gni
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/package.gni")
-
-declare_args() {
- persist_logs = is_debug
-}
-
-# Adds a config to persist logs to disk
-#
-# The persist_logs template is used to generate a config for sysmgr that runs an
-# instance of log_listener. This instance will be configured to listen for (and
-# ignore) specific tags, and to write logs it finds into a target file.
-#
-# The file the logs are written to is located at /data/logs.${target_name}
-#
-# Once this section is added, the name provided will need to be pointed at by
-# something in the gn packages descriptions (e.g. //garnet/packages)
-#
-# Parameters
-#
-# log_tags (optional):
-# [list of strings] Logs with these tags will be written to the log file.
-#
-# ignore_log_tags (optional):
-# [list of strings] Logs with these tags will NOT be written to the log
-# file, even if the log has tags included in the "log_tags" section.
-#
-# max_disk_usage (optional):
-# [string] This persist_logs usage will be guaranteed to not use more than
-# this amount of bytes on disk space. The default is 64,000.
-#
-# Example:
-#
-# persist_logs("amber_logs") {
-# log_tags = [ "amber" ]
-# ignore_log_tags = [ "klog" ]
-# max_disk_usage = "10000"
-# }
-
-template("persist_logs") {
- forward_variables_from(invoker,
- [
- "log_tags",
- "ignore_log_tags",
- "max_disk_usage",
- ])
-
- pkg_resources = []
- pkg_deps = []
-
- if (!defined(log_tags)) {
- log_tags = []
- }
- if (!defined(ignore_log_tags)) {
- ignore_log_tags = []
- }
-
- name = target_name
- logs_action_name = "logs/${target_name}"
- output_file = "$target_out_dir/${target_name}_log_listener.config"
-
- action(logs_action_name) {
- script = "//build/gn/gen_persistent_log_config.py"
- outputs = [
- output_file,
- ]
- args = [ name ] + rebase_path(outputs, root_build_dir)
- if (log_tags != []) {
- args += [ "--tags" ]
- foreach(tag, invoker.log_tags) {
- args += [ tag ]
- }
- }
- if (ignore_log_tags != []) {
- args += [ "--ignore-tags" ]
- foreach(ignore_tag, ignore_log_tags) {
- args += [ ignore_tag ]
- }
- }
- if (defined(max_disk_usage)) {
- args += [
- "--file-capacity",
- max_disk_usage,
- ]
- }
- }
-
- if (persist_logs) {
- pkg_resources = [
- {
- dest = "sysmgr/${target_name}_log_listener.config"
- path = output_file
- },
- ]
- pkg_deps = [ ":$logs_action_name" ]
- }
- package(target_name) {
- deprecated_system_image = true
- resources = pkg_resources
- deps = pkg_deps
- }
-}
diff --git a/rust/BUILD.gn b/rust/BUILD.gn
deleted file mode 100644
index 02778db..0000000
--- a/rust/BUILD.gn
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/toolchain/clang_toolchain.gni")
-
-# A toolchain dedicated to processing Rust code.
-# The only targets in this toolchain are action() targets, so it
-# has no real tools. But every toolchain needs stamp and copy.
-toolchain("rustlang") {
- tool("stamp") {
- command = stamp_command
- description = stamp_description
- }
- tool("copy") {
- command = copy_command
- description = copy_description
- }
-}
diff --git a/rust/build_rustc_target.py b/rust/build_rustc_target.py
deleted file mode 100755
index 38925bf..0000000
--- a/rust/build_rustc_target.py
+++ /dev/null
@@ -1,287 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import subprocess
-import sys
-
-TERM_COLOR_RED = '\033[91m'
-TERM_COLOR_END = '\033[0m'
-
-# Updates the path of the main target in the depfile to the relative path
-# from base_path build_output_path
-def fix_depfile(depfile_path, base_path, build_output_path):
- with open(depfile_path, "r") as depfile:
- content = depfile.read()
- content_split = content.split(': ', 1)
- target_path = os.path.relpath(build_output_path, start=base_path)
- new_content = "%s: %s" % (target_path, content_split[1])
- with open(depfile_path, "w") as depfile:
- depfile.write(new_content)
-
-# Creates the directory containing the given file.
-def create_base_directory(file):
- path = os.path.dirname(file)
- try:
- os.makedirs(path)
- except os.error:
- # Already existed.
- pass
-
-# Starts the given command and returns the newly created job.
-def start_command(args, env):
- return subprocess.Popen(args, env=env, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
-
-def main():
- parser = argparse.ArgumentParser("Compiles a Rust crate")
- parser.add_argument("--rustc",
- help="Path to rustc",
- required=True)
- parser.add_argument("--cipd-version",
- help="CIPD version of Rust toolchain",
- required=False)
- parser.add_argument("--crate-root",
- help="Path to source directory",
- required=True)
- parser.add_argument("--cargo-toml-dir",
- help="Path to directory in which a Cargo.toml for this target may be generated",
- required=True)
- parser.add_argument("--crate-type",
- help="Type of crate to build",
- required=True,
- choices=["bin", "rlib", "staticlib", "proc-macro"])
- parser.add_argument("--package-name",
- help="Name of package to build",
- required=True)
- parser.add_argument("--crate-name",
- help="Name of crate to build",
- required=True)
- parser.add_argument("--version",
- help="Semver version of the crate being built",
- required=True)
- parser.add_argument("--edition",
- help="Edition of rust to use when compiling the crate",
- required=True,
- choices=["2015", "2018"])
- parser.add_argument("--opt-level",
- help="Optimization level",
- required=True,
- choices=["0", "1", "2", "3", "s", "z"])
- parser.add_argument("--lto",
- help="Use LTO",
- required=False,
- choices=["thin", "fat"])
- parser.add_argument("--output-file",
- help="Path at which the output file should be stored",
- required=True)
- parser.add_argument("--depfile",
- help="Path at which the output depfile should be stored",
- required=True)
- parser.add_argument("--root-out-dir",
- help="Root output dir on which depfile paths should be rebased",
- required=True)
- parser.add_argument("--test-output-file",
- help="Path at which the unit test output file should be stored if --with-unit-tests is supplied",
- required=False)
- parser.add_argument("--with-unit-tests",
- help="Whether or not to build unit tests",
- action="store_true",
- required=False)
- parser.add_argument("--target",
- help="Target for which this crate is being compiled",
- required=True)
- parser.add_argument("--cmake-dir",
- help="Path to the directory containing cmake",
- required=True)
- parser.add_argument("--clang_prefix",
- help="Path to the clang prefix",
- required=True)
- parser.add_argument("--clang-resource-dir",
- help="Path to the clang resource dir",
- required=True)
- parser.add_argument("--sysroot",
- help="Path to the sysroot",
- required=True)
- parser.add_argument("--shared-libs-root",
- help="Path to the location of shared libraries",
- required=True)
- parser.add_argument("--first-party-crate-root",
- help="Path to directory containing the libs for first-party dependencies",
- required=True)
- parser.add_argument("--third-party-deps-data",
- help="Path to output of third_party_crates.py",
- required=True)
- parser.add_argument("--out-info",
- help="Path metadata output",
- required=True)
- parser.add_argument("--dep-data",
- action="append",
- help="Path to metadata from a crate dependency",
- required=False)
- parser.add_argument("--mmacosx-version-min",
- help="Select macosx framework version",
- required=False)
- parser.add_argument("--symbol-level",
- help="Symbols to include (0=none, 1=minimal, 2=full)",
- choices=["0", "1", "2"],
- required=True)
- parser.add_argument("--warnings",
- help="Whether or not to error on warnings (deny=error, allow=ignore)",
- choices=["deny", "allow"],
- required=True)
-
- parser.add_argument
- args = parser.parse_args()
-
- env = os.environ.copy()
- env["CC"] = os.path.join(args.clang_prefix, "clang")
- env["CXX"] = os.path.join(args.clang_prefix, "clang++")
- env["AR"] = os.path.join(args.clang_prefix, "llvm-ar")
- env["RANLIB"] = os.path.join(args.clang_prefix, "llvm-ranlib")
- if args.cmake_dir:
- env["PATH"] = "%s:%s" % (env["PATH"], args.cmake_dir)
- env["RUST_BACKTRACE"] = "1"
-
- create_base_directory(args.output_file)
-
- if args.warnings == "allow":
- warnings_flag = "-Awarnings"
- else:
- warnings_flag = "-Dwarnings"
-
- call_args = [
- args.rustc,
- args.crate_root,
- warnings_flag,
- "--edition=%s" % args.edition,
- "--crate-type=%s" % args.crate_type,
- "--crate-name=%s" % args.crate_name,
- "--target=%s" % args.target,
- "-Copt-level=%s" % args.opt_level,
- "-Cdebuginfo=%s" % args.symbol_level,
- "-Lnative=%s" % args.shared_libs_root,
- "--color=always",
- ]
-
- if args.target.endswith("fuchsia"):
- call_args += [
- "-L", os.path.join(args.sysroot, "lib"),
- "-Clink-arg=--pack-dyn-relocs=relr",
- "-Clink-arg=--sysroot=%s" % args.sysroot,
- "-Clink-arg=-L%s" % os.path.join(args.sysroot, "lib"),
- "-Clink-arg=-L%s" % os.path.join(args.clang_resource_dir, args.target, "lib"),
- "-Clink-arg=--threads",
- "-Clink-arg=-dynamic-linker=ld.so.1",
- ]
- if args.target.startswith("aarch64"):
- call_args += ["-Clink-arg=--fix-cortex-a53-843419"]
- else:
- call_args += [
- "-Clinker=%s" % os.path.join(args.clang_prefix, "clang"),
- ]
- if args.target.startswith("aarch64"):
- call_args += ["-Clink-arg=-Wl,--fix-cortex-a53-843419"]
- if args.target.endswith("linux-gnu"):
- call_args += ["-Clink-arg=-Wl,--build-id"]
- if not args.target.endswith("darwin"):
- call_args += ["-Clink-arg=-Wl,--threads"]
-
- if args.mmacosx_version_min:
- call_args += [
- "-Clink-arg=-mmacosx-version-min=%s" % args.mmacosx_version_min,
- ]
-
- if args.lto:
- call_args += ["-Clto=%s" % args.lto]
-
- third_party_json = json.load(open(args.third_party_deps_data))
- search_paths = third_party_json["deps_folders"] + [ args.first_party_crate_root ]
- for path in search_paths:
- call_args += ["-L", "dependency=%s" % path]
-
- externs = []
-
- # Collect externs
- if args.dep_data:
- for data_path in args.dep_data:
- if not os.path.isfile(data_path):
- print TERM_COLOR_RED
- print "Missing Rust target data for dependency " + data_path
- print "Did you accidentally depend on a non-Rust target?"
- print TERM_COLOR_END
- return -1
- dep_data = json.load(open(data_path))
- if dep_data["third_party"]:
- package_name = dep_data["package_name"]
- crate_data = third_party_json["crates"][package_name]
- crate = crate_data["crate_name"]
- lib_path = crate_data["lib_path"]
- else:
- crate = dep_data["crate_name"]
- lib_path = dep_data["lib_path"]
- crate_underscore = crate.replace("-", "_")
- externs.append("%s=%s" % (crate_underscore, lib_path))
-
- # add externs to arguments
- for extern in externs:
- call_args += ["--extern", extern]
-
- # Build the depfile
- depfile_args = call_args + [
- "-o%s" % args.depfile,
- "--emit=dep-info",
- ]
- if args.with_unit_tests:
- depfile_args += ["--test"]
- depfile_job = start_command(depfile_args, env)
-
- # Build the desired output
- build_args = call_args + ["-o%s" % args.output_file]
- build_job = start_command(build_args, env)
-
- # Build the test harness
- if args.with_unit_tests:
- build_test_args = call_args + [
- "-o%s" % args.test_output_file,
- "--test",
- ]
- test_job = start_command(build_test_args, env)
-
- # Write output dependency info
- create_base_directory(args.out_info)
- with open(args.out_info, "w") as file:
- file.write(json.dumps({
- "crate_name": args.crate_name,
- "package_name": args.package_name,
- "third_party": False,
- "cargo_toml_dir": args.cargo_toml_dir,
- "lib_path": args.output_file,
- "version": args.version,
- }, sort_keys=True, indent=4, separators=(",", ": ")))
-
- # Wait for build jobs to complete
-
- stdout, stderr = depfile_job.communicate()
- if depfile_job.returncode != 0:
- print(stdout + stderr)
- return depfile_job.returncode
- fix_depfile(args.depfile, os.getcwd(), args.output_file)
-
- stdout, stderr = build_job.communicate()
- if build_job.returncode != 0:
- print(stdout + stderr)
- return build_job.returncode
-
- if args.with_unit_tests:
- stdout, stderr = test_job.communicate()
- if test_job.returncode != 0:
- print(stdout + stderr)
- return test_job.returncode
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/rust/compile_3p_crates.py b/rust/compile_3p_crates.py
deleted file mode 100755
index ad9a03e..0000000
--- a/rust/compile_3p_crates.py
+++ /dev/null
@@ -1,254 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import subprocess
-import sys
-
-ROOT_PATH = os.path.abspath(__file__ + "/../../..")
-sys.path += [os.path.join(ROOT_PATH, "third_party", "pytoml")]
-import pytoml
-
-# "foo" from "foo 0.1.0 (//path/to/crate)"
-def package_name_from_crate_id(crate_id):
- return crate_id.split(" ")[0]
-
-# Removes the (//path/to/crate) from the crate id "foo 0.1.0 (//path/to/crate)"
-# This is necessary in order to support locally-patched (mirrored) crates
-def pathless_crate_id(crate_id):
- split_id = crate_id.split(" ")
- return split_id[0] + " " + split_id[1]
-
-# Creates the directory containing the given file.
-def create_base_directory(file):
- path = os.path.dirname(file)
- try:
- os.makedirs(path)
- except os.error:
- # Already existed.
- pass
-
-# Runs the given command and returns its return code and output.
-def run_command(args, env, cwd):
- job = subprocess.Popen(args, env=env, cwd=cwd, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- stdout, stderr = job.communicate()
- return (job.returncode, stdout, stderr)
-
-def main():
- parser = argparse.ArgumentParser("Compiles all third-party Rust crates")
- parser.add_argument("--rustc",
- help="Path to rustc",
- required=True)
- parser.add_argument("--cargo",
- help="Path to the cargo tool",
- required=True)
- parser.add_argument("--crate-root",
- help="Path to the crate root",
- required=True)
- parser.add_argument("--opt-level",
- help="Optimization level",
- required=True,
- choices=["0", "1", "2", "3", "s", "z"])
- parser.add_argument("--symbol-level",
- help="Symbols to include (0=none, 1=minimal, 2=full)",
- choices=["0", "1", "2"],
- required=True)
- parser.add_argument("--out-dir",
- help="Path at which the output libraries should be stored",
- required=True)
- parser.add_argument("--out-deps-data",
- help="File in which data about the dependencies should be stored",
- required=True)
- parser.add_argument("--target",
- help="Target for which this crate is being compiled",
- required=True)
- parser.add_argument("--cmake-dir",
- help="Path to the directory containing cmake",
- required=True)
- parser.add_argument("--clang_prefix",
- help="Path to the clang prefix",
- required=True)
- parser.add_argument("--clang-resource-dir",
- help="Path to the clang resource dir",
- required=True)
- parser.add_argument("--mmacosx-version-min",
- help="Select macosx framework version",
- required=False)
- # TODO(cramertj) make these args required when the third_party/rust-crates change lands
- parser.add_argument("--sysroot",
- help="Path to the sysroot",
- required=False)
- parser.add_argument("--shared-libs-root",
- help="Path to the location of shared libraries",
- required=False)
- parser.add_argument("--cipd-version",
- help="CIPD version of Rust toolchain",
- required=False)
- parser.add_argument
- args = parser.parse_args()
-
- env = os.environ.copy()
- create_base_directory(args.out_dir)
-
- clang_c_compiler = os.path.join(args.clang_prefix, "clang")
-
- rustflags = [
- "-Copt-level=" + args.opt_level,
- "-Cdebuginfo=" + args.symbol_level,
- ]
-
- if args.target.endswith("fuchsia"):
- if args.target.startswith("aarch64"):
- rustflags += ["-Clink-arg=--fix-cortex-a53-843419"]
- rustflags += [
- "-L", os.path.join(args.sysroot, "lib"),
- "-Clink-arg=--pack-dyn-relocs=relr",
- "-Clink-arg=--threads",
- "-Clink-arg=-L%s" % os.path.join(args.sysroot, "lib"),
- "-Clink-arg=-L%s" % os.path.join(args.clang_resource_dir, args.target, "lib"),
- ]
- if args.sysroot and args.shared_libs_root:
- rustflags += [
- "-Clink-arg=--sysroot=" + args.sysroot,
- "-Lnative=" + args.shared_libs_root,
- ]
- else:
- if args.target.startswith("aarch64"):
- rustflags += ["-Clink-arg=-Wl,--fix-cortex-a53-843419"]
- if args.target.endswith("linux-gnu"):
- rustflags += ["-Clink-arg=-Wl,--build-id"]
- if not args.target.endswith("darwin"):
- rustflags += ["-Clink-arg=-Wl,--threads"]
- env["CARGO_TARGET_LINKER"] = clang_c_compiler
- env["CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER"] = clang_c_compiler
- env["CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER"] = clang_c_compiler
- env["CARGO_TARGET_%s_LINKER" % args.target.replace("-", "_").upper()] = clang_c_compiler
- rustflags += ["-Clink-arg=--target=" + args.target]
-
- if args.mmacosx_version_min:
- rustflags += ["-Clink-arg=-mmacosx-version-min=%s" % args.mmacosx_version_min]
- env["CARGO_TARGET_%s_RUSTFLAGS" % args.target.replace("-", "_").upper()] = (
- ' '.join(rustflags)
- )
- env["CARGO_TARGET_DIR"] = args.out_dir
- env["CARGO_BUILD_DEP_INFO_BASEDIR"] = args.out_dir
- env["RUSTC"] = args.rustc
- env["RUST_BACKTRACE"] = "1"
- env["CC"] = clang_c_compiler
- if args.sysroot and args.shared_libs_root:
- env["CFLAGS"] = "--sysroot=%s -L %s" % (args.sysroot, args.shared_libs_root)
- env["CXX"] = os.path.join(args.clang_prefix, "clang++")
- env["AR"] = os.path.join(args.clang_prefix, "llvm-ar")
- env["RANLIB"] = os.path.join(args.clang_prefix, "llvm-ranlib")
- env["PATH"] = "%s:%s" % (env["PATH"], args.cmake_dir)
-
- call_args = [
- args.cargo,
- "build",
- "--color=always",
- "--target=%s" % args.target,
- "--frozen",
- ]
-
- call_args.append("--message-format=json")
-
- retcode, stdout, stderr = run_command(call_args, env, args.crate_root)
- if retcode != 0:
- # The output is not particularly useful as it is formatted in JSON.
- # Re-run the command with a user-friendly format instead.
- del call_args[-1]
- _, stdout, stderr = run_command(call_args, env, args.crate_root)
- print(stdout + stderr)
- return retcode
-
- cargo_toml_path = os.path.join(args.crate_root, "Cargo.toml")
- with open(cargo_toml_path, "r") as file:
- cargo_toml = pytoml.load(file)
-
- crate_id_to_info = {}
- deps_folders = set()
- for line in stdout.splitlines():
- data = json.loads(line)
- if "filenames" not in data:
- continue
- crate_id = pathless_crate_id(data["package_id"])
- assert len(data["filenames"]) == 1
- lib_path = data["filenames"][0]
-
- # For libraries built for both the host and the target, pick
- # the one being built for the target.
- # If we've already seen a lib with the given ID and the new one doesn't
- # contain our target, discard it and keep the current entry.
- if (crate_id in crate_id_to_info) and (args.target not in lib_path):
- continue
- crate_name = data["target"]["name"]
- if crate_name != "fuchsia-third-party":
- # go from e.g. target/debug/deps/libfoo.rlib to target/debug/deps
- deps_folders.add(os.path.dirname(lib_path))
-
- crate_id_to_info[crate_id] = {
- "crate_name": crate_name,
- "lib_path": lib_path,
- }
-
- cargo_lock_path = os.path.join(args.crate_root, "Cargo.lock")
- with open(cargo_lock_path, "r") as file:
- cargo_lock_toml = pytoml.load(file)
-
- # output the info for fuchsia-third-party's direct dependencies
- crates = {}
- cargo_dependencies = cargo_toml["dependencies"]
- fuchsia_target_spec = 'cfg(target_os = "fuchsia")'
- non_fuchsia_target_spec = 'cfg(not(target_os = "fuchsia"))'
- if "fuchsia" in args.target:
- target_spec = fuchsia_target_spec
- non_target_spec = non_fuchsia_target_spec
- else:
- target_spec = non_fuchsia_target_spec
- non_target_spec = fuchsia_target_spec
- target_only_deps = cargo_toml \
- .get("target", {}) \
- .get(target_spec, {}) \
- .get("dependencies", [])
- cargo_dependencies.update(target_only_deps)
- other_target_deps = cargo_toml \
- .get("target", {}) \
- .get(non_target_spec, {}) \
- .get("dependencies", [])
- for package in cargo_lock_toml["package"]:
- if package["name"] == "fuchsia-third-party":
- for crate_id in package["dependencies"]:
- crate_id = pathless_crate_id(crate_id)
- if crate_id in crate_id_to_info:
- crate_info = crate_id_to_info[crate_id]
- crate_name = crate_info["crate_name"]
- package_name = package_name_from_crate_id(crate_id)
- if package_name in cargo_dependencies:
- crate_info["cargo_dependency_toml"] = cargo_dependencies[package_name]
- crates[package_name] = crate_info
- elif package_name not in other_target_deps:
- print (package_name + " not found in Cargo.toml dependencies section")
- return 1
-
- # normalize paths for patches
- patches = cargo_toml["patch"]["crates-io"]
- for patch in patches:
- path = patches[patch]["path"]
- path = os.path.join(args.crate_root, path)
- patches[patch] = { "path": path }
-
- create_base_directory(args.out_deps_data)
- with open(args.out_deps_data, "w") as file:
- file.write(json.dumps({
- "crates": crates,
- "deps_folders": list(deps_folders),
- "patches": patches,
- }, sort_keys=True, indent=4, separators=(",", ": "))) # for humans
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/rust/config.gni b/rust/config.gni
deleted file mode 100644
index 4d86928..0000000
--- a/rust/config.gni
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/config/compiler.gni")
-import("//build/config/sysroot.gni")
-import("//build/fidl/toolchain.gni")
-if (is_mac) {
- # For mac_sdk_min:
- import("//build/config/mac/config.gni")
-}
-
-declare_args() {
- # Sets a custom base directory for `rustc` and `cargo`.
- # This can be used to test custom Rust toolchains.
- rustc_prefix = "//buildtools/${host_platform}/rust/bin"
-
- # Sets the default LTO type for rustc bulids.
- rust_lto = "unset"
-
- # Sets the fuchsia toolchain target triple suffix (after arch)
- rust_toolchain_triple_suffix = "fuchsia"
-
- # Sets whether Rust compiler warnings cause errors or not.
- # "deny" will make all warnings into errors, while "allow" will ignore warnings
- rust_warnings = "deny"
-}
-
-_sysroot = sysroot
-_sysroot_deps = []
-
-# TODO(BLD-230): sysroot.gni should provide the correct label and path to the Fuchsia sysroot.
-if (is_fuchsia) {
- _sysroot_deps = [ "//garnet/public/sdk:zircon_sysroot_export" ]
- _sysroot = rebase_path(
- "$root_out_dir/sdk/exported/zircon_sysroot/arch/$target_cpu/sysroot")
-}
-
-_std_deps = []
-if (is_fuchsia) {
- _std_deps += [
- # These libraries are required by libstd.
- "//zircon/public/lib/backtrace",
- "//zircon/public/lib/fdio",
- ]
-}
-
-_platform_args = []
-if (is_mac) {
- _platform_args += [
- "--mmacosx-version-min",
- mac_sdk_min,
- ]
-}
-
-assert(current_os == "mac" || current_os == "linux" || current_os == "fuchsia",
- "current_os was neither mac, linux, nor fuchsia")
-if (current_os == "mac") {
- _target = "x86_64-apple-darwin"
- assert(current_cpu == "x64")
-} else if (current_os == "linux") {
- assert(current_cpu == "x64")
- _target = "x86_64-unknown-linux-gnu"
-} else if (current_os == "fuchsia") {
- assert(current_cpu == "x64" || current_cpu == "arm64")
- if (current_cpu == "x64") {
- _target = "x86_64-$rust_toolchain_triple_suffix"
- } else if (current_cpu == "arm64") {
- _target = "aarch64-$rust_toolchain_triple_suffix"
- }
-}
-
-if (is_debug) {
- _rust_opt_level = "0"
-} else {
- _rust_opt_level = "z"
-}
-
-clang_prefix_rebased = rebase_path(clang_prefix, "", root_build_dir)
-
-clang_resource_dir = exec_script(rebase_path("$clang_prefix_rebased/clang"),
- [
- "--target=$_target",
- "-print-resource-dir",
- ],
- "trim string",
- [])
-
-# rust_config collects common arguments and dependencies for rustc builds
-rust_build_args = [
- "--rustc",
- rebase_path("$rustc_prefix/rustc"),
- "--cmake-dir",
- rebase_path("//buildtools/cmake/bin"),
- "--shared-libs-root",
- rebase_path(get_label_info("//default($shlib_toolchain)",
- "root_out_dir")),
- "--target",
- _target,
- "--sysroot",
- _sysroot,
- "--clang_prefix",
- rebase_path(clang_prefix_rebased, "", root_build_dir),
- "--clang-resource-dir",
- clang_resource_dir,
- "--opt-level",
- _rust_opt_level,
- "--symbol-level",
- "$symbol_level",
- ] + _platform_args
-
-rust_build_deps = _sysroot_deps + _std_deps
-
-# We want to force a recompile of the Rust world whenever Rust toolchain
-# changes since artifacts from an older version of the toolchain may or
-# may not be compatible with newer ones.
-# To achieve this, we insert a build dependency on the rust version.
-rust_build_inputs =
- [ "//buildtools/${host_platform}/rust/.versions/rust.cipd_version" ]
diff --git a/rust/fidl_rust.gni b/rust/fidl_rust.gni
deleted file mode 100644
index 298e1b0..0000000
--- a/rust/fidl_rust.gni
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/rust/toolchain.gni")
-
-# Generates some Rust bindings for a FIDL library.
-#
-# The parameters for this template are defined in //build/fidl/fidl.gni. The
-# relevant parameters in this template are:
-# - name.
-
-template("fidl_rust") {
- assert(current_toolchain == rust_toolchain,
- "This template can only be used in $rust_toolchain.")
-
- not_needed(invoker, [ "sources" ])
-
- main_target_name = target_name
- generation_target_name = "${target_name}_rust_generate"
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- underscore_name = "fidl_" + string_replace(library_name, ".", "_")
-
- fidl_target_gen_dir =
- get_label_info(":bogus($fidl_toolchain)", "target_gen_dir")
- file_stem = "$fidl_target_gen_dir/$underscore_name"
- json_representation = "$fidl_target_gen_dir/$target_name.fidl.json"
-
- compiled_action(generation_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- visibility = [ ":*" ]
-
- tool = "//garnet/go/src/fidl:fidlgen"
-
- inputs = [
- json_representation,
- ]
-
- outputs = [
- "$file_stem.rs",
- ]
-
- args = [
- "--json",
- rebase_path(json_representation, root_build_dir),
- "--output-base",
- rebase_path(file_stem, root_build_dir),
- "--include-base",
- rebase_path(root_gen_dir, root_build_dir),
- "--generators",
- "rust",
- ]
-
- deps = [
- ":$main_target_name($fidl_toolchain)",
- ]
- }
-
- group(main_target_name) {
- forward_variables_from(invoker,
- [
- "public_deps",
- "testonly",
- "visibility",
- ])
-
- deps = [
- ":$generation_target_name",
- ]
-
- if (defined(invoker.deps)) {
- deps += invoker.deps
- }
- }
-}
diff --git a/rust/fidl_rust_library.gni b/rust/fidl_rust_library.gni
deleted file mode 100644
index fa4a56c..0000000
--- a/rust/fidl_rust_library.gni
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/rust/rustc_library.gni")
-import("//build/rust/toolchain.gni")
-
-# Declares the rustc_library invocation for the generated FIDL bindings.
-
-template("fidl_rust_library") {
- not_needed(invoker, [ "sources" ])
-
- generation_target_name = "${target_name}_rust_generate"
- rustc_target_name = "${target_name}-rustc"
-
- library_name = target_name
- if (defined(invoker.name)) {
- library_name = invoker.name
- }
-
- underscore_name = "fidl_" + string_replace(library_name, ".", "_")
-
- fidl_target_gen_dir =
- get_label_info(":bogus($fidl_toolchain)", "target_gen_dir")
- file_stem = "$fidl_target_gen_dir/${underscore_name}"
-
- rustc_library(rustc_target_name) {
- name = underscore_name
- version = "0.1.0"
- edition = "2018"
- forward_variables_from(invoker, [ "testonly" ])
- deps = [
- "//garnet/public/lib/fidl/rust/fidl",
- "//garnet/public/rust/fuchsia-async",
- "//garnet/public/rust/fuchsia-zircon",
- "//third_party/rust-crates/rustc_deps:futures-preview",
- ]
-
- if (defined(invoker.public_deps)) {
- foreach(dep, invoker.public_deps) {
- label = get_label_info(dep, "label_no_toolchain")
- deps += [ "${label}-rustc" ]
- }
- }
-
- if (defined(invoker.deps)) {
- foreach(dep, invoker.deps) {
- label = get_label_info(dep, "label_no_toolchain")
- deps += [ "${label}-rustc" ]
- }
- }
-
- non_rust_deps = [ ":$generation_target_name($rust_toolchain)" ]
- source_root = rebase_path("$file_stem.rs")
- }
-}
diff --git a/rust/list_3p_crates.py b/rust/list_3p_crates.py
deleted file mode 100755
index 62bb008..0000000
--- a/rust/list_3p_crates.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import os
-import sys
-
-ROOT_PATH = os.path.abspath(__file__ + "/../../..")
-sys.path += [os.path.join(ROOT_PATH, "third_party", "pytoml")]
-import pytoml
-
-def main():
- parser = argparse.ArgumentParser(
- "Lists all of the names of crates included in a Cargo.toml file")
- parser.add_argument("--cargo-toml",
- help="Path to Cargo.toml",
- required=True)
- args = parser.parse_args()
-
- with open(args.cargo_toml, "r") as file:
- cargo_toml = pytoml.load(file)
- for key in cargo_toml["dependencies"].keys():
- print key
- target_specs = ['cfg(target_os = "fuchsia")', 'cfg(not(target_os = "fuchsia"))']
- for target_spec in target_specs:
- for key in cargo_toml.get("target", {}).get(target_spec, {}).get("dependencies", []):
- print key
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/rust/list_files_in_dir.py b/rust/list_files_in_dir.py
deleted file mode 100755
index 8e1f4ba..0000000
--- a/rust/list_files_in_dir.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import os
-import sys
-
-def main():
- parser = argparse.ArgumentParser(
- "Lists all of the filepaths in the provided directory")
- parser.add_argument("--dir",
- help="Path to directory",
- required=True)
- args = parser.parse_args()
-
- # Print out one line for each file in the directory
- for f in os.listdir(args.dir):
- print os.path.abspath(os.path.join(args.dir, f))
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/rust/rustc_artifact.gni b/rust/rustc_artifact.gni
deleted file mode 100644
index 7bd936e..0000000
--- a/rust/rustc_artifact.gni
+++ /dev/null
@@ -1,369 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/fidl/toolchain.gni")
-import("//build/rust/config.gni") # for rust_config
-import("//build/sdk/sdk_atom.gni")
-import("//build/testing/test_spec.gni")
-
-template("rustc_third_party_artifact") {
- # Dummy build target to match the one in rustc_artifact
- build_target_name = "${target_name}_build"
- action(build_target_name) {
- script = "//build/rust/write_3p_crate_dep_info.py"
- forward_variables_from(invoker, [ "crate_name" ])
-
- out_info_path = "${target_out_dir}/${target_name}_info.json"
-
- args = [
- # This is a slight lie to the end user-- the crate name that
- # users provide and that appears in Cargo.toml is the package name,
- # which may be different than the crate name (the thing given to
- # --extern). One example of this is the rust-crypto crate,
- # whose real crate name is crypto, but which is published under
- # the package name rust-crypto.
- "--package-name",
- crate_name,
- "--output",
- rebase_path(out_info_path),
- ]
- outputs = [
- out_info_path,
- ]
- }
-
- group(target_name) {
- public_deps = [
- ":${build_target_name}",
- ]
- }
-}
-
-# Defines a Rust artifact to be built directly with rustc (rather than using cargo)
-#
-# Only for internal use, supporting rustc_library and rustc_binary.
-#
-# The arguments are the same as for rustc_library and rustc_binary, with the exception
-# of `type`, which must be one of bin/lib/staticlib/proc-macro. This is used to determine
-# the kind of artifact that is produced by rustc.
-template("rustc_artifact") {
- assert(defined(invoker.type),
- "Must specify an artifact type (bin/lib/staticlib/proc-macro)")
- type = invoker.type
-
- # bin: executable binary application
- # lib: intermediate artifact to be used in other Rust programs
- # staticlib: a statically-linked system library, generally used for linking Rust into C
- # proc-macro: a procedural macro (such as a custom-derive)
- assert(
- type == "bin" || type == "lib" || type == "staticlib" ||
- type == "proc-macro",
- "Artifact type must be one of: \"bin\", \"lib\", \"staticlib\", or \"proc-macro\"")
- if (type == "lib") {
- # For now, lib == rlib, but this could change in future versions of rustc.
- # If/when this changes, we will likely want to transition manually rather
- # than being automatically changed as a result of a toolchain upgrade.
- type = "rlib"
- }
-
- if (defined(invoker.name)) {
- package_name = invoker.name
- } else {
- package_name = target_name
- }
-
- crate_name = string_replace(package_name, "-", "_")
-
- if (defined(invoker.version)) {
- version = invoker.version
- } else {
- version = "0.1.0"
- }
-
- assert(defined(invoker.edition), "Must specify an edition. Preferably 2018")
- edition = invoker.edition
-
- group_deps = []
-
- if (type == "bin") {
- if (defined(invoker.with_lto)) {
- with_lto = invoker.with_lto
- } else if (rust_lto != "unset") {
- with_lto = rust_lto
- } else if (is_debug) {
- with_lto = "none"
- } else {
- # Release builds default to "thin" lto
- with_lto = "thin"
- }
- } else {
- with_lto = "none"
- }
- assert(with_lto == "none" || with_lto == "thin" || with_lto == "fat",
- "with_lto was neither none, thin, or fat")
-
- # Determine the prefix and extension for the output file based on the crate type
- if (type == "bin") {
- prefix = ""
- extension = ""
- root_file = "src/main.rs"
- } else if (type == "rlib") {
- prefix = "lib"
- extension = ".rlib"
- root_file = "src/lib.rs"
- } else if (type == "staticlib") {
- prefix = "staticlib"
- extension = ".a"
- root_file = "src/lib.rs"
- } else if (type == "proc-macro") {
- prefix = "lib"
- root_file = "src/lib.rs"
- }
-
- third_party_build = "//third_party/rust-crates/rustc_deps:build-third-party"
- third_party_deps_data = "${root_out_dir}/rust_third_party/deps_data.json"
- first_party_crate_root = "${root_out_dir}/rust_crates"
- if (defined(invoker.output_file_override)) {
- output_filename = invoker.output_file_override
- } else {
- output_filename = "${prefix}${crate_name}${extension}"
- }
- output_file = "${first_party_crate_root}/$output_filename"
- output_depfile = "${first_party_crate_root}/${prefix}${crate_name}.d"
- test_output_file = "${root_out_dir}/${crate_name}_${invoker.type}_test"
-
- build_target_name = "${target_name}_build"
- group_deps += [ ":${build_target_name}" ]
-
- with_unit_tests = defined(invoker.with_unit_tests) && invoker.with_unit_tests
-
- # If host-side tests are present, record metadata for testing instruction.
- if (with_unit_tests && (is_linux || is_mac)) {
- test_spec("${target_name}_spec") {
- name = invoker.target_name
- location = test_output_file
- }
- }
-
- # Iterate through the deps collecting a list of the outputs
- # of their build targets, which will be passed to rustc as
- # `--extern` crates.
- dep_info_paths = []
- if (defined(invoker.deps)) {
- foreach(dep, invoker.deps) {
- dep_target_name = get_label_info(dep, "name")
- dep_dir = get_label_info(dep, "dir")
- dep_build_target = "${dep_dir}:${dep_target_name}_build"
- dep_out_dir = get_label_info(dep_build_target, "target_out_dir")
- dep_info_path = "${dep_out_dir}/${dep_target_name}_build_info.json"
- dep_info_paths += [
- "--dep-data",
- rebase_path(dep_info_path),
- ]
- }
- }
-
- if (defined(invoker.source_root)) {
- root_file = invoker.source_root
- }
- root_file = rebase_path(root_file)
-
- cargo_toml_dir = "$target_gen_dir/$target_name"
-
- # Declare the action target that performs the build itself
- action(build_target_name) {
- script = "//build/rust/build_rustc_target.py"
-
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- ])
- if (!defined(deps)) {
- deps = []
- }
- deps += [ third_party_build ]
- inputs = [
- root_file,
- ]
- depfile = output_depfile
-
- if (defined(invoker.non_rust_deps)) {
- public_deps = invoker.non_rust_deps
- }
-
- out_info_path = "${target_out_dir}/${target_name}_info.json"
-
- args = [
- "--crate-root",
- rebase_path(root_file),
- "--cargo-toml-dir",
- rebase_path(cargo_toml_dir),
- "--crate-type",
- type,
- "--crate-name",
- crate_name,
- "--package-name",
- package_name,
- "--depfile",
- rebase_path(output_depfile),
- "--root-out-dir",
- rebase_path(root_out_dir),
- "--output-file",
- rebase_path(output_file),
- "--test-output-file",
- rebase_path(test_output_file),
- "--first-party-crate-root",
- rebase_path(first_party_crate_root),
- "--third-party-deps-data",
- rebase_path(third_party_deps_data),
- "--out-info",
- rebase_path(out_info_path),
- "--version",
- version,
- "--edition",
- edition,
- "--warnings",
- rust_warnings,
- ]
-
- args += rust_build_args
- deps += rust_build_deps
- inputs += rust_build_inputs
-
- if (with_lto != "none") {
- args += [
- "--lto",
- with_lto,
- ]
- }
- if (with_unit_tests) {
- args += [ "--with-unit-tests" ]
- }
-
- args += dep_info_paths
- outputs = [
- output_file,
- out_info_path,
- ]
- if (with_unit_tests) {
- outputs += [ test_output_file ]
- }
- }
-
- # Copy binaries and staticlibs out of rust_crates/* into the root dir
- # TODO(cramertj) remove and replace with writing directly to the root
- # dir once all existing build rules have moved off of using rust_crates/*
- if (type == "bin" || type == "staticlib") {
- copy_target_name = "${target_name}_copy"
- group_deps += [ ":${copy_target_name}" ]
- output_path = "${root_out_dir}/${prefix}${crate_name}${extension}"
- copy(copy_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
- deps = [
- ":${build_target_name}",
- ]
- sources = [
- output_file,
- ]
- outputs = [
- output_path,
- ]
- }
-
- # if appropriate, create an SDK atom for the binary/staticlib that we just
- # copied
- if (type == "bin" && defined(invoker.sdk_category) &&
- invoker.sdk_category != "excluded" && !is_fuchsia &&
- !(defined(invoker.test) && invoker.test)) {
- output_name = target_name
- file_base = "tools/$output_name"
-
- sdk_atom("${target_name}_sdk") {
- id = "sdk://tools/${output_name}"
-
- category = invoker.sdk_category
-
- meta = {
- dest = "${file_base}-meta.json"
- schema = "host_tool"
- value = {
- type = "host_tool"
- name = output_name
- root = "tools"
- files = [ file_base ]
- }
- }
-
- files = [
- {
- source = output_path
- dest = file_base
- },
- ]
-
- if (defined(invoker.sdk_deps)) {
- deps = invoker.sdk_deps
- }
-
- non_sdk_deps = [ ":$copy_target_name" ]
- }
- }
- }
-
- cargo_toml_target_name = "${target_name}_cargo"
- group_deps += [ ":${cargo_toml_target_name}" ]
- action(cargo_toml_target_name) {
- script = "//build/rust/write_cargo_toml.py"
- forward_variables_from(invoker,
- [
- "deps",
- "testonly",
- ])
- if (!defined(deps)) {
- deps = []
- }
- deps += [ third_party_build ]
- if (defined(invoker.non_rust_deps)) {
- public_deps = invoker.non_rust_deps
- }
- args = [
- "--out-dir",
- rebase_path(cargo_toml_dir),
- "--source-root",
- root_file,
- "--package-name",
- package_name,
- "--crate-name",
- crate_name,
- "--crate-type",
- type,
- "--version",
- version,
- "--edition",
- edition,
- "--third-party-deps-data",
- rebase_path(third_party_deps_data),
- ]
-
- if (with_lto != "none") {
- args += [
- "--lto",
- with_lto,
- ]
- }
-
- # list of paths to info about crate dependencies
- args += dep_info_paths
- outputs = [
- "${cargo_toml_dir}/Cargo.toml",
- ]
- }
-
- group(target_name) {
- forward_variables_from(invoker, [ "testonly" ])
- public_deps = group_deps
- }
-}
diff --git a/rust/rustc_binary.gni b/rust/rustc_binary.gni
deleted file mode 100644
index ebc421d..0000000
--- a/rust/rustc_binary.gni
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/rust/rustc_artifact.gni")
-
-# Defines a Rust binary
-#
-# Parameters
-#
-# name
-# Name of the crate as defined in its manifest file. If not specified, it is
-# assumed to be the same as the target name.
-#
-# version (optional)
-# Semver version of the crate as seen on crates.io.
-#
-# edition
-# Edition of the Rust language to be used.
-# Options are "2015" and "2018". If unsure, choose "2018".
-#
-# deps (optional)
-# List of rust_library GN targets on which this crate depends.
-# Third party crates can be included through paths like
-# "//third_party/rust-crates/rustc_deps:<cratename>",
-#
-# non_rust_deps (optional)
-# List of non-rust_library GN targets on which this crate depends.
-#
-# with_unit_tests (optional)
-# Builds unit tests associated with the binary. This will create a
-# `<name>_bin_test` test file in the output directory.
-#
-# sdk_category (optional)
-# If this field is set, this rust binary will be included in SDK builds for
-# the provided category. See //build/sdk/sdk_atom.gni for available
-# categories.
-#
-# source_root (optional)
-# Location of the crate root (e.g. `src/main.rs` or `src/lib.rs`).
-# This defaults to `./src/main.rs` for binaries and `./src/lib.rs` for libraries,
-# and should only be changed when absolutely necessary
-# (such as in the case of generated code).
-#
-# with_lto (optional)
-# Force LTO to be enabled/disabled for the binary. Values are "none", "thin" and
-# "fat". This value takes precedence over GN args or the default value for the
-# type of build (debug or release).
-#
-# Example of usage:
-#
-# rustc_binary("foo") {
-# deps = [
-# "//garnet/public/rust/bar",
-# "//third_party/rust-crates/rustc_deps:clap",
-# "//third_party/rust-crates/rustc_deps:serde",
-# "//third_party/rust-crates/rustc_deps:slab",
-# ]
-# with_unit_tests = true
-# }
-template("rustc_binary") {
- rustc_artifact(target_name) {
- forward_variables_from(invoker,
- [
- "name",
- "version",
- "edition",
- "deps",
- "non_rust_deps",
- "with_unit_tests",
- "source_root",
- "testonly",
- "with_lto",
- "sdk_category",
- ])
- type = "bin"
- }
-}
diff --git a/rust/rustc_library.gni b/rust/rustc_library.gni
deleted file mode 100644
index b10311a..0000000
--- a/rust/rustc_library.gni
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/rust/rustc_artifact.gni")
-
-# Defines a Rust library
-#
-# Parameters
-#
-# name
-# Name of the crate as defined in its manifest file. If not specified, it is
-# assumed to be the same as the target name.
-#
-# version
-# Semver version of the crate as seen on crates.io.
-#
-# edition
-# Edition of the Rust language to be used.
-# Options are "2015" and "2018". If unsure, choose "2018".
-#
-# deps (optional)
-# List of rust_library GN targets on which this crate depends.
-# Third party crates can be included through paths like
-# "//third_party/rust-crates/rustc_deps:<cratename>",
-#
-# non_rust_deps (optional)
-# List of non-rust_library GN targets on which this crate depends.
-#
-# with_unit_tests (optional)
-# Builds unit tests associated with the binary. This will create a
-# `<name>_lib_test` test file in the output directory.
-#
-# source_root (optional)
-# Location of the crate root (e.g. `src/main.rs` or `src/lib.rs`).
-# This defaults to `./src/main.rs` for binaries and `./src/lib.rs` for libraries,
-# and should only be changed when absolutely necessary
-# (such as in the case of generated code).
-#
-# Example of usage:
-#
-# rustc_library("foo") {
-# deps = [
-# "//garnet/public/rust/bar",
-# "//third_party/rust-crates/rustc_deps:clap",
-# "//third_party/rust-crates/rustc_deps:serde",
-# "//third_party/rust-crates/rustc_deps:slab",
-# ]
-# with_unit_tests = true
-# }
-template("rustc_library") {
- rustc_artifact(target_name) {
- forward_variables_from(invoker,
- [
- "name",
- "version",
- "edition",
- "deps",
- "non_rust_deps",
- "with_unit_tests",
- "source_root",
- "testonly",
- ])
- type = "lib"
- }
-}
diff --git a/rust/rustc_macro.gni b/rust/rustc_macro.gni
deleted file mode 100644
index bee0b16..0000000
--- a/rust/rustc_macro.gni
+++ /dev/null
@@ -1,160 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/rust/rustc_artifact.gni")
-
-# Defines a Rust procedural macro
-#
-# Parameters
-#
-# name
-# Name of the crate as defined in its manifest file. If not specified, it is
-# assumed to be the same as the target name.
-#
-# version (optional)
-# Semver version of the crate as seen on crates.io.
-#
-# edition
-# Edition of the Rust language to be used.
-# Options are "2015" and "2018". If unsure, choose "2018".
-#
-# deps (optional)
-# List of rust_library GN targets on which this crate depends.
-# Third party crates can be included through paths like
-# "//third_party/rust-crates/rustc_deps:<cratename>".
-#
-# source_root (optional)
-# Location of the crate root (e.g. `src/main.rs` or `src/lib.rs`).
-# This defaults to `./src/main.rs` for binaries and `./src/lib.rs` for libraries,
-# and should only be changed when absolutely necessary
-# (such as in the case of generated code).
-#
-# with_lto (optional)
-# Force LTO to be enabled/disabled for the binary. Values are "none", "thin" and
-# "fat". This value takes precedence over GN args or the default value for the
-# type of build (debug or release).
-#
-# Example of usage:
-#
-# rustc_macro("foo") {
-# deps = [
-# "//garnet/public/rust/bar",
-# "//third_party/rust-crates/rustc_deps:serde",
-# "//third_party/rust-crates/rustc_deps:slab",
-# ]
-# }
-template("rustc_macro") {
- # Compiling procedural macros is... a bit awkward.
- #
- # Even though they're provided to crates that use them as if they were normal
- # external crates, they're actually '.so's that are compiled for the host machine,
- # and then linked into the compiler, so they and all their dependencies should
- # be built for the host target.
- #
- # Once this is done, the resulting artifacts are copied into the Fuchsia target
- # directories to act as if they had been built for Fuchsia. In order to avoid
- # conflicts, the outputs of the original (host) artifact are built with a
- # `_proc_macro` suffix added onto the end, which is removed when they're copied
- # into the final target directory.
- proc_macro_target = "${target_name}_proc_macro"
- proc_macro_host_target = ":${proc_macro_target}($host_toolchain)"
-
- if (defined(invoker.name)) {
- rustc_artifact_name = invoker.name
- } else {
- rustc_artifact_name = target_name
- }
-
- crate_name = string_replace(rustc_artifact_name, "-", "_")
-
- if (host_os == "mac") {
- macro_extension = ".dylib"
- } else {
- macro_extension = ".so"
- }
-
- # The actual host-target build of the proc macro crate.
- rustc_artifact(proc_macro_target) {
- forward_variables_from(invoker,
- [
- "deps",
- "version",
- "edition",
- "source_root",
- "testonly",
- "with_lto",
- ])
- name = rustc_artifact_name
- type = "proc-macro"
- output_file_override = "lib${crate_name}_proc_macro${macro_extension}"
- }
-
- # Copy the generated Cargo.toml
- copy_cargo_toml_target = "${target_name}_copy_cargo_toml"
- proc_macro_target_gen_dir =
- get_label_info(proc_macro_host_target, "target_gen_dir")
- copy(copy_cargo_toml_target) {
- visibility = [ ":${target_name}" ]
- forward_variables_from(invoker, [ "testonly" ])
- deps = [
- proc_macro_host_target,
- ]
- sources = [
- "$proc_macro_target_gen_dir/$proc_macro_target/Cargo.toml",
- ]
- outputs = [
- "$target_gen_dir/$target_name/Cargo.toml",
- ]
- }
-
- # Copy the generated _build_info.json which provides data about the target that
- # was built.
- copy_out_info_target = "${target_name}_copy_info"
- out_info_path = "$target_out_dir/${rustc_artifact_name}_build_info.json"
- proc_macro_target_out_dir =
- get_label_info(proc_macro_host_target, "target_out_dir")
- copy(copy_out_info_target) {
- visibility = [ ":${target_name}" ]
- forward_variables_from(invoker, [ "testonly" ])
- deps = [
- proc_macro_host_target,
- ]
- sources = [
- "$proc_macro_target_out_dir/${proc_macro_target}_build_info.json",
- ]
- outputs = [
- out_info_path,
- ]
- }
-
- # Copy the generated `.so`.
- copy_binary_target = "${target_name}_copy_binary"
- proc_macro_target_root_out_dir =
- get_label_info(proc_macro_host_target, "root_out_dir")
- proc_macro_target_out_bin_path = "$proc_macro_target_root_out_dir/rust_crates/lib${crate_name}_proc_macro${macro_extension}"
- out_bin_path =
- "${root_out_dir}/rust_crates/lib${crate_name}${macro_extension}"
- copy(copy_binary_target) {
- visibility = [ ":${target_name}" ]
- forward_variables_from(invoker, [ "testonly " ])
- deps = [
- proc_macro_host_target,
- ]
- sources = [
- proc_macro_target_out_bin_path,
- ]
- outputs = [
- out_bin_path,
- ]
- }
-
- # Group all of the `copy` targets into one group which is publicly exposed.
- group(target_name) {
- deps = [
- ":$copy_binary_target",
- ":$copy_cargo_toml_target",
- ":$copy_out_info_target",
- ]
- }
-}
diff --git a/rust/rustc_staticlib.gni b/rust/rustc_staticlib.gni
deleted file mode 100644
index e5b564b..0000000
--- a/rust/rustc_staticlib.gni
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/rust/rustc_artifact.gni")
-
-# Defines a Rust static library
-#
-# Parameters
-#
-# name
-# Name of the crate as defined in its manifest file. If not specified, it is
-# assumed to be the same as the target name.
-#
-# version
-# Semver version of the crate as seen on crates.io.
-#
-# deps (optional)
-# List of rust_library GN targets on which this crate depends.
-# Third party crates can be included through paths like
-# "//third_party/rust-crates/rustc_deps:<cratename>",
-#
-# non_rust_deps (optional)
-# List of non-rust_library GN targets on which this crate depends.
-#
-# with_unit_tests (optional)
-# Builds unit tests associated with the binary. This will create a
-# `<name>-bin-unit-test` test file in the output directory.
-#
-# source_root (optional)
-# Location of the crate root (e.g. `src/main.rs` or `src/lib.rs`).
-# This defaults to `./src/main.rs` for binaries and `./src/lib.rs` for libraries,
-# and should only be changed when absolutely necessary
-# (such as in the case of generated code).
-#
-# output_name (optional)
-# Name of the output file.
-#
-# Example of usage:
-#
-# rustc_staticlib("foo") {
-# deps = [
-# "//garnet/public/rust/bar",
-# "//third_party/rust-crates/rustc_deps:clap",
-# "//third_party/rust-crates/rustc_deps:serde",
-# "//third_party/rust-crates/rustc_deps:slab",
-# ]
-# with_unit_tests = true
-# }
-template("rustc_staticlib") {
- rustc_target = "_${target_name}_rustc_artifact"
- group_target = "${target_name}"
-
- if (defined(invoker.name)) {
- rustc_artifact_name = invoker.name
- } else {
- rustc_artifact_name = target_name
- }
-
- rustc_artifact(rustc_target) {
- forward_variables_from(invoker,
- [
- "version",
- "deps",
- "edition",
- "non_rust_deps",
- "with_unit_tests",
- "output_name",
- "source_root",
- "testonly",
- ])
- name = rustc_artifact_name
- type = "staticlib"
- }
-
- public_hdrs = []
- if (defined(invoker.public)) {
- public_hdrs += invoker.public
- }
-
- header_target = "_${target_name}_staticlib_headers"
- config_target = "_${target_name}_staticlib_config"
-
- source_set(header_target) {
- public = public_hdrs
- visibility = [ ":$group_target" ]
- }
-
- first_party_crate_root = "${root_out_dir}/rust_crates"
- crate_name = string_replace(rustc_artifact_name, "-", "_")
- build_output = "${first_party_crate_root}/staticlib${crate_name}.a"
-
- config(config_target) {
- libs = [ build_output ]
- visibility = [ ":$group_target" ]
- }
-
- group(target_name) {
- public_configs = [ ":$config_target" ]
- public_deps = [
- ":$header_target",
- ":$rustc_target",
- ]
- }
-}
diff --git a/rust/toolchain.gni b/rust/toolchain.gni
deleted file mode 100644
index 0d1c29c..0000000
--- a/rust/toolchain.gni
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2018 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.
-
-rust_toolchain = "//build/rust:rustlang"
diff --git a/rust/write_3p_crate_dep_info.py b/rust/write_3p_crate_dep_info.py
deleted file mode 100755
index fe50996..0000000
--- a/rust/write_3p_crate_dep_info.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-# Creates the directory containing the given file.
-def create_base_directory(file):
- path = os.path.dirname(file)
- try:
- os.makedirs(path)
- except os.error:
- # Already existed.
- pass
-
-def main():
- parser = argparse.ArgumentParser(
- "Writes an info.json file for a third-party target")
- parser.add_argument("--package-name",
- help="Package name of the crate being depended upon",
- required=True)
- parser.add_argument("--output",
- help="Path to output json file",
- required=True)
- args = parser.parse_args()
-
- create_base_directory(args.output)
- with open(args.output, "w") as file:
- file.write(json.dumps({
- "package_name": args.package_name,
- "third_party": True,
- }, sort_keys=True, indent=4, separators=(",", ": ")))
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/rust/write_cargo_toml.py b/rust/write_cargo_toml.py
deleted file mode 100755
index dad1a60..0000000
--- a/rust/write_cargo_toml.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import datetime
-import json
-import os
-import subprocess
-import sys
-
-TERM_COLOR_RED = '\033[91m'
-TERM_COLOR_END = '\033[0m'
-
-ROOT_PATH = os.path.abspath(__file__ + "/../../..")
-sys.path += [os.path.join(ROOT_PATH, "third_party", "pytoml")]
-import pytoml
-
-# List of packages that are part of the third-party build
-# that live in-tree. In order to unify the two packages in builds
-# that use the output cargo.tomls, we use `= "*"` as the version
-# for these libraries, causing them to resolve via the patch section.
-IN_TREE_THIRD_PARTY_PACKAGES = [
- "fuchsia-zircon",
- "fuchsia-zircon-sys",
-]
-
-CARGO_TOML_CONTENTS = '''\
-# Copyright %(year)s 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.
-
-[package]
-name = "%(package_name)s"
-version = "%(version)s"
-edition = "%(edition)s"
-license-file = "LICENSE"
-authors = ["rust-fuchsia@fuchsia.com"]
-description = "Rust crate for Fuchsia OS"
-repository = "https://fuchsia.googlesource.com"
-
-%(bin_or_lib)s
-%(is_proc_macro)s
-name = "%(crate_name)s"%(lib_crate_type)s
-path = "%(source_root)s"
-'''
-
-def cur_year():
- return datetime.datetime.now().year
-
-def main():
- parser = argparse.ArgumentParser("Writes a Cargo.toml for a Rust crate")
- parser.add_argument("--package-name",
- help="Name of the package",
- required=True)
- parser.add_argument("--crate-name",
- help="Name of the crate",
- required=True)
- parser.add_argument("--source-root",
- help="Root lib.rs or main.rs for the crate",
- required=True)
- parser.add_argument("--version",
- help="Version of crate",
- required=True)
- parser.add_argument("--edition",
- help="Edition of rust to use when compiling the crate",
- required=True)
- parser.add_argument("--out-dir",
- help="Path to directory where Cargo.toml should be written",
- required=True)
- parser.add_argument("--crate-type",
- help="Type of crate to build",
- required=True,
- choices=["bin", "rlib", "staticlib", "proc-macro"])
- parser.add_argument("--lto",
- help="Add lto options to crate",
- required=False,
- choices=["none", "thin", "fat"])
- parser.add_argument("--third-party-deps-data",
- help="Path to output of third_party_crates.py",
- required=True)
- parser.add_argument("--dep-data",
- action="append",
- help="Path to metadata from a previous invocation of this script",
- required=False)
-
- parser.add_argument
- args = parser.parse_args()
- cargo_toml_path = os.path.join(args.out_dir, "Cargo.toml")
-
- third_party_json = json.load(open(args.third_party_deps_data))
-
- deps = {}
- if args.dep_data:
- for data_path in args.dep_data:
- if not os.path.isfile(data_path):
- print TERM_COLOR_RED
- print "Missing Rust target data for dependency " + data_path
- print "Did you accidentally depend on a non-Rust target?"
- print TERM_COLOR_END
- return -1
- dep_data = json.load(open(data_path))
- if dep_data["third_party"]:
- crate = dep_data["package_name"]
- crate_data = third_party_json["crates"][crate]
- deps[crate] = crate_data["cargo_dependency_toml"]
- else:
- package_name = dep_data["package_name"]
- if package_name in IN_TREE_THIRD_PARTY_PACKAGES:
- deps[package_name] = {
- "version": "*",
- }
- else:
- deps[package_name] = {
- "path": dep_data["cargo_toml_dir"],
- "version": dep_data["version"],
- }
-
- with open(cargo_toml_path, "w") as file:
- file.write(CARGO_TOML_CONTENTS % {
- "package_name": args.package_name,
- "crate_name": args.crate_name,
- "version": args.version,
- "edition": args.edition,
- "deps": deps,
- "year": cur_year(),
- "bin_or_lib": "[[bin]]" if args.crate_type == "bin" else "[lib]",
- "is_proc_macro": "proc-macro = true" if args.crate_type == "proc-macro" else "",
- "lib_crate_type": "" if args.crate_type == "bin" else (
- '\ncrate_type = ["%s"]' % args.crate_type
- ),
- "source_root": args.source_root,
- })
- dependencies = { "dependencies": deps }
- file.write(pytoml.dumps({
- "dependencies": deps,
- "patch": { "crates-io": third_party_json["patches"] },
- }))
-
- profile = { "profile": { "release": { "panic" : "abort", "opt-level": "z" } } }
- if args.lto and args.lto != "none":
- profile["profile"]["release"]["lto"] = args.lto
-
- file.write(pytoml.dumps(profile))
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/rustfmt.toml b/rustfmt.toml
deleted file mode 100644
index e2a078a..0000000
--- a/rustfmt.toml
+++ /dev/null
@@ -1,61 +0,0 @@
-# This file was originally created by running the command
-# rustfmt --print-config default rustfmt.toml && sort -u rustfmt.toml -o rustfmt.toml.
-# Changes from the defaults are marked with comments.
-binop_separator = "Front"
-blank_lines_lower_bound = 0
-blank_lines_upper_bound = 1
-brace_style = "SameLineWhere"
-color = "Auto"
-combine_control_expr = true
-comment_width = 100 # Fuchsia uses 100
-condense_wildcard_suffixes = false
-control_brace_style = "AlwaysSameLine"
-disable_all_formatting = false
-edition = "2018"
-emit_mode = "Files"
-empty_item_single_line = true
-error_on_line_overflow = false
-error_on_unformatted = false
-fn_args_density = "Compressed" # Fuchsia prefers compressed
-fn_single_line = false
-force_explicit_abi = true
-force_multiline_blocks = false
-format_strings = false
-hard_tabs = false
-hide_parse_errors = false
-imports_indent = "Block"
-imports_layout = "Mixed"
-ignore = [
- "bin/netcfg/src/device_id.rs",
-]
-indent_style = "Block"
-match_arm_blocks = true
-match_block_trailing_comma = false
-max_width = 100
-merge_derives = true
-merge_imports = false
-newline_style = "Unix"
-normalize_comments = false
-remove_nested_parens = true
-reorder_impl_items = false
-reorder_imports = true
-reorder_modules = true
-report_fixme = "Never"
-report_todo = "Never"
-skip_children = false
-space_after_colon = true
-space_before_colon = false
-spaces_around_ranges = false
-struct_field_align_threshold = 0
-struct_lit_single_line = true
-tab_spaces = 4
-trailing_comma = "Vertical"
-trailing_semicolon = true
-type_punctuation_density = "Wide"
-unstable_features = false
-use_field_init_shorthand = false
-use_small_heuristics = "Default"
-use_try_shorthand = true # Fuchsia prefers the shortcut
-where_single_line = false
-wrap_comments = false # TODO make true when rustfmt#3153 is fixed,
-# otherwise comments will violate max_width
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
deleted file mode 100644
index e1d7c7d..0000000
--- a/sdk/BUILD.gn
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/sdk/sdk_documentation.gni")
-
-sdk_documentation("schemas") {
- name = "metadata_schemas"
- category = "partner"
-
- schemas = [
- "cc_prebuilt_library",
- "cc_source_library",
- "common",
- "dart_library",
- "documentation",
- "fidl_library",
- "host_tool",
- "image",
- "loadable_module",
- "manifest",
- "sysroot",
- ]
- files = []
- foreach(schema, schemas) {
- files += [
- {
- source = "//build/sdk/meta/$schema.json"
- dest = "meta/schemas/$schema.json"
- },
- ]
- }
-}
diff --git a/sdk/MAINTAINERS b/sdk/MAINTAINERS
deleted file mode 100644
index 0b7024a..0000000
--- a/sdk/MAINTAINERS
+++ /dev/null
@@ -1,2 +0,0 @@
-alainv@google.com
-pylaligand@google.com
diff --git a/sdk/README.md b/sdk/README.md
deleted file mode 100644
index 26c3ff8..0000000
--- a/sdk/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# SDK build tools
-
-This directory contains templates and scripts used to build and consume SDKs in
-the Fuchsia GN build.
-
-
-## Overview
-
-The build output of "an SDK build" is a tarball containing files collected from
-the source tree and the output directory, augmented with metadata files.
-
-Metadata includes the nature of an element (e.g. programming language(s),
-runtime type), its relationship with other elements (e.g. dependencies,
-supporting tools), the context in which the element was constructed (e.g.
-target architecture, high-level compilation options), etc...
-Schemas for the various types of SDK elements are available under [meta/](meta).
-
-
-## Implementation
-
-Individual elements are declared using the [`sdk_atom`](sdk_atom.gni) template.
-It should be rare for a developer to directly use that template though: in most
-instances its use should be wrapped by another higher-level template, such as
-language-based templates.
-
-Groups of atoms are declared with the [`sdk_molecule`](sdk_molecule.gni)
-template. A molecule can also depend on other molecules. Molecules are a great
-way to provide hierarchy to SDK atoms.
-
-
-## Declaring SDK elements
-
-There are a few GN templates developers should use to enable the inclusion of
-their code in an SDK:
-- [`sdk_shared_library`](/cpp/sdk_shared_library.gni)
-- [`sdk_source_set`](/cpp/sdk_source_set.gni)
-- [`sdk_executable`](/cpp/sdk_executable.gni)
-
-Some language-specific targets are also SDK-ready:
-- [`dart_library`](/dart/dart_library.gni)
-- [`fidl_library`](/fidl/fidl_library.gni)
-- [`go_binary`](/go/go_binary.gni)
-
-In order to add documentation to an SDK, use the
-[`sdk_documentation`](/sdk/sdk_documentation.gni) template.
-
-A target `//foo/bar` declared with one of these templates will yield an
-additional target `//foo/bar:bar_sdk` which is an atom ready to be included in
-an SDK.
-
-Additionally, the [`sdk`](sdk.gni) template should be used to declare an
-SDK.
-
-### Visibility
-
-The `sdk_atom` template declares a `category` parameter which allows developers
-to control who may be able to use their atom. See the parameter's documentation
-for more information on this.
-
-
-## Creating a custom SDK
-
-Once elements have been set up for inclusion in an SDK, declaring such an SDK
-only takes a few steps:
-
-1. Identify the atoms needed in the SDK;
-2. Create a new SDK `//some/place:my_sdk` with the `sdk` template, regrouping
- the atoms and molecules that should be included;
-3. Add a new
- [package](https://fuchsia.googlesource.com/docs/+/master/build_packages.md)
- file for the molecule:
-```
-{
- "labels": [
- "//some/place:my_sdk"
- ]
-}
-```
-
-The package file can now be used in a standard Fuchsia build and will produce
-the archive at `//out/<build-type>/sdk/archive/my_sdk.tar.gz`.
-
-Note that in order for the archive to be generated, an extra GN argument has to
-be passed to GN:
-```
-build_sdk_archives=true
-```
-
-
-#### Using a custom SDK in the build
-
-By setting the `export` property to true on an SDK target, that SDK's contents
-become available in the build output directory and may be used for other GN
-targets to depend on. This is useful for example when building third-party code
-which would otherwise rely on an official SDK.
-
-For an SDK declared at `//some/place:my_sdk` and marked as "exported", an
-additional GN target exists: `//some/place:my_sdk_export`.
-This target will generate a usable SDK under
-`//out/<build-type>/sdk/exported/my_sdk`.
diff --git a/sdk/create_atom_manifest.py b/sdk/create_atom_manifest.py
deleted file mode 100755
index 0ae82a3..0000000
--- a/sdk/create_atom_manifest.py
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import itertools
-import json
-import os
-import sys
-
-from sdk_common import Atom, detect_category_violations, detect_collisions, gather_dependencies
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--id',
- help='The atom\'s identifier',
- required=True)
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--depfile',
- help='Path to the depfile',
- required=True)
- parser.add_argument('--deps',
- help='List of manifest paths for dependencies',
- nargs='*')
- parser.add_argument('--file',
- help='A (destination <-- source) mapping',
- action='append',
- nargs=2)
- parser.add_argument('--file-list',
- help='A file containing destination=source mappings')
- parser.add_argument('--gn-label',
- help='GN label of the atom',
- required=True)
- parser.add_argument('--category',
- help='Publication level',
- required=True)
- parser.add_argument('--meta',
- help="Path to the atom's metadata file in the SDK",
- default='',
- required=False)
- args = parser.parse_args()
-
- # Gather the definitions of other atoms this atom depends on.
- (deps, atoms) = gather_dependencies(args.deps)
-
- # Build the list of files making up this atom.
- extra_files = []
- if args.file_list:
- with open(args.file_list, 'r') as file_list_file:
- for line in file_list_file.readlines():
- extra_files.append(line.strip().split('=', 1))
- files = []
- for destination, source in itertools.chain(args.file, extra_files):
- files.append({
- 'source': source,
- 'destination': destination,
- })
-
- atoms.update([Atom({
- 'id': args.id,
- 'meta': args.meta,
- 'gn-label': args.gn_label,
- 'category': args.category,
- 'deps': sorted(list(deps)),
- 'files': files,
- })])
-
- if detect_collisions(atoms):
- print('Name collisions detected!')
- return 1
- if detect_category_violations(args.category, atoms):
- print('Publication level violations detected!')
- return 1
-
- manifest = {
- 'ids': [args.id],
- 'atoms': map(lambda a: a.json, sorted(list(atoms))),
- }
-
- with open(os.path.abspath(args.out), 'w') as out:
- json.dump(manifest, out, indent=2, sort_keys=True)
-
- with open(args.depfile, 'w') as dep_file:
- dep_file.write(args.out + ': ')
- for destination, source in extra_files:
- dep_file.write(source + ' ')
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/sdk/create_molecule_manifest.py b/sdk/create_molecule_manifest.py
deleted file mode 100755
index ecd0274..0000000
--- a/sdk/create_molecule_manifest.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import json
-import os
-import sys
-
-from sdk_common import detect_category_violations, detect_collisions, gather_dependencies
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--deps',
- help='List of manifest paths for the included elements',
- nargs='*')
- parser.add_argument('--category',
- help='Minimum publication level',
- required=False)
- args = parser.parse_args()
-
- (direct_deps, atoms) = gather_dependencies(args.deps)
- if detect_collisions(atoms):
- print('Name collisions detected!')
- return 1
- if args.category:
- if detect_category_violations(args.category, atoms):
- print('Publication level violations detected!')
- return 1
- manifest = {
- 'ids': [],
- 'atoms': map(lambda a: a.json, sorted(list(atoms))),
- }
- with open(os.path.abspath(args.out), 'w') as out:
- json.dump(manifest, out, indent=2, sort_keys=True)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/sdk/export_sdk.py b/sdk/export_sdk.py
deleted file mode 100755
index a8c6f3c..0000000
--- a/sdk/export_sdk.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import errno
-import json
-import os
-import shutil
-import sys
-
-
-def make_dir(path, is_dir=False):
- """Creates the directory at `path`."""
- target = path if is_dir else os.path.dirname(path)
- try:
- os.makedirs(target)
- except OSError as exception:
- if exception.errno == errno.EEXIST and os.path.isdir(target):
- pass
- else:
- raise
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--out-dir',
- help='Path to the directory where to install the SDK',
- required=True)
- parser.add_argument('--stamp-file',
- help='Path to the victory file',
- required=True)
- parser.add_argument('--manifest',
- help='Path to the SDK\'s manifest file',
- required=True)
- args = parser.parse_args()
-
- # Remove any existing output.
- shutil.rmtree(args.out_dir, True)
-
- with open(args.manifest, 'r') as manifest_file:
- mappings = map(lambda l: l.strip().split('=', 1),
- manifest_file.readlines())
-
- for dest, source in mappings:
- destination = os.path.join(args.out_dir, dest)
- make_dir(destination)
- shutil.copy2(source, destination)
-
- with open(args.stamp_file, 'w') as stamp_file:
- stamp_file.write('Now go use it\n')
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/sdk/generate_archive_manifest.py b/sdk/generate_archive_manifest.py
deleted file mode 100755
index 6c490c9..0000000
--- a/sdk/generate_archive_manifest.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import json
-import os
-import sys
-from urlparse import urlparse
-
-from sdk_common import Atom
-
-
-class MappingAction(argparse.Action):
- '''Parses file mappings flags.'''
-
- def __init__(self, option_strings, dest, nargs=None, **kwargs):
- if nargs is not None:
- raise ValueError("nargs is not allowed")
- super(MappingAction, self).__init__(option_strings, dest, nargs=2,
- **kwargs)
-
- def __call__(self, parser, namespace, values, option_string=None):
- mappings = getattr(namespace, 'mappings', None)
- if mappings is None:
- mappings = {}
- setattr(namespace, 'mappings', mappings)
- mappings[values[0]] = values[1]
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--manifest',
- help='Path to the SDK\'s manifest file',
- required=True)
- parser.add_argument('--mapping',
- help='Extra files to add to the archive',
- action=MappingAction)
- parser.add_argument('--output',
- help='Path to the output file manifest',
- required=True)
- args = parser.parse_args()
-
- with open(args.manifest, 'r') as manifest_file:
- manifest = json.load(manifest_file)
-
- all_files = {}
- def add(dest, src):
- if dest in all_files:
- print('Error: multiple entries for %s' % dest)
- print(' - %s' % all_files[dest])
- print(' - %s' % src)
- return 1
- all_files[dest] = src
-
- for atom in [Atom(a) for a in manifest['atoms']]:
- for file in atom.files:
- add(file.destination, file.source)
-
- for dest, source in args.mappings.iteritems():
- add(dest, source)
-
- with open(args.output, 'w') as output_file:
- for mapping in sorted(all_files.iteritems()):
- output_file.write('%s=%s\n' % mapping)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/sdk/generate_meta.py b/sdk/generate_meta.py
deleted file mode 100755
index f6600c8..0000000
--- a/sdk/generate_meta.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import json
-import sys
-
-from sdk_common import Atom
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--manifest',
- help='Path to the SDK\'s manifest file',
- required=True)
- parser.add_argument('--meta',
- help='Path to output metadata file',
- required=True)
- parser.add_argument('--target-arch',
- help='Architecture of precompiled target atoms',
- required=True)
- parser.add_argument('--host-arch',
- help='Architecture of host tools',
- required=True)
- args = parser.parse_args()
-
- with open(args.manifest, 'r') as manifest_file:
- manifest = json.load(manifest_file)
-
- atoms = [Atom(a) for a in manifest['atoms']]
- meta = {
- 'arch': {
- 'host': args.host_arch,
- 'target': [
- args.target_arch,
- ],
- },
- 'parts': sorted(filter(lambda m: m, [a.metadata for a in atoms])),
- }
-
- with open(args.meta, 'w') as meta_file:
- json.dump(meta, meta_file, indent=2, sort_keys=True)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/sdk/manifest_schema.json b/sdk/manifest_schema.json
deleted file mode 100644
index 2b6e13e..0000000
--- a/sdk/manifest_schema.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "description": "Schema for a build-generated SDK manifest",
- "type": "object",
- "properties": {
- "atoms": {
- "description": "The set of all atoms in the current manifest, forming a complete dependency graph",
- "type": "array",
- "items": {
- "$ref": "#/definitions/atom"
- }
- },
- "ids": {
- "description": "IDs of the main atoms in this manifest (as opposed to dependencies)",
- "type": "array",
- "items": {
- "$ref": "#/definitions/atomId"
- }
- }
- },
- "required": [
- "atoms",
- "ids"
- ],
- "additionalProperties": false,
- "definitions": {
- "atomId": {
- "description": "Unique identifier for an atom",
- "type": "string",
- "pattern": "^sdk://([a-z][a-z0-9-_\\.]+)(/([a-z][a-z0-9-_\\.]+))*$"
- },
- "atom": {
- "description": "An SDK artifact",
- "type": "object",
- "properties": {
- "id": {
- "description": "The atom's unique identifier",
- "$ref": "#/definitions/atomId"
- },
- "gn-label": {
- "description": "Label of the GN target which generated the atom",
- "type": "string"
- },
- "meta": {
- "description": "Path to the atom's metadata file in the SDK",
- "type": "string"
- },
- "category": {
- "description": "Publication level of this atom",
- "type": "string",
- "enum": [
- "excluded",
- "experimental",
- "internal",
- "partner",
- "public"
- ]
- },
- "files": {
- "description": "Paths to files making up the atom, relative to the SDK root",
- "type": "array",
- "items": {
- "$ref": "#/definitions/atomFile"
- }
- },
- "deps": {
- "description": "The ids of the atoms this atom directly depends on",
- "type": "array",
- "items": {
- "$ref": "#/definitions/atomId"
- }
- }
- },
- "required": [
- "category",
- "deps",
- "files",
- "id",
- "gn-label"
- ],
- "additionalProperties": false
- },
- "atomFile": {
- "description": "Description of a file pertaining to an atom",
- "type": "object",
- "properties": {
- "source": {
- "description": "Path to the source file",
- "type": "string"
- },
- "destination": {
- "description": "Destination path of the file relative to the SDK root",
- "type": "string"
- }
- },
- "required": [
- "source",
- "destination"
- ],
- "additionalProperties": false
- }
- }
-}
diff --git a/sdk/meta/banjo_library.json b/sdk/meta/banjo_library.json
deleted file mode 100644
index 0a47835..0000000
--- a/sdk/meta/banjo_library.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "description": "A BANJO library",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "banjo_library"
- ]
- },
- "name": {
- "description": "Name of the library",
- "$ref": "common.json#/definitions/banjo_library_name"
- },
- "sources": {
- "description": "List of library sources",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- }
- },
- "required": [
- "name",
- "sources",
- "type"
- ]
- }
- ]
-}
diff --git a/sdk/meta/cc_prebuilt_library.json b/sdk/meta/cc_prebuilt_library.json
deleted file mode 100644
index 0a9c83b..0000000
--- a/sdk/meta/cc_prebuilt_library.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "description": "A prebuilt C/C++ library",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "cc_prebuilt_library"
- ]
- },
- "name": {
- "description": "Name of the library",
- "$ref": "common.json#/definitions/cc_library_name"
- },
- "format": {
- "description": "The distribution format of the binaries",
- "type": "string",
- "enum": [
- "shared",
- "static"
- ]
- },
- "headers": {
- "description": "List of public headers",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "include_dir": {
- "description": "Path to the base directory for includes",
- "$ref": "common.json#/definitions/file"
- },
- "deps": {
- "description": "List of C/C++ libraries this library depends on",
- "type": "array",
- "items": {
- "$ref": "#/definitions/package_name"
- }
- },
- "binaries": {
- "description": "The binary files for the library, per architecture",
- "type": "object",
- "properties": {
- "x64": {
- "description": "Binaries for the x64 architecture",
- "$ref": "#/definitions/binaryGroup"
- },
- "arm64": {
- "description": "Binaries for the arm64 architecture",
- "$ref": "#/definitions/binaryGroup"
- }
- },
- "additionalProperties": false,
- "minProperties": 1,
- "maxProperties": 2
- }
- },
- "required": [
- "binaries",
- "deps",
- "format",
- "headers",
- "name",
- "type"
- ]
- }
- ],
- "definitions": {
- "binaryGroup": {
- "description": "A set of binary files compiled for a given architecture",
- "type": "object",
- "properties": {
- "link": {
- "description": "The link-time version of the library",
- "$ref": "common.json#/definitions/file"
- },
- "dist": {
- "description": "The version of the library to add to Fuchsia packages",
- "$ref": "common.json#/definitions/file"
- },
- "debug": {
- "description": "The unstripped version of the library",
- "$ref": "common.json#/definitions/file"
- }
- },
- "required": [
- "link"
- ]
- }
- }
-}
diff --git a/sdk/meta/cc_source_library.json b/sdk/meta/cc_source_library.json
deleted file mode 100644
index 34733d3..0000000
--- a/sdk/meta/cc_source_library.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "description": "A set of C/C++ sources",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "cc_source_library"
- ]
- },
- "name": {
- "description": "Name of the library",
- "$ref": "common.json#/definitions/cc_library_name"
- },
- "sources": {
- "description": "List of library sources",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "headers": {
- "description": "List of public headers",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "include_dir": {
- "description": "Path to the base directory for includes",
- "$ref": "common.json#/definitions/file"
- },
- "deps": {
- "description": "List of C/C++ libraries this library depends on",
- "type": "array",
- "items": {
- "$ref": "#/definitions/package_name"
- }
- },
- "fidl_deps": {
- "description": "List of FIDL libraries this library depends on",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/fidl_library_name"
- }
- }
- },
- "required": [
- "deps",
- "fidl_deps",
- "headers",
- "include_dir",
- "name",
- "sources",
- "type"
- ]
- }
- ]
-}
diff --git a/sdk/meta/common.json b/sdk/meta/common.json
deleted file mode 100644
index a17c6a5..0000000
--- a/sdk/meta/common.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "definitions": {
- "file": {
- "description": "Path to a file from the root of the SDK",
- "type": "string"
- },
- "sdk_element": {
- "description": "Base type for SDK elements",
- "type": "object",
- "properties": {
- "type": {
- "description": "The type of the element",
- "type": "string"
- },
- "name": {
- "description": "The name of the element",
- "type": "string"
- },
- "root": {
- "description": "The root of the element in the SDK",
- "type": "string"
- },
- "files": {
- "description": "The list of files pertaining to the element",
- "type": "array",
- "items": {
- "$ref": "#/definitions/file"
- }
- }
- },
- "required": [
- "name",
- "root",
- "type"
- ]
- },
- "banjo_library_name": {
- "description": "Name of a BANJO library",
- "type": "string"
- },
- "fidl_library_name": {
- "description": "Name of a FIDL library",
- "type": "string"
- },
- "cc_library_name": {
- "description": "Name of a C/C++ library",
- "type": "string"
- },
- "target_arch": {
- "description": "Target architecture",
- "type": "string",
- "enum": [
- "arm64",
- "x64"
- ]
- }
- }
-}
diff --git a/sdk/meta/dart_library.json b/sdk/meta/dart_library.json
deleted file mode 100644
index 3d90f91..0000000
--- a/sdk/meta/dart_library.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "description": "A Dart library",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "dart_library"
- ]
- },
- "name": {
- "description": "Name of the library",
- "$ref": "#/definitions/package_name"
- },
- "sources": {
- "description": "List of library sources",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "deps": {
- "description": "List of Dart libraries this library depends on",
- "type": "array",
- "items": {
- "$ref": "#/definitions/package_name"
- }
- },
- "third_party_deps": {
- "description": "List of third-party dependencies",
- "type": "array",
- "items": {
- "$ref": "#/definitions/third_party_library"
- }
- },
- "fidl_deps": {
- "description": "List of FIDL libraries this library depends on",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/fidl_library_name"
- }
- }
- },
- "required": [
- "deps",
- "fidl_deps",
- "name",
- "sources",
- "third_party_deps",
- "type"
- ]
- }
- ],
- "definitions": {
- "package_name": {
- "description": "A Dart package name",
- "type": "string"
- },
- "third_party_library": {
- "description": "A third-party Dart package",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the package",
- "$ref": "#/definitions/package_name"
- },
- "version": {
- "description": "Version number of the package",
- "type": "string"
- }
- },
- "required": [
- "name",
- "version"
- ]
- }
- }
-}
diff --git a/sdk/meta/documentation.json b/sdk/meta/documentation.json
deleted file mode 100644
index 3362acf..0000000
--- a/sdk/meta/documentation.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "description": "A set of documents",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "documentation"
- ]
- },
- "docs": {
- "description": "The list of documents pertaining to the set",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- }
- },
- "required": [
- "type",
- "docs"
- ]
- }
- ]
-}
diff --git a/sdk/meta/fidl_library.json b/sdk/meta/fidl_library.json
deleted file mode 100644
index abc8291..0000000
--- a/sdk/meta/fidl_library.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "description": "A FIDL library",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "fidl_library"
- ]
- },
- "name": {
- "description": "Name of the library",
- "$ref": "common.json#/definitions/fidl_library_name"
- },
- "sources": {
- "description": "List of library sources",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- }
- },
- "required": [
- "name",
- "sources",
- "type"
- ]
- }
- ]
-}
diff --git a/sdk/meta/host_tool.json b/sdk/meta/host_tool.json
deleted file mode 100644
index a6d11fe..0000000
--- a/sdk/meta/host_tool.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "description": "A host tool",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "host_tool"
- ]
- },
- "files": {
- "description": "The list of files pertaining to the element",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- }
- },
- "required": [
- "type",
- "files"
- ]
- }
- ]
-}
diff --git a/sdk/meta/image.json b/sdk/meta/image.json
deleted file mode 100644
index f9fd1b0..0000000
--- a/sdk/meta/image.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "description": "A target image",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "image"
- ]
- },
- "file": {
- "description": "The image, per architecture",
- "type": "object",
- "properties": {
- "x64": {
- "description": "File for the x64 architecture",
- "$ref": "common.json#/definitions/file"
- },
- "arm64": {
- "description": "File for the arm64 architecture",
- "$ref": "common.json#/definitions/file"
- }
- },
- "additionalProperties": false,
- "minProperties": 1,
- "maxProperties": 2
- }
- },
- "required": [
- "type",
- "file"
- ]
- }
- ]
-}
diff --git a/sdk/meta/loadable_module.json b/sdk/meta/loadable_module.json
deleted file mode 100644
index ae7361d..0000000
--- a/sdk/meta/loadable_module.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "description": "A collection of object files that can be loaded at runtime",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "loadable_module"
- ]
- },
- "name": {
- "description": "Name of the module",
- "type": "string"
- },
- "resources": {
- "description": "Resource files associated with the module",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "binaries": {
- "description": "The binary files for the module, per architecture",
- "type": "object",
- "properties": {
- "x64": {
- "description": "Binaries for the x64 architecture",
- "$ref": "#/definitions/binaryGroup"
- },
- "arm64": {
- "description": "Binaries for the arm64 architecture",
- "$ref": "#/definitions/binaryGroup"
- }
- },
- "additionalProperties": false,
- "minProperties": 1,
- "maxProperties": 2
- }
- },
- "required": [
- "binaries",
- "name",
- "resources",
- "type"
- ]
- }
- ],
- "definitions": {
- "binaryGroup": {
- "description": "A set of binary files compiled for a given architecture",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- }
- }
-}
diff --git a/sdk/meta/manifest.json b/sdk/meta/manifest.json
deleted file mode 100644
index bac0c4a..0000000
--- a/sdk/meta/manifest.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "description": "A target image",
- "type": "object",
- "properties": {
- "arch": {
- "description": "The various architectures encountered in the SDK",
- "type": "object",
- "properties": {
- "host": {
- "description": "The host architecture",
- "type": "string"
- },
- "target": {
- "description": "The target architectures",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/target_arch"
- }
- }
- },
- "additionalProperties": false,
- "required": [
- "host",
- "target"
- ]
- },
- "parts": {
- "description": "The metadata files for elements in the SDK",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- }
- },
- "additionalProperties": false,
- "required": [
- "arch",
- "parts"
- ]
-}
diff --git a/sdk/meta/sysroot.json b/sdk/meta/sysroot.json
deleted file mode 100644
index e7e2bc6..0000000
--- a/sdk/meta/sysroot.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "description": "The sysroot",
- "type": "object",
- "allOf": [
- {
- "$ref": "common.json#/definitions/sdk_element"
- },
- {
- "properties": {
- "type": {
- "description": "Marker for this type of element",
- "type": "string",
- "enum": [
- "sysroot"
- ]
- },
- "name": {
- "description": "Always 'sysroot'",
- "type": "string",
- "enum": [
- "sysroot"
- ]
- },
- "versions": {
- "description": "The various versions of the sysroot, per architecture",
- "type": "object",
- "properties": {
- "x64": {
- "description": "x64 version",
- "$ref": "#/definitions/version"
- },
- "arm64": {
- "description": "arm64 version",
- "$ref": "#/definitions/version"
- }
- },
- "additionalProperties": false,
- "minProperties": 1,
- "maxProperties": 2
- }
- },
- "required": [
- "name",
- "type",
- "versions"
- ]
- }
- ],
- "definitions": {
- "version": {
- "description": "Sysroot files for a given architecture",
- "type": "object",
- "properties": {
- "root": {
- "description": "Path to the root of the sysroot",
- "$ref": "common.json#/definitions/file"
- },
- "headers": {
- "description": "List of public headers",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "include_dir": {
- "description": "Path to the base directory for includes",
- "$ref": "common.json#/definitions/file"
- },
- "link_libs": {
- "description": "List of link-time libraries",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "dist_libs": {
- "description": "List of libraries for inclusion in packages",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- },
- "debug_libs": {
- "description": "List of libraries for debugging",
- "type": "array",
- "items": {
- "$ref": "common.json#/definitions/file"
- }
- }
- },
- "required": [
- "root",
- "headers",
- "include_dir",
- "link_libs",
- "dist_libs",
- "debug_libs"
- ]
- }
- }
-}
diff --git a/sdk/sdk.gni b/sdk/sdk.gni
deleted file mode 100644
index e02f1ea..0000000
--- a/sdk/sdk.gni
+++ /dev/null
@@ -1,284 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-import("//build/json/validate_json.gni")
-import("sdk_molecule.gni")
-
-declare_args() {
- # Whether to build SDK tarballs.
- build_sdk_archives = false
-}
-
-# A collection of elements to be published in an SDK.
-#
-# Parameters
-#
-# name (optional)
-# Name of the SDK.
-# Defaults to the target's name.
-#
-# category (required)
-# Describes the minimum category that atoms in this SDK must have.
-# See //build/sdk/sdk_atom.gni for possible values.
-#
-# export (optional)
-# Whether to export the contents of this SDK to the output directory.
-# This is useful when an SDK-like file structure is needed as part of the
-# build, for example to port a language runtime which would otherwise rely
-# on an official SDK.
-# Defaults to false.
-
-template("sdk") {
- assert(defined(invoker.category), "Must define an SDK category")
-
- main_target_name = target_name
- generation_target_name = "${target_name}_molecule"
- copy_target_name = "${target_name}_copy"
- verification_target_name = "${target_name}_manifest_verify"
- meta_target_name = "${target_name}_meta"
- verify_meta_target_name = "${target_name}_meta_verify"
- archive_manifest_target_name = "${target_name}_archive_manifest"
- archive_target_name = "${target_name}_archive"
-
- if (!is_fuchsia) {
- assert(false, "SDKs can only target Fuchsia")
- }
- target_triple = target_cpu
- if (host_cpu == "x64") {
- host_triple_cpu = "x86_64"
- } else if (host_cpu == "arm64") {
- host_triple_cpu = "aarch64"
- } else {
- assert(false, "Unrecognized host CPU: $host_cpu")
- }
- if (host_os == "linux") {
- host_triple_os = "linux-gnu"
- } else if (host_os == "mac") {
- host_triple_os = "apple-darwin"
- } else if (host_os == "fuchsia") {
- host_triple_os = "fuchsia"
- } else {
- assert(false, "Unrecognized host OS: $host_os")
- }
- host_triple = "$host_triple_cpu-$host_triple_os"
-
- # Generates the manifest.
- sdk_molecule(generation_target_name) {
- forward_variables_from(invoker, "*", [ "export" ])
-
- if (!defined(deps)) {
- deps = []
- }
- deps += [ "//build/sdk:schemas" ]
-
- category = invoker.category
- }
-
- sdk_name = target_name
- if (defined(invoker.name)) {
- sdk_name = invoker.name
- }
- final_manifest_file = "$root_out_dir/sdk/manifest/$sdk_name"
-
- # Copies the manifest to a central location.
- copy(copy_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- sources = [
- "$target_gen_dir/$generation_target_name.sdk",
- ]
-
- outputs = [
- final_manifest_file,
- ]
-
- deps = [
- ":$generation_target_name",
- ]
- }
-
- # Verifies that the manifest is valid.
- validate_json(verification_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- data = final_manifest_file
-
- schema = "//build/sdk/manifest_schema.json"
-
- deps = [
- ":$copy_target_name",
- ]
- }
-
- sdk_meta_file = "$target_gen_dir/$sdk_name.sdk_meta.json"
-
- # Generates a metadata file describing the various parts of the SDK.
- action(meta_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- script = "//build/sdk/generate_meta.py"
-
- inputs = [
- final_manifest_file,
- ]
-
- outputs = [
- sdk_meta_file,
- ]
-
- args = [
- "--manifest",
- rebase_path(final_manifest_file),
- "--meta",
- rebase_path(sdk_meta_file),
- "--target-arch",
- target_triple,
- "--host-arch",
- host_triple,
- ]
-
- public_deps = [
- ":$copy_target_name",
- ":$verification_target_name",
- ]
- }
-
- # Verifies that the manifest metadata is valid.
- validate_json(verify_meta_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- data = sdk_meta_file
-
- schema = "//build/sdk/meta/manifest.json"
-
- public_deps = [
- ":$meta_target_name",
- ]
- }
-
- archive_manifest_file = "$target_gen_dir/$sdk_name.archive_manifest"
-
- additional_archive_files = [
- {
- source = sdk_meta_file
- dest = "meta/manifest.json"
- },
- ]
-
- # From the manifest file representing the SDK, generates a list of the files
- # going into the final archive.
- action(archive_manifest_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- script = "//build/sdk/generate_archive_manifest.py"
-
- sources = [
- "//build/sdk/sdk_common.py",
- ]
-
- inputs = [
- final_manifest_file,
- ]
-
- outputs = [
- archive_manifest_file,
- ]
-
- args = [
- "--manifest",
- rebase_path(final_manifest_file),
- "--output",
- rebase_path(archive_manifest_file),
- ]
-
- foreach(file, additional_archive_files) {
- inputs += [ file.source ]
- args += [
- "--mapping",
- file.dest,
- rebase_path(file.source),
- ]
- }
-
- public_deps = [
- ":$verify_meta_target_name",
- ]
- }
-
- if (build_sdk_archives) {
- # Generates the final archive.
- final_archive = "$root_out_dir/sdk/archive/$sdk_name.tar.gz"
-
- compiled_action(archive_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- tool = "//build/tools/tar_maker"
-
- inputs = [
- archive_manifest_file,
- ]
-
- outputs = [
- final_archive,
- ]
-
- args = [
- "-manifest",
- rebase_path(archive_manifest_file),
- "-output",
- rebase_path(final_archive),
- ]
-
- deps = [
- ":$archive_manifest_target_name",
- ]
- }
- } else {
- group(archive_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- deps = [
- ":$archive_manifest_target_name",
- ]
- }
- }
-
- group(main_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- deps = [
- ":$archive_target_name",
- ]
- }
-
- if (defined(invoker.export) && invoker.export) {
- stamp_file = "$target_gen_dir/$target_name.exported"
-
- action("${target_name}_export") {
- script = "//build/sdk/export_sdk.py"
-
- inputs = [
- archive_manifest_file,
- ]
-
- outputs = [
- stamp_file,
- ]
-
- args = [
- "--out-dir",
- rebase_path("$root_out_dir/sdk/exported/$sdk_name"),
- "--stamp-file",
- rebase_path(stamp_file),
- "--manifest",
- rebase_path(archive_manifest_file),
- ]
-
- deps = [
- ":$archive_manifest_target_name",
- ]
- }
- }
-}
diff --git a/sdk/sdk_atom.gni b/sdk/sdk_atom.gni
deleted file mode 100644
index c3cf2f9..0000000
--- a/sdk/sdk_atom.gni
+++ /dev/null
@@ -1,225 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/compiled_action.gni")
-import("//build/json/validate_json.gni")
-
-# Defines an SDK element.
-#
-# Outputs
-#
-# $target_gen_dir/$target_name.sdk
-# A manifest describing what files pertain to the atom and which other atoms
-# are required by this atom.
-#
-# $target_gen_dir/$target_name.meta.json
-# A metadata file describing the atom.
-# This file is included in the final SDK and used to e.g. drive the
-# inclusion of the atom in a different build system.
-#
-# Parameters
-#
-# id
-# Identifier of this element within SDKs.
-# The identifier should represent the canonical base path of the element
-# within SDKs according to the standard layout (https://fuchsia.googlesource.com/docs/+/master/development/sdk/layout.md).
-# For an element at $ROOT/pkg/foo, the id should be "sdk://pkg/foo".
-#
-# category
-# Describes the availability of the element.
-# Possible values, from most restrictive to least restrictive:
-# - excluded : the atom may not be included in SDKs;
-# - experimental : the atom is available with no quality guarantee;
-# - internal : the atom is exposed within the Fuchsia tree;
-# - partner : the atom may be used by select partners;
-# - public : the atom may be included in published SDKs.
-#
-# meta
-# Scope describing the element's metadata file.
-# See the "Metadata scope" section for how to populate this attribute.
-#
-# files
-# List of scopes describing the contents of this element.
-# See the "File scopes" section for how to describe files.
-#
-# file_list
-# Path to a file containing file mappings.
-# Each line in the file should contain a "dest=source" mapping, similarly to
-# file scopes.
-#
-# deps (optional)
-# List of GN labels for other SDK elements this element depends on at build
-# time.
-# These labels must point to "sdk_atom" targets.
-#
-# non_sdk_deps (optional)
-# List of GN labels which this target needs built.
-#
-# Metadata scope
-#
-# This scope describes a metadata file to be added to the SDK element. Its
-# supported attributes are:
-#
-# source (optional)
-# Path to the metadata file.
-#
-# value (optional)
-# Scope representing the metadata contents.
-#
-# NOTE: Exactly one of `source` or `value` must be set.
-#
-# dest (required)
-# Path to the metadata file in the SDK, relatively to the SDK root
-#
-# schema (required)
-# Name of the schema for this file, ignoring the extension.
-# Metadata files are hosted under //build/sdk/meta.
-# If the metadata file conforms to //build/sdk/meta/foo.json, the
-# present attribute should have a value of "foo".
-#
-# File scopes
-#
-# Each scope describes a file to be added to the SDK element. The supported
-# attributes are:
-#
-# source (required)
-# Path to the original file.
-# This path may be absolute or relative to the target's directory.
-#
-# dest (required)
-# Destination path of the file relative to the SDK root.
-
-template("sdk_atom") {
- assert(defined(invoker.category), "Must define an SDK category")
- category = invoker.category
-
- assert(defined(invoker.id), "Must define an SDK ID")
-
- assert(defined(invoker.meta), "Must specify some metadata")
- meta = invoker.meta
-
- gn_deps = []
- if (defined(invoker.non_sdk_deps)) {
- gn_deps = invoker.non_sdk_deps
- }
-
- dep_manifests = []
- if (defined(invoker.deps)) {
- gn_deps += invoker.deps
- foreach(dep, invoker.deps) {
- gen_dir = get_label_info(dep, "target_gen_dir")
- name = get_label_info(dep, "name")
- dep_manifests += [ rebase_path("$gen_dir/$name.sdk") ]
- }
- }
-
- assert(defined(invoker.files), "An atom must specify some files")
- file_args = []
- file_inputs = []
- foreach(file, invoker.files) {
- assert(defined(file.source), "File $file does not specify a source.")
- assert(defined(file.dest), "File $file does not specify a destination.")
- file_inputs += [ file.source ]
- source = rebase_path(file.source)
- file_args += [
- "--file",
- file.dest,
- source,
- ]
- }
-
- meta_target_name = "${target_name}_meta"
- meta_content = invoker.meta
- meta_file = "$target_gen_dir/$target_name.meta.json"
-
- if (defined(meta_content.value)) {
- # Directly write the value into a file in the output directory.
- write_file(meta_file, meta_content.value, "json")
- meta_deps = gn_deps
- } else {
- meta_copy_target_name = "${target_name}_meta_copy"
- assert(defined(meta_content.source), "Meta scope needs a source or value")
-
- # Copy the file to a canonical location for access by other rules.
- # TODO(DX-497): instead, make sure that all atoms generate their metadata
- # file in the right location.
- copy(meta_copy_target_name) {
- sources = [
- meta_content.source,
- ]
-
- outputs = [
- meta_file,
- ]
-
- deps = gn_deps
- }
-
- meta_deps = [ ":$meta_copy_target_name" ]
- }
-
- # Verify that the metadata complies with the specified schema.
- validate_json(meta_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
- data = meta_file
- schema = "//build/sdk/meta/${meta_content.schema}.json"
- sources = [
- # This file is imported by all schemas.
- "//build/sdk/meta/common.json",
- ]
- public_deps = meta_deps
- }
-
- # Add the metadata file to the set of files to include in SDKs.
- meta_source = rebase_path(meta_file)
- file_args += [
- "--file",
- meta.dest,
- meta_source,
- ]
-
- # Builds a manifest representing this element.
- action(target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- manifest = "$target_gen_dir/$target_name.sdk"
- depfile = "$manifest.d"
-
- script = "//build/sdk/create_atom_manifest.py"
-
- public_deps = gn_deps + [ ":$meta_target_name" ]
-
- inputs = dep_manifests + file_inputs + [
- # Imported by the action's script.
- "//build/sdk/sdk_common.py",
- ]
-
- outputs = [
- manifest,
- ]
-
- args = [
- "--id",
- invoker.id,
- "--out",
- rebase_path(manifest, root_build_dir),
- "--depfile",
- rebase_path(depfile),
- "--gn-label",
- get_label_info(":$target_name", "label_with_toolchain"),
- "--category",
- category,
- "--meta",
- meta.dest,
- "--deps",
- ] + dep_manifests + file_args
-
- if (defined(invoker.file_list)) {
- args += [
- "--file-list",
- rebase_path(invoker.file_list),
- ]
- }
- }
-}
diff --git a/sdk/sdk_atom_alias.gni b/sdk/sdk_atom_alias.gni
deleted file mode 100644
index 2329aaa..0000000
--- a/sdk/sdk_atom_alias.gni
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2018 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.
-
-# Defines an alias for an SDK element.
-#
-# Parameters
-#
-# atom
-# The label of the aliased atom.
-#
-# non_sdk_deps (optional)
-# List of GN labels which this target needs built.
-
-template("sdk_atom_alias") {
- assert(defined(invoker.atom), "Must define an atom to alias")
-
- # This template simply copies the output files of the sdk_atom template to
- # the correct location.
-
- atom_gen_dir = get_label_info(invoker.atom, "target_gen_dir")
- atom_name = get_label_info(invoker.atom, "name")
-
- group_deps = []
-
- copy_meta_target_name = "${target_name}_copy_meta"
- group_deps += [ ":$copy_meta_target_name" ]
- copy(copy_meta_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- sources = [
- "$atom_gen_dir/$atom_name.meta.json",
- ]
-
- outputs = [
- "$target_gen_dir/$target_name.meta.json",
- ]
-
- deps = [
- invoker.atom,
- ]
- }
-
- copy_manifest_target_name = "${target_name}_copy_manifest"
- group_deps += [ ":$copy_manifest_target_name" ]
- copy(copy_manifest_target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- sources = [
- "$atom_gen_dir/$atom_name.sdk",
- ]
-
- outputs = [
- "$target_gen_dir/$target_name.sdk",
- ]
-
- deps = [
- invoker.atom,
- ]
- }
-
- group(target_name) {
- forward_variables_from(invoker, [ "testonly" ])
-
- public_deps = group_deps
-
- if (defined(invoker.non_sdk_deps)) {
- public_deps += invoker.non_sdk_deps
- }
- }
-}
diff --git a/sdk/sdk_common.py b/sdk/sdk_common.py
deleted file mode 100644
index ed30aaf..0000000
--- a/sdk/sdk_common.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# Copyright 2018 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.
-
-import collections
-import json
-
-
-class File(object):
- '''Wrapper class for file definitions.'''
-
- def __init__(self, json):
- self.source = json['source']
- self.destination = json['destination']
-
- def __str__(self):
- return '{%s <-- %s}' % (self.destination, self.source)
-
-
-class Atom(object):
- '''Wrapper class for atom data, adding convenience methods.'''
-
- def __init__(self, json):
- self.json = json
- self.id = json['id']
- self.metadata = json['meta']
- self.label = json['gn-label']
- self.category = json['category']
- self.deps = json['deps']
- self.files = [File(f) for f in json['files']]
-
- def __str__(self):
- return str(self.id)
-
- def __hash__(self):
- return hash(self.label)
-
- def __eq__(self, other):
- return self.label == other.label
-
- def __ne__(self, other):
- return not __eq__(self, other)
-
- def __cmp__(self, other):
- return cmp(self.id, other.id)
-
-
-def gather_dependencies(manifests):
- '''Extracts the set of all required atoms from the given manifests, as well
- as the set of names of all the direct dependencies.
- '''
- direct_deps = set()
- atoms = set()
- for dep in manifests:
- with open(dep, 'r') as dep_file:
- dep_manifest = json.load(dep_file)
- direct_deps.update(dep_manifest['ids'])
- atoms.update(map(lambda a: Atom(a), dep_manifest['atoms']))
- return (direct_deps, atoms)
-
-
-def detect_collisions(atoms):
- '''Detects name collisions in a given atom list.'''
- mappings = collections.defaultdict(lambda: [])
- for atom in atoms:
- mappings[atom.id].append(atom)
- has_collisions = False
- for id, group in mappings.iteritems():
- if len(group) == 1:
- continue
- has_collisions = True
- labels = [a.label for a in group]
- print('Targets sharing the SDK id %s:' % id)
- for label in labels:
- print(' - %s' % label)
- return has_collisions
-
-
-CATEGORIES = [
- 'excluded',
- 'experimental',
- 'internal',
- 'partner',
- 'public',
-]
-
-
-def index_for_category(category):
- if not category in CATEGORIES:
- raise Exception('Unknown SDK category "%s"' % category)
- return CATEGORIES.index(category)
-
-
-def detect_category_violations(category, atoms):
- '''Detects mismatches in publication categories.'''
- has_violations = False
- category_index = index_for_category(category)
- for atom in atoms:
- if index_for_category(atom.category) < category_index:
- has_violations = True
- print('%s has publication level %s, incompatible with %s' % (
- atom, atom.category, category))
- return has_violations
diff --git a/sdk/sdk_common_unittest.py b/sdk/sdk_common_unittest.py
deleted file mode 100755
index 33e700b..0000000
--- a/sdk/sdk_common_unittest.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/python3.5
-# Copyright 2018 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.
-
-# TODO(INTK-247): switch to the standard shebang line when the mocking library
-# is available.
-
-import os
-import sys
-import unittest
-from unittest.mock import patch, MagicMock
-
-from sdk_common import Atom, AtomId, detect_category_violations
-
-
-def _atom(name, category):
- return Atom({
- 'id': {
- 'domain': 'foo',
- 'name': name,
- },
- 'category': category,
- 'gn-label': '//hello',
- 'deps': [],
- 'package-deps': [],
- 'files': [],
- 'tags': [],
- })
-
-
-class SdkCommonTests(unittest.TestCase):
-
- def test_categories(self):
- atoms = [_atom('hello', 'internal'), _atom('world', 'public')]
- self.assertFalse(detect_category_violations('internal', atoms))
-
- def test_categories_failure(self):
- atoms = [_atom('hello', 'internal'), _atom('world', 'public')]
- self.assertTrue(detect_category_violations('partner', atoms))
-
- def test_category_name_bogus(self):
- atoms = [_atom('hello', 'foobarnotgood'), _atom('world', 'public')]
- self.assertRaises(Exception, detect_category_violations, 'partner', atoms)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/sdk/sdk_documentation.gni b/sdk/sdk_documentation.gni
deleted file mode 100644
index 00d321f..0000000
--- a/sdk/sdk_documentation.gni
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/sdk/sdk_atom.gni")
-
-# Declares a set of documents to be added to an SDK.
-#
-# Parameters
-#
-# category (required)
-# Publication level of the document set in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# name (required)
-# Name of the document set in the SDK.
-#
-# files (required)
-# List of scopes describing the documents to add to SDKs.
-# See "File scopes" in //build/sdk/sdk_atom.gni for a description of the
-# scope format.
-
-template("sdk_documentation") {
- assert(defined(invoker.category), "Must define an SDK category")
- assert(defined(invoker.name), "Must define an SDK name")
- assert(defined(invoker.files), "Must add documentation files")
-
- sdk_files = []
- foreach(file, invoker.files) {
- sdk_files += [ file.dest ]
- }
-
- sdk_atom(target_name) {
- forward_variables_from(invoker,
- [
- "category",
- "files",
- ])
-
- id = "sdk://docs/${invoker.name}"
-
- meta = {
- schema = "documentation"
- dest = "docs/${invoker.name}.json"
- value = {
- type = "documentation"
- name = invoker.name
- docs = sdk_files
- root = "docs"
- }
- }
- }
-}
diff --git a/sdk/sdk_molecule.gni b/sdk/sdk_molecule.gni
deleted file mode 100644
index dfdeaae..0000000
--- a/sdk/sdk_molecule.gni
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2017 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.
-
-# Defines a group of SDK elements.
-#
-# Parameters
-#
-# category (optional)
-# Describes the minimum category that atoms in this molecule must have.
-# See //build/sdk/sdk_atom.gni for possible values.
-#
-# deps (optional)
-# List of GN labels referencing the elements of this group.
-# These labels must point to "sdk_atom" or "sdk_molecule" targets.
-#
-# non_sdk_deps (optional)
-# List of GN labels which this target needs built.
-
-template("sdk_molecule") {
- gn_deps = []
- if (defined(invoker.non_sdk_deps)) {
- gn_deps = invoker.non_sdk_deps
- }
-
- dep_manifests = []
- if (defined(invoker.deps)) {
- gn_deps += invoker.deps
- foreach(dep, invoker.deps) {
- gen_dir = get_label_info(dep, "target_gen_dir")
- name = get_label_info(dep, "name")
- dep_manifests += [ rebase_path("$gen_dir/$name.sdk") ]
- }
- }
-
- # Builds a manifest representing members of the group.
- action(target_name) {
- forward_variables_from(invoker,
- [
- "assert_no_deps",
- "testonly",
- ])
-
- manifest = "$target_gen_dir/$target_name.sdk"
-
- script = "//build/sdk/create_molecule_manifest.py"
-
- deps = gn_deps
-
- inputs = dep_manifests + [
- # Imported by the action's script.
- "//build/sdk/sdk_common.py",
- ]
-
- outputs = [
- manifest,
- ]
-
- args = [
- "--out",
- rebase_path(manifest),
- "--deps",
- ] + dep_manifests
-
- if (defined(invoker.category)) {
- args += [
- "--category",
- invoker.category,
- ]
- }
- }
-}
diff --git a/sdk/sdk_prebuilt_executable.gni b/sdk/sdk_prebuilt_executable.gni
deleted file mode 100644
index 5cd8933..0000000
--- a/sdk/sdk_prebuilt_executable.gni
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2019 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.
-
-import("//build/sdk/sdk_atom.gni")
-
-# A prebuilt host executable which can be bundled in an SDK.
-#
-# prebuilt (required)
-# Label of the prebuilt executable.
-#
-# category (required)
-# Publication level of the executable in SDKs.
-# See //build/sdk/sdk_atom.gni.
-#
-# sdk_deps (optional)
-# List of labels representing elements that should be added to SDKs
-# alongside the present binary.
-# Labels in the list must represent SDK-ready targets.
-
-template("sdk_prebuilt_executable") {
- assert(defined(invoker.category), "Must define an SDK category")
- assert(defined(invoker.prebuilt), "Must set the path")
- if (is_fuchsia) {
- assert(false, "Only valid for host tools")
- }
-
- main_target_name = target_name
-
- group(main_target_name) {
- # No-op target, only used to abide by naming conventions.
- }
-
- tool_name = get_path_info(invoker.prebuilt, "file")
- file_base = "tools/$tool_name"
-
- sdk_atom("${target_name}_sdk") {
- id = "sdk://tools/$tool_name"
-
- category = invoker.category
-
- meta = {
- dest = "$file_base-meta.json"
- schema = "host_tool"
- value = {
- type = "host_tool"
- name = tool_name
- root = "tools"
- files = [ file_base ]
- }
- }
-
- files = [
- {
- source = invoker.prebuilt
- dest = file_base
- },
- ]
-
- if (defined(invoker.sdk_deps)) {
- deps = invoker.sdk_deps
- }
-
- non_sdk_deps = [ ":$main_target_name" ]
- }
-}
diff --git a/secondary/third_party/dart/pkg/analyzer/BUILD.gn b/secondary/third_party/dart/pkg/analyzer/BUILD.gn
deleted file mode 100644
index a864313..0000000
--- a/secondary/third_party/dart/pkg/analyzer/BUILD.gn
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("analyzer") {
- package_name = "analyzer"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart-pkg/pub/args",
- "//third_party/dart-pkg/pub/charcode",
- "//third_party/dart-pkg/pub/collection",
- "//third_party/dart-pkg/pub/convert",
- "//third_party/dart-pkg/pub/crypto",
- "//third_party/dart-pkg/pub/glob",
- "//third_party/dart-pkg/pub/html",
- "//third_party/dart-pkg/pub/meta",
- "//third_party/dart-pkg/pub/package_config",
- "//third_party/dart-pkg/pub/path",
- "//third_party/dart-pkg/pub/plugin",
- "//third_party/dart-pkg/pub/pub_semver",
- "//third_party/dart-pkg/pub/source_span",
- "//third_party/dart-pkg/pub/watcher",
- "//third_party/dart-pkg/pub/yaml",
- "//third_party/dart/pkg/front_end",
- "//third_party/dart/pkg/kernel",
- ]
-}
diff --git a/secondary/third_party/dart/pkg/analyzer_cli/BUILD.gn b/secondary/third_party/dart/pkg/analyzer_cli/BUILD.gn
deleted file mode 100644
index 176597c..0000000
--- a/secondary/third_party/dart/pkg/analyzer_cli/BUILD.gn
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("analyzer_cli") {
- package_name = "analyzer_cli"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart-pkg/pub/args",
- "//third_party/dart-pkg/pub/bazel_worker",
- "//third_party/dart-pkg/pub/cli_util",
- "//third_party/dart-pkg/pub/package_config",
- "//third_party/dart-pkg/pub/plugin",
- "//third_party/dart-pkg/pub/protobuf",
- "//third_party/dart-pkg/pub/yaml",
- "//third_party/dart/pkg/analyzer",
- "//third_party/dart/pkg/telemetry",
- "//third_party/dart/third_party/pkg/linter",
- ]
-}
diff --git a/secondary/third_party/dart/pkg/build_integration/BUILD.gn b/secondary/third_party/dart/pkg/build_integration/BUILD.gn
deleted file mode 100644
index 852cdae..0000000
--- a/secondary/third_party/dart/pkg/build_integration/BUILD.gn
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("build_integration") {
- package_name = "build_integration"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart/pkg/front_end",
- ]
-}
diff --git a/secondary/third_party/dart/pkg/front_end/BUILD.gn b/secondary/third_party/dart/pkg/front_end/BUILD.gn
deleted file mode 100644
index 56c95ef..0000000
--- a/secondary/third_party/dart/pkg/front_end/BUILD.gn
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("front_end") {
- package_name = "front_end"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart-pkg/pub/convert",
- "//third_party/dart-pkg/pub/crypto",
- "//third_party/dart-pkg/pub/meta",
- "//third_party/dart-pkg/pub/path",
- "//third_party/dart-pkg/pub/source_span",
- "//third_party/dart/pkg/kernel",
- ]
-}
diff --git a/secondary/third_party/dart/pkg/kernel/BUILD.gn b/secondary/third_party/dart/pkg/kernel/BUILD.gn
deleted file mode 100644
index 424812a..0000000
--- a/secondary/third_party/dart/pkg/kernel/BUILD.gn
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("kernel") {
- package_name = "kernel"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart-pkg/pub/args",
- "//third_party/dart-pkg/pub/logging",
- "//third_party/dart-pkg/pub/package_config",
- "//third_party/dart-pkg/pub/path",
- ]
-}
diff --git a/secondary/third_party/dart/pkg/telemetry/BUILD.gn b/secondary/third_party/dart/pkg/telemetry/BUILD.gn
deleted file mode 100644
index 1f2819f..0000000
--- a/secondary/third_party/dart/pkg/telemetry/BUILD.gn
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("telemetry") {
- package_name = "telemetry"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart-pkg/pub/http",
- "//third_party/dart-pkg/pub/path",
- "//third_party/dart-pkg/pub/stack_trace",
- "//third_party/dart-pkg/pub/usage",
- ]
-}
diff --git a/secondary/third_party/dart/pkg/typed_mock/BUILD.gn b/secondary/third_party/dart/pkg/typed_mock/BUILD.gn
deleted file mode 100644
index afaa351..0000000
--- a/secondary/third_party/dart/pkg/typed_mock/BUILD.gn
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("typed_mock") {
- package_name = "typed_mock"
-
- sources = []
-
- disable_analysis = true
-}
diff --git a/secondary/third_party/dart/pkg/vm/BUILD.gn b/secondary/third_party/dart/pkg/vm/BUILD.gn
deleted file mode 100644
index 0ea19c4..0000000
--- a/secondary/third_party/dart/pkg/vm/BUILD.gn
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("vm") {
- package_name = "vm"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart-pkg/pub/args",
- "//third_party/dart/pkg/front_end",
- "//third_party/dart/pkg/kernel",
- ]
-}
diff --git a/secondary/third_party/dart/third_party/pkg/func/BUILD.gn b/secondary/third_party/dart/third_party/pkg/func/BUILD.gn
deleted file mode 100644
index 7d3ca4c..0000000
--- a/secondary/third_party/dart/third_party/pkg/func/BUILD.gn
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("func") {
- package_name = "func"
-
- sources = []
-
- disable_analysis = true
-}
diff --git a/secondary/third_party/dart/third_party/pkg/intl/BUILD.gn b/secondary/third_party/dart/third_party/pkg/intl/BUILD.gn
deleted file mode 100644
index 2c9b491..0000000
--- a/secondary/third_party/dart/third_party/pkg/intl/BUILD.gn
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("intl") {
- package_name = "intl"
-
- sources = []
-
- deps = [
- "//third_party/dart-pkg/pub/path",
- ]
-
- disable_analysis = true
-}
diff --git a/secondary/third_party/dart/third_party/pkg/linter/BUILD.gn b/secondary/third_party/dart/third_party/pkg/linter/BUILD.gn
deleted file mode 100644
index 7e00fe1..0000000
--- a/secondary/third_party/dart/third_party/pkg/linter/BUILD.gn
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2017 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.
-
-import("//build/dart/dart_library.gni")
-
-dart_library("linter") {
- package_name = "linter"
-
- sources = []
-
- disable_analysis = true
-
- deps = [
- "//third_party/dart-pkg/pub/args",
- "//third_party/dart-pkg/pub/cli_util",
- "//third_party/dart-pkg/pub/glob",
- "//third_party/dart-pkg/pub/plugin",
- "//third_party/dart-pkg/pub/source_span",
- "//third_party/dart-pkg/pub/yaml",
- "//third_party/dart/pkg/analyzer",
- ]
-}
diff --git a/secondary/third_party/glfw/BUILD.gn b/secondary/third_party/glfw/BUILD.gn
deleted file mode 100644
index 6531a27..0000000
--- a/secondary/third_party/glfw/BUILD.gn
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2017 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.
-
-config("glfw_config") {
- include_dirs = [
- "include",
- "deps",
- ]
- cflags = [
- "-Wall",
- "-Wno-deprecated",
- ]
-
- # add flags to avoid compiler warnings
- cflags += [
- "-Wno-int-conversion",
- "-Wno-implicit-function-declaration",
- "-Wno-sign-compare",
- ]
-}
-static_library("glfw") {
- defines = [
- "_GLFW_BUILD_DLL",
- "__GLFW_USE_HYBRID_HPG",
- ]
- sources = [
- "deps/getopt.c",
- "deps/glad.c",
- "src/context.c",
- "src/init.c",
- "src/input.c",
- "src/monitor.c",
- "src/vulkan.c",
- "src/window.c",
- ]
- if (is_mac) {
- defines += [
- "_GLFW_COCOA",
- "_GLFW_USE_RETINA",
- ]
- libs = [
- "Cocoa.framework",
- "CoreFoundation.framework",
- "CoreGraphics.framework",
- "CoreVideo.framework",
- "IOKit.framework",
- "OpenGL.framework",
- ]
- sources += [
- "src/cocoa_init.m",
- "src/cocoa_joystick.m",
- "src/cocoa_monitor.m",
- "src/cocoa_time.c",
- "src/cocoa_window.m",
- "src/nsgl_context.m",
- "src/posix_tls.c",
- ]
- } else if (is_linux) {
- defines += [ "_GLFW_X11" ]
- sources += [
- "src/egl_context.c",
- "src/glx_context.c",
- "src/linux_joystick.c",
- "src/posix_time.c",
- "src/posix_tls.c",
- "src/x11_init.c",
- "src/x11_monitor.c",
- "src/x11_window.c",
- "src/xkb_unicode.c",
- ]
- }
- configs += [ ":glfw_config" ]
-}
diff --git a/secondary/third_party/llvm/BUILD.gn b/secondary/third_party/llvm/BUILD.gn
deleted file mode 100644
index e8e4d19..0000000
--- a/secondary/third_party/llvm/BUILD.gn
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2018 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.
-
-assert(current_toolchain == host_toolchain,
- "LLVM should only be referenced from host tools.")
-
-config("include") {
- include_dirs = [
- "include",
-
- # For our build configuration includes.
- "//build/secondary/third_party/llvm/include",
- ]
-}
diff --git a/secondary/third_party/llvm/README.md b/secondary/third_party/llvm/README.md
deleted file mode 100644
index 3f75e71..0000000
--- a/secondary/third_party/llvm/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# LLVM build configuration.
-
-This is not complete, it has only the portions of the build files that are
-required.
-
-Some headers are generated by CMake at configuration time. Our versions of
-these are checked into include/.
diff --git a/secondary/third_party/llvm/include/llvm/Config/AsmParsers.def b/secondary/third_party/llvm/include/llvm/Config/AsmParsers.def
deleted file mode 100644
index a8d663b..0000000
--- a/secondary/third_party/llvm/include/llvm/Config/AsmParsers.def
+++ /dev/null
@@ -1,31 +0,0 @@
-/*===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file enumerates all of the assembly-language parsers *|
-|* supported by this build of LLVM. Clients of this file should define *|
-|* the LLVM_ASM_PARSER macro to be a function-like macro with a *|
-|* single parameter (the name of the target whose assembly can be *|
-|* generated); including this file will then enumerate all of the *|
-|* targets with assembly parsers. *|
-|* *|
-|* The set of targets supported by LLVM is generated at configuration *|
-|* time, at which point this header is generated. Do not modify this *|
-|* header directly. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_ASM_PARSER
-# error Please define the macro LLVM_ASM_PARSER(TargetName)
-#endif
-
-LLVM_ASM_PARSER(AArch64)
-LLVM_ASM_PARSER(X86)
-
-
-#undef LLVM_ASM_PARSER
diff --git a/secondary/third_party/llvm/include/llvm/Config/AsmPrinters.def b/secondary/third_party/llvm/include/llvm/Config/AsmPrinters.def
deleted file mode 100644
index f1fa0ab..0000000
--- a/secondary/third_party/llvm/include/llvm/Config/AsmPrinters.def
+++ /dev/null
@@ -1,31 +0,0 @@
-/*===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file enumerates all of the assembly-language printers *|
-|* supported by this build of LLVM. Clients of this file should define *|
-|* the LLVM_ASM_PRINTER macro to be a function-like macro with a *|
-|* single parameter (the name of the target whose assembly can be *|
-|* generated); including this file will then enumerate all of the *|
-|* targets with assembly printers. *|
-|* *|
-|* The set of targets supported by LLVM is generated at configuration *|
-|* time, at which point this header is generated. Do not modify this *|
-|* header directly. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_ASM_PRINTER
-# error Please define the macro LLVM_ASM_PRINTER(TargetName)
-#endif
-
-LLVM_ASM_PRINTER(AArch64)
-LLVM_ASM_PRINTER(X86)
-
-
-#undef LLVM_ASM_PRINTER
diff --git a/secondary/third_party/llvm/include/llvm/Config/Disassemblers.def b/secondary/third_party/llvm/include/llvm/Config/Disassemblers.def
deleted file mode 100644
index 576c284..0000000
--- a/secondary/third_party/llvm/include/llvm/Config/Disassemblers.def
+++ /dev/null
@@ -1,31 +0,0 @@
-/*===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file enumerates all of the assembly-language parsers *|
-|* supported by this build of LLVM. Clients of this file should define *|
-|* the LLVM_DISASSEMBLER macro to be a function-like macro with a *|
-|* single parameter (the name of the target whose assembly can be *|
-|* generated); including this file will then enumerate all of the *|
-|* targets with assembly parsers. *|
-|* *|
-|* The set of targets supported by LLVM is generated at configuration *|
-|* time, at which point this header is generated. Do not modify this *|
-|* header directly. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_DISASSEMBLER
-# error Please define the macro LLVM_DISASSEMBLER(TargetName)
-#endif
-
-LLVM_DISASSEMBLER(AArch64)
-LLVM_DISASSEMBLER(X86)
-
-
-#undef LLVM_DISASSEMBLER
diff --git a/secondary/third_party/llvm/include/llvm/Config/Targets.def b/secondary/third_party/llvm/include/llvm/Config/Targets.def
deleted file mode 100644
index 16983ee..0000000
--- a/secondary/third_party/llvm/include/llvm/Config/Targets.def
+++ /dev/null
@@ -1,30 +0,0 @@
-/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file enumerates all of the target architectures supported by *|
-|* this build of LLVM. Clients of this file should define the *|
-|* LLVM_TARGET macro to be a function-like macro with a single *|
-|* parameter (the name of the target); including this file will then *|
-|* enumerate all of the targets. *|
-|* *|
-|* The set of targets supported by LLVM is generated at configuration *|
-|* time, at which point this header is generated. Do not modify this *|
-|* header directly. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_TARGET
-# error Please define the macro LLVM_TARGET(TargetName)
-#endif
-
-LLVM_TARGET(AArch64)
-LLVM_TARGET(X86)
-
-
-#undef LLVM_TARGET
diff --git a/secondary/third_party/llvm/include/llvm/Config/abi-breaking.h b/secondary/third_party/llvm/include/llvm/Config/abi-breaking.h
deleted file mode 100644
index 730d9f0..0000000
--- a/secondary/third_party/llvm/include/llvm/Config/abi-breaking.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*===------- llvm/Config/abi-breaking.h - llvm configuration -------*- C -*-===*/
-/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
-/* */
-/*===----------------------------------------------------------------------===*/
-
-/* This file controls the C++ ABI break introduced in LLVM public header. */
-
-#ifndef LLVM_ABI_BREAKING_CHECKS_H
-#define LLVM_ABI_BREAKING_CHECKS_H
-
-/* Define to enable checks that alter the LLVM C++ ABI */
-#define LLVM_ENABLE_ABI_BREAKING_CHECKS 1
-
-/* Define to enable reverse iteration of unordered llvm containers */
-#define LLVM_ENABLE_REVERSE_ITERATION 0
-
-/* Allow selectively disabling link-time mismatch checking so that header-only
- ADT content from LLVM can be used without linking libSupport. */
-#if !LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING
-
-// ABI_BREAKING_CHECKS protection: provides link-time failure when clients build
-// mismatch with LLVM
-#if defined(_MSC_VER)
-// Use pragma with MSVC
-#define LLVM_XSTR(s) LLVM_STR(s)
-#define LLVM_STR(s) #s
-#pragma detect_mismatch("LLVM_ENABLE_ABI_BREAKING_CHECKS", LLVM_XSTR(LLVM_ENABLE_ABI_BREAKING_CHECKS))
-#undef LLVM_XSTR
-#undef LLVM_STR
-#elif defined(_WIN32) || defined(__CYGWIN__) // Win32 w/o #pragma detect_mismatch
-// FIXME: Implement checks without weak.
-#elif defined(__cplusplus)
-namespace llvm {
-#if LLVM_ENABLE_ABI_BREAKING_CHECKS
-extern int EnableABIBreakingChecks;
-__attribute__((weak, visibility ("hidden"))) int *VerifyEnableABIBreakingChecks = &EnableABIBreakingChecks;
-#else
-extern int DisableABIBreakingChecks;
-__attribute__((weak, visibility ("hidden"))) int *VerifyDisableABIBreakingChecks = &DisableABIBreakingChecks;
-#endif
-}
-#endif // _MSC_VER
-
-#endif // LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING
-
-#endif
diff --git a/secondary/third_party/llvm/include/llvm/Config/config.h b/secondary/third_party/llvm/include/llvm/Config/config.h
deleted file mode 100644
index f439bc0..0000000
--- a/secondary/third_party/llvm/include/llvm/Config/config.h
+++ /dev/null
@@ -1,408 +0,0 @@
-#ifndef CONFIG_H
-#define CONFIG_H
-
-/* Exported configuration */
-#include "llvm/Config/llvm-config.h"
-
-/* Bug report URL. */
-#define BUG_REPORT_URL "https://bugs.llvm.org/"
-
-/* Define to 1 to enable backtraces, and to 0 otherwise. */
-#define ENABLE_BACKTRACES 1
-
-/* Define to 1 to enable crash overrides, and to 0 otherwise. */
-#define ENABLE_CRASH_OVERRIDES 1
-
-/* Define to 1 if you have the `backtrace' function. */
-#if !defined(__Fuchsia__)
-#define HAVE_BACKTRACE TRUE
-#endif
-
-#define BACKTRACE_HEADER <execinfo.h>
-
-/* Define to 1 if you have the <CrashReporterClient.h> header file. */
-/* #undef HAVE_CRASHREPORTERCLIENT_H */
-
-/* can use __crashreporter_info__ */
-#define HAVE_CRASHREPORTER_INFO 0
-
-/* Define to 1 if you have the declaration of `arc4random', and to 0 if you
- don't. */
-#define HAVE_DECL_ARC4RANDOM 0
-
-/* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
- don't. */
-#define HAVE_DECL_FE_ALL_EXCEPT 1
-
-/* Define to 1 if you have the declaration of `FE_INEXACT', and to 0 if you
- don't. */
-#define HAVE_DECL_FE_INEXACT 1
-
-/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
- don't. */
-#define HAVE_DECL_STRERROR_S 0
-
-/* Define to 1 if you have the DIA SDK installed, and to 0 if you don't. */
-#define LLVM_ENABLE_DIA_SDK 0
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define if dlopen() is available on this platform. */
-#define HAVE_DLOPEN 1
-
-/* Define if dladdr() is available on this platform. */
-/* #undef HAVE_DLADDR */
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the <fenv.h> header file. */
-#define HAVE_FENV_H 1
-
-/* Define if libffi is available on this platform. */
-/* #undef HAVE_FFI_CALL */
-
-/* Define to 1 if you have the <ffi/ffi.h> header file. */
-/* #undef HAVE_FFI_FFI_H */
-
-/* Define to 1 if you have the <ffi.h> header file. */
-/* #undef HAVE_FFI_H */
-
-/* Define to 1 if you have the `futimens' function. */
-#define HAVE_FUTIMENS 1
-
-/* Define to 1 if you have the `futimes' function. */
-#define HAVE_FUTIMES 1
-
-/* Define to 1 if you have the `getpagesize' function. */
-#define HAVE_GETPAGESIZE 1
-
-/* Define to 1 if you have the `getrlimit' function. */
-#if !defined(__Fuchsia__)
-#define HAVE_GETRLIMIT 1
-#endif
-
-/* Define to 1 if you have the `getrusage' function. */
-#if !defined(__Fuchsia__)
-#define HAVE_GETRUSAGE 1
-#endif
-
-/* Define to 1 if you have the `isatty' function. */
-#define HAVE_ISATTY 1
-
-/* Define to 1 if you have the `edit' library (-ledit). */
-/* #undef HAVE_LIBEDIT */
-
-/* Define to 1 if you have the `pfm' library (-lpfm). */
-/* #undef HAVE_LIBPFM */
-
-/* Define to 1 if you have the `psapi' library (-lpsapi). */
-/* #undef HAVE_LIBPSAPI */
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#define HAVE_LIBPTHREAD 1
-
-/* Define to 1 if you have the `pthread_getname_np' function. */
-#define HAVE_PTHREAD_GETNAME_NP 1
-
-/* Define to 1 if you have the `pthread_setname_np' function. */
-#define HAVE_PTHREAD_SETNAME_NP 1
-
-/* Define to 1 if you have the `z' library (-lz). */
-#define HAVE_LIBZ 1
-
-/* Define to 1 if you have the <link.h> header file. */
-#if defined(__linux__)
-#define HAVE_LINK_H 1
-#endif
-
-/* Define to 1 if you have the `lseek64' function. */
-#if defined(__linux__)
-#define HAVE_LSEEK64 1
-#endif
-
-/* Define to 1 if you have the <mach/mach.h> header file. */
-#if defined(__APPLE__)
-#define HAVE_MACH_MACH_H 1
-#endif
-
-/* Define to 1 if you have the `mallctl' function. */
-/* #undef HAVE_MALLCTL */
-
-/* Define to 1 if you have the `mallinfo' function. */
-#if defined(__linux__)
-#define HAVE_MALLINFO 1
-#endif
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#if defined(__linux__)
-#define HAVE_MALLOC_H 1
-#endif
-
-/* Define to 1 if you have the <malloc/malloc.h> header file. */
-/* #undef HAVE_MALLOC_MALLOC_H */
-
-/* Define to 1 if you have the `malloc_zone_statistics' function. */
-/* #undef HAVE_MALLOC_ZONE_STATISTICS */
-
-/* Define to 1 if you have the `posix_fallocate' function. */
-#if defined(__linux__)
-#define HAVE_POSIX_FALLOCATE 1
-#endif
-
-/* Define to 1 if you have the `posix_spawn' function. */
-#define HAVE_POSIX_SPAWN 1
-
-/* Define to 1 if you have the `pread' function. */
-#define HAVE_PREAD 1
-
-/* Have pthread_getspecific */
-#define HAVE_PTHREAD_GETSPECIFIC 1
-
-/* Define to 1 if you have the <pthread.h> header file. */
-#define HAVE_PTHREAD_H 1
-
-/* Have pthread_mutex_lock */
-#define HAVE_PTHREAD_MUTEX_LOCK 1
-
-/* Have pthread_rwlock_init */
-#define HAVE_PTHREAD_RWLOCK_INIT 1
-
-/* Define to 1 if you have the `realpath' function. */
-#define HAVE_REALPATH 1
-
-/* Define to 1 if you have the `sbrk' function. */
-#if !defined(__Fuchsia__)
-#define HAVE_SBRK 1
-#endif
-
-/* Define to 1 if you have the `setenv' function. */
-#define HAVE_SETENV 1
-
-/* Define to 1 if you have the `sched_getaffinity' function. */
-#if defined(__linux__)
-#define HAVE_SCHED_GETAFFINITY 1
-#endif
-
-/* Define to 1 if you have the `CPU_COUNT' macro. */
-#define HAVE_CPU_COUNT 1
-
-/* Define to 1 if you have the `setrlimit' function. */
-#if !defined(__Fuchsia__)
-#define HAVE_SETRLIMIT 1
-#endif
-
-/* Define to 1 if you have the `sigaltstack' function. */
-#define HAVE_SIGALTSTACK 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the `strerror_r' function. */
-#define HAVE_STRERROR_R 1
-
-/* Define to 1 if you have the `sysconf' function. */
-#define HAVE_SYSCONF 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/mman.h> header file. */
-#define HAVE_SYS_MMAN_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#if !defined(__Fuchsia__)
-#define HAVE_SYS_RESOURCE_H 1
-#endif
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define if the setupterm() function is supported this platform. */
-/*#if !defined(__Fuchsia__)
-#define HAVE_TERMINFO 1
-#endif*/
-
-/* Define if the xar_open() function is supported this platform. */
-/* #undef HAVE_LIBXAR */
-
-/* Define to 1 if you have the <termios.h> header file. */
-#define HAVE_TERMIOS_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
-/* #undef HAVE_VALGRIND_VALGRIND_H */
-
-/* Define to 1 if you have the <zlib.h> header file. */
-#define HAVE_ZLIB_H 1
-
-/* Have host's _alloca */
-/* #undef HAVE__ALLOCA */
-
-/* Define to 1 if you have the `_chsize_s' function. */
-/* #undef HAVE__CHSIZE_S */
-
-/* Define to 1 if you have the `_Unwind_Backtrace' function. */
-#define HAVE__UNWIND_BACKTRACE 1
-
-/* Have host's __alloca */
-/* #undef HAVE___ALLOCA */
-
-/* Have host's __ashldi3 */
-/* #undef HAVE___ASHLDI3 */
-
-/* Have host's __ashrdi3 */
-/* #undef HAVE___ASHRDI3 */
-
-/* Have host's __chkstk */
-/* #undef HAVE___CHKSTK */
-
-/* Have host's __chkstk_ms */
-/* #undef HAVE___CHKSTK_MS */
-
-/* Have host's __cmpdi2 */
-/* #undef HAVE___CMPDI2 */
-
-/* Have host's __divdi3 */
-/* #undef HAVE___DIVDI3 */
-
-/* Have host's __fixdfdi */
-/* #undef HAVE___FIXDFDI */
-
-/* Have host's __fixsfdi */
-/* #undef HAVE___FIXSFDI */
-
-/* Have host's __floatdidf */
-/* #undef HAVE___FLOATDIDF */
-
-/* Have host's __lshrdi3 */
-/* #undef HAVE___LSHRDI3 */
-
-/* Have host's __main */
-/* #undef HAVE___MAIN */
-
-/* Have host's __moddi3 */
-/* #undef HAVE___MODDI3 */
-
-/* Have host's __udivdi3 */
-/* #undef HAVE___UDIVDI3 */
-
-/* Have host's __umoddi3 */
-/* #undef HAVE___UMODDI3 */
-
-/* Have host's ___chkstk */
-/* #undef HAVE____CHKSTK */
-
-/* Have host's ___chkstk_ms */
-/* #undef HAVE____CHKSTK_MS */
-
-/* Linker version detected at compile time. */
-/* #undef HOST_LINK_VERSION */
-
-/* Define if we link Polly to the tools */
-/* #undef LINK_POLLY_INTO_TOOLS */
-
-/* Target triple LLVM will generate code for by default */
-/* Doesn't use `cmakedefine` because it is allowed to be empty. */
-#define LLVM_DEFAULT_TARGET_TRIPLE "x86_64-unknown-linux-gnu"
-
-/* Define if threads enabled */
-#define LLVM_ENABLE_THREADS 1
-
-/* Define if zlib compression is available */
-#define LLVM_ENABLE_ZLIB 1
-
-/* Has gcc/MSVC atomic intrinsics */
-#define LLVM_HAS_ATOMICS 1
-
-/* Host triple LLVM will be executed on */
-#define LLVM_HOST_TRIPLE "x86_64-unknown-linux-gnu"
-
-/* Define if this is Unixish platform */
-#define LLVM_ON_UNIX 1
-
-/* Define if this is Win32ish platform */
-/* #undef LLVM_ON_WIN32 */
-
-/* Define if overriding target triple is enabled */
-/* #undef LLVM_TARGET_TRIPLE_ENV */
-
-/* Define if we have the Intel JIT API runtime support library */
-#define LLVM_USE_INTEL_JITEVENTS 0
-
-/* Define if we have the oprofile JIT-support library */
-#define LLVM_USE_OPROFILE 0
-
-/* LLVM version information */
-/* #undef LLVM_VERSION_INFO */
-
-/* Whether tools show host and target info when invoked with --version */
-#define LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO 1
-
-/* Major version of the LLVM API */
-#define LLVM_VERSION_MAJOR 7
-
-/* Minor version of the LLVM API */
-#define LLVM_VERSION_MINOR 0
-
-/* Patch version of the LLVM API */
-#define LLVM_VERSION_PATCH 0
-
-/* LLVM version string */
-#define LLVM_VERSION_STRING "7.0.0svn"
-
-/* Define if libxml2 is supported on this platform. */
-#define LLVM_LIBXML2_ENABLED 1
-
-/* Define to the extension used for shared libraries, say, ".so". */
-#define LTDL_SHLIB_EXT ".so"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "https://bugs.llvm.org/"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "LLVM"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "LLVM 7.0.0svn"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "7.0.0svn"
-
-/* Define to the vendor of this package. */
-/* #undef PACKAGE_VENDOR */
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* Define to a function implementing stricmp */
-/* #undef stricmp */
-
-/* Define to a function implementing strdup */
-/* #undef strdup */
-
-/* Whether GlobalISel rule coverage is being collected */
-#define LLVM_GISEL_COV_ENABLED 0
-
-/* Define to the default GlobalISel coverage file prefix */
-/* #undef LLVM_GISEL_COV_PREFIX */
-
-#endif
diff --git a/secondary/third_party/llvm/include/llvm/Config/llvm-config.h b/secondary/third_party/llvm/include/llvm/Config/llvm-config.h
deleted file mode 100644
index 53ad892..0000000
--- a/secondary/third_party/llvm/include/llvm/Config/llvm-config.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*===------- llvm/Config/llvm-config.h - llvm configuration -------*- C -*-===*/
-/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
-/* */
-/*===----------------------------------------------------------------------===*/
-
-/* This file enumerates variables from the LLVM configuration so that they
- can be in exported headers and won't override package specific directives.
- This is a C header that can be included in the llvm-c headers. */
-
-#ifndef LLVM_CONFIG_H
-#define LLVM_CONFIG_H
-
-/* Define if LLVM_ENABLE_DUMP is enabled */
-/* #undef LLVM_ENABLE_DUMP */
-
-/* Define if we link Polly to the tools */
-/* #undef LINK_POLLY_INTO_TOOLS */
-
-/* Target triple LLVM will generate code for by default */
-#define LLVM_DEFAULT_TARGET_TRIPLE "x86_64-unknown-linux-gnu"
-
-/* Define if threads enabled */
-#define LLVM_ENABLE_THREADS 1
-
-/* Has gcc/MSVC atomic intrinsics */
-#define LLVM_HAS_ATOMICS 1
-
-/* Host triple LLVM will be executed on */
-#define LLVM_HOST_TRIPLE "x86_64-unknown-linux-gnu"
-
-/* LLVM architecture name for the native architecture, if available */
-#define LLVM_NATIVE_ARCH X86
-
-/* LLVM name for the native AsmParser init function, if available */
-#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser
-
-/* LLVM name for the native AsmPrinter init function, if available */
-#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter
-
-/* LLVM name for the native Disassembler init function, if available */
-#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler
-
-/* LLVM name for the native Target init function, if available */
-#define LLVM_NATIVE_TARGET LLVMInitializeX86Target
-
-/* LLVM name for the native TargetInfo init function, if available */
-#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo
-
-/* LLVM name for the native target MC init function, if available */
-#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC
-
-/* Define if this is Unixish platform */
-#define LLVM_ON_UNIX 1
-
-/* Define if this is Win32ish platform */
-/* #undef LLVM_ON_WIN32 */
-
-/* Define if we have the Intel JIT API runtime support library */
-#define LLVM_USE_INTEL_JITEVENTS 0
-
-/* Define if we have the oprofile JIT-support library */
-#define LLVM_USE_OPROFILE 0
-
-/* Major version of the LLVM API */
-#define LLVM_VERSION_MAJOR 7
-
-/* Minor version of the LLVM API */
-#define LLVM_VERSION_MINOR 0
-
-/* Patch version of the LLVM API */
-#define LLVM_VERSION_PATCH 0
-
-/* LLVM version string */
-#define LLVM_VERSION_STRING "7.0.0svn"
-
-/* Whether LLVM records statistics for use with GetStatistics(),
- * PrintStatistics() or PrintStatisticsJSON()
- */
-#define LLVM_FORCE_ENABLE_STATS 0
-
-#endif
diff --git a/secondary/third_party/llvm/include/llvm/Support/VCSRevision.h b/secondary/third_party/llvm/include/llvm/Support/VCSRevision.h
deleted file mode 100644
index 04cf109..0000000
--- a/secondary/third_party/llvm/include/llvm/Support/VCSRevision.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* When compiling in-LLVM tree, this file is populated by a revisioin from SVN
- * that is defined as LLVM_REVISION. To support non-SVN cases, the code is
- * designed to work if this value is not defined, as long as this file exists.
- */
-#undef LLVM_REVISION
diff --git a/secondary/third_party/llvm/lib/BinaryFormat/BUILD.gn b/secondary/third_party/llvm/lib/BinaryFormat/BUILD.gn
deleted file mode 100644
index 814f8e5..0000000
--- a/secondary/third_party/llvm/lib/BinaryFormat/BUILD.gn
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2018 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.
-
-static_library("BinaryFormat") {
- sources = [
- "Dwarf.cpp",
- "Magic.cpp",
- ]
-
- public_deps = [
- "../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Bitcode/BUILD.gn b/secondary/third_party/llvm/lib/Bitcode/BUILD.gn
deleted file mode 100644
index 50df892..0000000
--- a/secondary/third_party/llvm/lib/Bitcode/BUILD.gn
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright 2018 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.
-
-group("Bitcode") {
- public_deps = [
- "Reader",
- "Writer",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Bitcode/Reader/BUILD.gn b/secondary/third_party/llvm/lib/Bitcode/Reader/BUILD.gn
deleted file mode 100644
index f3f781c..0000000
--- a/secondary/third_party/llvm/lib/Bitcode/Reader/BUILD.gn
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2018 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.
-
-static_library("Reader") {
- sources = [
- "BitReader.cpp",
- "BitcodeReader.cpp",
- "BitstreamReader.cpp",
- "MetadataLoader.cpp",
- "ValueList.cpp",
- ]
-
- deps = [
- "../../IR",
- "../../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Bitcode/Writer/BUILD.gn b/secondary/third_party/llvm/lib/Bitcode/Writer/BUILD.gn
deleted file mode 100644
index 758d165..0000000
--- a/secondary/third_party/llvm/lib/Bitcode/Writer/BUILD.gn
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2018 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.
-
-static_library("Writer") {
- sources = [
- "BitWriter.cpp",
- "BitcodeWriter.cpp",
- "BitcodeWriterPass.cpp",
- "ValueEnumerator.cpp",
- ]
-
- deps = [
- "../../IR",
- "../../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/DebugInfo/BUILD.gn b/secondary/third_party/llvm/lib/DebugInfo/BUILD.gn
deleted file mode 100644
index 31e7321..0000000
--- a/secondary/third_party/llvm/lib/DebugInfo/BUILD.gn
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright 2018 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.
-
-static_library("DebugInfo") {
- sources = [
- "CodeView/AppendingTypeTableBuilder.cpp",
- "CodeView/CVSymbolVisitor.cpp",
- "CodeView/CVTypeVisitor.cpp",
- "CodeView/CodeViewError.cpp",
- "CodeView/CodeViewRecordIO.cpp",
- "CodeView/ContinuationRecordBuilder.cpp",
- "CodeView/DebugChecksumsSubsection.cpp",
- "CodeView/DebugCrossExSubsection.cpp",
- "CodeView/DebugCrossImpSubsection.cpp",
- "CodeView/DebugFrameDataSubsection.cpp",
- "CodeView/DebugInlineeLinesSubsection.cpp",
- "CodeView/DebugLinesSubsection.cpp",
- "CodeView/DebugStringTableSubsection.cpp",
- "CodeView/DebugSubsection.cpp",
- "CodeView/DebugSubsectionRecord.cpp",
- "CodeView/DebugSubsectionVisitor.cpp",
- "CodeView/DebugSymbolRVASubsection.cpp",
- "CodeView/DebugSymbolsSubsection.cpp",
- "CodeView/EnumTables.cpp",
- "CodeView/Formatters.cpp",
- "CodeView/GlobalTypeTableBuilder.cpp",
- "CodeView/LazyRandomTypeCollection.cpp",
- "CodeView/Line.cpp",
- "CodeView/MergingTypeTableBuilder.cpp",
- "CodeView/RecordName.cpp",
- "CodeView/RecordSerialization.cpp",
- "CodeView/SimpleTypeSerializer.cpp",
- "CodeView/StringsAndChecksums.cpp",
- "CodeView/SymbolDumper.cpp",
- "CodeView/SymbolRecordMapping.cpp",
- "CodeView/SymbolSerializer.cpp",
- "CodeView/TypeDumpVisitor.cpp",
- "CodeView/TypeHashing.cpp",
- "CodeView/TypeIndex.cpp",
- "CodeView/TypeIndexDiscovery.cpp",
- "CodeView/TypeRecordMapping.cpp",
- "CodeView/TypeStreamMerger.cpp",
- "CodeView/TypeTableCollection.cpp",
- "DWARF/DWARFAbbreviationDeclaration.cpp",
- "DWARF/DWARFAcceleratorTable.cpp",
- "DWARF/DWARFAddressRange.cpp",
- "DWARF/DWARFCompileUnit.cpp",
- "DWARF/DWARFContext.cpp",
- "DWARF/DWARFDataExtractor.cpp",
- "DWARF/DWARFDebugAbbrev.cpp",
- "DWARF/DWARFDebugArangeSet.cpp",
- "DWARF/DWARFDebugAranges.cpp",
- "DWARF/DWARFDebugFrame.cpp",
- "DWARF/DWARFDebugInfoEntry.cpp",
- "DWARF/DWARFDebugLine.cpp",
- "DWARF/DWARFDebugLoc.cpp",
- "DWARF/DWARFDebugMacro.cpp",
- "DWARF/DWARFDebugPubTable.cpp",
- "DWARF/DWARFDebugRangeList.cpp",
- "DWARF/DWARFDebugRnglists.cpp",
- "DWARF/DWARFDie.cpp",
- "DWARF/DWARFExpression.cpp",
- "DWARF/DWARFFormValue.cpp",
- "DWARF/DWARFGdbIndex.cpp",
- "DWARF/DWARFTypeUnit.cpp",
- "DWARF/DWARFUnit.cpp",
- "DWARF/DWARFUnitIndex.cpp",
- "DWARF/DWARFVerifier.cpp",
- "MSF/MSFBuilder.cpp",
- "MSF/MSFCommon.cpp",
- "MSF/MSFError.cpp",
- "MSF/MappedBlockStream.cpp",
- "PDB/GenericError.cpp",
- "PDB/IPDBSourceFile.cpp",
- "PDB/Native/DbiModuleDescriptor.cpp",
- "PDB/Native/DbiModuleDescriptorBuilder.cpp",
- "PDB/Native/DbiModuleList.cpp",
- "PDB/Native/DbiStream.cpp",
- "PDB/Native/DbiStreamBuilder.cpp",
- "PDB/Native/EnumTables.cpp",
- "PDB/Native/GSIStreamBuilder.cpp",
- "PDB/Native/GlobalsStream.cpp",
- "PDB/Native/Hash.cpp",
- "PDB/Native/HashTable.cpp",
- "PDB/Native/InfoStream.cpp",
- "PDB/Native/InfoStreamBuilder.cpp",
- "PDB/Native/ModuleDebugStream.cpp",
- "PDB/Native/NamedStreamMap.cpp",
- "PDB/Native/NativeBuiltinSymbol.cpp",
- "PDB/Native/NativeCompilandSymbol.cpp",
- "PDB/Native/NativeEnumModules.cpp",
- "PDB/Native/NativeEnumSymbol.cpp",
- "PDB/Native/NativeEnumTypes.cpp",
- "PDB/Native/NativeExeSymbol.cpp",
- "PDB/Native/NativeRawSymbol.cpp",
- "PDB/Native/NativeSession.cpp",
- "PDB/Native/PDBFile.cpp",
- "PDB/Native/PDBFileBuilder.cpp",
- "PDB/Native/PDBStringTable.cpp",
- "PDB/Native/PDBStringTableBuilder.cpp",
- "PDB/Native/PublicsStream.cpp",
- "PDB/Native/RawError.cpp",
- "PDB/Native/SymbolStream.cpp",
- "PDB/Native/TpiHashing.cpp",
- "PDB/Native/TpiStream.cpp",
- "PDB/Native/TpiStreamBuilder.cpp",
- "PDB/PDB.cpp",
- "PDB/PDBContext.cpp",
- "PDB/PDBExtras.cpp",
- "PDB/PDBInterfaceAnchors.cpp",
- "PDB/PDBSymDumper.cpp",
- "PDB/PDBSymbol.cpp",
- "PDB/PDBSymbolAnnotation.cpp",
- "PDB/PDBSymbolBlock.cpp",
- "PDB/PDBSymbolCompiland.cpp",
- "PDB/PDBSymbolCompilandDetails.cpp",
- "PDB/PDBSymbolCompilandEnv.cpp",
- "PDB/PDBSymbolCustom.cpp",
- "PDB/PDBSymbolData.cpp",
- "PDB/PDBSymbolExe.cpp",
- "PDB/PDBSymbolFunc.cpp",
- "PDB/PDBSymbolFuncDebugEnd.cpp",
- "PDB/PDBSymbolFuncDebugStart.cpp",
- "PDB/PDBSymbolLabel.cpp",
- "PDB/PDBSymbolPublicSymbol.cpp",
- "PDB/PDBSymbolThunk.cpp",
- "PDB/PDBSymbolTypeArray.cpp",
- "PDB/PDBSymbolTypeBaseClass.cpp",
- "PDB/PDBSymbolTypeBuiltin.cpp",
- "PDB/PDBSymbolTypeCustom.cpp",
- "PDB/PDBSymbolTypeDimension.cpp",
- "PDB/PDBSymbolTypeEnum.cpp",
- "PDB/PDBSymbolTypeFriend.cpp",
-
- #"PDB/DIA/DIAEnumLineNumbers.cpp",
- #"PDB/DIA/DIASectionContrib.cpp",
- #"PDB/DIA/DIAEnumDebugStreams.cpp",
- #"PDB/DIA/DIARawSymbol.cpp",
- #"PDB/DIA/DIAEnumTables.cpp",
- #"PDB/DIA/DIAEnumSourceFiles.cpp",
- #"PDB/DIA/DIAEnumSectionContribs.cpp",
- #"PDB/DIA/DIASourceFile.cpp",
- #"PDB/DIA/DIASession.cpp",
- #"PDB/DIA/DIATable.cpp",
- #"PDB/DIA/DIAEnumSymbols.cpp",
- #"PDB/DIA/DIAInjectedSource.cpp",
- #"PDB/DIA/DIALineNumber.cpp",
- #"PDB/DIA/DIAError.cpp",
- #"PDB/DIA/DIADataStream.cpp",
- #"PDB/DIA/DIAEnumInjectedSources.cpp",
- "PDB/PDBSymbolTypeFunctionArg.cpp",
- "PDB/PDBSymbolTypeFunctionSig.cpp",
- "PDB/PDBSymbolTypeManaged.cpp",
- "PDB/PDBSymbolTypePointer.cpp",
- "PDB/PDBSymbolTypeTypedef.cpp",
- "PDB/PDBSymbolTypeUDT.cpp",
- "PDB/PDBSymbolTypeVTable.cpp",
- "PDB/PDBSymbolTypeVTableShape.cpp",
- "PDB/PDBSymbolUnknown.cpp",
- "PDB/PDBSymbolUsingNamespace.cpp",
- "PDB/UDTLayout.cpp",
- "Symbolize/DIPrinter.cpp",
- "Symbolize/SymbolizableObjectFile.cpp",
- "Symbolize/Symbolize.cpp",
- ]
-
- public_deps = [
- "../Demangle",
- "../Object",
- "../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Demangle/BUILD.gn b/secondary/third_party/llvm/lib/Demangle/BUILD.gn
deleted file mode 100644
index 636d361..0000000
--- a/secondary/third_party/llvm/lib/Demangle/BUILD.gn
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2018 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.
-
-static_library("Demangle") {
- sources = [
- "ItaniumDemangle.cpp",
- ]
-
- deps = [
- "../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/IR/BUILD.gn b/secondary/third_party/llvm/lib/IR/BUILD.gn
deleted file mode 100644
index 88ee64b..0000000
--- a/secondary/third_party/llvm/lib/IR/BUILD.gn
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright 2018 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.
-
-import("../../utils/TableGen/tablegen.gni")
-
-tablegen("attributes") {
- source = "../../include/llvm/IR/Attributes.td"
- output = "$target_gen_dir/llvm/IR/Attributes.gen"
- args = [ "-gen-attrs" ]
-}
-
-tablegen("attributes_compat_func") {
- source = "AttributesCompatFunc.td"
- output = "$target_gen_dir/AttributesCompatFunc.inc"
- args = [ "-gen-attrs" ]
-}
-
-tablegen("intrinsics") {
- source = "../../include/llvm/IR/Intrinsics.td"
- output = "$target_gen_dir/llvm/IR/Intrinsics.gen"
- args = [ "-gen-intrinsic" ]
-}
-
-config("includes") {
- include_dirs = [ target_gen_dir ]
-}
-
-static_library("IR") {
- sources = [
- "AsmWriter.cpp",
- "Attributes.cpp",
- "AutoUpgrade.cpp",
- "BasicBlock.cpp",
- "Comdat.cpp",
- "ConstantFold.cpp",
- "ConstantRange.cpp",
- "Constants.cpp",
- "Core.cpp",
- "DIBuilder.cpp",
- "DataLayout.cpp",
- "DebugInfo.cpp",
- "DebugInfoMetadata.cpp",
- "DebugLoc.cpp",
- "DiagnosticHandler.cpp",
- "DiagnosticInfo.cpp",
- "DiagnosticPrinter.cpp",
- "Dominators.cpp",
- "Function.cpp",
- "GVMaterializer.cpp",
- "Globals.cpp",
- "IRBuilder.cpp",
- "IRPrintingPasses.cpp",
- "InlineAsm.cpp",
- "Instruction.cpp",
- "Instructions.cpp",
- "IntrinsicInst.cpp",
- "LLVMContext.cpp",
- "LLVMContextImpl.cpp",
- "LegacyPassManager.cpp",
- "MDBuilder.cpp",
- "Mangler.cpp",
- "Metadata.cpp",
- "Module.cpp",
- "ModuleSummaryIndex.cpp",
- "Operator.cpp",
- "OptBisect.cpp",
- "Pass.cpp",
- "PassManager.cpp",
- "PassRegistry.cpp",
- "ProfileSummary.cpp",
- "SafepointIRVerifier.cpp",
- "Statepoint.cpp",
- "Type.cpp",
- "TypeFinder.cpp",
- "Use.cpp",
- "User.cpp",
- "Value.cpp",
- "ValueSymbolTable.cpp",
- "Verifier.cpp",
- ]
-
- public_configs = [ ":includes" ]
-
- public_deps = [
- ":attributes",
- ":attributes_compat_func",
- ":intrinsics",
- "../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/MC/BUILD.gn b/secondary/third_party/llvm/lib/MC/BUILD.gn
deleted file mode 100644
index 121406f..0000000
--- a/secondary/third_party/llvm/lib/MC/BUILD.gn
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2018 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.
-
-# LLVM Machine Code library.
-static_library("MC") {
- sources = [
- "ConstantPools.cpp",
- "ELFObjectWriter.cpp",
- "LLVMBuild.txt",
- "MCAsmBackend.cpp",
- "MCAsmInfo.cpp",
- "MCAsmInfoCOFF.cpp",
- "MCAsmInfoDarwin.cpp",
- "MCAsmInfoELF.cpp",
- "MCAsmInfoWasm.cpp",
- "MCAsmMacro.cpp",
- "MCAsmStreamer.cpp",
- "MCAssembler.cpp",
- "MCCodeEmitter.cpp",
- "MCCodePadder.cpp",
- "MCCodeView.cpp",
- "MCContext.cpp",
- "MCDwarf.cpp",
- "MCELFObjectTargetWriter.cpp",
- "MCELFStreamer.cpp",
- "MCExpr.cpp",
- "MCFragment.cpp",
- "MCInst.cpp",
- "MCInstPrinter.cpp",
- "MCInstrAnalysis.cpp",
- "MCInstrDesc.cpp",
- "MCLabel.cpp",
- "MCLinkerOptimizationHint.cpp",
- "MCMachOStreamer.cpp",
- "MCMachObjectTargetWriter.cpp",
- "MCNullStreamer.cpp",
- "MCObjectFileInfo.cpp",
- "MCObjectStreamer.cpp",
- "MCObjectWriter.cpp",
- "MCRegisterInfo.cpp",
- "MCSchedule.cpp",
- "MCSection.cpp",
- "MCSectionCOFF.cpp",
- "MCSectionELF.cpp",
- "MCSectionMachO.cpp",
- "MCSectionWasm.cpp",
- "MCStreamer.cpp",
- "MCSubtargetInfo.cpp",
- "MCSymbol.cpp",
- "MCSymbolELF.cpp",
- "MCTargetOptions.cpp",
- "MCValue.cpp",
- "MCWasmObjectTargetWriter.cpp",
- "MCWasmStreamer.cpp",
- "MCWin64EH.cpp",
- "MCWinCOFFStreamer.cpp",
- "MCWinEH.cpp",
- "MachObjectWriter.cpp",
- "StringTableBuilder.cpp",
- "SubtargetFeature.cpp",
- "WasmObjectWriter.cpp",
- "WinCOFFObjectWriter.cpp",
- ]
-
- public_deps = [
- "../BinaryFormat",
- "../DebugInfo",
- "../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/MC/MCDisassembler/BUILD.gn b/secondary/third_party/llvm/lib/MC/MCDisassembler/BUILD.gn
deleted file mode 100644
index cc07bc0..0000000
--- a/secondary/third_party/llvm/lib/MC/MCDisassembler/BUILD.gn
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2018 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.
-
-static_library("MCDisassembler") {
- sources = [
- "Disassembler.cpp",
- "MCDisassembler.cpp",
- "MCExternalSymbolizer.cpp",
- "MCRelocationInfo.cpp",
- "MCSymbolizer.cpp",
- ]
-
- public_deps = [
- "..",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/MC/MCParser/BUILD.gn b/secondary/third_party/llvm/lib/MC/MCParser/BUILD.gn
deleted file mode 100644
index 1ce8cad..0000000
--- a/secondary/third_party/llvm/lib/MC/MCParser/BUILD.gn
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2018 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.
-
-static_library("MCParser") {
- sources = [
- "AsmLexer.cpp",
- "AsmParser.cpp",
- "COFFAsmParser.cpp",
- "DarwinAsmParser.cpp",
- "ELFAsmParser.cpp",
- "MCAsmLexer.cpp",
- "MCAsmParser.cpp",
- "MCAsmParserExtension.cpp",
- "MCTargetAsmParser.cpp",
- ]
-
- deps = [
- "../../BinaryFormat",
- "../../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Object/BUILD.gn b/secondary/third_party/llvm/lib/Object/BUILD.gn
deleted file mode 100644
index 406d4e7..0000000
--- a/secondary/third_party/llvm/lib/Object/BUILD.gn
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2018 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.
-
-static_library("Object") {
- sources = [
- "Archive.cpp",
- "ArchiveWriter.cpp",
- "Binary.cpp",
- "COFFImportFile.cpp",
- "COFFModuleDefinition.cpp",
- "COFFObjectFile.cpp",
- "Decompressor.cpp",
- "ELF.cpp",
- "ELFObjectFile.cpp",
- "Error.cpp",
- "IRObjectFile.cpp",
- "IRSymtab.cpp",
- "MachOObjectFile.cpp",
- "MachOUniversal.cpp",
- "ModuleSymbolTable.cpp",
- "Object.cpp",
- "ObjectFile.cpp",
- "RecordStreamer.cpp",
- "SymbolSize.cpp",
- "SymbolicFile.cpp",
- "WasmObjectFile.cpp",
- "WindowsResource.cpp",
- ]
-
- public_deps = [
- "../Bitcode",
- "../IR",
- "../MC/MCParser",
- "../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Support/BUILD.gn b/secondary/third_party/llvm/lib/Support/BUILD.gn
deleted file mode 100644
index e63d6ec..0000000
--- a/secondary/third_party/llvm/lib/Support/BUILD.gn
+++ /dev/null
@@ -1,130 +0,0 @@
-# Copyright 2018 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.
-
-source_set("Support") {
- sources = [
- "AMDGPUMetadata.cpp",
- "APFloat.cpp",
- "APInt.cpp",
- "APSInt.cpp",
- "ARMAttributeParser.cpp",
- "ARMBuildAttrs.cpp",
- "ARMWinEH.cpp",
- "Allocator.cpp",
- "BinaryStreamError.cpp",
- "BinaryStreamReader.cpp",
- "BinaryStreamRef.cpp",
- "BinaryStreamWriter.cpp",
- "BlockFrequency.cpp",
- "BranchProbability.cpp",
- "COM.cpp",
- "CachePruning.cpp",
- "Chrono.cpp",
- "CodeGenCoverage.cpp",
- "CommandLine.cpp",
- "Compression.cpp",
- "ConvertUTF.cpp",
- "ConvertUTFWrapper.cpp",
- "CrashRecoveryContext.cpp",
- "DAGDeltaAlgorithm.cpp",
- "DJB.cpp",
- "DataExtractor.cpp",
- "Debug.cpp",
- "DebugCounter.cpp",
- "DeltaAlgorithm.cpp",
- "Error.cpp",
- "ErrorHandling.cpp",
- "FileOutputBuffer.cpp",
- "FileUtilities.cpp",
- "FoldingSet.cpp",
- "FormatVariadic.cpp",
- "FormattedStream.cpp",
- "GlobPattern.cpp",
- "GraphWriter.cpp",
- "Hashing.cpp",
- "InitLLVM.cpp",
- "IntEqClasses.cpp",
- "IntervalMap.cpp",
- "JamCRC.cpp",
- "KnownBits.cpp",
- "LEB128.cpp",
- "LineIterator.cpp",
- "Locale.cpp",
- "LockFileManager.cpp",
- "LowLevelType.cpp",
- "MD5.cpp",
- "ManagedStatic.cpp",
- "MathExtras.cpp",
- "MemoryBuffer.cpp",
- "NativeFormatting.cpp",
- "Options.cpp",
- "Parallel.cpp",
- "PluginLoader.cpp",
- "PrettyStackTrace.cpp",
- "RandomNumberGenerator.cpp",
- "Regex.cpp",
- "SHA1.cpp",
- "ScaledNumber.cpp",
- "ScopedPrinter.cpp",
- "SmallPtrSet.cpp",
- "SmallVector.cpp",
- "SourceMgr.cpp",
- "SpecialCaseList.cpp",
- "Statistic.cpp",
- "StringExtras.cpp",
- "StringMap.cpp",
- "StringPool.cpp",
- "StringRef.cpp",
- "StringSaver.cpp",
- "SystemUtils.cpp",
- "TarWriter.cpp",
- "TargetParser.cpp",
- "ThreadPool.cpp",
- "Timer.cpp",
- "ToolOutputFile.cpp",
- "TrigramIndex.cpp",
- "Triple.cpp",
- "Twine.cpp",
- "Unicode.cpp",
- "UnicodeCaseFold.cpp",
- "WithColor.cpp",
- "YAMLParser.cpp",
- "YAMLTraits.cpp",
- "circular_raw_ostream.cpp",
- "raw_os_ostream.cpp",
- "raw_ostream.cpp",
- "regcomp.c",
- "regerror.c",
- "regexec.c",
- "regfree.c",
- "regstrlcpy.c",
- "xxhash.cpp",
-
- # System
- "Atomic.cpp",
- "DynamicLibrary.cpp",
- "Errno.cpp",
- "Host.cpp",
- "Memory.cpp",
- "Mutex.cpp",
- "Path.cpp",
- "Process.cpp",
- "Program.cpp",
- "RWMutex.cpp",
- "Signals.cpp",
- "TargetRegistry.cpp",
- "ThreadLocal.cpp",
- "Threading.cpp",
- "Valgrind.cpp",
- "Watchdog.cpp",
- ]
-
- public_configs = [ "../..:include" ]
-
- libs = [ "dl" ]
-
- deps = [
- "//third_party/zlib",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/TableGen/BUILD.gn b/secondary/third_party/llvm/lib/TableGen/BUILD.gn
deleted file mode 100644
index 3d33f87..0000000
--- a/secondary/third_party/llvm/lib/TableGen/BUILD.gn
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2018 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.
-
-assert(current_toolchain == host_toolchain,
- "LLVM TableGen should only be referenced from the host toolchain.")
-
-static_library("TableGen") {
- sources = [
- "Error.cpp",
- "Main.cpp",
- "Record.cpp",
- "SetTheory.cpp",
- "StringMatcher.cpp",
- "TGLexer.cpp",
- "TGParser.cpp",
- "TableGenBackend.cpp",
- ]
-
- public_deps = [
- "../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Target/AArch64/BUILD.gn b/secondary/third_party/llvm/lib/Target/AArch64/BUILD.gn
deleted file mode 100644
index 6b89f95..0000000
--- a/secondary/third_party/llvm/lib/Target/AArch64/BUILD.gn
+++ /dev/null
@@ -1,178 +0,0 @@
-# Copyright 2018 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.
-
-import("../../../utils/TableGen/tablegen.gni")
-
-template("aarch64_tablegen") {
- tablegen(target_name) {
- source = "AArch64.td"
- args = [ "-I=" + rebase_path(".", root_build_dir) ] + invoker.args
- output = invoker.output
- }
-}
-
-aarch64_tablegen("asm_matcher") {
- output = "$target_gen_dir/AArch64GenAsmMatcher.inc"
- args = [ "-gen-asm-matcher" ]
-}
-
-aarch64_tablegen("asm_writer") {
- output = "$target_gen_dir/AArch64GenAsmWriter.inc"
- args = [ "-gen-asm-writer" ]
-}
-
-aarch64_tablegen("asm_writer1") {
- output = "$target_gen_dir/AArch64GenAsmWriter1.inc"
- args = [
- "-gen-asm-writer",
- "-asmwriternum=1",
- ]
-}
-
-aarch64_tablegen("calling_conv") {
- output = "$target_gen_dir/AArch64GenCallingConv.inc"
- args = [ "-gen-callingconv" ]
-}
-
-aarch64_tablegen("dag_isel") {
- output = "$target_gen_dir/AArch64GenDAGISel.inc"
- args = [ "-gen-dag-isel" ]
-}
-
-aarch64_tablegen("disassembler_tables") {
- output = "$target_gen_dir/AArch64GenDisassemblerTables.inc"
- args = [ "-gen-disassembler" ]
-}
-
-aarch64_tablegen("fast_isel") {
- output = "$target_gen_dir/AArch64GenFastISel.inc"
- args = [ "-gen-fast-isel" ]
-}
-
-aarch64_tablegen("global_isel") {
- output = "$target_gen_dir/AArch64GenGlobalISel.inc"
- args = [ "-gen-global-isel" ]
-}
-
-aarch64_tablegen("instr_info") {
- output = "$target_gen_dir/AArch64GenInstrInfo.inc"
- args = [ "-gen-instr-info" ]
-}
-
-aarch64_tablegen("mc_code_emitter") {
- output = "$target_gen_dir/AArch64GenMCCodeEmitter.inc"
- args = [ "-gen-emitter" ]
-}
-
-aarch64_tablegen("mc_pseudo_lowering") {
- output = "$target_gen_dir/AArch64GenMCPseudoLowering.inc"
- args = [ "-gen-pseudo-lowering" ]
-}
-
-aarch64_tablegen("register_bank") {
- output = "$target_gen_dir/AArch64GenRegisterBank.inc"
- args = [ "-gen-register-bank" ]
-}
-
-aarch64_tablegen("register_info") {
- output = "$target_gen_dir/AArch64GenRegisterInfo.inc"
- args = [ "-gen-register-info" ]
-}
-
-aarch64_tablegen("subtarget") {
- output = "$target_gen_dir/AArch64GenSubtargetInfo.inc"
- args = [ "-gen-subtarget" ]
-}
-
-aarch64_tablegen("system_operands") {
- output = "$target_gen_dir/AArch64GenSystemOperands.inc"
- args = [ "-gen-searchable-tables" ]
-}
-
-config("includes") {
- include_dirs = [ target_gen_dir ]
-}
-
-static_library("AArch64") {
- sources = [
- "AArch64A53Fix835769.cpp",
- "AArch64A57FPLoadBalancing.cpp",
- "AArch64AdvSIMDScalarPass.cpp",
- "AArch64AsmPrinter.cpp",
- "AArch64CallLowering.cpp",
- "AArch64CleanupLocalDynamicTLSPass.cpp",
- "AArch64CollectLOH.cpp",
- "AArch64CondBrTuning.cpp",
- "AArch64ConditionOptimizer.cpp",
- "AArch64ConditionalCompares.cpp",
- "AArch64DeadRegisterDefinitionsPass.cpp",
- "AArch64ExpandPseudoInsts.cpp",
- "AArch64FalkorHWPFFix.cpp",
- "AArch64FastISel.cpp",
- "AArch64FrameLowering.cpp",
- "AArch64ISelDAGToDAG.cpp",
- "AArch64ISelLowering.cpp",
- "AArch64InstrInfo.cpp",
- "AArch64InstructionSelector.cpp",
- "AArch64LegalizerInfo.cpp",
- "AArch64LoadStoreOptimizer.cpp",
- "AArch64MCInstLower.cpp",
- "AArch64MacroFusion.cpp",
- "AArch64PBQPRegAlloc.cpp",
- "AArch64PromoteConstant.cpp",
- "AArch64RedundantCopyElimination.cpp",
- "AArch64RegisterBankInfo.cpp",
- "AArch64RegisterInfo.cpp",
- "AArch64SIMDInstrOpt.cpp",
- "AArch64SelectionDAGInfo.cpp",
- "AArch64StorePairSuppress.cpp",
- "AArch64Subtarget.cpp",
- "AArch64TargetMachine.cpp",
- "AArch64TargetObjectFile.cpp",
- "AArch64TargetTransformInfo.cpp",
- "AsmParser/AArch64AsmParser.cpp",
- "InstPrinter/AArch64InstPrinter.cpp",
- "MCTargetDesc/AArch64AsmBackend.cpp",
- "MCTargetDesc/AArch64ELFObjectWriter.cpp",
- "MCTargetDesc/AArch64ELFStreamer.cpp",
- "MCTargetDesc/AArch64MCAsmInfo.cpp",
- "MCTargetDesc/AArch64MCCodeEmitter.cpp",
- "MCTargetDesc/AArch64MCExpr.cpp",
- "MCTargetDesc/AArch64MCTargetDesc.cpp",
- "MCTargetDesc/AArch64MachObjectWriter.cpp",
- "MCTargetDesc/AArch64TargetStreamer.cpp",
- "MCTargetDesc/AArch64WinCOFFObjectWriter.cpp",
- "MCTargetDesc/AArch64WinCOFFStreamer.cpp",
- "TargetInfo/AArch64TargetInfo.cpp",
- "Utils/AArch64BaseInfo.cpp",
- ]
-
- include_dirs = [ "." ]
-
- public_configs = [ ":includes" ]
-
- deps = [
- ":asm_matcher",
- ":asm_writer",
- ":asm_writer1",
- ":calling_conv",
- ":dag_isel",
- ":disassembler_tables",
- ":fast_isel",
- ":global_isel",
- ":instr_info",
- ":mc_code_emitter",
- ":mc_pseudo_lowering",
- ":register_bank",
- ":register_info",
- ":subtarget",
- ":system_operands",
- ]
-
- public_deps = [
- "../../IR",
- "../../MC",
- "../../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Target/AArch64/Disassembler/BUILD.gn b/secondary/third_party/llvm/lib/Target/AArch64/Disassembler/BUILD.gn
deleted file mode 100644
index 7fd3be3..0000000
--- a/secondary/third_party/llvm/lib/Target/AArch64/Disassembler/BUILD.gn
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2018 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.
-
-static_library("Disassembler") {
- sources = [
- "AArch64Disassembler.cpp",
- "AArch64ExternalSymbolizer.cpp",
- ]
-
- include_dirs = [ ".." ]
-
- public_deps = [
- "..",
- "../../../MC/MCDisassembler",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Target/X86/BUILD.gn b/secondary/third_party/llvm/lib/Target/X86/BUILD.gn
deleted file mode 100644
index 3b70682..0000000
--- a/secondary/third_party/llvm/lib/Target/X86/BUILD.gn
+++ /dev/null
@@ -1,172 +0,0 @@
-# Copyright 2018 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.
-
-import("../../../utils/TableGen/tablegen.gni")
-
-template("x86_tablegen") {
- tablegen(target_name) {
- source = "X86.td"
- args = [ "-I=" + rebase_path(".", root_build_dir) ] + invoker.args
- output = invoker.output
- }
-}
-
-x86_tablegen("asm_matcher") {
- output = "$target_gen_dir/X86GenAsmMatcher.inc"
- args = [ "-gen-asm-matcher" ]
-}
-
-x86_tablegen("asm_writer") {
- output = "$target_gen_dir/X86GenAsmWriter.inc"
- args = [ "-gen-asm-writer" ]
-}
-
-x86_tablegen("asm_writer1") {
- output = "$target_gen_dir/X86GenAsmWriter1.inc"
- args = [
- "-gen-asm-writer",
- "-asmwriternum=1",
- ]
-}
-
-x86_tablegen("calling_conv") {
- output = "$target_gen_dir/X86GenCallingConv.inc"
- args = [ "-gen-callingconv" ]
-}
-
-x86_tablegen("dag_isel") {
- output = "$target_gen_dir/X86GenDAGISel.inc"
- args = [ "-gen-dag-isel" ]
-}
-
-x86_tablegen("disassembler_tables") {
- output = "$target_gen_dir/X86GenDisassemblerTables.inc"
- args = [ "-gen-disassembler" ]
-}
-
-x86_tablegen("evex2vex_tables") {
- output = "$target_gen_dir/X86GenEVEX2VEXTables.inc"
- args = [ "-gen-x86-EVEX2VEX-tables" ]
-}
-
-x86_tablegen("fast_isel") {
- output = "$target_gen_dir/X86GenFastISel.inc"
- args = [ "-gen-fast-isel" ]
-}
-
-x86_tablegen("global_isel") {
- output = "$target_gen_dir/X86GenGlobalISel.inc"
- args = [ "-gen-global-isel" ]
-}
-
-x86_tablegen("instr_info") {
- output = "$target_gen_dir/X86GenInstrInfo.inc"
- args = [ "-gen-instr-info" ]
-}
-
-x86_tablegen("register_bank") {
- output = "$target_gen_dir/X86GenRegisterBank.inc"
- args = [ "-gen-register-bank" ]
-}
-
-x86_tablegen("register_info") {
- output = "$target_gen_dir/X86GenRegisterInfo.inc"
- args = [ "-gen-register-info" ]
-}
-
-x86_tablegen("subtarget") {
- output = "$target_gen_dir/X86GenSubtargetInfo.inc"
- args = [ "-gen-subtarget" ]
-}
-
-config("includes") {
- include_dirs = [ target_gen_dir ]
-}
-
-static_library("X86") {
- sources = [
- "InstPrinter/X86ATTInstPrinter.cpp",
- "InstPrinter/X86InstComments.cpp",
- "InstPrinter/X86IntelInstPrinter.cpp",
- "MCTargetDesc/X86AsmBackend.cpp",
- "MCTargetDesc/X86ELFObjectWriter.cpp",
- "MCTargetDesc/X86MCAsmInfo.cpp",
- "MCTargetDesc/X86MCCodeEmitter.cpp",
- "MCTargetDesc/X86MCTargetDesc.cpp",
- "MCTargetDesc/X86MachObjectWriter.cpp",
- "MCTargetDesc/X86WinCOFFObjectWriter.cpp",
- "MCTargetDesc/X86WinCOFFStreamer.cpp",
- "MCTargetDesc/X86WinCOFFTargetStreamer.cpp",
- "ShadowCallStack.cpp",
- "TargetInfo/X86TargetInfo.cpp",
- "Utils/X86ShuffleDecode.cpp",
- "X86AsmPrinter.cpp",
- "X86AvoidStoreForwardingBlocks.cpp",
- "X86CallFrameOptimization.cpp",
- "X86CallLowering.cpp",
- "X86CallingConv.cpp",
- "X86CmovConversion.cpp",
- "X86DomainReassignment.cpp",
- "X86EvexToVex.cpp",
- "X86ExpandPseudo.cpp",
- "X86FastISel.cpp",
- "X86FixupBWInsts.cpp",
- "X86FixupLEAs.cpp",
- "X86FixupSetCC.cpp",
- "X86FlagsCopyLowering.cpp",
- "X86FloatingPoint.cpp",
- "X86FrameLowering.cpp",
- "X86ISelDAGToDAG.cpp",
- "X86ISelLowering.cpp",
- "X86IndirectBranchTracking.cpp",
- "X86InstrFMA3Info.cpp",
- "X86InstrInfo.cpp",
- "X86InstructionSelector.cpp",
- "X86InterleavedAccess.cpp",
- "X86LegalizerInfo.cpp",
- "X86MCInstLower.cpp",
- "X86MachineFunctionInfo.cpp",
- "X86MacroFusion.cpp",
- "X86OptimizeLEAs.cpp",
- "X86PadShortFunction.cpp",
- "X86RegisterBankInfo.cpp",
- "X86RegisterInfo.cpp",
- "X86RetpolineThunks.cpp",
- "X86SelectionDAGInfo.cpp",
- "X86ShuffleDecodeConstantPool.cpp",
- "X86Subtarget.cpp",
- "X86TargetMachine.cpp",
- "X86TargetObjectFile.cpp",
- "X86TargetTransformInfo.cpp",
- "X86VZeroUpper.cpp",
- "X86WinAllocaExpander.cpp",
- "X86WinEHState.cpp",
- ]
-
- include_dirs = [ "." ]
-
- public_configs = [ ":includes" ]
-
- deps = [
- ":asm_matcher",
- ":asm_writer",
- ":asm_writer1",
- ":calling_conv",
- ":dag_isel",
- ":disassembler_tables",
- ":evex2vex_tables",
- ":fast_isel",
- ":global_isel",
- ":instr_info",
- ":register_bank",
- ":register_info",
- ":subtarget",
- ]
-
- public_deps = [
- "../../IR",
- "../../MC",
- "../../Support",
- ]
-}
diff --git a/secondary/third_party/llvm/lib/Target/X86/Disassembler/BUILD.gn b/secondary/third_party/llvm/lib/Target/X86/Disassembler/BUILD.gn
deleted file mode 100644
index d4cbad9..0000000
--- a/secondary/third_party/llvm/lib/Target/X86/Disassembler/BUILD.gn
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2018 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.
-
-static_library("Disassembler") {
- sources = [
- "X86Disassembler.cpp",
- "X86DisassemblerDecoder.cpp",
- ]
-
- include_dirs = [ ".." ]
-
- public_deps = [
- "..",
- "../../../MC/MCDisassembler",
- ]
-}
diff --git a/secondary/third_party/llvm/utils/TableGen/BUILD.gn b/secondary/third_party/llvm/utils/TableGen/BUILD.gn
deleted file mode 100644
index b65a62d..0000000
--- a/secondary/third_party/llvm/utils/TableGen/BUILD.gn
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2018 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.
-
-assert(current_toolchain == host_toolchain,
- "LLVM TableGen should only be referenced from the host toolchain.")
-
-executable("tablegen") {
- sources = [
- "AsmMatcherEmitter.cpp",
- "AsmWriterEmitter.cpp",
- "AsmWriterInst.cpp",
- "Attributes.cpp",
- "CTagsEmitter.cpp",
- "CallingConvEmitter.cpp",
- "CodeEmitterGen.cpp",
- "CodeGenDAGPatterns.cpp",
- "CodeGenHwModes.cpp",
- "CodeGenInstruction.cpp",
- "CodeGenMapTable.cpp",
- "CodeGenRegisters.cpp",
- "CodeGenSchedule.cpp",
- "CodeGenTarget.cpp",
- "DAGISelEmitter.cpp",
- "DAGISelMatcher.cpp",
- "DAGISelMatcherEmitter.cpp",
- "DAGISelMatcherGen.cpp",
- "DAGISelMatcherOpt.cpp",
- "DFAPacketizerEmitter.cpp",
- "DisassemblerEmitter.cpp",
- "FastISelEmitter.cpp",
- "FixedLenDecoderEmitter.cpp",
- "GlobalISelEmitter.cpp",
- "InfoByHwMode.cpp",
- "InstrDocsEmitter.cpp",
- "InstrInfoEmitter.cpp",
- "IntrinsicEmitter.cpp",
- "OptParserEmitter.cpp",
- "PseudoLoweringEmitter.cpp",
- "RISCVCompressInstEmitter.cpp",
- "RegisterBankEmitter.cpp",
- "RegisterInfoEmitter.cpp",
- "SDNodeProperties.cpp",
- "SearchableTableEmitter.cpp",
- "SubtargetEmitter.cpp",
- "SubtargetFeatureInfo.cpp",
- "TableGen.cpp",
- "Types.cpp",
- "X86DisassemblerTables.cpp",
- "X86EVEX2VEXTablesEmitter.cpp",
- "X86FoldTablesEmitter.cpp",
- "X86ModRMFilters.cpp",
- "X86RecognizableInstr.cpp",
- ]
-
- deps = [
- "../../lib/TableGen",
- ]
-
- libs = [ "dl" ]
-}
diff --git a/secondary/third_party/llvm/utils/TableGen/tablegen.gni b/secondary/third_party/llvm/utils/TableGen/tablegen.gni
deleted file mode 100644
index c234982..0000000
--- a/secondary/third_party/llvm/utils/TableGen/tablegen.gni
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-
-# Runs the LLVM tablegen tool.
-#
-# Inputs
-#
-# source (required)
-# [string] Source file
-#
-# output (required)
-# [string] Output file. LLVM normally expects to #include these files. Put
-# them in $target_gen_dir/<path_to_original>/<name>.gen. The target_gen_dir
-# will be automatically added to the include path.
-#
-# args (required)
-# [string list] What do to. Usually this include something like "-gen-..."
-#
-# Note: CMake function definition for tablegen is in
-# cmake/modules/TableGen.cmake
-template("tablegen") {
- compiled_action("${target_name}_action") {
- tool = "//third_party/llvm/utils/TableGen:tablegen"
-
- inputs = [
- invoker.source,
- ]
- outputs = [
- invoker.output,
- ]
- args = invoker.args + [
- "-I=" + rebase_path("//third_party/llvm/include", root_build_dir),
- rebase_path(invoker.source, root_build_dir),
- "-o",
- rebase_path(invoker.output, root_build_dir),
- ]
- }
-
- source_set(target_name) {
- deps = [
- ":${target_name}_action",
- ]
- #public_configs = [ ":target_gen_dir_include" ]
- }
-}
diff --git a/secondary/third_party/shaderc/fake_sys/BUILD.gn b/secondary/third_party/shaderc/fake_sys/BUILD.gn
deleted file mode 100644
index fb35424..0000000
--- a/secondary/third_party/shaderc/fake_sys/BUILD.gn
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2018 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.
-
-config("config") {
- if (is_fuchsia) {
- include_dirs = [ "//build/secondary/third_party/shaderc/fake_sys" ]
- }
-}
diff --git a/secondary/third_party/shaderc/fake_sys/sys/resource.h b/secondary/third_party/shaderc/fake_sys/sys/resource.h
deleted file mode 100644
index dbcdd46..0000000
--- a/secondary/third_party/shaderc/fake_sys/sys/resource.h
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2018 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.
-
-// Fake version of <sys/resource.h> to allow shaderc and friends to compile.
diff --git a/secondary/third_party/shaderc/libshaderc/BUILD.gn b/secondary/third_party/shaderc/libshaderc/BUILD.gn
deleted file mode 100644
index 68eb43e..0000000
--- a/secondary/third_party/shaderc/libshaderc/BUILD.gn
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/package.gni")
-
-source_set("libshaderc") {
- deps = [
- "//third_party/shaderc/libshaderc_util",
- "//third_party/shaderc/third_party/glslang:SPIRV",
- "//third_party/shaderc/third_party/glslang:glslang-default-resource-limits",
- "//third_party/shaderc/third_party/spirv-tools:spirv-tools-opt",
- ]
- include_dirs = [
- "//third_party/shaderc/libshaderc/include",
- "//third_party/shaderc/libshaderc_util/include",
- "//third_party/shaderc/third_party/glslang",
- "//third_party/shaderc/third_party/spirv-tools/include",
- ]
- sources = [
- "include/shaderc/shaderc.h",
- "include/shaderc/shaderc.hpp",
- "src/shaderc.cc",
- "src/shaderc_private.h",
- ]
-}
diff --git a/secondary/third_party/shaderc/libshaderc_util/BUILD.gn b/secondary/third_party/shaderc/libshaderc_util/BUILD.gn
deleted file mode 100644
index be55090..0000000
--- a/secondary/third_party/shaderc/libshaderc_util/BUILD.gn
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/package.gni")
-
-source_set("libshaderc_util") {
- deps = [
- "//third_party/shaderc/third_party/glslang",
- "//third_party/shaderc/third_party/glslang:SPIRV",
- "//third_party/shaderc/third_party/glslang:glslang-default-resource-limits",
- "//third_party/shaderc/third_party/spirv-tools:spirv-tools-opt",
- ]
- include_dirs = [
- "//third_party/shaderc/libshaderc_util/include",
- "//third_party/shaderc/third_party/glslang",
- "//third_party/shaderc/third_party/spirv-tools/include",
- ]
- sources = [
- "include/libshaderc_util/compiler.h",
- "include/libshaderc_util/counting_includer.h",
- "include/libshaderc_util/file_finder.h",
- "include/libshaderc_util/format.h",
- "include/libshaderc_util/io.h",
- "include/libshaderc_util/message.h",
- "include/libshaderc_util/mutex.h",
- "include/libshaderc_util/resources.h",
- "include/libshaderc_util/resources.inc",
- "include/libshaderc_util/shader_stage.h",
- "include/libshaderc_util/spirv_tools_wrapper.h",
- "include/libshaderc_util/string_piece.h",
- "include/libshaderc_util/universal_unistd.h",
- "include/libshaderc_util/version_profile.h",
- "src/compiler.cc",
- "src/file_finder.cc",
- "src/io.cc",
- "src/message.cc",
- "src/resources.cc",
- "src/shader_stage.cc",
- "src/spirv_tools_wrapper.cc",
- "src/version_profile.cc",
- ]
-}
diff --git a/secondary/third_party/shaderc/third_party/glslang/BUILD.gn b/secondary/third_party/shaderc/third_party/glslang/BUILD.gn
deleted file mode 100644
index 6750b84..0000000
--- a/secondary/third_party/shaderc/third_party/glslang/BUILD.gn
+++ /dev/null
@@ -1,163 +0,0 @@
-# Copyright 2017 The Fuchsia Authors
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-config("glslang_config") {
- include_dirs = [
- ".",
- "glslang/Public",
- ]
-}
-
-config("glslang_internal_config") {
- cflags_cc = [
- "-Wno-ignored-qualifiers",
- "-Wno-missing-field-initializers",
- "-Wno-reorder",
- "-Wno-unused-function",
- "-Wno-unused-variable",
- ]
-}
-
-static_library("glslang") {
- sources = [
- "glslang/GenericCodeGen/CodeGen.cpp",
- "glslang/GenericCodeGen/Link.cpp",
- "glslang/MachineIndependent/Constant.cpp",
- "glslang/MachineIndependent/InfoSink.cpp",
- "glslang/MachineIndependent/Initialize.cpp",
- "glslang/MachineIndependent/IntermTraverse.cpp",
- "glslang/MachineIndependent/Intermediate.cpp",
- "glslang/MachineIndependent/ParseContextBase.cpp",
- "glslang/MachineIndependent/ParseHelper.cpp",
- "glslang/MachineIndependent/PoolAlloc.cpp",
- "glslang/MachineIndependent/RemoveTree.cpp",
- "glslang/MachineIndependent/Scan.cpp",
- "glslang/MachineIndependent/ShaderLang.cpp",
- "glslang/MachineIndependent/SymbolTable.cpp",
- "glslang/MachineIndependent/Versions.cpp",
- "glslang/MachineIndependent/attribute.cpp",
- "glslang/MachineIndependent/glslang_tab.cpp",
- "glslang/MachineIndependent/intermOut.cpp",
- "glslang/MachineIndependent/iomapper.cpp",
- "glslang/MachineIndependent/limits.cpp",
- "glslang/MachineIndependent/linkValidate.cpp",
- "glslang/MachineIndependent/parseConst.cpp",
- "glslang/MachineIndependent/preprocessor/Pp.cpp",
- "glslang/MachineIndependent/preprocessor/PpAtom.cpp",
- "glslang/MachineIndependent/preprocessor/PpContext.cpp",
- "glslang/MachineIndependent/preprocessor/PpScanner.cpp",
- "glslang/MachineIndependent/preprocessor/PpTokens.cpp",
- "glslang/MachineIndependent/propagateNoContraction.cpp",
- "glslang/MachineIndependent/reflection.cpp",
- ]
- deps = [
- ":HLSL",
- ":OGLCompiler",
- ":OSDependent",
- ":SPIRV",
- ":glslang-default-resource-limits",
- ]
- public_configs = [ ":glslang_config" ]
- configs += [ ":glslang_internal_config" ]
-}
-static_library("OSDependent") {
- cflags_cc = [
- "-Wno-unused-function",
- "-Wno-unused-variable",
- ]
- sources = [
- "glslang/OSDependent/Unix/ossource.cpp",
- ]
- public_configs = [ "//third_party/shaderc/fake_sys:config" ]
-}
-static_library("OGLCompiler") {
- sources = [
- "OGLCompilersDLL/InitializeDll.cpp",
- ]
-}
-config("HLSL_config") {
- defines = [ "ENABLE_HLSL" ]
-}
-static_library("HLSL") {
- cflags_cc = [
- "-Wno-reorder",
- "-Wno-inconsistent-missing-override",
- "-Wno-missing-field-initializers",
- ]
- public_configs = [ ":HLSL_config" ]
- sources = [
- "hlsl/hlslAttributes.cpp",
- "hlsl/hlslGrammar.cpp",
- "hlsl/hlslOpMap.cpp",
- "hlsl/hlslParseHelper.cpp",
- "hlsl/hlslParseables.cpp",
- "hlsl/hlslScanContext.cpp",
- "hlsl/hlslTokenStream.cpp",
- ]
-}
-static_library("SPIRV") {
- cflags_cc = [
- "-Wno-reorder",
- "-Wno-missing-field-initializers",
- "-Wno-unused-variable",
- ]
- sources = [
- "SPIRV/GlslangToSpv.cpp",
- "SPIRV/InReadableOrder.cpp",
- "SPIRV/Logger.cpp",
- "SPIRV/SpvBuilder.cpp",
- "SPIRV/disassemble.cpp",
- "SPIRV/doc.cpp",
- ]
-}
-static_library("SPVRemapper") {
- sources = [
- "SPIRV/SPVRemapper.cpp",
- ]
-}
-executable("spirv-remap") {
- sources = [
- "StandAlone/spirv-remap.cpp",
- ]
- deps = [
- ":SPIRV",
- ":SPVRemapper",
- ":glslang",
- ]
-}
-static_library("glslang-default-resource-limits") {
- include_dirs = [ "." ]
- sources = [
- "StandAlone/ResourceLimits.cpp",
- ]
-}
-executable("glslangValidator") {
- include_dirs = [ "." ]
- sources = [
- "StandAlone/StandAlone.cpp",
- ]
- deps = [
- ":SPIRV",
- ":SPVRemapper",
- ":glslang",
- ":glslang-default-resource-limits",
- ]
-}
diff --git a/secondary/third_party/shaderc/third_party/spirv-tools/BUILD.gn b/secondary/third_party/shaderc/third_party/spirv-tools/BUILD.gn
deleted file mode 100644
index 544ec9e..0000000
--- a/secondary/third_party/shaderc/third_party/spirv-tools/BUILD.gn
+++ /dev/null
@@ -1,556 +0,0 @@
-# Copyright 2017 The Fuchsia Authors
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-config("spirv_warnings") {
- visibility = [ ":*" ]
- cflags_cc = [
- "-Wno-delete-non-virtual-dtor",
- "-Wno-return-std-move",
- ]
-}
-group("generate_include_files") {
- deps = [
- ":build_version_include_file",
- ":core_and_operands_1_0_include_files",
- ":core_and_operands_1_1_include_files",
- ":core_and_operands_1_2_include_files",
- ":core_and_operands_unified1_include_files",
- ":debug_info_include_file",
- ":extension_enum_include_file",
- ":generators_include_file",
- ":glsl_1_0_include_file",
- ":vendor_tables_amd_gcn_shader",
- ":vendor_tables_amd_shader_ballot",
- ":vendor_tables_amd_shader_explicit_vertex_parameter",
- ":vendor_tables_amd_shader_trinary_minmax",
- ":vendor_tables_debug_info",
- ]
-}
-
-# The actions below were created by roughly transcribing the actions in
-# //third_party/shaderc/third_party/spirv-tools/Android.mk
-
-# TODO(SCN-649): use GN wizardry to reduce boilerplate in the actions below.
-
-action("build_version_include_file") {
- script = "utils/update_build_version.py"
- args = [
- rebase_path(".", root_build_dir),
- rebase_path("$target_gen_dir/build-version.inc", root_build_dir),
- ]
- sources = [
- "CHANGES",
- ]
- outputs = [
- "$target_gen_dir/build-version.inc",
- ]
-}
-action("glsl_1_0_include_file") {
- script = "utils/generate_grammar_tables.py"
- spirv_core_grammar =
- "external/spirv-headers/include/spirv/1.0/spirv.core.grammar.json"
- debug_info_grammar = "source/extinst.debuginfo.grammar.json"
- glsl_grammar = "external/spirv-headers/include/spirv/1.0/extinst.glsl.std.450.grammar.json"
- output_file = "$target_gen_dir/glsl.std.450.insts-1.0.inc"
- args = [
- "--spirv-core-grammar=" + rebase_path(spirv_core_grammar, root_build_dir),
- "--extinst-debuginfo-grammar=" +
- rebase_path(debug_info_grammar, root_build_dir),
- "--extinst-glsl-grammar=" + rebase_path(glsl_grammar, root_build_dir),
- "--glsl-insts-output=" + rebase_path(output_file, root_build_dir),
- ]
- sources = [
- glsl_grammar,
- spirv_core_grammar,
- ]
- outputs = [
- output_file,
- ]
-}
-action("core_and_operands_1_0_include_files") {
- script = "utils/generate_grammar_tables.py"
- spirv_core_grammar =
- "external/spirv-headers/include/spirv/1.0/spirv.core.grammar.json"
- debug_info_grammar = "source/extinst.debuginfo.grammar.json"
- glsl_grammar = "external/spirv-headers/include/spirv/1.2/extinst.glsl.std.450.grammar.json"
- opencl_grammar = "external/spirv-headers/include/spirv/1.2/extinst.opencl.std.100.grammar.json"
- core_insts_output_file = "$target_gen_dir/core.insts-1.0.inc"
- operand_kinds_output_file = "$target_gen_dir/operand.kinds-1.0.inc"
- glsl_insts_output_file = "$target_gen_dir/glsl.std.450.insts.inc"
- opencl_insts_output_file = "$target_gen_dir/opencl.std.insts.inc"
- args = [
- "--spirv-core-grammar=" + rebase_path(spirv_core_grammar, root_build_dir),
- "--extinst-debuginfo-grammar=" +
- rebase_path(debug_info_grammar, root_build_dir),
- "--extinst-glsl-grammar=" + rebase_path(glsl_grammar, root_build_dir),
- "--extinst-opencl-grammar=" + rebase_path(opencl_grammar, root_build_dir),
- "--core-insts-output=" +
- rebase_path(core_insts_output_file, root_build_dir),
- "--glsl-insts-output=" +
- rebase_path(glsl_insts_output_file, root_build_dir),
- "--opencl-insts-output=" +
- rebase_path(opencl_insts_output_file, root_build_dir),
- "--operand-kinds-output=" +
- rebase_path(operand_kinds_output_file, root_build_dir),
- ]
- sources = [
- spirv_core_grammar,
- ]
- outputs = [
- core_insts_output_file,
- operand_kinds_output_file,
- ]
-}
-action("core_and_operands_1_1_include_files") {
- script = "utils/generate_grammar_tables.py"
- spirv_core_grammar =
- "external/spirv-headers/include/spirv/1.1/spirv.core.grammar.json"
- debug_info_grammar = "source/extinst.debuginfo.grammar.json"
- core_insts_output_file = "$target_gen_dir/core.insts-1.1.inc"
- operand_kinds_output_file = "$target_gen_dir/operand.kinds-1.1.inc"
- args = [
- "--spirv-core-grammar=" + rebase_path(spirv_core_grammar, root_build_dir),
- "--extinst-debuginfo-grammar=" +
- rebase_path(debug_info_grammar, root_build_dir),
- "--core-insts-output=" +
- rebase_path(core_insts_output_file, root_build_dir),
- "--operand-kinds-output=" +
- rebase_path(operand_kinds_output_file, root_build_dir),
- ]
- sources = [
- spirv_core_grammar,
- ]
- outputs = [
- core_insts_output_file,
- operand_kinds_output_file,
- ]
-}
-action("core_and_operands_1_2_include_files") {
- script = "utils/generate_grammar_tables.py"
- spirv_core_grammar =
- "external/spirv-headers/include/spirv/1.2/spirv.core.grammar.json"
- debug_info_grammar = "source/extinst.debuginfo.grammar.json"
- core_insts_output_file = "$target_gen_dir/core.insts-1.2.inc"
- operand_kinds_output_file = "$target_gen_dir/operand.kinds-1.2.inc"
- args = [
- "--spirv-core-grammar=" + rebase_path(spirv_core_grammar, root_build_dir),
- "--extinst-debuginfo-grammar=" +
- rebase_path(debug_info_grammar, root_build_dir),
- "--core-insts-output=" +
- rebase_path(core_insts_output_file, root_build_dir),
- "--operand-kinds-output=" +
- rebase_path(operand_kinds_output_file, root_build_dir),
- ]
- sources = [
- spirv_core_grammar,
- ]
- outputs = [
- core_insts_output_file,
- operand_kinds_output_file,
- ]
-}
-action("core_and_operands_unified1_include_files") {
- script = "utils/generate_grammar_tables.py"
- spirv_core_grammar =
- "external/spirv-headers/include/spirv/unified1/spirv.core.grammar.json"
- debug_info_grammar = "source/extinst.debuginfo.grammar.json"
- core_insts_output_file = "$target_gen_dir/core.insts-unified1.inc"
- operand_kinds_output_file = "$target_gen_dir/operand.kinds-unified1.inc"
- args = [
- "--spirv-core-grammar=" + rebase_path(spirv_core_grammar, root_build_dir),
- "--extinst-debuginfo-grammar=" +
- rebase_path(debug_info_grammar, root_build_dir),
- "--core-insts-output=" +
- rebase_path(core_insts_output_file, root_build_dir),
- "--operand-kinds-output=" +
- rebase_path(operand_kinds_output_file, root_build_dir),
- ]
- sources = [
- spirv_core_grammar,
- ]
- outputs = [
- core_insts_output_file,
- operand_kinds_output_file,
- ]
-}
-action("extension_enum_include_file") {
- script = "utils/generate_grammar_tables.py"
-
- # TODO: this must be kept up-to-date
- spirv_core_latest_grammar =
- "external/spirv-headers/include/spirv/unified1/spirv.core.grammar.json"
- debug_info_grammar = "source/extinst.debuginfo.grammar.json"
- extension_enum_output_file = "$target_gen_dir/extension_enum.inc"
- enum_string_mapping_output_file = "$target_gen_dir/enum_string_mapping.inc"
- args = [
- "--spirv-core-grammar=" +
- rebase_path(spirv_core_latest_grammar, root_build_dir),
- "--extinst-debuginfo-grammar=" +
- rebase_path(debug_info_grammar, root_build_dir),
- "--extension-enum-output=" +
- rebase_path(extension_enum_output_file, root_build_dir),
- "--enum-string-mapping-output=" +
- rebase_path(enum_string_mapping_output_file, root_build_dir),
- ]
- sources = [
- debug_info_grammar,
- spirv_core_latest_grammar,
- ]
- outputs = [
- extension_enum_output_file,
- enum_string_mapping_output_file,
- ]
-}
-action("generators_include_file") {
- script = "utils/generate_registry_tables.py"
- input_file = "external/spirv-headers/include/spirv/spir-v.xml"
- output_file = "$target_gen_dir/generators.inc"
- args = [
- "--xml=" + rebase_path(input_file, root_build_dir),
- "--generator-output=" + rebase_path(output_file, root_build_dir),
- ]
- sources = [
- input_file,
- ]
- outputs = [
- output_file,
- ]
-}
-action("debug_info_include_file") {
- script = "utils/generate_language_headers.py"
- debug_info_grammar = "source/extinst.debuginfo.grammar.json"
- base_filename = "DebugInfo"
- output_path = "$target_gen_dir/DebugInfo"
- output_path_with_h = "$target_gen_dir/DebugInfo.h"
- args = [
- "--extinst-name=" + base_filename,
- "--extinst-grammar=" + rebase_path(debug_info_grammar, root_build_dir),
- "--extinst-output-base=" + rebase_path(output_path, root_build_dir),
- ]
- sources = [
- debug_info_grammar,
- ]
- outputs = [
- output_path_with_h,
- ]
-}
-action("vendor_tables_debug_info") {
- script = "utils/generate_grammar_tables.py"
- input_grammar_file = "source/extinst.debuginfo.grammar.json"
- output_file = "$target_gen_dir/debuginfo.insts.inc"
- args = [
- "--extinst-vendor-grammar=" +
- rebase_path(input_grammar_file, root_build_dir),
- "--vendor-insts-output=" + rebase_path(output_file, root_build_dir),
- ]
- sources = [
- input_grammar_file,
- ]
- outputs = [
- output_file,
- ]
-}
-action("vendor_tables_amd_gcn_shader") {
- script = "utils/generate_grammar_tables.py"
- input_grammar_file = "source/extinst.spv-amd-gcn-shader.grammar.json"
- output_file = "$target_gen_dir/spv-amd-gcn-shader.insts.inc"
- args = [
- "--extinst-vendor-grammar=" +
- rebase_path(input_grammar_file, root_build_dir),
- "--vendor-insts-output=" + rebase_path(output_file, root_build_dir),
- ]
- sources = [
- input_grammar_file,
- ]
- outputs = [
- output_file,
- ]
-}
-action("vendor_tables_amd_shader_ballot") {
- script = "utils/generate_grammar_tables.py"
- input_grammar_file = "source/extinst.spv-amd-shader-ballot.grammar.json"
- output_file = "$target_gen_dir/spv-amd-shader-ballot.insts.inc"
- args = [
- "--extinst-vendor-grammar=" +
- rebase_path(input_grammar_file, root_build_dir),
- "--vendor-insts-output=" + rebase_path(output_file, root_build_dir),
- ]
- sources = [
- input_grammar_file,
- ]
- outputs = [
- output_file,
- ]
-}
-action("vendor_tables_amd_shader_explicit_vertex_parameter") {
- script = "utils/generate_grammar_tables.py"
- input_grammar_file =
- "source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json"
- output_file =
- "$target_gen_dir/spv-amd-shader-explicit-vertex-parameter.insts.inc"
- args = [
- "--extinst-vendor-grammar=" +
- rebase_path(input_grammar_file, root_build_dir),
- "--vendor-insts-output=" + rebase_path(output_file, root_build_dir),
- ]
- sources = [
- input_grammar_file,
- ]
- outputs = [
- output_file,
- ]
-}
-action("vendor_tables_amd_shader_trinary_minmax") {
- script = "utils/generate_grammar_tables.py"
- input_grammar_file =
- "source/extinst.spv-amd-shader-trinary-minmax.grammar.json"
- output_file = "$target_gen_dir/spv-amd-shader-trinary-minmax.insts.inc"
- args = [
- "--extinst-vendor-grammar=" +
- rebase_path(input_grammar_file, root_build_dir),
- "--vendor-insts-output=" + rebase_path(output_file, root_build_dir),
- ]
- sources = [
- input_grammar_file,
- ]
- outputs = [
- output_file,
- ]
-}
-config("include_config") {
- include_dirs = [
- "external/spirv-headers/include",
- "include",
- "source",
- ".",
- target_gen_dir,
- ]
-}
-group("spirv-deps") {
- public_configs = [ ":include_config" ]
- deps = [
- ":generate_include_files",
- ]
-}
-static_library("spirv-tools") {
- configs += [ ":spirv_warnings" ]
- public_configs = [ "//third_party/shaderc/fake_sys:config" ]
- deps = [
- ":spirv-deps",
- ]
- sources = [
- "source/assembly_grammar.cpp",
- "source/binary.cpp",
- "source/diagnostic.cpp",
- "source/disassemble.cpp",
- "source/enum_string_mapping.cpp",
- "source/ext_inst.cpp",
- "source/extensions.cpp",
- "source/id_descriptor.cpp",
- "source/libspirv.cpp",
- "source/message.cpp",
- "source/name_mapper.cpp",
- "source/opcode.cpp",
- "source/operand.cpp",
- "source/parsed_operand.cpp",
- "source/print.cpp",
- "source/software_version.cpp",
- "source/spirv_endian.cpp",
- "source/spirv_stats.cpp",
- "source/spirv_target_env.cpp",
- "source/spirv_validator_options.cpp",
- "source/table.cpp",
- "source/text.cpp",
- "source/text_handler.cpp",
- "source/util/bit_stream.cpp",
- "source/util/parse_number.cpp",
- "source/util/string_utils.cpp",
- "source/util/timer.cpp",
- "source/val/basic_block.cpp",
- "source/val/construct.cpp",
- "source/val/function.cpp",
- "source/val/instruction.cpp",
- "source/val/validation_state.cpp",
- "source/validate.cpp",
- "source/validate_adjacency.cpp",
- "source/validate_arithmetics.cpp",
- "source/validate_atomics.cpp",
- "source/validate_barriers.cpp",
- "source/validate_bitwise.cpp",
- "source/validate_builtins.cpp",
- "source/validate_capability.cpp",
- "source/validate_cfg.cpp",
- "source/validate_composites.cpp",
- "source/validate_conversion.cpp",
- "source/validate_datarules.cpp",
- "source/validate_decorations.cpp",
- "source/validate_derivatives.cpp",
- "source/validate_ext_inst.cpp",
- "source/validate_id.cpp",
- "source/validate_image.cpp",
- "source/validate_instruction.cpp",
- "source/validate_layout.cpp",
- "source/validate_literals.cpp",
- "source/validate_logicals.cpp",
- "source/validate_primitives.cpp",
- "source/validate_type_unique.cpp",
- ]
-}
-static_library("spirv-tools-opt") {
- configs += [ ":spirv_warnings" ]
- deps = [
- ":spirv-deps",
- ":spirv-tools",
- ]
- sources = [
- "source/opt/aggressive_dead_code_elim_pass.cpp",
- "source/opt/basic_block.cpp",
- "source/opt/block_merge_pass.cpp",
- "source/opt/build_module.cpp",
- "source/opt/ccp_pass.cpp",
- "source/opt/cfg.cpp",
- "source/opt/cfg_cleanup_pass.cpp",
- "source/opt/common_uniform_elim_pass.cpp",
- "source/opt/compact_ids_pass.cpp",
- "source/opt/composite.cpp",
- "source/opt/const_folding_rules.cpp",
- "source/opt/constants.cpp",
- "source/opt/copy_prop_arrays.cpp",
- "source/opt/dead_branch_elim_pass.cpp",
- "source/opt/dead_insert_elim_pass.cpp",
- "source/opt/dead_variable_elimination.cpp",
- "source/opt/decoration_manager.cpp",
- "source/opt/def_use_manager.cpp",
- "source/opt/dominator_analysis.cpp",
- "source/opt/dominator_tree.cpp",
- "source/opt/eliminate_dead_constant_pass.cpp",
- "source/opt/eliminate_dead_functions_pass.cpp",
- "source/opt/feature_manager.cpp",
- "source/opt/flatten_decoration_pass.cpp",
- "source/opt/fold.cpp",
- "source/opt/fold_spec_constant_op_and_composite_pass.cpp",
- "source/opt/folding_rules.cpp",
- "source/opt/freeze_spec_constant_value_pass.cpp",
- "source/opt/function.cpp",
- "source/opt/if_conversion.cpp",
- "source/opt/inline_exhaustive_pass.cpp",
- "source/opt/inline_opaque_pass.cpp",
- "source/opt/inline_pass.cpp",
- "source/opt/insert_extract_elim.cpp",
- "source/opt/instruction.cpp",
- "source/opt/instruction_list.cpp",
- "source/opt/ir_context.cpp",
- "source/opt/ir_loader.cpp",
- "source/opt/licm_pass.cpp",
- "source/opt/local_access_chain_convert_pass.cpp",
- "source/opt/local_redundancy_elimination.cpp",
- "source/opt/local_single_block_elim_pass.cpp",
- "source/opt/local_single_store_elim_pass.cpp",
- "source/opt/local_ssa_elim_pass.cpp",
- "source/opt/loop_descriptor.cpp",
- "source/opt/loop_peeling.cpp",
- "source/opt/loop_unroller.cpp",
- "source/opt/loop_unswitch_pass.cpp",
- "source/opt/loop_utils.cpp",
- "source/opt/mem_pass.cpp",
- "source/opt/merge_return_pass.cpp",
- "source/opt/module.cpp",
- "source/opt/optimizer.cpp",
- "source/opt/pass.cpp",
- "source/opt/pass_manager.cpp",
- "source/opt/private_to_local_pass.cpp",
- "source/opt/propagator.cpp",
- "source/opt/redundancy_elimination.cpp",
- "source/opt/remove_duplicates_pass.cpp",
- "source/opt/replace_invalid_opc.cpp",
- "source/opt/scalar_analysis.cpp",
- "source/opt/scalar_analysis_simplification.cpp",
- "source/opt/scalar_replacement_pass.cpp",
- "source/opt/set_spec_constant_default_value_pass.cpp",
- "source/opt/simplification_pass.cpp",
- "source/opt/ssa_rewrite_pass.cpp",
- "source/opt/strength_reduction_pass.cpp",
- "source/opt/strip_debug_info_pass.cpp",
- "source/opt/strip_reflect_info_pass.cpp",
- "source/opt/type_manager.cpp",
- "source/opt/types.cpp",
- "source/opt/unify_const_pass.cpp",
- "source/opt/value_number_table.cpp",
- "source/opt/workaround1209.cpp",
- ]
-}
-executable("spirv-opt") {
- deps = [
- ":spirv-deps",
- ":spirv-tools",
- ":spirv-tools-opt",
- ]
- sources = [
- "tools/opt/opt.cpp",
- ]
-}
-executable("spirv-dis") {
- deps = [
- ":spirv-deps",
- ":spirv-tools",
- ]
- sources = [
- "tools/dis/dis.cpp",
- ]
-}
-executable("spirv-cfg") {
- deps = [
- ":spirv-deps",
- ":spirv-tools",
- ]
- sources = [
- "tools/cfg/bin_to_dot.cpp",
- "tools/cfg/cfg.cpp",
- ]
-}
-executable("spirv-val") {
- deps = [
- ":spirv-deps",
- ":spirv-tools",
- ]
- sources = [
- "tools/val/val.cpp",
- ]
-}
-executable("spirv-as") {
- deps = [
- ":spirv-deps",
- ":spirv-tools",
- ]
- sources = [
- "tools/as/as.cpp",
- ]
-}
-executable("spirv-tools-cpp-example") {
- deps = [
- ":spirv-tools",
- ":spirv-tools-opt",
- ]
- include_dirs = [ "include" ]
- sources = [
- "examples/cpp-interface/main.cpp",
- ]
-}
diff --git a/secondary/third_party/spirv-cross/BUILD.gn b/secondary/third_party/spirv-cross/BUILD.gn
deleted file mode 100644
index 5ad8a47..0000000
--- a/secondary/third_party/spirv-cross/BUILD.gn
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/package.gni")
-
-config("public_preprocessor_definitions") {
- defines = [ "SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS" ]
-}
-
-source_set("spirv-cross") {
- public_configs = [ ":public_preprocessor_definitions" ]
-
- sources = [
- # spirv-cross-core
- "GLSL.std.450.h",
- "spirv.hpp",
- "spirv_cfg.cpp",
- "spirv_cfg.hpp",
- "spirv_common.hpp",
- "spirv_cpp.cpp",
-
- # spirv-cross-cpp
- "spirv_cpp.hpp",
- "spirv_cross.cpp",
- "spirv_cross.hpp",
- "spirv_cross_util.cpp",
-
- # spirv-cross-util
- "spirv_cross_util.hpp",
-
- # spirv-cross-glsl
- "spirv_glsl.cpp",
- "spirv_glsl.hpp",
- "spirv_hlsl.cpp",
-
- # spirv-cross-hlsl
- "spirv_hlsl.hpp",
- "spirv_msl.cpp",
-
- # spirv-cross-msl
- "spirv_msl.hpp",
- ]
-}
diff --git a/test.gni b/test.gni
deleted file mode 100644
index ca9c385..0000000
--- a/test.gni
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/testing/test_spec.gni")
-
-# This declares a test executable.
-#
-# The parameters are precisely those of an `executable`.
-#
-template("test") {
- if (is_linux || is_mac) {
- test_spec("${target_name}_spec") {
- name = invoker.target_name
- location = "$root_out_dir/${invoker.target_name}"
- }
- }
-
- executable(target_name) {
- forward_variables_from(invoker, "*")
- testonly = true
- if (is_linux || is_mac) {
- # Write runtime dependencies to the root out dir of the base host
- # toolchain so that the file may be found by cross-referencing with
- # $root_build_dir/host_tests.json.
- test_name = get_path_info(target_name, "name")
- host_out_dir = get_label_info(":$target_name(${toolchain_variant.base})",
- "target_out_dir")
- write_runtime_deps = "$host_out_dir/$test_name.$test_data_ext"
- }
- }
-}
-
-set_defaults("test") {
- configs = default_executable_configs
-}
diff --git a/test/test_package.gni b/test/test_package.gni
deleted file mode 100644
index 8a908c9..0000000
--- a/test/test_package.gni
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/package.gni")
-
-# Helper template to create test component which runtests can execute.
-#
-# This template assumes that for all the test binaries in |tests| there would
-# be a corresponding component manifest file in meta/ folder with same name.
-# If there is none this template will fail with an error.
-#
-# Parameters
-#
-# meta (optional)
-# [list of scopes] Defines the metadata entries in the package. A metadata
-# entry is typically a source file and is placed in the `meta/` directory of
-# the assembled package.
-#
-# Entries in a scope in the meta list:
-#
-# path (required)
-# [path] Location of entry in source or build directory. If the
-# resource is checked in, this will typically be specified as a
-# path relative to the BUILD.gn file containing the `package()`
-# target. If the resource is generated, this will typically be
-# specified relative to `$target_gen_dir`.
-#
-# dest (required)
-# [path] Location the resource will be placed within `meta/`.
-#
-# binaries (optional)
-# [list of scopes] Defines the binaries in the package. A binary is
-# typically produced by the build system and is placed in the `bin/`
-# directory of the assembled package.
-#
-# Entries in a scope in the binaries list:
-#
-# name (required)
-# [string] Name of the binary.
-#
-# source (optional)
-# [path] Location of the binary in the build directory if it is not
-# at `$root_out_dir/$name`.
-#
-# dest (optional)
-# [path] Location the binary will be placed within `bin/`.
-#
-#
-# tests (optional)
-# [list of scopes] Defines the test binaries in the package. A test is
-# typically produced by the build system and is placed in the `test/`
-# directory of the assembled package.
-#
-# Entries in a scope in the tests list:
-#
-# name (required)
-# [string] Name of the test.
-#
-# dest (optional)
-# [path] Location the binary will be placed within `test/`.
-#
-# disabled (optional)
-# [bool] Whether to disable the test on continuous integration
-# jobs. This can be used when a test is temporarily broken, or if
-# it is too flaky or slow for CI. The test will also be skipped by
-# the `runtests` command.
-#
-# For each tests entry this expects a corresponding cmx file in meta directory.
-#
-# resources (optional)
-# [list of scopes] Defines the resources in the package. A resource is a
-# data file that may be produced by the build system, checked in to a
-# source repository, or produced by another system that runs before the
-# build. Resources are placed in the `data/` directory of the assembled
-# package.
-#
-# Entries in a scope in the resources list:
-#
-# path (required)
-# [path] Location of resource in source or build directory. If the
-# resource is checked in, this will typically be specified as a
-# path relative to the BUILD.gn file containing the `package()`
-# target. If the resource is generated, this will typically be
-# specified relative to `$target_gen_dir`.
-#
-# dest (required)
-# [path] Location the resource will be placed within `data/`.
-#
-# extra (optional)
-# [list of paths] Manifest files containing extra entries, which
-# might be generated by the build.
-#
-# deps (optional)
-# public_deps (optional)
-# data_deps (optional)
-# Usual GN meanings.
-#
-template("test_package") {
- forward_variables_from(invoker,
- [
- "tests",
- "meta",
- ])
- if (!defined(meta)) {
- meta = []
- }
- foreach(test, tests) {
- test_dest = test.name
- if (defined(test.dest)) {
- test_dest = test.dest
- }
- meta += [
- {
- path = "meta/${test_dest}.cmx"
- dest = "${test_dest}.cmx"
- },
- ]
- }
-
- package(target_name) {
- testonly = true
- forward_variables_from(invoker,
- [
- "binaries",
- "data_deps",
- "deps",
- "extra",
- "public_deps",
- "resources",
- "drivers",
- "loadable_modules",
- "package_name",
- ])
- }
-}
diff --git a/testing/environments.gni b/testing/environments.gni
deleted file mode 100644
index 448b1cf..0000000
--- a/testing/environments.gni
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2018 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.
-
-### Individual test environments ###
-
-qemu_env = {
- dimensions = {
- device_type = "QEMU"
- }
-}
-
-nuc_env = {
- dimensions = {
- device_type = "Intel NUC Kit NUC7i5DNHE"
- }
-}
-
-vim2_env = {
- dimensions = {
- device_type = "Khadas Vim2 Max"
- }
- # TODO(IN-571): Delete after bring-up.
- label = "vim2"
-}
-
-linux_env = {
- dimensions = {
- os = "Linux"
- }
- # TODO(IN-819): Delete after bring-up.
- label = "host"
-}
-
-mac_env = {
- dimensions = {
- os = "Mac"
- }
- # TODO(IN-819): Delete after bring-up.
- label = "host"
-}
-
-
-### Select environment lists ###
-
-# The basic, freely usable test environments supported by the infrastructure.
-basic_envs = [ qemu_env ]
-if (current_cpu == "x64") {
- basic_envs += [ nuc_env ]
-} else if (current_cpu == "arm64") {
- basic_envs += [ vim2_env ]
-}
diff --git a/testing/platforms.gni b/testing/platforms.gni
deleted file mode 100644
index 1b9e202..0000000
--- a/testing/platforms.gni
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2018 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 is a source of truth for what platforms are available for testing
-# and what dimensions they possess to match against.
-#
-# Please do not update this file; contact fuchsia-infra-team@google.com with any
-# questions.
-#
-# Swarming is the task distribution system used by Fuchsia to run automated
-# builds. A dimension is a formal Swarming concept effectively given by a
-# key-value pair; it describes a bot property that can be targeted. Below are
-# the published dimensions for the platforms we have available to test on.
-# For more general Swarming documentation see
-# https://chromium.googlesource.com/infra/luci/luci-py/+/master/appengine/swarming/doc/
-
-# All Swarming dimension keys that Fuchsia test authors may use to target test
-# platforms.
-all_dimension_keys = [
- "device_type",
- "cpu",
- "os",
-]
-
-# Scopes of dimensions for every available platform.
-test_platforms = [
- {
- device_type = "QEMU"
- cpu = "x64"
- },
- {
- device_type = "QEMU"
- cpu = "arm64"
- },
- {
- device_type = "Intel NUC Kit NUC7i5DNHE"
- cpu = "x64"
- },
-
- # The platforms below are experimental and may not yet be targeted.
- # See IN-571.
- {
- device_type = "Khadas Vim2 Max"
- cpu = "arm64"
- },
-
- # See IN-819.
- {
- os = "Linux"
- },
- {
- os = "Mac"
- },
-]
diff --git a/testing/secret_spec.gni b/testing/secret_spec.gni
deleted file mode 100644
index ed60035..0000000
--- a/testing/secret_spec.gni
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2018 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.
-
-declare_args() {
- # Location of CloudKMS crypto keys within the fuchsia infra GCE project.
- cloudkms_key_dir =
- "projects/fuchsia-infra/locations/global/keyRings/test-secrets/cryptoKeys"
-}
-
-# Describes a 'secret', a plaintext to be supplied to a test at runtime. The
-# JSON spec of the secret and its associated ciphertext file will be written to
-# $root_build_dir/secret_specs/$target_name.json
-# and
-# $root_build_dir/secret_spec/ciphertext/$target_name.ciphertext
-# respectively.
-#
-# Parameters
-#
-# key_name
-# Required: Name of the private key used for encryption. It is assumed that this key
-# lives in CloudKMS at
-# projects/fuchsia-infra/locations/global/keyRings/test-secrets/cryptoKeys/<key_name>
-#
-# ciphertext_file
-# Required: Relative path to a text file containing the encrypted plaintext
-# (maximum 64KiB)
-template("secret_spec") {
- assert(defined(invoker.key_name), "key_name must be defined.")
- assert(defined(invoker.ciphertext_file), "ciphertext_file must be defined.")
-
- secret_spec_dir = "$root_build_dir/secret_specs"
-
- copy(target_name) {
- sources = [
- invoker.ciphertext_file,
- ]
- outputs = [
- "$secret_spec_dir/ciphertext/$target_name.ciphertext",
- ]
- }
-
- secret_spec = {
- cloudkms_key_path = "$cloudkms_key_dir/${invoker.key_name}"
- ciphertext_file = invoker.ciphertext_file
- }
-
- write_file("$secret_spec_dir/$target_name.json", secret_spec, "json")
-}
diff --git a/testing/test_spec.gni b/testing/test_spec.gni
deleted file mode 100644
index 68258c7..0000000
--- a/testing/test_spec.gni
+++ /dev/null
@@ -1,227 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/testing/environments.gni")
-import("//build/testing/platforms.gni")
-
-# Extension identifying a test spec JSON file.
-_test_spec_ext = "spec.json"
-
-# Extension identifying the runtime dependencies of a test.
-test_data_ext = "spec.data"
-
-# Describes the target device environment in which a test should run. This
-# specification is written in JSON to the build directory, to be aggregated
-# at test-time.
-#
-# Parameters
-#
-# name (required)
-# [string] The test's name.
-#
-# location (required)
-# [string]: Unique reference to a test, e.g., a filesystem path or a
-# fuchsia URI.
-#
-# output_dir (required for fuchsia; else is optional)
-# [string]: Directory where the test spec will be written.
-#
-# environments (optional, default: QEMU for fuchsia; else a VM)
-# [list of scopes] Device environments in which the test should run.
-#
-# Each scope in $environments contains:
-#
-# dimensions (required)
-# [scope] Dimensions of bots to target. Valid dimensions are
-# element-wise subsets of the test platform entries defined in
-# //build/testing/platforms.gni.
-#
-# label (optional)
-# [string] A key on which tests may be grouped. Tests with a given
-# label will be run (1) together, and (2) only with support from the
-# Infrastructure team. Labels are used as an escape hatch from the
-# default testing pipeline for special tests or environments.
-#
-template("test_spec") {
- # A canonical target name is the name of the test itself; however that name
- # must be reserved for the actual test target in the expansion of other
- # templates that give both a test and its spec. With that in mind,
- # `test_name` is provided as a parameter, and the choice of an alternative
- # target name does not ultimately matter.
- not_needed([ "target_name" ])
-
- assert(defined(invoker.name), "name must be defined.")
- assert(defined(invoker.location), "location must be defined.")
- forward_variables_from(invoker,
- [
- "environments",
- "output_dir",
- ])
-
- # Set default environments: QEMU for a fuchsia test, and VMs for linux and mac
- # tests.
- if (is_fuchsia) {
- assert(defined(invoker.output_dir), "output_dir must be defined.")
- envs_specified = defined(environments)
-
- if (!envs_specified) {
- environments = [ qemu_env ]
- }
-
- if (current_cpu == "x64" && !envs_specified) {
- # TODO(joshuaseaton): This is temporary until we are confident that all
- # tests that need to specify hardware are doing so.
- environments += [ nuc_env ]
- } else if (current_cpu == "arm64" && !envs_specified) {
- # TODO(IN-571): Remove after vim2s are ready to be targeted.
- environments += [ vim2_env ]
- }
- } else if (is_linux || is_mac) {
- if (defined(output_dir)) {
- assert(output_dir == target_out_dir,
- "tests specs must be written to target_out_dir")
- } else {
- output_dir = target_out_dir
- }
-
- if (!defined(environments)) {
- if (is_linux) {
- environments = [ linux_env ]
- } else if (is_mac) {
- environments = [ mac_env ]
- }
- }
- } else {
- assert(false, "$current_os not supported")
- }
-
- foreach(env, environments) {
- empty_scope = { # Clear from previous iteration
- }
- assert(defined(env.dimensions) && env.dimensions != empty_scope,
- "each environment must specify dimensions")
- }
-
- # Call "expanding" the operation that takes a scope
- # {
- # x = a
- # y = b
- # z = c
- # ...
- # }
- # and converts it to a list [{x=a}, {y=b}, {z=c},...].
- #
- # Expand each scope of test platform dimensions and group them by architecture
- # (i.e., cpu). The same thing is done below with each environment's dimensions
- # scope to more easily compare.
- target_platform_dims = []
- other_platform_dims = []
- foreach(platform, test_platforms) {
- platform_dims = [] # Clear from previous iteration.
- foreach(key, all_dimension_keys) {
- platform_dims += [
- {
- forward_variables_from(platform, [ key ])
- },
- ]
- }
-
- # Empty scopes may have been introduced to platform_dims, corresponding to
- # non-existent keys;
- # Add and then subtract an empty scope to remove them.
- empty_dim = { # Clear from previous iteration.
- }
- platform_dims += [ empty_dim ]
- platform_dims -= [ empty_dim ]
-
- if (!defined(platform.cpu) || platform.cpu == current_cpu) {
- target_platform_dims += [ platform_dims ]
- } else {
- other_platform_dims += [ platform_dims ]
- }
- }
-
- target_envs = []
- foreach(env, environments) {
- dims = [] # Clear from previous iteration.
- if (defined(env.dimensions)) {
- foreach(key, all_dimension_keys) {
- dims += [
- {
- forward_variables_from(env.dimensions, [ key ])
- },
- ]
- }
- }
- empty_dim = { # Clear from previous iteration.
- }
- dims += [ empty_dim ]
- dims -= [ empty_dim ]
-
- # Check if the environment's dimensions match those of a platform of the
- # target architecture; if a match, include the environment among the
- # test spec's.
- # Note that in GN "A is a subset of B" is equivalent to `A + B - B == []`.
- match = false
- foreach(platform_dims, target_platform_dims) {
- if (dims + platform_dims - platform_dims == []) {
- match = true
- target_envs += [ env ]
- }
- }
-
- # If the environment's dimensions do not match a target architecture, ensure
- # that they match those of a platform of another architecture.
- if (!match) {
- foreach(platform_dims, other_platform_dims) {
- match = match || dims + platform_dims - platform_dims == []
- }
- if (!match) {
- print("Could not match environment specifications for '$target_name':")
- print("$env")
- assert(
- match,
- "Consult //build/testing/platforms.gni for all allowable specifications")
- }
- }
- }
-
- test_spec = {
- test = {
- name = get_label_info(":${invoker.name}", "label_no_toolchain")
- location = invoker.location
- if (is_linux || is_mac) {
- # Trim leading //.
- location = rebase_path(location, root_build_dir)
- }
- os = current_os
- cpu = current_cpu
- }
- environments = [] # Clear from above.
- environments = target_envs
- }
-
- foreach(env, target_envs) {
- dims = [] # Clear from previous iteration.
- dims = env.dimensions
-
- # TODO(IN-571): Delete this block once vim2s are ready to be targeted.
- if (defined(dims.device_type) && dims.device_type == "Khadas Vim2 Max") {
- assert(defined(env.label) && env.label == "vim2",
- "vim2s may not yet be targeted.")
- }
-
- # TODO(IN-819): Delete this block once Linux VMs and Macs are ready to be
- # targeted.
- if (defined(dims.os)) {
- assert(defined(env.label) && env.label == "host",
- "Linux VMs or Macs may not yet be targeted for tests.")
- }
- }
-
- # We take the basename just to make sure no other path components are given
- # in the name, for which we have no guarantees.
- test_name = get_path_info(invoker.name, "name")
- write_file("${output_dir}/${test_name}.${_test_spec_ext}", test_spec, "json")
-}
diff --git a/toolchain/BUILD.gn b/toolchain/BUILD.gn
deleted file mode 100644
index c1b09f6..0000000
--- a/toolchain/BUILD.gn
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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.
-
-import("//build/toolchain/clang_toolchain.gni")
-
-clang_host_toolchain_suite("host_${host_cpu}") {
-}
-
-clang_toolchain_suite("linux_x64") {
- toolchain_cpu = "x64"
- toolchain_os = "linux"
- use_strip = true
-}
-
-clang_toolchain_suite("linux_arm64") {
- toolchain_cpu = "arm64"
- toolchain_os = "linux"
- use_strip = true
-}
diff --git a/toolchain/ccache.gni b/toolchain/ccache.gni
deleted file mode 100644
index 6813b32..0000000
--- a/toolchain/ccache.gni
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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.
-
-# Defines the configuration of ccache.
-
-declare_args() {
- # Set to true to enable compiling with ccache
- use_ccache = false
-}
diff --git a/toolchain/clang_toolchain.gni b/toolchain/clang_toolchain.gni
deleted file mode 100644
index fda5884..0000000
--- a/toolchain/clang_toolchain.gni
+++ /dev/null
@@ -1,565 +0,0 @@
-# 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.
-
-import("//build/config/clang/clang.gni")
-import("//build/toolchain/ccache.gni")
-import("//build/toolchain/goma.gni")
-
-# Each toolchain must define "stamp" and "copy" tools,
-# but they are always the same in every toolchain.
-stamp_command = "touch {{output}}"
-stamp_description = "STAMP {{output}}"
-
-# We use link instead of copy; the way "copy" tool is being used is
-# compatible with links since Ninja is tracking changes to the source.
-copy_command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})"
-copy_description = "COPY {{source}} {{output}}"
-
-# Defines a Clang-based toolchain.
-#
-# Parameters
-#
-# toolchain_cpu
-# Required: Value of "current_cpu" inside this toolchain.
-#
-# toolchain_os
-# Required: Value of "current_os" inside this toolchain.
-#
-# toolchain_args
-# Optional: Scope specifying build arguments to override in this
-# toolchain context.
-# NOTE! Do not use this in the toolchain used as the default toolchain.
-# It will have no effect, and you will be confused.
-#
-# use_strip
-# Required: Whether to strip binaries, leaving unstripped ones
-# in lib.unstripped and exe.unstripped subdirectories.
-#
-# prefix
-# Optional: The path from which "cc", "cxx", "ar", "ld" and
-# "strip" will be found (unless overridden). If not given,
-# prefix defaults to $clang_prefix.
-#
-# cc
-# cxx
-# ar
-# ld
-# strip
-# Optional: Override default tool names.
-#
-# use_ccache, use_goma
-# Optional: Override the global setting, useful to opt out of
-# ccache/goma in a particular toolchain.
-#
-# deps
-# Optional: Dependencies of this toolchain.
-#
-# propagates_configs
-# Optional: public_configs should escape this toolchain via deps
-#
-template("clang_toolchain") {
- toolchain(target_name) {
- assert(defined(invoker.toolchain_cpu),
- "clang_toolchain() must specify a \"toolchain_cpu\"")
- assert(defined(invoker.toolchain_os),
- "clang_toolchain() must specify a \"toolchain_os\"")
-
- compiler_prefix = ""
- if (defined(invoker.use_goma)) {
- use_goma = invoker.use_goma
- }
- if (use_goma) {
- compiler_prefix = "$goma_dir/gomacc "
- } else {
- if (defined(invoker.use_ccache)) {
- use_ccache = invoker.use_ccache
- }
- if (use_ccache) {
- compiler_prefix = "ccache "
- }
- }
-
- prefix = clang_prefix
- if (defined(invoker.prefix)) {
- prefix = invoker.prefix
- }
-
- # Set all tools to defaults
- cc = compiler_prefix + "${prefix}/clang"
- cxx = compiler_prefix + "${prefix}/clang++"
- ar = "${prefix}/llvm-ar"
- ld = cxx
-
- forward_variables_from(invoker, [ "use_strip" ])
- if (use_strip) {
- if (invoker.toolchain_os == "mac") {
- strip = "xcrun strip"
- } else {
- strip = "${prefix}/llvm-objcopy"
- }
- }
-
- # Override any tools as requested by the invoker
- if (defined(invoker.cc)) {
- cc = compiler_prefix + invoker.cc
- }
- if (defined(invoker.cxx)) {
- cxx = compiler_prefix + invoker.cxx
- }
- forward_variables_from(invoker,
- [
- "ar",
- "deps",
- "ld",
- "propagates_configs",
- "strip",
- ])
-
- # These library switches can apply to all tools below.
- lib_switch = "-l"
- lib_dir_switch = "-L"
-
- tool("cc") {
- depfile = "{{output}}.d"
- command = "$cc -MD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
- depsformat = "gcc"
- description = "CC {{output}}"
- outputs = [
- "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
- ]
- }
-
- tool("cxx") {
- depfile = "{{output}}.d"
- command = "$cxx -MD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}"
- depsformat = "gcc"
- description = "CXX {{output}}"
- outputs = [
- "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
- ]
- }
-
- tool("asm") {
- depfile = "{{output}}.d"
- command = "$cc -MD -MF $depfile {{defines}} {{include_dirs}} {{asmflags}} -c {{source}} -o {{output}}"
- depsformat = "gcc"
- description = "ASM {{output}}"
- outputs = [
- "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
- ]
- }
-
- tool("objc") {
- depfile = "{{output}}.d"
- command = "$cc -MD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} {{cflags_objc}} -c {{source}} -o {{output}}"
- depsformat = "gcc"
- description = "OBJC {{output}}"
- outputs = [
- "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
- ]
- }
-
- tool("objcxx") {
- depfile = "{{output}}.d"
- command = "$cxx -MD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} {{cflags_objcc}} -c {{source}} -o {{output}}"
- depsformat = "gcc"
- description = "OBJCXX {{output}}"
- outputs = [
- "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
- ]
- }
-
- tool("alink") {
- rspfile = "{{output}}.rsp"
- command =
- "rm -f {{output}} && $ar {{arflags}} rcsD {{output}} @\"$rspfile\""
- description = "AR {{output}}"
- rspfile_content = "{{inputs}}"
- outputs = [
- "{{output_dir}}/{{target_output_name}}{{output_extension}}",
- ]
- default_output_dir = "{{target_out_dir}}"
- default_output_extension = ".a"
- output_prefix = "lib"
- }
-
- tool("solink") {
- outname = "{{target_output_name}}{{output_extension}}"
- outfile = "{{output_dir}}/$outname"
- rspfile = "$outfile.rsp"
- unstripped_outfile = outfile
- if (use_strip) {
- unstripped_outfile = "{{output_dir}}/lib.unstripped/{{target_output_name}}{{output_extension}}"
- }
- if (invoker.toolchain_os == "mac") {
- command = "$ld -shared {{ldflags}} -Wl,-install_name,@rpath/\"{{target_output_name}}{{output_extension}}\" -o \"$unstripped_outfile\" -Wl,-filelist,\"$rspfile\" {{libs}} {{solibs}}"
- rspfile_content = "{{inputs_newline}}"
- default_output_extension = ".dylib"
- } else {
- command = "$ld -shared {{ldflags}} -o \"$unstripped_outfile\" -Wl,--Map=\"$unstripped_outfile.map\" -Wl,-soname=\"$outname\" @\"$rspfile\""
- rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive {{libs}}"
- default_output_extension = ".so"
- }
- if (use_strip) {
- if (invoker.toolchain_os == "mac") {
- command += " && $strip -x \"$unstripped_outfile\" -o \"$outfile\""
- } else {
- command +=
- " && $strip --strip-all" + " --build-id-link-dir=.build-id" +
- " --build-id-link-input=.debug" + " --build-id-link-output=" +
- " \"$unstripped_outfile\" \"$outfile\""
- }
- }
- description = "SOLINK $outfile"
- default_output_dir = "{{root_out_dir}}"
- output_prefix = "lib"
- outputs = [
- outfile,
- ]
- if (outfile != unstripped_outfile) {
- outputs += [ unstripped_outfile ]
- }
- }
-
- tool("solink_module") {
- outname = "{{target_output_name}}{{output_extension}}"
- outfile = "{{output_dir}}/$outname"
- rspfile = "$outfile.rsp"
- if (use_strip) {
- unstripped_outfile = "{{root_out_dir}}/lib.unstripped/{{target_output_name}}{{output_extension}}"
- } else {
- unstripped_outfile = outfile
- }
- if (invoker.toolchain_os == "mac") {
- command = "$ld -shared {{ldflags}} -o \"$unstripped_outfile\" -Wl,-filelist,\"$rspfile\" {{libs}} {{solibs}}"
- rspfile_content = "{{inputs_newline}}"
- default_output_extension = ".dylib"
- } else {
- command = "$ld -shared {{ldflags}} -o \"$unstripped_outfile\" -Wl,--Map=\"$unstripped_outfile.map\" -Wl,-soname=\"$outname\" @\"$rspfile\""
- rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive {{libs}}"
- default_output_extension = ".so"
- }
- if (use_strip) {
- if (invoker.toolchain_os == "mac") {
- command += " && $strip -x \"$unstripped_outfile\" -o \"$outfile\""
- } else {
- command +=
- " && $strip --strip-all" + " --build-id-link-dir=.build-id" +
- " --build-id-link-input=.debug" + " --build-id-link-output=" +
- " \"$unstripped_outfile\" \"$outfile\""
- }
- }
- description = "SOLINK $outfile"
- default_output_dir = "{{root_out_dir}}"
- outputs = [
- outfile,
- ]
- if (outfile != unstripped_outfile) {
- outputs += [ unstripped_outfile ]
- }
- }
-
- tool("link") {
- outfile = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
- rspfile = "$outfile.rsp"
- unstripped_outfile = outfile
- if (use_strip) {
- unstripped_outfile = "{{root_out_dir}}/exe.unstripped/{{target_output_name}}{{output_extension}}"
- }
- if (invoker.toolchain_os == "mac") {
- command = "$ld {{ldflags}} -o \"$unstripped_outfile\" -Wl,-filelist,\"$rspfile\" {{solibs}} {{libs}}"
- rspfile_content = "{{inputs_newline}}"
- } else {
- command = "$ld {{ldflags}} -o \"$unstripped_outfile\" -Wl,--Map=\"$unstripped_outfile.map\" -Wl,--start-group @\"$rspfile\" {{solibs}} -Wl,--end-group {{libs}}"
- rspfile_content = "{{inputs}}"
- }
- if (use_strip) {
- if (invoker.toolchain_os == "mac") {
- command += " && $strip \"$unstripped_outfile\" -o \"$outfile\""
- } else {
- command +=
- " && " + "$strip --strip-sections" +
- " --build-id-link-dir=.build-id" +
- " --build-id-link-input=.debug" + " --build-id-link-output=" +
- " \"$unstripped_outfile\" \"$outfile\""
- }
- }
- description = "LINK $outfile"
- default_output_dir = "{{root_out_dir}}"
- outputs = [
- outfile,
- ]
- if (outfile != unstripped_outfile) {
- outputs += [ unstripped_outfile ]
- }
- }
-
- tool("stamp") {
- command = stamp_command
- description = stamp_description
- }
- tool("copy") {
- command = copy_command
- description = copy_description
- }
-
- # 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 = {
- current_cpu = invoker.toolchain_cpu
- current_os = invoker.toolchain_os
-
- # These values need to be passed through unchanged.
- target_os = target_os
- target_cpu = target_cpu
-
- if (defined(invoker.toolchain_args)) {
- # The invoker isn't allowed to fiddle with the essential settings.
- forward_variables_from(invoker.toolchain_args,
- "*",
- [
- "current_cpu",
- "current_os",
- "target_os",
- "target_cpu",
- ])
- }
- }
- }
-}
-
-# Private subroutine of clang_toolchain_suite(), below.
-template("_clang_toolchain_variant") {
- this_variant = invoker.this_variant
- this_invoker = invoker.this_invoker
- not_needed([ "this_invoker" ])
-
- # Every toolchain needs the global select_variant_canonical passed
- # down explicitly via toolchain_args. See BUILDCONFIG.gn.
- pass_through_canonical = select_variant_canonical
-
- clang_toolchain(target_name) {
- forward_variables_from(invoker.clang_toolchain_args, "*")
- toolchain_args = {
- # GN's "can't overwrite a nonempty scope/list" rule also applies
- # to shadowing bindings in inner scopes. Since there is always
- # a global binding of `toolchain_variant` that is being shadowed
- # here, we have to set it to the empty scope first.
- toolchain_variant = {
- }
- toolchain_variant = {
- forward_variables_from(this_variant, "*")
- is_pic_default = invoker.this_pic_default
- }
- if (defined(this_variant.toolchain_args)) {
- forward_variables_from(this_variant.toolchain_args, "*")
- }
- if (defined(this_invoker.toolchain_args)) {
- forward_variables_from(this_invoker.toolchain_args, "*")
- }
-
- # See comment above.
- select_variant_canonical = []
- select_variant_canonical = pass_through_canonical
- }
- }
-}
-
-# Defines a standard suite of Clang-based toolchains.
-#
-# Parameters
-#
-# with_shared:
-# Optional: If this toolchain will have a "-shared" companion.
-# (Each variant toolchain has its own "-shared" companion.)
-# Pre-set to true. Set this to false if either no shared libraries
-# are used in this toolchain, or it's used to build nothing but
-# shared libraries anyway.
-#
-# See clang_toolchain for others. Most parameters are just forwarded there.
-#
-template("clang_toolchain_suite") {
- # First get a canonicalized, flat list of variant specs that includes the
- # null variant. Canonical variants don't have `host_only`/`target_only` but
- # instead take the body of one or the other, have [] for any missing list
- # fields, have .suffix as well as .name (or implied .name), and have .base.
- is_host = defined(invoker.toolchain_os) && invoker.toolchain_os == host_os
- not_needed([ "is_host" ])
- variants = []
- foreach(variant, [ false ] + known_variants) {
- variants += [
- {
- base = get_label_info(":$target_name", "label_no_toolchain")
- configs = []
- remove_common_configs = []
- remove_shared_configs = []
- deps = []
- if (variant == false) {
- name = ""
- suffix = ""
- } else {
- if (is_host) {
- if (defined(variant.host_only)) {
- forward_variables_from(variant.host_only, "*")
- }
- } else {
- if (defined(variant.target_only)) {
- forward_variables_from(variant.target_only, "*")
- }
- }
- forward_variables_from(variant,
- "*",
- [
- "host_only",
- "target_only",
- ])
- if (!defined(name)) {
- name = ""
- assert(configs != [],
- "variant with no name must include nonempty configs")
- foreach(config, configs) {
- if (name != "") {
- name += "-"
- }
- name += get_label_info(config, "name")
- }
- }
- suffix = "-$name"
- }
- },
- ]
- }
-
- # Now elaborate the list with all the universal variant combinations.
- # Each universal variant becomes its own standalone variant when
- # combined with the null variant.
- # TODO(crbug.com/818525): The `+ []` works around a bug that crashes
- # GN with heap-use-after-free: the no-op `+` forces a copy of the list
- # in `variants`; without it, GN uses the same std::vector object in
- # the looping logic that it mutates in place for `variants +=`.
- foreach(variant, variants + []) {
- foreach(universal_variant, universal_variants) {
- variants += [
- {
- forward_variables_from(variant, "*", [ "toolchain_args" ])
- toolchain_args = {
- if (defined(variant.toolchain_args)) {
- forward_variables_from(variant.toolchain_args, "*")
- }
- if (defined(universal_variant.toolchain_args)) {
- forward_variables_from(universal_variant.toolchain_args, "*")
- }
- }
- if (name == "") {
- name = universal_variant.name
- } else {
- name += "-${universal_variant.name}"
- }
- suffix += "-${universal_variant.name}"
- configs += universal_variant.configs
- if (defined(universal_variant.remove_common_configs)) {
- remove_common_configs += universal_variant.remove_common_configs
- }
- if (defined(universal_variant.remove_shared_configs)) {
- remove_shared_configs += universal_variant.remove_shared_configs
- }
- if (defined(universal_variant.deps)) {
- deps += universal_variant.deps
- }
- },
- ]
- }
- }
-
- # Exclude the arguments that are for us or are verboten.
- invoker_clang_toolchain_args = {
- forward_variables_from(invoker,
- "*",
- [
- "toolchain_args",
- "toolchain_variant",
- "with_shared",
- "variants",
- ])
- }
- not_needed([ "invoker_clang_toolchain_args" ])
-
- # Build up an array of boolean that's parallel to `select_variant`.
- # Below, we'll set `selectors_used[i]` to true when `select_variant[i]`
- # matches the name of some variant.
- selectors_used = []
- i = 0
- foreach(selector, select_variant_canonical) {
- selectors_used += [ false ]
- i = i + 1
- }
-
- foreach(variant, variants) {
- # Figure out if this variant is actually used. Don't bother to define
- # toolchains for variants that are never used. This cuts down on extra
- # GN processing so `gn gen` is faster. More importantly, it ensures
- # that there isn't a toolchain defined using toolchain_args build
- # arguments whose declare_args() block hasn't been imported because
- # it's defined in a BUILD.gn file containing only configs that are
- # never referenced by any target if the variant is never selected.
- variant_used = variant.name == ""
- if (!variant_used) {
- i = 0
- foreach(selector, select_variant_canonical) {
- assert(defined(selector.variant),
- "`select_variant` clause missing `variant` field: $selector")
- if (selector.variant == variant.name) {
- variant_used = true
- selectors_used[i] = true
- } else if (selector.variant == false) {
- selectors_used[i] = true
- }
- i = i + 1
- }
- }
-
- if (variant_used) {
- _clang_toolchain_variant("${target_name}${variant.suffix}") {
- clang_toolchain_args = invoker_clang_toolchain_args
- this_variant = variant
- this_invoker = invoker
- this_pic_default = false
- }
- if (invoker.with_shared) {
- _clang_toolchain_variant("${target_name}${variant.suffix}-shared") {
- clang_toolchain_args = {
- forward_variables_from(invoker_clang_toolchain_args, "*")
- propagates_configs = true
- }
- this_variant = variant
- this_invoker = invoker
- this_pic_default = true
- }
- }
- }
- }
-
- i = 0
- foreach(selector, select_variant_canonical) {
- assert(selectors_used[i],
- "unknown variant in `select_variant` clause: ${selector}")
- i = i + 1
- }
- not_needed([ "selectors_used" ])
-}
-
-set_defaults("clang_toolchain_suite") {
- with_shared = true
-}
-
-template("clang_host_toolchain_suite") {
- not_needed([ "invoker" ])
- clang_toolchain_suite(target_name) {
- toolchain_cpu = host_cpu
- toolchain_os = host_os
-
- with_shared = false
- use_strip = false
- }
-}
diff --git a/toolchain/fuchsia/BUILD.gn b/toolchain/fuchsia/BUILD.gn
deleted file mode 100644
index 1d9e124..0000000
--- a/toolchain/fuchsia/BUILD.gn
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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.
-
-import("//build/toolchain/clang_toolchain.gni")
-
-clang_toolchain_suite(target_cpu) {
- toolchain_cpu = target_cpu
- toolchain_os = target_os
-
- use_strip = true
-
- # Depend on the Zircon build to ensure the sysroot is available by the time
- # we start compiling stuff.
- deps = [
- "//zircon/public/sysroot(//build/zircon:zircon_toolchain)",
- ]
-}
diff --git a/toolchain/goma.gni b/toolchain/goma.gni
deleted file mode 100644
index 5db0583..0000000
--- a/toolchain/goma.gni
+++ /dev/null
@@ -1,13 +0,0 @@
-# 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.
-
-# Defines the configuration of Goma.
-
-declare_args() {
- # Set to true to enable distributed compilation using Goma.
- use_goma = false
-
- # Absolute directory containing the Goma source code.
- goma_dir = getenv("HOME") + "/goma"
-}
diff --git a/toolchain/variant.gni b/toolchain/variant.gni
deleted file mode 100644
index 0492fee..0000000
--- a/toolchain/variant.gni
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2017 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.
-
-# Template to define a config for use in the `known_variants` list.
-# `variant` is used just like `config`, but it also accepts two other
-# optional parameters:
-#
-# common_flags
-# This is a shorthand for appending the same thing to cflags,
-# asmflags, and ldflags. Most flags that affect code generation
-# should be used uniformly in compilation, assembly, and linking.
-# If cflags, asmflags, or ldflags is also specified, common_flags
-# will be appended to it.
-#
-# deps
-# This lists labels that will be automatically added to the deps list
-# of each executable target built in this variant.
-#
-template("variant") {
- config(target_name) {
- asmflags = []
- cflags = []
- ldflags = []
- forward_variables_from(invoker,
- "*",
- [
- "common_flags",
- "deps",
- ])
- if (defined(invoker.common_flags)) {
- asmflags += invoker.common_flags
- cflags += invoker.common_flags
- ldflags += invoker.common_flags
- }
- }
- group("${target_name}_deps") {
- # Propagate it as public_deps so that targets in deps can have
- # public_configs that will be applied to variant executables.
- if (defined(invoker.deps)) {
- public_deps = invoker.deps
- }
- }
-}
diff --git a/tools/README.md b/tools/README.md
deleted file mode 100644
index 79b8b77..0000000
--- a/tools/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains a collection of tools used in the GN build:
-- [JSON merge](json_merge/): merges JSON files;
-- [JSON validator](json_validator/): verifies that JSON files match a given
- schema;
-- [Tar maker](tar_maker/): efficiently creates tarballs from file manifests.
diff --git a/tools/json_merge/BUILD.gn b/tools/json_merge/BUILD.gn
deleted file mode 100644
index 0f017be..0000000
--- a/tools/json_merge/BUILD.gn
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/host.gni")
-import("//build/test.gni")
-
-source_set("srcs") {
- sources = [
- "json_merge.cc",
- "json_merge.h",
- ]
-
- public_deps = [
- "//third_party/rapidjson",
- ]
-}
-
-executable("json_merge") {
- sources = [
- "main.cc",
- ]
-
- deps = [
- ":srcs",
- ]
-}
-
-test("json_merge_test") {
- sources = [
- "test.cc",
- ]
-
- deps = [
- ":srcs",
- "//third_party/googletest:gtest_main",
- ]
-}
-
-install_host_tools("install") {
- deps = [
- ":json_merge",
- ]
-
- outputs = [
- "json_merge",
- ]
-}
diff --git a/tools/json_merge/example/BUILD.gn b/tools/json_merge/example/BUILD.gn
deleted file mode 100644
index 9d2a291..0000000
--- a/tools/json_merge/example/BUILD.gn
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/tools/json_merge/json_merge.gni")
-
-json_merge("merged.json") {
- sources = [
- "black_white.json",
- "rgb.json",
- ]
-
- minify = true
-}
diff --git a/tools/json_merge/example/black_white.json b/tools/json_merge/example/black_white.json
deleted file mode 100644
index db5d907..0000000
--- a/tools/json_merge/example/black_white.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "black": {
- "code": {
- "rgba": [0,0,0,1],
- "hex": "#000"
- }
- },
- "white": {
- "code": {
- "rgba": [0,0,0,1],
- "hex": "#FFF"
- }
- }
-}
diff --git a/tools/json_merge/example/rgb.json b/tools/json_merge/example/rgb.json
deleted file mode 100644
index 5949376..0000000
--- a/tools/json_merge/example/rgb.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "red": {
- "code": {
- "rgba": [255,0,0,1],
- "hex": "#F00"
- }
- },
- "green": {
- "code": {
- "rgba": [0,255,0,1],
- "hex": "#0F0"
- }
- },
- "blue": {
- "code": {
- "rgba": [0,0,255,1],
- "hex": "#00F"
- }
- }
-}
diff --git a/tools/json_merge/json_merge.cc b/tools/json_merge/json_merge.cc
deleted file mode 100644
index f041531..0000000
--- a/tools/json_merge/json_merge.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2018 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.
-
-#include "build/tools/json_merge/json_merge.h"
-
-#include "rapidjson/document.h"
-#include "rapidjson/error/en.h"
-#include "rapidjson/filewritestream.h"
-#include "rapidjson/istreamwrapper.h"
-#include "rapidjson/ostreamwrapper.h"
-#include "rapidjson/prettywriter.h"
-#include "rapidjson/writer.h"
-
-int JSONMerge(const std::vector<struct input_file>& inputs,
- std::ostream& output, std::ostream& errors, bool minify) {
- rapidjson::Document merged;
- merged.SetObject();
- auto& allocator = merged.GetAllocator();
-
- for (auto input_it = inputs.begin(); input_it != inputs.end(); ++input_it) {
- rapidjson::IStreamWrapper isw(*input_it->contents.get());
- rapidjson::Document input_doc;
- rapidjson::ParseResult parse_result = input_doc.ParseStream(isw);
- if (!parse_result) {
- errors << "Failed to parse " << input_it->name << "!\n";
- errors << rapidjson::GetParseError_En(parse_result.Code()) << " (offset "
- << parse_result.Offset() << ")\n";
- return 1;
- }
- if (!input_doc.IsObject()) {
- errors << input_it->name << " is not a JSON object!\n";
- return 1;
- }
-
- for (auto value_it = input_doc.MemberBegin();
- value_it != input_doc.MemberEnd(); ++value_it) {
- if (merged.HasMember(value_it->name)) {
- errors << input_it->name << " has a conflicting value for key \""
- << value_it->name.GetString() << "\"!\n";
- return 1;
- }
- merged.AddMember(value_it->name,
- rapidjson::Value(value_it->value, allocator).Move(),
- allocator);
- }
- }
-
- rapidjson::OStreamWrapper osw(output);
- if (minify) {
- rapidjson::Writer<rapidjson::OStreamWrapper> writer(osw);
- merged.Accept(writer);
- } else {
- rapidjson::PrettyWriter<rapidjson::OStreamWrapper> writer(osw);
- merged.Accept(writer);
- }
-
- return 0;
-}
diff --git a/tools/json_merge/json_merge.gni b/tools/json_merge/json_merge.gni
deleted file mode 100644
index 989bf6b..0000000
--- a/tools/json_merge/json_merge.gni
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/compiled_action.gni")
-
-# Merge one or more json files.
-#
-# If any input is not a valid JSON, the merge operation will fail. Consequently
-# you can "merge" one JSON file to perform validation.
-# If any two inputs overlap in key space, the merge operation will fail.
-# Optionally the merged output can be minified. Consequently you can "merge"
-# one JSON file to perform minification.
-#
-# Parameters
-#
-# sources (required)
-# [files list] One or more JSON files to merge.
-#
-# minify (optional)
-# [boolean] Whether to minify the result.
-# Minified JSON is functionally equivalent but less readable to humans.
-#
-# testonly (optional)
-# visibility (optional)
-# Standard GN meaning.
-#
-# Example of usage:
-#
-# json_merge("merged.json") {
-# sources = [ "one.json", "two.json" ]
-# minify = true
-# }
-template("json_merge") {
- compiled_action(target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "sources",
- "testonly",
- "visibility",
- "minify",
- ])
-
- tool = "//build/tools/json_merge"
-
- merged_output = "$target_out_dir/$target_name"
- outputs = [
- merged_output,
- ]
-
- args = []
- foreach(source, sources) {
- args += [
- "--input",
- rebase_path(source, root_build_dir),
- ]
- }
- args += [
- "--output",
- rebase_path(merged_output, root_build_dir),
- ]
- if (defined(minify) && minify) {
- args += [ "--minify" ]
- }
- }
-}
diff --git a/tools/json_merge/json_merge.h b/tools/json_merge/json_merge.h
deleted file mode 100644
index f42d14e..0000000
--- a/tools/json_merge/json_merge.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef BUILD_TOOLS_JSON_MERGE_JSON_MERGE_H_
-#define BUILD_TOOLS_JSON_MERGE_JSON_MERGE_H_
-
-#include <iostream>
-#include <memory>
-#include <vector>
-
-struct input_file {
- std::string name;
- std::unique_ptr<std::istream> contents;
-};
-
-// Merge one or more JSON documents.
-// Returns zero if successful.
-// On non-zero return value, writes human-readable errors to |errors|.
-// If |minify| then output merged JSON will be minified.
-int JSONMerge(const std::vector<struct input_file>& inputs,
- std::ostream& output, std::ostream& errors, bool minify);
-
-#endif // BUILD_TOOLS_JSON_MERGE_JSON_MERGE_H_
diff --git a/tools/json_merge/main.cc b/tools/json_merge/main.cc
deleted file mode 100644
index 34458f7..0000000
--- a/tools/json_merge/main.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2018 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.
-
-#include <getopt.h>
-#include <cstdio>
-#include <fstream>
-#include <iostream>
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "build/tools/json_merge/json_merge.h"
-
-static void usage(const char* exe_name) {
- fprintf(
- stderr,
- "Usage: %s --input [infile] [--output outfile] [--minify]\n"
- "\n"
- "Merge one or more JSON files to a single JSON file.\n"
- "If any input is not a valid JSON, the merge operation will fail.\n"
- "Consequently you can \"merge\" one JSON file to perform validation.\n"
- "If any two inputs overlap in the top-level key space, the merge "
- "operation will fail.\n"
- "Optionally the merged output can be minified.\n"
- "Consequently you can \"merge\" one JSON file to perform "
- "minification.\n"
- "\n"
- "Example usages:\n"
- "%s --input in1.json --input in2.json # merges to STDOUT\n"
- "%s --input in1.json --minify --output out.json # minifies to out.json\n"
- "%s --help # prints this message\n",
- exe_name, exe_name, exe_name, exe_name);
-}
-
-int main(int argc, char** argv) {
- std::vector<input_file> inputs;
- std::ofstream output_file;
- auto output_buf = std::cout.rdbuf();
- bool minify = false;
-
- static struct option long_options[] = {
- {"input", required_argument, 0, 'i'},
- {"output", required_argument, 0, 'o'},
- {"minify", no_argument, 0, 'm'},
- {"help", no_argument, 0, 'h'},
- };
-
- int opt;
- while ((opt = getopt_long(argc, argv, "iomh", long_options, nullptr)) != -1) {
- switch (opt) {
- case 'i': {
- auto input = std::make_unique<std::ifstream>(optarg);
- if (!input->is_open()) {
- fprintf(stderr, "Could not read from input file %s\n", optarg);
- return 1;
- }
- inputs.push_back({.name = optarg, .contents = std::move(input)});
- break;
- }
-
- case 'o':
- output_file.open(optarg);
- if (!output_file.is_open()) {
- fprintf(stderr, "Could not write to output file %s\n", optarg);
- return 1;
- }
- output_buf = output_file.rdbuf();
- break;
-
- case 'm':
- minify = true;
- break;
-
- case 'h':
- usage(argv[0]);
- return 0;
- }
- }
-
- std::ostream output(output_buf);
- return JSONMerge(inputs, output, std::cerr, minify);
-}
diff --git a/tools/json_merge/test.cc b/tools/json_merge/test.cc
deleted file mode 100644
index 5c412a2..0000000
--- a/tools/json_merge/test.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2018 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.
-
-#include <sstream>
-
-#include "build/tools/json_merge/json_merge.h"
-#include "gtest/gtest.h"
-
-namespace {
-
-class JsonMerge : public ::testing::Test {
- protected:
- void AddInput(const std::string& filename, const std::string& input) {
- inputs.push_back({.name = filename,
- .contents = std::make_unique<std::istringstream>(input)});
- }
-
- int Merge(bool minify) { return JSONMerge(inputs, output, errors, minify); }
-
- std::string Output() { return output.str(); }
-
- std::string Errors() { return errors.str(); }
-
- void ExpectNoErrors() { EXPECT_TRUE(Errors().empty()); }
-
- void ExpectError(const std::string& expected_error) {
- EXPECT_EQ(Errors(), expected_error);
- }
-
- private:
- std::vector<input_file> inputs;
- std::ostringstream output;
- std::ostringstream errors;
-};
-
-TEST_F(JsonMerge, MergeOne) {
- const std::string input = R"JSON({
- "key1": {
- "key2": [
- "value1",
- "value2",
- "value3"
- ],
- "key3": "value4"
- }
-})JSON";
- AddInput("file1.json", input);
-
- EXPECT_EQ(Merge(false), 0);
- EXPECT_EQ(Output(), input);
- ExpectNoErrors();
-}
-
-TEST_F(JsonMerge, MergeOneAndMinify) {
- const std::string input = R"JSON({
- "key1": {
- "key2": [
- "value1",
- "value2",
- "value3"
- ],
- "key3": "value4"
- }
-})JSON";
- AddInput("file1.json", input);
-
- EXPECT_EQ(Merge(true), 0);
- const std::string output =
- R"JSON({"key1":{"key2":["value1","value2","value3"],"key3":"value4"}})JSON";
- EXPECT_EQ(Output(), output);
- ExpectNoErrors();
-}
-
-TEST_F(JsonMerge, MergeThree) {
- const std::string input1 = R"JSON({
- "key1": "value1"
-})JSON";
- AddInput("file1.json", input1);
- const std::string input2 = R"JSON({
- "key2": "value2"
-})JSON";
- AddInput("file2.json", input2);
- const std::string input3 = R"JSON({
- "key3": "value3"
-})JSON";
- AddInput("file3.json", input3);
-
- EXPECT_EQ(Merge(false), 0);
- const std::string output = R"JSON({
- "key1": "value1",
- "key2": "value2",
- "key3": "value3"
-})JSON";
- EXPECT_EQ(Output(), output);
- ExpectNoErrors();
-}
-
-TEST_F(JsonMerge, MergeConflict) {
- const std::string input1 = R"JSON({
- "key1": "value1"
-})JSON";
- AddInput("file1.json", input1);
- const std::string input2 = R"JSON({
- "key1": "value2"
-})JSON";
- AddInput("file2.json", input2);
-
- EXPECT_NE(Merge(false), 0);
- ExpectError("file2.json has a conflicting value for key \"key1\"!\n");
-}
-
-} // namespace
diff --git a/tools/json_validator/BUILD.gn b/tools/json_validator/BUILD.gn
deleted file mode 100644
index bc071b8..0000000
--- a/tools/json_validator/BUILD.gn
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/host.gni")
-
-executable("json_validator") {
- sources = [
- "main.cc",
- ]
-
- deps = [
- "//third_party/rapidjson",
- ]
-}
-
-install_host_tools("install") {
- deps = [
- ":json_validator",
- ]
-
- outputs = [
- "json_validator",
- ]
-}
diff --git a/tools/json_validator/README.md b/tools/json_validator/README.md
deleted file mode 100644
index ecbccb5..0000000
--- a/tools/json_validator/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# JSON validator
-
-The present tool verifies JSON files against schemas defined with
-[JSON Schema][json_schema].
-
-## Usage
-
-```
-json_validator <path to schema> <path to file to verify> [path to stamp file]
-```
-
-The third argument represents the path to a stamp file which gets updated when
-the tool runs successfully. This argument is mostly designed for integration
-with GN actions.
-
-## Schema references
-
-The schema passed to the tool may refer to other schema files. The tool will be
-able to locate schema references for schemas specified as paths relative to the
-folder containing the main schema.
-
-For example, if the tool is given a schema `/path/to/main_schema.json` and that
-schema contains a reference to `file:another/sub_schema.json#/definitions/foo`,
-the tool will look for the second schema at `path/to/another/sub_schema.json`.
-
-Paths to schemas may be specified as `file:another/sub_schema.json` or more
-simply `another/sub_schema.json`.
-
-
-[json_schema]: http://json-schema.org/
diff --git a/tools/json_validator/main.cc b/tools/json_validator/main.cc
deleted file mode 100644
index e55b2f3..0000000
--- a/tools/json_validator/main.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2018 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.
-
-#include <libgen.h>
-
-#include <fstream>
-#include <map>
-#include <regex>
-#include <string>
-
-#include "rapidjson/document.h"
-#include "rapidjson/schema.h"
-#include "rapidjson/stringbuffer.h"
-
-using namespace rapidjson;
-
-// Reads the content of a file into a JSON document.
-bool ReadDocument(std::string file, Document* document) {
- std::ifstream file_stream(file);
- if (!file_stream.is_open()) {
- fprintf(stderr, "Error: unable to open file %s.\n", file.c_str());
- return false;
- }
- std::string content((std::istreambuf_iterator<char>(file_stream)),
- std::istreambuf_iterator<char>());
- file_stream.close();
- if (document->Parse(content).HasParseError()) {
- fprintf(stderr, "Error: unable to parse JSON in file %s.\n", file.c_str());
- return false;
- }
- return true;
-}
-
-// A schema provider that can find schemas specified as URIs/paths relative to
-// the main schema.
-class LocalSchemaProvider : public IRemoteSchemaDocumentProvider {
-
- public:
- explicit LocalSchemaProvider(const std::string directory) :
- directory_(directory),
- has_errors_(false) {}
- ~LocalSchemaProvider() override {}
-
- const SchemaDocument* GetRemoteDocument(
- const char* uri, SizeType length) override {
- std::string input(uri, length);
- std::smatch matches;
- std::regex pattern("^(file:)?([^/#:]+)$");
- if (!std::regex_search(input, matches, pattern)) {
- fprintf(stderr, "Error: could not find schema %s.\n", input.c_str());
- has_errors_ = true;
- return nullptr;
- }
- std::string file_name = matches[matches.size() == 2 ? 1 : 2].str();
- if (documents_[file_name]) {
- return documents_[file_name].get();
- }
- Document schema_document;
- std::string file_path = directory_ + "/" + file_name;
- if (!ReadDocument(file_path, &schema_document)) {
- // ReadDocument already prints a useful error message.
- has_errors_ = true;
- return nullptr;
- }
- documents_[file_name] = std::make_unique<SchemaDocument>(schema_document);
- return documents_[file_name].get();
- }
-
- // Returns true if some schemas could not be resolved.
- // By default, missing schemas are just ignored.
- bool HasErrors() {
- return has_errors_;
- }
-
- private:
- // Map of resolved documents.
- std::map<std::string, std::unique_ptr<SchemaDocument>> documents_;
- // Base directory for schema paths.
- const std::string directory_;
- // Whether some schema references could not be resolved.
- bool has_errors_;
-};
-
-// Returns the base directory of a given file.
-std::string BaseDir(const std::string file) {
- char* file_copy = strdup(file.c_str());
- char* base = dirname(file_copy);
- std::string result(base);
- free(file_copy);
- return result;
-}
-
-int main(int argc, const char** argv) {
- if (argc < 3 || argc > 4) {
- printf("Usage: %s <schema> <file> [stamp]\n", argv[0]);
- return 1;
- }
- const std::string schema_path = argv[1];
- const std::string file_path = argv[2];
-
- Document schema_document;
- if (!ReadDocument(schema_path, &schema_document)) {
- return 1;
- }
- Document file_document;
- if (!ReadDocument(file_path, &file_document)) {
- return 1;
- }
-
- std::string schema_base = BaseDir(schema_path);
- LocalSchemaProvider provider(schema_base);
- SchemaDocument schema(schema_document, nullptr /* uri */, 0 /* uriLength */,
- &provider);
- SchemaValidator validator(schema);
- if (!file_document.Accept(validator)) {
- fprintf(stderr, "Error: the file %s is invalid according to schema %s.\n",
- file_path.c_str(), schema_path.c_str());
- StringBuffer buffer;
- validator.GetInvalidSchemaPointer().StringifyUriFragment(buffer);
- fprintf(stderr, " - location in schema %s\n", buffer.GetString());
- fprintf(stderr, " - affected keyword %s\n",
- validator.GetInvalidSchemaKeyword());
- buffer.Clear();
- validator.GetInvalidDocumentPointer().StringifyUriFragment(buffer);
- fprintf(stderr, " - document reference %s\n", buffer.GetString());
- return 1;
- }
- if (provider.HasErrors()) {
- return 1;
- }
-
- if (argc == 4) {
- // Write the stamp file if one was given.
- std::string stamp_path = argv[3];
- std::ofstream stamp(stamp_path);
- stamp.close();
- }
-
- return 0;
-}
diff --git a/tools/tar_maker/BUILD.gn b/tools/tar_maker/BUILD.gn
deleted file mode 100644
index 3163080..0000000
--- a/tools/tar_maker/BUILD.gn
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2018 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.
-
-import("//build/go/go_binary.gni")
-import("//build/go/go_library.gni")
-
-go_library("lib") {
- name = "fuchsia.googlesource.com/tarmaker"
-
- sources = [
- "main.go",
- ]
-}
-
-go_binary("tar_maker") {
- gopackage = "fuchsia.googlesource.com/tarmaker"
-
- deps = [
- ":lib",
- ]
-}
diff --git a/tools/tar_maker/main.go b/tools/tar_maker/main.go
deleted file mode 100755
index 4050a36..0000000
--- a/tools/tar_maker/main.go
+++ /dev/null
@@ -1,154 +0,0 @@
-///bin/true ; exec /usr/bin/env go run "$0" "$@"
-// Copyright 2017 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.
-
-package main
-
-import (
- "archive/tar"
- "bufio"
- "compress/gzip"
- "flag"
- "fmt"
- "io"
- "log"
- "os"
- "path/filepath"
- "strings"
-)
-
-var output = flag.String("output", "", "Path to the generated tarball")
-var manifest = flag.String("manifest", "", "Path to the file containing a description of the tarball's contents")
-
-func archiveFile(tw *tar.Writer, src, dest string) error {
- file, err := os.Open(src)
- if err != nil {
- return err
- }
- defer file.Close()
- info, err := file.Stat()
- if err != nil {
- return err
- }
-
- hdr, err := tar.FileInfoHeader(info, info.Name())
- if err != nil {
- return err
- }
- hdr.Name = dest
- hdr.Uid = 0
- hdr.Gid = 0
- if err := tw.WriteHeader(hdr); err != nil {
- return err
- }
- _, err = io.Copy(tw, file)
- return err
-}
-
-func archiveDirectory(tw *tar.Writer, src, dest string) error {
- return filepath.Walk(src, func(path string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
- if info.IsDir() {
- return nil
- }
- fileDest := filepath.Join(dest, path[len(src)+1:])
- return archiveFile(tw, path, fileDest)
- })
-}
-
-func createTar(archive string, mappings map[string]string) error {
- file, err := os.Create(archive)
- if err != nil {
- return err
- }
- defer file.Close()
-
- gw := gzip.NewWriter(file)
- defer gw.Close()
- tw := tar.NewWriter(gw)
- defer tw.Close()
-
- for dest, src := range mappings {
- info, err := os.Stat(src)
- if err != nil {
- return err
- }
- if info.IsDir() {
- err = archiveDirectory(tw, src, dest)
- } else {
- err = archiveFile(tw, src, dest)
- }
- if err != nil {
- return err
- }
- }
-
- return nil
-}
-
-func readManifest(manifest string) (map[string]string, error) {
- file, err := os.Open(manifest)
- if err != nil {
- return nil, err
- }
- defer file.Close()
-
- result := make(map[string]string)
-
- scanner := bufio.NewScanner(file)
- for scanner.Scan() {
- parts := strings.SplitN(scanner.Text(), "=", 2)
- result[parts[0]] = parts[1]
- }
-
- if err := scanner.Err(); err != nil {
- return nil, err
- }
-
- return result, nil
-}
-
-func generateArchive(manifest string, output string) error {
- if _, err := os.Stat(output); err == nil {
- // The file exists, need to remove it first.
- if err := os.Remove(output); err != nil {
- return err
- }
- }
- mappings, err := readManifest(manifest)
- if err != nil {
- return err
- }
- return createTar(output, mappings)
-}
-
-func main() {
- flag.Usage = func() {
- fmt.Fprintf(os.Stderr, `Usage: tar_maker --manifest path/to/manifest
-
-This tool creates a tarball whose contents are described in a file manifest.
-Each line in the manifest should be of the form:
- <path in tarball>=<path to source file or dir>
-
-The tarball is compressed using gzip.
-`)
- flag.PrintDefaults()
- }
- flag.Parse()
-
- if *output == "" {
- flag.Usage()
- log.Fatalf("Error: missing -output flag.")
- }
- if *manifest == "" {
- flag.Usage()
- log.Fatalf("Error: missing -manifest flag.")
- }
-
- if err := generateArchive(*manifest, *output); err != nil {
- log.Fatalf("Error: unable to create archive %s: %v", *output, err)
- }
-}
diff --git a/vulkan/config.gni b/vulkan/config.gni
deleted file mode 100644
index a9cde0d..0000000
--- a/vulkan/config.gni
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2017 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.
-
-declare_args() {
- # Consolidated build toggle for use of Vulkan across Fuchsia
- fuchsia_use_vulkan = true
-
- # Path to Fuchsia Vulkan SDK
- fuchsia_vulkan_sdk = "//third_party/vulkan_loader_and_validation_layers"
-}
diff --git a/zircon/BUILD.gn b/zircon/BUILD.gn
deleted file mode 100644
index 6009382..0000000
--- a/zircon/BUILD.gn
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2018 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.
-
-# Define a toolchain to build Zircon in.
-# This allows us to let the target and host toolchains depend on Zircon, which
-# in turn ensure Zircon is built before everything else.
-toolchain("zircon_toolchain") {
- tool("stamp") {
- command = "touch {{output}}"
- description = "STAMP {{output}}"
- }
-
- tool("copy") {
- # We use link instead of copy; the way "copy" tool is being used is
- # compatible with links since Ninja is tracking changes to the source.
- command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})"
- description = "COPY {{source}} {{output}}"
- }
-
- toolchain_args = {
- toolchain_variant = {
- }
- toolchain_variant = {
- base = get_label_info(":zircon_toolchain", "label_no_toolchain")
- }
- }
-}
diff --git a/zircon/MAINTAINERS b/zircon/MAINTAINERS
deleted file mode 100644
index 851c897..0000000
--- a/zircon/MAINTAINERS
+++ /dev/null
@@ -1 +0,0 @@
-pylaligand@google.com
diff --git a/zircon/README.md b/zircon/README.md
deleted file mode 100644
index 2523aea..0000000
--- a/zircon/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-GN support for Zircon
-=====================
-
-This folder contains utilities that help Zircon artifacts better integrate into
-the GN build without having to manually maintain GN build files in sync with the
-existing `rules.mk` build files specific to Zircon.
-It also makes it so that targets in upper layers don't need to know about the
-structure of Zircon's output directory in order to use Zircon build artifacts,
-as knowledge of that structure is confined within the generated GN build files.
-
-### Process
-
-The main build file [`//build/gn/BUILD.gn`](../gn/BUILD.gn) calls the
-[`//build/zircon/create_gn_rules.py`](create_gn_rules.py) script to produce
-`BUILD.gn` files for Zircon.
-
-That script uses a special, fast build of Zircon (`make packages`) to generate
-manifests for artifacts that are meant to be consumed by upper layers of the
-Fuchsia stack. These manifest are then turned into GN build files under
-[`//zircon/public`][zircon-public] whose targets other parts of the codebase
-can depend on.
-
-This script is run early in the build process, before any other build file gets
-evaluated. This ensure that non-Zircon build files can safely depend on the
-generated targets.
-
-In order to keep the generated build files up-to-date, that process is repeated
-every time a file changes under `//zircon`.
-
-Note that the generated GN files should only depend on the Zircon source code.
-Invoking the Fuchsia build with different parameters on the same codebase should
-produce identical files.
-
-
-[zircon-public]: https://fuchsia.googlesource.com/zircon/+/master/public/
diff --git a/zircon/add_library_debug_data.py b/zircon/add_library_debug_data.py
deleted file mode 100755
index e6b1113..0000000
--- a/zircon/add_library_debug_data.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-sys.path.append(os.path.join(
- os.path.dirname(__file__),
- os.pardir,
- "cpp",
-))
-import binaries
-
-
-def main():
- parser = argparse.ArgumentParser('Builds a metadata file')
- parser.add_argument('--base',
- help='Path to the base metadata file',
- required=True)
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--lib-debug-file',
- help='Path to the source debug version of the library',
- required=True)
- parser.add_argument('--debug-mapping',
- help='Path to the file where to write the file mapping for the debug library',
- required=True)
- args = parser.parse_args()
-
- # The path of the debug file in the SDK depends on its build id.
- debug_path = binaries.get_sdk_debug_path(args.lib_debug_file)
- with open(args.debug_mapping, 'w') as mappings_file:
- mappings_file.write(debug_path + '=' + args.lib_debug_file + '\n')
-
- with open(args.base, 'r') as base_file:
- metadata = json.load(base_file)
-
- metadata['binaries'].values()[0]['debug'] = debug_path
-
- with open(args.out, 'w') as out_file:
- json.dump(metadata, out_file, indent=2, sort_keys=True)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/zircon/add_sysroot_debug_data.py b/zircon/add_sysroot_debug_data.py
deleted file mode 100755
index 9a87918..0000000
--- a/zircon/add_sysroot_debug_data.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import json
-import os
-import sys
-
-sys.path.append(os.path.join(
- os.path.dirname(__file__),
- os.pardir,
- "cpp",
-))
-import binaries
-
-
-def main():
- parser = argparse.ArgumentParser('Builds a metadata file')
- parser.add_argument('--base',
- help='Path to the base metadata file',
- required=True)
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--lib-debug-file',
- help='Path to the source debug version of the library',
- action='append')
- parser.add_argument('--debug-mapping',
- help='Path to the file where to write the file mapping for the debug library',
- required=True)
- args = parser.parse_args()
-
- debug_files = []
-
- with open(args.debug_mapping, 'w') as mappings_file:
- for debug_file in args.lib_debug_file:
- debug_path = binaries.get_sdk_debug_path(debug_file)
- mappings_file.write(debug_path + '=' + debug_file + '\n')
- debug_files.append(debug_path)
-
- with open(args.base, 'r') as base_file:
- metadata = json.load(base_file)
-
- metadata['versions'].values()[0]['debug_libs'] = debug_files
-
- with open(args.out, 'w') as out_file:
- json.dump(metadata, out_file, indent=2, sort_keys=True)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/zircon/banjo.mako b/zircon/banjo.mako
deleted file mode 100644
index 788e7ca..0000000
--- a/zircon/banjo.mako
+++ /dev/null
@@ -1,21 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/banjo/banjo.gni")
-
-banjo("${data.name}") {
- name = "${data.library}"
-
- sdk_category = "partner"
-
- sources = [
- % for source in sorted(data.sources):
- "${source}",
- % endfor
- ]
-
- deps = [
- % for dep in sorted(data.banjo_deps):
- "../${dep}",
- % endfor
- ]
-}
diff --git a/zircon/banjo_dummy.mako b/zircon/banjo_dummy.mako
deleted file mode 100644
index c933a0d..0000000
--- a/zircon/banjo_dummy.mako
+++ /dev/null
@@ -1,15 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/banjo/banjo.gni")
-
-banjo_dummy("${data.name}") {
- name = "${data.library}"
-
- sdk_category = "partner"
-
- sources = [
- % for source in sorted(data.sources):
- "${source}",
- % endfor
- ]
-}
diff --git a/zircon/boards.mako b/zircon/boards.mako
deleted file mode 100644
index ebc97ec..0000000
--- a/zircon/boards.mako
+++ /dev/null
@@ -1,14 +0,0 @@
-<%include file="header.mako" />
-
-% for arch, boards in sorted(data.iteritems()):
-${'else ' if not loop.first else ''}if (target_cpu == "${arch}") {
- zircon_boards = [
- % for board in boards:
- "${board}",
- % endfor
- ]
-}
-% endfor
-else {
- assert(false, "Unsupported architecture: $target_cpu.")
-}
diff --git a/zircon/create_gn_rules.py b/zircon/create_gn_rules.py
deleted file mode 100755
index 8c2df11..0000000
--- a/zircon/create_gn_rules.py
+++ /dev/null
@@ -1,562 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import argparse
-import errno
-import os
-import re
-import shutil
-import subprocess
-import sys
-
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-FUCHSIA_ROOT = os.path.dirname( # $root
- os.path.dirname( # build
- SCRIPT_DIR)) # zircon
-ZIRCON_ROOT = os.path.join(FUCHSIA_ROOT, 'zircon')
-
-sys.path += [os.path.join(FUCHSIA_ROOT, 'third_party', 'mako')]
-from mako.lookup import TemplateLookup
-from mako.template import Template
-
-
-# Packages included in the sysroot.
-SYSROOT_PACKAGES = ['c', 'zircon']
-
-# Prefixes of Zircon headers that should not appear in SDKs.
-NON_SDK_SYSROOT_HEADER_PREFIXES = [
- 'zircon/device',
- 'zircon/syscalls/definitions.rs',
-]
-# TODO(FIDL-273): remove this allowlist.
-MANDATORY_SDK_HEADERS = [
- 'zircon/device/ioctl.h', # Needed by zircon/device/ramdisk.h
- 'zircon/device/ioctl-wrapper.h', # Needed by zircon/device/ramdisk.h
- # TODO(ZX-2503): remove this entry.
- 'zircon/device/ramdisk.h', # Needed by fs-management/ramdisk.h
- 'zircon/device/sysinfo.h', # Needed by some external clients
-]
-
-# List of libraries with header files being transitioned from
-# 'include/foo/foo.h' to 'include/lib/foo/foo.h'. During the transition, both
-# the library's 'include/' and 'include/lib' directories are added to the
-# include path so both old and new style include work.
-# TODO(ZX-1871): Once everything in Zircon is migrated, remove this mechanism.
-LIBRARIES_BEING_MOVED = ['zx']
-
-# Prebuilt libraries for which headers shouldn't be included in an SDK.
-# While this kind of mechanism exists in the GN build, there's no equivalent in
-# the make build and we have to manually curate these libraries.
-LIBRARIES_WITHOUT_SDK_HEADERS = ['trace-engine']
-
-# Packages which should never appear in SDKs.
-# Dependencies on these packages will not be reflected in generated rules. The
-# lack of distinction between public and private deps in the make build system
-# is the reason why this list is needed.
-NON_SDK_DEPS = ['zircon-internal']
-
-def make_dir(path, is_dir=False):
- '''Creates the directory at `path`.'''
- target = path if is_dir else os.path.dirname(path)
- try:
- os.makedirs(target)
- except OSError as exception:
- if exception.errno == errno.EEXIST and os.path.isdir(target):
- pass
- else:
- raise
-
-
-def try_remove(list, element):
- '''Attempts to remove an element from a list, returning `true` if
- successful.'''
- try:
- list.remove(element)
- return True
- except ValueError:
- return False
-
-
-def parse_package(lines):
- '''Parses the content of a package file.'''
- result = {}
- section_exp = re.compile('^\[([^\]]+)\]$')
- attr_exp = re.compile('^([^=]+)=(.*)$')
- current_section = None
-
- def finalize_section():
- if not current_section:
- return
- if current_list and current_map:
- raise Exception('Found both map-style and list-style section')
- result[current_section] = (current_map if current_map
- else current_list)
- for line in lines:
- section_match = section_exp.match(line)
- if section_match:
- finalize_section()
- current_section = section_match.group(1)
- current_list = []
- current_map = {}
- continue
- attr_match = attr_exp.match(line)
- if attr_match:
- name = attr_match.group(1)
- value = attr_match.group(2)
- current_map[name] = value
- else:
- current_list.append(line.strip())
- finalize_section()
- return result
-
-
-def extract_file(name, path, context, is_tool=False):
- '''Extracts file path and base folder path from a map entry.'''
- # name: foo/bar.h
- # path: <SOURCE|BUILD>/somewhere/under/zircon/foo/bar.h
- (full_path, changes) = re.subn('^SOURCE', context.source_base, path)
- build_base = context.tool_build_base if is_tool else context.user_build_base
- if not changes:
- (full_path, changes) = re.subn('^BUILD', build_base, path)
- if not changes:
- raise Exception('Unknown pattern type: %s' % path)
- folder = None
- if full_path.endswith(name):
- folder = os.path.relpath(full_path[:-len(name)], FUCHSIA_ROOT)
- file = os.path.relpath(full_path, FUCHSIA_ROOT)
- return (file, folder)
-
-
-def filter_deps(deps):
- '''Sanitizes a given dependency list.'''
- return filter(lambda x: x not in SYSROOT_PACKAGES, deps)
-
-
-def filter_sdk_deps(deps):
- '''Sanitizes a given SDK dependency list.'''
- return filter(lambda x: x not in NON_SDK_DEPS, deps)
-
-
-def generate_build_file(path, template_name, data, context):
- '''Creates a build file based on a template.'''
- make_dir(path)
- template = context.templates.get_template(template_name)
- contents = template.render(data=data)
- with open(path, 'w') as build_file:
- build_file.write(contents)
-
-
-class SourceLibrary(object):
- '''Represents a library built from sources.
-
- Convenience storage object to be consumed by Mako templates.'''
-
- def __init__(self, name):
- self.name = name
- self.includes = {}
- self.include_dirs = set()
- self.sources = {}
- self.deps = []
- self.sdk_deps = []
- self.fidl_deps = []
- self.banjo_deps = []
- self.libs = set()
- self.depends_on_zircon = False
-
-
-def generate_source_library(package, context):
- '''Generates the build glue for a library whose sources are provided.'''
- lib_name = package['package']['name']
- data = SourceLibrary(lib_name)
-
- # Includes.
- for name, path in package.get('includes', {}).iteritems():
- (file, folder) = extract_file(name, path, context)
- data.includes[name] = '//%s' % file
- data.include_dirs.add('//%s' % folder)
- if lib_name in LIBRARIES_BEING_MOVED:
- data.include_dirs.add('//%s/lib' % folder)
-
- # Source files.
- for name, path in package.get('src', {}).iteritems():
- (file, _) = extract_file(name, path, context)
- data.sources[name] = '//%s' % file
-
- # Dependencies.
- data.deps += filter_deps(package.get('deps', []))
- data.deps += filter_deps(package.get('static-deps', []))
- data.fidl_deps = filter_deps(package.get('fidl-deps', []))
- data.banjo_deps = filter_deps(package.get('banjo-deps', []))
- data.sdk_deps = filter_sdk_deps(data.deps)
-
- # Special hack for zircon library dependency: enables special codegen
- # in template depending on whether we're building on Fuchsia or not.
- data.depends_on_zircon = 'zircon' in package.get('deps', [])
-
- # Generate the build file.
- build_path = os.path.join(context.out_dir, 'lib', lib_name, 'BUILD.gn')
- generate_build_file(build_path, 'source_library.mako', data, context)
-
-
-class CompiledLibrary(object):
- '''Represents a library already compiled by the Zircon build.
-
- Convenience storage object to be consumed by Mako templates.'''
-
- def __init__(self, name, with_sdk_headers):
- self.name = name
- self.includes = {}
- self.include_dirs = set()
- self.deps = []
- self.sdk_deps = []
- self.fidl_deps = []
- self.banjo_deps = []
- self.lib_name = ''
- self.has_impl_prebuilt = False
- self.impl_prebuilt = ''
- self.prebuilt = ''
- self.debug_prebuilt = ''
- self.with_sdk_headers = with_sdk_headers
-
-
-def generate_compiled_library(package, context):
- '''Generates the build glue for a prebuilt library.'''
- lib_name = package['package']['name']
- data = CompiledLibrary(lib_name,
- lib_name not in LIBRARIES_WITHOUT_SDK_HEADERS)
-
- # Includes.
- for name, path in package.get('includes', {}).iteritems():
- (file, folder) = extract_file(name, path, context)
- data.include_dirs.add('//%s' % folder)
- data.includes[name] = '//%s' % file
-
- # Lib.
- libs = package.get('lib', {})
- if len(libs) == 1:
- # Static library.
- is_shared = False
- (name, path) = libs.items()[0]
- (file, _) = extract_file(name, path, context)
- data.prebuilt = '//%s' % file
- data.lib_name = os.path.basename(name)
- # TODO(jamesr): Delete the == 2 path once Zircon rolls up through all layers
- elif len(libs) == 2 or len(libs) == 3:
- # Shared library.
- is_shared = True
- for name, path in libs.iteritems():
- (file, _) = extract_file(name, path, context)
- if 'debug/' in name:
- data.debug_prebuilt = '//%s' % file
- data.lib_name = os.path.basename(name)
- elif '.so.strip' in file:
- data.has_impl_prebuilt = True
- data.impl_prebuilt = '//%s' % file
- else:
- data.prebuilt = '//%s' % file
- else:
- raise Exception('Too many files for %s: %s' % (lib_name,
- ', '.join(libs.keys())))
-
- # Dependencies.
- data.deps += filter_deps(package.get('deps', []))
- data.deps += filter_deps(package.get('static-deps', []))
- data.fidl_deps = filter_deps(package.get('fidl-deps', []))
- data.banjo_deps = filter_deps(package.get('banjo-deps', []))
- data.sdk_deps = filter_sdk_deps(data.deps)
-
- # Generate the build file.
- template = 'shared_library.mako' if is_shared else 'static_library.mako'
- build_path = os.path.join(context.out_dir, 'lib', lib_name, 'BUILD.gn')
- generate_build_file(build_path, template, data, context)
-
-
-class Sysroot(object):
- '''Represents the sysroot created by Zircon.
-
- Convenience storage object to be consumed by Mako templates.'''
-
- def __init__(self):
- self.files = {}
- self.sdk_files = {}
- self.headers = []
- self.link_libs = []
- self.dist_libs = []
- self.debug_source_libs = []
-
-
-def generate_sysroot(package, context):
- '''Generates the build glue for the sysroot.'''
- data = Sysroot()
-
- # Includes.
- for name, path in package.get('includes', {}).iteritems():
- (file, _) = extract_file(name, path, context)
- data.files['include/%s' % name] = '//%s' % file
- in_sdk = True
- for prefix in NON_SDK_SYSROOT_HEADER_PREFIXES:
- if name.startswith(prefix) and name not in MANDATORY_SDK_HEADERS:
- in_sdk = False
- break
- if in_sdk:
- dest = 'include/%s' % name
- data.sdk_files[dest] = '//%s' % file
- data.headers.append(dest)
-
- # Lib.
- for name, path in package.get('lib', {}).iteritems():
- (file, _) = extract_file(name, path, context)
- label = '//%s' % file
- data.files[name] = label
- type_dir = os.path.dirname(name)
- if type_dir == 'debug':
- data.debug_source_libs.append(label)
- else:
- data.sdk_files[name] = label
- if type_dir == 'lib':
- data.link_libs.append(name)
- elif type_dir == 'dist/lib':
- data.dist_libs.append(name)
- else:
- raise Exception('Unknown library type: ' + type_dir)
-
- # Generate the build file.
- build_path = os.path.join(context.out_dir, 'sysroot', 'BUILD.gn')
- generate_build_file(build_path, 'sysroot.mako', data, context)
-
-
-class HostTool(object):
- '''Represents a host tool.
-
- Convenience storage object to be consumed by Mako templates.'''
-
- def __init__(self, name):
- self.name = name
- self.executable = ''
-
-
-def generate_host_tool(package, context):
- '''Generates the build glue for a host tool.'''
- name = package['package']['name']
- data = HostTool(name)
-
- bins = package.get('bin', {})
- if len(bins) != 1 or name not in bins:
- raise Exception('Host tool %s has unexpected binaries %s.'
- % (name, bins))
- (file, _) = extract_file(name, bins[name], context, is_tool=True)
- data.executable = '//%s' % file
-
- # Generate the build file.
- build_path = os.path.join(context.out_dir, 'tool', name, 'BUILD.gn')
- generate_build_file(build_path, 'host_tool.mako', data, context)
-
-
-class FidlLibrary(object):
- '''Represents a FIDL library.
-
- Convenience storage object to be consumed by Mako templates.'''
-
- def __init__(self, name, library):
- self.name = name
- self.library = library
- self.sources = []
- self.fidl_deps = []
-
-
-def generate_fidl_library(package, context):
- '''Generates the build glue for a FIDL library.'''
- pkg_name = package['package']['name']
- # TODO(pylaligand): remove fallback.
- data = FidlLibrary(pkg_name, package['package'].get('library', pkg_name))
-
- for name, path in package.get('fidl', {}).iteritems():
- (file, _) = extract_file(name, path, context)
- data.sources.append('//%s' % file)
- data.fidl_deps = filter_deps(package.get('fidl-deps', []))
-
- # Generate the build file.
- build_path = os.path.join(context.out_dir, 'fidl', pkg_name, 'BUILD.gn')
- generate_build_file(build_path, 'fidl.mako', data, context)
-
-
-class BanjoLibrary(object):
- '''Represents a Banjo library.
-
- Convenience storage object to be consumed by Mako templates.'''
-
- def __init__(self, name, library):
- self.name = name
- self.library = library
- self.sources = []
- self.banjo_deps = []
-
-
-def generate_banjo_dummy_library(package, context):
- '''Generates the build glue for a dummy Banjo library.'''
- pkg_name = package['package']['name']
-
- data = BanjoLibrary(pkg_name, package['package']['library'])
-
- for name, path in package.get('banjo', {}).iteritems():
- (file, _) = extract_file(name, path, context)
- data.sources.append('//%s' % file)
-
- # Generate the build file.
- build_path = os.path.join(context.out_dir, 'banjo', pkg_name, 'BUILD.gn')
- generate_build_file(build_path, 'banjo_dummy.mako', data, context)
-
-def generate_banjo_library(package, context):
- '''Generates the build glue for a Banjo library.'''
- pkg_name = package['package']['name']
-
- if "ddk-protocol" not in pkg_name:
- generate_banjo_dummy_library(package, context)
- return
-
- data = BanjoLibrary(pkg_name, package['package']['library'])
-
- for name, path in package.get('banjo', {}).iteritems():
- (file, _) = extract_file(name, path, context)
- data.sources.append('//%s' % file)
- data.banjo_deps = filter_deps(package.get('banjo-deps', []))
- data.deps = [
- '//zircon/public/lib/ddk',
- '//zircon/public/lib/ddktl',
- ]
-
- # Generate the build file.
- build_path = os.path.join(context.out_dir, 'banjo', pkg_name, 'BUILD.gn')
- generate_build_file(build_path, 'banjo.mako', data, context)
-
-
-def generate_board_list(package, context):
- '''Generates a configuration file with the list of target boards.'''
- build_path = os.path.join(context.out_dir, 'config', 'boards.gni')
- generate_build_file(build_path, 'boards.mako', package, context)
- build_path = os.path.join(context.out_dir, 'config', 'BUILD.gn')
- generate_build_file(build_path, 'main.mako', package, context)
-
-
-class GenerationContext(object):
- '''Describes the context in which GN rules should be generated.'''
-
- def __init__(self, out_dir, source_base, user_build_base, tool_build_base,
- templates):
- self.out_dir = out_dir
- self.source_base = source_base
- self.user_build_base = user_build_base
- self.tool_build_base = tool_build_base
- self.templates = templates
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--out',
- help='Path to the output directory',
- required=True)
- parser.add_argument('--staging',
- help='Path to the staging directory',
- required=True)
- parser.add_argument('--zircon-user-build',
- help='Path to the Zircon "user" build directory',
- required=True)
- parser.add_argument('--zircon-tool-build',
- help='Path to the Zircon "tools" build directory',
- required=True)
- parser.add_argument('--debug',
- help='Whether to print out debug information',
- action='store_true')
- parser.add_argument('--make',
- help='Path to make binary',
- required=True)
- args = parser.parse_args()
-
- out_dir = os.path.abspath(args.out)
- shutil.rmtree(os.path.join(out_dir, 'config'), True)
- shutil.rmtree(os.path.join(out_dir, 'fidl'), True)
- shutil.rmtree(os.path.join(out_dir, 'banjo'), True)
- shutil.rmtree(os.path.join(out_dir, 'lib'), True)
- shutil.rmtree(os.path.join(out_dir, 'sysroot'), True)
- shutil.rmtree(os.path.join(out_dir, 'tool'), True)
- debug = args.debug
-
- # Generate package descriptions through Zircon's build.
- zircon_dir = os.path.abspath(args.staging)
- shutil.rmtree(zircon_dir, True)
- if debug:
- print('Building Zircon in: %s' % zircon_dir)
- make_args = [
- args.make,
- 'packages',
- 'BUILDDIR=%s' % zircon_dir,
- ]
-
- env = {}
- env['PATH'] = os.environ['PATH']
- if not debug:
- env['QUIET'] = '1'
- subprocess.check_call(make_args, cwd=ZIRCON_ROOT, env=env)
- # Parse package definitions.
- packages = []
- with open(os.path.join(zircon_dir, 'export', 'manifest'), 'r') as manifest:
- package_files = map(lambda line: line.strip(), manifest.readlines())
- for file in package_files:
- with open(os.path.join(zircon_dir, 'export', file), 'r') as pkg_file:
- packages.append(parse_package(pkg_file.readlines()))
- if debug:
- print('Found %s packages:' % len(packages))
- names = sorted(map(lambda p: p['package']['name'], packages))
- for name in names:
- print(' - %s' % name)
-
- # Generate some GN glue for each package.
- context = GenerationContext(
- out_dir,
- ZIRCON_ROOT,
- os.path.abspath(args.zircon_user_build),
- os.path.abspath(args.zircon_tool_build),
- TemplateLookup(directories=[SCRIPT_DIR]),
- )
- for package in packages:
- name = package['package']['name']
- type = package['package']['type']
- arch = package['package']['arch']
- if name == 'c':
- generate_sysroot(package, context)
- print('Generated sysroot')
- continue
- if name in SYSROOT_PACKAGES:
- print('Ignoring sysroot part: %s' % name)
- continue
- if type == 'tool':
- generate_host_tool(package, context)
- elif type == 'lib':
- if arch == 'src':
- type = 'source'
- generate_source_library(package, context)
- else:
- type = 'prebuilt'
- generate_compiled_library(package, context)
- elif type == 'fidl':
- generate_fidl_library(package, context)
- elif type == 'banjo':
- generate_banjo_library(package, context)
- else:
- print('(%s) Unsupported package type: %s/%s, skipping'
- % (name, type, arch))
- continue
- if debug:
- print('Processed %s (%s)' % (name, type))
-
- board_path = os.path.join(zircon_dir, 'export', 'all-boards.list')
- with open(board_path, 'r') as board_file:
- package = parse_package(board_file.readlines())
- generate_board_list(package, context)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/zircon/fidl.mako b/zircon/fidl.mako
deleted file mode 100644
index 09a6315..0000000
--- a/zircon/fidl.mako
+++ /dev/null
@@ -1,21 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/fidl/fidl.gni")
-
-fidl("${data.name}") {
- name = "${data.library}"
-
- sdk_category = "partner"
-
- sources = [
- % for source in sorted(data.sources):
- "${source}",
- % endfor
- ]
-
- deps = [
- % for dep in sorted(data.fidl_deps):
- "../${dep}",
- % endfor
- ]
-}
diff --git a/zircon/header.mako b/zircon/header.mako
deleted file mode 100644
index cf73679..0000000
--- a/zircon/header.mako
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright 2018 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.
-
-# DO NOT MANUALLY EDIT!
-# Generated by //build/zircon/create_gn_rules.py.
diff --git a/zircon/host_tool.mako b/zircon/host_tool.mako
deleted file mode 100644
index c4ba27f..0000000
--- a/zircon/host_tool.mako
+++ /dev/null
@@ -1,43 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/sdk/sdk_atom.gni")
-
-assert(current_toolchain == host_toolchain,
- "The ${data.name} tool is host-only.")
-
-copy("${data.name}") {
- sources = [
- "${data.executable}",
- ]
-
- outputs = [
- "$root_out_dir/${data.name}",
- ]
-}
-
-file_base = "tools/${data.name}"
-
-sdk_atom("${data.name}_sdk") {
- id = "sdk://tools/${data.name}"
- category = "partner"
-
- meta = {
- dest = "$file_base-meta.json"
- schema = "host_tool"
- value = {
- type = "host_tool"
- name = "${data.name}"
- root = "tools"
- files = [
- file_base,
- ]
- }
- }
-
- files = [
- {
- source = "${data.executable}"
- dest = file_base
- }
- ]
-}
diff --git a/zircon/list_boards.py b/zircon/list_boards.py
deleted file mode 100755
index 3bed6c1..0000000
--- a/zircon/list_boards.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 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.
-
-import argparse
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--out',
- help='Path to the output file',
- required=True)
- parser.add_argument('--boards',
- help='Name of the supported boards',
- nargs='*')
- args = parser.parse_args()
-
- with open(args.out, 'w') as out_file:
- out_file.write('\n'.join(args.boards))
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/zircon/list_source_files.py b/zircon/list_source_files.py
deleted file mode 100755
index 819309b..0000000
--- a/zircon/list_source_files.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017 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.
-
-import os
-import subprocess
-import sys
-
-
-FUCHSIA_ROOT = os.path.dirname( # $root
- os.path.dirname( # build
- os.path.dirname( # zircon
- os.path.abspath(__file__))))
-ZIRCON_ROOT = os.path.join(FUCHSIA_ROOT, "zircon")
-
-
-def list_files(deleted=False):
- git_cmd = ['git', 'ls-files']
- if deleted:
- git_cmd.append('-d')
- output = subprocess.check_output(git_cmd, cwd=ZIRCON_ROOT)
- return set(output.splitlines())
-
-
-def get_files():
- all_files = list_files()
- deleted_files = list_files(deleted=True)
- files = all_files - deleted_files
- return [os.path.join(ZIRCON_ROOT, file) for file in files]
-
-
-def main():
- for file in get_files():
- print(file)
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/zircon/main.mako b/zircon/main.mako
deleted file mode 100644
index db53589..0000000
--- a/zircon/main.mako
+++ /dev/null
@@ -1,29 +0,0 @@
-<%include file="header.mako" />
-
-action("boards") {
- script = "//build/zircon/list_boards.py"
-
- board_file = "$root_out_dir/zircon-boards.list"
-
- outputs = [
- board_file,
- ]
-
- args = [
- "--out",
- rebase_path(board_file),
- "--boards",
- ]
- % for arch, boards in sorted(data.iteritems()):
- ${'else ' if not loop.first else ''}if (target_cpu == "${arch}") {
- args += [
- % for board in boards:
- "${board}",
- % endfor
- ]
- }
- % endfor
- else {
- assert(false, "Unsupported architecture: $target_cpu.")
- }
-}
diff --git a/zircon/shared_library.mako b/zircon/shared_library.mako
deleted file mode 100644
index e1639ae..0000000
--- a/zircon/shared_library.mako
+++ /dev/null
@@ -1,235 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/sdk/sdk_atom.gni")
-
-config("${data.name}_config") {
- include_dirs = [
- % for include in sorted(data.include_dirs):
- "${include}",
- % endfor
- ]
-
- visibility = [
- ":*",
- ]
-}
-
-if (current_toolchain != shlib_toolchain) {
-
- # In the main toolchain, we just redirect to the same target in the shared
- # toolchain.
-
- group("${data.name}") {
- public_deps = [
- ":${data.name}($current_toolchain-shared)",
- ]
-
- public_configs = [
- ":${data.name}_config",
- ]
- }
-
-} else {
-
- # In the shared toolchain, we normally set up the library.
-
- _abi_lib = "$root_out_dir/${data.lib_name}"
- % if data.has_impl_prebuilt:
- _impl_lib = "$root_out_dir/${data.lib_name}.impl"
- % endif
- _debug_lib = "$root_out_dir/lib.unstripped/${data.lib_name}"
-
- copy("${data.name}_copy_abi_lib") {
- sources = [
- "${data.prebuilt}",
- ]
-
- outputs = [
- _abi_lib,
- ]
- }
-
- % if data.has_impl_prebuilt:
- copy("${data.name}_copy_impl_lib") {
- sources = [
- "${data.impl_prebuilt}",
- ]
-
- outputs = [
- _impl_lib,
- ]
- }
- % else:
- group("${data.name}_copy_impl_lib") {}
- % endif
-
- copy("${data.name}_copy_unstripped_lib") {
- sources = [
- "${data.debug_prebuilt}",
- ]
-
- outputs = [
- _debug_lib,
- ]
- }
-
- _linked_lib = _abi_lib
- if (is_debug) {
- _linked_lib = _debug_lib
- }
- config("${data.name}_lib_config") {
- libs = [
- _linked_lib,
- ]
-
- visibility = [
- ":*",
- ]
- }
-
- group("${data.name}") {
-
- public_deps = [
- ":${data.name}_copy_abi_lib",
- ":${data.name}_copy_impl_lib",
- ":${data.name}_copy_unstripped_lib",
- % for dep in sorted(data.fidl_deps):
- "../../fidl/${dep}:${dep}_c",
- % endfor
- % for dep in sorted(data.banjo_deps):
- "../../banjo/${dep}:${dep}",
- % endfor
- ]
-
- public_configs = [
- ":${data.name}_config",
- ":${data.name}_lib_config",
- % for dep in sorted(data.deps):
- "../${dep}:${dep}_config",
- % endfor
- ]
-
- data_deps = [
- ":${data.name}_copy_abi_lib",
- ]
- }
-
-} # current_toolchain != shlib_toolchain
-
-file_base = "pkg/${data.name}"
-prebuilt_base = "arch/$target_cpu"
-binaries_content = {
- link = "$prebuilt_base/lib/${data.lib_name}"
-}
-% if data.has_impl_prebuilt:
-binaries_content.dist = "$prebuilt_base/dist/${data.lib_name}"
-% endif
-metadata = {
- name = "${data.name}"
- type = "cc_prebuilt_library"
- root = file_base
- format = "shared"
- include_dir = "$file_base/include"
-
- headers = []
- % if data.with_sdk_headers:
- % for dest, _ in sorted(data.includes.iteritems()):
- headers += [ "$file_base/include/${dest}" ]
- % endfor
- % endif
-
- binaries = {}
- if (target_cpu == "arm64") {
- binaries.arm64 = binaries_content
- } else if (target_cpu == "x64") {
- binaries.x64 = binaries_content
- } else {
- assert(false, "Unknown CPU type: %target_cpu")
- }
-
- deps = []
- % for dep in sorted(data.sdk_deps):
- deps += [ "${dep}" ]
- % endfor
-}
-
-shared_out_dir = get_label_info(":bogus($shlib_toolchain)", "root_out_dir")
-
-base_meta_file = "$target_gen_dir/${data.name}.base_meta.json"
-write_file(base_meta_file, metadata, "json")
-augmented_meta_file = "$target_gen_dir/${data.name}.full_meta.json"
-debug_mapping_file = "$target_gen_dir/${data.name}.mapping.txt"
-debug_lib_file = "$shared_out_dir/lib.unstripped/${data.lib_name}"
-
-action("${data.name}_meta") {
- script = "//build/zircon/add_library_debug_data.py"
-
- inputs = [
- base_meta_file,
- debug_lib_file,
- ]
-
- outputs = [
- augmented_meta_file,
- ]
-
- args = [
- "--base",
- rebase_path(base_meta_file),
- "--out",
- rebase_path(augmented_meta_file),
- "--lib-debug-file",
- rebase_path(debug_lib_file),
- "--debug-mapping",
- rebase_path(debug_mapping_file),
- ]
-
- deps = [
- ":${data.name}",
- ]
-}
-
-sdk_atom("${data.name}_sdk") {
- id = "sdk://pkg/${data.name}"
- category = "partner"
-
- meta = {
- dest = "$file_base/meta.json"
- schema = "cc_prebuilt_library"
- source = augmented_meta_file
- }
-
- files = [
- % if data.with_sdk_headers:
- % for dest, source in sorted(data.includes.iteritems()):
- {
- source = "${source}"
- dest = "$file_base/include/${dest}"
- },
- % endfor
- % endif
- {
- source = "$shared_out_dir/${data.lib_name}"
- dest = "$prebuilt_base/lib/${data.lib_name}"
- },
- % if data.has_impl_prebuilt:
- {
- source = "$shared_out_dir/${data.lib_name}.impl"
- dest = "$prebuilt_base/dist/${data.lib_name}"
- },
- % endif
- ]
-
- file_list = debug_mapping_file
-
- deps = [
- % for dep in sorted(data.sdk_deps):
- "../${dep}:${dep}_sdk",
- % endfor
- ]
-
- non_sdk_deps = [
- ":${data.name}",
- ":${data.name}_meta",
- ]
-}
diff --git a/zircon/source_library.mako b/zircon/source_library.mako
deleted file mode 100644
index 6063f9a..0000000
--- a/zircon/source_library.mako
+++ /dev/null
@@ -1,116 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/sdk/sdk_atom.gni")
-
-config("${data.name}_config") {
- include_dirs = [
- % for include in sorted(data.include_dirs):
- "${include}",
- % endfor
- ]
-
- visibility = [
- ":*",
- ]
-}
-
-source_set("${data.name}") {
- sources = [
- % for _, source in sorted(data.sources.iteritems()):
- "${source}",
- % endfor
- % for _, source in sorted(data.includes.iteritems()):
- "${source}",
- % endfor
- ]
-
- public_deps = [
- % for dep in sorted(data.deps):
- "../${dep}",
- % endfor
- % for dep in sorted(data.fidl_deps):
- "../../fidl/${dep}:${dep}_c",
- % endfor
- % for dep in sorted(data.banjo_deps):
- "../../banjo/${dep}:${dep}",
- % endfor
- ]
-
- libs = [
- % for lib in sorted(data.libs):
- "${lib}",
- % endfor
- ]
-
- public_configs = [
- ":${data.name}_config",
- ]
-
- % if data.depends_on_zircon:
- if (is_fuchsia) {
- libs += ["zircon"]
- } else {
- public_deps += [ "//zircon/system/public" ]
- }
- % endif
-}
-
-file_base = "pkg/${data.name}"
-metadata = {
- name = "${data.name}"
- type = "cc_source_library"
- root = file_base
- include_dir = "$file_base/include"
-
- sources = []
- % for dest, _ in sorted(data.sources.iteritems()):
- sources += [ "$file_base/${dest}" ]
- % endfor
-
- headers = []
- % for dest, _ in sorted(data.includes.iteritems()):
- headers += [ "$file_base/include/${dest}" ]
- % endfor
-
- deps = []
- % for dep in sorted(data.sdk_deps):
- deps += [ "${dep}" ]
- % endfor
-
- fidl_deps = []
- banjo_deps = []
-
- files = sources + headers
-}
-
-sdk_atom("${data.name}_sdk") {
- id = "sdk://pkg/${data.name}"
- category = "partner"
-
- meta = {
- dest = "$file_base/meta.json"
- schema = "cc_source_library"
- value = metadata
- }
-
- files = [
- % for dest, source in sorted(data.includes.iteritems()):
- {
- source = "${source}"
- dest = "$file_base/include/${dest}"
- },
- % endfor
- % for dest, source in sorted(data.sources.iteritems()):
- {
- source = "${source}"
- dest = "$file_base/${dest}"
- },
- % endfor
- ]
-
- deps = [
- % for dep in sorted(data.sdk_deps):
- "../${dep}:${dep}_sdk",
- % endfor
- ]
-}
diff --git a/zircon/static_library.mako b/zircon/static_library.mako
deleted file mode 100644
index e176e11..0000000
--- a/zircon/static_library.mako
+++ /dev/null
@@ -1,117 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/sdk/sdk_atom.gni")
-
-_lib = "$target_out_dir/${data.lib_name}"
-
-copy("${data.name}_copy_lib") {
- sources = [
- "${data.prebuilt}",
- ]
-
- outputs = [
- _lib,
- ]
-}
-
-config("${data.name}_config") {
- include_dirs = [
- % for include in sorted(data.include_dirs):
- "${include}",
- % endfor
- ]
-
- libs = [
- _lib,
- ]
-
- visibility = [
- ":*",
- ]
-}
-
-group("${data.name}") {
-
- public_deps = [
- ":${data.name}_copy_lib",
- % for dep in sorted(data.deps):
- "../${dep}",
- % endfor
- % for dep in sorted(data.fidl_deps):
- "../../fidl/${dep}:${dep}_c",
- % endfor
- % for dep in sorted(data.banjo_deps):
- "../../banjo/${dep}:${dep}",
- % endfor
- ]
-
- public_configs = [
- ":${data.name}_config",
- ]
-}
-
-file_base = "pkg/${data.name}"
-prebuilt_base = "arch/$target_cpu"
-binaries_content = {
- link = "$prebuilt_base/lib/${data.lib_name}"
-}
-metadata = {
- name = "${data.name}"
- type = "cc_prebuilt_library"
- root = file_base
- format = "static"
- include_dir = "$file_base/include"
-
- headers = []
- % for dest, _ in sorted(data.includes.iteritems()):
- headers += [ "$file_base/include/${dest}" ]
- % endfor
-
- binaries = {}
- if (target_cpu == "arm64") {
- binaries.arm64 = binaries_content
- } else if (target_cpu == "x64") {
- binaries.x64 = binaries_content
- } else {
- assert(false, "Unknown CPU type: %target_cpu")
- }
-
- deps = []
- % for dep in sorted(data.sdk_deps):
- deps += [ "${dep}" ]
- % endfor
-}
-
-sdk_atom("${data.name}_sdk") {
- id = "sdk://pkg/${data.name}"
- category = "partner"
-
- meta = {
- dest = "$file_base/meta.json"
- schema = "cc_prebuilt_library"
- value = metadata
- }
-
- files = [
- % for dest, source in sorted(data.includes.iteritems()):
- {
- source = "${source}"
- dest = "$file_base/include/${dest}"
- },
- % endfor
- {
- source = _lib
- dest = "$prebuilt_base/lib/${data.lib_name}"
- },
- ]
-
- deps = [
- % for dep in sorted(data.sdk_deps):
- "../${dep}:${dep}_sdk",
- % endfor
- ]
-
- non_sdk_deps = [
- ":${data.name}",
- ]
-}
diff --git a/zircon/sysroot.mako b/zircon/sysroot.mako
deleted file mode 100644
index 39373cc..0000000
--- a/zircon/sysroot.mako
+++ /dev/null
@@ -1,127 +0,0 @@
-<%include file="header.mako" />
-
-import("//build/sdk/sdk_atom.gni")
-
-_out_dir = get_label_info(":bogus", "target_out_dir")
-
-<%def name="copy_target(path)">${"copy_%s" % path.replace('/', '_').replace('.', '_')}</%def>
-
-% for path, file in sorted(data.files.iteritems()):
-copy("${copy_target(path)}") {
- sources = [
- "${file}",
- ]
-
- outputs = [
- "$_out_dir/sysroot/${path}",
- ]
-}
-
-% endfor
-
-group("sysroot") {
- deps = [
- % for path, file in sorted(data.files.iteritems()):
- ":${copy_target(path)}",
- % endfor
- ]
-}
-
-file_base = "arch/$target_cpu/sysroot"
-
-version_content = {
- root = file_base
-
- include_dir = "$file_base/include"
- headers = []
- % for header in sorted(data.headers):
- headers += [ "$file_base/${header}" ]
- % endfor
-
- link_libs = []
- % for lib in sorted(data.link_libs):
- link_libs += [ "$file_base/${lib}" ]
- % endfor
-
- dist_libs = []
- % for lib in sorted(data.dist_libs):
- dist_libs += [ "$file_base/${lib}" ]
- % endfor
-}
-metadata = {
- type = "sysroot"
- name = "sysroot"
- root = "pkg/sysroot"
- versions = {}
- if (target_cpu == "arm64") {
- versions.arm64 = version_content
- } else if (target_cpu == "x64") {
- versions.x64 = version_content
- } else {
- assert(false, "Unknown CPU type: %target_cpu")
- }
-}
-
-base_meta_file = "$target_gen_dir/sysroot.base_meta.json"
-write_file(base_meta_file, metadata, "json")
-augmented_meta_file = "$target_gen_dir/sysroot.full_meta.json"
-debug_mapping_file = "$target_gen_dir/sysroot.mapping.txt"
-
-action("sysroot_meta") {
- script = "//build/zircon/add_sysroot_debug_data.py"
-
- inputs = [
- base_meta_file,
- % for lib in sorted(data.debug_source_libs):
- "${lib}",
- % endfor
- ]
-
- outputs = [
- augmented_meta_file,
- ]
-
- args = [
- "--base",
- rebase_path(base_meta_file),
- "--out",
- rebase_path(augmented_meta_file),
- "--debug-mapping",
- rebase_path(debug_mapping_file),
- % for lib in sorted(data.debug_source_libs):
- "--lib-debug-file",
- rebase_path("${lib}"),
- % endfor
- ]
-
- deps = [
- ":sysroot",
- ]
-}
-
-sdk_atom("sysroot_sdk") {
- id = "sdk://pkg/sysroot"
- category = "partner"
-
- meta = {
- dest = "pkg/sysroot/meta.json"
- schema = "sysroot"
- source = augmented_meta_file
- }
-
- files = [
- % for path, file in sorted(data.sdk_files.iteritems()):
- {
- source = "${file}"
- dest = "$file_base/${path}"
- },
- % endfor
- ]
-
- file_list = debug_mapping_file
-
- non_sdk_deps = [
- ":sysroot",
- ":sysroot_meta",
- ]
-}