Merge branch 'rj/hdr-check-gcrypt-fix'
authorJunio C Hamano <gitster@pobox.com>
Mon, 11 Mar 2019 07:16:25 +0000 (16:16 +0900)
committerJunio C Hamano <gitster@pobox.com>
Mon, 11 Mar 2019 07:16:25 +0000 (16:16 +0900)
The set of header files used by "make hdr-check" unconditionally
included sha256/gcrypt.h, even when it is not used, causing the
make target to fail. We now skip it when GCRYPT_SHA256 is not in
use.

* rj/hdr-check-gcrypt-fix:
Makefile: fix 'hdr-check' when GCRYPT not installed

1  2 
Makefile
diff --combined Makefile
index 148668368bf1708900bf4a62120004747718e8c9,6e7079add3e0b68c07dcd425cdb12aa3eeddd82d..acd6791faadb2b3b775d6706ff6c5dd69a09260c
+++ b/Makefile
@@@ -186,12 -186,6 +186,12 @@@ all:
  # in one call to the platform's SHA1_Update(). e.g. APPLE_COMMON_CRYPTO
  # wants 'SHA1_MAX_BLOCK_SIZE=1024L*1024L*1024L' defined.
  #
 +# Define BLK_SHA256 to use the built-in SHA-256 routines.
 +#
 +# Define GCRYPT_SHA256 to use the SHA-256 routines in libgcrypt.
 +#
 +# Define OPENSSL_SHA256 to use the SHA-256 routines in OpenSSL.
 +#
  # Define NEEDS_CRYPTO_WITH_SSL if you need -lcrypto when using -lssl (Darwin).
  #
  # Define NEEDS_SSL_WITH_CRYPTO if you need -lssl when using -lcrypto (Darwin).
  # Define OLD_ICONV if your library has an old iconv(), where the second
  # (input buffer pointer) parameter is declared with type (const char **).
  #
 +# Define ICONV_OMITS_BOM if your iconv implementation does not write a
 +# byte-order mark (BOM) when writing UTF-16 or UTF-32 and always writes in
 +# big-endian format.
 +#
  # Define NO_DEFLATE_BOUND if your zlib does not have deflateBound.
  #
  # Define NO_R_TO_GCC_LINKER if your gcc does not like "-R/path/lib"
  #
  # Define HAVE_GETDELIM if your system has the getdelim() function.
  #
 +# Define FILENO_IS_A_MACRO if fileno() is a macro, not a real function.
 +#
  # Define PAGER_ENV to a SP separated VAR=VAL pairs to define
  # default environment variables to be passed when a pager is spawned, e.g.
  #
@@@ -580,11 -568,7 +580,11 @@@ SPATCH = spatc
  
  export TCL_PATH TCLTK_PATH
  
 -SPARSE_FLAGS =
 +# user customisation variable for 'sparse' target
 +SPARSE_FLAGS ?=
 +# internal/platform customisation variable for 'sparse'
 +SP_EXTRA_FLAGS =
 +
  SPATCH_FLAGS = --all-includes --patch .
  
  
@@@ -644,6 -628,7 +644,6 @@@ SCRIPT_LIB += git-parse-remot
  SCRIPT_LIB += git-rebase--am
  SCRIPT_LIB += git-rebase--common
  SCRIPT_LIB += git-rebase--preserve-merges
 -SCRIPT_LIB += git-rebase--merge
  SCRIPT_LIB += git-sh-setup
  SCRIPT_LIB += git-sh-i18n
  
@@@ -699,7 -684,6 +699,7 @@@ SCRIPTS = $(SCRIPT_SH_INS) 
  
  ETAGS_TARGET = TAGS
  
 +FUZZ_OBJS += fuzz-commit-graph.o
  FUZZ_OBJS += fuzz-pack-headers.o
  FUZZ_OBJS += fuzz-pack-idx.o
  
@@@ -740,10 -724,7 +740,10 @@@ TEST_BUILTINS_OBJS += test-dump-split-i
  TEST_BUILTINS_OBJS += test-dump-untracked-cache.o
  TEST_BUILTINS_OBJS += test-example-decorate.o
  TEST_BUILTINS_OBJS += test-genrandom.o
 +TEST_BUILTINS_OBJS += test-genzeros.o
 +TEST_BUILTINS_OBJS += test-hash.o
  TEST_BUILTINS_OBJS += test-hashmap.o
 +TEST_BUILTINS_OBJS += test-hash-speed.o
  TEST_BUILTINS_OBJS += test-index-version.o
  TEST_BUILTINS_OBJS += test-json-writer.o
  TEST_BUILTINS_OBJS += test-lazy-init-name-hash.o
@@@ -766,16 -747,13 +766,16 @@@ TEST_BUILTINS_OBJS += test-run-command.
  TEST_BUILTINS_OBJS += test-scrap-cache-tree.o
  TEST_BUILTINS_OBJS += test-sha1.o
  TEST_BUILTINS_OBJS += test-sha1-array.o
 +TEST_BUILTINS_OBJS += test-sha256.o
  TEST_BUILTINS_OBJS += test-sigchain.o
  TEST_BUILTINS_OBJS += test-strcmp-offset.o
  TEST_BUILTINS_OBJS += test-string-list.o
  TEST_BUILTINS_OBJS += test-submodule-config.o
  TEST_BUILTINS_OBJS += test-submodule-nested-repo-config.o
  TEST_BUILTINS_OBJS += test-subprocess.o
 +TEST_BUILTINS_OBJS += test-trace2.o
  TEST_BUILTINS_OBJS += test-urlmatch-normalization.o
 +TEST_BUILTINS_OBJS += test-xml-encode.o
  TEST_BUILTINS_OBJS += test-wildmatch.o
  TEST_BUILTINS_OBJS += test-windows-named-pipe.o
  TEST_BUILTINS_OBJS += test-write-cache.o
@@@ -1018,16 -996,6 +1018,16 @@@ LIB_OBJS += tempfile.
  LIB_OBJS += thread-utils.o
  LIB_OBJS += tmp-objdir.o
  LIB_OBJS += trace.o
 +LIB_OBJS += trace2.o
 +LIB_OBJS += trace2/tr2_cfg.o
 +LIB_OBJS += trace2/tr2_cmd_name.o
 +LIB_OBJS += trace2/tr2_dst.o
 +LIB_OBJS += trace2/tr2_sid.o
 +LIB_OBJS += trace2/tr2_tbuf.o
 +LIB_OBJS += trace2/tr2_tgt_event.o
 +LIB_OBJS += trace2/tr2_tgt_normal.o
 +LIB_OBJS += trace2/tr2_tgt_perf.o
 +LIB_OBJS += trace2/tr2_tls.o
  LIB_OBJS += trailer.o
  LIB_OBJS += transport.o
  LIB_OBJS += transport-helper.o
@@@ -1433,9 -1401,6 +1433,9 @@@ ifndef NO_ICON
                EXTLIBS += $(ICONV_LINK) -liconv
        endif
  endif
 +ifdef ICONV_OMITS_BOM
 +      BASIC_CFLAGS += -DICONV_OMITS_BOM
 +endif
  ifdef NEEDS_LIBGEN
        EXTLIBS += -lgen
  endif
@@@ -1607,9 -1572,7 +1607,9 @@@ ifdef NO_INET_PTO
        LIB_OBJS += compat/inet_pton.o
        BASIC_CFLAGS += -DNO_INET_PTON
  endif
 -ifndef NO_UNIX_SOCKETS
 +ifdef NO_UNIX_SOCKETS
 +      BASIC_CFLAGS += -DNO_UNIX_SOCKETS
 +else
        LIB_OBJS += unix-socket.o
        PROGRAM_OBJS += credential-cache.o
        PROGRAM_OBJS += credential-cache--daemon.o
@@@ -1683,19 -1646,6 +1683,19 @@@ endi
  endif
  endif
  
 +ifdef OPENSSL_SHA256
 +      EXTLIBS += $(LIB_4_CRYPTO)
 +      BASIC_CFLAGS += -DSHA256_OPENSSL
 +else
 +ifdef GCRYPT_SHA256
 +      BASIC_CFLAGS += -DSHA256_GCRYPT
 +      EXTLIBS += -lgcrypt
 +else
 +      LIB_OBJS += sha256/block/sha256.o
 +      BASIC_CFLAGS += -DSHA256_BLK
 +endif
 +endif
 +
  ifdef SHA1_MAX_BLOCK_SIZE
        LIB_OBJS += compat/sha1-chunked.o
        BASIC_CFLAGS += -DSHA1_MAX_BLOCK_SIZE="$(SHA1_MAX_BLOCK_SIZE)"
@@@ -1823,11 -1773,6 +1823,11 @@@ ifdef HAVE_WPGMPT
        BASIC_CFLAGS += -DHAVE_WPGMPTR
  endif
  
 +ifdef FILENO_IS_A_MACRO
 +      COMPAT_CFLAGS += -DFILENO_IS_A_MACRO
 +      COMPAT_OBJS += compat/fileno.o
 +endif
 +
  ifeq ($(TCLTK_PATH),)
  NO_TCLTK = NoThanks
  endif
@@@ -2402,10 -2347,10 +2402,10 @@@ gettext.sp gettext.s gettext.o: GIT-PRE
  gettext.sp gettext.s gettext.o: EXTRA_CPPFLAGS = \
        -DGIT_LOCALE_PATH='"$(localedir_relative_SQ)"'
  
 -http-push.sp http.sp http-walker.sp remote-curl.sp imap-send.sp: SPARSE_FLAGS += \
 +http-push.sp http.sp http-walker.sp remote-curl.sp imap-send.sp: SP_EXTRA_FLAGS += \
        -DCURL_DISABLE_TYPECHECK
  
 -pack-revindex.sp: SPARSE_FLAGS += -Wno-memcpy-max-count
 +pack-revindex.sp: SP_EXTRA_FLAGS += -Wno-memcpy-max-count
  
  ifdef NO_EXPAT
  http-walker.sp http-walker.s http-walker.o: EXTRA_CPPFLAGS = -DNO_EXPAT
@@@ -2419,7 -2364,7 +2419,7 @@@ endi
  ifdef USE_NED_ALLOCATOR
  compat/nedmalloc/nedmalloc.sp compat/nedmalloc/nedmalloc.o: EXTRA_CPPFLAGS = \
        -DNDEBUG -DREPLACE_SYSTEM_ALLOCATOR
 -compat/nedmalloc/nedmalloc.sp: SPARSE_FLAGS += -Wno-non-pointer-null
 +compat/nedmalloc/nedmalloc.sp: SP_EXTRA_FLAGS += -Wno-non-pointer-null
  endif
  
  git-%$X: %.o GIT-LDFLAGS $(GITLIBS)
@@@ -2743,13 -2688,16 +2743,16 @@@ SP_OBJ = $(patsubst %.o,%.sp,$(C_OBJ)
  
  $(SP_OBJ): %.sp: %.c GIT-CFLAGS FORCE
        $(QUIET_SP)cgcc -no-compile $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) \
 -              $(SPARSE_FLAGS) $<
 +              $(SPARSE_FLAGS) $(SP_EXTRA_FLAGS) $<
  
  .PHONY: sparse $(SP_OBJ)
  sparse: $(SP_OBJ)
  
  GEN_HDRS := command-list.h unicode-width.h
- EXCEPT_HDRS := $(GEN_HDRS) compat% xdiff%
+ EXCEPT_HDRS := $(GEN_HDRS) compat/% xdiff/%
+ ifndef GCRYPT_SHA256
+       EXCEPT_HDRS += sha256/gcrypt.h
+ endif
  CHK_HDRS = $(filter-out $(EXCEPT_HDRS),$(patsubst ./%,%,$(LIB_H)))
  HCO = $(patsubst %.h,%.hco,$(CHK_HDRS))
  
@@@ -2981,16 -2929,6 +2984,16 @@@ rpm:
        @false
  .PHONY: rpm
  
 +artifacts-tar:: $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) \
 +              GIT-BUILD-OPTIONS $(TEST_PROGRAMS) $(test_bindir_programs) \
 +              $(NO_INSTALL) $(MOFILES)
 +      $(QUIET_SUBDIR0)templates $(QUIET_SUBDIR1) \
 +              SHELL_PATH='$(SHELL_PATH_SQ)' PERL_PATH='$(PERL_PATH_SQ)'
 +      test -n "$(ARTIFACTS_DIRECTORY)"
 +      mkdir -p "$(ARTIFACTS_DIRECTORY)"
 +      $(TAR) czf "$(ARTIFACTS_DIRECTORY)/artifacts.tar.gz" $^ templates/blt/
 +.PHONY: artifacts-tar
 +
  htmldocs = git-htmldocs-$(GIT_VERSION)
  manpages = git-manpages-$(GIT_VERSION)
  .PHONY: dist-doc distclean
@@@ -3142,11 -3080,6 +3145,11 @@@ coverage-test: coverage-clean-results c
        $(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" \
                DEFAULT_TEST_TARGET=test -j1 test
  
 +coverage-prove: coverage-clean-results coverage-compile
 +      $(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" \
 +              DEFAULT_TEST_TARGET=prove GIT_PROVE_OPTS="$(GIT_PROVE_OPTS) -j1" \
 +              -j1 test
 +
  coverage-report:
        $(QUIET_GCOV)for dir in $(object_dirs); do \
                $(GCOV) $(GCOVFLAGS) --object-directory=$$dir $$dir*.c || exit; \
@@@ -3173,7 -3106,7 +3176,7 @@@ cover_db_html: cover_d
  # An example command to build against libFuzzer from LLVM 4.0.0:
  #
  # make CC=clang CXX=clang++ \
 -#      FUZZ_CXXFLAGS="-fsanitize-coverage=trace-pc-guard -fsanitize=address" \
 +#      CFLAGS="-fsanitize-coverage=trace-pc-guard -fsanitize=address" \
  #      LIB_FUZZING_ENGINE=/usr/lib/llvm-4.0/lib/libFuzzer.a \
  #      fuzz-all
  #