Skip to content
  • Nicolas Pitre's avatar
    fix openssl headers conflicting with custom SHA1 implementations · 9126f009
    Nicolas Pitre authored
    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 684ec6c6
    
     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: default avatarNicolas Pitre <nico@cam.org>
    Signed-off-by: default avatarShawn O. Pearce <spearce@spearce.org>
    9126f009