BUILD.gn 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. # Copyright 2014 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("//build/config/chromeos/ui_mode.gni")
  5. import("//build/config/features.gni")
  6. import("//build/config/sysroot.gni")
  7. import("//build/config/ui.gni")
  8. import("//pdf/features.gni")
  9. import("//printing/buildflags/buildflags.gni")
  10. import("//testing/test.gni")
  11. if (is_mac) {
  12. import("//build/config/mac/mac_sdk.gni")
  13. }
  14. if (is_android) {
  15. import("//build/config/android/rules.gni")
  16. }
  17. assert(enable_basic_printing)
  18. if (is_win || enable_print_preview) {
  19. # Windows basic printing or print preview requires pdf enabled.
  20. assert(enable_pdf,
  21. "Windows basic printing or print preview needs pdf: " +
  22. "set enable_pdf=true.")
  23. }
  24. # Lower-dependency base printing files which are needed by both :printing and
  25. # //printing/backend without incurring deeper UI dependencies (e.g.,
  26. # //ui/accessibility). New files should normally be added to :printing, and
  27. # only be moved here if they are also required by //printing/backend.
  28. component("printing_base") {
  29. sources = [
  30. "print_job_constants.cc",
  31. "print_job_constants.h",
  32. "printing_features.cc",
  33. "printing_features.h",
  34. "printing_utils.cc",
  35. "printing_utils.h",
  36. "units.cc",
  37. "units.h",
  38. ]
  39. if (use_cups_ipp || is_chromeos) {
  40. sources += [
  41. "printer_query_result.h",
  42. "printer_status.cc",
  43. "printer_status.h",
  44. ]
  45. }
  46. if (use_cups) {
  47. public_configs = [ ":cups" ]
  48. }
  49. cflags = []
  50. defines = [ "IS_PRINTING_BASE_IMPL" ]
  51. public_deps = [
  52. "//build:chromeos_buildflags",
  53. "//printing/buildflags",
  54. ]
  55. deps = [
  56. "//base",
  57. "//third_party/icu",
  58. "//ui/gfx",
  59. "//ui/gfx/geometry",
  60. ]
  61. }
  62. if (enable_oop_printing && (is_linux || is_chromeos)) {
  63. source_set("printing_sandbox_hook") {
  64. sources = [
  65. "sandbox/print_backend_sandbox_hook_linux.cc",
  66. "sandbox/print_backend_sandbox_hook_linux.h",
  67. ]
  68. deps = [
  69. "//base",
  70. "//sandbox/linux:sandbox_services",
  71. "//sandbox/policy",
  72. "//services/network:network_sandbox_hook",
  73. ]
  74. if (use_cups) {
  75. configs += [ ":cups" ]
  76. }
  77. if (is_chromeos && use_cups) {
  78. deps += [ "//printing/backend" ]
  79. }
  80. }
  81. }
  82. source_set("native_drawing_context") {
  83. sources = [ "native_drawing_context.h" ]
  84. deps = [ "//base" ]
  85. }
  86. component("metafile") {
  87. sources = [
  88. "metafile.cc",
  89. "metafile.h",
  90. "metafile_agent.cc",
  91. "metafile_agent.h",
  92. "metafile_skia.cc",
  93. "metafile_skia.h",
  94. ]
  95. defines = [ "IS_PRINTING_METAFILE_IMPL" ]
  96. public_deps = [
  97. ":native_drawing_context",
  98. "//printing/mojom",
  99. ]
  100. deps = [
  101. "//cc/paint",
  102. "//printing/common",
  103. "//ui/accessibility",
  104. ]
  105. if (is_mac) {
  106. sources += [
  107. "pdf_metafile_cg_mac.cc",
  108. "pdf_metafile_cg_mac.h",
  109. ]
  110. frameworks = [
  111. "ApplicationServices.framework",
  112. "CoreFoundation.framework",
  113. ]
  114. }
  115. if (is_win) {
  116. sources += [
  117. "emf_win.cc",
  118. "emf_win.h",
  119. ]
  120. }
  121. }
  122. component("printing") {
  123. sources = [
  124. "nup_parameters.cc",
  125. "nup_parameters.h",
  126. "page_number.cc",
  127. "page_number.h",
  128. "page_range.cc",
  129. "page_range.h",
  130. "page_setup.cc",
  131. "page_setup.h",
  132. "pdf_render_settings.h",
  133. "print_dialog_linux_interface.h",
  134. "print_settings.cc",
  135. "print_settings.h",
  136. "print_settings_conversion.cc",
  137. "print_settings_conversion.h",
  138. "printed_document.cc",
  139. "printed_document.h",
  140. "printing_context.cc",
  141. "printing_context.h",
  142. "printing_context_factory_for_test.h",
  143. "pwg_raster_settings.h",
  144. ]
  145. cflags = []
  146. defines = [ "IS_PRINTING_IMPL" ]
  147. public_deps = [
  148. ":metafile",
  149. ":native_drawing_context",
  150. ":printing_base",
  151. ]
  152. deps = [
  153. "//base",
  154. "//base:i18n",
  155. "//base/third_party/dynamic_annotations",
  156. "//build:chromeos_buildflags",
  157. "//printing/mojom",
  158. "//skia",
  159. "//third_party/icu",
  160. "//ui/gfx",
  161. "//ui/gfx/geometry",
  162. "//url",
  163. ]
  164. if (is_android) {
  165. sources += [
  166. "printing_context_android.cc",
  167. "printing_context_android.h",
  168. ]
  169. deps += [
  170. ":printing_jni_headers",
  171. "//ui/android",
  172. ]
  173. }
  174. if (is_chromeos) {
  175. sources += [
  176. "printing_context_no_system_dialog.cc",
  177. "printing_context_no_system_dialog.h",
  178. ]
  179. }
  180. # TODO(crbug.com/1272828): Determine need for Fuchsia-specific implementation.
  181. if (is_linux || is_fuchsia) {
  182. sources += [
  183. "printing_context_linux.cc",
  184. "printing_context_linux.h",
  185. ]
  186. }
  187. if (is_linux) {
  188. deps += [ "//ui/linux:linux_ui" ]
  189. }
  190. if (is_mac) {
  191. sources += [
  192. "print_settings_initializer_mac.cc",
  193. "print_settings_initializer_mac.h",
  194. "printing_context_mac.h",
  195. "printing_context_mac.mm",
  196. ]
  197. frameworks = [
  198. "AppKit.framework",
  199. "QuartzCore.framework",
  200. "ApplicationServices.framework",
  201. "CoreFoundation.framework",
  202. "CoreGraphics.framework",
  203. ]
  204. }
  205. if (is_win) {
  206. sources += [
  207. "print_settings_initializer_win.cc",
  208. "print_settings_initializer_win.h",
  209. "printed_document_win.cc",
  210. "printed_page_win.cc",
  211. "printed_page_win.h",
  212. "printing_context_system_dialog_win.cc",
  213. "printing_context_system_dialog_win.h",
  214. "printing_context_win.cc",
  215. "printing_context_win.h",
  216. ]
  217. deps += [ "//printing/backend" ]
  218. }
  219. if (use_aura) {
  220. deps += [ "//ui/aura" ]
  221. }
  222. if (use_cups) {
  223. if (is_chromeos) {
  224. sources += [
  225. "printing_context_chromeos.cc",
  226. "printing_context_chromeos.h",
  227. ]
  228. deps += [ "//printing/backend" ]
  229. }
  230. }
  231. if (enable_oop_printing && (is_linux || is_chromeos)) {
  232. deps += [ ":printing_sandbox_hook" ]
  233. }
  234. }
  235. static_library("test_support") {
  236. testonly = true
  237. sources = [
  238. "image.cc",
  239. "image.h",
  240. "test_printing_context.cc",
  241. "test_printing_context.h",
  242. ]
  243. public_deps = [
  244. "//printing",
  245. "//printing/backend:test_support",
  246. "//printing/mojom",
  247. "//ui/gfx/geometry",
  248. ]
  249. deps = [
  250. "//base",
  251. "//build:chromeos_buildflags",
  252. "//printing/backend",
  253. "//skia",
  254. "//ui/gfx",
  255. ]
  256. if (is_android) {
  257. sources += [ "image_android.cc" ]
  258. }
  259. if (is_linux || is_chromeos || is_fuchsia) {
  260. sources += [ "image_linux.cc" ]
  261. }
  262. if (is_mac) {
  263. sources += [ "image_mac.cc" ]
  264. }
  265. if (is_win) {
  266. sources += [ "image_win.cc" ]
  267. }
  268. }
  269. test("printing_unittests") {
  270. sources = [
  271. "backend/print_backend_unittest.cc",
  272. "backend/print_backend_utils_unittest.cc",
  273. "metafile_skia_unittest.cc",
  274. "nup_parameters_unittest.cc",
  275. "page_number_unittest.cc",
  276. "page_range_unittest.cc",
  277. "page_setup_unittest.cc",
  278. "print_settings_conversion_unittest.cc",
  279. "print_settings_unittest.cc",
  280. "printing_test.h",
  281. "printing_utils_unittest.cc",
  282. "units_unittest.cc",
  283. ]
  284. deps = [
  285. ":printing",
  286. ":test_support",
  287. "//base/test:test_support",
  288. "//build:chromeos_buildflags",
  289. "//mojo/core/test:run_all_unittests",
  290. "//mojo/public/cpp/test_support:test_utils",
  291. "//printing/backend",
  292. "//printing/backend:test_support",
  293. "//printing/common",
  294. "//printing/mojom",
  295. "//testing/gmock",
  296. "//testing/gtest",
  297. "//ui/base",
  298. "//ui/gfx",
  299. "//ui/gfx:test_support",
  300. "//ui/gfx/geometry",
  301. ]
  302. if (enable_oop_printing) {
  303. sources += [
  304. "backend/mojom/print_backend_mojom_traits_unittest.cc",
  305. "backend/test_print_backend_unittest.cc",
  306. "mojom/printing_context_mojom_traits_unittest.cc",
  307. ]
  308. deps += [
  309. "//printing/backend/mojom",
  310. "//printing/mojom:printing_context",
  311. ]
  312. }
  313. if (is_mac) {
  314. sources += [ "pdf_metafile_cg_mac_unittest.cc" ]
  315. data = [
  316. "test/data/pdf_cg/",
  317. "../pdf/test/data/",
  318. ]
  319. }
  320. if (is_win) {
  321. sources += [
  322. "emf_win_unittest.cc",
  323. "printed_page_win_unittest.cc",
  324. "printing_context_win_unittest.cc",
  325. ]
  326. data = [ "test/data/emf/" ]
  327. }
  328. if (use_cups) {
  329. if (use_cups_ipp) {
  330. sources += [ "backend/cups_ipp_helper_unittest.cc" ]
  331. }
  332. if (is_chromeos) {
  333. sources += [ "printing_context_chromeos_unittest.cc" ]
  334. }
  335. if (!is_chromeos_ash) {
  336. sources += [
  337. "backend/cups_helper_unittest.cc",
  338. "backend/print_backend_cups_unittest.cc",
  339. ]
  340. }
  341. }
  342. }
  343. if (use_cups) {
  344. config("cups") {
  345. defines = [ "USE_CUPS" ]
  346. if (is_mac) {
  347. libs = [ "cups" ]
  348. lib_dirs = [ "$mac_sdk_path/usr/lib" ]
  349. } else {
  350. # rebase_path does not accept an empty string
  351. if (use_sysroot) {
  352. cups_sysroot = rebase_path(sysroot)
  353. } else {
  354. cups_sysroot = ""
  355. }
  356. libs = exec_script("cups_config_helper.py",
  357. [
  358. "--libs-for-gn",
  359. cups_sysroot,
  360. ],
  361. "value")
  362. }
  363. }
  364. }
  365. if (is_android) {
  366. generate_jni("printing_jni_headers") {
  367. sources = [ "android/java/src/org/chromium/printing/PrintingContext.java" ]
  368. }
  369. android_library("printing_java") {
  370. deps = [
  371. "//base:base_java",
  372. "//base:jni_java",
  373. "//build/android:build_java",
  374. "//third_party/androidx:androidx_annotation_annotation_java",
  375. "//ui/android:ui_java",
  376. ]
  377. sources = [
  378. "android/java/src/org/chromium/printing/PrintDocumentAdapterWrapper.java",
  379. "android/java/src/org/chromium/printing/PrintManagerDelegate.java",
  380. "android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java",
  381. "android/java/src/org/chromium/printing/Printable.java",
  382. "android/java/src/org/chromium/printing/PrintingContext.java",
  383. "android/java/src/org/chromium/printing/PrintingController.java",
  384. "android/java/src/org/chromium/printing/PrintingControllerImpl.java",
  385. ]
  386. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  387. }
  388. }