blob: eafc3f1ed727b2e93db841f6902d75980ff22899 [file] [log] [blame]
micky38718f07ac2019-06-10 00:40:50 +02001# Copyright (C) 2016 The CyanogenMod Project
2# Copyright (C) 2019 The OmniRom Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16#
17# This file is the build configuration for a full Android
18# build for grouper hardware. This cleanly combines a set of
19# device-specific aspects (drivers) with a device-agnostic
20# product configuration (apps).
21#
micky38718765c82022-11-03 12:51:36 +010022$(call inherit-product, vendor/asus/zenfone9/zenfone9-vendor.mk)
micky38791a699d2023-01-27 18:25:56 +010023$(call inherit-product, vendor/images/asus/zf9/zf9-app.mk)
micky38718f07ac2019-06-10 00:40:50 +020024
David Ng3a95e4b2020-06-16 18:07:14 -070025# fusefs / disable sdcardfs usage
26$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
27
micky387536715a2021-05-30 02:32:41 +020028# Enable updating of APEXes
29$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
30
micky387eea36632022-11-13 16:27:00 +010031# Prebuilt Kernel Binary
micky387b45bb832022-12-16 18:32:40 +010032TARGET_KERNEL_VERSION := 5.10
micky387eea36632022-11-13 16:27:00 +010033TARGET_KERNEL_DIR ?= device/asus/zenfone9-kernel
34LOCAL_KERNEL := $(TARGET_KERNEL_DIR)/Image
35PRODUCT_COPY_FILES += \
micky387d47120a2023-01-01 12:27:40 +010036 $(LOCAL_KERNEL):kernel
micky387eea36632022-11-13 16:27:00 +010037
38# Prebuilt Kernel Headers
micky387d47120a2023-01-01 12:27:40 +010039TARGET_BOARD_KERNEL_HEADERS ?= device/asus/zenfone9-kernel/kernel-headers
micky387eea36632022-11-13 16:27:00 +010040
micky387a8d96182019-06-11 13:36:14 +020041# Overlays
42DEVICE_PACKAGE_OVERLAYS += \
micky38768ec9992019-12-28 13:35:00 +010043 $(LOCAL_PATH)/overlay \
44 vendor/omni/overlay/CarrierConfig
micky387a8d96182019-06-11 13:36:14 +020045
micky387009b31a2022-01-20 18:48:41 +010046PRODUCT_PACKAGES += \
micky387009b31a2022-01-20 18:48:41 +010047 FrameworksResOverlay \
48 FrameworksResVendor \
micky38768fab112023-09-22 14:10:45 +020049 SettingsOverlay \
micky387a243c792022-02-08 19:26:00 +010050 SettingsProviderOverlay \
51 SystemUIOverlay \
micky387009b31a2022-01-20 18:48:41 +010052 TeleServiceOverlay \
micky3877ed0d212022-09-03 22:28:43 +020053 TetheringConfigOverlay \
micky387009b31a2022-01-20 18:48:41 +010054 WifiOverlay
micky3877564a9b2020-12-30 22:14:37 +010055
micky3874eedc682019-06-11 02:29:28 +020056# A/B
micky387cacad082023-09-09 12:05:06 +020057AB_OTA_UPDATER := true
micky38781c15c82021-05-21 12:59:35 +020058ENABLE_VIRTUAL_AB := true
Yifan Hong220f76c2020-11-20 15:48:45 -080059$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/launch_with_vendor_ramdisk.mk)
micky3874eedc682019-06-11 02:29:28 +020060
61AB_OTA_POSTINSTALL_CONFIG += \
62 RUN_POSTINSTALL_system=true \
Marko Manac931372020-03-14 21:02:38 +010063 POSTINSTALL_PATH_system=system/bin/omnipreopt_script \
micky3874eedc682019-06-11 02:29:28 +020064 FILESYSTEM_TYPE_system=ext4 \
65 POSTINSTALL_OPTIONAL_system=true
66
micky3872640c332021-05-28 14:56:39 +020067AB_OTA_POSTINSTALL_CONFIG += \
68 RUN_POSTINSTALL_vendor=true \
69 POSTINSTALL_PATH_vendor=bin/checkpoint_gc \
70 FILESYSTEM_TYPE_vendor=ext4 \
71 POSTINSTALL_OPTIONAL_vendor=true
72
Marko Manac931372020-03-14 21:02:38 +010073PRODUCT_PACKAGES += \
micky387009b31a2022-01-20 18:48:41 +010074 checkpoint_gc \
Marko Manac931372020-03-14 21:02:38 +010075 omnipreopt_script
76
micky387009b31a2022-01-20 18:48:41 +010077# Adreno
78PRODUCT_COPY_FILES += \
79 frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version-1_1.xml
micky38781c15c82021-05-21 12:59:35 +020080
micky38718f07ac2019-06-10 00:40:50 +020081# ANT+
82PRODUCT_PACKAGES += \
83 AntHalService
84
micky38782dbd1a2019-09-17 08:11:02 +020085# Api
micky3876fd2d5e2022-11-30 14:34:45 +010086BOARD_API_LEVEL := 31
87BOARD_SHIPPING_API_LEVEL := $(BOARD_API_LEVEL)
88PRODUCT_SHIPPING_API_LEVEL := $(BOARD_API_LEVEL)
micky38782dbd1a2019-09-17 08:11:02 +020089
micky387009b31a2022-01-20 18:48:41 +010090# Atrace
91PRODUCT_PACKAGES += \
92 android.hardware.atrace@1.0-service
93
94# Audio
95PRODUCT_PACKAGES += \
micky3877d7f1e52022-11-03 15:45:17 +010096 android.hardware.audio@7.0-impl \
97 android.hardware.audio.effect@7.0-impl \
micky387009b31a2022-01-20 18:48:41 +010098 android.hardware.audio.service
99
LuK133769135952018-09-09 17:39:16 +0200100PRODUCT_COPY_FILES += \
micky387263fecf2022-11-30 10:48:07 +0100101 $(LOCAL_PATH)/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_cape/audio_policy_configuration.xml \
micky38718765c82022-11-03 12:51:36 +0100102 $(LOCAL_PATH)/audio/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/DAVINCI/audio_policy_volumes_AI2202.xml \
micky387263fecf2022-11-30 10:48:07 +0100103 $(LOCAL_PATH)/audio/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_cape/audio_effects.conf \
micky38712b7c2a2023-07-04 16:14:52 +0200104 $(LOCAL_PATH)/audio/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_cape/audio_effects.xml \
micky387de5d2e42023-07-04 13:57:16 +0200105 $(LOCAL_PATH)/audio/bluetooth_hearing_aid_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_hearing_aid_audio_policy_configuration.xml
micky387009b31a2022-01-20 18:48:41 +0100106
micky3879a3bfa92022-12-15 11:40:45 +0100107# Biometric
108PRODUCT_PACKAGES += \
109 android.hardware.biometrics.fingerprint@2.1-service
110
micky387e96abca2019-06-11 02:35:20 +0200111# Boot control
Hridya Valsaraju9bf18142018-08-21 21:22:37 -0700112PRODUCT_PACKAGES += \
micky387f9f87762022-11-03 14:56:37 +0100113 android.hardware.boot@1.2-impl-qti \
114 android.hardware.boot@1.2-impl-qti.recovery \
115 android.hardware.boot@1.2-service
Hridya Valsaraju9bf18142018-08-21 21:22:37 -0700116
micky387e96abca2019-06-11 02:35:20 +0200117PRODUCT_PACKAGES_DEBUG += \
118 bootctl
119
micky387359839a2023-02-10 19:21:29 +0100120# Camera
121PRODUCT_PACKAGES += \
122 Aperture
123
micky38795b3a992019-06-11 03:21:49 +0200124# Charger images
125PRODUCT_PACKAGES += \
126 omni_charger_res_images \
127 animation.txt \
128 font_charger.png
129
micky387009b31a2022-01-20 18:48:41 +0100130# Dalvik
131$(call inherit-product, frameworks/native/build/phone-xhdpi-6144-dalvik-heap.mk)
132
micky38754bf1022019-07-03 03:31:11 +0200133# DeviceParts
134PRODUCT_PACKAGES += \
micky38781c15c82021-05-21 12:59:35 +0200135 DeviceParts
micky38754bf1022019-07-03 03:31:11 +0200136
micky38718f07ac2019-06-10 00:40:50 +0200137# Display
138PRODUCT_PACKAGES += \
micky387bb34fb12022-12-02 18:29:35 +0100139 android.hardware.graphics.common-V2-ndk_platform.vendor \
micky38718f07ac2019-06-10 00:40:50 +0200140 libion \
micky387a5d67522022-12-17 22:51:07 +0100141 libtinyxml2
micky38718f07ac2019-06-10 00:40:50 +0200142
micky387d47120a2023-01-01 12:27:40 +0100143-include hardware/qcom-caf/sm8450/display/config/display-board.mk
144-include hardware/qcom-caf/sm8450/display/config/display-product.mk
145
micky387cc66c362022-11-03 16:54:04 +0100146$(call inherit-product, vendor/qcom/opensource/commonsys/display/config/display-product-commonsys.mk)
micky3871da5f362022-02-11 19:24:58 +0100147$(call inherit-product, vendor/qcom/opensource/commonsys-intf/display/config/display-interfaces-product.mk)
micky387ce316482022-03-02 14:12:31 +0100148$(call inherit-product, vendor/qcom/opensource/commonsys-intf/display/config/display-product-system.mk)
micky3871da5f362022-02-11 19:24:58 +0100149
micky387009b31a2022-01-20 18:48:41 +0100150# DRM
151PRODUCT_PACKAGES += \
micky387eee6d572023-11-02 12:11:16 +0100152 android.hardware.drm@1.4.vendor \
153 android.hardware.drm-service.clearkey
micky387009b31a2022-01-20 18:48:41 +0100154
micky38781c15c82021-05-21 12:59:35 +0200155# fastbootd
156PRODUCT_PACKAGES += \
shrkuma003afe2022-01-27 15:24:23 +0530157 android.hardware.fastboot@1.1-impl-mock \
micky38781c15c82021-05-21 12:59:35 +0200158 fastbootd
Fenglin Wuc1f19de2018-07-10 10:51:08 +0800159
micky3872a9055a2019-08-22 22:37:25 +0200160# FM
mickael saibia701b822021-02-13 15:43:55 +0100161PRODUCT_PACKAGES += \
micky3872a9055a2019-08-22 22:37:25 +0200162 FM2 \
163 libqcomfm_jni \
164 qcom.fmradio
165
mickael saibia701b822021-02-13 15:43:55 +0100166PRODUCT_BOOT_JARS += qcom.fmradio
micky3872a9055a2019-08-22 22:37:25 +0200167
micky387009b31a2022-01-20 18:48:41 +0100168# GPS
169PRODUCT_PACKAGES += \
micky387bb34fb12022-12-02 18:29:35 +0100170 android.hardware.gnss-V1-ndk_platform.vendor
micky387009b31a2022-01-20 18:48:41 +0100171
172# Health
173PRODUCT_PACKAGES += \
micky387c49af0b2022-11-24 18:31:05 +0100174 android.hardware.health@2.1-impl-qti \
micky387009b31a2022-01-20 18:48:41 +0100175 android.hardware.health@2.1-service
micky38722c3b452020-01-04 07:59:01 +0100176
micky387d8e31eb2021-02-19 21:23:59 +0100177# HIDL
178PRODUCT_PACKAGES += \
Sebastiano Barezzi7187b212021-02-21 16:46:06 +0100179 android.hidl.base@1.0 \
180 android.hidl.base@1.0.vendor \
micky387009b31a2022-01-20 18:48:41 +0100181 libhwbinder.vendor
micky387d8e31eb2021-02-19 21:23:59 +0100182
micky387bb34fb12022-12-02 18:29:35 +0100183# Identity
184PRODUCT_PACKAGES += \
185 android.hardware.identity-V3-ndk_platform.vendor
186
micky3872e9a6b72019-07-02 20:48:08 +0200187# Input
188PRODUCT_COPY_FILES += \
micky38781c15c82021-05-21 12:59:35 +0200189 $(LOCAL_PATH)/keylayout/fts_ts.idc:system/usr/idc/fts_ts.idc \
190 $(LOCAL_PATH)/keylayout/fts_ts.kcm:system/usr/keychars/fts_ts.kcm \
micky3872e9a6b72019-07-02 20:48:08 +0200191 $(LOCAL_PATH)/keylayout/fts_ts.kl:system/usr/keylayout/fts_ts.kl \
micky387f814c422022-11-03 13:08:24 +0100192 $(LOCAL_PATH)/keylayout/goodixfp.kl:system/usr/keylayout/goodixfp.kl \
micky38781c15c82021-05-21 12:59:35 +0200193 $(LOCAL_PATH)/keylayout/i-rocks_Bluetooth_Keyboard.kl:system/usr/keylayout/i-rocks_Bluetooth_Keyboard.kl
micky3872e9a6b72019-07-02 20:48:08 +0200194
micky387bb34fb12022-12-02 18:29:35 +0100195# Keymint
micky387009b31a2022-01-20 18:48:41 +0100196PRODUCT_PACKAGES += \
micky387bb34fb12022-12-02 18:29:35 +0100197 android.hardware.security.keymint-V1-ndk_platform.vendor
micky387009b31a2022-01-20 18:48:41 +0100198
micky3876f5b2ca2022-12-17 22:27:03 +0100199# Lights
200PRODUCT_PACKAGES += \
201 vendor.qti.hardware.lights.service
202
micky38718f07ac2019-06-10 00:40:50 +0200203# Live Wallpapers
204PRODUCT_PACKAGES += \
205 LiveWallpapers \
206 LiveWallpapersPicker \
207 VisualizationWallpapers \
208 librs_jni
209
micky387009b31a2022-01-20 18:48:41 +0100210# Media
micky38754637ab2023-06-28 09:19:41 +0200211PRODUCT_COPY_FILES += \
212 frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
213 frameworks/av/media/libstagefright/data/media_codecs_google_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2.xml \
214 frameworks/av/media/libstagefright/data/media_codecs_google_c2_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2_audio.xml \
215 frameworks/av/media/libstagefright/data/media_codecs_google_c2_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2_video.xml \
216 frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
217 frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
218 frameworks/av/media/libstagefright/data/media_codecs_google_video_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video_le.xml
219
micky387009b31a2022-01-20 18:48:41 +0100220PRODUCT_PACKAGES += \
micky387009b31a2022-01-20 18:48:41 +0100221 libavservices_minijail \
222 libavservices_minijail.vendor \
223 libavservices_minijail_vendor \
micky38777327582022-12-30 11:37:45 +0100224 libgui_vendor \
micky387d943db82022-11-30 09:49:36 +0100225 libOmxCore \
226 libcodec2_hidl@1.0.vendor \
227 libcodec2_vndk.vendor \
228 libmm-omxcore \
micky387009b31a2022-01-20 18:48:41 +0100229 libstagefright_softomx.vendor \
micky387d943db82022-11-30 09:49:36 +0100230 libstagefrighthw \
231 libplatformconfig
232
233$(call inherit-product, hardware/qcom-caf/sm8450/media/product.mk)
micky387009b31a2022-01-20 18:48:41 +0100234
micky38762540312021-03-12 22:43:56 +0100235# NFC
236PRODUCT_PACKAGES += \
237 NfcNci \
micky387e5ae8c72019-08-07 20:01:48 +0200238 Tag \
micky38762540312021-03-12 22:43:56 +0100239 SecureElement \
micky387e5ae8c72019-08-07 20:01:48 +0200240 com.android.nfc_extras
241
micky387a7fbb1d2022-11-30 13:50:39 +0100242# Perf
243PRODUCT_PACKAGES += \
244 vendor.qti.hardware.perf@2.3
245
micky387b8e24862023-02-04 18:39:13 +0100246# Permisions
247PRODUCT_COPY_FILES += \
248 frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml
249
micky387009b31a2022-01-20 18:48:41 +0100250# Platform
micky387009b31a2022-01-20 18:48:41 +0100251PRODUCT_BUILD_SUPER_PARTITION := false
252PRODUCT_USE_DYNAMIC_PARTITIONS := true
253
254# Power
255PRODUCT_PACKAGES += \
256 android.hardware.power@1.2.vendor \
micky387b4ff44b2022-10-29 01:00:14 +0200257 android.hardware.power-service-qti
micky387009b31a2022-01-20 18:48:41 +0100258
micky38718f07ac2019-06-10 00:40:50 +0200259# Prebuilt
260PRODUCT_COPY_FILES += \
micky38718765c82022-11-03 12:51:36 +0100261 $(call find-copy-subdir-files,*,device/asus/zenfone9/prebuilt/product,product) \
262 $(call find-copy-subdir-files,*,device/asus/zenfone9/prebuilt/root,recovery/root) \
263 $(call find-copy-subdir-files,*,device/asus/zenfone9/prebuilt/system,system) \
264 $(call find-copy-subdir-files,*,device/asus/zenfone9/prebuilt/system_ext,system_ext) \
265 $(call find-copy-subdir-files,*,device/asus/zenfone9/prebuilt/vendor,vendor)
micky38718f07ac2019-06-10 00:40:50 +0200266
micky38782dbd1a2019-09-17 08:11:02 +0200267# Properties
268BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
269
micky38781c15c82021-05-21 12:59:35 +0200270# Ramdisk
Yifan Hong38fd8ee2020-12-10 12:14:58 -0800271$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_ramdisk.mk)
272
micky38706c170f2022-11-26 13:47:33 +0100273PRODUCT_PACKAGES += \
274 tune2fs.vendor_ramdisk \
275 resize2fs.vendor_ramdisk
276
micky38781c15c82021-05-21 12:59:35 +0200277PRODUCT_COPY_FILES += \
micky38762e73712022-11-03 13:13:29 +0100278 $(LOCAL_PATH)/ramdisk/fstab.qcom:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.qcom \
279 $(LOCAL_PATH)/ramdisk/fstab.qcom:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.qcom
micky38781c15c82021-05-21 12:59:35 +0200280
Bruno Martinsff55cad2019-09-05 12:17:15 +0100281# Soong namespaces
282PRODUCT_SOONG_NAMESPACES += \
micky387dda387b2022-11-18 10:58:50 +0100283 $(LOCAL_PATH) \
micky387dda387b2022-11-18 10:58:50 +0100284 vendor/qcom/opensource/commonsys/display \
285 vendor/qcom/opensource/commonsys-intf/display
Bruno Martinsff55cad2019-09-05 12:17:15 +0100286
micky38797fff402020-12-30 23:10:35 +0100287# Systemhelper
288PRODUCT_PACKAGES += \
289 vendor.qti.hardware.systemhelper@1.0
290
micky3877fec5952019-09-28 10:19:41 +0200291# Telephony
292PRODUCT_PACKAGES += \
micky38795516552022-12-19 11:17:21 +0100293 extphonelib \
294 extphonelib.xml \
295 extphonelib-product \
296 extphonelib_product.xml \
micky3877fec5952019-09-28 10:19:41 +0200297 ims-ext-common \
298 ims_ext_common.xml \
299 qti-telephony-hidl-wrapper \
300 qti_telephony_hidl_wrapper.xml \
micky38795516552022-12-19 11:17:21 +0100301 qti-telephony-hidl-wrapper-prd \
302 qti_telephony_hidl_wrapper_prd.xml \
micky3877fec5952019-09-28 10:19:41 +0200303 qti-telephony-utils \
micky3878459a0c2020-05-01 18:24:34 +0200304 qti_telephony_utils.xml \
micky38795516552022-12-19 11:17:21 +0100305 qti-telephony-utils-prd \
306 qti_telephony_utils_prd.xml \
micky3878459a0c2020-05-01 18:24:34 +0200307 tcmiface
micky3877fec5952019-09-28 10:19:41 +0200308
micky387be0ade62019-06-11 03:20:23 +0200309# Update engine
310PRODUCT_PACKAGES += \
311 otapreopt_script \
micky387be0ade62019-06-11 03:20:23 +0200312 update_engine \
313 update_engine_sideload \
314 update_verifier
315
micky3870f68c2b2019-09-11 14:28:27 +0200316PRODUCT_HOST_PACKAGES += \
317 brillo_update_payload
318
micky387be0ade62019-06-11 03:20:23 +0200319PRODUCT_PACKAGES_DEBUG += \
320 update_engine_client
321
micky387b45bb832022-12-16 18:32:40 +0100322# USB
323TARGET_HAS_DIAG_ROUTER := true
324$(call inherit-product, vendor/qcom/opensource/usb/vendor_product.mk)
325
micky387009b31a2022-01-20 18:48:41 +0100326# Vendor service manager
327PRODUCT_PACKAGES += \
328 vndservicemanager
329
micky3873366e842022-12-09 00:21:07 +0100330# Vibrator
331PRODUCT_PACKAGES += \
332 vendor.qti.hardware.vibrator.service
333
Lucchettocc102782022-08-19 10:48:18 +0200334# VNDK
Sebastiano Barezzi1c1c6ff2021-10-09 15:21:32 +0200335PRODUCT_EXTRA_VNDK_VERSIONS := 30 31 32
336
Lucchettocc102782022-08-19 10:48:18 +0200337PRODUCT_COPY_FILES += \
338 prebuilts/vndk/v32/arm64/arch-arm64-armv8-a/shared/vndk-sp/libhidlbase.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libhidlbase-v32.so
339
micky387009b31a2022-01-20 18:48:41 +0100340# Wifi
341PRODUCT_PACKAGES += \
micky387f5888162023-10-18 17:50:53 +0200342 android.hardware.wifi-service \
micky3877a3d0e42022-02-02 19:37:28 +0100343 hostapd \
344 libwifi-hal-qcom \
345 libwpa_client \
346 wpa_supplicant \
347 wpa_supplicant.conf
micky387d58b6432020-10-09 04:09:07 +0200348
micky387d8e31eb2021-02-19 21:23:59 +0100349# Wifi Display
350PRODUCT_PACKAGES += \
micky387009b31a2022-01-20 18:48:41 +0100351 libnl
micky387594899b2023-03-08 19:35:40 +0100352
353PRODUCT_BOOT_JARS += \
354 WfdCommon