blob: 0266addfe74ed89151629d151b2432d59fe48d0d [file] [log] [blame]
# Maintainer: David Grayson <davidegrayson@gmail.com>
#
# You might need to run your shell as administrator for devcon to work.
_realname=devcon
pkgbase=mingw-w64-${_realname}-git
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}-git"
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=r233.8b17cf3
pkgrel=1
pkgdesc='Search for and manipulate devices (mingw-w64)'
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
url='https://github.com/Microsoft/Windows-driver-samples/tree/master/setup/devcon'
license=('custom')
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
"patch")
depends=()
options=('strip')
source=("wds::git+https://github.com/Microsoft/Windows-driver-samples"
"02-driverspecs.patch")
sha256sums=('SKIP'
'b67d69e0623c79e10346afe357178618a8341a2cff3ce1ada0ed284280760856')
pkgver() {
cd ${srcdir}/wds
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
prepare() {
cd "${srcdir}/wds/setup/devcon"
# dos2unix -q *.cpp *.h *.rc
# Include driverspecs.h to get __drv_allocatesMem and similar.
patch -p1 -i "${srcdir}/02-driverspecs.patch"
# SetupScanFileQueue expects its callback to be stdcall.
# patch -p1 -i "${srcdir}/03-stdcall-callback.patch"
# We don't want MinGW to expand wildcards; we need to be able to
# run commands like "devcon hwids *" to search for all devices.
echo "int _dowildcard = 0;" > wildcard.cpp
windmc msg.mc
}
build() {
cd "${srcdir}"
mkdir -p "build-${MINGW_CHOST}"
cd "build-${MINGW_CHOST}"
windres ../wds/setup/devcon/devcon.rc rc.so
g++ -municode -Wno-write-strings ${CFLAGS} ${LDFLAGS} \
-DWIN32_LEAN_AND_MEAN=1 -DUNICODE -D_UNICODE \
../wds/setup/devcon/*.cpp rc.so \
-lsetupapi -lole32 \
-o devcon.exe
}
package() {
cd "${srcdir}/wds"
install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
cd "${srcdir}/build-${MINGW_CHOST}"
mkdir "${pkgdir}${MINGW_PREFIX}/bin"
install -Dm755 devcon.exe "${pkgdir}${MINGW_PREFIX}/bin"
}