blob: 6a5d7083462118632a26b55b739906d32b2eb634 [file] [log] [blame]
# 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" ]
}
}