diff options
Diffstat (limited to 'net/wifi-firmware-kmod')
-rw-r--r-- | net/wifi-firmware-kmod/Makefile | 43 | ||||
-rw-r--r-- | net/wifi-firmware-kmod/Makefile.inc | 96 | ||||
-rw-r--r-- | net/wifi-firmware-kmod/files/Makefile.inc.in | 26 | ||||
-rw-r--r-- | net/wifi-firmware-kmod/files/WHENCE.awk.in | 24 |
4 files changed, 154 insertions, 35 deletions
diff --git a/net/wifi-firmware-kmod/Makefile b/net/wifi-firmware-kmod/Makefile index 53a4ff214678..22249ab82c6f 100644 --- a/net/wifi-firmware-kmod/Makefile +++ b/net/wifi-firmware-kmod/Makefile @@ -1,5 +1,5 @@ PORTNAME= wifi-firmware-kmod -PORTVERSION= 20230508 +PORTVERSION= 20240513 CATEGORIES= net MAINTAINER= bz@FreeBSD.org @@ -7,11 +7,42 @@ COMMENT= Firmware modules for WiFi NIC drivers WWW= https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/ RUN_DEPENDS= \ - wifi-firmware-ath10k-kmod>0:net/wifi-firmware-ath10k-kmod \ - wifi-firmware-ath11k-kmod>0:net/wifi-firmware-ath11k-kmod \ - wifi-firmware-mt76-kmod>0:net/wifi-firmware-mt76-kmod \ - wifi-firmware-rtw88-kmod>0:net/wifi-firmware-rtw88-kmod \ - wifi-firmware-rtw89-kmod>0:net/wifi-firmware-rtw89-kmod + wifi-firmware-ath10k-kmod-qca988x_hw20>0:net/wifi-firmware-ath10k-kmod@qca988x_hw20 \ + wifi-firmware-ath10k-kmod-qca6174_hw21>0:net/wifi-firmware-ath10k-kmod@qca6174_hw21 \ + wifi-firmware-ath10k-kmod-qca6174_hw30>0:net/wifi-firmware-ath10k-kmod@qca6174_hw30 \ + wifi-firmware-ath10k-kmod-qca99x0_hw20>0:net/wifi-firmware-ath10k-kmod@qca99x0_hw20 \ + wifi-firmware-ath10k-kmod-qca9377_hw10>0:net/wifi-firmware-ath10k-kmod@qca9377_hw10 \ + wifi-firmware-ath10k-kmod-qca9984_hw10>0:net/wifi-firmware-ath10k-kmod@qca9984_hw10 \ + wifi-firmware-ath10k-kmod-qca9887_hw10>0:net/wifi-firmware-ath10k-kmod@qca9887_hw10 \ + wifi-firmware-ath10k-kmod-qca9888_hw20>0:net/wifi-firmware-ath10k-kmod@qca9888_hw20 \ + \ + wifi-firmware-ath11k-kmod-qca6390_hw20>0:net/wifi-firmware-ath11k-kmod@qca6390_hw20 \ + wifi-firmware-ath11k-kmod-qcn9074_hw10>0:net/wifi-firmware-ath11k-kmod@qcn9074_hw10 \ + wifi-firmware-ath11k-kmod-wcn6855_hw20>0:net/wifi-firmware-ath11k-kmod@wcn6855_hw20 \ + \ + wifi-firmware-ath12k-kmod-wcn7850_hw20>0:net/wifi-firmware-ath12k-kmod@wcn7850_hw20 \ + \ + wifi-firmware-iwlwifi-kmod-7000>0:net/wifi-firmware-iwlwifi-kmod@7000 \ + wifi-firmware-iwlwifi-kmod-8000>0:net/wifi-firmware-iwlwifi-kmod@8000 \ + wifi-firmware-iwlwifi-kmod-9000>0:net/wifi-firmware-iwlwifi-kmod@9000 \ + wifi-firmware-iwlwifi-kmod-22000>0:net/wifi-firmware-iwlwifi-kmod@22000 \ + wifi-firmware-iwlwifi-kmod-ax210>0:net/wifi-firmware-iwlwifi-kmod@ax210 \ + wifi-firmware-iwlwifi-kmod-bz>0:net/wifi-firmware-iwlwifi-kmod@bz \ + \ + wifi-firmware-mt76-kmod-mt7915>0:net/wifi-firmware-mt76-kmod@mt7915 \ + wifi-firmware-mt76-kmod-mt792x>0:net/wifi-firmware-mt76-kmod@mt792x \ + wifi-firmware-mt76-kmod-mt7996>0:net/wifi-firmware-mt76-kmod@mt7996 \ + \ + wifi-firmware-rtw88-kmod-rtw8723d>0:net/wifi-firmware-rtw88-kmod@rtw8723d \ + wifi-firmware-rtw88-kmod-rtw8821c>0:net/wifi-firmware-rtw88-kmod@rtw8821c \ + wifi-firmware-rtw88-kmod-rtw8822b>0:net/wifi-firmware-rtw88-kmod@rtw8822b \ + wifi-firmware-rtw88-kmod-rtw8822c>0:net/wifi-firmware-rtw88-kmod@rtw8822c \ + \ + wifi-firmware-rtw89-kmod-rtw8851b>0:net/wifi-firmware-rtw89-kmod@rtw8851b \ + wifi-firmware-rtw89-kmod-rtw8852a>0:net/wifi-firmware-rtw89-kmod@rtw8852a \ + wifi-firmware-rtw89-kmod-rtw8852b>0:net/wifi-firmware-rtw89-kmod@rtw8852b \ + wifi-firmware-rtw89-kmod-rtw8852c>0:net/wifi-firmware-rtw89-kmod@rtw8852c \ + wifi-firmware-rtw89-kmod-rtw8922a>0:net/wifi-firmware-rtw89-kmod@rtw8922a USES= metaport diff --git a/net/wifi-firmware-kmod/Makefile.inc b/net/wifi-firmware-kmod/Makefile.inc index 8177bd045e51..e6d57564f4f2 100644 --- a/net/wifi-firmware-kmod/Makefile.inc +++ b/net/wifi-firmware-kmod/Makefile.inc @@ -2,39 +2,56 @@ PORTNAME= wifi-firmware-${FWDRV}-kmod PORTVERSION= ${FWDRV_VERSION} CATEGORIES= net MASTER_SITES= https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/ -MASTER_SITES+= LOCAL/bz:mkbuild MAINTAINER= bz@FreeBSD.org -COMMENT= Firmware modules for ${FWDRV} ${FLAVOR} WiFi NIC +COMMENT= Firmware modules for the ${FWDRV} (${FLAVOR}) WiFi NIC driver WWW?= https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/${FWSUBDIR} FWDRV_VERSION?= 0 FWDRV?= base LICENSE_NAME?= firmware license (${FWDRV}) -LICENSE_FILE?= ${WRKSRC}/${LICENSE} +LICENSE_FILE?= ${WRKSRC}/${FLAVOR}/${LICENSE} LICENSE_PERMS?= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept EXTRACT_SUFX= -DISTURL_SUFFIX= ?h=${PORTVERSION} +DISTURL_SUFFIX?= ?h=${PORTVERSION} # Sanity checks .if !defined(FWDRV) || !defined(FWSUBDIR) || !defined(FWSUBS) || \ !defined(FWDRV_VERSION) || !defined(LICENSE) || \ - !defined(DISTFILES_fw) || !defined(DISTFILES_lic) + !defined(DISTFILES_${FWDRV}) || !defined(DISTFILES_${FWDRV}_lic) || \ + !defined(BASEDIR) || !defined(WHENCE_REGEX) IGNORE= is a metaport or misconfigured child port; there is nothing to build .endif -# Split things up in case we decide to make this flavors once we add support for more drivers. +FILESDIR= ${BASEDIR}/files + +# Split things into the full package (driver name) and more specific flavors. +FLAVORS= ${FWDRV} \ + ${FWSUBS} + +# What a kludge.... thanks https://docs.freebsd.org/en/books/porters-handbook/flavors/ ! +FLAVOR?= ${FLAVORS:[1]} + +# Generate the conflicts list. +.for f in ${FWSUBS} +${FWDRV}_CONFLICTS_INSTALL+= ${PORTNAME}-${f} +${f}_PKGNAMESUFFIX= -${f} +${f}_CONFLICTS_INSTALL= ${PORTNAME} +.endfor + +DISTFILES_FLAVOR:= ${DISTFILES_${FLAVOR}} +DISTFILES_FLAVOR_lic:= ${DISTFILES_${FLAVOR}_lic} + DISTFILES= \ - ${DISTFILES_fw} \ - ${DISTFILES_lic} \ + ${DISTFILES_FLAVOR} \ + ${DISTFILES_FLAVOR_lic} \ ${LICENSE}${DISTURL_SUFFIX} \ - WHENCE${DISTURL_SUFFIX} \ - modules_${FWDRV}fw_${PORTVERSION}.tar.gz:mkbuild + WHENCE${DISTURL_SUFFIX} DIST_SUBDIR= linux-firmware/${FWDRV}fw -EXTRACT_ONLY= modules_${FWDRV}fw_${PORTVERSION}.tar.gz +EXTRACT_ONLY= ONLY_FOR_ARCHS= aarch64 amd64 i386 ONLY_FOR_ARCHS_REASON= LinuxKPI driver only available for these architectures @@ -42,41 +59,62 @@ ONLY_FOR_ARCHS_REASON= LinuxKPI driver only available for these architectures USES= kmod uidfix post-extract: - @${MV} ${WRKDIR}/${FWDRV}fw ${WRKSRC} - @${CP} ${DISTDIR}/${DIST_SUBDIR}/${LICENSE}${DISTURL_SUFFIX} ${WRKSRC}/${LICENSE} - @${CP} ${DISTDIR}/${DIST_SUBDIR}/WHENCE${DISTURL_SUFFIX} ${WRKSRC}/WHENCE.in - @${AWK} -f ${WRKSRC}/WHENCE.awk ${WRKSRC}/WHENCE.in > ${WRKSRC}/WHENCE - @${MKDIR} ${WRKSRC}/fw -.for _f in ${DISTFILES_fw} - @${MKDIR} ${WRKSRC}/fw/${_f:H} - ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@} + @${MKDIR} ${WRKSRC}/${FLAVOR}/fw + # Deal with supplementary licenses files. + @${CP} ${DISTDIR}/${DIST_SUBDIR}/${LICENSE}${DISTURL_SUFFIX} ${WRKSRC}/${FLAVOR}/${LICENSE} + @${CP} ${DISTDIR}/${DIST_SUBDIR}/WHENCE${DISTURL_SUFFIX} ${WRKSRC}/${FLAVOR}/WHENCE.in + @${SED} -e "s@%%XXX%%@${WHENCE_REGEX:Q}@g" ${FILESDIR}/WHENCE.awk.in > ${WRKSRC}/${FLAVOR}/WHENCE.awk + @${AWK} -f ${WRKSRC}/${FLAVOR}/WHENCE.awk ${WRKSRC}/${FLAVOR}/WHENCE.in > ${WRKSRC}/${FLAVOR}/WHENCE + # Prepare toplevel Makefile and Makefile.inc. + @${ECHO_CMD} "SUBDIR=" > ${WRKSRC}/${FLAVOR}/Makefile + @${SED} -e "s@%%FWDRV%%@${FWDRV}@g" \ + -e "s@%%FWSUBDIR%%@${FWSUBDIR}@g" \ + ${FILESDIR}/Makefile.inc.in > ${WRKSRC}/${FLAVOR}/Makefile.inc +.for _f in ${DISTFILES_FLAVOR} + # We remove '.' and '-' as well as '/' as they don't work well in loader.conf. + @${MKDIR} ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g} + # Create subdir (firmware file) Makefile. + @${ECHO_CMD} "FWNAME=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:T}" > ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile +.if (${_f:H:C,^[^/]*,,1:C,^/,,} != "") + @${ECHO_CMD} "FWSUBSUBDIR=${_f:H:C,^[^/]*,,1:C,^/,,}" >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile +.endif + # XXX-BZ recover firmware versions later again from somewhere? Pain to keep track though, else use 0 or ${FWDRV_VERSION}? + @${ECHO_CMD} "VERSION=0" >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile + @${ECHO_CMD} '.include <bsd.kmod.mk>' >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile + # Add subdir to top-level Makefile. + @${ECHO_CMD} "SUBDIR+=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}" >> ${WRKSRC}/${FLAVOR}/Makefile + # Create firmware source directory and copy in distfile. + @${MKDIR} ${WRKSRC}/${FLAVOR}/fw/${_f:H} + ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@} .endfor -.for _f in ${DISTFILES_lic} - ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} + @${ECHO_CMD} '.include <bsd.subdir.mk>' >> ${WRKSRC}/${FLAVOR}/Makefile + # Copy in additional licenses files. +.for _f in ${DISTFILES_FLAVOR_lic} + ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} .endfor # Internal hack we should probably upstream. # Add WHENCE file next to license where it makes sense despite not being a license. _USES_stage+= 881:post-install-license post-install-license: - ${INSTALL_DATA} ${WRKSRC}/WHENCE ${STAGEDIR}${_LICENSE_DIR}/ -.for _f in ${DISTFILES_lic} - ${INSTALL_DATA} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} \ + ${INSTALL_DATA} ${WRKSRC}/${FLAVOR}/WHENCE ${STAGEDIR}${_LICENSE_DIR}/ +.for _f in ${DISTFILES_FLAVOR_lic} + ${INSTALL_DATA} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} \ ${STAGEDIR}${_LICENSE_DIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} .endfor .include <bsd.port.pre.mk> -MAKE_ENV+= FWSRCDIR=${WRKSRC}/fw/${FWSUBDIR} +MAKE_ENV+= FWSRCDIR=${WRKSRC}/${FLAVOR}/fw MAKE_FLAGS+= -C ${WRKSRC}/${FLAVOR} -# Add firmware files. -.for _f in ${DISTFILES_fw} +# Add firmware files to plist. +.for _f in ${DISTFILES_FLAVOR} PLIST_FILES+= ${KMODDIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}.ko .endfor -# Record extra license files. +# Record extra licenses files in plist. PLIST_FILES+= ${_LICENSE_DIR}/WHENCE -.for _f in ${DISTFILES_lic} +.for _f in ${DISTFILES_FLAVOR_lic} PLIST_FILES+= ${_LICENSE_DIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} .endfor diff --git a/net/wifi-firmware-kmod/files/Makefile.inc.in b/net/wifi-firmware-kmod/files/Makefile.inc.in new file mode 100644 index 000000000000..4fd8a079583c --- /dev/null +++ b/net/wifi-firmware-kmod/files/Makefile.inc.in @@ -0,0 +1,26 @@ +# $FreeBSD$ + +# We remove '.' and '-' as well as '/' as they don't work well in laoder.conf. +# If (counter part) set, prefix name part with '_' separator. +_KOFWSUBDIR= ${FWSUBSUBDIR:S,.,_,g:S,-,_,g:S,/,_,g} +KOFWSUBDIR= ${"${_KOFWSUBDIR}" != "":?_${_KOFWSUBDIR}:} + +_FWNAME= ${FWNAME:S,.,_,g:S,-,_,g} +KOFWNAME= ${"%%FWSUBDIR%%" != "":?_${_FWNAME}:${_FWNAME}} + +_NAME?= %%FWSUBDIR%%${KOFWSUBDIR}${KOFWNAME} + +IMG= ${_NAME} +KMOD= ${_NAME} + +CLEANFILES+= ${IMG} + +FIRMWS= ${IMG}:${IMG}:${VERSION} + +#FIRMWARE_LICENSE= + +# If we build from ports let us overwrite this. +FWSRCDIR?= ${SRCTOP}/sys/contrib/dev/%%FWDRV%%fw + +${IMG}: ${FWSRCDIR}/%%FWSUBDIR%%/${FWSUBSUBDIR}/${FWNAME} + cp ${.ALLSRC} ${.TARGET} diff --git a/net/wifi-firmware-kmod/files/WHENCE.awk.in b/net/wifi-firmware-kmod/files/WHENCE.awk.in new file mode 100644 index 000000000000..38a7c27a97a2 --- /dev/null +++ b/net/wifi-firmware-kmod/files/WHENCE.awk.in @@ -0,0 +1,24 @@ +BEGIN { + start=1; + block=0; +} +{ + if (start == 1) { + print; + if (/^----/) { + start=0; + } + } + if (block == 0) { + if (/^Driver: %%XXX%%/) { + block=1; + printf "\n"; + print; + } + } else { + print; + if (/^----/) { + block=0; + } + } +} |