# Copyright (c) 2021-2026 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//build/ohos.gni")
import("./multimodalinput_mini.gni")
config("coverage_flags") {
if (input_feature_coverage) {
cflags = [
"--coverage",
"-Oz",
]
ldflags = [ "--coverage" ]
cflags_cc = [
"--coverage",
"-Oz",
]
}
}
ohos_prebuilt_etc("mmi_uinput.rc") {
source = "mmi_uinput.rc"
relative_install_dir = "init"
part_name = "input"
subsystem_name = "multimodalinput"
}
ohos_prebuilt_etc("multimodalinput.rc") {
if (input_feature_watch_cfg_source) {
source = "watch/multimodalinput.cfg"
} else {
source = "multimodalinput.cfg"
}
relative_install_dir = "init"
part_name = "input"
subsystem_name = "multimodalinput"
}
ohos_executable("uinput_inject") {
install_enable = true
sources = uinput_inject_sources
branch_protector_ret = "pac_ret"
sanitize = {
cfi = true
cfi_cross_dso = true
debug = false
}
include_dirs = [
"${mmi_path}/service/nap_process/include",
"${mmi_path}/util/common/include",
"${mmi_path}/interfaces/native/innerkits/common/include",
]
external_deps = [
"bounds_checking_function:libsec_shared",
"c_utils:utils",
"drivers_interface_input:libinput_proxy_1.0",
"hilog:libhilog",
]
defines = [ "MMI_DISABLE_LOG_TRACE" ]
cflags = [
"-fstack-protector-strong",
"-Oz",
]
part_name = "input"
subsystem_name = "multimodalinput"
}
group("multimodalinput_mmi_base") {
deps = []
}
group("multimodalinput_mmi_frameworks") {
deps = [ "frameworks/proxy:libmmi-client" ]
}
group("multimodalinput_mmi_service") {
deps = [
"common/property_name_mapper:mmi_property_name_mapper",
"etc:input_system_etc",
"etc/joystick:input_joystick_etc",
"service:libcursor_drawing_adapter",
"service:libmmi-server",
"tools/inject_event:uinput",
"util/screen_capture:libmmi-screen_capture",
"service:libmmi-server-common",
]
if (input_feature_joystick) {
deps += [ "${mmi_path}/service/joystick:mmi_joystick_event_normalization" ]
}
if (input_feature_touch_drawing) {
deps += [ "${mmi_path}/service/window_manager:mmi_touch_drawing_handler" ]
}
if (input_feature_touch_gesture) {
deps += [ "${mmi_path}/service/touch_event_normalize:mmi_touch_gesture_manager" ]
}
if (input_feature_mouse) {
deps += [ "${mmi_path}/service/mouse_event_normalize:mmi_mouse_event_normalizer" ]
}
}
group("input-third-mmi") {
external_deps = [
"libevdev:libevdev",
"libinput:libinput-third-mmi",
"mtdev:libmtdev-third-mmi",
]
}
group("input_jsapi_group") {
deps = []
if (support_jsapi) {
deps += [
"frameworks/napi/gesture_event:gestureevent",
"frameworks/napi/intention_code:intentioncode",
"frameworks/napi/joystick_event:joystickevent",
"frameworks/napi/key_code:keycode",
"frameworks/napi/key_event:keyevent",
"frameworks/napi/mouse_event:mouseevent",
"frameworks/napi/touch_event:touchevent",
]
if (input_feature_monitor) {
deps += [ "frameworks/napi/input_monitor:inputmonitor" ]
}
if (input_feature_mouse) {
deps += [ "frameworks/napi/pointer:pointer" ]
}
if (input_feature_keyboard) {
deps += [
"frameworks/napi/input_consumer:inputconsumer",
"frameworks/napi/input_event_client:inputeventclient",
]
}
if (input_feature_input_device) {
deps += [ "frameworks/napi/input_device:inputdevice" ]
}
if (input_feature_short_key) {
deps += [ "frameworks/napi/short_key:shortkey" ]
}
deps += [ "frameworks/napi/infrared_emitter:infraredemitter" ]
}
}
group("input_ets_group") {
deps = [
"frameworks/ets/gesture_event:ets_gestureEvent_package",
"frameworks/ets/input_event:ets_inputEvent_package",
"frameworks/ets/input_monitor:ets_inputMonitor_package",
"frameworks/ets/intention_code:ets_intentionCode_package",
"frameworks/ets/key_code:ets_keyCode_package",
"frameworks/ets/key_event:ets_keyEvent_package",
"frameworks/ets/mouse_event:ets_mouseEvent_package",
"frameworks/ets/touch_event:ets_touchEvent_package",
]
if (input_feature_keyboard) {
deps += [
"frameworks/ets/input_consumer:ets_inputConsumer_package",
"frameworks/ets/input_event_client:ets_inputEventClient_package",
]
}
if (input_feature_input_device) {
deps += [ "frameworks/ets/input_device:ets_inputDevice_package" ]
}
if (input_feature_mouse) {
deps += [ "frameworks/ets/pointer:ets_pointer_package" ]
}
if (input_feature_short_key) {
deps += [ "frameworks/ets/short_key:ets_shortKey_package" ]
}
deps += [ "frameworks/ets/infrared_emitter:ets_infraredEmitter_package" ]
}
group("mmi_tests") {
testonly = true
deps = [
"frameworks/ets/common/test:AniCommonTest",
"frameworks/native/input:OHInputManagerEXTest",
"frameworks/native/input:OHInputManagerTest",
"frameworks/proxy:InputDeviceImplTest",
"frameworks/proxy:InputHandlerManagerTest",
"frameworks/proxy:InputManagerFilterManualTest",
"frameworks/proxy:InputManagerImplTest",
"frameworks/proxy:InputManagerInjectTest",
"frameworks/proxy:InputManagerManualTest",
"frameworks/proxy:InputManagerTest",
"frameworks/proxy:InputMonitorManagerTest",
"frameworks/proxy:KeyEventHookHandlerTest",
"frameworks/proxy:KeyEventInputSubscribeManagerTest",
"frameworks/proxy:KeyEventTest",
"frameworks/proxy:LongPressEventSubscribeManagerTest",
"frameworks/proxy:PointerEventExTest",
"frameworks/proxy:PointerEventNdkTest",
"frameworks/proxy:PointerEventTest",
"frameworks/proxy:PointerStyleTest",
"frameworks/proxy:ut-mmi-proxy-out",
"frameworks/proxy/event_handler/test:InputActiveSubscribeManagerTest",
"frameworks/proxy/event_handler/test:InputEventHookHandlerTest",
"frameworks/proxy/event_handler/test:InputEventStagerTest",
"frameworks/proxy/events/test:FrameworkEventTests",
"libudev:test",
"service:AccountManagerTest",
"service:ApplicationStateObserverTest",
"service:ConnectManagerProxyEXTest",
"service:CursorDrawingComponentTest",
"service:CursorDrawingComponentCoverageTest",
"service:DelegateTaskTest",
"service:DeviceConfigTest",
"service:DeviceEventMonitorTest",
"service:DeviceManagerExTest",
"service:DeviceManagerTest",
"service:DfxHisysEventTest",
"service:DisplayStateManagerTest",
"service:EventDispatchOrderCheckerTest",
"service:EventDispatchTest",
"service:EventDumpTest",
"service:EventExpirationCheckerTest",
"service:EventFilterDeathRecipientTest",
"service:EventFilterHandlerTest",
"service:EventHandlerEXTest",
"service:EventHandlerTest",
"service:EventLoopClosureCheckerTest",
"service:EventNormalizeHandlerTest",
"service:InfraredEmitterTest",
"service:InputDisplayBindHelperTest",
"service:InputEventHandlerTest",
"service:InputWindowsManagerOneTest",
"service:InputWindowsManagerTest",
"service:InputWindowsManagerDisplayChangeTest",
"service:InputWindowsManagerCoverageTest",
"service:InterceptorTest",
"service:KeyAutoRepeatExTest",
"service/key_command/test:KeyCommandTest",
"service:KeyEventHookManagerTest",
"service:KeyEventNormalizeTest",
"service:KeyEventValueTransformationTest",
"service:KeyShortcutManagerTest",
"service:KeyUnicodeTransformationTest",
"service:KeymapMgrTest",
"service:LibinputAdapterTest",
"service:LongPressSubscribeHandlerTest",
"service:ModuleLoaderTest",
"service:MonitorTest",
"service:NapProcessTest",
"service:ProductTypeParserTest",
"service:PropertyNameMapperTest",
"service:ServerMsgHandlerTest",
"service:SettingDataMigratorTest",
"service:BundleNameParserTest",
"service:SpecialInputDeviceParserTest",
"service:StylusKeyTest",
"service:StylusKeyTest",
"service:SubscriberTest",
"service:TimerManagerTest",
"service:event_resample_test",
"service:mmi-service-tests",
"service/crown_transform_processor/test:CrownTransformProcessorTest",
"service/joystick/test:JoystickLayoutMapTest",
"service/subscriber/test:InputActiveSubscriberHandlerNewTest",
"service/module_loader/test:ModuleLoaderTests",
"service/mouse_event_normalize/test:MouseEventNormalizeEXTest",
"service/mouse_event_normalize/test:MouseEventNormalizeTest",
"service/subscriber/test:mmi_subscriber_tests",
"service/touch_event_normalize/test:TouchEventNormalizeTests",
"test/fuzztest:test",
"test/unittest/interfaces:InputNativeHotkeyTest",
"test/unittest/interfaces:InputNativeTest",
"tools/inject_event:InjectEventTest",
"util:UdsClientTest",
"util/common:InputEventDataTransformationTest",
"util/common:ResourceDecompressTest",
"util/common:UtilCommonTest",
"util/json_parser:JsonParserTest",
]
if (input_feature_input_event_hook) {
deps += [
"service:InputEventHookTest",
"service:InputEventHookManagerTest",
"service:KeyEventHookTest",
"service:KeyLoopClosureCheckerTest",
"service:PointerLoopClosureCheckerTest",
"service:PointerEventHookTest",
]
}
if (input_feature_pointer_drawing) {
deps += [
"service:InputWindowsManagerEXTest",
"service:PointerDrawingManagerExTest",
"service:PointerDrawingManagerSupTest",
"service:PointerDrawingManagerTest",
"service:PointerDrawingManagerHardCursorTest",
]
}
if (input_feature_switch) {
deps += [ "frameworks/proxy:SwitchEventInputSubscribeManagerTest" ]
}
if (input_feature_touch_drawing) {
deps += [
"service:TouchDrawingManagerTest",
"service/window_manager:TouchDrawingHandlerTest",
]
}
if (input_feature_knuckle) {
deps += [ "service:KnuckleHandlerComponentTest" ]
}
if (input_feature_triple_finger_snapshot) {
deps += [ "service:TripleFingerSnapshotManagerTest" ]
}
if (input_feature_product == "pc") {
deps += [ "service:SuspendStateManagerTest" ]
}
}
group("examples_group") {
deps = [ "examples/input_device_display_bind:input_device_display_bind" ]
}