[][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 $$@