Merge branch 'pb/clang-json-compilation-database'
Developer support. * pb/clang-json-compilation-database: Makefile: add support for generating JSON compilation databasemaint
						commit
						4f4cb66b09
					
				| 
						 | 
				
			
			@ -196,6 +196,7 @@
 | 
			
		|||
/git.spec
 | 
			
		||||
*.exe
 | 
			
		||||
*.[aos]
 | 
			
		||||
*.o.json
 | 
			
		||||
*.py[co]
 | 
			
		||||
.depend/
 | 
			
		||||
*.gcda
 | 
			
		||||
| 
						 | 
				
			
			@ -217,6 +218,7 @@
 | 
			
		|||
/tags
 | 
			
		||||
/TAGS
 | 
			
		||||
/cscope*
 | 
			
		||||
/compile_commands.json
 | 
			
		||||
*.hcc
 | 
			
		||||
*.obj
 | 
			
		||||
*.lib
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										59
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										59
									
								
								Makefile
								
								
								
								
							| 
						 | 
				
			
			@ -462,6 +462,12 @@ all::
 | 
			
		|||
# the global variable _wpgmptr containing the absolute path of the current
 | 
			
		||||
# executable (this is the case on Windows).
 | 
			
		||||
#
 | 
			
		||||
# Define GENERATE_COMPILATION_DATABASE to "yes" to generate JSON compilation
 | 
			
		||||
# database entries during compilation if your compiler supports it, using the
 | 
			
		||||
# `-MJ` flag. The JSON entries will be placed in the `compile_commands/`
 | 
			
		||||
# directory, and the JSON compilation database 'compile_commands.json' will be
 | 
			
		||||
# created at the root of the repository.
 | 
			
		||||
#
 | 
			
		||||
# Define DEVELOPER to enable more compiler warnings. Compiler version
 | 
			
		||||
# and family are auto detected, but could be overridden by defining
 | 
			
		||||
# COMPILER_FEATURES (see config.mak.dev). You can still set
 | 
			
		||||
| 
						 | 
				
			
			@ -1256,6 +1262,27 @@ $(error please set COMPUTE_HEADER_DEPENDENCIES to yes, no, or auto \
 | 
			
		|||
endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef GENERATE_COMPILATION_DATABASE
 | 
			
		||||
GENERATE_COMPILATION_DATABASE = no
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(GENERATE_COMPILATION_DATABASE),yes)
 | 
			
		||||
compdb_check = $(shell $(CC) $(ALL_CFLAGS) \
 | 
			
		||||
	-c -MJ /dev/null \
 | 
			
		||||
	-x c /dev/null -o /dev/null 2>&1; \
 | 
			
		||||
	echo $$?)
 | 
			
		||||
ifneq ($(compdb_check),0)
 | 
			
		||||
override GENERATE_COMPILATION_DATABASE = no
 | 
			
		||||
$(warning GENERATE_COMPILATION_DATABASE is set to "yes", but your compiler does not \
 | 
			
		||||
support generating compilation database entries)
 | 
			
		||||
endif
 | 
			
		||||
else
 | 
			
		||||
ifneq ($(GENERATE_COMPILATION_DATABASE),no)
 | 
			
		||||
$(error please set GENERATE_COMPILATION_DATABASE to "yes" or "no" \
 | 
			
		||||
(not "$(GENERATE_COMPILATION_DATABASE)"))
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifdef SANE_TOOL_PATH
 | 
			
		||||
SANE_TOOL_PATH_SQ = $(subst ','\'',$(SANE_TOOL_PATH))
 | 
			
		||||
BROKEN_PATH_FIX = 's|^\# @@BROKEN_PATH_FIX@@$$|git_broken_path_fix "$(SANE_TOOL_PATH_SQ)"|'
 | 
			
		||||
| 
						 | 
				
			
			@ -2369,16 +2396,30 @@ missing_dep_dirs =
 | 
			
		|||
dep_args =
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
compdb_dir = compile_commands
 | 
			
		||||
 | 
			
		||||
ifeq ($(GENERATE_COMPILATION_DATABASE),yes)
 | 
			
		||||
missing_compdb_dir = $(compdb_dir)
 | 
			
		||||
$(missing_compdb_dir):
 | 
			
		||||
	@mkdir -p $@
 | 
			
		||||
 | 
			
		||||
compdb_file = $(compdb_dir)/$(subst /,-,$@.json)
 | 
			
		||||
compdb_args = -MJ $(compdb_file)
 | 
			
		||||
else
 | 
			
		||||
missing_compdb_dir =
 | 
			
		||||
compdb_args =
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ASM_SRC := $(wildcard $(OBJECTS:o=S))
 | 
			
		||||
ASM_OBJ := $(ASM_SRC:S=o)
 | 
			
		||||
C_OBJ := $(filter-out $(ASM_OBJ),$(OBJECTS))
 | 
			
		||||
 | 
			
		||||
.SUFFIXES:
 | 
			
		||||
 | 
			
		||||
$(C_OBJ): %.o: %.c GIT-CFLAGS $(missing_dep_dirs)
 | 
			
		||||
	$(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
 | 
			
		||||
$(ASM_OBJ): %.o: %.S GIT-CFLAGS $(missing_dep_dirs)
 | 
			
		||||
	$(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
 | 
			
		||||
$(C_OBJ): %.o: %.c GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir)
 | 
			
		||||
	$(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
 | 
			
		||||
$(ASM_OBJ): %.o: %.S GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir)
 | 
			
		||||
	$(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
 | 
			
		||||
 | 
			
		||||
%.s: %.c GIT-CFLAGS FORCE
 | 
			
		||||
	$(QUIET_CC)$(CC) -o $@ -S $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
 | 
			
		||||
| 
						 | 
				
			
			@ -2401,6 +2442,14 @@ else
 | 
			
		|||
$(OBJECTS): $(LIB_H) $(GENERATED_H)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(GENERATE_COMPILATION_DATABASE),yes)
 | 
			
		||||
all:: compile_commands.json
 | 
			
		||||
compile_commands.json:
 | 
			
		||||
	@$(RM) $@
 | 
			
		||||
	$(QUIET_GEN)sed -e '1s/^/[/' -e '$$s/,$$/]/' $(compdb_dir)/*.o.json > $@+
 | 
			
		||||
	@if test -s $@+; then mv $@+ $@; else $(RM) $@+; fi
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
exec-cmd.sp exec-cmd.s exec-cmd.o: GIT-PREFIX
 | 
			
		||||
exec-cmd.sp exec-cmd.s exec-cmd.o: EXTRA_CPPFLAGS = \
 | 
			
		||||
	'-DGIT_EXEC_PATH="$(gitexecdir_SQ)"' \
 | 
			
		||||
| 
						 | 
				
			
			@ -3085,7 +3134,7 @@ clean: profile-clean coverage-clean cocciclean
 | 
			
		|||
	$(RM) $(TEST_PROGRAMS)
 | 
			
		||||
	$(RM) $(FUZZ_PROGRAMS)
 | 
			
		||||
	$(RM) $(HCC)
 | 
			
		||||
	$(RM) -r bin-wrappers $(dep_dirs)
 | 
			
		||||
	$(RM) -r bin-wrappers $(dep_dirs) $(compdb_dir) compile_commands.json
 | 
			
		||||
	$(RM) -r po/build/
 | 
			
		||||
	$(RM) *.pyc *.pyo */*.pyc */*.pyo $(GENERATED_H) $(ETAGS_TARGET) tags cscope*
 | 
			
		||||
	$(RM) -r $(GIT_TARNAME) .doc-tmp-dir
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue