#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only

set -eu

destdir=${1}

is_enabled() {
	grep -q "^$1=y" include/config/auto.conf
}

find_in_scripts() {
	find scripts \
		\( -name atomic -o -name dtc -o -name kconfig -o -name package \) -prune -o \
		! -name unifdef -a ! -name mk_elfconfig -a \( -type f -o -type l \) -print
}

mkdir -p "${destdir}"

(
	cd "${srctree}"
	echo Makefile
	find "arch/${SRCARCH}" -maxdepth 1 -name 'Makefile*'
	find "arch/${SRCARCH}" -name generated -prune -o -name include -type d -print
	find "arch/${SRCARCH}" -name Kbuild.platforms -o -name Platform
	find include \( -name config -o -name generated \) -prune -o \( -type f -o -type l \) -print
	find_in_scripts
) | tar -c -f - -C "${srctree}" -T - | tar -xf - -C "${destdir}"

{
	if is_enabled CONFIG_OBJTOOL; then
		echo tools/objtool/objtool
	fi

	echo Module.symvers
	echo "arch/${SRCARCH}/include/generated"
	echo include/config/auto.conf
	echo include/config/kernel.release
	echo include/generated
	find_in_scripts

	if is_enabled CONFIG_GCC_PLUGINS; then
		find scripts/gcc-plugins -name '*.so'
	fi
} | tar -c -f - -T - | tar -xf - -C "${destdir}"

# When ${CC} and ${HOSTCC} differ, rebuild host programs using ${CC}.
#
# This caters to host programs that participate in Kbuild. objtool and
# resolve_btfids are out of scope.
if [ "${CC}" != "${HOSTCC}" ]; then
	echo "Rebuilding host programs with ${CC}..."

	# This leverages external module building.
	# - Clear sub_make_done to allow the top-level Makefile to redo sub-make.
	# - Filter out --no-print-directory to print "Entering directory" logs
	#   when Make changes the working directory.
	unset sub_make_done
	MAKEFLAGS=$(echo "${MAKEFLAGS}" | sed s/--no-print-directory//)

	cat <<-'EOF' >  "${destdir}/Kbuild"
	subdir-y := scripts
	EOF

	# HOSTCXX is not overridden. The C++ compiler is used to build:
	# - scripts/kconfig/qconf, which is unneeded for external module builds
	# - GCC plugins, which will not work on the installed system even after
	#   being rebuilt.
	#
	# Use the single-target build to avoid the modpost invocation, which
	# would overwrite Module.symvers.
	"${MAKE}" HOSTCC="${CC}" KBUILD_OUTPUT=. KBUILD_EXTMOD="${destdir}" scripts/

	cat <<-'EOF' >  "${destdir}/scripts/Kbuild"
	subdir-y := basic
	hostprogs-always-y := mod/modpost
	mod/modpost-objs := $(addprefix mod/, modpost.o file2alias.o sumversion.o symsearch.o)
	EOF

	# Run once again to rebuild scripts/basic/ and scripts/mod/modpost.
	"${MAKE}" HOSTCC="${CC}" KBUILD_OUTPUT=. KBUILD_EXTMOD="${destdir}" scripts/

	rm -f "${destdir}/Kbuild" "${destdir}/scripts/Kbuild"
fi

find "${destdir}" \( -name '.*.cmd' -o -name '*.o' \) -delete
