summaryrefslogtreecommitdiff
blob: 9a1a2099a687ab5df2e7988dba6b8accc1c756f7 (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
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/flashrom/flashrom-0.9.3.ebuild,v 1.1 2010/12/03 17:25:28 idl0r Exp $

EAPI="3"

inherit toolchain-funcs

DESCRIPTION="Utility for reading, writing, erasing and verifying flash ROM chips"
HOMEPAGE="http://flashrom.org"
SRC_URI="http://qa.coreboot.org/releases/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"

IUSE="atahpt bitbang_spi buspirate_spi dediprog drkaiser
dummy ft2232_spi gfxnvidia +internal nic3com nicintel_spi nicnatsemi nicrealtek rayer_spi
satasii serprog +wiki"

COMMON_DEPEND="atahpt? ( sys-apps/pciutils )
	dediprog? ( virtual/libusb:0 )
	drkaiser? ( sys-apps/pciutils )
	ft2232_spi? ( dev-embedded/libftdi )
	gfxnvidia? ( sys-apps/pciutils )
	internal? ( sys-apps/pciutils )
	nic3com? ( sys-apps/pciutils )
	nicintel_spi? ( sys-apps/pciutils )
	nicnatsemi? ( sys-apps/pciutils )
	nicrealtek? ( sys-apps/pciutils )
	rayer_spi? ( sys-apps/pciutils )
	satasii? ( sys-apps/pciutils )"
RDEPEND="${COMMON_DEPEND}
	internal? ( sys-apps/dmidecode )"
DEPEND="${COMMON_DEPEND}
	sys-apps/diffutils"

_flashrom_enable() {
	local flag=${1}
	local macro=${2}

	if use $flag; then
		args="${args} ${macro}=yes"
	else
		args="${args} ${macro}=no"
	fi
}

src_compile() {
	local progs=0
	local args=""

	# Programmer
	_flashrom_enable atahpt CONFIG_ATAHPT
	_flashrom_enable bitbang_spi CONFIG_BITBANG_SPI
	_flashrom_enable buspirate_spi CONFIG_BUSPIRATE_SPI
	_flashrom_enable dediprog CONFIG_DEDIPROG
	_flashrom_enable drkaiser CONFIG_DRKAISER
	_flashrom_enable ft2232_spi CONFIG_FT2232_SPI
	_flashrom_enable gfxnvidia CONFIG_GFXNVIDIA
	_flashrom_enable nic3com CONFIG_NIC3COM
	_flashrom_enable nicintel_spi CONFIG_NICINTEL_SPI
	_flashrom_enable nicnatsemi CONFIG_NICNATSEMI
	_flashrom_enable nicrealtek CONFIG_NICREALTEK
	_flashrom_enable rayer_spi CONFIG_RAYER_SPI
	_flashrom_enable satasii CONFIG_SATASII
	_flashrom_enable serprog CONFIG_SERPROG

	_flashrom_enable internal CONFIG_INTERNAL
	_flashrom_enable dummy CONFIG_DUMMY
	_flashrom_enable wiki CONFIG_PRINT_WIKI

	# You have to specify at least one programmer, and if you specify more than
	# one programmer you have to include either dummy or internal in the list.
	for prog in $IUSE; do
		prog=$(echo $prog | sed 's:^[+-]::')

		[ "${prog}" = "internal" ] || [ "${prog}" = "dummy" ] || [ "${prog}" = "wiki" ] && continue

		use $prog && progs=$((progs + 1))
	done
	if [ $progs -ne 1 ]; then
		if ! use internal && ! use dummy; then
			ewarn "You have to specify at least one programmer,"
			ewarn "and if you specify more than one programmer you have to enable"
			ewarn "either dummy or internal as well"
			ewarn "'internal' will be the default now"
			sleep 3
			args="${args} CONFIG_INTERNAL=yes"
		fi
	fi

	emake CC="$(tc-getCC)" ${args} || die
}

src_install() {
	dosbin flashrom || die
	doman flashrom.8
	dodoc ChangeLog README
}