summaryrefslogtreecommitdiff
blob: 4735046516cd78776dc5218f537cc4c7cc927941 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-wireless/linux-wlan-ng-modules/linux-wlan-ng-modules-0.2.3.ebuild,v 1.3 2006/03/25 08:16:05 betelgeuse Exp $

inherit eutils linux-mod

MY_PN=${PN/-modules/}
MY_P=${MY_PN}-${PV}
S=${WORKDIR}/${MY_P}

DESCRIPTION="Kernel modules for Prism2/2.5/3 based 802.11b wireless LAN products"
HOMEPAGE="http://linux-wlan.org"
SRC_URI="ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/${MY_P}.tar.bz2"

LICENSE="|| ( GPL-2 MPL-1.1 )"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~x86"

IUSE="debug pci pcmcia plx usb"

BUILD_TARGETS="default"
BUILD_PARAMS="WLAN_SRC=${S}/src"

show_deprecated_message() {
	if use pci || use plx || use pcmcia; then
		einfo ""
		einfo "You really should try other alternatives for prism support."
		einfo "For example the hostap-driver or orinoco drivers should work"
		einfo "with your wireless card. Support for pci, plx and pcmcia drivers"
		einfo "will most likely be removed in the near future. If the alternatives"
		einfo "don't work for you, please report this to betelgeuse@gentoo.org."
		einfo ""
	fi
}

pkg_setup() {
	# We have to put this to the global scope inside the function or it will be
	# reset between functions because the ebuild is sourced many times.

	MODULE_NAMES="p80211(net/wireless:${S}/src/p80211)"

	if use pci; then
		MODULE_NAMES="${MODULE_NAMES} prism2_pci(net/wireless:${S}/src/prism2/driver)"
	fi

	if use plx; then
		MODULE_NAMES="${MODULE_NAMES} prism2_plx(net/wireless:${S}/src/prism2/driver)"
	fi

	if use pcmcia; then
		MODULE_NAMES="${MODULE_NAMES} prism2_cs(net/wireless:${S}/src/prism2/driver)"
	fi

	if use usb; then
		MODULE_NAMES="${MODULE_NAMES} prism2_usb(net/wireless:${S}/src/prism2/driver)"
	fi

	show_deprecated_message
	linux-mod_pkg_setup
}

config_by_usevar() {
	local config=${3}
	[[ -z ${config} ]] && config=${S}/default.config

	if use ${2}; then
		echo "${1}=y" >> ${config}
	else
		echo "${1}=n" >> ${config}
	fi
}

src_unpack() {
	local config=${S}/default.config

	unpack ${A}

	cd ${S}
	epatch ${FILESDIR}/${MY_P}-module_param.patch
	epatch ${FILESDIR}/${MY_P}-kernel-2.6.16.patch

	cp ${S}/config.in ${config}

	echo "TARGET_ROOT_ON_HOST=${D}" >> ${config}
	echo "LINUX_SRC=${KERNEL_DIR}"  >> ${config}
	echo "FIRMWARE_DIR=/lib/firmware/" >> ${config}

	if use pcmcia && [[ -n "${PCMCIA_VERSION}" ]]; then
		echo "PCMCIA_SRC=${PCMCIA_SOURCE_DIR}" >> ${config}
	fi

	config_by_usevar PRISM2_USB usb
	config_by_usevar PRISM2_PCI pci
	config_by_usevar PRISM2_PLX plx
	config_by_usevar PRISM2_PCMCIA pcmcia
	config_by_usevar WLAN_DEBUG debug

	if kernel_is gt 2 4; then
		echo "KERN_25=y" >> ${config}
	fi

	sed -i -e "s:dep modules:modules:" ${S}/src/p80211/Makefile
}

src_compile() {
	set_arch_to_kernel
	emake default_config || die "emake default_config failed"
	set_arch_to_portage

	cd ${S}/src/mkmeta
	emake || die "emake mkmeta failed"

	linux-mod_src_compile
}

pkg_postinst() {
	linux-mod_pkg_postinst
	show_deprecated_message
}