| # Copyright 2016 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/features.gni") |
| |
| if (is_android) { |
| import("//build/config/android/config.gni") |
| import("//build/config/android/rules.gni") # For generate_jni(). |
| } |
| |
| component("gamepad") { |
| output_name = "device_gamepad" |
| |
| sources = [ |
| "abstract_haptic_gamepad.cc", |
| "abstract_haptic_gamepad.h", |
| "dualshock4_controller.cc", |
| "dualshock4_controller.h", |
| "game_controller_data_fetcher_mac.h", |
| "game_controller_data_fetcher_mac.mm", |
| "gamepad_blocklist.cc", |
| "gamepad_blocklist.h", |
| "gamepad_consumer.cc", |
| "gamepad_consumer.h", |
| "gamepad_data_fetcher.cc", |
| "gamepad_data_fetcher.h", |
| "gamepad_data_fetcher_manager.cc", |
| "gamepad_data_fetcher_manager.h", |
| "gamepad_device_linux.cc", |
| "gamepad_device_linux.h", |
| "gamepad_device_mac.h", |
| "gamepad_device_mac.mm", |
| "gamepad_export.h", |
| "gamepad_haptics_manager.cc", |
| "gamepad_haptics_manager.h", |
| "gamepad_id_list.cc", |
| "gamepad_id_list.h", |
| "gamepad_monitor.cc", |
| "gamepad_monitor.h", |
| "gamepad_pad_state_provider.cc", |
| "gamepad_pad_state_provider.h", |
| "gamepad_platform_data_fetcher.h", |
| "gamepad_platform_data_fetcher_android.cc", |
| "gamepad_platform_data_fetcher_android.h", |
| "gamepad_platform_data_fetcher_linux.cc", |
| "gamepad_platform_data_fetcher_linux.h", |
| "gamepad_platform_data_fetcher_mac.h", |
| "gamepad_platform_data_fetcher_mac.mm", |
| "gamepad_platform_data_fetcher_win.cc", |
| "gamepad_platform_data_fetcher_win.h", |
| "gamepad_provider.cc", |
| "gamepad_provider.h", |
| "gamepad_service.cc", |
| "gamepad_service.h", |
| "gamepad_shared_buffer.cc", |
| "gamepad_shared_buffer.h", |
| "gamepad_standard_mappings.cc", |
| "gamepad_standard_mappings.h", |
| "gamepad_standard_mappings_linux.cc", |
| "gamepad_standard_mappings_mac.mm", |
| "gamepad_standard_mappings_win.cc", |
| "gamepad_uma.cc", |
| "gamepad_uma.h", |
| "gamepad_user_gesture.cc", |
| "gamepad_user_gesture.h", |
| "hid_dll_functions_win.cc", |
| "hid_dll_functions_win.h", |
| "hid_haptic_gamepad.cc", |
| "hid_haptic_gamepad.h", |
| "hid_writer.h", |
| "hid_writer_linux.cc", |
| "hid_writer_linux.h", |
| "hid_writer_mac.cc", |
| "hid_writer_mac.h", |
| "hid_writer_win.cc", |
| "hid_writer_win.h", |
| "raw_input_data_fetcher_win.cc", |
| "raw_input_data_fetcher_win.h", |
| "raw_input_gamepad_device_win.cc", |
| "raw_input_gamepad_device_win.h", |
| "udev_gamepad_linux.cc", |
| "udev_gamepad_linux.h", |
| "xbox_controller_mac.h", |
| "xbox_controller_mac.mm", |
| "xbox_data_fetcher_mac.cc", |
| "xbox_data_fetcher_mac.h", |
| "xbox_hid_controller.cc", |
| "xbox_hid_controller.h", |
| "xinput_haptic_gamepad_win.cc", |
| "xinput_haptic_gamepad_win.h", |
| ] |
| |
| deps = [ |
| "//base", |
| "//base/third_party/dynamic_annotations", |
| "//device/base/synchronization", |
| "//device/gamepad/public/cpp:shared_with_blink", |
| "//device/gamepad/public/cpp:switches", |
| "//device/gamepad/public/mojom", |
| "//mojo/public/cpp/system", |
| "//third_party/blink/public:blink_headers", |
| ] |
| |
| public_deps = [ "//services/device/public/mojom" ] |
| |
| defines = [ "DEVICE_GAMEPAD_IMPLEMENTATION" ] |
| |
| if (is_win) { |
| cflags = |
| [ "/wd4267" ] # conversion from 'size_t' (64 bit) to 'type'(32 bit). |
| } |
| |
| if (is_linux) { |
| if (use_udev) { |
| deps += [ "//device/udev_linux" ] |
| } else { |
| sources -= [ |
| "gamepad_device_linux.cc", |
| "gamepad_platform_data_fetcher_linux.cc", |
| "udev_gamepad_linux.cc", |
| ] |
| } |
| } |
| |
| if (is_android) { |
| deps += [ ":jni_headers" ] |
| } |
| |
| if (!is_android && !is_fuchsia) { |
| sources += [ |
| "nintendo_controller.cc", |
| "nintendo_controller.h", |
| "nintendo_data_fetcher.cc", |
| "nintendo_data_fetcher.h", |
| ] |
| } |
| |
| if (is_mac) { |
| libs = [ |
| "CoreFoundation.framework", |
| "Foundation.framework", |
| "ForceFeedback.framework", |
| "GameController.framework", |
| "IOKit.framework", |
| ] |
| } |
| |
| if (is_chromeos) { |
| deps += [ "//chromeos/dbus/permission_broker" ] |
| } |
| } |
| |
| static_library("test_helpers") { |
| testonly = true |
| |
| sources = [ |
| "gamepad_test_helpers.cc", |
| "gamepad_test_helpers.h", |
| ] |
| |
| public_deps = [ |
| ":gamepad", |
| "//base", |
| "//base/test:test_support", |
| "//device/gamepad/public/cpp:shared_with_blink", |
| "//third_party/blink/public:blink_headers", |
| ] |
| } |
| |
| if (is_android) { |
| generate_jni("jni_headers") { |
| sources = |
| [ "android/java/src/org/chromium/device/gamepad/GamepadList.java" ] |
| } |
| |
| android_library("java") { |
| sources = [ |
| "android/java/src/org/chromium/device/gamepad/GamepadDevice.java", |
| "android/java/src/org/chromium/device/gamepad/GamepadList.java", |
| "android/java/src/org/chromium/device/gamepad/GamepadMappings.java", |
| ] |
| deps = [ |
| "//base:base_java", |
| "//base:jni_java", |
| "//third_party/android_deps:androidx_annotation_annotation_java", |
| ] |
| annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] |
| srcjar_deps = [ ":java_enums_srcjar" ] |
| } |
| |
| java_cpp_enum("java_enums_srcjar") { |
| sources = [ "gamepad_standard_mappings.h" ] |
| } |
| } |