@@ -159,6 +159,9 @@ set -e
image_task = d.getVar('INITRAMFS_TASK')
if image_task:
d.appendVarFlag('do_configure', 'depends', ' ${INITRAMFS_TASK}')
+ if d.getVar("SPDX_INCLUDE_COMPILED_SOURCES") == "1":
+ bb.build.addtask('do_save_compiled_files', 'do_build', 'do_compile do_compile_kernelmodules', d)
+ d.appendVarFlag('do_create_spdx', 'depends', f'{pn}:do_save_compiled_files')
}
# Here we pull in all various kernel image types which we support.
@@ -867,3 +870,19 @@ EXPORT_FUNCTIONS do_deploy
# Add using Device Tree support
inherit kernel-devicetree
+
+# in case we don't use spdx bbclass
+SPDX_COMPILED_SOURCES_DIR ?= "${LOG_DIR}/spdx-compiled/${PN}"
+SPDX_COMPILED_SOURCES ?= "${SPDX_COMPILED_SOURCES_DIR}/compiled_src-${MACHINE}-${BP}.txt"
+
+KERNEL_COMPILED_FILES ?= "${SPDX_COMPILED_SOURCES_DIR}/compiled_commands-${MACHINE}-${BP}.json"
+
+do_save_compiled_files() {
+ bbdebug 1 "Saving compiled files in ${SPDX_COMPILED_SOURCES}"
+ mkdir -p ${SPDX_COMPILED_SOURCES_DIR}
+ ${S}/scripts/clang-tools/gen_compile_commands.py -o ${KERNEL_COMPILED_FILES} -d ${B}
+ # Make paths releative to the kernel source
+ sed -i 's|${B}/||g' ${KERNEL_COMPILED_FILES}
+ sed -i 's|${S}/||g' ${KERNEL_COMPILED_FILES}
+ grep '"file": ' ${KERNEL_COMPILED_FILES} | awk '{print $2}' | tr -d '"' > ${SPDX_COMPILED_SOURCES}
+}