[][openwrt][common][sdk][Refactor support for clangd]

[Description]
Refactor support for clangd
1. Patch codechecker to build only native ldlogger.so
2. Write .clangd for packages for accurate indexing

[Release-log]
N/A

Change-Id: I996933098dd42f15142edbf4002fde75f9e6d196
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8215260
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
index 0057ef8..ebb4f7e 100644
--- 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
@@ -17,16 +17,53 @@
  	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)" \
+@@ -128,6 +128,12 @@ MAKE_VARS = \
  	CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
--	LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)"
-+	LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
+ 	LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)"
+ 
++BUILD_LOGGER_VARS = \
 +	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) \
+ 	CROSS="$(TARGET_CROSS)" \
+@@ -140,12 +146,25 @@ MAKE_INSTALL_FLAGS = \
+ MAKE_PATH ?= .
+ 
+ define Build/Compile/Default
+-	+$(MAKE_VARS) \
++	+$(MAKE_VARS) $(BUILD_LOGGER_VARS) \
+ 	$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
+ 		$(MAKE_FLAGS) \
+ 		$(1);
+ endef
+ 
++GCC_LIB_INC := $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/$(shell $(TARGET_CC) -dumpmachine)/$(shell $(TARGET_CC) --version | head -1 | rev | cut -d ' ' -f 1 | rev)/include)
++ifneq ($(GCC_LIB_INC),)
++define Build/WriteClangdConfig/GccLibInc
++	echo "  Add: -I$(GCC_LIB_INC)" >> $(PKG_BUILD_DIR)/.clangd
++endef
++endif
++
++define Build/WriteClangdConfig
++	echo "CompileFlags:" > $(PKG_BUILD_DIR)/.clangd
++	$(Build/WriteClangdConfig/GccLibInc)
++	echo "  Remove: -mabi=*" >> $(PKG_BUILD_DIR)/.clangd
++endef
++
+ define Build/Install/Default
+ 	$(MAKE_VARS) \
+ 	$(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
+--- a/include/package.mk
++++ b/include/package.mk
+@@ -216,6 +216,7 @@ define Build/CoreTargets
+ 	$(foreach hook,$(Hooks/Compile/Pre),$(call $(hook))$(sep))
+ 	$(Build/Compile)
+ 	$(foreach hook,$(Hooks/Compile/Post),$(call $(hook))$(sep))
++	$(Build/WriteClangdConfig)
+ 	$(Build/Install)
+ 	$(foreach hook,$(Hooks/Install/Post),$(call $(hook))$(sep))
+ 	touch $$@