BUILD.gn 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. # Copyright 2016 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. if (is_android) {
  7. import("//build/config/android/config.gni")
  8. import("//build/config/android/rules.gni") # For generate_jni().
  9. }
  10. component("gamepad") {
  11. output_name = "device_gamepad"
  12. sources = [
  13. "abstract_haptic_gamepad.cc",
  14. "abstract_haptic_gamepad.h",
  15. "dualshock4_controller.cc",
  16. "dualshock4_controller.h",
  17. "gamepad_blocklist.cc",
  18. "gamepad_blocklist.h",
  19. "gamepad_consumer.cc",
  20. "gamepad_consumer.h",
  21. "gamepad_data_fetcher.cc",
  22. "gamepad_data_fetcher.h",
  23. "gamepad_data_fetcher_manager.cc",
  24. "gamepad_data_fetcher_manager.h",
  25. "gamepad_export.h",
  26. "gamepad_haptics_manager.cc",
  27. "gamepad_haptics_manager.h",
  28. "gamepad_id_list.cc",
  29. "gamepad_id_list.h",
  30. "gamepad_monitor.cc",
  31. "gamepad_monitor.h",
  32. "gamepad_pad_state_provider.cc",
  33. "gamepad_pad_state_provider.h",
  34. "gamepad_platform_data_fetcher.h",
  35. "gamepad_provider.cc",
  36. "gamepad_provider.h",
  37. "gamepad_service.cc",
  38. "gamepad_service.h",
  39. "gamepad_shared_buffer.cc",
  40. "gamepad_shared_buffer.h",
  41. "gamepad_standard_mappings.cc",
  42. "gamepad_standard_mappings.h",
  43. "gamepad_uma.cc",
  44. "gamepad_uma.h",
  45. "gamepad_user_gesture.cc",
  46. "gamepad_user_gesture.h",
  47. "hid_haptic_gamepad.cc",
  48. "hid_haptic_gamepad.h",
  49. "hid_writer.h",
  50. "xbox_hid_controller.cc",
  51. "xbox_hid_controller.h",
  52. ]
  53. deps = [
  54. "//base",
  55. "//base/third_party/dynamic_annotations",
  56. "//device/base/synchronization",
  57. "//device/gamepad/public/cpp:shared_with_blink",
  58. "//device/gamepad/public/cpp:switches",
  59. "//device/gamepad/public/mojom",
  60. "//mojo/public/cpp/system",
  61. "//third_party/blink/public:blink_headers",
  62. ]
  63. public_deps = [ "//services/device/public/mojom" ]
  64. defines = [ "DEVICE_GAMEPAD_IMPLEMENTATION" ]
  65. if (is_win) {
  66. sources += [
  67. "gamepad_standard_mappings_win.cc",
  68. "hid_writer_win.cc",
  69. "hid_writer_win.h",
  70. "raw_input_data_fetcher_win.cc",
  71. "raw_input_data_fetcher_win.h",
  72. "raw_input_gamepad_device_win.cc",
  73. "raw_input_gamepad_device_win.h",
  74. "wgi_data_fetcher_win.cc",
  75. "wgi_data_fetcher_win.h",
  76. "wgi_gamepad_device.cc",
  77. "wgi_gamepad_device.h",
  78. "xinput_data_fetcher_win.cc",
  79. "xinput_data_fetcher_win.h",
  80. "xinput_haptic_gamepad_win.cc",
  81. "xinput_haptic_gamepad_win.h",
  82. ]
  83. deps += [ "//device/base" ]
  84. libs = [ "hid.lib" ]
  85. }
  86. if (is_linux || is_chromeos) {
  87. sources += [
  88. "gamepad_standard_mappings_linux.cc",
  89. "hid_writer_linux.cc",
  90. "hid_writer_linux.h",
  91. ]
  92. if (use_udev) {
  93. sources += [
  94. "gamepad_device_linux.cc",
  95. "gamepad_device_linux.h",
  96. "gamepad_platform_data_fetcher_linux.cc",
  97. "gamepad_platform_data_fetcher_linux.h",
  98. "udev_gamepad_linux.cc",
  99. "udev_gamepad_linux.h",
  100. ]
  101. deps += [
  102. "//build:chromeos_buildflags",
  103. "//device/udev_linux",
  104. ]
  105. }
  106. }
  107. if (is_android) {
  108. sources += [
  109. "gamepad_platform_data_fetcher_android.cc",
  110. "gamepad_platform_data_fetcher_android.h",
  111. "haptic_gamepad_android.cc",
  112. "haptic_gamepad_android.h",
  113. ]
  114. deps += [ ":jni_headers" ]
  115. }
  116. if (!is_android && !is_fuchsia) {
  117. sources += [
  118. "nintendo_controller.cc",
  119. "nintendo_controller.h",
  120. "nintendo_data_fetcher.cc",
  121. "nintendo_data_fetcher.h",
  122. ]
  123. }
  124. if (is_mac) {
  125. sources += [
  126. "game_controller_data_fetcher_mac.h",
  127. "game_controller_data_fetcher_mac.mm",
  128. "gamepad_device_mac.h",
  129. "gamepad_device_mac.mm",
  130. "gamepad_platform_data_fetcher_mac.h",
  131. "gamepad_platform_data_fetcher_mac.mm",
  132. "gamepad_standard_mappings_mac.mm",
  133. "hid_writer_mac.cc",
  134. "hid_writer_mac.h",
  135. "xbox_controller_mac.h",
  136. "xbox_controller_mac.mm",
  137. "xbox_data_fetcher_mac.cc",
  138. "xbox_data_fetcher_mac.h",
  139. ]
  140. frameworks = [
  141. "CoreFoundation.framework",
  142. "Foundation.framework",
  143. "ForceFeedback.framework",
  144. "GameController.framework",
  145. "IOKit.framework",
  146. ]
  147. }
  148. if (is_chromeos) {
  149. deps += [ "//chromeos/dbus/permission_broker" ]
  150. }
  151. }
  152. static_library("test_helpers") {
  153. testonly = true
  154. sources = [
  155. "gamepad_test_helpers.cc",
  156. "gamepad_test_helpers.h",
  157. ]
  158. public_deps = [
  159. ":gamepad",
  160. "//base",
  161. "//base/test:test_support",
  162. "//device/gamepad/public/cpp:shared_with_blink",
  163. "//third_party/blink/public:blink_headers",
  164. ]
  165. if (is_win) {
  166. sources += [
  167. "test_support/fake_igamepad.cc",
  168. "test_support/fake_igamepad.h",
  169. "test_support/fake_igamepad_statics.cc",
  170. "test_support/fake_igamepad_statics.h",
  171. "test_support/fake_iraw_game_controller.cc",
  172. "test_support/fake_iraw_game_controller.h",
  173. "test_support/fake_winrt_wgi_environment.cc",
  174. "test_support/fake_winrt_wgi_environment.h",
  175. ]
  176. }
  177. }
  178. if (is_android) {
  179. generate_jni("jni_headers") {
  180. sources =
  181. [ "android/java/src/org/chromium/device/gamepad/GamepadList.java" ]
  182. }
  183. android_library("java") {
  184. sources = [
  185. "android/java/src/org/chromium/device/gamepad/GamepadDevice.java",
  186. "android/java/src/org/chromium/device/gamepad/GamepadList.java",
  187. "android/java/src/org/chromium/device/gamepad/GamepadMappings.java",
  188. ]
  189. deps = [
  190. "//base:base_java",
  191. "//base:jni_java",
  192. "//build/android:build_java",
  193. "//third_party/androidx:androidx_annotation_annotation_java",
  194. ]
  195. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  196. srcjar_deps = [ ":java_enums_srcjar" ]
  197. }
  198. java_cpp_enum("java_enums_srcjar") {
  199. sources = [ "gamepad_standard_mappings.h" ]
  200. }
  201. }