Merge branch 'bd/qsort'
authorJunio C Hamano <gitster@pobox.com>
Sun, 17 Feb 2008 02:11:10 +0000 (18:11 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 17 Feb 2008 02:11:47 +0000 (18:11 -0800)
* bd/qsort:
compat: Add simplified merge sort implementation from glibc

1  2 
Makefile
diff --combined Makefile
index d288378aa18677f575b83b07809b4f438ddfcdaa,fb82d14dabd96dbc15b59c6117cd9440d165b21e..83c359acde102c653b197001b3272781f9fd2697
+++ b/Makefile
@@@ -137,6 -137,10 +137,10 @@@ all:
  # Define THREADED_DELTA_SEARCH if you have pthreads and wish to exploit
  # parallel delta searching when packing objects.
  #
+ # Define INTERNAL_QSORT to use Git's implementation of qsort(), which
+ # is a simplified version of the merge sort used in glibc. This is
+ # recommended if Git triggers O(n^2) behavior in your platform's qsort().
+ #
  
  GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
        @$(SHELL_PATH) ./GIT-VERSION-GEN
@@@ -231,7 -235,7 +235,7 @@@ SCRIPT_SH = 
        git-lost-found.sh git-quiltimport.sh git-submodule.sh \
        git-filter-branch.sh \
        git-stash.sh \
 -      git-help--browse.sh
 +      git-web--browse.sh
  
  SCRIPT_PERL = \
        git-add--interactive.perl \
@@@ -722,6 -726,10 +726,10 @@@ ifdef NO_MEMME
        COMPAT_CFLAGS += -DNO_MEMMEM
        COMPAT_OBJS += compat/memmem.o
  endif
+ ifdef INTERNAL_QSORT
+       COMPAT_CFLAGS += -DINTERNAL_QSORT
+       COMPAT_OBJS += compat/qsort.o
+ endif
  
  ifdef THREADED_DELTA_SEARCH
        BASIC_CFLAGS += -DTHREADED_DELTA_SEARCH
@@@ -819,7 -827,6 +827,7 @@@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS
  
  help.o: help.c common-cmds.h GIT-CFLAGS
        $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \
 +              '-DGIT_HTML_PATH="$(htmldir_SQ)"' \
                '-DGIT_MAN_PATH="$(mandir_SQ)"' \
                '-DGIT_INFO_PATH="$(infodir_SQ)"' $<
  
@@@ -840,6 -847,7 +848,6 @@@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %
            -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
            -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
            -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
 -          -e 's|@@HTMLDIR@@|$(htmldir_SQ)|g' \
            $@.sh >$@+ && \
        chmod +x $@+ && \
        mv $@+ $@