I am getting "WARNING: kmod-mediatek_hnat is not available in the kernel config - generating empty package" for my custom kmod, that's make the kmod compilation is empty for the kmod package
Makefile :
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=mediatek_hnat
PKG_RELEASE:=3
PKG_LICENSE:=GPL-2.0
HOST_BUILD_DIR:=$(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
define KernelPackage/mediatek_hnat
SUBMENU:=Network Devices
TITLE:=MediaTek MT762x HW NAT driver
DEPENDS:=@(TARGET_mediatek_mt7622||TARGET_mediatek_mt7623) +kmod-nf-flow
KCONFIG:= \
CONFIG_BRIDGE_NETFILTER=y \
CONFIG_NET_MEDIATEK_HNAT \
CONFIG_NETFILTER_FAMILY_BRIDGE=y \
CONFIG_NET_MEDIATEK_SOC=y \
CONFIG_NF_CONNTRACK=y \
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_IP_NF_NAT=y \
CONFIG_IP_NF_TARGET_MASQUERADE=y \
CONFIG_NETFILTER_INGRESS=y \
CONFIG_NF_FLOW_TABLE \
CONFIG_NF_FLOW_TABLE_HW
FILES:= \
$(PKG_BUILD_DIR)/mtk_hnat/mtkhnat.ko
AUTOLOAD:=$(call AutoLoad,55,mtkhnat)
endef
define KernelPackage/mediatek_hnat/description
MediaTek MT762x HW NAT driver
endef
define KernelPackage/mediatek_hnat/config
source "$(SOURCE)/src/Kconfig"
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
NOSTDINC_FLAGS := \
$(KERNEL_NOSTDINC_FLAGS) \
-I$(PKG_BUILD_DIR) \
-I$(HOST_BUILD_DIR)/include -DCONFIG_NF_FLOW_TABLE -DCONFIG_NF_FLOW_TABLE_HW
MAKE_OPTS:= \
$(KERNEL_MAKE_FLAGS) \
M="$(PKG_BUILD_DIR)"
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" \
$(MAKE_OPTS) \
NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
modules
endef
define KernelPackage/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/lib/modules/$(LINUX_VERSION)
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mtk_hnat/mtkhnat.ko $(1)/lib/modules/$(LINUX_VERSION)
endef
$(eval $(call KernelPackage,mediatek_hnat))
Errors :
make[2]: Entering directory '/home/username/works/AX6S/package/mtk/mediatek_hnat'
WARNING: kmod-mediatek_hnat is not available in the kernel config - generating empty package
touch /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.prepared_d9d7d7507b52c6e5fb73ac097a70f946_6664517399ebbbc92a37c5bb081b5c53_check
mkdir -p /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat
cp -fpR ./src/* /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/
touch /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.prepared_d9d7d7507b52c6e5fb73ac097a70f946_6664517399ebbbc92a37c5bb081b5c53
rm -f /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.configured_*
rm -f /home/username/works/AX6S/staging_dir/target-aarch64_cortex-a53_musl/stamp/.mediatek_hnat_installed
(cd /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/./; if [ -x ./configure ]; then find /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ -name config.guess | xargs -r chmod u+w; find /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ -name config.guess | xargs -r -n1 cp --remove-destination /home/username/works/AX6S/scripts/config.guess; find /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ -name config.sub | xargs -r chmod u+w; find /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ -name config.sub | xargs -r -n1 cp --remove-destination /home/username/works/AX6S/scripts/config.sub; AR="aarch64-openwrt-linux-musl-gcc-ar" AS="ccache_cc -c -march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize -march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -ffile-prefix-map=/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/= -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD=aarch64-openwrt-linux-musl-ld NM="aarch64-openwrt-linux-musl-gcc-nm" CC="ccache_cc" GCC="ccache_cc" CXX="ccache_cxx" RANLIB="aarch64-openwrt-linux-musl-gcc-ranlib" STRIP=aarch64-openwrt-linux-musl-strip OBJCOPY=aarch64-openwrt-linux-musl-objcopy OBJDUMP=aarch64-openwrt-linux-musl-objdump SIZE=aarch64-openwrt-linux-musl-size CFLAGS="-march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize -march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -ffile-prefix-map=/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/= -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro " CXXFLAGS="-march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize -march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -ffile-prefix-map=/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/= -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro " CPPFLAGS="-I/home/username/works/AX6S/staging_dir/toolchain-aarch64_cortex-a53_gcc-11.2.0_musl/usr/include -I/home/username/works/AX6S/staging_dir/toolchain-aarch64_cortex-a53_gcc-11.2.0_musl/include/fortify -I/home/username/works/AX6S/staging_dir/toolchain-aarch64_cortex-a53_gcc-11.2.0_musl/include " LDFLAGS="-L/home/username/works/AX6S/staging_dir/toolchain-aarch64_cortex-a53_gcc-11.2.0_musl/usr/lib -L/home/username/works/AX6S/staging_dir/toolchain-aarch64_cortex-a53_gcc-11.2.0_musl/lib -znow -zrelro " ./configure --target=aarch64-openwrt-linux --host=aarch64-openwrt-linux --build=x86_64-pc-linux-gnu --program-prefix="" --program-suffix="" --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls ; fi; )
touch /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.configured_68b329da9893e34099c7d8ad5cb9c940
rm -f /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622//.built
touch /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622//.built_check
make -C "/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-5.10.156" KCFLAGS="-ffile-prefix-map=/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl=target-aarch64_cortex-a53_musl -march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize -march=armv8-a+crypto -mtune=cortex-a53 -O3 -funsafe-math-optimizations -ftree-vectorize" HOSTCFLAGS="-O2 -I/home/username/works/AX6S/staging_dir/host/include -I/home/username/works/AX6S/staging_dir/hostpkg/include -I/home/username/works/AX6S/staging_dir/target-aarch64_cortex-a53_musl/host/include -Wall -Wmissing-prototypes -Wstrict-prototypes" CROSS_COMPILE="aarch64-openwrt-linux-musl-" ARCH="arm64" KBUILD_HAVE_NLS=no KBUILD_BUILD_USER="username" KBUILD_BUILD_HOST="siliwangi.io" KBUILD_BUILD_TIMESTAMP="Thu Dec 1 13:53:20 2022" KBUILD_BUILD_VERSION="0" HOST_LOADLIBES="-L/home/username/works/AX6S/staging_dir/host/lib" KBUILD_HOSTLDLIBS="-L/home/username/works/AX6S/staging_dir/host/lib" CONFIG_SHELL="bash" V='' cmd_syscalls= KBUILD_EXTRA_SYMBOLS="/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/symvers/gpio-button-hotplug.symvers" KERNELRELEASE=5.10.156 M="/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat" NOSTDINC_FLAGS="-nostdinc -isystem /home/username/works/AX6S/staging_dir/toolchain-aarch64_cortex-a53_gcc-11.2.0_musl/lib/gcc/aarch64-openwrt-linux-musl/11.2.0/include -I/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat -I/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-5.10.156/include -DCONFIG_NF_FLOW_TABLE -DCONFIG_NF_FLOW_TABLE_HW" modules
make[3]: Entering directory '/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-5.10.156'
CC [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/mtk_hnat/hnat.o
CC [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/mtk_hnat/hnat_nf_hook.o
CC [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/mtk_hnat/hnat_debugfs.o
CC [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/mtk_hnat/hnat_mcast.o
LD [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/mtk_hnat/mtkhnat.o
MODPOST /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/Module.symvers
CC [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/mtk_hnat/mtkhnat.mod.o
LD [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/mtk_hnat/mtkhnat.ko
make[3]: Leaving directory '/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-5.10.156'
for subdir in .; do realdir=$(readlink -f /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat); grep -F /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/$subdir/Module.symvers >> /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/Module.symvers.tmp; [ "/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat" = "$realdir" ] || grep -F $realdir /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/$subdir/Module.symvers >> /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/Module.symvers.tmp; done; sort -u /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/Module.symvers.tmp > /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/Module.symvers; mkdir -p /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/symvers; mv /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/Module.symvers /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/symvers/mediatek_hnat.symvers
touch /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622//.built
rm -rf /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.pkgdir/kmod-mediatek_hnat.installed /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.pkgdir/kmod-mediatek_hnat
mkdir -p /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.pkgdir/kmod-mediatek_hnat
true
touch /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.pkgdir/kmod-mediatek_hnat.installed
mkdir -p /home/username/works/AX6S/staging_dir/target-aarch64_cortex-a53_musl/root-mediatek/stamp
SHELL= flock /home/username/works/AX6S/tmp/.root-copy.flock -c 'cp -fpR /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/.pkgdir/kmod-mediatek_hnat/. /home/username/works/AX6S/staging_dir/target-aarch64_cortex-a53_musl/root-mediatek/'
touch /home/username/works/AX6S/staging_dir/target-aarch64_cortex-a53_musl/root-mediatek/stamp/.kmod-mediatek_hnat_installed
mkdir -p /home/username/works/AX6S/bin/targets/mediatek/mt7622/packages /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ipkg-aarch64_cortex-a53/kmod-mediatek_hnat/CONTROL /home/username/works/AX6S/staging_dir/target-aarch64_cortex-a53_musl/pkginfo
true
find /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ipkg-aarch64_cortex-a53/kmod-mediatek_hnat -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| xargs -r rm -rf
export CROSS="aarch64-openwrt-linux-musl-" ; NM="aarch64-openwrt-linux-musl-nm" STRIP="aarch64-openwrt-linux-musl-strip --strip-all" STRIP_KMOD="/home/username/works/AX6S/scripts/strip-kmod.sh" PATCHELF="/home/username/works/AX6S/staging_dir/host/bin/patchelf" /home/username/works/AX6S/scripts/rstrip.sh /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ipkg-aarch64_cortex-a53/kmod-mediatek_hnat
(cd /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ipkg-aarch64_cortex-a53/kmod-mediatek_hnat/CONTROL; ( echo "$CONTROL"; printf "Description: "; echo "$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; ) > control; chmod 644 control; ( echo "#!/bin/sh"; echo "[ \"\${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo "default_postinst \$0 \$@"; ) > postinst; ( echo "#!/bin/sh"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo "default_prerm \$0 \$@"; ) > prerm; chmod 0755 postinst prerm; )
install -d -m0755 /home/username/works/AX6S/bin/targets/mediatek/mt7622/packages
/home/username/works/AX6S/staging_dir/host/bin/fakeroot /home/username/works/AX6S/staging_dir/host/bin/bash /home/username/works/AX6S/scripts/ipkg-build -m "" /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ipkg-aarch64_cortex-a53/kmod-mediatek_hnat /home/username/works/AX6S/bin/targets/mediatek/mt7622/packages
Packaged contents of /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mediatek_hnat/ipkg-aarch64_cortex-a53/kmod-mediatek_hnat into /home/username/works/AX6S/bin/targets/mediatek/mt7622/packages/kmod-mediatek_hnat_5.10.156-3_aarch64_cortex-a53.ipk
echo "kmod-mediatek_hnat" >> /home/username/works/AX6S/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/mediatek_hnat.default.install
make[2]: Leaving directory '/home/username/works/AX6S/package/mtk/mediatek_hnat'
time: package/mtk/mediatek_hnat/compile#2.82#1.89#4.67
make[1]: Leaving directory '/home/username/works/AX6S'
The package is normally inside ./target/linux/mediatek/files but I wanted to make a separate custom kmod for better compilation logs visibilities.
How fixes above?, I've meant generating the kmod packages normally.