diff options
author | Nicolas Pitre <nico@cam.org> | 2005-09-20 12:27:13 -0400 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-09-20 18:10:00 -0700 |
commit | 7c6ef2f2142f0a4c22b5505d95553cac17867a21 (patch) | |
tree | 5eff144d174355bd17dc7b12d77af58202c46ea5 /Makefile | |
parent | f1f0d0889e5557bc467490fdbd53f7b912503a33 (diff) | |
download | git-7c6ef2f2142f0a4c22b5505d95553cac17867a21.tar.gz git-7c6ef2f2142f0a4c22b5505d95553cac17867a21.tar.xz |
[PATCH] ARM optimized SHA1 implementation
This is my ARM assembly SHA1 implementation for GIT. It is approximately
50% faster than the generic C version. On an XScale processor running at
400MHz:
generic C version: 9.8 MB/s
my version: 14.5 MB/s
It's not that I expect a lot of big GIT users on ARM, but I stillknow
about one important ARM user that might benefit from it, and writing
that code was fun.
I also reworked the makefile a bit so any optimized SHA1 implementations
is used regardless of whether NO_OPENSSL is defined or not.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 36 |
1 files changed, 24 insertions, 12 deletions
@@ -14,6 +14,9 @@ # Define PPC_SHA1 environment variable when running make to make use of # a bundled SHA1 routine optimized for PowerPC. # +# Define ARM_SHA1 environment variable when running make to make use of +# a bundled SHA1 routine optimized for ARM. +# # Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin). # # Define NEEDS_LIBICONV if linking with libc is not enough (Darwin). @@ -162,6 +165,9 @@ ifeq ($(shell uname -s),SunOS) NEEDS_NSL = YesPlease PLATFORM_DEFINES += -D__EXTENSIONS__ endif +ifneq (,$(findstring arm,$(shell uname -m))) + ARM_SHA1 = YesPlease +endif ifndef SHELL_PATH SHELL_PATH = /bin/sh @@ -191,18 +197,6 @@ ifdef NEEDS_LIBICONV else LIB_4_ICONV = endif -ifdef MOZILLA_SHA1 - SHA1_HEADER = "mozilla-sha1/sha1.h" - LIB_OBJS += mozilla-sha1/sha1.o -else - ifdef PPC_SHA1 - SHA1_HEADER = "ppc/sha1.h" - LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o - else - SHA1_HEADER = <openssl/sha.h> - LIBS += $(LIB_4_CRYPTO) - endif -endif ifdef NEEDS_SOCKET LIBS += -lsocket SIMPLE_LIB += -lsocket @@ -216,6 +210,24 @@ ifdef NO_STRCASESTR LIB_OBJS += compat/strcasestr.o endif +ifdef PPC_SHA1 + SHA1_HEADER = "ppc/sha1.h" + LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o +else +ifdef ARM_SHA1 + SHA1_HEADER = "arm/sha1.h" + LIB_OBJS += arm/sha1.o arm/sha1_arm.o +else +ifdef MOZILLA_SHA1 + SHA1_HEADER = "mozilla-sha1/sha1.h" + LIB_OBJS += mozilla-sha1/sha1.o +else + SHA1_HEADER = <openssl/sha.h> + LIBS += $(LIB_4_CRYPTO) +endif +endif +endif + DEFINES += '-DSHA1_HEADER=$(SHA1_HEADER)' SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ |