Patches to make OpenSSL compilable on MacOS/X.
authorRichard Levitte <levitte@openssl.org>
Tue, 8 Jan 2002 09:19:55 +0000 (09:19 +0000)
committerRichard Levitte <levitte@openssl.org>
Tue, 8 Jan 2002 09:19:55 +0000 (09:19 +0000)
Submitted by Pier Fumagalli <pier@betaversion.org>

Configure
Makefile.org
apps/s_time.c
apps/speed.c
crypto/asn1/a_gentm.c
crypto/asn1/a_time.c
crypto/asn1/a_utctm.c
crypto/des/fcrypt.c

index 73b88bb7f0ceda9ab32cdca360938f281862df9d..d405b560a036be0f04ce8096e36414ec7e0e31bc 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -478,7 +478,7 @@ my %table=(
 
 ##### MacOS X (a.k.a. Rhapsody or Darwin) setup
 "rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown)::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
-"darwin-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown)::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
+"darwin-ppc-cc","cc:-O3 -D_DARWIN -DB_ENDIAN::-D_REENTRANT::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::::::::::darwin-shared:-fPIC:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
 
 ##### Sony NEWS-OS 4.x
 "newsos4-gcc","gcc:-O -DB_ENDIAN -DNEWS4::(unknown):-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::",
index 009caefdd75d61dc405a4bb0f889de2a8eb12034..d615e2bcf5f843e2e81710b020a82f41fedbf29b 100644 (file)
@@ -271,6 +271,17 @@ DETECT_GNU_LD=${CC} -v 2>&1 | grep '^gcc' >/dev/null 2>&1 && \
        [ -n "$$my_ld" ] && \
        $$my_ld -v 2>&1 | grep 'GNU ld' >/dev/null 2>&1
 
+# For Darwin AKA Mac OS/X (dyld)
+do_darwin-shared: 
+       libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+       ( set -x ; ${CC} --verbose -dynamiclib -o lib$$i${SHLIB_EXT} \
+               lib$$i.a $$libs -all_load -current_version ${SHLIB_MAJOR}.${SHLIB_MINOR} \
+               -compatibility_version ${SHLIB_MAJOR}.`echo ${SHLIB_MINOR} | cut -d. -f1` \
+               -install_name ${INSTALLTOP}/lib/lib$$i${SHLIB_EXT} ) || exit 1; \
+       libs="$$libs -l`basename $$i${SHLIB_EXT} .dylib`"; \
+       echo "" ; \
+       done
+
 # This assumes that GNU utilities are *not* used
 do_alpha-osf1-shared:
        if ${DETECT_GNU_LD}; then \
index 39fd3b8b4d98d0d3111b27143ab4c807afeaf194..d84fe11a3a579965f85c587a52fafb8fbb3048d9 100644 (file)
@@ -82,7 +82,7 @@
 #include "wintext.h"
 #endif
 
-#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
+#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC)) || defined (_DARWIN)
 #define TIMES
 #endif
 
index 29004700fc1f6eb01feb9a9e13c8803f416ae14b..a5148d28da9b37287ecc72a8ba79e89acf78e568 100644 (file)
 
 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
 # define USE_TOD
-#elif !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
+#elif !defined(MSDOS) && (!defined(VMS) || defined(__DECC)) || defined(_DARWIN)
 # define TIMES
 #endif
-#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(MPE) && !defined(__NetBSD__)
+#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(MPE) && !defined(__NetBSD__) && !defined(_DARWIN)
 # define TIMEB
 #endif
 
index 314479a03dad4481bdfc58d003ee1b635b57bd08..b55f882b76386f9b52f9fd923f7d9fb35e7d0766 100644 (file)
@@ -203,7 +203,7 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
        if (s == NULL)
                return(NULL);
 
-#if defined(THREADS) && !defined(WIN32)
+#if defined(THREADS) && !defined(WIN32) && ! defined(_DARWIN)
        gmtime_r(&t,&data); /* should return &data, but doesn't on some systems, so we don't even look at the return value */
        ts=&data;
 #else
index 8c0ddee4ac3e34ab7fcec43a6c53549a21447b58..17475e0f492ce3b18e505edbb7609bbe4be1d734 100644 (file)
@@ -113,7 +113,7 @@ ASN1_TIME *d2i_ASN1_TIME(ASN1_TIME **a, unsigned char **pp, long length)
 ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
        {
        struct tm *ts;
-#if defined(THREADS) && !defined(WIN32) && !defined(__CYGWIN32__)
+#if defined(THREADS) && !defined(WIN32) && !defined(__CYGWIN32__) && !defined(_DARWIN)
        struct tm data;
 
        gmtime_r(&t,&data);
index d381c9e0d1e6e8807774479da04681b6f1194cb0..3ae7432cb20aef77a7c4ecebb37ea2dcdd2215ba 100644 (file)
@@ -203,7 +203,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
        if (s == NULL)
                return(NULL);
 
-#if defined(THREADS) && !defined(WIN32) && !defined(__CYGWIN32__)
+#if defined(THREADS) && !defined(WIN32) && !defined(__CYGWIN32__) && !defined(_DARWIN)
        gmtime_r(&t,&data); /* should return &data, but doesn't on some systems, so we don't even look at the return value */
        ts=&data;
 #else
@@ -286,7 +286,7 @@ int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t)
 
        t -= offset*60; /* FIXME: may overflow in extreme cases */
 
-#if defined(THREADS) && !defined(WIN32) && !defined(__CYGWIN32__)
+#if defined(THREADS) && !defined(WIN32) && !defined(__CYGWIN32__) && !defined(_DARWIN)
        { struct tm data; gmtime_r(&t, &data); tm = &data; }
 #else
        tm = gmtime(&t);
index 1d619316fd4c0fc7c2ba7092369e1fcadf4777b2..ad31543fe3c35bfdb8e7ffcfda34d3ac23179a3c 100644 (file)
@@ -61,7 +61,7 @@ static unsigned const char cov_2char[64]={
 void fcrypt_body(DES_LONG *out,des_key_schedule ks,
        DES_LONG Eswap0, DES_LONG Eswap1);
 
-#if !defined(PERL5) && !defined(__FreeBSD__) && !defined(NeXT)
+#if !defined(PERL5) && !defined(__FreeBSD__) && !defined(NeXT) && !defined(_DARWIN)
 char *crypt(const char *buf, const char *salt)
        {
        return(des_crypt(buf, salt));