summaryrefslogtreecommitdiff
blob: f4f90118928ef4b7a5fcd6f25c9722eced51e23b (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
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI="4"

inherit eutils toolchain-funcs

DESCRIPTION="Simple commands to access hardware device registers"
HOMEPAGE="https://code.google.com/p/iotools/"
SRC_URI="https://iotools.googlecode.com/files/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="static make-symlinks"

src_prepare() {
	epatch "${FILESDIR}"/${P}-cpuid-pic.patch
	epatch "${FILESDIR}"/${P}-ldflags.patch
	sed -i 's:-Werror::' Makefile || die
}

src_compile() {
	emake \
		CC="$(tc-getCC)" \
		STATIC=$(usex static 1 0) \
		IOTOOLS_DEBUG="${CFLAGS}"
}

src_install() {
	dosbin iotools

	# Note: This is done manually because invoking the iotools binary
	# when cross-compiling will likely fail.
	local known_cmds="and btr bts busy_loop cmos_read cmos_write cpu_list cpuid io_read16 io_read32 io_read8 io_write16 io_write32 io_write8 mmio_dump mmio_read16 mmio_read32 mmio_read64 mmio_read8 mmio_write16 mmio_write32 mmio_write64 mmio_write8 not or pci_list pci_read16 pci_read32 pci_read8 pci_write16 pci_write32 pci_write8 rdmsr rdtsc runon shl shr smbus_quick smbus_read16 smbus_read8 smbus_readblock smbus_receive_byte smbus_send_byte smbus_write16 smbus_write8 smbus_writeblock wrmsr xor"
	if ! tc-is-cross-compiler ; then
		local check_cmds=$(echo $(./iotools --list-cmds 2>/dev/null | grep '^  ' | LC_ALL=C sort))
		if [[ ${known_cmds} != "${check_cmds:-${known_cmds}}" ]] ; then
			eerror "known_cmds = ${known_cmds}"
			eerror "check_cmds = ${check_cmds}"
			die "need to update known_cmds cache in the ebuild"
		fi
	fi

	if use make-symlinks ; then
		local cmd
		for cmd in ${known_cmds} ; do
			dosym iotools /usr/sbin/${cmd}
		done
	fi
}