# 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) { 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) { 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 = [ "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", "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_linear_regression.cc", "statistics/weighted_moving_linear_regression.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", ] 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 = [ "cast_features_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_linear_regression_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", ] } 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/Dict.java", "$java_src_dir/org/chromium/chromecast/base/LocalService.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/Pool.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/SharedObservable.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", ] 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/DictTest.java", "$java_test_dir/org/chromium/chromecast/base/LocalServiceTest.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/ObservableAnyTest.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/PoolTest.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/androidx:androidx_test_core_java", "//third_party/hamcrest:hamcrest_java", "//third_party/jni_zero:jni_zero_java", "//third_party/mockito:mockito_java", ] } }