aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2005-09-20 12:27:13 -0400
committerJunio C Hamano <junkio@cox.net>2005-09-20 18:10:00 -0700
commit7c6ef2f2142f0a4c22b5505d95553cac17867a21 (patch)
tree5eff144d174355bd17dc7b12d77af58202c46ea5 /Makefile
parentf1f0d0889e5557bc467490fdbd53f7b912503a33 (diff)
downloadgit-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--Makefile36
1 files changed, 24 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index f83c4951b..6d73a4d2b 100644
--- a/Makefile
+++ b/Makefile
@@ -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)) \