# $NetBSD$

DISTNAME=	busybox-1.36.0
#DISTNAME=	busybox-1.35.0
KVER=		5.18.17
#PKGNAME=	${DISTNAME:S/busybox/initramfs/}-${KVER}
PKGNAME=	initrd-${KVER}
CATEGORIES=	native
MASTER_SITES=	https://busybox.net/downloads/
EXTRACT_SUFX=	.tar.bz2

MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://busybox.net/downloads/
COMMENT=	common UNIX utilities into a single small executable
LICENSE=	gnu-gpl-v2

ONLY_FOR_PLATFORM=	Linux-*-*

USE_LANGUAGES=		c c++

#NO_BUILD=	yes
#NO_CONFIGURE=	yes
#GNU_CONFIGURE=	no
USE_TOOLS+=	gmake gstrip gcpio xz gfind depmod gtar

USE_NATIVE_GCC=	yes
#USE_NATIVE_GCC=	no
USE_PKGSRC_GCC=		no
#GCC_REQD+=		6

PKGSRC_USE_SSP=		no
MKPIE_SUPPORTED=	no
PKGSRC_MKPIE=		no
#STACK_CHECK_SUPPORTED=	no
#PKGSRC_USE_STACK_CHECKD=	no
#SSP_SUPPORTED=		yes

#GNU_CONFIGURE=		no
#NO_BUILD=		yes
#NO_CONFIGURE=		yes
#GNU_CONFIGURE_PREDIR=	${PREFIX}
PREDIR=			${PREFIX}/native
BLDDIR=			${WRKSRC}
BLDPRE=			${BLDDIR}${PREDIR}
DSTPRE=			${DESTDIR}${PREDIR}

#MAKE_ENV+=	LIBDIR=${BLDPRE}/lib

post-extract:
	${MKDIR} -v ${BLDPRE}
	cd ${WRKSRC} && patch -Np1 -i ${FILESDIR}/0001-modutils-check-ELF-header-before-calling-finit_module.patch

.include "../../mk/bsd.prefs.mk"

.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
.include "../kross.mk"
MAK_ENV+=		PATH=/pkg/gcc6/bin:/pkg/sbin:/pkg/bin:${TOOLDIR}/bin:$$PATH
MAK_ENV+=		BUILD_CC=${PREFIX}/gcc6/bin/gcc
MAK_ENV+=		CC_FOR_BUILD=${PREFIX}/gcc6/bin/gcc
MAK_ENV+=		ARCH=${CROSS_KARCH} CROSS_COMPILE=${MACHINE_GNU_PLATFORM}-
.if !empty(MACHINE_GNU_PLATFORM:Mmips64-*-gnuabi64)
MAK_ENV+=		LD_FOR_TARGET="${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ld --oformat elf64-tradbigmips"
MAK_ENV+=		LD="${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ld --oformat elf64-tradbigmips"
.elif !empty(MACHINE_GNU_PLATFORM:Mmips64el-*-gnuabi64)
MAK_ENV+=		LD_FOR_TARGET="${TOOLDIR}/${MACHINE_GNU_PLATFORM}/bin/ld --oformat elf64-tradlittlemips"
MAK_ENV+=		LD="${TOOLDIR}/${MACHINE_GNU_PLATFORM}/bin/ld --oformat elf64-tradlittlemips"
.endif

USE_BUILTIN.zlib=	no

.endif

do-configure:
	${RM} -rf ${BLDPRE}
	cd ${BLDDIR} &&  ${GMAKE} distclean -j${MAKE_JOBS}
.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
	cd ${BLDDIR} && ${SETENV} ${MAK_ENV} ${GMAKE} -j${MAKE_JOBS} defconfig
	cd ${BLDDIR} &&  gsed 's/# CONFIG_STATIC is not set/CONFIG_STATIC=y/' -i .config
.else
	cd ${BLDDIR} &&  ${GMAKE} defconfig -j${MAKE_JOBS}
	cd ${BLDDIR} &&  gsed 's/# CONFIG_STATIC is not set/CONFIG_STATIC=y/' -i .config
.endif

do-build:
	${MKDIR} -pv ${BLDPRE}
.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
	cd ${BLDDIR} && ${SETENV} ${MAK_ENV} ${GMAKE} -j${MAKE_JOBS}
	cd ${BLDDIR} && ${SETENV} ${MAK_ENV} ${GMAKE} -j${MAKE_JOBS} install
.else
	cd ${BLDDIR} && ${GMAKE} -j${MAKE_JOBS}
	cd ${BLDDIR} && ${GMAKE} install -j${MAKE_JOBS}
.endif
	cd ${BLDDIR}/_install && ${STRIP} -g bin/busybox
	cd ${BLDDIR} && ${RM} -v _install/linuxrc # Used when booting in 'RAM dist' mode
	cd ${BLDDIR}/_install && ${CP} -av ${FILESDIR}/ramfs/* .
	cd ${BLDDIR}/_install && mknod -m 600 dev/console c 5 1
	cd ${BLDDIR}/_install && mknod -m 666 dev/null c 1 3
.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
	cd ${BLDDIR}/_install && gfind . | gcpio -R root:root -H newc -o | xz -9 --check=none > ../ramfs.cpio.xz 
.else
	cd ${BLDDIR}/_install && gfind . | gcpio -R root:root -H newc -o | xz -9 --check=none > ../ramfs.cpio.xz 
	${MKDIR} -pv ${BLDDIR}/microcode/kernel/x86/microcode
	xzcat ${PREFIX}/native/lib/firmware/amd-ucode/microcode_amd*.bin.xz > ${BLDDIR}/microcode/kernel/x86/microcode/AuthenticAMD.bin
	xzcat ${PREFIX}/native/lib/firmware/intel-ucode/* > ${BLDDIR}/microcode/kernel/x86/microcode/GenuineIntel.bin
	cd ${BLDDIR}/microcode && find . | gcpio -o -H newc --quiet > ../microcode.img
.endif

do-install:
	${MKDIR} -v ${DSTPRE}/boot/
.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
	${CAT} ${BLDDIR}/ramfs.cpio.xz > ${DSTPRE}/boot/${PKGNAME}
.else
#	${CAT} ${BLDDIR}/microcode.img ${BLDDIR}/ramfs.cpio.xz > ${DSTPRE}/boot/${PKGNAME}
	${CAT} ${BLDDIR}/ramfs.cpio.xz > ${DSTPRE}/boot/${PKGNAME}
.endif

.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
USE_LIBTOOL=	yes
PLIST_SRC=
GENERATE_PLIST+= \
	cd ${DESTDIR}${PREFIX} && \
	${FIND} native \( -type f -o -type l \) -print | ${SORT} ;
.endif

.include "../../mk/bsd.pkg.mk"
