summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in4
-rw-r--r--erts/emulator/Makefile.in19
-rw-r--r--make/run_make.mk2
3 files changed, 23 insertions, 2 deletions
diff --git a/Makefile.in b/Makefile.in
index 16bc7b1a3a..c1bf51664b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -529,6 +529,10 @@ preloaded:
ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)"$${PATH}" \
$(MAKE) opt BUILD_ALL=true
+compdb:
+ (cd erts/emulator && ERL_TOP=$(ERL_TOP) TYPE=$(TYPE) $(MAKE) compdb)
+ sed -i -e '1s/^/[\n/' -e '$$s/,$$/\n]/' $(ERL_TOP)/compile_commands.json
+
dep depend:
$(make_verbose)
$(V_at)test X"$$ERTS_SKIP_DEPEND" = X"true" || (cd erts/emulator && PATH=$(BOOT_PREFIX)"$${PATH}" ERL_TOP=$(ERL_TOP) $(MAKE) generate)
diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
index 130951f5f7..17f06ab583 100644
--- a/erts/emulator/Makefile.in
+++ b/erts/emulator/Makefile.in
@@ -1265,9 +1265,10 @@ MG_FLAG=-MG
endif
DEP_CC=$(CC)
-DEP_FLAGS=-MM $(MG_FLAG) $(CFLAGS) $(INCLUDES) \
+DEP_INCLUDES=$(INCLUDES) \
-Idrivers/common -Idrivers/$(ERLANG_OSTYPE) \
-Inifs/common -Inifs/$(ERLANG_OSTYPE)
+DEP_FLAGS=-MM $(MG_FLAG) $(CFLAGS) $(DEP_INCLUDES)
SYS_SRC=$(ALL_SYS_SRC)
endif
@@ -1313,6 +1314,22 @@ endif
$(V_at)cd $(ERTS_LIB_DIR) && $(MAKE) depend
endif
+COMPDB_CFLAGS=-MM $(filter-out -fno-tree-copyrename,$(CFLAGS)) $(DEP_INCLUDES)
+
+compdb:
+ clang -MJ $(TTF_DIR)/beam.json $(COMPDB_CFLAGS) $(BEAM_SRC) > /dev/null
+ clang -MJ $(TTF_DIR)/drv.json $(COMPDB_CFLAGS) -DLIBSCTP=$(LIBSCTP) $(DRV_COMMON_SRC) > /dev/null
+ clang -MJ $(TTF_DIR)/drv_$(ERLANG_OSTYPE).json \
+ $(COMPDB_CFLAGS) -I../etc/$(ERLANG_OSTYPE) $(DRV_OSTYPE_SRC) > /dev/null
+ clang -MJ $(TTF_DIR)/nif.json $(COMPDB_CFLAGS) $(NIF_COMMON_SRC) > /dev/null
+ clang -MJ $(TTF_DIR)/nif_$(ERLANG_OSTYPE).json \
+ $(COMPDB_CFLAGS) -I../etc/$(ERLANG_OSTYPE) $(NIF_OSTYPE_SRC) > /dev/null
+ clang -MJ $(TTF_DIR)/sys.json $(COMPDB_CFLAGS) $(SYS_SRC) > /dev/null
+ clang -MJ $(TTF_DIR)/target.json $(COMPDB_CFLAGS) $(TARGET_SRC) > /dev/null
+ clang -MJ $(TTF_DIR)/zlib.json $(COMPDB_CFLAGS) $(ZLIB_SRC) > /dev/null
+ cat $(TTF_DIR)/*.json > $(ERL_TOP)/compile_commands.json
+
+
ifneq ($(ERTS_SKIP_DEPEND),true)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),generate)
diff --git a/make/run_make.mk b/make/run_make.mk
index bcbbf53f7d..95d4d2efe7 100644
--- a/make/run_make.mk
+++ b/make/run_make.mk
@@ -38,5 +38,5 @@ plain smp frag smp_frag:
$(make_verbose)$(MAKE) -f $(TARGET)/Makefile FLAVOR=$@
clean generate depend docs release release_spec release_docs release_docs_spec \
- tests release_tests release_tests_spec static_lib xmllint:
+ tests release_tests release_tests_spec static_lib xmllint compdb:
$(make_verbose)$(MAKE) -f $(TARGET)/Makefile $@