[][openwrt][common][sdk][Add support to generate compile_commands.json for clangd]

[Description]
Add support to generate compile_commands.json of kernel, kernel modules
and packages for clangd.

[Release-log]
N/A

Change-Id: I458a19adf23c68dd45f9fbff83c7c51fdb6ab45e
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8202712
diff --git a/openwrt_patches-21.02/171-generate-clangd-compile_commands-for-kernel-and-packages.patch b/openwrt_patches-21.02/171-generate-clangd-compile_commands-for-kernel-and-packages.patch
new file mode 100644
index 0000000..0057ef8
--- /dev/null
+++ b/openwrt_patches-21.02/171-generate-clangd-compile_commands-for-kernel-and-packages.patch
@@ -0,0 +1,32 @@
+--- a/include/kernel.mk
++++ b/include/kernel.mk
+@@ -98,7 +98,13 @@ else
+   LINUX_KARCH := $(ARCH)
+ endif
+ 
+-KERNEL_MAKE = $(MAKE) $(KERNEL_MAKEOPTS)
++KERNEL_VARS = \
++	LD_PRELOAD="$(STAGING_DIR_HOST)/lib/ldlogger.so" \
++	CC_LOGGER_GCC_LIKE="gcc:g++:clang:clang++:cc:c++" \
++	CC_LOGGER_FILE="$(LINUX_DIR)/compile_commands.json" \
++	CC_LOGGER_KEEP_LINK=true
++
++KERNEL_MAKE = $(KERNEL_VARS) $(MAKE) $(KERNEL_MAKEOPTS)
+ 
+ KERNEL_MAKE_FLAGS = \
+ 	KCFLAGS="$(call iremap,$(BUILD_DIR),$(notdir $(BUILD_DIR))) $(filter-out -fno-plt,$(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION))) $(call qstrip,$(CONFIG_KERNEL_CFLAGS))" \
+--- a/include/package-defaults.mk
++++ b/include/package-defaults.mk
+@@ -126,7 +126,11 @@ endef
+ MAKE_VARS = \
+ 	CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
+ 	CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
+-	LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)"
++	LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
++	LD_PRELOAD="$(STAGING_DIR_HOST)/lib/ldlogger.so" \
++	CC_LOGGER_GCC_LIKE="gcc:g++:clang:clang++:cc:c++" \
++	CC_LOGGER_FILE="$(PKG_BUILD_DIR)/compile_commands.json" \
++	CC_LOGGER_KEEP_LINK=true
+ 
+ MAKE_FLAGS = \
+ 	$(TARGET_CONFIGURE_OPTS) \