BUILD.gn 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. # Copyright 2017 The Chromium Authors.All rights reserved.
  2. # Use of this source code is governed by a BSD - style license that can be
  3. # found in the LICENSE file.
  4. import("//mojo/public/tools/bindings/mojom.gni")
  5. if (is_android) {
  6. import("//build/config/android/rules.gni")
  7. }
  8. import("//build/buildflag_header.gni")
  9. import("//components/optimization_guide/features.gni")
  10. import("//third_party/tflite/features.gni")
  11. static_library("bloomfilter") {
  12. sources = [
  13. "bloom_filter.cc",
  14. "bloom_filter.h",
  15. ]
  16. deps = [
  17. "//base",
  18. "//third_party/smhasher:murmurhash3",
  19. ]
  20. }
  21. static_library("entities") {
  22. sources = [
  23. "batch_entity_metadata_task.cc",
  24. "batch_entity_metadata_task.h",
  25. "entity_metadata.cc",
  26. "entity_metadata.h",
  27. "entity_metadata_provider.h",
  28. ]
  29. public_deps = [
  30. "//base",
  31. "//third_party/abseil-cpp:absl",
  32. ]
  33. }
  34. static_library("model_executor") {
  35. sources = [
  36. "execution_status.cc",
  37. "execution_status.h",
  38. "model_enums.h",
  39. "model_executor.h",
  40. "model_info.cc",
  41. "model_info.h",
  42. "model_util.cc",
  43. "model_util.h",
  44. ]
  45. if (build_with_tflite_lib) {
  46. sources += [
  47. "base_model_executor.h",
  48. "base_model_executor_helpers.h",
  49. "bert_model_executor.cc",
  50. "bert_model_executor.h",
  51. "model_execution_timeout_watchdog.h",
  52. "tflite_model_executor.h",
  53. ]
  54. }
  55. public_deps = [
  56. "//components/optimization_guide:machine_learning_tflite_buildflags",
  57. "//third_party/re2",
  58. ]
  59. if (build_with_tflite_lib) {
  60. public_deps += [
  61. "//components/optimization_guide/core:machine_learning",
  62. "//third_party/abseil-cpp:absl",
  63. "//third_party/tflite",
  64. "//third_party/tflite:tflite_public_headers",
  65. "//third_party/tflite_support",
  66. "//third_party/tflite_support:tflite_support_proto",
  67. ]
  68. }
  69. deps = [
  70. ":features",
  71. "//base",
  72. "//components/optimization_guide/proto:optimization_guide_proto",
  73. "//net",
  74. "//url",
  75. ]
  76. }
  77. mojom("interfaces") {
  78. sources = [ "optimization_guide_common.mojom" ]
  79. webui_module_path = "/"
  80. public_deps = [ "//mojo/public/mojom/base" ]
  81. }
  82. if (build_with_tflite_lib) {
  83. static_library("machine_learning") {
  84. sources = [
  85. "tflite_op_resolver.cc",
  86. "tflite_op_resolver.h",
  87. ]
  88. deps = [
  89. ":features",
  90. "//components/optimization_guide:machine_learning_tflite_buildflags",
  91. "//third_party/tflite",
  92. "//third_party/tflite:tflite_public_headers",
  93. ]
  94. }
  95. }
  96. static_library("features") {
  97. sources = [
  98. "insertion_ordered_set.h",
  99. "optimization_guide_constants.cc",
  100. "optimization_guide_constants.h",
  101. "optimization_guide_features.cc",
  102. "optimization_guide_features.h",
  103. "optimization_guide_prefs.cc",
  104. "optimization_guide_prefs.h",
  105. "optimization_guide_switches.cc",
  106. "optimization_guide_switches.h",
  107. "page_content_annotation_type.cc",
  108. "page_content_annotation_type.h",
  109. ]
  110. public_deps = [ "//base" ]
  111. deps = [
  112. "//components/optimization_guide:machine_learning_tflite_buildflags",
  113. "//components/optimization_guide/proto:optimization_guide_proto",
  114. "//components/prefs",
  115. "//components/variations",
  116. "//google_apis",
  117. "//net",
  118. "//ui/base",
  119. ]
  120. }
  121. static_library("core") {
  122. sources = [
  123. "command_line_top_host_provider.cc",
  124. "command_line_top_host_provider.h",
  125. "hint_cache.cc",
  126. "hint_cache.h",
  127. "hints_component_info.h",
  128. "hints_component_util.cc",
  129. "hints_component_util.h",
  130. "hints_fetcher.cc",
  131. "hints_fetcher.h",
  132. "hints_fetcher_factory.cc",
  133. "hints_fetcher_factory.h",
  134. "hints_manager.cc",
  135. "hints_manager.h",
  136. "hints_processing_util.cc",
  137. "hints_processing_util.h",
  138. "local_page_entities_metadata_provider.cc",
  139. "local_page_entities_metadata_provider.h",
  140. "memory_hint.cc",
  141. "memory_hint.h",
  142. "model_handler.h",
  143. "new_optimization_guide_decider.h",
  144. "noisy_metrics_recorder.cc",
  145. "noisy_metrics_recorder.h",
  146. "optimization_filter.cc",
  147. "optimization_filter.h",
  148. "optimization_guide_decision.h",
  149. "optimization_guide_enums.h",
  150. "optimization_guide_logger.cc",
  151. "optimization_guide_logger.h",
  152. "optimization_guide_model_provider.h",
  153. "optimization_guide_navigation_data.cc",
  154. "optimization_guide_navigation_data.h",
  155. "optimization_guide_permissions_util.cc",
  156. "optimization_guide_permissions_util.h",
  157. "optimization_guide_store.cc",
  158. "optimization_guide_store.h",
  159. "optimization_guide_util.cc",
  160. "optimization_guide_util.h",
  161. "optimization_hints_component_observer.h",
  162. "optimization_hints_component_update_listener.cc",
  163. "optimization_hints_component_update_listener.h",
  164. "optimization_metadata.cc",
  165. "optimization_metadata.h",
  166. "optimization_target_model_observer.h",
  167. "page_content_annotation_job.cc",
  168. "page_content_annotation_job.h",
  169. "page_content_annotations_common.cc",
  170. "page_content_annotations_common.h",
  171. "prediction_model_fetcher.h",
  172. "prediction_model_fetcher_impl.cc",
  173. "prediction_model_fetcher_impl.h",
  174. "push_notification_manager.cc",
  175. "push_notification_manager.h",
  176. "store_update_data.cc",
  177. "store_update_data.h",
  178. "tab_url_provider.h",
  179. "top_host_provider.h",
  180. "url_pattern_with_wildcards.cc",
  181. "url_pattern_with_wildcards.h",
  182. ]
  183. if (build_with_tflite_lib) {
  184. sources += [
  185. "bert_model_handler.cc",
  186. "bert_model_handler.h",
  187. "model_validator.cc",
  188. "model_validator.h",
  189. "page_content_annotation_job_executor.cc",
  190. "page_content_annotation_job_executor.h",
  191. "page_entities_model_executor.cc",
  192. "page_entities_model_executor.h",
  193. "page_topics_model_executor.cc",
  194. "page_topics_model_executor.h",
  195. "page_visibility_model_executor.cc",
  196. "page_visibility_model_executor.h",
  197. ]
  198. if (build_with_internal_optimization_guide) {
  199. sources += [
  200. "entity_annotator_native_library.cc",
  201. "entity_annotator_native_library.h",
  202. "page_entities_model_executor_impl.cc",
  203. "page_entities_model_executor_impl.h",
  204. ]
  205. }
  206. }
  207. public_deps = [
  208. ":entities",
  209. ":features",
  210. ":model_executor",
  211. "//components/leveldb_proto",
  212. "//components/optimization_guide:machine_learning_tflite_buildflags",
  213. "//components/optimization_guide/core:interfaces",
  214. "//third_party/re2",
  215. ]
  216. if (build_with_tflite_lib) {
  217. public_deps += [
  218. "//components/optimization_guide/core:machine_learning",
  219. "//third_party/abseil-cpp:absl",
  220. "//third_party/tflite",
  221. "//third_party/tflite:tflite_public_headers",
  222. "//third_party/tflite_support",
  223. "//third_party/tflite_support:tflite_support_proto",
  224. "//third_party/zlib/google:compression_utils",
  225. ]
  226. }
  227. deps = [
  228. ":bloomfilter",
  229. "//base",
  230. "//components/optimization_guide/core:interfaces",
  231. "//components/optimization_guide/proto:optimization_guide_proto",
  232. "//components/prefs",
  233. "//components/unified_consent",
  234. "//components/variations",
  235. "//components/variations/net",
  236. "//services/metrics/public/cpp:metrics_cpp",
  237. "//services/metrics/public/cpp:ukm_builders",
  238. "//services/network/public/cpp",
  239. "//url:url",
  240. ]
  241. if (!is_android && build_with_tflite_lib &&
  242. build_with_internal_optimization_guide) {
  243. data_deps = [
  244. "//components/optimization_guide/internal:optimization_guide_internal",
  245. ]
  246. }
  247. }
  248. static_library("prediction") {
  249. sources = [
  250. "prediction_manager.cc",
  251. "prediction_manager.h",
  252. "prediction_model_download_manager.cc",
  253. "prediction_model_download_manager.h",
  254. "prediction_model_download_observer.h",
  255. "prediction_model_override.cc",
  256. "prediction_model_override.h",
  257. ]
  258. deps = [
  259. "//components/crx_file",
  260. "//components/download/public/background_service:public",
  261. "//components/optimization_guide/core",
  262. "//components/optimization_guide/proto:optimization_guide_proto",
  263. "//components/prefs",
  264. "//components/services/unzip/public/cpp",
  265. "//crypto",
  266. "//net/traffic_annotation",
  267. "//services/network/public/cpp",
  268. ]
  269. if (is_ios) {
  270. deps += [ "//components/services/unzip:in_process" ]
  271. } else {
  272. deps += [ "//components/services/unzip/content" ]
  273. }
  274. }
  275. static_library("test_support") {
  276. testonly = true
  277. sources = [
  278. "mock_push_notification_manager.cc",
  279. "mock_push_notification_manager.h",
  280. "optimization_guide_test_util.cc",
  281. "optimization_guide_test_util.h",
  282. "proto_database_provider_test_base.cc",
  283. "proto_database_provider_test_base.h",
  284. "test_hints_component_creator.cc",
  285. "test_hints_component_creator.h",
  286. "test_model_executor.cc",
  287. "test_model_executor.h",
  288. "test_model_handler.h",
  289. "test_model_info_builder.cc",
  290. "test_model_info_builder.h",
  291. "test_optimization_guide_model_provider.cc",
  292. "test_optimization_guide_model_provider.h",
  293. ]
  294. if (build_with_tflite_lib) {
  295. sources += [
  296. "test_tflite_model_executor.cc",
  297. "test_tflite_model_executor.h",
  298. "test_tflite_model_handler.h",
  299. ]
  300. }
  301. deps = [
  302. ":bloomfilter",
  303. ":core",
  304. "//base",
  305. "//components/leveldb_proto",
  306. "//components/optimization_guide/proto:optimization_guide_proto",
  307. "//testing/gmock",
  308. "//testing/gtest",
  309. "//url",
  310. ]
  311. if (build_with_tflite_lib) {
  312. deps += [ "//third_party/abseil-cpp:absl" ]
  313. }
  314. }
  315. if (is_ios) {
  316. source_set("eg_test_support+eg2") {
  317. testonly = true
  318. sources = [
  319. "optimization_guide_constants.cc",
  320. "optimization_guide_constants.h",
  321. "optimization_guide_enums.h",
  322. "optimization_guide_switches.cc",
  323. "optimization_guide_switches.h",
  324. "optimization_guide_test_util.cc",
  325. "optimization_guide_test_util.h",
  326. "page_content_annotation_type.cc",
  327. "page_content_annotation_type.h",
  328. ]
  329. deps = [
  330. "//base",
  331. "//components/optimization_guide/proto:optimization_guide_proto",
  332. "//url",
  333. ]
  334. }
  335. }
  336. source_set("unit_tests") {
  337. testonly = true
  338. sources = [
  339. "batch_entity_metadata_task_unittest.cc",
  340. "bloom_filter_unittest.cc",
  341. "command_line_top_host_provider_unittest.cc",
  342. "hint_cache_unittest.cc",
  343. "hints_component_util_unittest.cc",
  344. "hints_fetcher_unittest.cc",
  345. "hints_manager_unittest.cc",
  346. "hints_processing_util_unittest.cc",
  347. "insertion_ordered_set_unittest.cc",
  348. "local_page_entities_metadata_provider_unittest.cc",
  349. "model_handler_unittest.cc",
  350. "model_util_unittest.cc",
  351. "noisy_metrics_recorder_unittest.cc",
  352. "optimization_filter_unittest.cc",
  353. "optimization_guide_features_unittest.cc",
  354. "optimization_guide_navigation_data_unittest.cc",
  355. "optimization_guide_permissions_util_unittest.cc",
  356. "optimization_guide_store_unittest.cc",
  357. "optimization_guide_switches_unittest.cc",
  358. "optimization_guide_util_unittest.cc",
  359. "optimization_hints_component_update_listener_unittest.cc",
  360. "optimization_metadata_unittest.cc",
  361. "page_content_annotation_job_unittest.cc",
  362. "prediction_manager_unittest.cc",
  363. "prediction_model_download_manager_unittest.cc",
  364. "prediction_model_fetcher_unittest.cc",
  365. "push_notification_manager_unittest.cc",
  366. "store_update_data_unittest.cc",
  367. "url_pattern_with_wildcards_unittest.cc",
  368. ]
  369. if (build_with_tflite_lib) {
  370. sources += [
  371. "bert_model_executor_unittest.cc",
  372. "model_validator_unittest.cc",
  373. "page_content_annotation_job_executor_unittest.cc",
  374. "page_topics_model_executor_unittest.cc",
  375. "page_visibility_model_executor_unittest.cc",
  376. "tflite_model_executor_unittest.cc",
  377. ]
  378. if (build_with_internal_optimization_guide) {
  379. sources += [
  380. "entity_annotator_native_library_unittest.cc",
  381. "page_entities_model_executor_impl_unittest.cc",
  382. ]
  383. }
  384. }
  385. deps = [
  386. ":bloomfilter",
  387. ":core",
  388. ":entities",
  389. ":prediction",
  390. ":test_support",
  391. ":unit_tests_bundle_data",
  392. "//base",
  393. "//base/test:test_support",
  394. "//build:chromeos_buildflags",
  395. "//components/download/public/background_service/test:test_support",
  396. "//components/leveldb_proto:test_support",
  397. "//components/optimization_guide/proto:optimization_guide_proto",
  398. "//components/prefs:test_support",
  399. "//components/services/unzip:in_process",
  400. "//components/sync_preferences:test_support",
  401. "//components/ukm:test_support",
  402. "//components/unified_consent",
  403. "//components/variations:test_support",
  404. "//net:test_support",
  405. "//services/network:network_service",
  406. "//services/network:test_support",
  407. "//testing/gmock",
  408. "//testing/gtest",
  409. "//third_party/zlib/google:zip",
  410. "//ui/base",
  411. "//url:url",
  412. ]
  413. if (!is_ios) {
  414. deps += [ "//components/services/unzip/content" ]
  415. }
  416. if (build_with_tflite_lib) {
  417. deps += [
  418. "//third_party/abseil-cpp:absl",
  419. "//third_party/tflite",
  420. "//third_party/tflite:tflite_public_headers",
  421. "//third_party/tflite_support",
  422. "//third_party/tflite_support:tflite_support_proto",
  423. ]
  424. }
  425. }
  426. bundle_data("unit_tests_bundle_data") {
  427. visibility = [ ":unit_tests" ]
  428. testonly = true
  429. sources = [
  430. "//components/test/data/optimization_guide/bert_page_topics_model.tflite",
  431. "//components/test/data/optimization_guide/invalid_model.crx3",
  432. "//components/test/data/optimization_guide/simple_test.tflite",
  433. ]
  434. outputs = [ "{{bundle_resources_dir}}/" +
  435. "{{source_root_relative_dir}}/{{source_file_part}}" ]
  436. }
  437. if (is_android) {
  438. java_cpp_enum("optimization_guide_generated_enums") {
  439. sources = [ "optimization_guide_decision.h" ]
  440. visibility = [ "//chrome/browser/optimization_guide/android:*" ]
  441. }
  442. }
  443. if (is_mac && build_with_internal_optimization_guide) {
  444. # We need to copy the optimization guide shared library so that the
  445. # bundle_data dependencies have a "copy" target type.Otherwise for
  446. # "shared_library" target types it will try to link things into
  447. # Chromium Framework when we want to keep it separate instead.
  448. copy("optimization_guide_internal_library_copy") {
  449. sources = [ "$root_out_dir/liboptimization_guide_internal.dylib" ]
  450. outputs = [ "$root_out_dir/og_intermediates/{{source_file_part}}" ]
  451. deps = [
  452. "//components/optimization_guide/internal:optimization_guide_internal",
  453. ]
  454. }
  455. }