зеркало из https://github.com/microsoft/git.git
Makefile: emulate compile in $(HCO) target better
Currently, when testing headers using `make hdr-check`, headers are directly compiled. Although this seems to test the headers, this is too strict since we treat the headers as C sources. As a result, this will cause warnings to appear that would otherwise not, such as a static variable definition intended for later use throwing a unused variable warning. In addition, on platforms that can run `make hdr-check` but require custom flags, this target was failing because none of them were being passed to the compiler. For example, on MacOS, the NO_OPENSSL flag was being set but it was not being passed into compiler so the check was failing. Fix these problems by emulating the compile process better, including test compiling dummy *.hcc C sources generated from the *.h files and passing $(ALL_CFLAGS) into the compiler for the $(HCO) target so that these custom flags can be used. Helped-by: Jeff King <peff@peff.net> Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
af26e2a9d2
Коммит
b503a2d515
|
@ -216,6 +216,7 @@
|
||||||
/tags
|
/tags
|
||||||
/TAGS
|
/TAGS
|
||||||
/cscope*
|
/cscope*
|
||||||
|
*.hcc
|
||||||
*.obj
|
*.obj
|
||||||
*.lib
|
*.lib
|
||||||
*.res
|
*.res
|
||||||
|
|
12
Makefile
12
Makefile
|
@ -1872,7 +1872,7 @@ ifndef V
|
||||||
QUIET_MSGFMT = @echo ' ' MSGFMT $@;
|
QUIET_MSGFMT = @echo ' ' MSGFMT $@;
|
||||||
QUIET_GCOV = @echo ' ' GCOV $@;
|
QUIET_GCOV = @echo ' ' GCOV $@;
|
||||||
QUIET_SP = @echo ' ' SP $<;
|
QUIET_SP = @echo ' ' SP $<;
|
||||||
QUIET_HDR = @echo ' ' HDR $<;
|
QUIET_HDR = @echo ' ' HDR $(<:hcc=h);
|
||||||
QUIET_RC = @echo ' ' RC $@;
|
QUIET_RC = @echo ' ' RC $@;
|
||||||
QUIET_SUBDIR0 = +@subdir=
|
QUIET_SUBDIR0 = +@subdir=
|
||||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||||
|
@ -2771,9 +2771,14 @@ ifndef GCRYPT_SHA256
|
||||||
endif
|
endif
|
||||||
CHK_HDRS = $(filter-out $(EXCEPT_HDRS),$(patsubst ./%,%,$(LIB_H)))
|
CHK_HDRS = $(filter-out $(EXCEPT_HDRS),$(patsubst ./%,%,$(LIB_H)))
|
||||||
HCO = $(patsubst %.h,%.hco,$(CHK_HDRS))
|
HCO = $(patsubst %.h,%.hco,$(CHK_HDRS))
|
||||||
|
HCC = $(HCO:hco=hcc)
|
||||||
|
|
||||||
$(HCO): %.hco: %.h FORCE
|
%.hcc: %.h
|
||||||
$(QUIET_HDR)$(CC) -include git-compat-util.h -I. -o /dev/null -c -xc $<
|
@echo '#include "git-compat-util.h"' >$@
|
||||||
|
@echo '#include "$<"' >>$@
|
||||||
|
|
||||||
|
$(HCO): %.hco: %.hcc FORCE
|
||||||
|
$(QUIET_HDR)$(CC) $(ALL_CFLAGS) -o /dev/null -c -xc $<
|
||||||
|
|
||||||
.PHONY: hdr-check $(HCO)
|
.PHONY: hdr-check $(HCO)
|
||||||
hdr-check: $(HCO)
|
hdr-check: $(HCO)
|
||||||
|
@ -3082,6 +3087,7 @@ clean: profile-clean coverage-clean cocciclean
|
||||||
$(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X
|
$(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X
|
||||||
$(RM) $(TEST_PROGRAMS)
|
$(RM) $(TEST_PROGRAMS)
|
||||||
$(RM) $(FUZZ_PROGRAMS)
|
$(RM) $(FUZZ_PROGRAMS)
|
||||||
|
$(RM) $(HCC)
|
||||||
$(RM) -r bin-wrappers $(dep_dirs)
|
$(RM) -r bin-wrappers $(dep_dirs)
|
||||||
$(RM) -r po/build/
|
$(RM) -r po/build/
|
||||||
$(RM) *.pyc *.pyo */*.pyc */*.pyo command-list.h $(ETAGS_TARGET) tags cscope*
|
$(RM) *.pyc *.pyo */*.pyc */*.pyo command-list.h $(ETAGS_TARGET) tags cscope*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче