mirror of
https://github.com/git/git
synced 2024-08-28 20:20:07 +00:00
![Nicolas Pitre](/assets/img/avatar_default.png)
On ARM I have the following compilation errors:
CC fast-import.o
In file included from cache.h:8,
from builtin.h:6,
from fast-import.c:142:
arm/sha1.h:14: error: conflicting types for 'SHA_CTX'
/usr/include/openssl/sha.h:105: error: previous declaration of 'SHA_CTX' was here
arm/sha1.h:16: error: conflicting types for 'SHA1_Init'
/usr/include/openssl/sha.h:115: error: previous declaration of 'SHA1_Init' was here
arm/sha1.h:17: error: conflicting types for 'SHA1_Update'
/usr/include/openssl/sha.h:116: error: previous declaration of 'SHA1_Update' was here
arm/sha1.h:18: error: conflicting types for 'SHA1_Final'
/usr/include/openssl/sha.h:117: error: previous declaration of 'SHA1_Final' was here
make: *** [fast-import.o] Error 1
This is because openssl header files are always included in
git-compat-util.h since commit 684ec6c63c
whenever NO_OPENSSL is not
set, which somehow brings in <openssl/sha1.h> clashing with the custom
ARM version. Compilation of git is probably broken on PPC too for the
same reason.
Turns out that the only file requiring openssl/ssl.h and openssl/err.h
is imap-send.c. But only moving those problematic includes there
doesn't solve the issue as it also includes cache.h which brings in the
conflicting local SHA1 header file.
As suggested by Jeff King, the best solution is to rename our references
to SHA1 functions and structure to something git specific, and define those
according to the implementation used.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
26 lines
559 B
C
26 lines
559 B
C
/*
|
|
* SHA-1 implementation.
|
|
*
|
|
* Copyright (C) 2005 Paul Mackerras <paulus@samba.org>
|
|
*/
|
|
#include <stdint.h>
|
|
|
|
typedef struct {
|
|
uint32_t hash[5];
|
|
uint32_t cnt;
|
|
uint64_t len;
|
|
union {
|
|
unsigned char b[64];
|
|
uint64_t l[8];
|
|
} buf;
|
|
} ppc_SHA_CTX;
|
|
|
|
int ppc_SHA1_Init(ppc_SHA_CTX *c);
|
|
int ppc_SHA1_Update(ppc_SHA_CTX *c, const void *p, unsigned long n);
|
|
int ppc_SHA1_Final(unsigned char *hash, ppc_SHA_CTX *c);
|
|
|
|
#define git_SHA_CTX ppc_SHA_CTX
|
|
#define git_SHA1_Init ppc_SHA1_Init
|
|
#define git_SHA1_Update ppc_SHA1_Update
|
|
#define git_SHA1_Final ppc_SHA1_Final
|