Hi, this patch against the repository makes it possible to build openssl
for AmigaOS 4 using a Linux cross-compiler. Please let me know if
something is wrong.

Configure:               Add target amigaos-ppc
e_os.h:                  Add stuff for OPENSSL_SYS_AMIGAOS
e_os2.h:                 Define OPENSSL_SYS_AMIGAOS for AmigaOS 4 target
apps/ca.c:               Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
apps/s_time.c:           Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
apps/speed.c:            Pick appropriate code paths for
OPENSSL_SYS_AMIGAOS. Don't compile sstrsep() if fork() is not available.
crypto/tmdiff.c:         Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
crypto/des/read_pwd.c:   Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
crypto/rand/rand_unix.c: Use the VxWorks RAND_poll() for OPENSSL_SYS_AMIGAOS
crypto/ui/ui_openssl.c:  Use stdin and stderr instead of /dev/tty for
OPENSSL_SYS_AMIGAOS

Regards,
Johan Gill

Index: Configure
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/Configure,v
retrieving revision 1.515
diff -u -r1.515 Configure
--- Configure   22 Oct 2005 20:21:40 -0000      1.515
+++ Configure   25 Oct 2005 15:07:44 -0000
@@ -526,6 +526,9 @@
 ##### Compaq Non-Stop Kernel (Tandem)
 "tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 
-D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
 
+##### AmigaOS 4
+"amigaos-ppc", "ppc-amigaos-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYS_UN_H -O3 
-Wall::::-lunix -lnet:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 
DES_UNROLL:::::::::::::::::ppc-amigaos-ranlib",
+
 );
 
 my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
Index: e_os.h
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/e_os.h,v
retrieving revision 1.87
diff -u -r1.87 e_os.h
--- e_os.h      22 Sep 2005 20:37:50 -0000      1.87
+++ e_os.h      25 Oct 2005 15:13:36 -0000
@@ -383,8 +383,25 @@
 #    define LIST_SEPARATOR_CHAR ';'
 #    define EXIT(n)  { if (n) printf("ERROR: %d\n", (int)n); exit(n); }
 
+#  elif defined(OPENSSL_SYS_AMIGAOS)
+
+#    include <unistd.h>
+#    include <sys/types.h>
+#    undef LONG  /* LONG is a #define in AmigaOS headers */
+#    define OPENSSL_CONF       "openssl.cnf"
+#    define SSLEAY_CONF                OPENSSL_CONF
+#    define RFILE              ".rnd"
+#    define LIST_SEPARATOR_CHAR '|'
+#    define NUL_DEV            "/NIL"
+#    define CLK_TCK             50
+#    define NO_SYSLOG
+    /* No random devices here */
+#    undef DEVRANDOM
+#    define EXIT(n)             exit(n)
+#    define NO_SYS_PARAM_H
+
 #  else
-     /* !defined VMS */
+     /* other systems */
 #    ifdef OPENSSL_SYS_MPE
 #      define NO_SYS_PARAM_H
 #    endif
Index: e_os2.h
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/e_os2.h,v
retrieving revision 1.30
diff -u -r1.30 e_os2.h
--- e_os2.h     2 Aug 2005 22:04:11 -0000       1.30
+++ e_os2.h     25 Oct 2005 15:13:36 -0000
@@ -150,6 +150,12 @@
 # define OPENSSL_SYS_OS2
 #endif
 
+/* --------------------------------AmigaOS 4-------------------------------- */
+#ifdef __amigaos4__
+# undef OPENSSL_SYS_UNIX
+# define OPENSSL_SYS_AMIGAOS
+#endif
+
 /* --------------------------------- Unix ---------------------------------- */
 #ifdef OPENSSL_SYS_UNIX
 # if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX)
Index: apps/ca.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/apps/ca.c,v
retrieving revision 1.151
diff -u -r1.151 ca.c
--- apps/ca.c   30 Sep 2005 16:47:38 -0000      1.151
+++ apps/ca.c   25 Oct 2005 15:08:48 -0000
@@ -83,7 +83,7 @@
 #    else
 #      include <unixlib.h>
 #    endif
-#  elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) && 
!defined(OPENSSL_SYS_NETWARE)
+#  elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) && 
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
 #    include <sys/file.h>
 #  endif
 #endif
Index: apps/s_time.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/apps/s_time.c,v
retrieving revision 1.32
diff -u -r1.32 s_time.c
--- apps/s_time.c       14 Aug 2005 21:48:31 -0000      1.32
+++ apps/s_time.c       25 Oct 2005 15:07:44 -0000
@@ -85,7 +85,7 @@
 #include OPENSSL_UNISTD
 #endif
 
-#if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) && 
!defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
+#if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) && 
!defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) 
&& !defined(OPENSSL_SYS_AMIGAOS)
 #define TIMES
 #endif
 
@@ -105,7 +105,7 @@
 #undef TIMES
 #endif
 
-#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && 
!defined(OPENSSL_SYS_NETWARE)
+#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && 
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
 #include <sys/timeb.h>
 #endif
 
@@ -384,7 +384,7 @@
                ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ;
                return((ret == 0.0)?1e-6:ret);
        }
-#elif defined(OPENSSL_SYS_NETWARE)
+#elif defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_AMIGAOS)
     static clock_t tstart,tend;
 
     if (s == START)
Index: apps/speed.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/apps/speed.c,v
retrieving revision 1.129
diff -u -r1.129 speed.c
--- apps/speed.c        16 Jul 2005 12:37:28 -0000      1.129
+++ apps/speed.c        25 Oct 2005 15:10:06 -0000
@@ -110,10 +110,10 @@
 
 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || 
defined(OPENSSL_SYS_MACOSX)
 # define USE_TOD
-#elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && 
(!defined(OPENSSL_SYS_VMS) || defined(__DECC))
+#elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && 
(!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_AMIGAOS)
 # define TIMES
 #endif
-#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && 
!defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && 
!defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && 
!defined(OPENSSL_SYS_VXWORKS) /* FIXME */
+#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && 
!defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && 
!defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && 
!defined(OPENSSL_SYS_VXWORKS) /* FIXME */ && !defined(OPENSSL_SYS_AMIGAOS)
 # define TIMEB
 #endif
 
@@ -147,7 +147,7 @@
 #include <sys/timeb.h>
 #endif
 
-#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) && 
!defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE)
+#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) && 
!defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE) && 
!defined(OPENSSL_SYS_AMIGAOS)
 #error "It seems neither struct tms nor struct timeb is supported in this 
platform!"
 #endif
 
@@ -248,7 +248,7 @@
 # endif
 #endif
 
-#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && 
!defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && 
!defined(OPENSSL_SYS_NETWARE)
+#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && 
!defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && 
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
 # define HAVE_FORK 1
 #endif
 
@@ -319,11 +319,12 @@
 #define START  0
 #define STOP   1
 
-#if defined(OPENSSL_SYS_NETWARE)
+#if defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_AMIGAOS)
 
    /* for NetWare the best we can do is use clock() which returns the
-    * time, in hundredths of a second, since the NLM began executing
-   */
+    * time, in hundredths of a second, since the NLM began executing.
+    * For AmigaOS clock() has a granularity of 1/50 second.
+    */
 static double Time_F(int s)
        {
        double ret;
@@ -2522,6 +2523,8 @@
        results[alg][run_no]=((double)count)/time_used*lengths[run_no];
        }
 
+/* sstrsep() and do_multi() are only used if fork() is available */
+#ifdef HAVE_FORK
 static char *sstrsep(char **string, const char *delim)
     {
     char isdelim[256];
@@ -2553,7 +2556,6 @@
     return token;
     }
 
-#ifdef HAVE_FORK
 static int do_multi(int multi)
        {
        int n;
Index: crypto/tmdiff.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/tmdiff.c,v
retrieving revision 1.16
diff -u -r1.16 tmdiff.c
--- crypto/tmdiff.c     28 Nov 2003 13:10:55 -0000      1.16
+++ crypto/tmdiff.c     25 Oct 2005 15:13:36 -0000
@@ -68,7 +68,7 @@
 #undef TIMES
 #endif
 
-#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) && 
!(defined(OPENSSL_SYS_VMS) || defined(__DECC)) && 
!defined(OPENSSL_SYS_MACOSX_RHAPSODY) && !defined(OPENSSL_SYS_VXWORKS)
+#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) && 
!(defined(OPENSSL_SYS_VMS) || defined(__DECC)) && 
!defined(OPENSSL_SYS_MACOSX_RHAPSODY) && !defined(OPENSSL_SYS_VXWORKS) && 
!defined(OPENSSL_SYS_AMIGAOS)
 # define TIMES
 #endif
 
@@ -98,7 +98,7 @@
 #include <sys/param.h>
 #endif
 
-#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && 
!defined(OPENSSL_SYS_NETWARE)
+#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && 
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
 #include <sys/timeb.h>
 #endif
 
@@ -133,7 +133,7 @@
 #  ifdef OPENSSL_SYS_WIN32
        HANDLE thread_id;
        FILETIME ms_win32;
-#  elif defined (OPENSSL_SYS_NETWARE)
+#  elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
    clock_t ms_clock;
 #  else
 #    ifdef OPENSSL_SYS_VXWORKS
@@ -176,7 +176,7 @@
 #else
 #  ifdef OPENSSL_SYS_WIN32
        GetThreadTimes(tm->thread_id,&tmpa,&tmpb,&tmpc,&(tm->ms_win32));
-#  elif defined (OPENSSL_SYS_NETWARE)
+#  elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
    tm->ms_clock = clock();
 #  else
 #    ifdef OPENSSL_SYS_VXWORKS
@@ -211,7 +211,7 @@
        lb+=b->ms_win32.dwLowDateTime;
        ret=((double)(lb-la))/1e7;
        }
-# elif defined (OPENSSL_SYS_NETWARE)
+# elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
     ret= (double)(b->ms_clock - a->ms_clock);
 # else
 #  ifdef OPENSSL_SYS_VXWORKS
@@ -238,7 +238,7 @@
 # ifdef OPENSSL_SYS_WIN32
        d 
=(b->ms_win32.dwHighDateTime&0x000fffff)*10+b->ms_win32.dwLowDateTime/1e7;
        
d-=(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7;
-# elif defined (OPENSSL_SYS_NETWARE)
+# elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
     d= (double)(b->ms_clock - a->ms_clock);
 # else
 #  ifdef OPENSSL_SYS_VXWORKS
Index: crypto/des/read_pwd.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/des/read_pwd.c,v
retrieving revision 1.32
diff -u -r1.32 read_pwd.c
--- crypto/des/read_pwd.c       28 Nov 2002 08:03:32 -0000      1.32
+++ crypto/des/read_pwd.c       25 Oct 2005 15:10:06 -0000
@@ -294,7 +294,7 @@
 #ifdef OPENSSL_SYS_MSDOS
        if ((tty=fopen("con","r")) == NULL)
                tty=stdin;
-#elif defined(MAC_OS_pre_X) || defined(OPENSSL_SYS_VXWORKS)
+#elif defined(MAC_OS_pre_X) || defined(OPENSSL_SYS_VXWORKS) || 
defined(OPENSSL_SYS_AMIGAOS)
        tty=stdin;
 #else
 #ifndef OPENSSL_SYS_MPE
Index: crypto/rand/rand_unix.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/rand/rand_unix.c,v
retrieving revision 1.22
diff -u -r1.22 rand_unix.c
--- crypto/rand/rand_unix.c     22 Jul 2005 03:36:29 -0000      1.22
+++ crypto/rand/rand_unix.c     25 Oct 2005 15:13:14 -0000
@@ -116,7 +116,7 @@
 #include <openssl/rand.h>
 #include "rand_lcl.h"
 
-#if !(defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) || 
defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) || 
defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE)) 
+#if !(defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) || 
defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) || 
defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || 
defined(OPENSSL_SYS_AMIGAOS)) 
 
 #include <sys/types.h>
 #include <sys/time.h>
@@ -277,7 +277,7 @@
 #endif
 #endif
 
-#if defined(OPENSSL_SYS_VXWORKS)
+#if defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_AMIGAOS)
 int RAND_poll(void)
 {
     return 0;
Index: crypto/ui/ui_openssl.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/ui/ui_openssl.c,v
retrieving revision 1.25
diff -u -r1.25 ui_openssl.c
--- crypto/ui/ui_openssl.c      26 Sep 2005 11:18:04 -0000      1.25
+++ crypto/ui/ui_openssl.c      25 Oct 2005 15:13:36 -0000
@@ -473,7 +473,7 @@
        CRYPTO_w_lock(CRYPTO_LOCK_UI);
        is_a_tty = 1;
 
-#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || 
defined(OPENSSL_SYS_NETWARE)
+#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || 
defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_AMIGAOS)
        tty_in=stdin;
        tty_out=stderr;
 #else

Reply via email to