247 lines
7.8 KiB
Makefile
247 lines
7.8 KiB
Makefile
|
#
|
||
|
|
||
|
# Copyright (c) 2007-2012 Luis R. Rodriguez <mcgrof@frijolero.org>
|
||
|
#
|
||
|
# Permission to use, copy, modify, and/or distribute this software for any
|
||
|
# purpose with or without fee is hereby granted, provided that the above
|
||
|
# copyright notice and this permission notice appear in all copies.
|
||
|
#
|
||
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||
|
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||
|
|
||
|
export KMODDIR?= updates
|
||
|
KMODDIR_ARG:= "INSTALL_MOD_DIR=$(KMODDIR)"
|
||
|
ifneq ($(origin KLIB), undefined)
|
||
|
KMODPATH_ARG:= "INSTALL_MOD_PATH=$(KLIB)"
|
||
|
else
|
||
|
export KLIB:= /lib/modules/$(shell uname -r)
|
||
|
endif
|
||
|
export KLIB_BUILD ?= $(KLIB)/build
|
||
|
export MAKE
|
||
|
|
||
|
DESTDIR?=
|
||
|
|
||
|
ifneq ($(KERNELRELEASE),)
|
||
|
|
||
|
-include $(COMPAT_CONFIG)
|
||
|
include $(COMPAT_CONFIG_CW)
|
||
|
|
||
|
NOSTDINC_FLAGS := -I$(M)/include/ \
|
||
|
-include $(M)/include/linux/compat-2.6.h \
|
||
|
$(CFLAGS)
|
||
|
|
||
|
obj-y := compat/
|
||
|
|
||
|
obj-$(CONFIG_COMPAT_RFKILL) += net/rfkill/
|
||
|
|
||
|
ifeq ($(BT),)
|
||
|
obj-$(CONFIG_COMPAT_WIRELESS) += net/wireless/
|
||
|
obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += drivers/net/wireless/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),)
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
|
||
|
|
||
|
else
|
||
|
|
||
|
export PWD := $(shell pwd)
|
||
|
|
||
|
# The build will fail if there is any space in PWD.
|
||
|
ifneq (,$(findstring $() ,$(PWD)))
|
||
|
$(error "The path to this compat-drivers directory has spaces in it." \
|
||
|
"Please put it somewhere where there is no space")
|
||
|
endif
|
||
|
|
||
|
export CFLAGS += \
|
||
|
-DCOMPAT_BASE="\"$(shell cat $(PWD)/.compat_base)\"" \
|
||
|
-DCOMPAT_BASE_TREE="\"$(shell cat $(PWD)/.compat_base_tree)\"" \
|
||
|
-DCOMPAT_BASE_TREE_VERSION="\"$(shell cat $(PWD)/.compat_base_tree_version)\"" \
|
||
|
-DCOMPAT_PROJECT="\"Compat-drivers\"" \
|
||
|
-DCOMPAT_VERSION="\"$(shell cat $(PWD)/.compat_version)\""\
|
||
|
-DCONFIG_ATH6KL_BAM2BAM
|
||
|
|
||
|
# These exported as they are used by the scripts
|
||
|
# to check config and compat autoconf
|
||
|
export COMPAT_CONFIG_CW=$(PWD)/config.mk
|
||
|
export COMPAT_CONFIG=$(PWD)/.config
|
||
|
export CONFIG_CHECK=$(PWD)/.config.mk_md5sum.txt
|
||
|
export COMPAT_AUTOCONF=include/linux/compat_autoconf.h
|
||
|
export CREL=$(shell cat $(PWD)/.compat_version)
|
||
|
export CREL_PRE:=.compat_autoconf_
|
||
|
export CREL_CHECK:=$(PWD)/$(CREL_PRE)$(CREL)
|
||
|
|
||
|
all: modules
|
||
|
|
||
|
$(COMPAT_CONFIG): ;
|
||
|
|
||
|
modules: $(CREL_CHECK)
|
||
|
$(MAKE) -C $(KLIB_BUILD) M=$(PWD) modules
|
||
|
@touch $@
|
||
|
|
||
|
bt: $(CREL_CHECK)
|
||
|
+@./scripts/check_config.sh
|
||
|
$(MAKE) -C $(KLIB_BUILD) M=$(PWD) BT=TRUE modules
|
||
|
@touch $@
|
||
|
|
||
|
# We use a CREL_CHECK variable which will depend on the environment used to
|
||
|
# build. If the environment requirements change it forces a reconfiguration
|
||
|
# check. This means we force a new reconfiguration check if a the user gets a
|
||
|
# new updates of compat-drivers or when the user updates the $(COMPAT_CONFIG)
|
||
|
# file.
|
||
|
# XXX: add kernel target to the CREL_CHECK mix, this would ensure we also
|
||
|
# reconfigure and build again fresh if we detect a new target kernel is
|
||
|
# being used.
|
||
|
$(CREL_CHECK):
|
||
|
@# Force to regenerate compat autoconf
|
||
|
+@./compat/scripts/gen-compat-config.sh > $(COMPAT_CONFIG)
|
||
|
@rm -f $(CONFIG_CHECK)
|
||
|
+@./scripts/check_config.sh
|
||
|
@md5sum $(COMPAT_CONFIG_CW) > $(CONFIG_CHECK)
|
||
|
@touch $@
|
||
|
|
||
|
btinstall: btuninstall bt-install-modules
|
||
|
|
||
|
bt-install-modules: bt
|
||
|
$(MAKE) -C $(KLIB_BUILD) M=$(PWD) $(KMODDIR_ARG) $(KMODPATH_ARG) BT=TRUE \
|
||
|
modules_install
|
||
|
@/sbin/depmod -ae
|
||
|
@echo
|
||
|
@echo Now run:
|
||
|
@echo
|
||
|
@echo sudo make btunload:
|
||
|
@echo
|
||
|
@echo And then load the needed bluetooth modules. If unsure reboot.
|
||
|
@echo
|
||
|
|
||
|
btuninstall:
|
||
|
@# New location, matches upstream
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/net/bluetooth/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/drivers/bluetooth/
|
||
|
@# Lets only remove the stuff we are sure we are providing
|
||
|
@# on the misc directory.
|
||
|
@/sbin/depmod -ae
|
||
|
@echo
|
||
|
|
||
|
btclean:
|
||
|
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) BT=TRUE clean
|
||
|
@rm -f $(CREL_PRE)*
|
||
|
|
||
|
install: uninstall install-modules install-scripts
|
||
|
|
||
|
install-modules: modules
|
||
|
$(MAKE) -C $(KLIB_BUILD) M=$(PWD) $(KMODDIR_ARG) $(KMODPATH_ARG) \
|
||
|
modules_install
|
||
|
|
||
|
install-scripts:
|
||
|
@# All the scripts we can use
|
||
|
@mkdir -p $(DESTDIR)/usr/lib/compat-drivers/
|
||
|
@install scripts/modlib.sh $(DESTDIR)/usr/lib/compat-drivers/
|
||
|
@install scripts/madwifi-unload $(DESTDIR)/usr/sbin/
|
||
|
@# This is to allow switching between drivers without blacklisting
|
||
|
@install scripts/athenable $(DESTDIR)/usr/sbin/
|
||
|
@install scripts/b43enable $(DESTDIR)/usr/sbin/
|
||
|
@install scripts/iwl-enable $(DESTDIR)/usr/sbin/
|
||
|
@install scripts/athload $(DESTDIR)/usr/sbin/
|
||
|
@install scripts/b43load $(DESTDIR)/usr/sbin/
|
||
|
@install scripts/iwl-load $(DESTDIR)/usr/sbin/
|
||
|
@if [ $(shell modinfo ath_pci > /dev/null 2>&1 && echo 1) ]; then \
|
||
|
echo -n "Note: madwifi detected, we're going to disable it. " ;\
|
||
|
echo "If you would like to enable it later you can run:" ;\
|
||
|
echo " sudo athenable madwifi" ;\
|
||
|
echo ;\
|
||
|
echo Running athenable ath5k...;\
|
||
|
$(DESTDIR)/usr/sbin/athenable ath5k ;\
|
||
|
fi
|
||
|
@if [ $(shell modinfo iwl4965 > /dev/null 2>&1 && echo 1) ]; then \
|
||
|
echo ;\
|
||
|
echo -n "Note: iwl4965 detected, we're going to disable it. " ;\
|
||
|
echo "If you would like to enable it later you can run:" ;\
|
||
|
echo " sudo iwl-load iwl4965" ;\
|
||
|
echo ;\
|
||
|
echo Running iwl-enable iwlagn...;\
|
||
|
$(DESTDIR)/usr/sbin/iwl-enable iwlagn ;\
|
||
|
fi
|
||
|
@if [ $(shell modinfo iwlagn > /dev/null 2>&1 && echo 1) ] \
|
||
|
&& [ $(shell modinfo iwlwifi > /dev/null 2>&1 && echo 1) ]; then \
|
||
|
echo ;\
|
||
|
echo -n "Note: iwlagn detected, we're going to disable it. " ;\
|
||
|
echo "If you would like to enable it later you can run:" ;\
|
||
|
echo " sudo iwl-load iwlagn" ;\
|
||
|
echo ;\
|
||
|
echo Running iwl-enable iwlwifi...;\
|
||
|
$(DESTDIR)/usr/sbin/iwl-enable iwlwifi ;\
|
||
|
fi
|
||
|
@# If on distributions like Mandriva which like to
|
||
|
@# compress their modules this will find out and do
|
||
|
@# it for you. Reason is some old version of modutils
|
||
|
@# won't know mac80211.ko should be used instead of
|
||
|
@# mac80211.ko.gz
|
||
|
@./scripts/compress_modules
|
||
|
@# Mandrake doesn't have a depmod.d/ conf file to prefer
|
||
|
@# the updates/ dir which is what we use so we add one for it
|
||
|
@# (or any other distribution that doens't have this).
|
||
|
@./scripts/check_depmod
|
||
|
@# Udev stuff needed for the new compat_firmware_class.
|
||
|
@./compat/scripts/compat_firmware_install
|
||
|
@/sbin/depmod -a
|
||
|
@echo
|
||
|
@echo Now run:
|
||
|
@echo
|
||
|
@echo sudo make unload to unload all: wireless, bluetooth and ethernet modules
|
||
|
@echo sudo make wlunload to unload wireless modules
|
||
|
@echo sudo make btunload to unload bluetooth modules
|
||
|
@echo
|
||
|
@echo Run sudo modprobe 'driver-name' to load your desired driver.
|
||
|
@echo If unsure reboot.
|
||
|
@echo
|
||
|
|
||
|
uninstall:
|
||
|
@# New location, matches upstream
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/compat/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/net/mac80211/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/net/rfkill/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/net/wireless/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/drivers/net/usb/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/drivers/net/wireless/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/drivers/staging/
|
||
|
@rm -rf $(KLIB)/$(KMODDIR)/drivers/net/atl*
|
||
|
@find $(KLIB)/$(KMODDIR)/drivers/net/ -name "alx*.ko" -o -name "atl*.ko" 2>/dev/null |xargs rm -f
|
||
|
@# Lets only remove the stuff we are sure we are providing
|
||
|
@# on the misc directory.
|
||
|
@rm -f $(KLIB)/$(KMODDIR)/drivers/misc/eeprom_93cx6.ko*
|
||
|
@rm -f $(KLIB)/$(KMODDIR)/drivers/net/b44.ko*
|
||
|
@/sbin/depmod -a
|
||
|
@echo
|
||
|
|
||
|
clean:
|
||
|
@if [ -d net -a -d $(KLIB_BUILD) ]; then \
|
||
|
$(MAKE) -C $(KLIB_BUILD) M=$(PWD) clean ;\
|
||
|
fi
|
||
|
@rm -f $(CREL_PRE)*
|
||
|
unload:
|
||
|
@./scripts/unload.sh
|
||
|
|
||
|
btunload:
|
||
|
@./scripts/btunload.sh
|
||
|
|
||
|
wlunload:
|
||
|
@./scripts/wlunload.sh
|
||
|
|
||
|
|
||
|
.PHONY: all clean install uninstall unload btunload wlunload modules bt Makefile
|
||
|
|
||
|
endif
|
||
|
|
||
|
clean-files += Module.symvers Module.markers modules modules.order
|
||
|
clean-files += $(CREL_CHECK) $(CONFIG_CHECK) $(COMPAT_CONFIG)
|