#!/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
	cat "${destdir}/scripts/Makefile" - <<-'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

	# 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.
	#
	# Clear VPATH and srcroot because the source files reside in the output
	# directory.
	# shellcheck disable=SC2016 # $(MAKE) and $(build) will be expanded by Make
	"${MAKE}" run-command KBUILD_RUN_COMMAND='+$(MAKE) HOSTCC='"${CC}"' VPATH= srcroot=. $(build)='"$(realpath --relative-base=. "${destdir}")"/scripts

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

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