| # Copyright 2021 The Cobalt Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import("//starboard/build/config/os_definitions.gni") |
| |
| _common_loader_app_sources = [ |
| "loader_app.cc", |
| "loader_app_switches.cc", |
| "loader_app_switches.h", |
| "system_get_extension_shim.cc", |
| "system_get_extension_shim.h", |
| ] |
| |
| group("common_loader_app_dependencies") { |
| public_deps = [ |
| ":app_key", |
| ":installation_manager", |
| ":memory_tracker_thread", |
| ":reset_evergreen_update", |
| ":slot_management", |
| "//starboard:starboard_group", |
| "//starboard/elf_loader:constants", |
| "//starboard/elf_loader:evergreen_info", |
| "//starboard/elf_loader:sabi_string", |
| ] |
| |
| if (sb_is_evergreen_compatible) { |
| public_deps += [ "//third_party/crashpad/wrapper" ] |
| } else { |
| public_deps += [ "//third_party/crashpad/wrapper:wrapper_stub" ] |
| } |
| } |
| |
| if (sb_is_evergreen_compatible && sb_evergreen_compatible_package) { |
| copy("copy_loader_app_content") { |
| install_content = true |
| if (target_cpu == "arm" && arm_float_abi == "softfp") { |
| sources = [ "$root_out_dir/../evergreen-$target_cpu-${arm_float_abi}_$build_type/content" ] |
| } else if (target_cpu == "arm64") { |
| sources = [ "$root_out_dir/../evergreen-$target_cpu_$build_type/content" ] |
| } else { |
| sources = [] |
| } |
| outputs = [ "$sb_static_contents_output_data_dir/app/cobalt/content" ] |
| } |
| copy("copy_loader_app_manifest") { |
| install_content = true |
| if (target_cpu == "arm" && arm_float_abi == "softfp") { |
| sources = [ "$root_out_dir/../evergreen-$target_cpu-${arm_float_abi}_$build_type/manifest.json" ] |
| } else if (target_cpu == "arm64") { |
| sources = |
| [ "$root_out_dir/../evergreen-$target_cpu_$build_type/manifest.json" ] |
| } else { |
| sources = [] |
| } |
| outputs = [ "$sb_static_contents_output_data_dir/app/cobalt/manifest.json" ] |
| } |
| |
| # This trick to name the Crashpad handler executable as a shared library, so |
| # that the Package Manager extracts it to the file system on install, is |
| # borrowed from Chrome on Android. |
| copy("copy_crashpad_handler_named_as_so") { |
| install_content = true |
| sources = [ "$root_out_dir/native_target/crashpad_handler" ] |
| outputs = [ "$root_out_dir/libcrashpad_handler.so" ] |
| deps = [ "//third_party/crashpad/handler:crashpad_handler(//starboard/android/arm/toolchain:native_target)" ] |
| } |
| } |
| |
| if (current_toolchain == starboard_toolchain) { |
| target(starboard_level_final_executable_type, "loader_app") { |
| build_loader = false |
| if (target_cpu == "x86" || target_cpu == "x64" || target_cpu == "arm" || |
| target_cpu == "arm64") { |
| data_deps = [ "//third_party/icu:icudata" ] |
| if (cobalt_font_package == "empty") { |
| data_deps += [ "//cobalt/content/fonts:copy_font_data" ] |
| } else { |
| data_deps += [ |
| "//cobalt/content/fonts:copy_fonts", |
| "//cobalt/content/fonts:fonts_xml", |
| ] |
| } |
| sources = _common_loader_app_sources |
| deps = [ |
| ":common_loader_app_dependencies", |
| "//cobalt/content/fonts:copy_font_data", |
| "//starboard:starboard_with_main", |
| "//starboard/elf_loader", |
| ] |
| if (sb_is_evergreen_compatible && sb_evergreen_compatible_package) { |
| data_deps += [ |
| ":copy_crashpad_handler_named_as_so", |
| ":copy_loader_app_content", |
| ":copy_loader_app_manifest", |
| "//cobalt/browser:copy_loader_app_libcobalt", |
| ] |
| deps += [ |
| ":copy_crashpad_handler_named_as_so", |
| ":copy_loader_app_content", |
| ":copy_loader_app_manifest", |
| "//cobalt/browser:copy_loader_app_libcobalt", |
| ] |
| } |
| } |
| } |
| } else { |
| not_needed([ "_common_loader_app_sources" ]) |
| } |
| |
| if (sb_is_evergreen_compatible) { |
| # TODO: b/261635039 enable this target on Android |
| target(final_executable_type, "loader_app_sys") { |
| if ((target_cpu == "x86" || target_cpu == "x64" || target_cpu == "arm" || |
| target_cpu == "arm64") && target_os != "android") { |
| sources = _common_loader_app_sources |
| |
| starboard_syms_path = |
| rebase_path("//starboard/starboard.syms", root_build_dir) |
| ldflags = [ |
| "-Wl,--dynamic-list=$starboard_syms_path", |
| "-ldl", |
| ] |
| deps = [ |
| ":common_loader_app_dependencies", |
| "//cobalt/content/fonts:copy_font_data", |
| "//starboard/elf_loader:elf_loader_sys", |
| ] |
| } |
| } |
| } |
| |
| static_library("app_key_files") { |
| sources = [ |
| "app_key_files.cc", |
| "app_key_files.h", |
| ] |
| deps = [ "//starboard:starboard_group" ] |
| } |
| |
| target(gtest_target_type, "app_key_files_test") { |
| testonly = true |
| sources = [ |
| "//starboard/common/test_main.cc", |
| "app_key_files_test.cc", |
| ] |
| deps = [ |
| ":app_key_files", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| |
| static_library("app_key") { |
| sources = [ |
| "app_key.cc", |
| "app_key.h", |
| "app_key_internal.cc", |
| "app_key_internal.h", |
| ] |
| deps = [ |
| "//starboard:starboard_group", |
| "//third_party/modp_b64", |
| ] |
| } |
| |
| target(gtest_target_type, "app_key_test") { |
| testonly = true |
| sources = [ |
| "//starboard/common/test_main.cc", |
| "app_key_test.cc", |
| ] |
| deps = [ |
| ":app_key", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| |
| static_library("drain_file") { |
| sources = [ |
| "drain_file.cc", |
| "drain_file.h", |
| ] |
| deps = [ "//starboard/common" ] |
| } |
| |
| target(gtest_target_type, "drain_file_test") { |
| testonly = true |
| sources = [ |
| "//starboard/common/test_main.cc", |
| "drain_file_helper.cc", |
| "drain_file_helper.h", |
| "drain_file_test.cc", |
| ] |
| deps = [ |
| ":drain_file", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| |
| static_library("installation_store_proto") { |
| sources = [ |
| "installation_store.pb.cc", |
| "installation_store.pb.h", |
| ] |
| public_deps = [ "//third_party/protobuf:protobuf_lite" ] |
| } |
| |
| static_library("installation_manager") { |
| sources = [ |
| "installation_manager.cc", |
| "installation_manager.h", |
| ] |
| |
| include_dirs = [ |
| # Get protobuf headers from the chromium tree. |
| "//third_party/protobuf/src", |
| ] |
| |
| deps = [ |
| ":installation_store_proto", |
| ":pending_restart", |
| "//starboard:starboard_group", |
| ] |
| } |
| |
| # TODO: b/309493306 - Stop building evergreen targets for all non-evergreen platforms. |
| if (!is_host_win) { |
| target(gtest_target_type, "installation_manager_test") { |
| testonly = true |
| sources = [ |
| "//starboard/common/test_main.cc", |
| "installation_manager_test.cc", |
| "pending_restart_test.cc", |
| ] |
| deps = [ |
| ":installation_manager", |
| ":installation_store_proto", |
| ":pending_restart", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| } |
| |
| static_library("slot_management") { |
| sources = [ |
| "slot_management.cc", |
| "slot_management.h", |
| ] |
| deps = [ |
| ":app_key_files", |
| ":drain_file", |
| ":installation_manager", |
| "//starboard:starboard_group", |
| "//starboard/elf_loader", |
| "//starboard/elf_loader:constants", |
| "//starboard/elf_loader:sabi_string", |
| ] |
| |
| if (sb_is_evergreen_compatible) { |
| deps += [ "//third_party/crashpad/wrapper" ] |
| } else { |
| deps += [ "//third_party/crashpad/wrapper:wrapper_stub" ] |
| } |
| } |
| |
| # TODO: b/309493306 - Stop building evergreen targets for all non-evergreen platforms. |
| if (!is_host_win) { |
| target(gtest_target_type, "slot_management_test") { |
| testonly = true |
| sources = [ |
| "//starboard/common/test_main.cc", |
| "slot_management_test.cc", |
| ] |
| deps = [ |
| ":app_key_files", |
| ":drain_file", |
| ":installation_manager", |
| ":installation_store_proto", |
| ":slot_management", |
| "//starboard/elf_loader:sabi_string", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| } |
| |
| static_library("pending_restart") { |
| sources = [ |
| "pending_restart.cc", |
| "pending_restart.h", |
| ] |
| |
| public_deps = [ "//starboard:starboard_headers_only" ] |
| } |
| |
| static_library("memory_tracker_thread") { |
| sources = [ |
| "memory_tracker_thread.cc", |
| "memory_tracker_thread.h", |
| ] |
| |
| deps = [ |
| "//starboard:starboard_headers_only", |
| "//starboard/common", |
| ] |
| } |
| |
| static_library("reset_evergreen_update") { |
| sources = [ |
| "reset_evergreen_update.cc", |
| "reset_evergreen_update.h", |
| ] |
| deps = [ "//starboard:starboard_group" ] |
| } |
| |
| # TODO: b/309493306 - Stop building evergreen targets for all non-evergreen platforms. |
| if (!is_host_win) { |
| target(gtest_target_type, "reset_evergreen_update_test") { |
| testonly = true |
| sources = [ |
| "//starboard/common/test_main.cc", |
| "reset_evergreen_update_test.cc", |
| ] |
| deps = [ |
| ":reset_evergreen_update", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| } |