You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
5.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#
# Copyright (C) 2011 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.
#
function set_wifi_bt_env()
{
local wifibt_vendor=""
local wifibt_device=""
local DEVELOPMENT_DIR=vendor/huanglong/development
local need_copy=$1
local git_args=""
if [ ! -d $(gettop)/$DEVELOPMENT_DIR/thirdparty/wifi_bt ] && [[ $need_copy != "copy" ]]; then
echo "$DEVELOPMENT_DIR folder is not exist, skip copy wifi_bt source code"
return
fi
wifibt_mk=$(gettop)/vendor/thirdparty/wifi_bt/config/wifi_bt.mk
if [[ ! -f "${wifibt_mk}" ]]; then return; fi
wificfgfile=$(gettop)/vendor/thirdparty/wifi_bt/config/wifi_bt_cfg.mk
module_device=$(grep "^BOARD_WIFI_BLUETOOTH_DEVICE_.*y$" $wificfgfile |awk '{print $1}'|sort|uniq)
# 比较apply_wifi_bt_patch.sh和apply_wifi_bt_patch.sh.tamp,如果apply_wifi_bt_patch.sh的修改时间较新
# 说明该脚本有被修改sdk版本号有可能被更新清理旧sdk代码。
if [[ -z $(ls -lt $(gettop)/vendor/thirdparty/wifi_bt/drv_script/apply_wifi_bt_patch.sh* |head -n 1|sed -n '/stamp/p') ]]; then
[ ! -d $(gettop)/$DEVELOPMENT_DIR/thirdparty/wifi_bt ] && git_args="--exclude=drv_script/"
cd $(gettop)/vendor/thirdparty/wifi_bt && git clean -dfx $git_args 1>/dev/null 2>&1 || \
echo "not a git repository ,please manually clear the source code directory"
cd $(gettop)
need_copy="copy"
echo "need update sdk version."
fi
if [ -f "$(gettop)/set_wifi_bt_env.log" ]; then
rm $(gettop)/set_wifi_bt_env.log
fi
for m in $module_device
do
case "$m" in
BOARD_WIFI_BLUETOOTH_DEVICE_RTL8723DU)
wifibt_vendor="realtek"
wifibt_device="usb_rtl8723du";;
BOARD_WIFI_BLUETOOTH_DEVICE_MT7668U)
wifibt_vendor="mtk"
wifibt_device="usb_mt7668u";;
BOARD_WIFI_BLUETOOTH_DEVICE_RTL8822BEH)
wifibt_vendor="realtek"
wifibt_device="pcie_rtl8822beh";;
BOARD_WIFI_BLUETOOTH_DEVICE_RTL8822CS)
wifibt_vendor="realtek"
wifibt_device="sdio_rtl8822cs";;
BOARD_WIFI_BLUETOOTH_DEVICE_RTL8822BS)
wifibt_vendor="realtek"
wifibt_device="sdio_rtl8822bs";;
BOARD_WIFI_BLUETOOTH_DEVICE_RTL8822CU)
wifibt_vendor="realtek"
wifibt_device="usb_rtl8822cu";;
*)
echo "skip copy, unkown module:$m"
continue
esac
local file_num=$(find $(gettop)/vendor/thirdparty/wifi_bt/wifi/drv/$wifibt_device/ -type f | wc -l)
# source时如果模组驱动编译目录里的文件数大于等于10所有模组在没有进行过代码
# 拷贝时编译目录的文件数小于10认为有拷贝过源码不再进行拷贝。手动带参执行脚本必定拷贝。
if [ $file_num -lt 10 ] || [[ $need_copy == "copy" ]]; then
echo "$m=y, need copy $wifibt_vendor $wifibt_device"
if [[ -d $(gettop)/$DEVELOPMENT_DIR/thirdparty/wifi_bt ]]; then
$(gettop)/vendor/thirdparty/wifi_bt/drv_script/copy_source_file.sh $wifibt_vendor $wifibt_device >>$(gettop)/set_wifi_bt_env.log
$(gettop)/vendor/thirdparty/wifi_bt/drv_script/apply_wifi_bt_patch.sh $wifibt_device >>$(gettop)/set_wifi_bt_env.log
[ $? -ne 0 ] && echo "copy $m wifi_bt source error , please $(gettop)/set_wifi_bt_env.log for detail." && return
else
$(gettop)/vendor/thirdparty/wifi_bt/drv_script/apply_wifi_bt_patch.sh $wifibt_device
[ $? -ne 0 ] && echo "copy $m wifi_bt source error." && return
fi
else
echo "$m source code has been copied."
fi
done
realtek_hostapd_mk=$(gettop)/vendor/thirdparty/wifi_bt/wifi/wpa_supplicant/realtek/hostapd/Android.mk
realtek_wpa_supplicant_mk=$(gettop)/vendor/thirdparty/wifi_bt/wifi/wpa_supplicant/realtek/wpa_supplicant/Android.mk
realtek_wpa_supplicant_c=$(gettop)/vendor/thirdparty/wifi_bt/wifi/wpa_supplicant/realtek/wpa_supplicant/src/common/wpa_ctrl.c
if [[ -f "${realtek_hostapd_mk}" ]]; then cp -f $(gettop)/vendor/thirdparty/wifi_bt/config/realtek/hostapd/Android.mk.bak ${realtek_hostapd_mk}; fi
if [[ -f "${realtek_wpa_supplicant_mk}" ]]; then cp -f $(gettop)/vendor/thirdparty/wifi_bt/config/realtek/wpa_supplicant/Android.mk.bak ${realtek_wpa_supplicant_mk}; fi
if [[ -f "${realtek_wpa_supplicant_c}" ]]; then cp -f $(gettop)/vendor/thirdparty/wifi_bt/config/realtek/wpa_supplicant/wpa_ctrl.c.bak ${realtek_wpa_supplicant_c}; fi
# 创建一个标识文件在下次拷贝源码时如果apply_wifi_bt_patch.sh比apply_wifi_bt_patch.sh.stamp新
# 则说明apply_wifi_bt_patch.sh有被修改可能存在版本更新然后去清理旧版本代码。
touch $(gettop)/vendor/thirdparty/wifi_bt/drv_script/apply_wifi_bt_patch.sh.stamp
if [ -f "$(gettop)/set_wifi_bt_env.log" ]; then
echo "copy wifi_bt source done, please $(gettop)/set_wifi_bt_env.log for detail."
fi
}
set_wifi_bt_env $1