| # Copyright 2015 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/util/process_version.gni") |
| import("//chromecast/chromecast.gni") |
| import("//testing/test.gni") |
| |
| if (is_android) { |
| import("//build/config/android/rules.gni") |
| import("//third_party/jni_zero/jni_zero.gni") |
| } |
| |
| declare_args() { |
| # Denotes the type of Cast product. This is #defined as CAST_PRODUCT_TYPE in |
| # version.h. See //third_party/metrics_proto/cast_logs.proto for valid values. |
| if (is_android_arc) { |
| cast_product_type = 7 # CAST_PRODUCT_TYPE_CHROME_OS |
| } else if (is_android) { |
| cast_product_type = 4 # CAST_PRODUCT_TYPE_ANDROID_TV |
| } else if (is_fuchsia) { |
| cast_product_type = 8 # CAST_PRODUCT_TYPE_FUCHSIA_OS |
| } else { |
| cast_product_type = 0 # CAST_PRODUCT_TYPE_UNKNOWN |
| } |
| } |
| |
| if (is_android_arc) { |
| assert(cast_product_type == 7) |
| } else if (is_android) { |
| assert(cast_product_type == 4 || cast_product_type == 6) |
| } else { |
| assert(cast_product_type >= 0 && cast_product_type <= 8 && |
| cast_product_type != 4 && cast_product_type != 6 && |
| cast_product_type != 7) |
| } |
| |
| cast_source_set("base") { |
| sources = [ |
| "alarm_manager.cc", |
| "alarm_manager.h", |
| "bind_to_task_runner.h", |
| "bitstream_audio_codecs.cc", |
| "bitstream_audio_codecs.h", |
| "cast_constants.cc", |
| "cast_constants.h", |
| "cast_features.cc", |
| "cast_features.h", |
| "cast_features_internal.cc", |
| "cast_paths.cc", |
| "cast_paths.h", |
| "cast_resource.cc", |
| "cast_resource.h", |
| "device_capabilities.h", |
| "device_capabilities_impl.cc", |
| "device_capabilities_impl.h", |
| "error_codes.cc", |
| "error_codes.h", |
| "hash_util.cc", |
| "hash_util.h", |
| "legacy_app_id_mapper.h", |
| "legacy_app_id_mapper_dummy.cc", |
| "observer.h", |
| "path_utils.cc", |
| "path_utils.h", |
| "pref_names.cc", |
| "pref_names.h", |
| "process_types.h", |
| "process_utils.cc", |
| "process_utils.h", |
| "statistics/weighted_mean.cc", |
| "statistics/weighted_mean.h", |
| "statistics/weighted_moving_average.cc", |
| "statistics/weighted_moving_average.h", |
| "statistics/weighted_moving_linear_regression.cc", |
| "statistics/weighted_moving_linear_regression.h", |
| "system_time_change_notifier.cc", |
| "system_time_change_notifier.h", |
| "task_runner_impl.cc", |
| "task_runner_impl.h", |
| ] |
| |
| public_deps = [ |
| ":chromecast_switches", |
| ":init_shlib", |
| "//base", |
| "//chromecast/base/metrics", |
| "//chromecast/public", |
| ] |
| |
| deps = [ |
| ":cast_version", |
| "//chromecast:chromecast_buildflags", |
| "//third_party/widevine/cdm:buildflags", |
| ] |
| |
| if (is_android) { |
| sources += [ |
| "android/dumpstate_writer.cc", |
| "android/dumpstate_writer.h", |
| "android/system_time_change_notifier_android.cc", |
| "android/system_time_change_notifier_android.h", |
| ] |
| deps += [ ":jni_headers" ] |
| } |
| } |
| |
| # chromecast related switch values |
| # b/30398176 components that depend on switch values should depend on |
| # this target directly instead of depend on //chromecast/base to avoid |
| # unnecessary size increase. |
| cast_source_set("chromecast_switches") { |
| sources = [ |
| "chromecast_switches.cc", |
| "chromecast_switches.h", |
| ] |
| |
| deps = [ "//base" ] |
| } |
| |
| # command line initialization code for shared libs |
| # b/30398176 shared libs that depend on InitCommandLineShlib() only should |
| # use this target instead of //chromecast/base |
| cast_source_set("init_shlib") { |
| sources = [ |
| "init_command_line_shlib.cc", |
| "init_command_line_shlib.h", |
| ] |
| |
| deps = [ |
| "//base", |
| "//chromecast:chromecast_buildflags", |
| ] |
| } |
| |
| cast_source_set("test_support") { |
| sources = [ |
| "scoped_temp_file.cc", |
| "scoped_temp_file.h", |
| ] |
| |
| public_deps = [ |
| ":base", |
| "//base", |
| ] |
| } |
| |
| test("cast_base_unittests") { |
| sources = [ |
| "alarm_manager_unittest.cc", |
| "cast_features_unittest.cc", |
| "device_capabilities_impl_unittest.cc", |
| "error_codes_unittest.cc", |
| "hash_util_test.cc", |
| "metrics/cast_metrics_helper_unittest.cc", |
| "observer_unittest.cc", |
| "path_utils_unittest.cc", |
| "process_utils_unittest.cc", |
| "statistics/weighted_moving_average_unittest.cc", |
| "statistics/weighted_moving_linear_regression_unittest.cc", |
| "system_time_change_notifier_unittest.cc", |
| "thread_health_checker_unittest.cc", |
| ] |
| |
| deps = [ |
| ":test_support", |
| ":thread_health_checker", |
| "//base/test:run_all_unittests", |
| "//base/test:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| |
| # Declares CreateSysInfo() without defining the implementation (see below). |
| cast_source_set("cast_sys_info_util") { |
| public = [ "cast_sys_info_util.h" ] |
| } |
| |
| # Defines a CastSysInfoDummy suitable for use in tests, and public builds. |
| cast_source_set("dummy_cast_sys_info") { |
| sources = [ |
| "cast_sys_info_dummy.cc", |
| "cast_sys_info_dummy.h", |
| ] |
| deps = [ |
| "//base", |
| "//chromecast/public", |
| ] |
| } |
| |
| # Links a CreateSysInfo() implementation that returns CastSysInfoDummy. |
| cast_source_set("dummy_create_sys_info") { |
| sources = [ "cast_sys_info_util_simple.cc" ] |
| deps = [ ":dummy_cast_sys_info" ] |
| public_deps = [ ":cast_sys_info_util" ] |
| } |
| |
| # Links the default CreateSysInfo() implementation for Android. |
| if (is_android) { |
| cast_source_set("android_create_sys_info") { |
| deps = [ |
| ":cast_version", |
| ":jni_headers", |
| "//base", |
| "//chromecast/browser/android:jni_headers", |
| "//chromecast/public", |
| ] |
| public_deps = [ ":cast_sys_info_util" ] |
| sources = [ |
| "cast_sys_info_android.cc", |
| "cast_sys_info_android.h", |
| "cast_sys_info_android_factory.cc", |
| ] |
| } |
| } else { # !is_android |
| # Target for OEM partners to override sys_info shared library, i.e. |
| # libcast_sys_info_1.0.so. |
| cast_shared_library("libcast_sys_info_1.0") { |
| sources = [ "cast_sys_info_shlib.cc" ] |
| |
| deps = [ |
| ":cast_sys_info_util", |
| ":chromecast_switches", |
| ":dummy_cast_sys_info", |
| ":init_shlib", |
| "//base", |
| "//chromecast/public", |
| ] |
| } |
| |
| # Links a CreateSysInfo() that loads libcast_sys_info_1.0.so. |
| cast_source_set("shlib_create_sys_info") { |
| sources = [ "cast_sys_info_util_shlib.cc" ] |
| |
| deps = [ |
| ":libcast_sys_info_1.0", |
| "//base", |
| "//chromecast/public", |
| ] |
| |
| public_deps = [ ":cast_sys_info_util" ] |
| } |
| } # is_android |
| |
| # Links the default CreateSysInfo() for this build configuration. |
| group("default_create_sys_info") { |
| if (is_android) { |
| public_deps = [ ":android_create_sys_info" ] |
| } else { |
| public_deps = [ ":dummy_create_sys_info" ] |
| } |
| |
| # The shlib might be needed for Linux, but was never picked up for 'public' builds. |
| # } else { |
| # public_deps = [ ":shlib_create_sys_info" ] |
| # } |
| |
| } |
| |
| cast_source_set("thread_health_checker") { |
| sources = [ |
| "thread_health_checker.cc", |
| "thread_health_checker.h", |
| ] |
| deps = [ |
| ":base", |
| "//base", |
| ] |
| } |
| |
| process_version("cast_version") { |
| template_file = "version.h.in" |
| output = "$target_gen_dir/version.h" |
| |
| sources = [ "//chrome/VERSION" ] |
| extra_args = [ |
| "-e", |
| "VERSION_FULL=\"%s.%s.%s.%s\"%(MAJOR,MINOR,BUILD,PATCH)", |
| "-e", |
| "CAST_BUILD_RELEASE=\"$cast_build_release\"", |
| "-e", |
| "CAST_BUILD_INCREMENTAL=\"$cast_build_incremental\"", |
| "-e", |
| "CAST_PRODUCT_TYPE=$cast_product_type", |
| ] |
| |
| if (cast_is_debug) { |
| extra_args += [ |
| "-e", |
| "CAST_IS_DEBUG_BUILD=1", |
| ] |
| } else { |
| extra_args += [ |
| "-e", |
| "CAST_IS_DEBUG_BUILD=0", |
| ] |
| } |
| } |
| |
| if (is_android) { |
| generate_jni("jni_headers") { |
| sources = [ |
| "java/src/org/chromium/chromecast/base/CastSysInfoAndroid.java", |
| "java/src/org/chromium/chromecast/base/DumpstateWriter.java", |
| "java/src/org/chromium/chromecast/base/SystemTimeChangeNotifierAndroid.java", |
| ] |
| } |
| |
| android_library("base_java") { |
| java_src_dir = "//chromecast/base/java/src" |
| srcjar_deps = [ ":jni_headers" ] |
| sources = [ |
| "$java_src_dir/org/chromium/chromecast/base/Both.java", |
| "$java_src_dir/org/chromium/chromecast/base/Box.java", |
| "$java_src_dir/org/chromium/chromecast/base/Cell.java", |
| "$java_src_dir/org/chromium/chromecast/base/Controller.java", |
| "$java_src_dir/org/chromium/chromecast/base/Observable.java", |
| "$java_src_dir/org/chromium/chromecast/base/Observer.java", |
| "$java_src_dir/org/chromium/chromecast/base/OwnedScope.java", |
| "$java_src_dir/org/chromium/chromecast/base/Scope.java", |
| "$java_src_dir/org/chromium/chromecast/base/Sequencer.java", |
| "$java_src_dir/org/chromium/chromecast/base/Unit.java", |
| |
| # TODO(sanfin): Move these files to another target. |
| "$java_src_dir/org/chromium/chromecast/base/CastSerialGenerator.java", |
| "$java_src_dir/org/chromium/chromecast/base/CastSettingsManager.java", |
| "$java_src_dir/org/chromium/chromecast/base/CastSwitches.java", |
| "$java_src_dir/org/chromium/chromecast/base/CastSysInfoAndroid.java", |
| "$java_src_dir/org/chromium/chromecast/base/DumpstateWriter.java", |
| "$java_src_dir/org/chromium/chromecast/base/SystemTimeChangeNotifierAndroid.java", |
| ] |
| |
| deps = [ |
| "//base:base_java", |
| "//build/android:build_java", |
| "//third_party/androidx:androidx_annotation_annotation_java", |
| "//third_party/androidx:androidx_core_core_java", |
| "//third_party/jni_zero:jni_zero_java", |
| ] |
| } |
| |
| android_library("cast_base_test_utils_java") { |
| java_test_dir = "//chromecast/base/java/test" |
| testonly = true |
| sources = [ |
| "$java_test_dir/org/chromium/chromecast/base/Inheritance.java", |
| "$java_test_dir/org/chromium/chromecast/base/ReactiveRecorder.java", |
| ] |
| deps = [ |
| ":base_java", |
| "//third_party/hamcrest:hamcrest_java", |
| "//third_party/junit", |
| ] |
| } |
| |
| robolectric_binary("cast_base_junit_tests") { |
| java_test_dir = "//chromecast/base/java/test" |
| sources = [ |
| "$java_test_dir/org/chromium/chromecast/base/BothTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/BoxTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/CastSettingsManagerTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/CellTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ControllerTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableAfterTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableAlarmTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableAndTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableAndThenTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableDebugTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableDelayTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableDistinctUntilChangedTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableFilterTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableFlatMapTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableFoldTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableMapTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableMiscellaneousTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableNotTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableOpaqueTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObservableOrTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ObserverTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/OwnedScopeTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ReactiveRecorderTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/ScopeTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/SequencerTest.java", |
| "$java_test_dir/org/chromium/chromecast/base/UnitTest.java", |
| ] |
| deps = [ |
| ":base_java", |
| ":cast_base_test_utils_java", |
| "//base:base_java", |
| "//base:base_java_test_support", |
| "//base:base_junit_test_support", |
| "//build/android:build_java", |
| "//third_party/hamcrest:hamcrest_java", |
| "//third_party/jni_zero:jni_zero_java", |
| "//third_party/mockito:mockito_java", |
| ] |
| } |
| } |