pentoo-overlay/net-wireless/proxmark3/proxmark3-9999.ebuild
2024-01-02 20:28:17 -05:00

190 lines
6.6 KiB
Bash

# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit udev toolchain-funcs
if [ "${PV}" = "9999" ]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/RfidResearchGroup/proxmark3.git"
RESTRICT="strip"
else
#snapshot
#HASH_COMMIT="1ac5211601b50b82b41737dce0c3a72d9e0374ac"
#SRC_URI="https://github.com/RfidResearchGroup/${PN}/archive/${HASH_COMMIT}.tar.gz -> ${P}.tar.gz"
#S=${WORKDIR}/${PN}-${HASH_COMMIT}
#or release
KEYWORDS="amd64"
SRC_URI="https://github.com/RfidResearchGroup/proxmark3/archive/v${PV}.tar.gz -> ${P}.tar.gz"
fi
DESCRIPTION="A general purpose RFID tool for Proxmark3 hardware"
HOMEPAGE="https://github.com/RfidResearchGroup/proxmark3"
LICENSE="GPL-3+"
SLOT="0"
STANDALONE="standalone-lf-em4100emul standalone-lf-em4100rswb standalone-lf-em4100rwc standalone-lf-hidbrute standalone-lf-hidfcbrute standalone-lf-icehid standalone-lf-nexid standalone-lf-proxbrute standalone-lf-samyrun standalone-lf-tharexde standalone-hf-14asniff standalone-hf-15sniff standalone-hf-aveful standalone-hf-bog standalone-hf-cardhopper standalone-hf-colin standalone-hf-craftbyte standalone-hf-iceclass standalone-hf-legic standalone-hf-mattyrun standalone-hf-mfcsim standalone-hf-msdsal standalone-hf-reblay standalone-hf-tcprst standalone-hf-tmudford standalone-hf-unisniff standalone-hf-young standalone-dankarmulti"
IUSE="+bluez deprecated +firmware +pm3rdv4 +qt ${STANDALONE}"
REQUIRED_USE="?? ( ${STANDALONE/+/} )
standalone-lf-hidfcbrute? ( pm3rdv4 )
standalone-lf-icehid? ( pm3rdv4 )
standalone-lf-nexid? ( pm3rdv4 )
standalone-lf-tharexde? ( pm3rdv4 )
standalone-hf-14asniff? ( pm3rdv4 )
standalone-hf-15sniff? ( pm3rdv4 )
standalone-hf-bog? ( pm3rdv4 )
standalone-hf-cardhopper? ( pm3rdv4 )
standalone-hf-colin? ( pm3rdv4 )
standalone-hf-iceclass? ( pm3rdv4 )
standalone-hf-mfcsim? ( pm3rdv4 )
standalone-hf-reblay? ( pm3rdv4 )
"
DEPEND="
app-arch/bzip2
app-arch/lz4:=
dev-libs/jansson:=
dev-libs/openssl:=
sys-libs/readline:=
bluez? ( net-wireless/bluez:= )
qt? ( dev-qt/qtcore:5
dev-qt/qtwidgets:5
dev-qt/qtgui:5 )
"
#this is basically just used for termcap
RDEPEND="${DEPEND}
sys-libs/ncurses:*[tinfo]
"
BDEPEND="firmware? ( sys-devel/gcc-arm-none-eabi:0 )"
QA_FLAGS_IGNORED="usr/share/proxmark3/firmware/bootrom.elf
usr/share/proxmark3/firmware/fullimage.elf"
src_prepare(){
default
#first we set platform
if use pm3rdv4; then
echo 'PLATFORM=PM3RDV4' > Makefile.platform
echo 'PLATFORM_EXTRAS=BTADDON' >> Makefile.platform
else
echo 'PLATFORM=PM3GENERIC' > Makefile.platform
fi
#then we set a standalone mode
if use standalone-lf-em4100emul; then
echo 'STANDALONE=LF_EM4100EMUL' >> Makefile.platform
elif use standalone-lf-em4100rswb; then
echo 'STANDALONE=LF_EM4100RSWB' >> Makefile.platform
elif use standalone-lf-em4100rwc; then
echo 'STANDALONE=LF_EM4100RWC' >> Makefile.platform
elif use standalone-lf-hidbrute; then
echo 'STANDALONE=LF_HIDBRUTE' >> Makefile.platform
elif use standalone-lf-hidfcbrute; then
echo 'STANDALONE=LF_HIDFCBRUTE' >> Makefile.platform
elif use standalone-lf-icehid; then
echo 'STANDALONE=LF_ICEHID' >> Makefile.platform
elif use standalone-lf-nexid; then
echo 'STANDALONE=LF_NEXID' >> Makefile.platform
elif use standalone-lf-proxbrute; then
echo 'STANDALONE=LF_PROXBRUTE' >> Makefile.platform
elif use standalone-lf-samyrun; then
echo 'STANDALONE=LF_SAMYRUN' >> Makefile.platform
elif use standalone-lf-tharexde; then
echo 'STANDALONE=LF_THAREXDE' >> Makefile.platform
elif use standalone-hf-14asniff; then
echo 'STANDALONE=HF_14ASNIFF' >> Makefile.platform
elif use standalone-hf-15sniff; then
echo 'STANDALONE=HF_15SNIFF' >> Makefile.platform
elif use standalone-hf-aveful; then
echo 'STANDALONE=HF_AVEFUL' >> Makefile.platform
elif use standalone-hf-bog; then
echo 'STANDALONE=HF_BOG' >> Makefile.platform
elif use standalone-hf-cardhopper; then
echo 'STANDALONE=HF_CARDHOPPER' >> Makefile.platform
elif use standalone-hf-colin; then
echo 'STANDALONE=HF_COLIN' >> Makefile.platform
elif use standalone-hf-craftbyte; then
echo 'STANDALONE=HF_CRAFTBYTE' >> Makefile.platform
elif use standalone-hf-iceclass; then
echo 'STANDALONE=HF_ICECLASS' >> Makefile.platform
elif use standalone-hf-legic; then
echo 'STANDALONE=HF_LEGIC' >> Makefile.platform
elif use standalone-hf-mattyrun; then
echo 'STANDALONE=HF_MATTYRUN' >> Makefile.platform
elif use standalone-hf-msdsal; then
echo 'STANDALONE=HF_MSDSAL' >> Makefile.platform
elif use standalone-hf-reblay; then
echo 'STANDALONE=HF_REBLAY' >> Makefile.platform
elif use standalone-hf-tcprst; then
echo 'STANDALONE=HF_TCPRST' >> Makefile.platform
elif use standalone-hf-tmudford; then
echo 'STANDALONE=HF_TMUDFORD' >> Makefile.platform
elif use standalone-hf-unisniff; then
echo 'STANDALONE=HF_UNISNIFF' >> Makefile.platform
elif use standalone-hf-young; then
echo 'STANDALONE=HF_YOUNG' >> Makefile.platform
elif use standalone-dankarmulti; then
echo 'STANDALONE=DANKARMULTI' >> Makefile.platform
else
echo 'STANDALONE=' >> Makefile.platform
fi
}
src_compile(){
export PREFIX=/usr
#verbose
export V=1
#common flags
EMAKE_COMMON=CC="$(tc-getCC)" DEFCFLAGS="${CFLAGS}" MYCFLAGS="${CFLAGS}" MYCXXFLAGS="${CXXFLAGS}" MYLDFLAGS="${LDFLAGS}"
use qt || export SKIPQT=1
use bluez || export SKIPBT=1
if use firmware; then
emake ${EMAKE_COMMON} client
emake ${EMAKE_COMMON} all
elif use deprecated; then
emake ${EMAKE_COMMON} client
emake ${EMAKE_COMMON} mfkey nonce2key
else
emake ${EMAKE_COMMON} client
fi
}
src_install(){
export PREFIX=/usr
export DESTDIR="${ED}"
export UDEV_PREFIX="$(get_udevdir)/rules.d"
export INSTALLDOCSRELPATH="/share/doc/${PF}"
if use firmware; then
emake INSTALLDOCSRELPATH="/share/doc/${PF}" install
elif use deprecated; then
emake INSTALLDOCSRELPATH="/share/doc/${PF}" client/install mfkey/install nonce2key/install common/install
else
emake INSTALLDOCSRELPATH="/share/doc/${PF}" client/install common/install
fi
}
src_test() {
if use firmware; then
./pm3test.sh
else
./pm3test.sh client
fi
}
pkg_postinst() {
udev_reload
if use firmware; then
if use pm3rdv4; then
ewarn "Please note, all firmware and recovery files are intended for the Proxmark3 RDV4"
ewarn "including support for the optional blueshark accessory."
ewarn "If this is not what you intended please unset the pm3rdv4 use flag for generic firmware"
else
ewarn "Please note, all firmware and recovery files are built for a generic target."
ewarn "If you have a Proxmark3 RDV4 you should set the pm3rdv4 use flag for an improved firmware"
fi
fi
}
pkg_postrm() {
udev_reload
}