# 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/chromeos/ui_mode.gni") 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", "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_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_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_uma.cc", "gamepad_uma.h", "gamepad_user_gesture.cc", "gamepad_user_gesture.h", "hid_haptic_gamepad.cc", "hid_haptic_gamepad.h", "hid_writer.h", "xbox_hid_controller.cc", "xbox_hid_controller.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) { sources += [ "gamepad_standard_mappings_win.cc", "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", "wgi_data_fetcher_win.cc", "wgi_data_fetcher_win.h", "wgi_gamepad_device.cc", "wgi_gamepad_device.h", "xinput_data_fetcher_win.cc", "xinput_data_fetcher_win.h", "xinput_haptic_gamepad_win.cc", "xinput_haptic_gamepad_win.h", ] deps += [ "//device/base" ] libs = [ "hid.lib" ] } if (is_linux || is_chromeos) { sources += [ "gamepad_standard_mappings_linux.cc", "hid_writer_linux.cc", "hid_writer_linux.h", ] if (use_udev) { sources += [ "gamepad_device_linux.cc", "gamepad_device_linux.h", "gamepad_platform_data_fetcher_linux.cc", "gamepad_platform_data_fetcher_linux.h", "udev_gamepad_linux.cc", "udev_gamepad_linux.h", ] deps += [ "//build:chromeos_buildflags", "//device/udev_linux", ] } } if (is_android) { sources += [ "gamepad_platform_data_fetcher_android.cc", "gamepad_platform_data_fetcher_android.h", "haptic_gamepad_android.cc", "haptic_gamepad_android.h", ] 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) { sources += [ "game_controller_data_fetcher_mac.h", "game_controller_data_fetcher_mac.mm", "gamepad_device_mac.h", "gamepad_device_mac.mm", "gamepad_platform_data_fetcher_mac.h", "gamepad_platform_data_fetcher_mac.mm", "gamepad_standard_mappings_mac.mm", "hid_writer_mac.cc", "hid_writer_mac.h", "xbox_controller_mac.h", "xbox_controller_mac.mm", "xbox_data_fetcher_mac.cc", "xbox_data_fetcher_mac.h", ] frameworks = [ "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_win) { sources += [ "test_support/fake_igamepad.cc", "test_support/fake_igamepad.h", "test_support/fake_igamepad_statics.cc", "test_support/fake_igamepad_statics.h", "test_support/fake_iraw_game_controller.cc", "test_support/fake_iraw_game_controller.h", "test_support/fake_winrt_wgi_environment.cc", "test_support/fake_winrt_wgi_environment.h", ] } } 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", "//build/android:build_java", "//third_party/androidx: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" ] } }