Merge branch 'ph/enable-threaded'
authorJunio C Hamano <gitster@pobox.com>
Wed, 20 Aug 2008 04:43:01 +0000 (21:43 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 20 Aug 2008 04:43:01 +0000 (21:43 -0700)
* ph/enable-threaded:
Enable threaded delta search on *BSD and Linux.

1  2 
Makefile
diff --combined Makefile
index ad77a1dc81888b26f2d98be63a136bb8cb9c4bfa,82f89b7b649f7793d96003d770c178e3184b9e16..5e944d8a161851a360a9bc61503b1ef11ee00af1
+++ b/Makefile
@@@ -124,9 -124,6 +124,9 @@@ all:
  # Define USE_STDEV below if you want git to care about the underlying device
  # change being considered an inode change from the update-index perspective.
  #
 +# Define NO_ST_BLOCKS_IN_STRUCT_STAT if your platform does not have st_blocks
 +# field that counts the on-disk footprint in 512-byte blocks.
 +#
  # Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8
  #
  # Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72.
@@@ -173,16 -170,6 +173,16 @@@ ALL_CFLAGS = $(CFLAGS
  ALL_LDFLAGS = $(LDFLAGS)
  STRIP ?= strip
  
 +# Among the variables below, these:
 +#   gitexecdir
 +#   template_dir
 +#   htmldir
 +#   ETC_GITCONFIG (but not sysconfdir)
 +# can be specified as a relative path ../some/where/else (which must begin
 +# with ../); this is interpreted as relative to $(bindir) and "git" at
 +# runtime figures out where they are based on the path to the executable.
 +# This can help installing the suite in a relocatable way.
 +
  prefix = $(HOME)
  bindir = $(prefix)/bin
  mandir = $(prefix)/share/man
@@@ -218,7 -205,7 +218,7 @@@ GITWEB_FAVICON = git-favicon.pn
  GITWEB_SITE_HEADER =
  GITWEB_SITE_FOOTER =
  
 -export prefix bindir gitexecdir sharedir htmldir sysconfdir
 +export prefix bindir sharedir htmldir sysconfdir
  
  CC = gcc
  AR = ar
@@@ -296,6 -283,7 +296,6 @@@ PROGRAMS += git-pack-redundant$
  PROGRAMS += git-patch-id$X
  PROGRAMS += git-receive-pack$X
  PROGRAMS += git-send-pack$X
 -PROGRAMS += git-shell$X
  PROGRAMS += git-show-index$X
  PROGRAMS += git-unpack-file$X
  PROGRAMS += git-update-server-info$X
@@@ -368,7 -356,7 +368,7 @@@ LIB_H += pack-refs.
  LIB_H += pack-revindex.h
  LIB_H += parse-options.h
  LIB_H += patch-ids.h
 -LIB_H += path-list.h
 +LIB_H += string-list.h
  LIB_H += pkt-line.h
  LIB_H += progress.h
  LIB_H += quote.h
@@@ -422,7 -410,6 +422,7 @@@ LIB_OBJS += diff-no-index.
  LIB_OBJS += diff-lib.o
  LIB_OBJS += diff.o
  LIB_OBJS += dir.o
 +LIB_OBJS += editor.o
  LIB_OBJS += entry.o
  LIB_OBJS += environment.o
  LIB_OBJS += exec_cmd.o
@@@ -450,7 -437,7 +450,7 @@@ LIB_OBJS += pager.
  LIB_OBJS += parse-options.o
  LIB_OBJS += patch-delta.o
  LIB_OBJS += patch-ids.o
 -LIB_OBJS += path-list.o
 +LIB_OBJS += string-list.o
  LIB_OBJS += path.o
  LIB_OBJS += pkt-line.o
  LIB_OBJS += pretty.o
@@@ -578,9 -565,11 +578,11 @@@ EXTLIBS 
  
  ifeq ($(uname_S),Linux)
        NO_STRLCPY = YesPlease
+       THREADED_DELTA_SEARCH = YesPlease
  endif
  ifeq ($(uname_S),GNU/kFreeBSD)
        NO_STRLCPY = YesPlease
+       THREADED_DELTA_SEARCH = YesPlease
  endif
  ifeq ($(uname_S),UnixWare)
        CC = cc
@@@ -678,6 -667,7 +680,7 @@@ ifeq ($(uname_S),FreeBSD
        BASIC_CFLAGS += -I/usr/local/include
        BASIC_LDFLAGS += -L/usr/local/lib
        DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
+       THREADED_DELTA_SEARCH = YesPlease
  endif
  ifeq ($(uname_S),OpenBSD)
        NO_STRCASESTR = YesPlease
        NEEDS_LIBICONV = YesPlease
        BASIC_CFLAGS += -I/usr/local/include
        BASIC_LDFLAGS += -L/usr/local/lib
+       THREADED_DELTA_SEARCH = YesPlease
  endif
  ifeq ($(uname_S),NetBSD)
        ifeq ($(shell expr "$(uname_R)" : '[01]\.'),2)
        BASIC_CFLAGS += -I/usr/pkg/include
        BASIC_LDFLAGS += -L/usr/pkg/lib
        ALL_LDFLAGS += -Wl,-rpath,/usr/pkg/lib
+       THREADED_DELTA_SEARCH = YesPlease
  endif
  ifeq ($(uname_S),AIX)
        NO_STRCASESTR=YesPlease
@@@ -752,14 -744,12 +757,14 @@@ ifneq (,$(findstring MINGW,$(uname_S))
        NO_SVN_TESTS = YesPlease
        NO_PERL_MAKEMAKER = YesPlease
        NO_POSIX_ONLY_PROGRAMS = YesPlease
 +      NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
        COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat
        COMPAT_CFLAGS += -DSNPRINTF_SIZE_CORR=1
        COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
        COMPAT_OBJS += compat/mingw.o compat/fnmatch.o compat/regex.o compat/winansi.o
        EXTLIBS += -lws2_32
        X = .exe
 +      gitexecdir = ../libexec/git-core
        template_dir = ../share/git-core/templates/
        ETC_GITCONFIG = ../etc/gitconfig
  endif
@@@ -826,7 -816,6 +831,7 @@@ EXTLIBS += -l
  ifndef NO_POSIX_ONLY_PROGRAMS
        PROGRAMS += git-daemon$X
        PROGRAMS += git-imap-send$X
 +      PROGRAMS += git-shell$X
  endif
  ifndef NO_OPENSSL
        OPENSSL_LIBSSL = -lssl
@@@ -867,9 -856,6 +872,9 @@@ endi
  ifdef NO_D_INO_IN_DIRENT
        BASIC_CFLAGS += -DNO_D_INO_IN_DIRENT
  endif
 +ifdef NO_ST_BLOCKS_IN_STRUCT_STAT
 +      BASIC_CFLAGS += -DNO_ST_BLOCKS_IN_STRUCT_STAT
 +endif
  ifdef NO_C99_FORMAT
        BASIC_CFLAGS += -DNO_C99_FORMAT
  endif
@@@ -1067,26 -1053,19 +1072,26 @@@ export TAR INSTALL DESTDIR SHELL_PAT
  
  ### Build rules
  
 -all:: $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
 +SHELL = $(SHELL_PATH)
 +
 +all:: shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
  ifneq (,$X)
 -      $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), $(RM) '$p';)
 +      $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), test '$p' -ef '$p$X' || $(RM) '$p';)
  endif
  
  all::
  ifndef NO_TCLTK
 -      $(QUIET_SUBDIR0)git-gui $(QUIET_SUBDIR1) all
 +      $(QUIET_SUBDIR0)git-gui $(QUIET_SUBDIR1) gitexecdir='$(gitexec_instdir_SQ)' all
        $(QUIET_SUBDIR0)gitk-git $(QUIET_SUBDIR1) all
  endif
        $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' all
        $(QUIET_SUBDIR0)templates $(QUIET_SUBDIR1)
  
 +please_set_SHELL_PATH_to_a_more_modern_shell:
 +      @$$(:)
 +
 +shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell
 +
  strip: $(PROGRAMS) git$X
        $(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X
  
@@@ -1222,9 -1201,7 +1227,9 @@@ endi
  git-%$X: %.o $(GITLIBS)
        $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
  
 -git-imap-send$X: imap-send.o $(LIB_FILE)
 +git-imap-send$X: imap-send.o $(GITLIBS)
 +      $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 +              $(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL)
  
  http.o http-walker.o http-push.o transport.o: http.h
  
@@@ -1283,12 -1260,8 +1288,12 @@@ GIT-CFLAGS: .FORCE-GIT-CFLAG
                echo "$$FLAGS" >GIT-CFLAGS; \
              fi
  
 +# We need to apply sq twice, once to protect from the shell
 +# that runs GIT-BUILD-OPTIONS, and then again to protect it
 +# and the first level quoting from the shell that runs "echo".
  GIT-BUILD-OPTIONS: .FORCE-GIT-BUILD-OPTIONS
 -      @echo SHELL_PATH=\''$(SHELL_PATH_SQ)'\' >$@
 +      @echo SHELL_PATH=\''$(subst ','\'',$(SHELL_PATH_SQ))'\' >$@
 +      @echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@
  
  ### Detect Tck/Tk interpreter path changes
  ifndef NO_TCLTK
@@@ -1342,47 -1315,35 +1347,47 @@@ remove-dashes
  ### Installation rules
  
  ifeq ($(firstword $(subst /, ,$(template_dir))),..)
 -template_instdir = $(gitexecdir)/$(template_dir)
 +template_instdir = $(bindir)/$(template_dir)
  else
  template_instdir = $(template_dir)
  endif
  export template_instdir
  
 +ifeq ($(firstword $(subst /, ,$(gitexecdir))),..)
 +gitexec_instdir = $(bindir)/$(gitexecdir)
 +else
 +gitexec_instdir = $(gitexecdir)
 +endif
 +gitexec_instdir_SQ = $(subst ','\'',$(gitexec_instdir))
 +export gitexec_instdir
 +
  install: all
        $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
 -      $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexecdir_SQ)'
 -      $(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexecdir_SQ)'
 +      $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
 +      $(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
        $(INSTALL) git$X git-upload-pack$X git-receive-pack$X git-upload-archive$X '$(DESTDIR_SQ)$(bindir_SQ)'
        $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
        $(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
  ifndef NO_TCLTK
        $(MAKE) -C gitk-git install
 -      $(MAKE) -C git-gui install
 +      $(MAKE) -C git-gui gitexecdir='$(gitexec_instdir_SQ)' install
  endif
 -      if test 'z$(bindir_SQ)' != 'z$(gitexecdir_SQ)'; \
 -      then \
 -              ln -f '$(DESTDIR_SQ)$(bindir_SQ)/git$X' \
 -                      '$(DESTDIR_SQ)$(gitexecdir_SQ)/git$X' || \
 -              cp '$(DESTDIR_SQ)$(bindir_SQ)/git$X' \
 -                      '$(DESTDIR_SQ)$(gitexecdir_SQ)/git$X'; \
 -      fi
 -      $(foreach p,$(BUILT_INS), $(RM) '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git$X' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;)
  ifneq (,$X)
 -      $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), $(RM) '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p';)
 +      $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), $(RM) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p';)
  endif
 -      ./check_bindir 'z$(bindir_SQ)' 'z$(gitexecdir_SQ)' '$(DESTDIR_SQ)$(bindir_SQ)/git-shell$X'
 +      bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
 +      execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
 +      if test "z$$bindir" != "z$$execdir"; \
 +      then \
 +              ln -f "$$bindir/git$X" "$$execdir/git$X" || \
 +              cp "$$bindir/git$X" "$$execdir/git$X"; \
 +      fi && \
 +      { $(foreach p,$(BUILT_INS), $(RM) "$$execdir/$p" && ln "$$execdir/git$X" "$$execdir/$p" ;) } && \
 +      if test "z$$bindir" != "z$$execdir"; \
 +      then \
 +              $(RM) "$$execdir/git$X"; \
 +      fi && \
 +      ./check_bindir "z$$bindir" "z$$execdir" "$$bindir/git-add$X"
  
  install-doc:
        $(MAKE) -C Documentation install
@@@ -1471,7 -1432,6 +1476,7 @@@ endi
        $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS GIT-BUILD-OPTIONS
  
  .PHONY: all install clean strip
 +.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
  .PHONY: .FORCE-GIT-VERSION-FILE TAGS tags cscope .FORCE-GIT-CFLAGS
  .PHONY: .FORCE-GIT-BUILD-OPTIONS