diff options
Diffstat (limited to 'sys-kernel/compat-drivers/files/compat-drivers-3.8-driver-select')
-rwxr-xr-x | sys-kernel/compat-drivers/files/compat-drivers-3.8-driver-select | 845 |
1 files changed, 0 insertions, 845 deletions
diff --git a/sys-kernel/compat-drivers/files/compat-drivers-3.8-driver-select b/sys-kernel/compat-drivers/files/compat-drivers-3.8-driver-select deleted file mode 100755 index bafaf352..00000000 --- a/sys-kernel/compat-drivers/files/compat-drivers-3.8-driver-select +++ /dev/null @@ -1,845 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2009 Luis R. Rodriguez <mcgrof@gmail.com> -# -# This script allows you to select your compat-drivers driver and -# reduce compilation time. - -# Heavily modified by Stefan Kuhn <wuodan@pentoo.ch> -# Configures compat-drivers for multiple drivers at once -# Suited for package managers - -# This internal variable contains a list of all 'Makefile's -CPD_MAKEFILES=" - MAKEFILE - COMPAT_CONFIG_CW - DRIVERS_MAKEFILE - ATH_MAKEFILE - ATH9K_MAKEFILE - BRCM80211_MAKEFILE - RT2X00_MAKEFILE - TI_MAKEFILE - NET_WIRELESS_MAKEFILE - EEPROM_MAKEFILE - DRIVERS_NET_ATHEROS - DRIVERS_NET_BROADCOM - DRIVERS_NET_USB_MAKEFILE - SSB_MAKEFILE - BCMA_MAKEFILE" - -# This internal variable contains an array with paths to all files -CPD_MAKEFILES_ARRAY=( - MAKEFILE=Makefile - COMPAT_CONFIG_CW=config.mk - DRIVERS_MAKEFILE=drivers/net/wireless/Makefile - ATH_MAKEFILE=drivers/net/wireless/ath/Makefile - ATH9K_MAKEFILE=drivers/net/wireless/ath/ath9k/Makefile - BRCM80211_MAKEFILE=drivers/net/wireless/brcm80211/Makefile - RT2X00_MAKEFILE=drivers/net/wireless/rt2x00/Makefile - TI_MAKEFILE=drivers/net/wireless/ti/Makefile - NET_WIRELESS_MAKEFILE=net/wireless/Makefile - EEPROM_MAKEFILE=drivers/misc/eeprom/Makefile - DRIVERS_NET_ATHEROS=drivers/net/ethernet/atheros/Makefile - DRIVERS_NET_BROADCOM=drivers/net/ethernet/broadcom/Makefile - DRIVERS_NET_USB_MAKEFILE=drivers/net/usb/Makefile - SSB_MAKEFILE=drivers/ssb/Makefile - BCMA_MAKEFILE=drivers/bcma/Makefile -) - -# This internal variable holds modules to be added to the atheros Makefile -CPD_ADD_ATHEROS="" - -# This internal variable controls the execution phase (and write protection) -# phases: 0=start, 1=configure, 2=write, 3=restore -# no file should be touched below phase 2 -CPD_PHASE=0 - -# CPD_MODULE -# This internal variable contains a temporary value, the currently processed -# argument - -# CPD_DISABLE_${CPD_MODULE} -# These internal variables contains the 'disable-actions' of the # currently -# processed argument - -# This internal variable stores selected drivers (and groups) -CPD_SELECTED_DRIVERS='' - -function die { - echo "$1" 1>&2 - exit 1 -} - -function check_phase { - [ ${CPD_PHASE} -lt ${1} ] && \ - die "Current phase ${CPD_PHASE} lower then ${1}. Check failed" -} - -# This internal function returns the path to a file from CPD_MAKEFILES_ARRAY -function get_makefile { - local file - for file in "${CPD_MAKEFILES_ARRAY[@]}"; do - if [ "${file%%=*}" = "${1}" ]; then - echo "${file#*=}" - return 0 - fi - done - die "File ${1} not found" -} - - -# used to backup files from foo to foo.${BACKUP_EXT} -BACKUP_EXT="bk" - -# Pretty colors -GREEN="\033[01;32m" -YELLOW="\033[01;33m" -NORMAL="\033[00m" -BLUE="\033[34m" -RED="\033[31m" -PURPLE="\033[35m" -CYAN="\033[36m" -UNDERLINE="\033[02m" - -# this internal function disables colors -function unset_colors { - GREEN= - YELLOW= - NORMAL= - BLUE= - RED= - PURPLE= - CYAN= - UNDERLINE= -} - -SUPPORTED_80211_DRIVERS="ath5k ath9k ath9k_ap ath9k_htc carl9170 ath6kl wil6210 b43 zd1211rw rt2x00 wl1251 wl12xx brcmsmac brcmfmac" - -# b43 needs some more work for driver-select, the SSB stuff, plus -# what if you update b44 but not b43? It will bust. -SUPPORTED_ETH_DRIVERS="atl1 atl2 atl1e atl1c alx" - -SUPPORTED_DRM_DRIVERS="i915" - -SUPPORTED_DRIVERS="${SUPPORTED_80211_DRIVERS} ${SUPPORTED_ETH_DRIVERS} ${SUPPORTED_DRM_DRIVERS}" - -function usage { - echo -e "${GREEN}Usage${NORMAL}: ${BOLD}$0${NORMAL} [${PURPLE}-q${NORMAL}] [ ${PURPLE}<driver-name>${NORMAL} | ${CYAN}<driver-group-name>${NORMAL} | ${GREEN}restore${NORMAL} ]" - - # These should match the switch below. - echo -e "Supported 802.11 drivers:" - local i - for i in $SUPPORTED_80211_DRIVERS; do - echo -e "\t${PURPLE}${i}${NORMAL}" - done - - echo - echo -e "Supported Ethernet drivers:" - for i in $SUPPORTED_ETH_DRIVERS; do - echo -e "\t${PURPLE}${i}${NORMAL}" - done - - echo -e "Supported DRM drivers:" - for i in $SUPPORTED_DRM_DRIVERS; do - echo -e "\t${PURPLE}${i}${NORMAL}" - done - - # These should match the switch below. - echo -e "\nSupported group drivers:" - echo -e "\t${CYAN}atheros${NORMAL} < ${PURPLE} ath5k ath9k carl9170 zd1211rw ath6kl wil6210${NORMAL}>" - echo -e "\t${CYAN}ath${NORMAL} < ${PURPLE} ath5k ath9k carl9170 ath6kl wil6210${NORMAL}>" - echo -e "\t${CYAN}brcm80211${NORMAL} < ${PURPLE} brcmsmac brcmfmac ${NORMAL}>" - echo -e "\t${CYAN}intel${NORMAL} < ${PURPLE} iwlwifi, iwlegacy ${NORMAL}>" - echo -e "\t${CYAN}rtl818x${NORMAL} < ${PURPLE} rtl8180 rtl8187 ${NORMAL}>" - echo -e "\t${CYAN}rtlwifi${NORMAL} < ${PURPLE} rtl8192ce ${NORMAL}>" - echo -e "\t${CYAN}ti${NORMAL} < ${PURPLE} wl1251 wl12xx (SPI and SDIO)${NORMAL}>" - - echo -e "\nSupported group drivers: Bluetooth & Ethernet:" - echo -e "\t${CYAN}atlxx${NORMAL} < ${PURPLE} atl1 atl2 atl1e alx${NORMAL}>" - echo -e "\t${CYAN}bt${NORMAL} < ${PURPLE} Linux bluetooth drivers ${NORMAL}>" - - echo -e "\nSupported group drivers: DRM:" - echo -e "\t${CYAN}drm${NORMAL} < ${PURPLE} i915${NORMAL}>" - - echo - echo -e "Restoring compat-drivers:" - echo -e "\t${GREEN}restore${NORMAL}: you can use this option to restore compat-drivers to the original state" - - echo - echo -e "Options:" - echo -e "\t${PURPLE}-q${NORMAL}:\tDisables colored output" -} - -function backup_file { - check_phase 2 - if [ -f $1.${BACKUP_EXT} ]; then - echo -e "Backup exists: ${CYAN}${1}.${BACKUP_EXT}${NORMAL}" - return - fi - echo -e "Backing up makefile: ${CYAN}${1}.${BACKUP_EXT}${NORMAL}" - cp "${1}" "${1}.${BACKUP_EXT}" || die -} - -# This internal function registers a 'disable' action for a module. -# It writes to a variable CPD_DISABLE_${CPD_MODULE} -function disable { - check_phase 1 - eval "CPD_DISABLE_${CPD_MODULE}+=\" ${*}\"" || die -} - -# This internal function clears a Makefile completely. -function disable_makefile -{ - check_phase 2 - backup_file $1 - echo > $1 -} - -function select_drivers_from_makefile -{ - check_phase 2 - local MAKEFILE=$(get_makefile "$1") - shift - backup_file $MAKEFILE - local CONFIGS="" - local i - for i in $@; do - if [[ "$CONFIGS" = "" ]]; then - CONFIGS="$i" - else - CONFIGS="${CONFIGS}|$i" - fi - done - egrep "$CONFIGS" $MAKEFILE > ${MAKEFILE}.tmp - mv ${MAKEFILE}.tmp ${MAKEFILE} -} - -# This internal function registers filters for the drivers Makefile -function select_drivers { - check_phase 1 - eval "CPD_DRIVERS_MAKEFILE+=\" ${*}\"" || die -} - -# This internal function disables "lib80211" -function disable_lib80211 -{ - check_phase 2 - backup_file "$(get_makefile NET_WIRELESS_MAKEFILE)" - # perl -i -ne 'print if ! /LIB80211/ ' $NET_WIRELESS_MAKEFILE - sed -i '/LIB80211/d' "$(get_makefile NET_WIRELESS_MAKEFILE)" || die -} - -# This internal function disables "b44" -function disable_b44 { - check_phase 2 - backup_file "$(get_makefile DRIVERS_NET_BROADCOM)" - # perl -i -ne 'print if ! /CONFIG_B44/ ' $DRIVERS_NET_BROADCOM - sed -i '/CONFIG_B44/d' "$(get_makefile DRIVERS_NET_BROADCOM)" || die -} - -# This internal function disables "ssb" -function disable_ssb -{ - check_phase 2 - disable_makefile "$(get_makefile ${SSB_MAKEFILE})" - # perl -i -ne 'print if ! /drivers\/ssb\//' Makefile - sed -i '/drivers\/ssb\//d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "bcma" -function disable_bcma -{ - check_phase 2 - disable_makefile "$(get_makefile ${BCMA_MAKEFILE})" - # perl -i -ne 'print if ! /drivers\/bcma\//' Makefile - sed -i '/drivers\/bcma\//d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "rfkill" -function disable_rfkill -{ - check_phase 2 - backup_file "$(get_makefile MAKEFILE)" - # perl -i -ne 'print if ! /CONFIG_COMPAT_RFKILL/' Makefile - sed -i '/CONFIG_COMPAT_RFKILL/d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "eprom" -function disable_eeprom -{ - check_phase 2 - disable_makefile "$(get_makefile ${EEPROM_MAKEFILE})" || die - # perl -i -ne 'print if ! /drivers\/misc\/eeprom\//' Makefile - sed -i '/drivers\/misc\/eeprom\//d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "usbnet" -# TODO: this function is twice in driver-select script!?! Why? -function disable_usbnet -{ - check_phase 2 - disable_makefile ${DRIVERS_NET_USB_MAKEFILE} || die - # perl -i -ne 'print if ! /drivers\/net\/usb\//' Makefile - sed -i '/drivers\/net\/usb\//d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "usbnet" -# TODO: this function is twice in driver-select script!?! Why? -function disable_usbnet { - check_phase 2 - # perl -i -ne 'print if ! /CONFIG_COMPAT_NET_USB_MODULES/' Makefile - sed -i '/CONFIG_COMPAT_NET_USB_MODULES/d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "ethernet" -function disable_ethernet { - check_phase 2 - # perl -i -ne 'print if ! /CONFIG_COMPAT_NETWORK_MODULES/' Makefile - sed -i '/CONFIG_COMPAT_NETWORK_MODULES/d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "var_03" -function disable_var_03 { - check_phase 2 - # perl -i -ne 'print if ! /CONFIG_COMPAT_VAR_MODULES/' Makefile - sed -i '/CONFIG_COMPAT_VAR_MODULES/d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "bt" -function disable_bt { - check_phase 2 - # perl -i -ne 'print if ! /CONFIG_COMPAT_BLUETOOTH/' Makefile - sed -i '/CONFIG_COMPAT_BLUETOOTH/d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "80211" -function disable_80211 { - check_phase 2 - # perl -i -ne 'print if ! /CONFIG_COMPAT_WIRELESS/' Makefile - sed -i '/CONFIG_COMPAT_WIRELESS/d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "drm" -function disable_drm { - check_phase 2 - # perl -i -ne 'print if ! /CONFIG_COMPAT_VIDEO_MODULES/' Makefile - sed -i '/CONFIG_COMPAT_VIDEO_MODULES/d' "$(get_makefile MAKEFILE)" || die -} - -function disable_bt_usb_ethernet { - check_phase 1 - # backup_file Makefile - disable usbnet - disable ethernet - disable bt - disable update-initramfs - disable drm -} - -function disable_bt_usb_ethernet_var { - check_phase 1 - # backup_file Makefile - disable bt_usb_ethernet - disable var_03 -} - -function enable_only_ethernet { - check_phase 1 - # backup_file Makefile - # backup_file $DRIVERS_NET_BROADCOM - # backup_file $DRIVERS_NET_ATHEROS - disable staging - disable usbnet - disable var_03 - disable bt - disable drm - # rfkill may be needed if you enable b44 as you may have b43 - disable rfkill - disable 80211 -} - -function disable_var { - check_phase 1 - disable ssb - disable bcma - disable usbnet - disable eeprom - disable update-initramfs -} - -function disable_var_01 { - check_phase 1 - disable lib80211 - disable var -} - -function disable_var_02 { - check_phase 1 - #var_01 with eeprom not disabled - disable lib80211 - disable ssb - disable bcma - disable usbnet - disable update-initramfs -} - -# This internal function disables "staging" -function disable_staging { - check_phase 2 - backup_file "$(get_makefile MAKEFILE)" - # perl -i -ne 'print if ! /CONFIG_COMPAT_STAGING/ ' Makefile - sed -i '/CONFIG_COMPAT_STAGING/d' "$(get_makefile MAKEFILE)" || die -} - -# This internal function disables "update-initramfs" -function disable_update-initramfs -{ - check_phase 2 - backup_file "$(get_makefile MAKEFILE)" - # perl -i -ne 'print if ! /update-initramfs/' Makefile - sed -i '/update-initramfs/d' "$(get_makefile MAKEFILE)" || die -} - -function enable_only_drm { - check_phase 1 - # backup_file Makefile - disable ethernet - disable staging - disable usbnet - disable var_03 - disable bt - # rfkill may be needed if you enable b44 as you may have b43 - disable rfkill - disable 80211 -} - -# This internal function registers filters for the ath Makefile -function select_ath_driver -{ - check_phase 1 - # backup_file $ATH_MAKEFILE - # perl -i -ne 'print if /'$1'/ || /CONFIG_ATH_/ || /ath-objs/ || /regd.o/ || /hw.o/ || /key.o/' $ATH_MAKEFILE - eval "CPD_ATH_MAKEFILE+=\" ${*} CONFIG_ATH_ ath-objs regd.o hw.o key.o\"" || die - disable var_01 -} - -# This internal function registers no-common filters for the ath Makefile -function select_ath_no_common -{ - check_phase 1 - # backup_file $ATH_MAKEFILE - # perl -i -ne 'print if /'$1'/' $ATH_MAKEFILE - eval "CPD_ATH_MAKEFILE+=\" ${*}\"" || die - disable var_01 -} - -function select_ath9k_driver -{ - check_phase 1 - select_ath_driver CONFIG_ATH9K_HW - # In the future here we'll add stuff to disable ath9k_htc -} - -function select_ath9k_driver_ap -{ - check_phase 1 - select_ath9k_driver - # backup_file $COMPAT_CONFIG_CW - # perl -i -ne 'print if ! /CONFIG_COMPAT_ATH9K_RATE_CONTROL/ ' $COMPAT_CONFIG_CW - # this does not work with multipe drivers, since it's the only filter to that file - # It is only applied when only the ath9k_ap driver is selected and nothing else - # eval "CPD_COMPAT_CONFIG_CW+=\" CONFIG_COMPAT_ATH9K_RATE_CONTROL\"" || die -} - -# This internal function registers filters for the ti Makefile -function select_ti_drivers -{ - check_phase 1 - select_drivers CONFIG_WL_TI - # select_drivers_from_makefile $TI_MAKEFILE $@ - eval "CPD_TI_MAKEFILE+=\" ${*}\"" || die -} - -# This internal function registers filters for the brcm80211 Makefile -function select_brcm80211_driver -{ - check_phase 1 - # backup_file $BRCM80211_MAKEFILE - # perl -i -ne 'print if /'$1'/ || /CONFIG_BRCMUTIL/ ' $BRCM80211_MAKEFILE - eval "CPD_BRCM80211_MAKEFILE+=\" ${*} CONFIG_BRCMUTIL\"" || die -} - -function restore_file { - check_phase 3 - local ORIG="${1%%.${BACKUP_EXT}}" || die - cp $1 $ORIG || die - rm -f $1 || die - echo -e "Restored makefile: ${CYAN}${ORIG}${NORMAL} (and removed backup)" -} - -function restore_compat { - check_phase 3 - local FILES=$(find ./ -type f -name *\."${BACKUP_EXT}") || die - local i - for i in $FILES; do - restore_file $i - done -} - -if [ ! -f .compat_version ]; then - die "Must run $0 from the compat-drivers top level directory" -fi - -# set phase to configure -CPD_PHASE=1 - -# loop over all arguments -# This sets the configuration for each flag/module -for arg in "$@"; do - # clear/set global vars - CPD_MODULE="$arg" - CPD_SELECTED_DRIVERS+=" $arg" - case "$arg" in - restore) - CPD_PHASE=3 - restore_compat - exit 0 - ;; - usage) - usage - exit 0 - ;; - -q) - unset_colors || die - CPD_SELECTED_DRIVERS="${CPD_SELECTED_DRIVERS% -q}" - ;; - # Group drivers - atheros) - select_drivers CONFIG_ATH_CARDS \ - CONFIG_COMPAT_ZD1211RW - disable staging - disable_bt_usb_ethernet_var - disable var_01 - ;; - ath) - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - disable var_01 - ;; - intel) - select_drivers CONFIG_IWLWIFI \ - CONFIG_IWLEGACY \ - CONFIG_IPW - disable staging - disable var - disable bt - disable ethernet - disable usbnet - ;; - iwlwifi) - select_drivers CONFIG_IWLWIFI - disable staging - disable var_01 - disable bt - disable ethernet - disable usbnet - ;; - iwlegacy) - select_drivers CONFIG_IWLEGACY - disable staging - disable var_01 - disable bt - disable ethernet - disable usbnet - ;; - rtl818x) - select_drivers CONFIG_RTL8180 CONFIG_RTL8187 - disable staging - disable bt_usb_ethernet - disable ssb - disable bcma - disable lib80211 - ;; - rtlwifi) - select_drivers CONFIG_RTL8192CE CONFIG_RTLWIFI - disable staging - disable_bt_usb_ethernet_var - disable lib80211 - ;; - ti) - select_drivers CONFIG_WL_TI - disable_bt_usb_ethernet_var - disable staging - disable var_01 - ;; - brcm80211) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_BRCMUTIL \ - CONFIG_BRCMFMAC \ - CONFIG_BRCMSMAC - ;; - # Singular modules - ath5k) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - select_ath_driver CONFIG_ATH5K - #patch -p1 < enable-older-kernels/enable-2.6.23.patch - ;; - ath9k) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - select_ath9k_driver - ;; - ath9k_ap) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - select_ath9k_driver_ap - ;; - carl9170) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - select_ath_driver CONFIG_CARL9170 - ;; - ath9k_htc) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - select_ath9k_driver - ;; - ath6kl) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - select_ath_driver CONFIG_ATH6KL - ;; - wil6210) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_ATH_CARDS - select_ath_no_common CONFIG_WIL6210 - ;; - brcmsmac) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_BRCMSMAC - select_brcm80211_driver CONFIG_BRCMSMAC CONFIG_BRCMUTIL - ;; - brcmfmac) - disable staging - disable_bt_usb_ethernet_var - select_drivers CONFIG_BRCMFMAC - select_brcm80211_driver CONFIG_BRCMFMAC CONFIG_BRCMUTIL - ;; - zd1211rw) - select_drivers CONFIG_COMPAT_ZD1211RW - disable staging - disable var_01 - ;; - b43) - disable staging - disable bt_usb_ethernet - disable eeprom - disable lib80211 - select_drivers CONFIG_B43 - ;; - rt2x00) - select_drivers CONFIG_RT2X00 - disable staging - disable_bt_usb_ethernet - disable var_02 - ;; - wl1251) - select_ti_drivers CONFIG_WL1251 - disable staging - disable var_01 - ;; - wl12xx) - select_ti_drivers CONFIG_WL12XX - disable staging - disable var_01 - ;; - wl18xx) - select_ti_drivers CONFIG_WL18XX - disable staging - disable var_01 - ;; - # Ethernet and Bluetooth drivers - atl1) - enable_only_ethernet - disable b44 - # echo -e "obj-\$(CONFIG_ATL1) += atlx/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die - CPD_ADD_ATHEROS+="obj-\$(CONFIG_ATL1) += atlx/\n" - ;; - atl2) - enable_only_ethernet - disable b44 - # echo -e "obj-\$(CONFIG_ATL2) += atlx/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die - CPD_ADD_ATHEROS+="obj-\$(CONFIG_ATL2) += atlx/\n" - ;; - atl1e) - enable_only_ethernet - disable b44 - # echo -e "obj-\$(CONFIG_ATL1E) += atl1e/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die - CPD_ADD_ATHEROS+="obj-\$(CONFIG_ATL1E) += atl1e/\n" - ;; - atl1c) - enable_only_ethernet - disable b44 - # echo -e "obj-\$(CONFIG_ATL1C) += atl1c/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die - CPD_ADD_ATHEROS+="obj-\$(CONFIG_ATL1C) += atl1c/\n" - ;; - alx) - enable_only_ethernet - disable b44 - # echo -e "obj-\$(CONFIG_ALX) += alx/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die - CPD_ADD_ATHEROS+="obj-\$(CONFIG_ALX) += alx/\n" - ;; - atlxx) - select_drivers CONFIG_ATL1 CONFIG_ATL2 CONFIG_ATL1E CONFIG_ALX - enable_only_ethernet - disable b44 - disable update-initramfs - ;; - bt) - select_drivers CONFIG_BT - disable var - disable ethernet - disable staging - disable 80211 - ;; - i915) - enable_only_drm - ;; - drm) - enable_only_drm - ;; - *) - ./$0 usage - die "Unsupported driver: ${arg}" - exit 1 - ;; - esac -done - -# special for ath9k_ap -# this filter is only applied when no other driver is selected -if [ "${CPD_SELECTED_DRIVERS}" == " ath9k_ap" ]; then - eval "CPD_COMPAT_CONFIG_CW+=\" CONFIG_COMPAT_ATH9K_RATE_CONTROL\"" \ - || die "Failed to apply special filter for ath9k_ap" -fi - -if [[ ! -f built-in.o ]]; then - if [[ "$1" != "restore" ]]; then - echo -e "${PURPLE}Processing new driver-select request...${NORMAL}" - fi -fi - -# This internal function checks if the first argument is contained in the rest -# of the arguments -function has { - local x=$1 - shift - local y - for y in "$@"; do - [ "${y}" = "${x}" ] && return 0 - done - return 1 -} - -# this internal function checks if both groups and single modules were selected -# this is not supported -function check_groups { - local mods= - local grps= - for CPD_MODULE in ${CPD_SELECTED_DRIVERS}; do - if has "${CPD_MODULE}" ${SUPPORTED_DRIVERS}; then - mods+=" ${CPD_MODULE}" - else - grps+=" ${CPD_MODULE}" - fi - done - [ ! "${mods}" == '' ] && [ ! "${grps}" == '' ] && \ - die "Mixing group and single drivers is not supported by this script! Groups: <${grps}> Drivers: <${mods}>" -} -check_groups - -# set phase to write -CPD_PHASE=2 - -# Always backup the top level Makefile, unless restoring -if [[ "$1" != "restore" ]]; then - backup_file Makefile -fi - -# If a user selects a new driver make sure we clean up for them -# first and also restore the backup makefiles then. Otherwise -# we'll be trying to leave drivers on Makefiles which are not -# already there from a previous run. -if [ -f built-in.o ]; then - echo -e "${PURPLE}Old build found, going to clean this up first...${NORMAL}" - make clean - echo -e "${PURPLE}Restoring Makefiles...${NORMAL}" - ./$0 restore -fi - -# This function reads the configuration (disable-actions and filters) for each -# single active flag, then constructs and applies the common configuration set. -function src_configure { - local use_enabled_list="${CPD_SELECTED_DRIVERS}" - # compose common disable list for all flags - # 1st module/flag - local iuse1="$(echo $use_enabled_list | cut -d ' ' -f 1)" || die - eval "local disable_list=\$CPD_DISABLE_${iuse1}" || die - local iuse - local dis - for iuse in ${use_enabled_list}; do - if [ "${iuse}" != "${iuse1}" ]; then - local disable_list_new='' - eval "local disable_list_other=\$CPD_DISABLE_${iuse}" || die - for dis in ${disable_list}; do - has "${dis}" ${disable_list_other} && \ - disable_list_new+=" ${dis}" - done - disable_list="${disable_list_new}" - fi - done - # sort and remove duplicates - disable_list=$(printf '%s\n' ${disable_list} | sort -u | tr '\n' ' ') || die - - # prepend to atheros Makefile - if [ "${CPD_ADD_ATHEROS}" != '' ]; then - # ensure that backup file exists - backup_file "$(get_makefile DRIVERS_NET_ATHEROS)" - # prepend using backup - echo -e "${CPD_ADD_ATHEROS}"|cat - \ - "$(get_makefile DRIVERS_NET_ATHEROS).${BACKUP_EXT}" > \ - "$(get_makefile DRIVERS_NET_ATHEROS)" \ - || die "Failed to prepend to atheros Makefile" - echo -e "Prepended to atheros Makefile ...${NORMAL}" - fi - # execute all filters for the Makefiles - local file - for file in ${CPD_MAKEFILES}; do - eval "local filter_list=\$CPD_${file}" || die - if [ -n "${filter_list}" ]; then - # sort and remove duplicates - filter_list=$(printf '%s\n' ${filter_list} | sort -u | tr '\n' ' ')\ - || die - echo -e "Filtering ${CYAN}$(get_makefile ${file})${NORMAL} for: ${CYAN}${filter_list}${NORMAL}" - select_drivers_from_makefile "${file}" "${filter_list}" || die - fi - done - # execute common disable list - echo -e "Common disable list: ${CYAN}${disable_list}${NORMAL}" - for dis in ${disable_list}; do - echo -e "Running disable function: ${CYAN}disable_${dis}${NORMAL}" - eval "disable_${dis}" || die - done -} - -# call src_configure ... -src_configure || die "Failed on src_configure ..." |