From 1e6cdac0bcc97a5d7431818e8cee6c81a5e846bf Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Fri, 22 Jul 2022 17:39:41 +0900 Subject: [PATCH 1/2] android.hardware.wifi@1.0-service in soong As libwifi-hal is migrated to soong, the service is migrated to soong as well. Bug: 240099735 Test: CtsWifiTestCases Merged-In: Ie5a4ec6658d5f6aa3d4902c9c3c4b3bef9ff1cde Change-Id: Ie5a4ec6658d5f6aa3d4902c9c3c4b3bef9ff1cde (cherry picked from commit c4ac3355a6b65cdeb39f3630a23076c1a5369995) --- wifi/1.6/default/Android.bp | 197 ++++++++++++++++++++++++++++------- wifi/1.6/default/Android.mk | 202 ------------------------------------ 2 files changed, 158 insertions(+), 241 deletions(-) delete mode 100644 wifi/1.6/default/Android.mk diff --git a/wifi/1.6/default/Android.bp b/wifi/1.6/default/Android.bp index d48d18332f..0ac6412544 100644 --- a/wifi/1.6/default/Android.bp +++ b/wifi/1.6/default/Android.bp @@ -16,42 +16,60 @@ package { default_applicable_licenses: ["hardware_interfaces_license"], } -filegroup { - name: "android.hardware.wifi@1.0-service_srcs", - srcs: ["service.cpp"], +soong_config_module_type { + name: "wifi_hal_cc_defaults", + module_type: "cc_defaults", + config_namespace: "wifi", + bool_variables: [ + "hidl_feature_aware", // WIFI_HIDL_FEATURE_AWARE + "hidl_feature_dual_interface", // WIFI_HIDL_FEATURE_DUAL_INTERFACE + "hidl_feature_disable_ap", // WIFI_HIDL_FEATURE_DISABLE_AP + "hidl_feature_disable_ap_mac_randomization", // WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION + "avoid_iface_reset_mac_change", // WIFI_AVOID_IFACE_RESET_MAC_CHANGE + ], + value_variables: [ + "hal_interface_combinations", // WIFI_HAL_INTERFACE_COMBINATIONS + ], + properties: [ + "cppflags", + ], } -cc_defaults { - name: "android.hardware.wifi@1.0-service_default", - srcs: [":android.hardware.wifi@1.0-service_srcs"], - relative_install_path: "hw", - soc_specific: true, - shared_libs: [ - "android.hardware.wifi@1.0", - "android.hardware.wifi@1.1", - "android.hardware.wifi@1.2", - "android.hardware.wifi@1.3", - "android.hardware.wifi@1.4", - "android.hardware.wifi@1.5", - "android.hardware.wifi@1.6", - "libbase", - "libcutils", - "libhidlbase", - "liblog", - "libnl", - "libutils", - "libwifi-system-iface", - "libxml2", - ], +wifi_hal_cc_defaults { + name: "android.hardware.wifi@1.0-service-cppflags-defaults", + soong_config_variables: { + hidl_feature_aware: { + cppflags: ["-DWIFI_HIDL_FEATURE_AWARE"], + }, + hidl_feature_dual_interface: { + cppflags: ["-DWIFI_HIDL_FEATURE_DUAL_INTERFACE"], + }, + hidl_feature_disable_ap: { + cppflags: ["-DWIFI_HIDL_FEATURE_DISABLE_AP"], + }, + hidl_feature_disable_ap_mac_randomization: { + cppflags: ["-DWIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION"], + }, + avoid_iface_reset_mac_change: { + cppflags: ["-DWIFI_AVOID_IFACE_RESET_MAC_CHANGE"], + }, + hal_interface_combinations: { + cppflags: ["-DWIFI_HAL_INTERFACE_COMBINATIONS=%s"], + }, + }, +} + +cc_library_static { + name: "android.hardware.wifi@1.0-service-lib", + defaults: ["android.hardware.wifi@1.0-service-cppflags-defaults"], + proprietary: true, cppflags: [ "-Wall", "-Werror", "-Wextra", ], -} - -filegroup { - name: "android.hardware.wifi@1.0-service-lib_srcs", + // Allow implicit fallthroughs in wifi_legacy_hal.cpp until they are fixed. + cflags: ["-Wno-error=implicit-fallthrough"], srcs: [ "hidl_struct_util.cpp", "hidl_sync_util.cpp", @@ -71,14 +89,17 @@ filegroup { "wifi_sta_iface.cpp", "wifi_status_util.cpp", ], -} -cc_defaults { - name: "android.hardware.wifi@1.0-service-lib_defaults", - srcs: [":android.hardware.wifi@1.0-service-lib_srcs"], - relative_install_path: "hw", - soc_specific: true, shared_libs: [ + "libbase", + "libcutils", + "libhidlbase", + "liblog", + "libnl", + "libutils", + "libwifi-hal", + "libwifi-system-iface", + "libxml2", "android.hardware.wifi@1.0", "android.hardware.wifi@1.1", "android.hardware.wifi@1.2", @@ -86,22 +107,120 @@ cc_defaults { "android.hardware.wifi@1.4", "android.hardware.wifi@1.5", "android.hardware.wifi@1.6", + ], + + export_include_dirs: ["."], +} + +cc_binary { + name: "android.hardware.wifi@1.0-service", + vintf_fragments: ["android.hardware.wifi@1.0-service.xml"], + relative_install_path: "hw", + proprietary: true, + cppflags: [ + "-Wall", + "-Werror", + "-Wextra", + ], + srcs: ["service.cpp"], + shared_libs: [ "libbase", "libcutils", "libhidlbase", "liblog", "libnl", "libutils", + "libwifi-hal", "libwifi-system-iface", "libxml2", + "android.hardware.wifi@1.0", + "android.hardware.wifi@1.1", + "android.hardware.wifi@1.2", + "android.hardware.wifi@1.3", + "android.hardware.wifi@1.4", + "android.hardware.wifi@1.5", + "android.hardware.wifi@1.6", ], - // Generated by building android.hardware.wifi@1.0-service-lib and printing LOCAL_CPPFLAGS. + static_libs: ["android.hardware.wifi@1.0-service-lib"], + init_rc: ["android.hardware.wifi@1.0-service.rc"], +} + +cc_binary { + name: "android.hardware.wifi@1.0-service-lazy", + vintf_fragments: ["android.hardware.wifi@1.0-service.xml"], + overrides: ["android.hardware.wifi@1.0-service"], + cflags: ["-DLAZY_SERVICE"], + relative_install_path: "hw", + proprietary: true, cppflags: [ "-Wall", "-Werror", "-Wextra", - "-DWIFI_HIDL_FEATURE_DUAL_INTERFACE", ], - export_include_dirs: ["."], - include_dirs: ["external/libxml2/include"], + srcs: ["service.cpp"], + shared_libs: [ + "libbase", + "libcutils", + "libhidlbase", + "liblog", + "libnl", + "libutils", + "libwifi-hal", + "libwifi-system-iface", + "libxml2", + "android.hardware.wifi@1.0", + "android.hardware.wifi@1.1", + "android.hardware.wifi@1.2", + "android.hardware.wifi@1.3", + "android.hardware.wifi@1.4", + "android.hardware.wifi@1.5", + "android.hardware.wifi@1.6", + ], + static_libs: ["android.hardware.wifi@1.0-service-lib"], + init_rc: ["android.hardware.wifi@1.0-service-lazy.rc"], +} + +cc_test { + name: "android.hardware.wifi@1.0-service-tests", + proprietary: true, + cppflags: [ + "-Wall", + "-Werror", + "-Wextra", + ], + srcs: [ + "tests/hidl_struct_util_unit_tests.cpp", + "tests/main.cpp", + "tests/mock_interface_tool.cpp", + "tests/mock_wifi_feature_flags.cpp", + "tests/mock_wifi_iface_util.cpp", + "tests/mock_wifi_legacy_hal.cpp", + "tests/mock_wifi_mode_controller.cpp", + "tests/ringbuffer_unit_tests.cpp", + "tests/wifi_nan_iface_unit_tests.cpp", + "tests/wifi_chip_unit_tests.cpp", + "tests/wifi_iface_util_unit_tests.cpp", + ], + static_libs: [ + "libgmock", + "libgtest", + "android.hardware.wifi@1.0", + "android.hardware.wifi@1.1", + "android.hardware.wifi@1.2", + "android.hardware.wifi@1.3", + "android.hardware.wifi@1.4", + "android.hardware.wifi@1.5", + "android.hardware.wifi@1.6", + "android.hardware.wifi@1.0-service-lib", + ], + shared_libs: [ + "libbase", + "libcutils", + "libhidlbase", + "liblog", + "libnl", + "libutils", + "libwifi-hal", + "libwifi-system-iface", + ], } diff --git a/wifi/1.6/default/Android.mk b/wifi/1.6/default/Android.mk deleted file mode 100644 index ca1c022db1..0000000000 --- a/wifi/1.6/default/Android.mk +++ /dev/null @@ -1,202 +0,0 @@ -# Copyright (C) 2016 The Android Open Source Project -# -# 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. -LOCAL_PATH := $(call my-dir) - -### -### android.hardware.wifi static library -### -include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.wifi@1.0-service-lib -LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 -LOCAL_LICENSE_CONDITIONS := notice -LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../../NOTICE -LOCAL_MODULE_RELATIVE_PATH := hw -LOCAL_PROPRIETARY_MODULE := true -LOCAL_CPPFLAGS := -Wall -Werror -Wextra -ifdef WIFI_HAL_INTERFACE_COMBINATIONS -LOCAL_CPPFLAGS += -DWIFI_HAL_INTERFACE_COMBINATIONS="$(WIFI_HAL_INTERFACE_COMBINATIONS)" -endif -ifdef WIFI_HIDL_FEATURE_AWARE -LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_AWARE -endif -ifdef WIFI_HIDL_FEATURE_DUAL_INTERFACE -LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_DUAL_INTERFACE -endif -ifdef WIFI_HIDL_FEATURE_DISABLE_AP -LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_DISABLE_AP -endif -ifdef WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION -LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION -endif -ifdef WIFI_AVOID_IFACE_RESET_MAC_CHANGE -LOCAL_CPPFLAGS += -DWIFI_AVOID_IFACE_RESET_MAC_CHANGE -endif -# Allow implicit fallthroughs in wifi_legacy_hal.cpp until they are fixed. -LOCAL_CFLAGS += -Wno-error=implicit-fallthrough -LOCAL_SRC_FILES := \ - hidl_struct_util.cpp \ - hidl_sync_util.cpp \ - ringbuffer.cpp \ - wifi.cpp \ - wifi_ap_iface.cpp \ - wifi_chip.cpp \ - wifi_feature_flags.cpp \ - wifi_iface_util.cpp \ - wifi_legacy_hal.cpp \ - wifi_legacy_hal_factory.cpp \ - wifi_legacy_hal_stubs.cpp \ - wifi_mode_controller.cpp \ - wifi_nan_iface.cpp \ - wifi_p2p_iface.cpp \ - wifi_rtt_controller.cpp \ - wifi_sta_iface.cpp \ - wifi_status_util.cpp -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libcutils \ - libhidlbase \ - liblog \ - libnl \ - libutils \ - libwifi-hal \ - libwifi-system-iface \ - libxml2 \ - android.hardware.wifi@1.0 \ - android.hardware.wifi@1.1 \ - android.hardware.wifi@1.2 \ - android.hardware.wifi@1.3 \ - android.hardware.wifi@1.4 \ - android.hardware.wifi@1.5 \ - android.hardware.wifi@1.6 -LOCAL_C_INCLUDES += $(TOP)/external/libxml2/include -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) -include $(BUILD_STATIC_LIBRARY) - -### -### android.hardware.wifi daemon -### -include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.wifi@1.0-service -LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 -LOCAL_LICENSE_CONDITIONS := notice -LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../../NOTICE -LOCAL_VINTF_FRAGMENTS := android.hardware.wifi@1.0-service.xml -LOCAL_MODULE_RELATIVE_PATH := hw -LOCAL_PROPRIETARY_MODULE := true -LOCAL_CPPFLAGS := -Wall -Werror -Wextra -LOCAL_SRC_FILES := \ - service.cpp -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libcutils \ - libhidlbase \ - liblog \ - libnl \ - libutils \ - libwifi-hal \ - libwifi-system-iface \ - libxml2 \ - android.hardware.wifi@1.0 \ - android.hardware.wifi@1.1 \ - android.hardware.wifi@1.2 \ - android.hardware.wifi@1.3 \ - android.hardware.wifi@1.4 \ - android.hardware.wifi@1.5 \ - android.hardware.wifi@1.6 -LOCAL_STATIC_LIBRARIES := \ - android.hardware.wifi@1.0-service-lib -LOCAL_INIT_RC := android.hardware.wifi@1.0-service.rc -include $(BUILD_EXECUTABLE) - -### -### android.hardware.wifi daemon -### -include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.wifi@1.0-service-lazy -LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 -LOCAL_LICENSE_CONDITIONS := notice -LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../../NOTICE -LOCAL_VINTF_FRAGMENTS := android.hardware.wifi@1.0-service.xml -LOCAL_OVERRIDES_MODULES := android.hardware.wifi@1.0-service -LOCAL_CFLAGS := -DLAZY_SERVICE -LOCAL_MODULE_RELATIVE_PATH := hw -LOCAL_PROPRIETARY_MODULE := true -LOCAL_CPPFLAGS := -Wall -Werror -Wextra -LOCAL_SRC_FILES := \ - service.cpp -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libcutils \ - libhidlbase \ - liblog \ - libnl \ - libutils \ - libwifi-hal \ - libwifi-system-iface \ - libxml2 \ - android.hardware.wifi@1.0 \ - android.hardware.wifi@1.1 \ - android.hardware.wifi@1.2 \ - android.hardware.wifi@1.3 \ - android.hardware.wifi@1.4 \ - android.hardware.wifi@1.5 \ - android.hardware.wifi@1.6 -LOCAL_STATIC_LIBRARIES := \ - android.hardware.wifi@1.0-service-lib -LOCAL_INIT_RC := android.hardware.wifi@1.0-service-lazy.rc -include $(BUILD_EXECUTABLE) - -### -### android.hardware.wifi unit tests. -### -include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.wifi@1.0-service-tests -LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 -LOCAL_LICENSE_CONDITIONS := notice -LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../../NOTICE -LOCAL_PROPRIETARY_MODULE := true -LOCAL_CPPFLAGS := -Wall -Werror -Wextra -LOCAL_SRC_FILES := \ - tests/hidl_struct_util_unit_tests.cpp \ - tests/main.cpp \ - tests/mock_interface_tool.cpp \ - tests/mock_wifi_feature_flags.cpp \ - tests/mock_wifi_iface_util.cpp \ - tests/mock_wifi_legacy_hal.cpp \ - tests/mock_wifi_mode_controller.cpp \ - tests/ringbuffer_unit_tests.cpp \ - tests/wifi_nan_iface_unit_tests.cpp \ - tests/wifi_chip_unit_tests.cpp \ - tests/wifi_iface_util_unit_tests.cpp -LOCAL_STATIC_LIBRARIES := \ - libgmock \ - libgtest \ - android.hardware.wifi@1.0 \ - android.hardware.wifi@1.1 \ - android.hardware.wifi@1.2 \ - android.hardware.wifi@1.3 \ - android.hardware.wifi@1.4 \ - android.hardware.wifi@1.5 \ - android.hardware.wifi@1.6 \ - android.hardware.wifi@1.0-service-lib -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libcutils \ - libhidlbase \ - liblog \ - libnl \ - libutils \ - libwifi-hal \ - libwifi-system-iface -include $(BUILD_NATIVE_TEST) From 46afe63eaf81eb5cd613a29b5081b5f9468d29ed Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Fri, 12 Aug 2022 13:40:26 +0900 Subject: [PATCH 2/2] Build libwifi-hal-* modules only for the first arch Previously, the build rules assumed that the target supports both 64 and 32 bit architectures, which isn't true for 32-bit-only targets. That caused build breakage on such targets. Fixing that by building the modules only for the first architecture (64 on 64-only or 64/32 target, and 32 on 32-only target). Bug: 241916304 Test: build the 32-bit-only target Merged-In: I5353ab1561622eae12e2dff87eb0f17b47c3773d Change-Id: I5353ab1561622eae12e2dff87eb0f17b47c3773d (cherry picked from commit 3ab5c9010431c557c22eee5470b8e0580722d2b6) --- wifi/1.6/default/Android.bp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wifi/1.6/default/Android.bp b/wifi/1.6/default/Android.bp index 0ac6412544..a132deed59 100644 --- a/wifi/1.6/default/Android.bp +++ b/wifi/1.6/default/Android.bp @@ -63,6 +63,7 @@ cc_library_static { name: "android.hardware.wifi@1.0-service-lib", defaults: ["android.hardware.wifi@1.0-service-cppflags-defaults"], proprietary: true, + compile_multilib: "first", cppflags: [ "-Wall", "-Werror", @@ -183,6 +184,7 @@ cc_binary { cc_test { name: "android.hardware.wifi@1.0-service-tests", proprietary: true, + compile_multilib: "first", cppflags: [ "-Wall", "-Werror",